:root{--teal:#0f5c52;--teal-d:#0b4740;--ink:#13211f;--mute:#56625f;--line:#d9e2df;--band:#eef3f2;--bg:#fbfdfc;--serif:"Newsreader",Georgia,"Times New Roman",serif;--sans:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:72px}
body{margin:0;color:var(--ink);font:18px/1.6 var(--serif)}
a{color:var(--teal)}
:focus-visible{outline:3px solid var(--teal);outline-offset:3px;border-radius:3px}
.wrap{max-width:1080px;margin:0 auto;padding:72px 28px}
.top{position:sticky;top:0;z-index:10;background:var(--top);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.top .wrap{padding:14px 28px}
.bar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:14px;font-size:22px;color:var(--ink);text-decoration:none}
.mono{background:var(--teal);color:#fff;border-radius:8px;padding:6px 8px;font-size:17px}
nav{display:flex;gap:26px;flex-wrap:wrap;font:500 14px var(--sans)}
nav a{color:var(--ink);text-decoration:none}nav a:hover{color:var(--teal)}
.eyebrow{font:600 12px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--teal);margin:0 0 20px}
h1{font-weight:400;font-size:clamp(28px,4.4vw,40px);line-height:1.25;max-width:20em;margin:0 0 32px}
h1 strong{font-weight:500}
h2{font-weight:500;font-size:34px;line-height:1.15;margin:0 0 24px}
h2.big{font-size:clamp(36px,5.2vw,54px)}
h2 em{color:var(--teal)}
h3{font-weight:500;font-size:20px;margin:0 0 6px}
.hero{padding-top:80px;padding-bottom:64px}
.cta{display:flex;gap:14px;flex-wrap:wrap;margin:0 0 20px}
.btn{font:500 15px var(--sans);padding:14px 24px;border:1px solid var(--mute);border-radius:6px;color:var(--ink);text-decoration:none;background:var(--card)}
.btn.solid{background:var(--btn);border-color:var(--btn);color:#fff}
.btn.solid:hover{background:var(--btn-h)}.btn:not(.solid):hover{border-color:var(--teal);color:var(--teal)}
.meta,.dim,small{color:var(--mute)}.meta{font-size:15px;margin:0}
.band{background:var(--band)}
.split{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start}
.lead{color:var(--mute);margin:0 0 24px;max-width:34em}
.edu{list-style:none;padding:0;margin:0}.edu li{margin-bottom:28px}.edu p{margin:0}
.side{border-left:1px solid var(--line);padding-left:40px}
.plain{margin:0;padding-left:20px;color:var(--mute)}.plain li{margin-bottom:8px}.plain strong{color:var(--ink);font-weight:500}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:32px 36px}
.card h3{font:600 12px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--teal);margin:0 0 6px}
.card h3:not(:first-child){margin-top:28px}
.rows{list-style:none;margin:0;padding:0}
.rows li{display:grid;grid-template-columns:56px 1fr;gap:16px;padding:14px 0;border-top:1px solid var(--line);line-height:1.4}
.yr{color:var(--teal);font-family:var(--sans);font-weight:500;font-size:15px}
.rows small{display:block;font-size:14px;margin-top:3px}
.role{max-width:46em;margin:0 0 32px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:40px}
.grid article{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:26px 28px}
.grid p{margin:0;color:var(--mute);font-size:16.5px}
.sub{margin:0 0 12px}
.skills{margin:0}.skills div{display:grid;grid-template-columns:240px 1fr;gap:24px;padding:16px 0;border-top:1px solid var(--line)}
.skills dt{font-weight:500}.skills dd{margin:0;color:var(--mute);font-size:16.5px}
.links{margin:24px 0 0;font:500 15px var(--sans)}
.contact{margin:0;border-left:1px solid var(--line);padding-left:40px}
.contact div{margin-bottom:18px}.contact dt{font-weight:500}.contact dd{margin:0;color:var(--mute)}
.foot{padding-top:24px;padding-bottom:40px;color:var(--mute);font-size:14px;border-top:1px solid var(--line)}
@media(max-width:820px){.split,.grid{grid-template-columns:1fr;gap:32px}.side,.contact{border-left:0;padding-left:0}.skills div{grid-template-columns:1fr;gap:4px}.wrap{padding:52px 22px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* multi-page additions */
nav a[aria-current],.brand[aria-current]{color:var(--teal)}
nav a[aria-current]{border-bottom:2px solid var(--teal);padding-bottom:3px}
.hero{background:linear-gradient(115deg,var(--bg) 45%,#eaf2f0 100%);max-width:none;padding-left:max(28px,calc((100% - 1024px)/2));padding-right:28px}
ul.meta{list-style:none;padding:0;display:flex;gap:28px;flex-wrap:wrap}
ul.meta li::before{content:"•";margin-right:10px}
.rule{width:28px;border:0;border-top:2px solid var(--teal);margin:0 0 36px;text-align:left}
.edsplit{gap:0}.edsplit>div:first-child{padding-right:40px}
.iconrow{display:flex;gap:20px;align-items:flex-start;margin-bottom:20px}
.iconrow p{margin:0}.iconrow .strong{color:var(--ink)}
.ico{width:28px;height:28px;flex:none;color:var(--teal);margin-top:4px}
h3.small{font-size:19px;margin-bottom:18px}
.links{display:flex;gap:28px;flex-wrap:wrap;margin:0}
.pagehead{padding-bottom:40px}
h1.page{font-size:clamp(36px,5.2vw,54px);max-width:none;margin:0}
h1.page em{color:var(--teal)}
.narrow{max-width:860px;margin:0 auto}
.contact{list-style:none}
.contact li{display:flex;gap:18px;align-items:flex-start;margin-bottom:22px}
.contact b{display:block;font-weight:500}
.contact span{color:var(--mute)}
@media(max-width:820px){.edsplit>div:first-child{padding-right:0;margin-bottom:28px}.hero{padding-left:22px}}
/* round 3 */
.card.wide .rows li{grid-template-columns:104px 1fr}
.yr{white-space:nowrap}
.profiles{list-style:none;display:flex;flex-wrap:wrap;gap:12px;padding:0;margin:0 0 36px}
.profiles a{display:inline-block;font:500 14px var(--sans);padding:9px 16px;border:1px solid var(--line);border-radius:999px;background:var(--card);text-decoration:none}
.profiles a:hover{border-color:var(--teal)}
.proftop{padding-top:0}.proftop .profiles{margin-bottom:0}
.trains ul{font-size:16.5px}.trains h3{margin-bottom:12px}
@media(max-width:820px){.card.wide .rows li{grid-template-columns:1fr;gap:2px}}
/* round 4 */
.logo{height:46px;width:auto;display:block}
.headshot{display:none}
.hero{position:relative}
.hero .headshot{display:block;position:absolute;top:72px;right:max(28px,calc((100% - 1024px)/2));margin:0}
.headshot img{display:block;width:240px;height:300px;object-fit:cover;border-radius:14px;border:1px solid var(--line)}
.hero:has(.headshot) h1{max-width:min(720px,calc(100% - 300px))}
[hidden]{display:none!important}
.grid article{border-top:3px solid var(--teal)}
.pagehead .lead{margin:20px 0 0}
.pagehead+#connect{padding-top:8px}
.contact.card{border:1px solid var(--line);padding:32px 36px}
.contact span a{margin-right:16px}
@media(max-width:900px){.hero .headshot{position:static;margin:0 0 28px}.headshot img{width:150px;height:188px}.hero:has(.headshot) h1{max-width:none}}
/* round 5: richer look */
:root{--amber:#d08a2e;--amber-d:#a8681a}
body{animation:pagein .45s ease both}@keyframes pagein{from{opacity:0}to{opacity:1}}
.eyebrow::before{content:"";display:inline-block;width:28px;height:2px;background:var(--amber);vertical-align:middle;margin-right:12px}
.rule{border-top-color:var(--amber)}
.btn{transition:translate .2s,background .2s,border-color .2s,color .2s}.btn:hover{translate:0 -2px}
.hero{isolation:isolate}
.hero .headshot{right:calc(max(28px,(100% - 1024px)/2) + 16px);isolation:isolate}
.headshot img{border:0;border-radius:999px 999px 18px 18px;box-shadow:0 18px 40px -18px rgba(11,71,64,.45)}
.hero .headshot::after{content:"";position:absolute;inset:16px -16px -16px 16px;border:2px solid var(--amber);border-radius:999px 999px 18px 18px;z-index:-1}
.wrap.stats{padding:0 28px 24px}
.stats ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.stats li{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:22px 26px;box-shadow:0 10px 30px -22px rgba(11,71,64,.5)}
.stats b{display:block;font:500 46px/1 var(--serif);color:var(--teal);position:relative;padding-bottom:12px;margin-bottom:10px}
.stats b::after{content:"";position:absolute;left:0;bottom:0;width:28px;height:3px;background:var(--amber);border-radius:2px}
.stats span{color:var(--mute);font-size:16px}
.tl{list-style:none;margin:0;padding:0 0 0 34px;position:relative}
.tl::before{content:"";position:absolute;left:8px;top:8px;bottom:8px;width:2px;background:linear-gradient(var(--amber),var(--teal))}
.tl-item{position:relative;margin-bottom:40px}.tl-item:last-child{margin-bottom:0}
.tl-dot{position:absolute;left:-34px;top:4px;width:18px;height:18px;border-radius:50%;background:var(--bg);border:3px solid var(--teal)}
.tl-item:first-child .tl-dot{border-color:var(--amber)}
.tl-date{font:600 13px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--teal);margin:0 0 4px}
.tl-item h3{margin:0 0 4px;font-size:22px}.tl-item p{margin:0}.tl .role2{color:var(--mute);margin-bottom:18px}
.tl .grid{margin:0}
.skills dd{display:flex;flex-wrap:wrap;gap:8px}
.chip{font:500 13.5px var(--sans);padding:6px 12px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--ink);transition:border-color .2s,translate .2s}
.chip:hover{border-color:var(--amber);translate:0 -2px}
.form label{display:block;font:500 14px var(--sans);margin-bottom:16px}
.form input,.form textarea{display:block;width:100%;margin-top:6px;padding:12px 14px;border:1px solid var(--line);border-radius:8px;font:17px var(--serif);background:var(--field);color:var(--ink)}
.form input:focus,.form textarea:focus{outline:3px solid rgba(15,92,82,.25);border-color:var(--teal)}
.form .btn{cursor:pointer}.hp{position:absolute;left:-9999px}
.status{font:500 14px var(--sans);color:var(--teal);margin:12px 0 0}
.grid article,.stats li,.card{transition:translate .25s,box-shadow .25s}
.grid article:hover,.stats li:hover{translate:0 -4px;box-shadow:0 14px 30px -18px rgba(11,71,64,.45)}
.js .reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease,translate .25s,box-shadow .25s}
.js .reveal.in{opacity:1;transform:none}
@media(max-width:900px){.hero .headshot{right:auto}}
@media(max-width:700px){.stats ul{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){body{animation:none}.js .reveal{opacity:1;transform:none;transition:none}*{scroll-behavior:auto!important}.btn,.chip,.grid article,.stats li,.card{transition:none}}
/* page-to-page transitions (supported browsers only) */
@media(prefers-reduced-motion:no-preference){
  @view-transition{navigation:auto}
  .top{view-transition-name:site-top}
  ::view-transition-old(root){animation:vt-out .18s ease both}
  ::view-transition-new(root){animation:vt-in .28s ease both}
}
@keyframes vt-out{to{opacity:0}}@keyframes vt-in{from{opacity:0}}
.split>.tl{align-self:start}
/* phone: keep the headshot frame attached to the photo */
@media(max-width:900px){
  .hero .headshot{position:relative;width:150px;margin:0 0 40px;right:auto;top:auto}
  .hero .headshot::after{inset:12px -12px -12px 12px}
  .headshot img{width:150px;height:188px}
}

/* ===== round 6: light/dark theme + site-wide science background ===== */
:root{--net:15,92,82;--net-amber:208,138,46;--card:rgba(255,255,255,.72);--top:rgba(251,253,252,.82);--band:rgba(231,240,237,.58);--field:#fff;--btn:#0f5c52;--btn-h:#0b4740;--shadow:rgba(11,71,64,.45);color-scheme:light}
:root[data-theme="dark"]{--bg:#0a1514;--ink:#e7f1ef;--mute:#a1b6b2;--line:rgba(255,255,255,.14);--teal:#57d9c5;--teal-d:#8ae8d9;--amber:#f0b45a;--amber-d:#f0b45a;--net:87,217,197;--net-amber:240,180,90;--card:rgba(17,33,31,.62);--top:rgba(10,21,20,.8);--band:rgba(18,34,32,.5);--field:rgba(255,255,255,.06);--btn:#12766a;--btn-h:#0f655b;--shadow:rgba(0,0,0,.6);color-scheme:dark}
@media(prefers-color-scheme:dark){:root:not([data-theme]){--bg:#0a1514;--ink:#e7f1ef;--mute:#a1b6b2;--line:rgba(255,255,255,.14);--teal:#57d9c5;--teal-d:#8ae8d9;--amber:#f0b45a;--amber-d:#f0b45a;--net:87,217,197;--net-amber:240,180,90;--card:rgba(17,33,31,.62);--top:rgba(10,21,20,.8);--band:rgba(18,34,32,.5);--field:rgba(255,255,255,.06);--btn:#12766a;--btn-h:#0f655b;--shadow:rgba(0,0,0,.6);color-scheme:dark}}
html{background:var(--bg)}
body{background:transparent}
body::before,body::after{content:"";position:fixed;z-index:-2;width:70vmax;height:70vmax;border-radius:50%;pointer-events:none}
body::before{top:-30vmax;right:-24vmax;background:radial-gradient(circle,rgba(var(--net),.20),transparent 62%)}
body::after{bottom:-38vmax;left:-28vmax;background:radial-gradient(circle,rgba(var(--net-amber),.15),transparent 62%)}
#bg{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.hero{background:none}
.band{backdrop-filter:blur(2px)}
.card,.grid article,.stats li{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.stats li,.card,.grid article{box-shadow:0 10px 30px -22px var(--shadow)}
.hero .headshot::before{content:"";position:absolute;inset:-34px;z-index:-2;border-radius:50%;background:radial-gradient(circle,rgba(var(--net),.28),transparent 66%)}
/* shimmering headline accent words */
h1.page em,h2.big em{background:linear-gradient(100deg,var(--teal) 0%,var(--amber-d) 50%,var(--teal) 100%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;padding-right:.08em;animation:shine 9s ease-in-out infinite alternate}
@keyframes shine{to{background-position:100% 0}}
/* reading progress */
.progress{position:fixed;top:0;left:0;width:100%;height:3px;z-index:30;pointer-events:none;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--amber),var(--teal))}
/* theme switch */
.theme{display:none;place-items:center;width:38px;height:38px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--card);color:var(--ink);cursor:pointer;transition:border-color .2s,color .2s,rotate .4s}
.js .theme{display:inline-grid}
.theme:hover{border-color:var(--amber);color:var(--amber-d);rotate:18deg}
.theme svg{width:19px;height:19px}.theme .sun{display:none}
:root[data-theme="dark"] .theme .sun{display:block}:root[data-theme="dark"] .theme .moon{display:none}
nav{align-items:center}
html.theming *{transition:background-color .35s ease,color .35s ease,border-color .35s ease!important}
/* dark-mode touches */
:root[data-theme="dark"] .headshot img{box-shadow:0 18px 50px -18px rgba(87,217,197,.35)}
@media(prefers-reduced-motion:reduce){h1.page em,h2.big em{animation:none}.theme{transition:none}.theme:hover{rotate:none}html.theming *{transition:none!important}}
/* phone header: theme switch sits beside the logo, links stay on one row */
@media(max-width:700px){
  .bar{position:relative}
  .theme{position:absolute;top:12px;right:22px}
  nav{gap:16px;font-size:13.5px}
}

/* ===== round 7: new logo, Publications redesign, About photos ===== */
:root{--amber-t:#8f5712}
:root[data-theme="dark"]{--amber-t:#f0b45a}
@media(prefers-color-scheme:dark){:root:not([data-theme]){--amber-t:#f0b45a}}
.logo-d{display:none}
:root[data-theme="dark"] .logo-l{display:none}
:root[data-theme="dark"] .logo-d{display:block}
@media(prefers-color-scheme:dark){:root:not([data-theme]) .logo-l{display:none}:root:not([data-theme]) .logo-d{display:block}}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ext{width:15px;height:15px;margin-left:6px;vertical-align:-2px}
.badge{display:inline-block;font:600 13px var(--sans);color:var(--teal);border:1px solid var(--line);border-radius:999px;padding:5px 13px;background:var(--card)}
.badge.gold{border-color:var(--amber);color:var(--amber-t);margin-top:12px}
/* publications */
.pubgrid{margin-bottom:0}
.pub{display:flex;flex-direction:column;padding:28px 30px!important}
.pubtop{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.pub h3{font-size:24px;line-height:1.3;margin:20px 0 10px}
.pub .by{margin-bottom:24px}
.pub .btn{margin-top:auto;align-self:flex-start}
.awards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:8px}
.award{position:relative;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:26px 26px 24px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 10px 30px -22px var(--shadow);transition:translate .25s,box-shadow .25s}
.award:hover{translate:0 -4px;box-shadow:0 14px 30px -18px var(--shadow)}
.award .ico{width:30px;height:30px;color:var(--amber-t);margin:0 0 14px}
.award .yr{display:block;margin-bottom:6px}
.award h3{font-size:21px;line-height:1.3;margin:0 0 6px}
.award p{margin:0;color:var(--mute);font-size:16px}
.award.featured{border-top:3px solid var(--amber)}
.profiles.big{margin:0}
.profiles.big a{display:inline-flex;align-items:center;font-size:15px;padding:12px 20px}
.tl-item h3{max-width:34em}
/* about photos */
.about-split{margin-top:8px}
.photos{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.photos figure{margin:0}
.photos figure:first-child{grid-column:1/-1}
.photos img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:12px;border:1px solid var(--line);box-shadow:0 14px 34px -22px var(--shadow)}
.photos figure:first-child img{aspect-ratio:16/10}
.photos figcaption{font:13.5px/1.4 var(--sans);color:var(--mute);margin-top:8px}
.photos figcaption:empty{display:none}
.photos:not(:has(figure)){display:none}
.about-split:not(:has(figure)){grid-template-columns:1fr}
@media(max-width:900px){.awards{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.awards{grid-template-columns:1fr}.photos{grid-template-columns:1fr}.photos img,.photos figure:first-child img{aspect-ratio:4/3}}
@media(prefers-reduced-motion:reduce){.award{transition:none}.award:hover{translate:none}}
