/* Supplied mark and retained pulse/ripple language, scoped to the Plus child.
 * Shared product CSS remains the owner of every outer hero dimension. */
.cbp-hero-logo{background:transparent;overflow:visible}
.cbp-hero-logo::before,.cbp-hero-logo::after{display:none}
.cbp-hero-logo>.cb-logo-vector{display:block;width:100%;height:100%;pointer-events:none}
.cbp-hero-logo .cb-logo-pulse{transform-box:fill-box;transform-origin:center;animation:cbpLogoPulse 3.6s ease-in-out infinite;animation-play-state:paused}
.cbp-hero-logo .cb-logo-ripple{transform-box:fill-box;transform-origin:center;opacity:0;animation:cbpLogoRipple 3.6s ease-out infinite;animation-play-state:paused}
.cbp-hero-logo .cb-logo-signal{fill:none;stroke:#63d7d4;stroke-width:3;stroke-linecap:round;stroke-dasharray:8 92;opacity:0;animation:cbpLogoTrace 14s linear infinite;animation-play-state:paused}
.cbp-hero-logo .cb-logo-signal+.cb-logo-signal{animation-delay:-7s}
.cbp-hero-logo.ip-animation-active :is(.cb-logo-pulse,.cb-logo-ripple,.cb-logo-signal){animation-play-state:running}
@keyframes cbpLogoPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@keyframes cbpLogoRipple{0%,50%{opacity:0;transform:scale(1.015)}55%{opacity:.42;transform:scale(1.025)}95%,100%{opacity:0;transform:scale(1.28)}}
@keyframes cbpLogoTrace{0%{stroke-dashoffset:100;opacity:0}18%{opacity:0}28%,65%{opacity:.7}85%,100%{stroke-dashoffset:0;opacity:0}}
@media(prefers-reduced-motion:reduce){
 .cbp-hero-logo .cb-logo-pulse{animation:none;transform:none}
 .cbp-hero-logo .cb-logo-ripple{display:none;animation:none;opacity:0}
 .cbp-hero-logo .cb-logo-signal{display:none;animation:none}
}
