Arbitrage Channels
CSSParallel diagonal lines drift across the grid, with tiny crosshair indicators tracking along the channels.
- Tier
- CSS
- Dependencies
- None
- Duration
- 4 s, loops
- Categories
- Backgrounds and ambient
- Use cases
- Dashboards and reporting, Ambient background
- Industries
- Finance and fintech
- Style
- Technical · light stroke
- Set
- treasury
- Tags
- linedotsminimalambient
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-arbitrage" data-pulsar="treasury-arbitrage" viewBox="0 0 160 96"><g stroke="currentColor" stroke-dasharray="2 4" class="arbitrage-grid" opacity=".2"><line x1="20" x2="140" y1="20" y2="20"></line><line x1="20" x2="140" y1="48" y2="48"></line><line x1="20" x2="140" y1="76" y2="76"></line></g><g class="diagonal-channel ch-1"><line x1="20" x2="120" y1="68" y2="18" stroke="var(--pulsar-accent, currentColor)" stroke-width="1.5"></line><circle cx="70" cy="43" r="3" fill="var(--pulsar-accent, currentColor)" class="tracker tr-1"></circle></g><g class="diagonal-channel ch-2"><line x1="40" x2="140" y1="78" y2="28" stroke="currentColor" stroke-dasharray="4 3" stroke-width="1.25" opacity=".5"></line><circle cx="90" cy="53" r="3" stroke="currentColor" stroke-width="1.2" class="tracker tr-2"></circle></g><g stroke="var(--pulsar-accent, currentColor)" stroke-dasharray="2 2" class="spread-link" opacity=".5"><line x1="70" x2="90" y1="43" y2="53"></line></g></svg>
animation.css
.pulsar-treasury-arbitrage {
display: block;
width: 100%;
height: 100%;
}
.pulsar-treasury-arbitrage .diagonal-channel.ch-1 {
animation: treasury-arbitrage-drift-1 4s ease-in-out infinite;
}
.pulsar-treasury-arbitrage .diagonal-channel.ch-2 {
animation: treasury-arbitrage-drift-2 4s ease-in-out infinite;
}
.pulsar-treasury-arbitrage .diagonal-channel.ch-1 .tracker.tr-1 {
animation: treasury-arbitrage-track-1 4s ease-in-out infinite;
}
.pulsar-treasury-arbitrage .diagonal-channel.ch-2 .tracker.tr-2 {
animation: treasury-arbitrage-track-2 4s ease-in-out infinite;
}
.pulsar-treasury-arbitrage .spread-link {
animation: treasury-arbitrage-link 4s ease-in-out infinite;
}
@keyframes treasury-arbitrage-drift-1 {
0%,
100% {
transform: translateY(0);
opacity: 0.7;
}
50% {
transform: translateY(-3px);
opacity: 1;
}
}
@keyframes treasury-arbitrage-drift-2 {
0%,
100% {
transform: translateY(0);
opacity: 0.4;
}
50% {
transform: translateY(3px);
opacity: 0.7;
}
}
@keyframes treasury-arbitrage-track-1 {
0%,
100% {
transform: translate(-6px, 3px);
}
50% {
transform: translate(6px, -3px);
}
}
@keyframes treasury-arbitrage-track-2 {
0%,
100% {
transform: translate(6px, -3px);
}
50% {
transform: translate(-6px, 3px);
}
}
@keyframes treasury-arbitrage-link {
0%,
100% {
opacity: 0.3;
}
50% {
opacity: 0.8;
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-treasury-arbitrage .diagonal-channel.ch-1,
.pulsar-treasury-arbitrage .diagonal-channel.ch-2,
.pulsar-treasury-arbitrage .diagonal-channel.ch-1 .tracker.tr-1,
.pulsar-treasury-arbitrage .diagonal-channel.ch-2 .tracker.tr-2,
.pulsar-treasury-arbitrage .spread-link {
animation: none;
transform: none;
opacity: 0.6;
}
}