Pulsar
Nine-node interconnected cluster mesh routing data packets diagonally across redundant grid links

Cluster Full Mesh

CSS

A nine-node interconnected cluster topology routes concurrent packet streams along diagonal transmission vectors through a central hub.

Tier
CSS
Dependencies
None
Duration
5.4 s, loops
Categories
Loaders and spinners
Use cases
Loading and waiting, Sync and integration
Industries
SaaS and software, IT services and infrastructure
Style
Minimal line · light stroke
Set
cluster
Tags
loopgridlinedots

Companion assets

The same artwork, not animated. Derived from the entry’s own resting state, so it matches exactly.

Animated
Nine-node interconnected cluster mesh routing data packets diagonally across redundant grid links
CSS tier
Static vector
Cluster Full Mesh, not animated
Download SVG

Code

animation.svg

<svg xmlns="http://www.w3.org/2000/svg" aria-labelledby="cluster-mesh-title" class="pulsar pulsar-cluster-mesh" data-pulsar="cluster-mesh" role="img" viewBox="0 0 160 96"><title id="cluster-mesh-title">Nine-node interconnected cluster mesh routing data packets diagonally across redundant grid links</title><g fill="none" stroke="currentColor" stroke-width=".5" opacity=".2"><line x1="44" x2="116" y1="26" y2="26"></line><line x1="44" x2="116" y1="48" y2="48"></line><line x1="44" x2="116" y1="70" y2="70"></line><line x1="44" x2="44" y1="26" y2="70"></line><line x1="80" x2="80" y1="26" y2="70"></line><line x1="116" x2="116" y1="26" y2="70"></line></g><g fill="none" stroke="currentColor" stroke-width=".6" opacity=".25"><line x1="44" x2="116" y1="26" y2="70"></line><line x1="44" x2="116" y1="70" y2="26"></line><line x1="44" x2="80" y1="48" y2="26"></line><line x1="80" x2="116" y1="26" y2="48"></line><line x1="44" x2="80" y1="48" y2="70"></line><line x1="80" x2="116" y1="70" y2="48"></line></g><line id="cluster-mesh-stream1" x1="44" x2="116" y1="26" y2="70" fill="none" stroke="currentColor" stroke-dasharray="10 32" stroke-linecap="round" stroke-width="1.4"></line><line id="cluster-mesh-stream2" x1="44" x2="116" y1="70" y2="26" fill="none" stroke="currentColor" stroke-dasharray="10 32" stroke-linecap="round" stroke-width="1.4"></line><g id="cluster-mesh-n1"><circle cx="44" cy="26" r="3.5" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="44" cy="26" r="1.5" fill="currentColor"></circle></g><g id="cluster-mesh-n2"><circle cx="80" cy="26" r="3.5" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="80" cy="26" r="1.5" fill="currentColor"></circle></g><g id="cluster-mesh-n3"><circle cx="116" cy="26" r="3.5" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="116" cy="26" r="1.5" fill="currentColor"></circle></g><g id="cluster-mesh-n4"><circle cx="44" cy="48" r="3.5" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="44" cy="48" r="1.5" fill="currentColor"></circle></g><g id="cluster-mesh-n5"><circle cx="80" cy="48" r="4.5" fill="none" stroke="currentColor"></circle><circle cx="80" cy="48" r="2.2" fill="currentColor"></circle></g><g id="cluster-mesh-n6"><circle cx="116" cy="48" r="3.5" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="116" cy="48" r="1.5" fill="currentColor"></circle></g><g id="cluster-mesh-n7"><circle cx="44" cy="70" r="3.5" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="44" cy="70" r="1.5" fill="currentColor"></circle></g><g id="cluster-mesh-n8"><circle cx="80" cy="70" r="3.5" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="80" cy="70" r="1.5" fill="currentColor"></circle></g><g id="cluster-mesh-n9"><circle cx="116" cy="70" r="3.5" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="116" cy="70" r="1.5" fill="currentColor"></circle></g></svg>

animation.css

.pulsar-cluster-mesh {
  --pulsar-accent: currentColor;
}

.pulsar-cluster-mesh #cluster-mesh-stream1,
.pulsar-cluster-mesh #cluster-mesh-stream2 {
  stroke: var(--pulsar-accent, currentColor);
}

.pulsar-cluster-mesh [id^='cluster-mesh-n'] circle:last-child {
  fill: var(--pulsar-accent, currentColor);
}

.pulsar-cluster-mesh #cluster-mesh-stream1 {
  animation: cluster-mesh-diag1 5400ms linear infinite;
}

@keyframes cluster-mesh-diag1 {
  0% {
    stroke-dashoffset: 84;
    opacity: 0.3;
  }
  50% {
    opacity: 1;
  }
  100% {
    stroke-dashoffset: 0;
    opacity: 0.3;
  }
}

.pulsar-cluster-mesh #cluster-mesh-stream2 {
  animation: cluster-mesh-diag2 5400ms linear infinite;
}

@keyframes cluster-mesh-diag2 {
  0% {
    stroke-dashoffset: 0;
    opacity: 0.3;
  }
  50% {
    opacity: 1;
  }
  100% {
    stroke-dashoffset: 84;
    opacity: 0.3;
  }
}

.pulsar-cluster-mesh #cluster-mesh-n5 {
  animation: cluster-mesh-core 5400ms ease-in-out infinite;
}

@keyframes cluster-mesh-core {
  0%,
  100% {
    opacity: 0.7;
    transform: scale(1);
  }
  25%,
  75% {
    opacity: 1;
    transform: scale(1.2);
  }
}

.pulsar-cluster-mesh #cluster-mesh-n1,
.pulsar-cluster-mesh #cluster-mesh-n9 {
  animation: cluster-mesh-tier1 5400ms ease-in-out infinite;
}

@keyframes cluster-mesh-tier1 {
  0%,
  100% {
    opacity: 0.5;
  }
  40% {
    opacity: 1;
  }
}

.pulsar-cluster-mesh #cluster-mesh-n3,
.pulsar-cluster-mesh #cluster-mesh-n7 {
  animation: cluster-mesh-tier2 5400ms ease-in-out infinite;
}

@keyframes cluster-mesh-tier2 {
  0%,
  100% {
    opacity: 0.5;
  }
  60% {
    opacity: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .pulsar-cluster-mesh * {
    animation: none !important;
  }
  .pulsar-cluster-mesh #cluster-mesh-stream1,
  .pulsar-cluster-mesh #cluster-mesh-stream2 {
    stroke-dashoffset: 0;
    opacity: 0.8;
  }
  .pulsar-cluster-mesh #cluster-mesh-n5 {
    opacity: 1;
  }
}

From this family15 in Cluster

See the family