State Snapshot
CSSA square frame icon contracts slightly, with its four corners flashing briefly to represent a point-in-time state capture.
- Tier
- CSS
- Dependencies
- None
- Duration
- 5.5 s, loops
- Categories
- Icons and micro-interactions
- Use cases
- Security and trust, Documents and files
- Industries
- SaaS and software, Cross-industry
- Style
- Minimal line · light stroke
- Set
- changelog
- Tags
- geometriclineloopminimalscale
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-changelog-snapshot" data-pulsar="changelog-snapshot" viewBox="0 0 160 96"><g stroke="currentColor" stroke-linecap="round" stroke-width="1.2" opacity=".4"><line x1="66" x2="94" y1="38" y2="38"></line><line x1="66" x2="88" y1="48" y2="48"></line><line x1="66" x2="80" y1="58" y2="58"></line></g><g id="changelog-snapshot-corners" stroke="var(--pulsar-accent, currentColor)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8"><path id="changelog-snapshot-tl" d="M52 34V24h10"></path><path id="changelog-snapshot-tr" d="M98 24h10v10"></path><path id="changelog-snapshot-br" d="M108 62v10H98"></path><path id="changelog-snapshot-bl" d="M62 72H52V62"></path></g><rect id="changelog-snapshot-flash" width="52" height="44" x="54" y="26" fill="var(--pulsar-accent, currentColor)" fill-opacity=".1" stroke="var(--pulsar-accent, currentColor)" stroke-width="1.2" opacity="0" rx="2"></rect></svg>
animation.css
.pulsar-changelog-snapshot #changelog-snapshot-corners {
animation: changelog-snapshot-clamp 5500ms cubic-bezier(0.4, 0, 0.2, 1) infinite;
}
@keyframes changelog-snapshot-clamp {
0%,
28% {
transform: scale(1.08);
}
38%,
80% {
transform: scale(0.96);
}
90%,
100% {
transform: scale(1.08);
}
}
.pulsar-changelog-snapshot #changelog-snapshot-corners {
transform-origin: 80px 48px;
}
.pulsar-changelog-snapshot #changelog-snapshot-flash {
animation: changelog-snapshot-flash-anim 5500ms ease-out infinite;
}
@keyframes changelog-snapshot-flash-anim {
0%,
34% {
opacity: 0;
}
38%,
46% {
opacity: 0.8;
}
56%,
100% {
opacity: 0;
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-changelog-snapshot * {
animation: none !important;
}
}