:root{
  --plum:#5E2B5C;
  --plum-deep:#45203F;
  --orchid:#C27BB8;
  --orchid-light:#E3B5DC;
  --eosin:#C27BB8;
  --eosin-pale:#F4EEF3;
  --ground:#FBF9FB;
  --paper:#FFFFFF;
  --ink:#1C1320;
  --muted:#5B5160;
  --line:#E9E0E8;
  --serif:'Newsreader', 'Iowan Old Style', Georgia, serif;
  --sans:'Hanken Grotesk', 'Helvetica Neue', Helvetica, sans-serif;
  --wrap:1180px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--sans);font-size:1.0625rem;line-height:1.6;-webkit-font-smoothing:antialiased}
img,canvas,svg{max-width:100%;display:block}
a{color:var(--plum);text-underline-offset:3px}
a:hover{color:var(--plum-deep)}
:focus-visible{outline:3px solid var(--plum);outline-offset:3px;border-radius:2px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Header */
.site-header{background:var(--ground);border-bottom:1px solid var(--line)}
.site-header .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 32px;padding-top:18px;padding-bottom:18px}
.wordmark{font-family:var(--serif);font-size:1.75rem;font-weight:500;letter-spacing:-0.01em;color:var(--plum);text-decoration:none;line-height:1}
.nav{display:flex;flex-wrap:wrap;align-items:center;gap:4px 28px;font-size:0.95rem;font-weight:500}
.nav a{color:var(--ink);text-decoration:none;padding:12px 0}
.nav a:hover{color:var(--plum)}
.nav a[aria-current="page"]{color:var(--plum);text-decoration:underline;text-decoration-thickness:2px}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 24px;border-radius:999px;font-weight:600;font-size:1rem;text-decoration:none;border:1.5px solid var(--plum);transition:background-color .15s ease,color .15s ease}
.btn-solid{background:var(--plum);color:#fff}
.btn-solid:hover{background:var(--plum-deep);border-color:var(--plum-deep);color:#fff}
.btn-line{background:transparent;color:var(--plum)}
.btn-line:hover{background:var(--eosin-pale);color:var(--plum-deep)}
.btn-light{background:#fff;color:var(--plum);border-color:#fff}
.btn-light:hover{background:var(--eosin-pale);color:var(--plum-deep)}
.nav .btn{padding:10px 20px;min-height:44px;color:#fff}
.nav .btn:hover{color:#fff}

/* Type */
h1,h2,h3{margin:0;font-weight:400}
.display{font-family:var(--serif);font-weight:400;font-size:clamp(2.6rem,6vw,4.75rem);line-height:1.04;letter-spacing:-0.02em}
.h2{font-family:var(--serif);font-weight:400;font-size:clamp(2rem,3.6vw,2.9rem);line-height:1.12;letter-spacing:-0.015em}
.h3{font-family:var(--sans);font-weight:600;font-size:1.125rem;line-height:1.35}
.lede{font-size:clamp(1.15rem,1.6vw,1.3rem);line-height:1.55;color:var(--muted);max-width:36em}
p{margin:0}
.muted{color:var(--muted)}

/* Hero */
.hero{padding:72px 0 88px}
.hero .wrap{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:56px;align-items:center}
.hero-copy{display:flex;flex-direction:column;gap:28px}
.actions{display:flex;flex-wrap:wrap;gap:12px}
.figure{margin:0;display:flex;flex-direction:column;gap:14px}
.organoid{width:100%;aspect-ratio:1/1}
.figcap{font-family:var(--serif);font-style:italic;font-size:0.98rem;color:var(--muted);max-width:30em}
.figcap b{font-style:normal;font-weight:600;color:var(--ink)}

/* Sections */
.section{padding:104px 0}
.section-paper{background:var(--paper);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.split{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:40px 72px}
.split-head{display:flex;flex-direction:column;gap:18px}
.points{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.points li{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:12px 40px;padding:28px 0;border-top:1px solid var(--line)}
.points li:last-child{border-bottom:1px solid var(--line)}

/* Steps */
.steps{list-style:none;margin:56px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:32px;position:relative}
.steps::before{content:"";position:absolute;top:22px;left:22px;right:22px;height:1.5px;background:var(--eosin)}
.step{position:relative;display:flex;flex-direction:column;gap:12px}
.step-num{width:44px;height:44px;border-radius:50%;background:var(--paper);border:1.5px solid var(--plum);color:var(--plum);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:1.15rem;position:relative}
.section-paper .step-num{background:var(--paper)}
.below-link{margin-top:48px}

/* Offerings */
.offers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:56px}
.offer{padding:44px;border-radius:24px;display:flex;flex-direction:column;gap:16px;min-height:260px}
.offer-a{background:var(--eosin-pale)}
.offer-b{background:var(--plum);color:#fff}
.offer-b .muted{color:var(--orchid-light)}
.offer .h2{font-size:clamp(1.6rem,2.6vw,2.1rem)}

/* Team */
.team{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;margin-top:56px}
.person{display:flex;flex-direction:column;gap:14px}
.avatar{width:112px;height:112px;border-radius:50%;background:var(--eosin-pale);border:1.5px solid var(--eosin);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:2.1rem;color:var(--plum)}
.role{color:var(--plum);font-weight:500;font-size:0.97rem}
.origin{margin-top:56px;padding-top:28px;border-top:1px solid var(--line);font-family:var(--serif);font-size:1.25rem;color:var(--muted)}

/* Contact band */
.band{background:var(--plum);color:#fff;padding:96px 0}
.band .wrap{display:flex;flex-wrap:wrap;gap:32px 56px;align-items:flex-end;justify-content:space-between}
.band .h2{max-width:14em}
.band p{color:var(--orchid-light)}
.band a:not(.btn){color:#fff}

/* Footer */
.site-footer{padding:32px 0;font-size:0.92rem;color:var(--muted)}
.site-footer .wrap{display:flex;flex-wrap:wrap;gap:12px 32px;justify-content:space-between}
.site-footer a{color:var(--muted)}

/* Platform page */
.page-hero{padding:80px 0 72px}
.page-hero .wrap{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,0.8fr);gap:56px;align-items:center}
.table-box{overflow-x:auto;margin-top:48px;background:var(--paper);border:1px solid var(--line);border-radius:20px}
table{border-collapse:collapse;width:100%;min-width:720px;font-size:0.98rem}
th,td{padding:18px 22px;text-align:left;vertical-align:top}
thead th{font-weight:600;font-size:0.92rem;color:var(--muted);border-bottom:1px solid var(--line)}
tbody tr+tr th,tbody tr+tr td{border-top:1px solid var(--line)}
tbody th{font-weight:500}
td{color:var(--muted)}
tr.ours{background:var(--eosin-pale)}
tr.ours th{color:var(--plum);font-weight:600}
tr.ours td{color:var(--ink)}
.table-note{margin-top:16px;font-size:0.92rem;color:var(--muted);max-width:52em}
.detail-steps{list-style:none;margin:48px 0 0;padding:0}
.detail-steps li{display:grid;grid-template-columns:44px minmax(0,1.3fr) minmax(0,1fr);gap:16px 40px;padding:32px 0;border-top:1px solid var(--line);align-items:start}
.detail-steps li:last-child{border-bottom:1px solid var(--line)}
.detail-steps .meta{font-size:0.97rem;color:var(--muted)}
.detail-steps .meta strong{color:var(--ink);font-weight:600}
.faq{max-width:780px}
.faq details{border-top:1px solid var(--line);padding:6px 0}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:24px;min-height:56px;font-weight:600;font-size:1.08rem}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--serif);font-size:1.6rem;color:var(--plum);line-height:1;transition:transform .2s ease}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{padding:0 0 22px;color:var(--muted);max-width:42em}
@media (prefers-reduced-motion:reduce){.faq summary::after{transition:none}}

/* Contact page */
.contact .wrap{display:grid;grid-template-columns:minmax(0,0.9fr) minmax(0,1.3fr);gap:56px;padding-top:80px;padding-bottom:104px;align-items:start}
.next{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:14px;counter-reset:n}
.next li{display:grid;grid-template-columns:32px 1fr;gap:12px;color:var(--muted);counter-increment:n}
.next li::before{content:counter(n);width:28px;height:28px;border-radius:50%;border:1.5px solid var(--plum);color:var(--plum);font-family:var(--serif);font-size:0.95rem;display:flex;align-items:center;justify-content:center}
.notice{background:var(--eosin-pale);border-radius:16px;padding:20px 24px;font-size:0.97rem;color:var(--plum-deep)}
.form-card{background:var(--paper);border:1px solid var(--line);border-radius:24px;padding:44px}
.form{display:flex;flex-direction:column;gap:22px}
.row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.field{display:flex;flex-direction:column;gap:7px}
.field label,.field legend{font-size:0.95rem;font-weight:600}
.req{color:var(--muted);font-weight:400}
input[type=text],input[type=email],select,textarea{font:inherit;font-size:1rem;color:var(--ink);padding:12px 14px;border:1.5px solid #CFC3CB;border-radius:10px;background:#fff;width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--plum);outline:none;box-shadow:0 0 0 3px var(--eosin-pale)}
textarea{resize:vertical;min-height:140px}
fieldset{border:0;margin:0;padding:0}
.radio{display:flex;align-items:center;gap:12px;min-height:44px;font-weight:400}
.radio input{width:20px;height:20px;accent-color:var(--plum);margin:0}
.hint{font-size:0.9rem;color:var(--muted)}
.hidden-field{display:none}
.form .btn{align-self:flex-start;cursor:pointer;font-family:inherit}

/* Responsive */
@media (max-width:960px){
  .hero .wrap,.page-hero .wrap,.contact .wrap{grid-template-columns:1fr}
  .hero .figure{max-width:520px}
  .page-hero .figure{max-width:320px}
  .split{grid-template-columns:1fr}
  .steps{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:44px}
  .steps::before{display:none}
  .team{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:640px){
  .wrap{padding:0 20px}
  .section{padding:72px 0}
  .hero{padding:48px 0 64px}
  .points li,.detail-steps li{grid-template-columns:1fr}
  .steps,.offers,.team,.row{grid-template-columns:1fr}
  .offer,.form-card{padding:28px}
  .band{padding:72px 0}
}
.field .radio{font-weight:400}

/* Capabilities */
.caps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:56px}
.cap{display:flex;flex-direction:column;gap:16px;padding:40px;border-radius:24px;text-decoration:none;color:var(--ink);background:var(--eosin-pale);border:1.5px solid transparent;transition:border-color .15s ease}
.cap:hover{border-color:var(--plum);color:var(--ink)}
.cap .h2{font-size:clamp(1.6rem,2.6vw,2.1rem)}
.cap-lead{grid-column:1 / -1;background:var(--plum);color:#fff;padding:52px}
.cap-lead:hover{color:#fff;border-color:var(--plum-deep)}
.cap-lead .muted{color:var(--orchid-light)}
.cap-more{margin-top:auto;font-weight:600;text-decoration:underline;text-underline-offset:3px}
.cap-lead .cap-more{color:#fff}
.cap:not(.cap-lead) .cap-more{color:var(--plum)}
.collab{margin-top:40px;padding:32px 0 0;border-top:1px solid var(--line);display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:16px 72px}
.subnav{border-bottom:1px solid var(--line);background:var(--paper)}
.subnav .wrap{display:flex;flex-wrap:wrap;gap:4px 28px;font-size:0.95rem}
.subnav a{color:var(--muted);text-decoration:none;padding:14px 0;border-bottom:2px solid transparent}
.subnav a:hover{color:var(--plum)}
.subnav a[aria-current="page"]{color:var(--plum);border-bottom-color:var(--plum);font-weight:600}
.subnav span{color:var(--ink);font-weight:600;padding:14px 0}
.caveat{margin-top:40px;padding:24px 28px;border-radius:16px;background:var(--eosin-pale);color:var(--plum-deep);max-width:52em}
@media (max-width:960px){.caps{grid-template-columns:1fr}.collab{grid-template-columns:1fr}}
@media (max-width:640px){.cap,.cap-lead{padding:28px}}

/* Logo */
.logo-link{display:inline-flex;align-items:center;padding:6px 0;line-height:0}
.logo-link img{height:38px;width:auto}
.footer-brand{display:inline-flex;align-items:center;gap:10px}
.footer-brand img{width:28px;height:28px}
.organoid-ring{color:var(--plum)}
@media (max-width:640px){.logo-link img{height:32px}}

/* Status labels and science */
.status{display:inline-flex;align-self:flex-start;align-items:center;gap:8px;font-size:0.85rem;font-weight:600;padding:5px 12px;border-radius:999px;background:var(--paper);color:var(--plum);border:1px solid var(--line)}
.status::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--orchid)}
.cap-lead .status{background:rgba(255,255,255,0.12);color:#fff;border-color:rgba(255,255,255,0.25)}
.cap-lead .status::before{background:var(--orchid-light)}
.science{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:40px 72px;align-items:start}
.paper{background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--plum);border-radius:16px;padding:32px;display:flex;flex-direction:column;gap:14px}
.paper .cite{font-family:var(--serif);font-size:1.25rem;line-height:1.35;color:var(--ink)}
.paper .src{font-size:0.95rem;color:var(--muted)}
.focus{margin-top:48px;padding:32px;border-radius:20px;background:var(--eosin-pale);display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:12px 72px}
@media (max-width:960px){.science,.focus{grid-template-columns:1fr}}

/* Headshots */
.headshot{width:136px;height:136px;border-radius:50%;object-fit:cover;border:3px solid var(--eosin-pale);box-shadow:0 0 0 1.5px var(--orchid-light)}

/* Hero note and science stack */
.hero-note{display:flex;flex-wrap:wrap;gap:8px 20px;margin:0;padding:0;list-style:none;font-size:0.95rem;font-weight:600;color:var(--plum)}
.hero-note li{display:flex;align-items:center;gap:8px}
.hero-note li::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--orchid)}
.science-stack{display:flex;flex-direction:column;gap:20px}
.paper .kind{font-size:0.85rem;font-weight:600;color:var(--plum)}

/* Team taglines and expandable bios */
.team-banner{margin:0 0 44px;font-family:var(--serif);font-size:clamp(1.3rem,2.2vw,1.65rem);line-height:1.35;color:var(--ink);max-width:40em}
.tagline{font-size:1rem;color:var(--ink);font-weight:500}
.bio details{margin-top:4px}
.bio summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:7px;min-height:44px;font-size:0.95rem;font-weight:600;color:var(--plum)}
.bio summary::-webkit-details-marker{display:none}
.bio summary::after{content:"+";font-family:var(--serif);font-size:1.3rem;line-height:1;transition:transform .2s ease}
.bio details[open] summary::after{transform:rotate(45deg)}
.bio details p{color:var(--muted);font-size:0.97rem;padding-bottom:10px}
.bio details p+p{padding-top:0}
@media (prefers-reduced-motion:reduce){.bio summary::after{transition:none}}

/* ============ Dark hero variant ============ */
:root{--night:#17101A;--night-2:#211828}
.site-header.dark-top{background:var(--night);border-bottom-color:rgba(255,255,255,0.10)}
.dark-top .nav a{color:#F0E8EE}
.dark-top .nav a:hover{color:var(--orchid-light)}
.dark-top .nav a[aria-current="page"]{color:var(--orchid-light)}
.dark-top .nav .btn{background:#fff;color:var(--plum);border-color:#fff}
.dark-top .nav .btn:hover{background:var(--orchid-light);color:var(--plum-deep)}

.hero-dark{position:relative;overflow:hidden;background:var(--night);color:#fff;isolation:isolate}
.hero-dark::after{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(115% 85% at 76% 45%, rgba(94,43,92,0.42) 0%, rgba(23,16,26,0) 60%), linear-gradient(90deg, var(--night) 0%, rgba(23,16,26,0.92) 34%, rgba(23,16,26,0) 58%)}
.organoid-bleed{position:absolute;z-index:-2;top:50%;right:-6%;transform:translateY(-50%);width:min(880px,62vw);height:auto;aspect-ratio:1/1;opacity:0.78;filter:saturate(1.08)}
.hero-dark-inner{position:relative;display:flex;flex-direction:column;gap:26px;padding:132px 28px 148px;max-width:var(--wrap)}
.eyebrow{margin:0;font-size:0.78rem;font-weight:600;letter-spacing:0.22em;text-transform:uppercase;color:var(--orchid-light)}
.display-xl{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(2.7rem,6.6vw,5.4rem);line-height:1.02;letter-spacing:-0.03em;max-width:22ch}
@media (max-width:640px){.display-xl br{display:none}}
.lede-dark{margin:0;font-size:clamp(1.1rem,1.5vw,1.3rem);line-height:1.5;color:#D9CCD6;max-width:34em}
.btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,0.4)}
.btn-ghost:hover{background:rgba(255,255,255,0.1);color:#fff;border-color:#fff}
.scroll-cue{position:absolute;left:50%;bottom:30px;transform:translateX(-50%);width:22px;height:34px;border:1.5px solid rgba(255,255,255,0.35);border-radius:12px}
.scroll-cue span{position:absolute;left:50%;top:7px;margin-left:-2px;width:4px;height:7px;border-radius:2px;background:var(--orchid-light);animation:cue 1.9s ease-in-out infinite}
@keyframes cue{0%{opacity:0;transform:translateY(0)}30%{opacity:1}100%{opacity:0;transform:translateY(12px)}}

/* Reveal on scroll */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .scroll-cue span{animation:none;opacity:1}
  .reveal{opacity:1;transform:none;transition:none}
}
@media (max-width:860px){
  .hero-dark-inner{padding:88px 20px 104px}
  .organoid-bleed{right:-30%;opacity:0.34;width:min(560px,100vw)}
  .scroll-cue{display:none}
}
