Quorum
CSSA cluster of nodes loses heartbeat quorum when a majority partition drops, triggering an automatic promotion signal to a standby replica cluster.
- Tier
- CSS
- Dependencies
- None
- Duration
- 5.5 s, loops
- Categories
- Icons and micro-interactions
- Use cases
- Errors and warnings, Workflow and approvals
- Industries
- IT services and infrastructure, Cross-industry
- Style
- Technical · light stroke
- Set
- failover
- Tags
- circlegeometriclooppulsering
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-quorum" data-pulsar="failover-quorum" viewBox="0 0 160 96"><rect width="68" height="64" x="18" y="16" stroke="currentColor" stroke-dasharray="2 3" stroke-width="1.2" opacity=".4" rx="6"></rect><g stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"><circle id="failover-quorum-node-a" cx="36" cy="34" r="8" fill="currentColor" fill-opacity=".08"></circle><circle id="failover-quorum-node-b" cx="36" cy="62" r="8" fill="currentColor" fill-opacity=".08"></circle><circle cx="64" cy="48" r="8" fill="currentColor" fill-opacity=".08"></circle><line id="failover-quorum-link-ab" x1="36" x2="36" y1="42" y2="54" opacity=".6"></line><line id="failover-quorum-link-ca" x1="58" x2="43" y1="43" y2="37" opacity=".6"></line><line id="failover-quorum-link-cb" x1="58" x2="43" y1="53" y2="59" opacity=".6"></line></g><path id="failover-quorum-trigger" stroke="var(--pulsar-accent, currentColor)" stroke-dasharray="3 3" stroke-linecap="round" stroke-width="2" d="M86 48h28"></path><g id="failover-quorum-standby" stroke="var(--pulsar-accent, currentColor)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"><circle cx="128" cy="48" r="14" fill="var(--pulsar-accent, currentColor)" fill-opacity=".1"></circle><circle cx="128" cy="48" r="5" fill="var(--pulsar-accent, currentColor)"></circle><circle id="failover-quorum-standby-halo" cx="128" cy="48" r="19" stroke-dasharray="2 3"></circle></g></svg>
animation.css
.pulsar-failover-quorum #failover-quorum-node-a,
.pulsar-failover-quorum #failover-quorum-node-b,
.pulsar-failover-quorum #failover-quorum-link-ab,
.pulsar-failover-quorum #failover-quorum-link-ca,
.pulsar-failover-quorum #failover-quorum-link-cb {
animation: failover-quorum-partition 5500ms ease-in-out infinite;
}
@keyframes failover-quorum-partition {
0%,
28% {
opacity: 1;
}
38%,
82% {
opacity: 0.15;
}
90%,
100% {
opacity: 1;
}
}
.pulsar-failover-quorum #failover-quorum-trigger {
animation: failover-quorum-signal 5500ms ease-in-out infinite;
}
@keyframes failover-quorum-signal {
0%,
34% {
opacity: 0.2;
stroke-dashoffset: 0;
}
42%,
82% {
opacity: 1;
stroke-dashoffset: -12;
}
90%,
100% {
opacity: 0.2;
stroke-dashoffset: 0;
}
}
.pulsar-failover-quorum #failover-quorum-standby {
animation: failover-quorum-standby-state 5500ms ease-in-out infinite;
}
@keyframes failover-quorum-standby-state {
0%,
36% {
opacity: 0.3;
transform: scale(0.9);
}
46%,
82% {
opacity: 1;
transform: scale(1.05);
}
92%,
100% {
opacity: 0.3;
transform: scale(0.9);
}
}
.pulsar-failover-quorum #failover-quorum-standby-halo {
transform-origin: 128px 48px;
animation: failover-quorum-halo-pulse 5500ms ease-out infinite;
}
@keyframes failover-quorum-halo-pulse {
0%,
40% {
opacity: 0;
transform: scale(0.8);
}
48%,
80% {
opacity: 0.85;
transform: scale(1.25);
}
88%,
100% {
opacity: 0;
transform: scale(0.8);
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-failover-quorum * {
animation: none !important;
}
}