/* V17 preserves the circular composition and moves navigation into its numbered nodes. */
.bio-loop{padding-top:85px}
.bio-loop-heading{display:block}
.bio-loop-heading h2{margin-bottom:22px}
.bio-loop-heading>p:last-child{max-width:750px;font-size:20px;margin:0;line-height:1.55}
.bio-loop-layout{gap:55px;margin-top:15px}
.bio-loop-number-controls{position:absolute;inset:0 0 auto;aspect-ratio:1;display:block;padding:0;border:0;overflow:visible;pointer-events:none}
.bio-loop-number-controls button{position:absolute;transform:translate(-50%,-50%);width:44px;height:44px;min-height:44px;padding:0;border:0!important;border-radius:50%;background:transparent!important;pointer-events:auto;display:grid;place-items:center}
.bio-loop-number-controls button span{font-size:0;color:transparent}
.bio-loop-number-controls button:focus-visible{outline:2px solid #e3d5ad;outline-offset:2px}
.bio-loop-panel{position:relative;min-height:300px;padding:12px 0 115px}
.bio-loop-panel h3{font-size:clamp(30px,3vw,42px);max-width:480px;margin-bottom:18px}
.bio-loop-kicker{font-size:12px;margin-bottom:18px;letter-spacing:.1em}
.bio-loop-description{font-size:18px;line-height:1.6;max-width:460px}
.bio-loop-panel .paired-spectra{position:absolute;bottom:0;left:0;width:min(100%,430px);box-sizing:border-box;margin:0}
.bio-loop-panel .paired-spectra svg{height:26px}
.bio-loop-transport{display:flex;align-items:center;justify-content:center;gap:18px;margin:14px 0 0}
.bio-loop-timing{display:block;width:90px;height:2px;background:#d4e7dc26;overflow:hidden;border-radius:5px}
.bio-loop-timing i{display:block;width:100%;height:100%;transform:scaleX(0);transform-origin:left;background:linear-gradient(90deg,#a6d5ba,#ddbe8c,#b6a1d4,#95cbd0)}
.bio-loop-play{display:flex;align-items:center;gap:7px;border:0;background:transparent;color:#b7cdbf;font-family:inherit;font-size:12px;min-height:44px;padding:5px 8px;cursor:pointer}
.bio-loop-play svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.bio-loop-centre{transition:opacity .55s .75s;width:47%;padding:15px 10px}
.bio-loop-centre strong{font-size:clamp(22px,2.3vw,32px)}
.bio-loop-centre span{font-size:11px}
.bio-loop[data-loop-stage="0"] .bio-loop-centre{opacity:0;transition-delay:0s}
.bio-loop[data-loop-stage="0"] .loop-signature-web{opacity:.55}
.bio-loop[data-loop-stage="0"] .loop-signature-bars line{stroke-dasharray:1;animation:loop-bar-draw 1s var(--delay) both}
.bio-loop[data-loop-stage="1"] .loop-signature-web path{stroke-dasharray:1;animation:loop-web-draw 1.3s var(--delay) both}
.bio-loop[data-loop-stage="2"] .bio-loop-centre{filter:drop-shadow(0 0 12px #c2dabc22)}
.bio-loop[data-loop-stage="4"] .loop-signature-web{animation:loop-refine 1.7s ease-in-out}
.loop-paused .bio-loop-signature *{animation:none!important}
@keyframes loop-bar-draw{from{stroke-dashoffset:1;opacity:0}to{stroke-dashoffset:0;opacity:.9}}
@keyframes loop-web-draw{from{stroke-dashoffset:1;opacity:0}to{stroke-dashoffset:0;opacity:.22}}
@keyframes loop-refine{0%{opacity:.5}55%{opacity:1.5;transform:rotate(.8deg);transform-origin:300px 300px}100%{opacity:1;transform:rotate(0)}}
@media(max-width:950px){.bio-loop-layout{gap:25px}.bio-loop-panel h3{font-size:32px}.bio-loop-description{font-size:17px}}
@media(max-width:650px){
.bio-loop{padding:58px 0 40px}
.bio-loop-heading h2{font-size:40px;margin-bottom:18px}
.bio-loop-heading>p:last-child{font-size:16px;line-height:1.5;margin:0}
.bio-loop-layout{gap:6px;margin-top:12px}
.bio-loop-diagram{width:min(100%,345px)}
.bio-loop-reading{width:100%;padding:0}
.bio-loop-number-controls{padding:0;border:0;gap:0;scrollbar-width:none}
.bio-loop-number-controls button{width:44px;height:44px;padding:0;flex:none;border-radius:50%;min-height:44px}
.bio-loop-number-controls button span{font-size:0}
.bio-loop-labels{font-size:18px}
.bio-loop-centre strong{font-size:23px}
.bio-loop-centre span{font-size:10px}
.bio-loop-caption{font-size:10px;margin-top:-4px}
.bio-loop-transport{margin-top:0;gap:12px}
.bio-loop-play{font-size:11px}
.bio-loop-panel{margin:0 24px;padding:13px 0 96px;min-height:265px;box-sizing:border-box}
.bio-loop-panel h3{font-size:27px;line-height:1.15;margin-bottom:12px}
.bio-loop-kicker{font-size:10px;margin-bottom:9px}
.bio-loop-description{font-size:16px;line-height:1.5}
.bio-loop-panel .paired-spectra{padding:7px 10px;bottom:2px}
.bio-loop-panel .paired-spectra svg{height:21px}
.bio-loop-panel .paired-spectra figcaption{font-size:9px;margin-top:3px}
.bio-loop-ambition{margin-top:12px;padding-top:20px}
}
@media(prefers-reduced-motion:reduce){.bio-loop .bio-loop-signature *{animation:none!important}.bio-loop[data-loop-stage="0"] .loop-signature-bars line{stroke-dashoffset:0;opacity:.9}.bio-loop-centre{transition:none}}

/* Molecular patterns remain legible without changing the reading panel height. */
.bio-loop-panel{min-height:355px;padding-bottom:155px}
.bio-loop-panel .paired-spectra{width:min(100%,470px);padding:12px 14px 9px}
.bio-loop-panel .paired-spectra>div{grid-template-columns:105px 1fr;gap:10px}
.bio-loop-panel .paired-spectra span{font-size:12px;line-height:1.35}
.bio-loop-panel .paired-spectra svg{height:43px}
.bio-loop-panel .paired-spectra figcaption{font-size:11px}
@media(max-width:650px){
.bio-loop-panel{min-height:325px;padding-bottom:148px}
.bio-loop-panel .paired-spectra{padding:10px 11px 8px}
.bio-loop-panel .paired-spectra>div{grid-template-columns:86px 1fr;gap:8px}
.bio-loop-panel .paired-spectra span{font-size:11px}
.bio-loop-panel .paired-spectra svg{height:39px}
.bio-loop-panel .paired-spectra figcaption{font-size:10px}
}

/* Align copy with the signature and reuse the three-axis persona visual. */
@media(min-width:651px){.bio-loop-reading{transform:translateY(-26px)}}
.bio-loop-panel{box-sizing:border-box;min-height:380px;padding-bottom:175px}
.loop-omics{position:absolute;bottom:0;left:0;width:min(100%,470px);box-sizing:border-box;margin:0;padding:12px 14px;border:1px solid #bad4be24;border-radius:16px;background:#c8dfcb05}
.loop-omics[hidden],.paired-spectra[hidden]{display:none!important}
.loop-omics-row{display:flex;align-items:center;gap:14px;min-height:46px}
.loop-omics-row>span{width:105px;flex:none;font-size:13px;color:#bdd0c2}
.loop-omics-bars{display:flex;align-items:center;justify-content:space-between;gap:4px;height:42px;flex:1;min-width:0}
.loop-omics-bars i{display:block;flex:0 1 4px;min-width:2px;border-radius:3px;background:currentColor;transform-origin:center;animation:loop-omics-grow 1.2s cubic-bezier(.22,.8,.2,1) var(--delay) both,loop-omics-drift 2.9s ease-in-out calc(1.2s + var(--motion-delay)) infinite alternate}
@keyframes loop-omics-grow{from{transform:scaleY(.12);opacity:.3}to{transform:scaleY(1);opacity:1}}
@keyframes loop-omics-drift{from{scale:1 .86}to{scale:1 1.08}}
.loop-paused .loop-omics-bars i{animation:none;transform:none;scale:1}
.loop-offscreen .loop-omics-bars i{animation-play-state:paused}
.loop-accessible-caption{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:-1px!important;padding:0!important;border:0}
.bio-loop-panel .paired-spectra svg{height:52px}
.bio-loop-panel .paired-spectra{padding:15px 14px}
@media(max-width:650px){
 .bio-loop-panel{min-height:355px;padding-bottom:162px}
 .loop-omics{padding:9px 11px}
 .loop-omics-row{min-height:44px;gap:8px}
 .loop-omics-row>span{width:86px;font-size:12px}
 .loop-omics-bars{gap:3px}
 .bio-loop-panel .paired-spectra svg{height:48px}
}
@media(prefers-reduced-motion:reduce){.loop-omics-bars i{animation:none!important}}
.loop-reduced .loop-omics-bars i{animation:none!important}

/* V20 leaves the web unobstructed and animates its geometry independently. */
.bio-loop-v20 .loop-v20-visual{position:relative;aspect-ratio:1}
.bio-loop-v20 .loop-v20-signature-title{font-size:clamp(21px,2.1vw,28px);font-weight:400;line-height:1.2;letter-spacing:-.025em;text-align:center;color:#deebe0;margin:0 14px 8px}
.bio-loop-v20 .bio-loop-signature *{animation:none!important;stroke-dasharray:none!important;stroke-dashoffset:0!important}
.bio-loop-v20[data-loop-stage] .loop-signature-web{opacity:1;animation:none;transform:none}
.bio-loop-v20 .bio-loop-art{height:auto;width:100%}
@media(max-width:900px){.bio-loop-v20 .loop-v20-signature-title{font-size:22px;margin:0 22px 8px}}
