@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Instrument+Sans:wdth,wght@75..100,400..700&family=Newsreader:opsz,wght@6..72,300..600&display=swap');

:root {
  --ink: #26322d;
  --ink-soft: #56615c;
  --paper: #f8f4ec;
  --white: #fffdf8;
  --sage: #c9d8c8;
  --sage-deep: #718777;
  --lilac: #d9d0e3;
  --peach: #f2cdbb;
  --butter: #f2df9d;
  --line: rgba(38, 50, 45, .18);
  --mono: "DM Mono", monospace;
  --sans: "Instrument Sans", sans-serif;
  --serif: "Newsreader", serif;
  --radius: 2px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--paper);
  font-family: var(--sans);
  font-size: 17px;
  line-height: 1.65;
}
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 4px; }
a:hover { color: #4c5f20; }
h1, h2, h3 { font-family: var(--sans); letter-spacing: -.035em; line-height: 1.08; text-transform:none; }
h1 { font-size: clamp(2.7rem, 5.2vw, 5rem); font-weight: 450; }
h2 { font-size: clamp(1.9rem, 3.6vw, 3.4rem); max-width: 900px; font-weight: 450; }
h3 { font-size: 1.55rem; }
p { max-width: 780px; }

.navbar {
  min-height: 80px;
  background: rgba(247, 246, 240, .94) !important;
  border-bottom: 1px solid var(--line);
  backdrop-filter: blur(12px);
  padding: 0 3vw;
}
.navbar-brand { font-family: var(--mono); font-size: .88rem; letter-spacing: .05em; }
.navbar-logo { max-height: 34px; }
.navbar-nav .nav-link { font-size: .78rem; font-weight: 600; margin: 0 .25rem; letter-spacing:.025em; }
.navbar .dropdown-menu {
  min-width: 220px;
  padding: .65rem;
  background: rgba(255,253,248,.98);
  border: 1px solid var(--line);
  border-radius: 0;
  box-shadow: 0 16px 40px rgba(38,50,45,.10);
}
.navbar .dropdown-item {
  padding: .7rem .8rem;
  font-size: .78rem;
  letter-spacing:.02em;
  text-transform:none;
}
.navbar .dropdown-item:hover,
.navbar .dropdown-item:focus { background: rgba(201,216,200,.45); color:var(--ink); }
.navbar-nav.ms-auto .nav-item:first-child .nav-link {
  border: 1px solid var(--ink);
  padding: .6rem 1rem;
  background:var(--ink);
  color:var(--white);
}

main.content { padding: 0; }
main.content:has(> .research-hero) { grid-column: page-start / page-end; }
#quarto-content { padding: 0; }
.quarto-title-block,
#title-block-header { display: none; }

.hero {
  min-height: 0;
  display: flow-root;
  border-bottom: 1px solid var(--line);
}
.hero-copy { padding: clamp(3.5rem, 6vw, 6rem) 7vw clamp(2.5rem, 4vw, 4rem); position:relative; z-index:1; }
.hero-copy::before {
  content:"";
  position:absolute;
  z-index:-1;
  top:2rem;
  right:3vw;
  width:min(72%, 1250px);
  aspect-ratio:1672 / 941;
  background-image:var(--hero-image);
  background-position:center;
  background-size:contain;
  background-repeat:no-repeat;
}
.hero-copy h1 { max-width: 58%; margin: .4rem 0 1.6rem; font-size:clamp(2.65rem, 3.8vw, 3.9rem); }
.hero-copy > p:not(.eyebrow) { font-size: clamp(1rem, 1.2vw, 1.18rem); line-height:1.6; max-width: 54%; }
.hero-copy { min-height:clamp(590px, 47vw, 760px); }
.hero .software-editorial-note {
  display:block;
  max-width:54%;
  margin-top:1.4rem;
  padding-top:1rem;
}
.hero .software-editorial-note p { max-width:none; font-size:.72rem; }
.hero .software-editorial-note .software-page-date { margin-top:.55rem; }
.hero .publications-context-note {
  max-width:54%;
  margin-top:1.5rem;
  padding:.7rem .85rem;
  border:1px solid #c9dfd3;
  border-left:4px solid #7fae92;
  border-radius:4px;
  background:rgba(238,246,241,.88);
  color:#4f6359;
  font-size:.74rem !important;
  line-height:1.5;
}
.eyebrow {
  font-family: var(--mono);
  font-size: .78rem;
  font-weight: 500;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.button {
  display: inline-block;
  margin: 1.4rem .5rem 0 0;
  padding: .85rem 1.2rem;
  font-family: var(--mono);
  font-size: .8rem;
  text-decoration: none;
  border: 1px solid var(--ink);
  transition: transform .2s, background .2s;
}
.button:hover { transform: translateY(-2px); color: inherit; }
.button-primary { background: var(--ink); color: var(--white); }
.button-primary:hover { background: #263c32; color: var(--white); }
.button-secondary { background: transparent; }
.button-contact { background:var(--lilac); color:var(--ink); cursor:pointer; line-height:inherit; }
.button-contact:hover { background:#d8ccdc; }
.button-visit { background:var(--sage); color:var(--ink); cursor:pointer; line-height:inherit; }
.button-visit:hover { background:#c5d2c4; }
.hero-actions { display:flex; flex-flow:row nowrap; align-items:stretch; gap:.5rem; margin-top:1.4rem; }
.hero-actions > p { display:flex; flex-flow:row nowrap; align-items:stretch; gap:.5rem; margin:0; }
.hero-actions .button { display:flex; align-items:center; justify-content:center; margin:0; padding:.78rem .9rem; font-size:.72rem; line-height:1.25; white-space:nowrap; }

.contact-dialog {
  width:min(680px, calc(100vw - 2rem));
  max-height:calc(100vh - 2rem);
  padding:0;
  color:var(--ink);
  background:var(--paper);
  border:1px solid var(--ink);
  box-shadow:0 24px 80px rgba(21,35,29,.24);
}
.contact-dialog::backdrop { background:rgba(21,35,29,.58); backdrop-filter:blur(3px); }
.contact-dialog-inner { position:relative; padding:clamp(2rem,5vw,3.5rem); }
.contact-dialog h2 { margin:.45rem 3rem 2rem 0; font-size:clamp(1.8rem,4vw,2.6rem); }
.contact-dialog-close { position:absolute; top:1rem; right:1rem; width:2.6rem; height:2.6rem; padding:0; border:1px solid var(--line); border-radius:50%; background:transparent; color:var(--ink); font-size:1.65rem; line-height:1; cursor:pointer; }
.contact-dialog-close:hover { background:var(--white); }
.contact-options { display:grid; gap:.75rem; }
.contact-options > p { display:grid; gap:.75rem; margin:0; }
.contact-option { display:grid; gap:.3rem; padding:1.15rem 1.25rem; border:1px solid var(--line); color:var(--ink); text-decoration:none; transition:background .2s, transform .2s; }
.contact-option:hover { color:var(--ink); background:var(--white); transform:translateX(4px); }
.contact-option span { font-family:var(--mono); font-size:.67rem; letter-spacing:.08em; color:#60726a; }
.contact-option strong { font-size:1rem; font-weight:500; }
.contact-option small { color:var(--ink-soft); font-size:.8rem; }
.visit-dialog { width:min(780px, calc(100vw - 2rem)); }
.visit-address { margin:0 0 1.5rem; color:var(--ink-soft); font-style:normal; line-height:1.65; }
.visit-address strong { color:var(--ink); }
.visit-map { overflow:hidden; height:min(360px, 42vh); border:1px solid var(--line); background:var(--sage); }
.visit-map iframe { display:block; width:100%; height:100%; border:0; }
.visit-directions { display:inline-block; margin-top:1.1rem; font-family:var(--mono); font-size:.78rem; }

.hero-visual {
  min-height: 0;
  background-color: #f8f4ec;
  position: relative;
  overflow: hidden;
  float:right;
  width:min(57%, 980px);
  margin:2.25rem 3.5vw 2.5rem 2.5vw;
  padding:0;
}
.hero-image { display:block; width:100%; height:auto; object-fit:contain; object-position:center; }
.visual-caption { position:absolute; right:3vw; bottom:2.5rem; margin:0; font-family:var(--mono); font-size:.68rem; letter-spacing:.12em; background:rgba(255,253,248,.84); padding:.55rem .75rem; }

.signal-strip { display:grid; grid-template-columns: repeat(3, 1fr); border-bottom: 1px solid var(--line); }
.signal-item { padding: 2.4rem 4vw; border-right: 1px solid var(--line); font-size:.95rem; }
.signal-item:last-child { border:0; }
.signal-item strong { font-family:var(--mono); font-size:.72rem; letter-spacing:.07em; }
.signal-item p { margin-bottom:0; }

.section-wrap { padding: clamp(5rem, 10vw, 9rem) 6vw; }
.section-wrap > h2 { margin: 1rem 0 4rem; }
.question-grid { display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--ink); }
.question-card { padding:2rem 2.5rem 2rem 0; border-right:1px solid var(--line); min-height:330px; }
.question-card + .question-card { padding-left:2.5rem; }
.question-card:last-child { border-right:0; }
.question-card:nth-child(1) { background:linear-gradient(150deg, transparent 58%, rgba(201,216,200,.5)); }
.question-card:nth-child(2) { background:linear-gradient(150deg, transparent 58%, rgba(217,208,227,.48)); }
.question-card:nth-child(3) { background:linear-gradient(150deg, transparent 58%, rgba(242,205,187,.5)); }
.question-card > span, .software-card > span { font-family:var(--mono); font-size:.75rem; color:#60726a; }
.question-card a { font-family:var(--mono); font-size:.78rem; }
.funders-section { background:var(--white); }
.funders-section > h2 { margin-bottom:.8rem; font-size:clamp(1.6rem,2.6vw,2.4rem); }
.funders-section > p { margin-bottom:1.8rem; color:var(--ink-soft); font-size:.96rem; }
.funders-grid { display:flex; flex-direction:row; flex-wrap:nowrap; align-items:center; justify-content:flex-start; gap:2rem; }
.funders-grid > p { display:flex; flex-direction:row; flex-wrap:nowrap; align-items:center; justify-content:flex-start; gap:2rem; margin:0; }
.funder-card { width:180px; min-height:0; padding:.5rem; display:flex; justify-content:center; align-items:center; text-align:center; border:0; background:transparent; text-decoration:none; }
.funder-card:hover { background:transparent; opacity:.78; }
.funder-logo { display:block; height:76px; width:auto; max-width:165px; object-fit:contain; margin:0 auto; }
.funder-mur { height:88px; }
.section-dark { background:#47554e; color:var(--white); }
.section-dark .eyebrow { color:var(--butter); }
.feature-grid { display:grid; grid-template-columns: 1.5fr .7fr; gap:5vw; }
.feature-art { min-height:390px; background:linear-gradient(135deg,#c9d8c8,#9daea0); position:relative; overflow:hidden; }
.feature-art span { position:absolute; border:1px solid rgba(38,50,45,.55); border-radius:50%; }
.feature-art span:nth-child(1){width:390px;height:390px;left:-70px;top:70px}.feature-art span:nth-child(2){width:240px;height:240px;right:8%;top:-50px;border-color:#756c81}.feature-art span:nth-child(3){width:90px;height:90px;right:20%;bottom:12%;background:var(--peach)}
.feature-main h3 { font-size:2rem; }
.feature-list { border-top:1px solid rgba(255,255,255,.3); }
.feature-small { padding:1.5rem 0; border-bottom:1px solid rgba(255,255,255,.3); }
.feature-small strong { color:var(--butter); font-family:var(--mono); font-size:.72rem; }
.people-teaser { display:grid; grid-template-columns:1fr 1fr; gap:7vw; align-items:center; }
.people-placeholder { min-height:420px; background:#dce2da; display:grid; place-content:center; text-align:center; border:1px solid var(--line); }
.people-placeholder strong { font-family:var(--mono); }
.people-placeholder span { font-size:.85rem; }
.people-image { min-height:420px; overflow:hidden; background:var(--sage); }
.people-image p { margin:0; height:100%; }
.people-image img { display:block; width:100%; min-height:420px; height:100%; object-fit:cover; object-position:center; }
.text-link { font-family:var(--mono); font-size:.85rem; font-weight:500; }
.join-banner { background:var(--lilac); padding:6rem 6vw; }
.join-banner h2 { margin:.5rem 0 1rem; }
.join-page { margin:0; }
.join-heading { padding:clamp(4rem,7vw,6rem) 7vw clamp(3rem,5vw,4.5rem); border-bottom:1px solid var(--line); }
.join-heading h1 { margin:.55rem 0 .8rem; font-size:clamp(2.8rem,5vw,5rem); line-height:.95; letter-spacing:-.055em; }
.join-heading > p:not(.eyebrow) { max-width:760px; margin:0; color:var(--ink-soft); font-size:1rem; line-height:1.65; }
.join-opportunities { padding:clamp(3.5rem,6vw,5rem) 7vw; }
.join-opportunities-heading { display:grid; grid-template-columns:minmax(280px,.8fr) minmax(300px,1.2fr); gap:0 4rem; align-items:end; margin-bottom:2rem; }
.join-opportunities-heading .eyebrow { grid-column:1 / -1; }
.join-opportunities-heading h2 { margin:.5rem 0 0; font-size:clamp(1.9rem,3vw,3rem); letter-spacing:-.04em; }
.join-opportunities-heading > p:not(.eyebrow) { margin:0; color:var(--ink-soft); font-size:.86rem; line-height:1.6; }
.join-role-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1px; border:1px solid var(--line); background:var(--line); }
.join-role-card { min-width:0; padding:1.6rem; background:var(--white); }
.join-role-card > span { color:#60746a; font-family:var(--mono); font-size:.58rem; letter-spacing:.05em; text-transform:uppercase; }
.join-role-card h3 { margin:.7rem 0 .75rem; font-size:1.3rem; letter-spacing:-.025em; }
.join-role-card p { margin:0; color:var(--ink-soft); font-size:.8rem; line-height:1.6; }
.join-role-card p a { color:var(--sage-deep); text-underline-offset:3px; }
.join-card-link { display:inline-flex; gap:.35rem; align-items:center; margin-top:1rem; color:#496b5b; font-family:var(--mono); font-size:.59rem; letter-spacing:.035em; text-decoration:none; text-transform:uppercase; }
.join-card-link:hover { color:#2f5543; text-decoration:underline; }
.join-action,
.join-secondary { display:inline-flex; align-items:center; gap:.45rem; margin:1.2rem .55rem 0 0; padding:.7rem .9rem; border-radius:4px; font-family:var(--mono); font-size:.64rem; letter-spacing:.035em; text-decoration:none; text-transform:uppercase; }
.join-action { border:0; background:#e3f0e9; color:#315f4b; cursor:pointer; }
.join-action:hover { background:#d3e7dc; color:#224b39; }
.join-secondary { border:1px solid var(--line); color:var(--ink-soft); background:var(--white); }
.join-secondary:hover { border-color:#a9b4ae; color:var(--ink); }
.join-programmes { display:grid; margin:1.5rem 0; border:1px solid var(--line); }
.join-programmes a { display:grid; grid-template-columns:90px minmax(0,1fr) auto; gap:1rem; align-items:center; padding:1rem 1.15rem; border-bottom:1px solid var(--line); color:var(--ink); font-size:.83rem; line-height:1.4; text-decoration:none; }
.join-programmes a:last-child { border-bottom:0; }
.join-programmes a:hover { background:#f4f3ee; }
.join-programmes span { color:#60746a; font-family:var(--mono); font-size:.62rem; letter-spacing:.05em; text-transform:uppercase; }
.join-programmes .bi { color:#6c7c74; }
.join-contact { display:flex; flex-direction:column; align-items:center; margin-top:clamp(1rem,3vw,3rem); padding:clamp(4rem,7vw,6rem) 7vw; background:var(--lilac); text-align:center; }
.join-contact h2 { max-width:680px; margin:.55rem 0 .9rem; font-size:clamp(2rem,3.5vw,3.4rem); letter-spacing:-.045em; }
.join-contact > p:not(.eyebrow) { max-width:680px; margin:0; color:var(--ink-soft); font-size:.9rem; line-height:1.7; }
.join-apply-button { display:inline-flex; align-items:center; gap:.5rem; margin-top:1.6rem; padding:.85rem 1.2rem; border:0; border-radius:4px; background:var(--ink); color:#fff; font-family:var(--mono); font-size:.68rem; letter-spacing:.04em; text-transform:uppercase; cursor:pointer; }
.join-apply-button:hover { background:#34423b; }
.join-dialog { width:min(920px,calc(100vw - 2rem)); max-height:calc(100vh - 2rem); padding:0; border:1px solid var(--line); border-radius:7px; background:var(--white); color:var(--ink); box-shadow:0 24px 80px rgba(29,40,34,.22); }
.join-dialog::backdrop { background:rgba(28,38,33,.58); backdrop-filter:blur(3px); }
.join-form { margin:0; }
.join-form-header { display:flex; justify-content:space-between; gap:2rem; align-items:flex-start; padding:2rem 2.2rem 1.65rem; border-bottom:1px solid var(--line); background:#f4f1f6; }
.join-form-header h2 { margin:.4rem 0 0; font-size:clamp(1.8rem,3vw,2.7rem); letter-spacing:-.04em; }
.join-dialog-close { display:grid; place-items:center; flex:0 0 auto; width:2.3rem; height:2.3rem; border:1px solid rgba(54,68,60,.16); border-radius:50%; background:#fff; color:var(--ink-soft); cursor:pointer; }
.join-dialog-close:hover { color:var(--ink); border-color:rgba(54,68,60,.38); }
.join-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.1rem 1.3rem; padding:2rem 2.2rem 1.25rem; }
.join-form-grid label { display:grid; gap:.45rem; min-width:0; color:#506259; font-family:var(--mono); font-size:.62rem; letter-spacing:.035em; text-transform:uppercase; }
.join-form-grid input,
.join-form-grid select,
.join-form-grid textarea { width:100%; min-width:0; padding:.72rem .78rem; border:1px solid #cdd4d0; border-radius:3px; background:#fff; color:var(--ink); font-family:var(--body); font-size:.86rem; letter-spacing:0; line-height:1.4; text-transform:none; }
.join-form-grid textarea { resize:vertical; }
.join-form-grid input:focus,
.join-form-grid select:focus,
.join-form-grid textarea:focus { outline:2px solid rgba(79,126,104,.25); border-color:#6e9884; }
.join-form-wide { grid-column:1 / -1; }
.join-field-help { margin:-.55rem 0 0; color:#718078; font-size:.72rem; line-height:1.45; }
.join-form-confirm { display:flex; gap:.65rem; align-items:flex-start; margin:0 2.2rem 1.5rem; color:var(--ink-soft); font-size:.76rem; line-height:1.45; }
.join-form-confirm input { margin-top:.15rem; accent-color:#426d58; }
.join-form-footer { display:flex; justify-content:space-between; gap:1.5rem; align-items:center; padding:1.25rem 2.2rem; border-top:1px solid var(--line); background:#f7f7f3; }
.join-form-footer p { margin:0; color:#6c7b73; font-size:.7rem; line-height:1.45; }
.join-form-footer .bi { margin-right:.25rem; color:#4c7b64; }
.join-form-submit { display:inline-flex; align-items:center; gap:.45rem; flex:0 0 auto; padding:.75rem 1rem; border:0; border-radius:4px; background:var(--ink); color:#fff; font-family:var(--mono); font-size:.64rem; letter-spacing:.035em; text-transform:uppercase; cursor:pointer; }
.join-form-submit:hover { background:#34423b; }
.join-form-submit .bi { margin:0; color:inherit; }
.join-email-ready-body { padding:2rem 2.2rem 1.5rem; }
.join-email-ready-body > p { max-width:720px; margin:0 0 1.35rem; color:var(--ink-soft); font-size:.82rem; line-height:1.6; }
.join-email-ready-body label { display:grid; gap:.45rem; color:#506259; font-family:var(--mono); font-size:.62rem; letter-spacing:.035em; text-transform:uppercase; }
.join-email-ready-body textarea { width:100%; padding:.85rem; border:1px solid #cdd4d0; border-radius:3px; background:#fafaf7; color:var(--ink); font-family:var(--mono); font-size:.72rem; line-height:1.55; resize:vertical; text-transform:none; }
.join-copy-status { min-height:1.2rem; margin:.65rem 0 0 !important; color:#426d58 !important; font-family:var(--mono); font-size:.66rem !important; }
.join-email-actions { justify-content:flex-end; }
.join-email-actions .join-secondary { margin:0; cursor:pointer; }
.join-email-actions .join-form-submit { text-decoration:none; }
@media (max-width:800px) {
  .join-opportunities-heading { grid-template-columns:1fr; gap:.8rem; }
  .join-role-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .join-programmes a { grid-template-columns:70px minmax(0,1fr) auto; }
  .join-form-grid { grid-template-columns:1fr; }
  .join-form-wide { grid-column:auto; }
}
@media (max-width:520px) {
  .join-role-grid { grid-template-columns:1fr; }
  .join-programmes a { grid-template-columns:1fr auto; }
  .join-programmes span { grid-column:1 / -1; }
  .join-dialog { width:calc(100vw - 1rem); max-height:calc(100vh - 1rem); }
  .join-form-header,
  .join-form-grid,
  .join-form-footer,
  .join-email-ready-body { padding-left:1.15rem; padding-right:1.15rem; }
  .join-form-confirm { margin-left:1.15rem; margin-right:1.15rem; }
  .join-form-footer { align-items:flex-start; flex-direction:column; }
}
.button-light { background:var(--white); }
.button-outline-light { border-color:var(--ink); }

.page-intro {
  min-height: 460px;
  padding: clamp(5rem, 9vw, 8rem) 46% 5rem 8vw;
  border-bottom:1px solid var(--line);
  background-color: var(--paper);
  background-image:
    linear-gradient(90deg, rgba(248,244,236,1) 0%, rgba(248,244,236,.98) 42%, rgba(248,244,236,.62) 58%, rgba(248,244,236,.08) 100%),
    url("content/images/home-hero.png");
  background-size: cover;
  background-position: 67% 48%;
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.page-intro::after {
  content: "PHYLOGENY · CELLS · DATA · INFERENCE";
  position: absolute;
  right: 2.5vw;
  bottom: 1.75rem;
  padding: .45rem .65rem;
  background: rgba(255,253,248,.85);
  font-family: var(--mono);
  font-size: .62rem;
  letter-spacing: .11em;
}
.page-intro h1 { margin:.5rem 0 1.5rem; max-width:780px; font-size:clamp(3rem, 5.5vw, 5.5rem); }
.page-intro > p:last-child { font-size:1.15rem; max-width:660px; }
.research-technical { padding:clamp(4rem,7vw,6rem) 7vw; }
.research-technical > .level2 > h2 { max-width:1050px; margin:.6rem 0 1.2rem; font-size:clamp(2.35rem,3.8vw,3.8rem); }
.research-technical > .level2 > p { max-width:1050px; color:var(--ink-soft); font-size:1.05rem; line-height:1.65; }
.research-tech-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); margin-top:3rem; border-top:1px solid var(--ink); border-left:1px solid var(--line); }
.research-tech-card { min-height:230px; padding:2rem; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.research-tech-card > p:first-child span { font-family:var(--mono); font-size:.7rem; letter-spacing:.08em; color:#60726a; }
.research-tech-card h3 { margin:1.8rem 0 .75rem; font-size:clamp(1.45rem,2.3vw,2rem); }
.research-tech-card p { max-width:620px; color:var(--ink-soft); line-height:1.65; }
.research-pipeline { padding:clamp(4rem,6vw,5rem) 7vw; background:var(--sage); }
.research-pipeline > .level2 > h2 { margin:.5rem 0 1rem; font-size:clamp(2.2rem,3.5vw,3.4rem); }
.research-pipeline > .level2 > p { max-width:980px; line-height:1.65; }
.research-pipeline-grid { display:grid; grid-template-columns:repeat(4,1fr); margin-top:2rem; border-top:1px solid var(--ink); }
.pipeline-step { padding:1.5rem 2rem 0 0; border-right:1px solid rgba(21,35,29,.2); min-height:110px; }
.pipeline-step + .pipeline-step { padding-left:2rem; }
.pipeline-step:last-child { border-right:0; }
.pipeline-step strong { font-family:var(--mono); font-size:.72rem; letter-spacing:.08em; }
.pipeline-step p { max-width:230px; font-size:.9rem; line-height:1.55; }
.collaborators-section { padding:clamp(4rem,7vw,6rem) 7vw; }
.collaborators-section > .level2 > h2 { max-width:900px; margin:.5rem 0 2.5rem; font-size:clamp(2.2rem,3.5vw,3.4rem); }
.collaborators-logos { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); align-items:center; gap:clamp(1.25rem,3vw,3rem); margin-top:1rem; }
.collaborators-logos > p { display:contents; margin:0; }
.collaborators-logos a { display:flex; align-items:center; justify-content:center; min-width:0; min-height:100px; padding:.75rem; border:0; text-decoration:none; transition:opacity .2s, transform .2s; }
.collaborators-logos a:hover { opacity:.72; transform:translateY(-2px); }
.collaborator-logo { display:block; width:100%; max-height:78px; object-fit:contain; }
.collaborator-logo.logo-square { width:auto; max-width:100%; max-height:92px; }
.collaborator-logo.logo-monochrome { filter:brightness(0) saturate(100%); }
.projects-page { padding:clamp(3.5rem,6vw,6rem) 7vw clamp(5rem,9vw,8rem); }
.projects-heading { max-width:780px; margin-bottom:clamp(3rem,6vw,5rem); }
.projects-heading h1 { margin:.65rem 0 1rem; font-size:clamp(2.6rem,4.5vw,4.4rem); line-height:1; letter-spacing:-.045em; }
.projects-heading > p:not(.eyebrow) { max-width:670px; margin:0; color:#536159; font-size:clamp(1rem,1.35vw,1.2rem); line-height:1.65; }
.projects-list { border-top:1px solid var(--line); }
.project-card { border-bottom:1px solid var(--line); }
.project-card summary { display:grid; grid-template-columns:3.5rem minmax(0,1fr) 2.5rem; gap:1.25rem; align-items:center; padding:1.75rem 0; cursor:pointer; list-style:none; }
.project-card summary::-webkit-details-marker { display:none; }
.project-card summary::marker { content:""; }
.project-index { font-family:var(--mono); font-size:.68rem; letter-spacing:.08em; color:#839087; }
.project-summary-main { display:flex; flex-direction:column; gap:.35rem; }
.project-grant { font-family:var(--mono); font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; color:var(--sage-deep); }
.project-title { max-width:980px; font-size:clamp(1.5rem,2.4vw,2.35rem); line-height:1.12; letter-spacing:-.025em; }
.project-toggle { position:relative; width:2rem; height:2rem; justify-self:end; border:1px solid rgba(21,35,29,.35); border-radius:50%; }
.project-toggle::before, .project-toggle::after { content:""; position:absolute; left:50%; top:50%; width:.75rem; height:1px; background:var(--ink); transform:translate(-50%,-50%); }
.project-toggle::after { transform:translate(-50%,-50%) rotate(90deg); transition:transform .2s ease; }
.project-card[open] .project-toggle::after { transform:translate(-50%,-50%) rotate(0); }
.project-body { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr); gap:clamp(2rem,5vw,5rem); padding:1rem 0 clamp(3rem,5vw,4.5rem) 4.75rem; }
.project-visual { align-self:start; overflow:hidden; background:#f1eee7; }
.project-visual img { display:block; width:100%; height:auto; aspect-ratio:3/2; object-fit:contain; }
.project-copy { align-self:center; max-width:600px; }
.project-lead { margin:0 0 1rem; font-size:clamp(1.15rem,1.6vw,1.4rem); line-height:1.45; color:var(--ink); }
.project-copy > p:not(.project-lead) { color:#5b665f; font-size:.98rem; line-height:1.7; }
.project-facts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); margin:1.75rem 0 0; border-top:1px solid var(--line); }
.project-facts div { padding:1rem 1rem 1rem 0; border-bottom:1px solid var(--line); }
.project-facts div:nth-child(odd) { margin-right:1rem; }
.project-facts dt { margin-bottom:.3rem; font-family:var(--mono); font-size:.64rem; letter-spacing:.08em; text-transform:uppercase; color:#7b887f; }
.project-facts dd { margin:0; font-size:.84rem; line-height:1.45; }
.project-outputs { margin-top:1.75rem; }
.project-outputs-label { display:flex; justify-content:space-between; gap:1rem; margin:0 0 .55rem; font-family:var(--mono); font-size:.65rem; letter-spacing:.08em; text-transform:uppercase; color:#738077; }
.project-outputs-label span { color:#a0a8a2; font-size:.58rem; }
.project-paper-list { border-top:1px solid var(--line); }
.project-paper { position:relative; display:grid; grid-template-columns:minmax(0,1fr) 1.25rem; gap:.25rem 1rem; padding:.9rem 0; border-bottom:1px solid var(--line); color:var(--ink); text-decoration:none; }
.project-paper-meta { grid-column:1; font-family:var(--mono); font-size:.62rem; letter-spacing:.04em; text-transform:uppercase; color:#7a877e; }
.project-paper-title { grid-column:1; font-size:.88rem; line-height:1.4; }
.project-paper-arrow { grid-column:2; grid-row:1 / span 2; align-self:center; justify-self:end; font-size:1rem; color:var(--sage-deep); transition:transform .2s; }
.project-paper:hover { color:var(--sage-deep); }
.project-paper:hover .project-paper-arrow { transform:translate(2px,-2px); }
.project-card summary:hover .project-title { color:var(--sage-deep); }
.software-page { margin:0 3vw; }
.software-heading { max-width:920px; padding:clamp(4rem,8vw,7rem) 0 clamp(2.5rem,5vw,4.5rem); }
.software-heading h1 { margin:.7rem 0 1.25rem; font-size:clamp(3rem,6vw,6rem); line-height:.92; letter-spacing:-.055em; }
.software-heading > p:not(.eyebrow) { max-width:690px; margin:0; color:#536159; font-size:clamp(1rem,1.35vw,1.18rem); line-height:1.65; }
.software-toolbar { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1.1rem 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); font-family:var(--mono); font-size:.68rem; letter-spacing:.07em; text-transform:uppercase; }
.software-toolbar p { margin:0; }
.software-toolbar a { color:var(--ink); text-decoration:none; }
.software-toolbar a:hover { color:var(--sage-deep); }
.software-editorial-note { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:1.25rem; align-items:end; margin-top:1.5rem; padding-top:1.2rem; border-top:1px solid var(--line); }
.software-editorial-note p { max-width:680px; margin:0; font-size:.78rem; line-height:1.55; }
.software-editorial-note .software-page-date { color:#78847d; font-family:var(--mono); font-size:.61rem; letter-spacing:.045em; text-transform:uppercase; white-space:nowrap; }
.software-github-link { display:inline-flex; gap:.5rem; align-items:center; }
.software-github-link .bi { color:var(--sage-deep); font-size:1.35rem; line-height:1; }
.software-filters { display:flex; flex-wrap:wrap; gap:.45rem; padding:1.25rem 0 2rem; }
.software-filter { padding:.42rem .72rem; border:1px solid var(--line); border-radius:999px; background:transparent; color:#617067; font-family:var(--mono); font-size:.61rem; letter-spacing:.04em; text-transform:uppercase; cursor:pointer; }
.software-filter:hover, .software-filter.is-active { border-color:var(--ink); background:var(--ink); color:var(--white); }
.software-status { padding:4rem 0; color:#69776f; font-family:var(--mono); font-size:.72rem; letter-spacing:.05em; text-transform:uppercase; }
.software-status.is-error { color:#8b4f46; }
.github-software-grid { display:grid; grid-template-columns:1fr; gap:1px; background:var(--line); border:1px solid var(--line); }
.github-software-card { display:grid; grid-template-columns:96px minmax(155px,.45fr) minmax(360px,1.55fr) minmax(260px,.9fr); grid-template-rows:auto auto; gap:1.25rem 1.5rem; align-items:start; min-width:0; padding:clamp(1.4rem,2.5vw,2.25rem); background:var(--white); }
.github-software-card[hidden] { display:none; }
.software-card-top { display:contents; }
.software-logo-frame { grid-column:1; grid-row:1 / span 2; display:flex; width:96px; height:96px; align-items:center; justify-content:center; overflow:hidden; border:1px solid var(--line); border-radius:17px; background:#fff; color:#76837b; font-family:var(--mono); font-size:.78rem; letter-spacing:.08em; text-decoration:none; }
.software-logo-frame.has-image { background:#fff; }
.software-logo { display:block; width:100%; height:100%; padding:.35rem; object-fit:contain; }
.software-identity { grid-column:2; grid-row:1; }
.software-name { color:var(--ink); font-size:clamp(1.45rem,2.4vw,2.15rem); line-height:1; letter-spacing:-.035em; text-decoration:none; }
.software-name:hover { color:var(--sage-deep); }
.software-topics { margin:.55rem 0 0; color:#718078; font-family:var(--mono); font-size:.6rem; letter-spacing:.045em; line-height:1.55; text-transform:uppercase; }
.software-description { grid-column:3; grid-row:1; min-width:0; max-width:none; min-height:0; margin:0; overflow-wrap:anywhere; color:#536058; font-size:.82rem; line-height:1.55; }
.software-metrics { grid-column:4; grid-row:1; display:flex; flex-wrap:wrap; gap:.38rem; }
.repo-badge { padding:.34rem .52rem; border:1px solid var(--line); border-radius:3px; color:#5d6a63; font-family:var(--mono); font-size:.59rem; letter-spacing:.025em; text-decoration:none; }
a.repo-badge:hover { border-color:var(--sage-deep); color:var(--sage-deep); }
.repo-badge-label { color:#879289; }
.repo-badge-stars { border-color:#eadba9; background:#fff7d8; color:#7c671d; }
.repo-badge-issues { border-color:#cbd9ef; background:#eef5ff; color:#41658e; }
.repo-badge-forks { border-color:#d7cdea; background:#f5efff; color:#665084; }
.repo-badge-code { border-color:#c9dfd3; background:#edf8f1; color:#3f7056; }
.repo-badge-license { border-color:#ead1c6; background:#fff2ec; color:#8a5843; }
.repo-badge-updated { border-color:#d8ddd9; background:#f4f5f2; color:#637068; }
.software-citation { grid-column:2 / span 2; grid-row:2; display:grid; grid-template-columns:auto minmax(0,1fr); gap:.25rem .65rem; align-items:center; margin-top:0; padding-top:1.1rem; border-top:1px solid var(--line); }
.software-citation.is-loading { display:block; color:#9aa29d; font-family:var(--mono); font-size:.61rem; letter-spacing:.04em; text-transform:uppercase; }
.software-journal-logo { grid-row:1 / span 2; width:48px; height:48px; padding:.15rem; border-radius:50%; background:#fff; object-fit:contain; }
.software-citation-label { color:#60746a; font-family:var(--mono); font-size:.59rem; letter-spacing:.045em; text-transform:uppercase; }
.software-citation-title { grid-column:2; color:var(--ink); font-size:.82rem; line-height:1.42; text-decoration:none; }
.software-citation:not(:has(.software-journal-logo)) .software-citation-label,
.software-citation:not(:has(.software-journal-logo)) .software-citation-title { grid-column:1 / -1; }
.software-citation-title:hover { color:var(--sage-deep); }
.software-card-footer { grid-column:4; grid-row:2; display:flex; flex-wrap:wrap; gap:1rem; margin-top:0; padding-top:1.1rem; border-top:1px solid var(--line); }
.software-repo-link { display:inline-flex; align-items:center; gap:.42rem; padding:.48rem .62rem; border-radius:4px; font-family:var(--mono); font-size:.61rem; letter-spacing:.04em; text-decoration:none; text-transform:uppercase; }
.software-repo-link i { font-size:.88rem; }
.software-repo-link.is-repository { background:#eee9fa; color:#5e4c86; }
.software-repo-link.is-documentation { background:#e8f5ef; color:#366d55; }
.software-repo-link:hover { color:var(--sage-deep); }
.publications-page { margin:0 5vw; }
.publications-heading { max-width:920px; padding:clamp(4rem,8vw,7rem) 0 clamp(2.5rem,5vw,4.5rem); }
.publications-heading h1 { margin:.7rem 0 1.25rem; font-size:clamp(3rem,6vw,6rem); line-height:.92; letter-spacing:-.055em; }
.publications-heading > p:not(.eyebrow) { max-width:690px; margin:0; color:#536159; font-size:clamp(1rem,1.35vw,1.18rem); line-height:1.65; }
.publications-heading > .publications-context-note { max-width:690px; margin-top:2.25rem; padding:.72rem .9rem; border:1px solid #c9dfd3; border-left:4px solid #7fae92; border-radius:4px; background:#eef6f1; color:#4f6359; font-family:inherit; font-size:.74rem; letter-spacing:0; line-height:1.5; }
.publications-toolbar { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1.1rem 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); font-family:var(--mono); font-size:.68rem; letter-spacing:.055em; text-transform:uppercase; }
.publications-toolbar p { margin:0; }
.publications-scholar-link { display:inline-flex; gap:.55rem; align-items:center; color:var(--ink); text-decoration:none; }
.publications-scholar-link:hover { color:var(--sage-deep); }
.publications-scholar-link img { width:1.45rem; height:1.45rem; object-fit:contain; }
.publications-sort { display:flex; align-items:center; gap:.45rem; padding:1.35rem 0; color:#718078; font-family:var(--mono); font-size:.62rem; letter-spacing:.05em; text-transform:uppercase; }
.publication-sort { padding:.43rem .75rem; border:1px solid var(--line); border-radius:999px; background:transparent; color:#617067; font:inherit; text-transform:uppercase; cursor:pointer; }
.publication-sort:hover, .publication-sort.is-active { border-color:var(--ink); background:var(--ink); color:var(--white); }
.publication-role-label { margin-left:.7rem; }
.publication-role { padding:.43rem .75rem; border:1px solid #c9dfd3; border-radius:999px; background:transparent; color:#527062; font:inherit; text-transform:uppercase; cursor:pointer; }
.publication-role:hover, .publication-role.is-active { border-color:#3f7056; background:#e4f1e9; color:#286247; }
.publication-type-label { margin-left:.7rem; }
.publication-type { padding:.43rem .75rem; border:1px solid #d8cde7; border-radius:999px; background:transparent; color:#69527d; font:inherit; text-transform:uppercase; cursor:pointer; }
.publication-type:hover, .publication-type.is-active { border-color:#765c8d; background:#f1eafb; color:#5f4774; }
.publication-year-filter { display:inline-flex; gap:.55rem; align-items:center; margin-left:auto; }
.publication-year-filter select { min-width:9rem; padding:.43rem 2rem .43rem .7rem; border:1px solid var(--line); border-radius:3px; background-color:var(--white); color:#526159; font:inherit; text-transform:none; cursor:pointer; }
.publications-list { border:1px solid var(--line); background:var(--white); }
.publication-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:1.5rem; align-items:start; padding:1.35rem clamp(1.2rem,2.5vw,2rem); border-bottom:1px solid var(--line); }
.publication-row:last-child { border-bottom:0; }
.publication-main { min-width:0; }
.publication-title { color:var(--ink); font-size:clamp(1rem,1.35vw,1.22rem); line-height:1.35; text-decoration:none; }
.publication-title:hover { color:var(--sage-deep); }
.publication-authors, .publication-venue { margin:.42rem 0 0; color:#68766e; font-size:.76rem; line-height:1.45; }
.publication-authors.is-incomplete { color:#9a7162; }
.publication-pi { padding:0 .16em; border-radius:2px; background:#e4f1e9; color:#286247; font-weight:650; }
.publication-venue { color:#879189; font-family:var(--mono); font-size:.61rem; letter-spacing:.025em; }
.publication-doi { display:inline-block; margin-top:.55rem; color:#496c5c; font-family:var(--mono); font-size:.6rem; letter-spacing:.025em; text-decoration:none; overflow-wrap:anywhere; }
.publication-doi:hover { color:var(--sage-deep); }
.publication-doi.is-missing { color:#9a7c70; }
.publication-metrics { display:flex; gap:.45rem; align-items:center; white-space:nowrap; }
.publication-year, .publication-citations { padding:.35rem .55rem; border-radius:3px; font-family:var(--mono); font-size:.6rem; }
.publication-year { border:1px solid #c9dfd3; background:#edf8f1; color:#3f7056; }
.publication-citations { border:1px solid #eadba9; background:#fff7d8; color:#7c671d; }
.publication-preprint { padding:.35rem .55rem; border:1px solid #d8cde7; border-radius:3px; background:#f1eafb; color:#69527d; font-family:var(--mono); font-size:.6rem; }
.engagement-page { margin:0; }
.engagement-heading { padding:clamp(4rem,7vw,6rem) 7vw clamp(3rem,5vw,4.5rem); border-bottom:1px solid var(--line); }
.engagement-heading h1 { max-width:820px; margin:.65rem 0 1rem; font-size:clamp(2.5rem,4.2vw,4.2rem); line-height:1; letter-spacing:-.045em; }
.engagement-heading > p:not(.eyebrow) { max-width:760px; margin:0; color:var(--ink-soft); font-size:1rem; line-height:1.65; }
.engagement-links { display:flex; flex-wrap:wrap; gap:.7rem; margin-top:1.6rem; }
.engagement-links a { display:inline-flex; gap:.5rem; align-items:center; padding:.62rem .82rem; border:1px solid var(--line); border-radius:4px; background:var(--white); color:var(--ink); font-family:var(--mono); font-size:.65rem; letter-spacing:.035em; text-decoration:none; text-transform:uppercase; }
.engagement-links a:first-child { background:#e8f5ef; color:#366d55; }
.engagement-links a:hover { border-color:var(--sage-deep); color:var(--sage-deep); }
.engagement-section { padding:clamp(3.5rem,6vw,5rem) 7vw; }
.engagement-outreach { background:var(--sage); }
.engagement-section-heading { display:grid; grid-template-columns:minmax(250px,.7fr) minmax(0,1.3fr); gap:.3rem 3rem; align-items:start; padding-bottom:2rem; }
.engagement-section-heading > p:first-child { grid-column:1 / -1; }
.engagement-section-heading h2 { margin:.5rem 0 0; font-size:clamp(1.8rem,2.7vw,2.8rem); letter-spacing:-.035em; }
.engagement-section-heading > p:last-child { max-width:560px; margin:.7rem 0 0; color:var(--ink-soft); line-height:1.6; }
.engagement-list { border-top:1px solid var(--ink); }
.engagement-item { display:grid; grid-template-columns:70px minmax(0,1fr) 210px; gap:1.5rem; align-items:start; padding:1.7rem 0; border-bottom:1px solid var(--line); }
.engagement-year { padding-top:.2rem; color:#64756c; font-family:var(--mono); font-size:.7rem; letter-spacing:.08em; }
.engagement-item h3 { max-width:960px; margin:0; font-size:clamp(1.05rem,1.55vw,1.35rem); line-height:1.35; }
.engagement-item h3 a { color:var(--ink); text-decoration:none; }
.engagement-item h3 a:hover { color:var(--sage-deep); }
.engagement-item h3 .bi { margin-left:.25rem; color:var(--sage-deep); font-size:.85em; }
.engagement-item p { max-width:820px; margin:.55rem 0 0; color:var(--ink-soft); font-size:.86rem; line-height:1.55; }
.engagement-item .engagement-meta { color:#66786f; font-family:var(--mono); font-size:.62rem; letter-spacing:.04em; text-transform:uppercase; }
.engagement-video { position:relative; display:block; overflow:hidden; aspect-ratio:16 / 9; border:1px solid var(--line); border-radius:5px; background:#1e2823; color:var(--white); text-decoration:none; }
.engagement-video img { display:block; width:100%; height:100%; object-fit:cover; transition:transform .25s, opacity .25s; }
.engagement-video span { position:absolute; right:.45rem; bottom:.45rem; display:inline-flex; gap:.25rem; align-items:center; padding:.3rem .45rem; border-radius:3px; background:rgba(21,35,29,.9); color:#fff; font-family:var(--mono); font-size:.56rem; letter-spacing:.035em; text-transform:uppercase; }
.engagement-video:hover img { opacity:.82; transform:scale(1.025); }
.team-page { margin:0; }
.team-heading { padding:clamp(4rem,7vw,6rem) 7vw clamp(3rem,5vw,4.5rem); border-bottom:1px solid var(--line); }
.team-heading h1 { max-width:900px; margin:.65rem 0 1rem; font-size:clamp(2.7rem,4.7vw,4.8rem); line-height:.96; letter-spacing:-.05em; }
.team-heading > p:not(.eyebrow) { max-width:760px; margin:0; color:var(--ink-soft); font-size:1rem; line-height:1.65; }
.team-section { padding:clamp(3.5rem,6vw,5rem) 7vw; }
.team-section-tinted { background:var(--sage); }
.team-section-title { margin-bottom:2rem; }
.team-section-title h2 { margin:.5rem 0 0; font-size:clamp(1.8rem,2.8vw,2.8rem); letter-spacing:-.035em; }
.team-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1px; border:1px solid var(--line); background:var(--line); }
.team-grid-featured { grid-template-columns:1fr; }
.team-card { display:grid; grid-template-rows:260px minmax(0,1fr); min-width:0; background:var(--white); }
.team-card > img { display:block; width:100%; height:100%; object-fit:cover; object-position:center 25%; background:#eef0ea; }
.team-photo-placeholder { display:grid; place-items:center; min-height:260px; background:#e7ede8; color:#6b7d73; font-family:var(--mono); font-size:2rem; letter-spacing:.08em; }
.team-card > div { padding:1.35rem; }
.team-card span { color:#60746a; font-family:var(--mono); font-size:.6rem; letter-spacing:.055em; text-transform:uppercase; }
.team-card h3 { margin:.55rem 0 .2rem; font-size:1.35rem; letter-spacing:-.025em; }
.team-card p { margin:0; color:var(--ink-soft); font-size:.82rem; line-height:1.55; }
.team-links a.team-thesis { background:#eeeaf5; color:#65527d; }
.team-links a.team-thesis:hover { background:#e2daed; color:#49385e; }
.team-card-pi { grid-template-columns:minmax(300px,.8fr) minmax(0,1.2fr); grid-template-rows:minmax(620px,auto); }
.team-card-pi > div { display:flex; flex-direction:column; justify-content:center; padding:clamp(2rem,5vw,4.5rem); }
.team-card-pi h3 { font-size:clamp(2rem,3.5vw,3.5rem); }
.team-card-pi p { max-width:720px; font-size:.95rem; }
.team-links { display:flex !important; flex-wrap:wrap; gap:.65rem; margin-top:1.4rem; padding:0 !important; }
.team-card h3 + .team-links { margin-top:0; }
.team-links a { display:inline-flex; gap:.4rem; align-items:center; padding:.55rem .7rem; border-radius:4px; background:#e8f5ef; color:#366d55; font-family:var(--mono); font-size:.62rem; text-decoration:none; text-transform:uppercase; }
.team-background { margin-top:1rem; padding-top:.85rem; border-top:1px solid var(--line); }
.team-background summary { cursor:pointer; color:#496b5b; font-family:var(--mono); font-size:.62rem; letter-spacing:.055em; text-transform:uppercase; list-style:none; }
.team-background summary::-webkit-details-marker { display:none; }
.team-background summary::after { content:" +"; }
.team-background[open] summary::after { content:" −"; }
.team-background-content { margin-top:.85rem; color:var(--ink-soft); }
.team-background-content p { margin:0 0:.55rem; font-size:.76rem; }
.team-background-content ul { margin:.3rem 0 0; padding-left:1.1rem; }
.team-background-content li { margin:.25rem 0; color:var(--ink-soft); font-size:.74rem; line-height:1.45; }
.team-card-pi .team-background-content p,
.team-card-pi .team-background-content li { font-size:.82rem; }
.team-grid-compact { grid-template-columns:repeat(3,minmax(0,1fr)); }
.team-grid-compact .team-card { display:block; min-height:0; }
.team-grid-compact .team-card > div { height:100%; }
.team-card-text { display:block; }
.team-card-text .team-photo-placeholder { min-height:140px; }
.team-grid-compact .team-photo-placeholder { display:none; }
.publications-error { padding:3rem; color:#8b4f46; }
.content-note { margin:3rem 8vw 0; padding:1.2rem 1.5rem; background:#eef0e9; border-left:4px solid var(--sage-deep); font-size:.9rem; }
main > section:not(.page-intro):not(.hero), main > h2, main > h3, main > p, main > .three-col, main > .software-grid, main > .profile-placeholder-grid { margin-left:8vw; margin-right:8vw; }
main > h2 { margin-top:5rem; }
.three-col, .software-grid, .profile-placeholder-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1.5rem; margin-top:2rem; margin-bottom:5rem; }
.method-card, .software-card, .profile-placeholder { padding:2rem; background:var(--white); border:1px solid var(--line); }
.software-card { min-height:300px; }
.profile-placeholder { min-height:230px; display:flex; flex-direction:column; justify-content:space-between; }
.profile-placeholder span { font-family:var(--mono); font-size:.7rem; color:#68776f; }

.nav-footer { margin-top:7rem; background:var(--ink) !important; color:var(--white); border-top:0 !important; padding:3rem 5vw; }
.nav-footer a { color:var(--white); }

@media (max-width: 1100px) {
  .hero-copy { padding-left:5vw; }
  .hero-copy h1 { font-size:clamp(2.55rem,4.7vw,3.45rem); }
  .hero-copy::before { width:68%; right:1vw; top:4rem; }
  .hero-copy h1 { max-width:60%; }
  .hero-copy > p:not(.eyebrow) { max-width:58%; }
}

@media (max-width: 900px) {
  .hero-copy { padding:3rem 7vw 1.75rem; }
  .software-page { margin:0 5vw; }
  .publication-row { grid-template-columns:1fr; }
  .engagement-section-heading { grid-template-columns:1fr; }
  .engagement-item { grid-template-columns:64px minmax(0,1fr) 180px; }
  .team-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .team-grid-featured { grid-template-columns:1fr; }
  .team-card-pi { grid-template-columns:minmax(220px,.75fr) minmax(0,1.25fr); }
  .publication-metrics { white-space:normal; }
  .software-editorial-note { grid-template-columns:1fr; }
  .software-editorial-note .software-page-date { white-space:normal; }
  .github-software-grid { grid-template-columns:1fr; }
  .github-software-card { display:grid; grid-template-columns:76px minmax(0,1fr); grid-template-rows:auto; }
  .software-card-top { display:contents; }
  .software-logo-frame { grid-column:1; grid-row:1; width:76px; height:76px; }
  .software-identity { grid-column:2; grid-row:1; }
  .software-description, .software-metrics, .software-citation, .software-card-footer { grid-column:1 / -1; grid-row:auto; }
  .hero-copy h1 { font-size:clamp(2.45rem,6.2vw,3.2rem); max-width:650px; margin-bottom:1.25rem; }
  .hero-copy > p:not(.eyebrow) { max-width:650px; }
  .hero-copy .button { margin-top:.9rem; }
  .hero-actions { flex-wrap:wrap; margin-top:.5rem; }
  .hero-actions > p { flex-wrap:wrap; }
  .hero-actions .button { margin-top:.4rem; }
  .hero-copy::before { width:72%; right:-5vw; top:8rem; opacity:.72; }
  .hero-copy h1 { max-width:72%; }
  .hero-copy > p:not(.eyebrow) { max-width:68%; }
  .signal-strip, .question-grid, .feature-grid, .people-teaser, .three-col, .software-grid, .profile-placeholder-grid { grid-template-columns:1fr; }
  .funders-grid { flex-direction:row; flex-wrap:nowrap; gap:1rem; }
  .funders-grid > p { gap:1rem; }
  .funder-card { width:min(42vw, 170px); padding:.25rem; }
  .funder-logo { max-width:100%; height:68px; }
  .funder-mur { height:76px; }
  .signal-item, .question-card, .question-card + .question-card { border-right:0; border-bottom:1px solid var(--line); padding:2rem 0; }
  .signal-item { padding-left:6vw; padding-right:6vw; }
  .question-card { min-height:0; }
  .feature-list { margin-top:2rem; }
  .page-intro {
    min-height: 520px;
    padding: 4.5rem 8vw 15rem;
    justify-content: flex-start;
    background-image:
      linear-gradient(180deg, rgba(248,244,236,1) 0%, rgba(248,244,236,.96) 48%, rgba(248,244,236,.12) 78%),
      url("content/images/home-hero.png");
    background-position: 62% center;
  }
  .research-tech-grid, .research-pipeline-grid { grid-template-columns:1fr; }
  .collaborators-logos { grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
  .collaborators-logos a { min-height:88px; padding:.5rem; }
  .project-body { grid-template-columns:1fr; padding-left:4.75rem; }
  .project-copy { max-width:720px; }
  .pipeline-step, .pipeline-step + .pipeline-step { padding:1.5rem 0; border-right:0; border-bottom:1px solid rgba(21,35,29,.2); min-height:0; }
  .pipeline-step:last-child { border-bottom:0; }
}

@media (max-width: 560px) {
  .publications-toolbar { align-items:flex-start; flex-direction:column; }
  .publications-sort { align-items:flex-start; flex-wrap:wrap; }
  .publication-year-filter { width:100%; margin: .4rem 0 0; }
  .engagement-heading, .engagement-section { padding-left:6vw; padding-right:6vw; }
  .engagement-item { grid-template-columns:1fr; gap:.5rem; }
  .engagement-video { width:min(100%,320px); margin-top:.7rem; }
  .team-heading, .team-section { padding-left:6vw; padding-right:6vw; }
  .team-grid { grid-template-columns:1fr; }
  .team-card-pi { grid-template-columns:1fr; grid-template-rows:320px auto; max-height:none; }
  body { font-size:16px; }
  h1 { font-size:2.4rem; }
  h2 { font-size:2rem; }
  .hero-copy { padding:3rem 6vw 2rem; }
  .hero-copy h1 { font-size:2.55rem; line-height:1.08; }
  .hero-copy > p:not(.eyebrow) { font-size:1rem; }
  .hero { display:flex; flex-direction:column; }
  .hero-copy { order:1; min-height:0; padding-bottom:1rem; }
  .hero-copy::before { position:relative; display:block; z-index:0; width:100%; top:auto; right:auto; margin:0 0 1rem; opacity:1; }
  .hero-copy h1,
  .hero-copy > p:not(.eyebrow) { max-width:100%; }
  .section-wrap { padding:4rem 6vw; }
  .page-intro { padding:4rem 6vw 13rem; min-height:500px; }
  .research-technical, .research-pipeline, .collaborators-section { padding-left:6vw; padding-right:6vw; }
  .projects-page { padding-left:6vw; padding-right:6vw; }
  .project-card summary { grid-template-columns:2rem minmax(0,1fr) 2rem; gap:.75rem; }
  .project-body { padding-left:2.75rem; }
  .project-facts { grid-template-columns:1fr; }
  .project-facts div:nth-child(odd) { margin-right:0; }
  .content-note, main > h2, main > h3, main > p, main > .three-col, main > .software-grid, main > .profile-placeholder-grid { margin-left:6vw; margin-right:6vw; }
  .navbar { min-height:66px; }
}
