Primary
CSSA solid primary server node indicator blinks red, dims, and transfers its glowing activity ring to an adjacent standby server.
- Tier
- CSS
- Dependencies
- None
- Duration
- 5.5 s, loops
- Categories
- Icons and micro-interactions
- Use cases
- Errors and warnings, Notifications
- Industries
- SaaS and software, IT services and infrastructure
- Style
- Technical · light stroke
- Set
- failover
- Tags
- circleglowlooppulsering
Companion assets
The same artwork, not animated. Derived from the entry’s own resting state, so it matches exactly.
Code
animation.svg
<svg xmlns="http://www.w3.org/2000/svg" fill="none" aria-hidden="true" class="pulsar pulsar-failover-primary" data-pulsar="failover-primary" viewBox="0 0 160 96"><g stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"><rect id="failover-primary-box-p" width="48" height="56" x="22" y="20" fill="currentColor" fill-opacity=".04" rx="4"></rect><line x1="28" x2="44" y1="28" y2="28" opacity=".4"></line><line x1="28" x2="40" y1="34" y2="34" opacity=".4"></line><rect id="failover-primary-box-s" width="48" height="56" x="90" y="20" fill="currentColor" fill-opacity=".04" rx="4"></rect><line x1="96" x2="112" y1="28" y2="28" opacity=".4"></line><line x1="96" x2="108" y1="34" y2="34" opacity=".4"></line><line x1="70" x2="90" y1="48" y2="48" stroke-dasharray="2 3" opacity=".5"></line></g><g id="failover-primary-core-p"><circle cx="46" cy="52" r="10" stroke="currentColor" stroke-width="1.5"></circle><circle id="failover-primary-pulse-p" cx="46" cy="52" r="15" stroke="currentColor" stroke-width="1.2" opacity=".6"></circle><circle cx="46" cy="52" r="4" fill="currentColor"></circle></g><g id="failover-primary-core-s"><circle cx="114" cy="52" r="10" stroke="var(--pulsar-accent, currentColor)" stroke-width="1.5"></circle><circle id="failover-primary-pulse-s" cx="114" cy="52" r="15" stroke="var(--pulsar-accent, currentColor)" stroke-width="1.2"></circle><circle cx="114" cy="52" r="4" fill="var(--pulsar-accent, currentColor)"></circle></g><circle id="failover-primary-spark" cx="80" cy="48" r="3" fill="var(--pulsar-accent, currentColor)"></circle></svg>
animation.css
.pulsar-failover-primary #failover-primary-core-p {
transform-origin: 46px 52px;
animation: failover-primary-p-state 5500ms ease-in-out infinite;
}
@keyframes failover-primary-p-state {
0%,
25% {
opacity: 1;
transform: scale(1);
}
30%,
36% {
opacity: 0.4;
transform: scale(0.95);
}
42%,
82% {
opacity: 0.2;
transform: scale(0.9);
}
92%,
100% {
opacity: 1;
transform: scale(1);
}
}
.pulsar-failover-primary #failover-primary-pulse-p {
transform-origin: 46px 52px;
animation: failover-primary-p-ring 5500ms ease-out infinite;
}
@keyframes failover-primary-p-ring {
0%,
24% {
transform: scale(1);
opacity: 0.6;
}
28%,
88% {
transform: scale(0.6);
opacity: 0;
}
94%,
100% {
transform: scale(1);
opacity: 0.6;
}
}
.pulsar-failover-primary #failover-primary-core-s {
transform-origin: 114px 52px;
animation: failover-primary-s-state 5500ms ease-in-out infinite;
}
@keyframes failover-primary-s-state {
0%,
38% {
opacity: 0.25;
transform: scale(0.9);
}
46%,
82% {
opacity: 1;
transform: scale(1);
}
92%,
100% {
opacity: 0.25;
transform: scale(0.9);
}
}
.pulsar-failover-primary #failover-primary-pulse-s {
transform-origin: 114px 52px;
animation: failover-primary-s-ring 5500ms ease-out infinite;
}
@keyframes failover-primary-s-ring {
0%,
42% {
transform: scale(0.7);
opacity: 0;
}
50%,
78% {
transform: scale(1.25);
opacity: 0.8;
}
86%,
100% {
transform: scale(0.7);
opacity: 0;
}
}
.pulsar-failover-primary #failover-primary-spark {
animation: failover-primary-handover 5500ms cubic-bezier(0.4, 0, 0.2, 1) infinite;
}
@keyframes failover-primary-handover {
0%,
34% {
opacity: 0;
transform: translateX(-24px);
}
38% {
opacity: 1;
}
46% {
opacity: 1;
transform: translateX(24px);
}
50%,
100% {
opacity: 0;
transform: translateX(28px);
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-failover-primary * {
animation: none !important;
}
}