Capital Flow Vectors
CSSSubtle dashed lines with tiny arrowheads glide along grid lines, crossing paths at precise coordinate intersections.
- Tier
- CSS
- Dependencies
- None
- Duration
- 4 s, loops
- Categories
- Backgrounds and ambient
- Use cases
- Sync and integration, Ambient background
- Industries
- Finance and fintech, Cross-industry
- Style
- Technical · light stroke
- Set
- treasury
- Tags
- gridarrowlineambient
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-flow" data-pulsar="treasury-flow" viewBox="0 0 160 96"><g stroke="currentColor" class="grid-back" opacity=".2"><line x1="20" x2="140" y1="32" y2="32"></line><line x1="20" x2="140" y1="64" y2="64"></line><line x1="44" x2="44" y1="16" y2="80"></line><line x1="80" x2="80" y1="16" y2="80"></line><line x1="116" x2="116" y1="16" y2="80"></line></g><g fill="currentColor" class="intersections" opacity=".4"><circle cx="44" cy="32" r="2"></circle><circle cx="80" cy="32" r="2"></circle><circle cx="116" cy="32" r="2"></circle><circle cx="44" cy="64" r="2"></circle><circle cx="80" cy="64" r="2"></circle><circle cx="116" cy="64" r="2"></circle></g><g class="flow-vector v-top"><line x1="30" x2="70" y1="32" y2="32" stroke="var(--pulsar-accent, currentColor)" stroke-dasharray="6 3" stroke-width="1.5"></line><path stroke="var(--pulsar-accent, currentColor)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m68 29.5 4 2.5-4 2.5"></path></g><g class="flow-vector v-bottom"><line x1="130" x2="90" y1="64" y2="64" stroke="currentColor" stroke-dasharray="6 3" stroke-width="1.5"></line><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M92 61.5 88 64l4 2.5"></path></g><g class="flow-vector v-vert"><line x1="80" x2="80" y1="20" y2="50" stroke="var(--pulsar-accent, currentColor)" stroke-dasharray="4 3" stroke-width="1.5"></line><path stroke="var(--pulsar-accent, currentColor)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m77.5 48 2.5 4 2.5-4"></path></g><circle cx="80" cy="32" r="5" stroke="var(--pulsar-accent, currentColor)" stroke-width="1.25" class="junction-beacon"></circle></svg>
animation.css
.pulsar-treasury-flow {
display: block;
width: 100%;
height: 100%;
}
.pulsar-treasury-flow .flow-vector.v-top {
animation: treasury-flow-slide-right 4s linear infinite;
}
.pulsar-treasury-flow .flow-vector.v-bottom {
animation: treasury-flow-slide-left 4s linear infinite;
}
.pulsar-treasury-flow .flow-vector.v-vert {
animation: treasury-flow-slide-down 4s linear infinite -1s;
}
.pulsar-treasury-flow .junction-beacon {
animation: treasury-flow-beacon 4s ease-in-out infinite;
transform-origin: 80px 32px;
}
@keyframes treasury-flow-slide-right {
0% {
transform: translateX(-15px);
opacity: 0.2;
}
30%,
70% {
opacity: 1;
}
100% {
transform: translateX(45px);
opacity: 0.2;
}
}
@keyframes treasury-flow-slide-left {
0% {
transform: translateX(15px);
opacity: 0.2;
}
30%,
70% {
opacity: 0.9;
}
100% {
transform: translateX(-45px);
opacity: 0.2;
}
}
@keyframes treasury-flow-slide-down {
0% {
transform: translateY(-10px);
opacity: 0.2;
}
40%,
80% {
opacity: 1;
}
100% {
transform: translateY(30px);
opacity: 0.2;
}
}
@keyframes treasury-flow-beacon {
0%,
100% {
transform: scale(0.8);
opacity: 0.3;
}
45%,
55% {
transform: scale(1.6);
opacity: 1;
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-treasury-flow .flow-vector.v-top,
.pulsar-treasury-flow .flow-vector.v-bottom,
.pulsar-treasury-flow .flow-vector.v-vert,
.pulsar-treasury-flow .junction-beacon {
animation: none;
transform: none;
opacity: 0.7;
}
}