Flag
CSSAn exclamation rises into a triangle that draws its perimeter and holds.
- Tier
- CSS
- Dependencies
- None
- Duration
- 4 s, loops
- Categories
- Icons and micro-interactions
- Use cases
- Errors and warnings, Notifications
- Industries
- Insurance, Cross-industry
- Style
- Bold line · regular stroke
- Set
- verdict
- Tags
- loopminimalui
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="verdict-flag-title" class="pulsar pulsar-verdict-flag" data-pulsar="verdict-flag" role="img" viewBox="0 0 40 40"><title id="verdict-flag-title">Flag</title><path id="verdict-flag-triangle" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="m20 6 14 28H6Z"></path><g id="verdict-flag-mark"><path id="verdict-flag-line" fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="3" d="M20 16v10"></path><path id="verdict-flag-dot" fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="3" d="M20 30h.01"></path></g></svg>
animation.css
/* Accent: the mark inside the triangle. */
.pulsar-verdict-flag #verdict-flag-line,
.pulsar-verdict-flag #verdict-flag-dot {
stroke: var(--pulsar-accent, currentColor);
}
.pulsar-verdict-flag #verdict-flag-triangle {
stroke-dasharray: 91;
stroke-dashoffset: 91;
animation: verdict-flag-triangle 4000ms linear infinite;
}
.pulsar-verdict-flag #verdict-flag-mark {
opacity: 0;
animation: verdict-flag-mark 4000ms linear infinite;
}
@keyframes verdict-flag-triangle {
0% {
stroke-dashoffset: 91;
animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
}
35%,
100% {
stroke-dashoffset: 0;
}
}
@keyframes verdict-flag-mark {
0%,
35% {
opacity: 0;
transform: translateY(4px);
animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
}
60%,
100% {
opacity: 1;
transform: translateY(0);
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-verdict-flag #verdict-flag-triangle,
.pulsar-verdict-flag #verdict-flag-mark {
animation: none;
stroke-dashoffset: 0;
opacity: 1;
transform: none;
}
}