Vault Safe Zone
CSSFaint radial segments and angular ticks rotate slowly in opposite directions at the corners of a rectangular border.
- Tier
- CSS
- Dependencies
- None
- Duration
- 4 s, loops
- Categories
- Backgrounds and ambient
- Use cases
- Security and trust, Ambient background
- Industries
- Finance and fintech, Security and identity
- Style
- Technical · light stroke
- Set
- treasury
- Tags
- geometricrotateringambient
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-treasury-vault" data-pulsar="treasury-vault" viewBox="0 0 160 96"><g stroke="currentColor" stroke-width="1.25" class="vault-perimeter" opacity=".35"><rect width="112" height="64" x="24" y="16" rx="3"></rect></g><g class="corner-dial d-tl" transform="translate(36 28)"><circle r="12" stroke="currentColor" stroke-dasharray="3 3" opacity=".4"></circle><path stroke="var(--pulsar-accent, currentColor)" stroke-width="1.25" d="M-12 0h24M0-12v24" opacity=".8"></path></g><g class="corner-dial d-br" transform="translate(124 68)"><circle r="12" stroke="currentColor" stroke-dasharray="3 3" opacity=".4"></circle><path stroke="var(--pulsar-accent, currentColor)" stroke-width="1.25" d="M-12 0h24M0-12v24" opacity=".8"></path></g><g class="vault-center" transform="translate(80 48)"><circle r="16" stroke="currentColor" stroke-dasharray="4 4" opacity=".4"></circle><circle r="8" stroke="var(--pulsar-accent, currentColor)" stroke-width="1.5"></circle><circle r="2" fill="var(--pulsar-accent, currentColor)"></circle></g><g stroke="currentColor" stroke-width="1.5" class="border-accents" opacity=".4"><line x1="80" x2="80" y1="12" y2="20"></line><line x1="80" x2="80" y1="76" y2="84"></line><line x1="18" x2="28" y1="48" y2="48"></line><line x1="132" x2="142" y1="48" y2="48"></line></g></svg>
animation.css
.pulsar-treasury-vault {
display: block;
width: 100%;
height: 100%;
}
.pulsar-treasury-vault .corner-dial.d-tl {
transform-origin: 36px 28px;
animation: treasury-vault-rotate-cw 4s linear infinite;
}
.pulsar-treasury-vault .corner-dial.d-br {
transform-origin: 124px 68px;
animation: treasury-vault-rotate-ccw 4s linear infinite;
}
.pulsar-treasury-vault .vault-center {
transform-origin: 80px 48px;
animation: treasury-vault-pulse 4s ease-in-out infinite;
}
.pulsar-treasury-vault .vault-perimeter {
animation: treasury-vault-border 4s ease-in-out infinite;
}
@keyframes treasury-vault-rotate-cw {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes treasury-vault-rotate-ccw {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(-360deg);
}
}
@keyframes treasury-vault-pulse {
0%,
100% {
transform: scale(0.95);
opacity: 0.6;
}
50% {
transform: scale(1.08);
opacity: 1;
}
}
@keyframes treasury-vault-border {
0%,
100% {
opacity: 0.3;
}
50% {
opacity: 0.55;
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-treasury-vault .corner-dial.d-tl,
.pulsar-treasury-vault .corner-dial.d-br,
.pulsar-treasury-vault .vault-center,
.pulsar-treasury-vault .vault-perimeter {
animation: none;
transform: none;
opacity: 0.6;
}
}