Cluster Network Partition
CSSA horizontal line of six cluster nodes fractures down the center as a barrier isolates the topology into two split-brain segments before resolving.
- Tier
- CSS
- Dependencies
- None
- Duration
- 6.4 s, loops
- Categories
- Loaders and spinners
- Use cases
- Loading and waiting, Errors and warnings
- Industries
- IT services and infrastructure, Cross-industry
- Style
- Minimal line · light stroke
- Set
- cluster
- Tags
- looplinedotsui
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" aria-labelledby="cluster-partition-title" class="pulsar pulsar-cluster-partition" data-pulsar="cluster-partition" role="img" viewBox="0 0 160 96"><title id="cluster-partition-title">Six cluster nodes fracturing down the center as an isolating barrier rises during network partition</title><g fill="none" stroke="currentColor" stroke-dasharray="2 3" stroke-width=".5" opacity=".2"><line x1="16" x2="144" y1="36" y2="36"></line><line x1="16" x2="144" y1="60" y2="60"></line></g><g id="cluster-partition-barrier" opacity="0"><line x1="80" x2="80" y1="20" y2="76" fill="none" stroke="currentColor" stroke-width="1.5"></line><line x1="77" x2="83" y1="20" y2="20" fill="none" stroke="currentColor" stroke-width="1.5"></line><line x1="77" x2="83" y1="76" y2="76" fill="none" stroke="currentColor" stroke-width="1.5"></line></g><g id="cluster-partition-fracture" fill="none" stroke="currentColor" stroke-width="1" opacity="0"><line x1="78" x2="82" y1="46" y2="50"></line><line x1="78" x2="82" y1="50" y2="46"></line></g><g id="cluster-partition-left"><line x1="36" x2="72" y1="48" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.2"></line><circle cx="36" cy="48" r="4" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="36" cy="48" r="2" fill="currentColor"></circle><circle cx="54" cy="48" r="4" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="54" cy="48" r="2" fill="currentColor"></circle><circle cx="72" cy="48" r="4.5" fill="none" stroke="currentColor"></circle><circle cx="72" cy="48" r="2" fill="currentColor"></circle></g><line id="cluster-partition-bridge" x1="72" x2="88" y1="48" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.2" opacity="1"></line><g id="cluster-partition-right"><line x1="88" x2="124" y1="48" y2="48" fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.2"></line><circle cx="88" cy="48" r="4.5" fill="none" stroke="currentColor"></circle><circle cx="88" cy="48" r="2" fill="currentColor"></circle><circle cx="106" cy="48" r="4" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="106" cy="48" r="2" fill="currentColor"></circle><circle cx="124" cy="48" r="4" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="124" cy="48" r="2" fill="currentColor"></circle></g></svg>
animation.css
.pulsar-cluster-partition {
--pulsar-accent: currentColor;
}
.pulsar-cluster-partition #cluster-partition-barrier line,
.pulsar-cluster-partition #cluster-partition-fracture line {
stroke: var(--pulsar-accent, currentColor);
}
.pulsar-cluster-partition #cluster-partition-left circle:nth-child(even),
.pulsar-cluster-partition #cluster-partition-right circle:nth-child(even) {
fill: var(--pulsar-accent, currentColor);
}
.pulsar-cluster-partition #cluster-partition-left {
animation: cluster-partition-drift-left 6400ms cubic-bezier(0.16, 1, 0.3, 1) infinite;
}
@keyframes cluster-partition-drift-left {
0%,
28% {
transform: translateX(0);
}
45%,
78% {
transform: translateX(-12px);
}
92%,
100% {
transform: translateX(0);
}
}
.pulsar-cluster-partition #cluster-partition-right {
animation: cluster-partition-drift-right 6400ms cubic-bezier(0.16, 1, 0.3, 1) infinite;
}
@keyframes cluster-partition-drift-right {
0%,
28% {
transform: translateX(0);
}
45%,
78% {
transform: translateX(12px);
}
92%,
100% {
transform: translateX(0);
}
}
.pulsar-cluster-partition #cluster-partition-bridge {
animation: cluster-partition-bridge-snap 6400ms ease-in-out infinite;
}
@keyframes cluster-partition-bridge-snap {
0%,
24% {
opacity: 1;
}
28%,
85% {
opacity: 0;
}
92%,
100% {
opacity: 1;
}
}
.pulsar-cluster-partition #cluster-partition-fracture {
animation: cluster-partition-spark 6400ms ease-out infinite;
}
@keyframes cluster-partition-spark {
0%,
24% {
opacity: 0;
transform: scale(0.5);
}
28% {
opacity: 1;
transform: scale(1.4);
}
35%,
100% {
opacity: 0;
transform: scale(0.5);
}
}
.pulsar-cluster-partition #cluster-partition-barrier {
transform-origin: 80px 48px;
animation: cluster-partition-wall 6400ms ease-in-out infinite;
}
@keyframes cluster-partition-wall {
0%,
28% {
opacity: 0;
transform: scaleY(0);
}
38%,
78% {
opacity: 0.9;
transform: scaleY(1);
}
88%,
100% {
opacity: 0;
transform: scaleY(0);
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-cluster-partition * {
animation: none !important;
}
.pulsar-cluster-partition #cluster-partition-left {
transform: translateX(-12px);
}
.pulsar-cluster-partition #cluster-partition-right {
transform: translateX(12px);
}
.pulsar-cluster-partition #cluster-partition-barrier {
opacity: 0.9;
transform: scaleY(1);
}
.pulsar-cluster-partition #cluster-partition-bridge {
opacity: 0;
}
}