Policy Binding
CSSOpposing mechanical clasp brackets rotate inward to lock the central policy diamond.
- Tier
- CSS
- Dependencies
- None
- Duration
- 4 s, loops
- Categories
- Loaders and spinners
- Use cases
- Loading and waiting, Workflow and approvals
- Industries
- Insurance, Cross-industry
- Style
- Technical · light stroke
- Set
- underwrite
- Tags
- geometricrotatepulseloop
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-underwrite-issue" data-pulsar="underwrite-issue" viewBox="0 0 160 96"><circle cx="80" cy="48" r="28" stroke="currentColor" stroke-dasharray="3 3" opacity=".25"></circle><g class="clasp c-left"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m52 32 16 16-16 16"></path><circle cx="52" cy="48" r="2.5" fill="currentColor"></circle></g><g class="clasp c-right"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M108 32 92 48l16 16"></path><circle cx="108" cy="48" r="2.5" fill="currentColor"></circle></g><polygon fill="var(--pulsar-accent, currentColor)" fill-opacity=".3" stroke="var(--pulsar-accent, currentColor)" stroke-width="2" points="80,38 90,48 80,58 70,48" class="policy-diamond"></polygon><circle cx="80" cy="48" r="3" fill="var(--pulsar-accent, currentColor)" class="core-ping"></circle></svg>
animation.css
.pulsar-underwrite-issue {
display: block;
width: 100%;
height: 100%;
}
.pulsar-underwrite-issue .c-left {
animation: underwrite-issue-lock-l 4s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}
.pulsar-underwrite-issue .c-right {
animation: underwrite-issue-lock-r 4s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}
.pulsar-underwrite-issue .policy-diamond {
transform-origin: 80px 48px;
animation: underwrite-issue-pop 4s ease-in-out infinite;
}
@keyframes underwrite-issue-lock-l {
0%,
15%,
85%,
100% {
transform: translateX(0);
}
40%,
65% {
transform: translateX(8px);
}
}
@keyframes underwrite-issue-lock-r {
0%,
15%,
85%,
100% {
transform: translateX(0);
}
40%,
65% {
transform: translateX(-8px);
}
}
@keyframes underwrite-issue-pop {
0%,
30% {
transform: scale(0.85);
opacity: 0.4;
}
45%,
70% {
transform: scale(1.1);
opacity: 1;
}
85%,
100% {
transform: scale(0.85);
opacity: 0.4;
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-underwrite-issue .c-left,
.pulsar-underwrite-issue .c-right,
.pulsar-underwrite-issue .policy-diamond {
animation: none;
transform: none;
opacity: 1;
}
}