Pulsar

Plug

CSS

A container outline with a small leak at the bottom has a wedge-like plug shape slide into the opening, stopping a slow stream of dots.

Tier
CSS
Dependencies
None
Duration
4.5 s, loops
Categories
Icons and micro-interactions
Use cases
Errors and warnings, Security and trust
Industries
SaaS and software, Security and identity
Style
Minimal line · light stroke
Set
patch
Tags
particlesgeometricminimaluiglow

Companion assets

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

Animated
CSS tier
Static vector
Plug, not animated
Download SVG

Code

animation.svg

<svg xmlns="http://www.w3.org/2000/svg" fill="none" aria-hidden="true" class="pulsar pulsar-patch-plug" data-pulsar="patch-plug" viewBox="0 0 160 96"><path stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M44 26h72v36H86v4H74v-4H44Z" opacity=".6"></path><circle cx="80" cy="72" r="2" fill="var(--pulsar-accent, currentColor)" class="patch-plug-drop-1"></circle><circle cx="80" cy="80" r="1.5" fill="var(--pulsar-accent, currentColor)" class="patch-plug-drop-2"></circle><g class="patch-plug-wedge"><polygon fill="var(--pulsar-accent, currentColor)" fill-opacity=".3" stroke="var(--pulsar-accent, currentColor)" stroke-linejoin="round" stroke-width="2" points="73,78 87,78 85,63 75,63"></polygon><line x1="72" x2="88" y1="78" y2="78" stroke="var(--pulsar-accent, currentColor)" stroke-linecap="round" stroke-width="2"></line></g><circle cx="80" cy="64" r="8" stroke="var(--pulsar-accent, currentColor)" stroke-width="1.5" class="patch-plug-seal-glow"></circle></svg>

animation.css

.pulsar-patch-plug {
  display: block;
  overflow: visible;
}
.pulsar-patch-plug .patch-plug-drop-1 {
  animation: patch-plug-drop-1-anim 4500ms ease infinite;
}
.pulsar-patch-plug .patch-plug-drop-2 {
  animation: patch-plug-drop-2-anim 4500ms ease infinite;
}
.pulsar-patch-plug .patch-plug-wedge {
  animation: patch-plug-wedge-anim 4500ms cubic-bezier(0.2, 1, 0.3, 1) infinite;
}
.pulsar-patch-plug .patch-plug-seal-glow {
  transform-origin: 80px 64px;
  animation: patch-plug-seal-glow-anim 4500ms ease infinite;
}

@keyframes patch-plug-drop-1-anim {
  0%,
  10% {
    transform: translateY(0);
    opacity: 1;
  }
  25% {
    transform: translateY(12px);
    opacity: 0;
  }
  30%,
  100% {
    opacity: 0;
  }
}

@keyframes patch-plug-drop-2-anim {
  0%,
  18% {
    transform: translateY(0);
    opacity: 1;
  }
  30% {
    transform: translateY(10px);
    opacity: 0;
  }
  35%,
  100% {
    opacity: 0;
  }
}

@keyframes patch-plug-wedge-anim {
  0%,
  20% {
    transform: translateY(14px);
    opacity: 0;
  }
  35% {
    transform: translateY(0);
    opacity: 1;
  }
  80% {
    transform: translateY(0);
    opacity: 1;
  }
  92%,
  100% {
    transform: translateY(14px);
    opacity: 0;
  }
}

@keyframes patch-plug-seal-glow-anim {
  0%,
  34% {
    transform: scale(0.5);
    opacity: 0;
  }
  42% {
    opacity: 0.9;
  }
  58% {
    transform: scale(1.5);
    opacity: 0;
  }
  100% {
    transform: scale(1.5);
    opacity: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .pulsar-patch-plug * {
    animation: none !important;
  }
}

From this family15 in Patch

See the family