body {
    background-color: #08090d;
    background-image: 
        radial-gradient(circle at 10% 20%, rgba(16, 185, 129, 0.05) 0%, transparent 40%),
        radial-gradient(circle at 90% 80%, rgba(139, 92, 246, 0.05) 0%, transparent 40%);
}
.glow-hover:hover {
    box-shadow: 0 0 25px rgba(16, 185, 129, 0.35);
}
/* Custom scrollbar */
::-webkit-scrollbar {
    width: 8px;
}
::-webkit-scrollbar-track {
    background: #08090d;
}
::-webkit-scrollbar-thumb {
    background: #1f2937;
    border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
    background: #374151;
}
/* CSS Token Animation */
@keyframes move-token {
    0% { left: 40px; top: 75px; opacity: 1; }
    30% { left: 210px; top: 75px; opacity: 1; }
    70% { left: 210px; top: 75px; opacity: 1; }
    100% { left: 380px; top: 75px; opacity: 1; }
}
.animated-token {
    animation: move-token 6s infinite cubic-bezier(0.45, 0, 0.55, 1);
}
@keyframes pulse-ring {
    0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7); }
    70% { transform: scale(1); box-shadow: 0 0 0 10px rgba(16, 185, 129, 0); }
    100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }
}
.pulse-node {
    animation: pulse-ring 2s infinite;
}
/* CSS Dash path animation */
@keyframes dash {
    to {
        stroke-dashoffset: -40;
    }
}
.animate-dash {
    stroke-dasharray: 8;
    animation: dash 2s linear infinite;
}

/* Tab switcher progress bar */
@keyframes tab-progress-anim {
    from { width: 0%; }
    to { width: 100%; }
}
.tab-progress-active {
    animation: tab-progress-anim 6000ms linear forwards;
}
