/* Fine process motion. Illustrative only; labels and curves are not measured data. */
.process-art .dna-trace{stroke-dasharray:.22 .78;animation:process-dna 4.8s linear infinite}
.process-art .dna-rungs{animation:process-breathe 3.2s ease-in-out infinite}
.process-art .plasmid-orbit{transform-origin:193px 89px;animation:process-orbit 8s linear infinite}
.process-art .cell-line{stroke-dasharray:1;animation:process-draw 4.5s ease-in-out infinite}
.process-art .process-flow{stroke-dasharray:3 9;animation:process-flow 1.8s linear infinite}
.process-art .flow-delayed{animation-delay:-.9s}
.process-art .flow-line{stroke-dasharray:2 6;animation:process-flow 2.4s linear infinite}
.process-art .impeller{transform-origin:177px 117px;animation:process-stir 1.8s linear infinite}
.process-art .bubble{animation:process-bubble 3.8s linear infinite}
.process-art .bubble-b{animation-delay:-1.3s}.process-art .bubble-c{animation-delay:-2.6s}
.process-art .bubble-d{animation-delay:-.7s}.process-art .bubble-e{animation-delay:-2s}
.process-art .mixing-wave{animation:process-breathe 2.2s ease-in-out infinite}
.process-art .sensor-halo{transform-box:fill-box;transform-origin:center;animation:process-sensor 3s ease-out infinite}
.process-art .sensor-delay{animation-delay:-1.5s}.process-art .sensor-flow{animation-duration:3s}
.process-art .elution-band{animation:process-elute 5.8s ease-in-out infinite}
.process-art .filter-flow{animation:process-filter 2s linear infinite}
.process-art .filter-drop{animation:process-drop 2.8s ease-in infinite}
.process-art .chrom-curve{stroke-dasharray:1;animation:process-draw 6.2s ease-in-out infinite}
.process-art .chrom-highlight{stroke-dasharray:1;animation:process-draw 6.2s ease-in-out infinite}
.process-art .identity-scan{animation:process-scan 3.2s ease-in-out infinite alternate}
.process-art .identity-ring{animation:process-breathe 2.6s ease-in-out infinite}
.process-art .purity-bar{transform-origin:center 77px;animation:process-bars 3.4s ease-in-out infinite}
.process-art .purity-bar:nth-child(2n){animation-delay:-1s}.process-art .purity-bar:nth-child(3n){animation-delay:-2s}
.process-art .activity-trace{stroke-dasharray:1;animation:process-draw 4.6s ease-in-out infinite}
.process-art .stability-curve{stroke-dasharray:1;animation:process-draw 6.4s ease-in-out infinite}
.process-art .stability-scan{animation:process-plot-scan 6.4s ease-in-out infinite}
/* Paused by default: JavaScript grants motion only to the visible, active diagram. */
.process-art *{animation-play-state:paused!important}
.process-illustration.is-animating .process-art *,.stage.is-animating .process-art *{animation-play-state:running!important}
.motion-paused .process-art *,.reduce-motion .process-art *{animation-play-state:paused!important}
@keyframes process-dna{to{stroke-dashoffset:-1}}
@keyframes process-orbit{to{transform:rotate(360deg)}}
@keyframes process-breathe{0%,100%{opacity:1}50%{opacity:.45}}
@keyframes process-flow{to{stroke-dashoffset:-48}}
@keyframes process-stir{0%{transform:scaleX(1)}25%{transform:scaleX(.18)}50%{transform:scaleX(-1)}75%{transform:scaleX(-.18)}100%{transform:scaleX(1)}}
@keyframes process-bubble{0%{transform:translateY(12px);opacity:0}18%{opacity:1}80%{opacity:.7}100%{transform:translateY(-56px);opacity:0}}
@keyframes process-sensor{0%{transform:scale(.85);opacity:.7}100%{transform:scale(1.25);opacity:0}}
@keyframes process-elute{0%,10%{transform:translateY(-18px);opacity:.45}75%{transform:translateY(25px);opacity:1}100%{transform:translateY(25px);opacity:0}}
@keyframes process-filter{to{stroke-dashoffset:-36}}
@keyframes process-drop{0%,20%{transform:translateY(-5px);opacity:0}40%{opacity:1}100%{transform:translateY(12px);opacity:0}}
@keyframes process-draw{0%,8%{stroke-dashoffset:1}70%,100%{stroke-dashoffset:0}}
@keyframes process-scan{to{transform:translateY(36px)}}
@keyframes process-bars{0%,100%{transform:scaleY(1);opacity:1}50%{transform:scaleY(.7);opacity:.55}}
@keyframes process-plot-scan{0%,8%{transform:translateX(0);opacity:0}15%{opacity:.6}80%{transform:translateX(275px);opacity:.6}100%{transform:translateX(275px);opacity:0}}
@media(prefers-reduced-motion:reduce){.process-art *{animation:none!important}}
/* Preserve the supplied logo as provenance; use the current presentation wordmark. */
.brand{gap:10px}.brand img{width:32px!important;height:32px!important;object-fit:cover;object-position:left;clip-path:inset(0 0 0 0)}
.brand .brand-mark{width:32px;height:32px;overflow:hidden;flex:none;display:block}.brand .brand-mark img{max-width:none;width:auto!important;height:32px!important;object-fit:initial}
.brand-wordmark{font-size:17px;line-height:1.1;letter-spacing:-.035em;color:#17385D;font-weight:650;white-space:nowrap}
.brand-wordmark small{display:block;font-size:8px;letter-spacing:.2em;font-weight:500;margin-top:4px}
.footer-brand{display:flex;align-items:center;gap:13px}.footer-brand>img{width:110px;height:auto}.footer-brand .brand-wordmark{font-size:21px}
@media(max-width:700px){.brand-wordmark{font-size:15px}.brand-wordmark small{font-size:7px}.brand{gap:8px}.footer-brand .brand-wordmark{font-size:19px}}

/* Species selectors retain the existing product-family composition. */
.species-select{font:inherit;color:inherit;background:none;text-align:left;border:0;padding:4px 0;cursor:pointer;border-bottom:2px solid transparent}
.species-select.is-active{border-color:var(--yellow)}.species-select:focus-visible{outline:2px solid var(--blue);outline-offset:4px}

@media(max-width:700px){.product-image-frame{aspect-ratio:1400/788;display:block;background:#fff}.product-image-frame img{aspect-ratio:1400/788;width:100%;height:auto;transform:none}}
