/* Micro-interactions */
.hover-scale {
    transition: transform var(--transition-slow);
}
.hover-scale:hover {
    transform: scale(1.05);
}

/* Page Transitions */
.animate-fade-in-up {
    animation: fadeInUp var(--transition-base) forwards;
    opacity: 0;
    transform: translateY(20px);
}

@keyframes fadeInUp {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Heart animation */
.heartbeat {
    animation: heartbeat 0.3s ease-in-out;
}
@keyframes heartbeat {
    0% { transform: scale(1); }
    50% { transform: scale(1.3); }
    100% { transform: scale(1); }
}

/* Shake for errors */
.shake-error {
    animation: shake 0.4s cubic-bezier(.36,.07,.19,.97) both;
}
@keyframes shake {
    10%, 90% { transform: translate3d(-1px, 0, 0); }
    20%, 80% { transform: translate3d(2px, 0, 0); }
    30%, 50%, 70% { transform: translate3d(-4px, 0, 0); }
    40%, 60% { transform: translate3d(4px, 0, 0); }
}

/* Spotlight overlay transition */
.spotlight-fade {
    transition: opacity 0.2s ease;
}
.hidden {
    opacity: 0;
    pointer-events: none;
}
