/* SIRIUS Dopamine Animations */

@keyframes confettiFall {
    0% { transform: translateY(0) rotate(0deg); opacity: 1; }
    100% { transform: translateY(100vh) rotate(720deg); opacity: 0; }
}

@keyframes xpFloat {
    0% { transform: translateY(0); opacity: 1; }
    100% { transform: translateY(-60px); opacity: 0; }
}

@keyframes bounce {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-12px); }
}

@keyframes pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.06); }
}

@keyframes shimmer {
    0% { transform: translateX(-100%); }
    100% { transform: translateX(100%); }
}

@keyframes glow {
    0%, 100% { box-shadow: 0 0 6px var(--accent-glow); }
    50% { box-shadow: 0 0 20px var(--accent-glow); }
}

@keyframes sheetUp {
    from { transform: translateY(100%); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}

/* Progress bar shimmer */
.goal-progress-bar,
.goal-mini-fill {
    position: relative;
    overflow: hidden;
}
.goal-progress-bar::after,
.goal-mini-fill::after {
    content: '';
    position: absolute;
    top: 0; left: 0; bottom: 0; right: 0;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.15), transparent);
    animation: shimmer 2.5s infinite;
}

/* Level up */
.level-up {
    animation: bounce 0.5s ease, pulse 0.5s ease;
}

/* Card entrance */
.card-enter {
    animation: pageFadeIn 0.3s ease;
}

/* Streak fire pulse */
.streak-fire {
    animation: pulse 1.5s ease infinite;
}

/* Button press feedback */
.btn-primary:active,
.btn-accent-small:active,
.btn-send:active,
.fab:active {
    transition: transform 0.1s ease;
}

/* Achievement glow */
.achievement-glow {
    animation: glow 1.5s ease infinite;
}

/* Spinner */
.spinner {
    border: 3px solid var(--bg-elevated);
    border-top: 3px solid var(--accent);
    border-radius: 50%;
    width: 32px;
    height: 32px;
    animation: spin 0.8s linear infinite;
    margin: 20px auto;
}
@keyframes spin {
    to { transform: rotate(360deg); }
}

/* Neo-Tactile: loading state — neon blue spinning ring */
@keyframes loadingGlow {
    0%, 100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.5), 0 0 16px rgba(59, 130, 246, 0.3); }
    50% { box-shadow: 0 0 0 6px rgba(59, 130, 246, 0.2), 0 0 28px rgba(59, 130, 246, 0.5); }
}
.loading-glow {
    animation: loadingGlow 1.5s ease-in-out infinite;
}
.loading-spin {
    animation: spin 0.9s linear infinite;
}
