/* ── Animations ── */
@keyframes fadeInUp { from { opacity:0; transform:translateY(20px); } to { opacity:1; transform:translateY(0); } }
@keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
@keyframes slideInLeft { from { transform:translateX(-30px); opacity:0; } to { transform:translateX(0); opacity:1; } }
@keyframes pulse { 0%,100% { opacity:1; } 50% { opacity:0.6; } }
@keyframes shimmer { 0% { background-position:-200% 0; } 100% { background-position:200% 0; } }

.animate-fadeInUp { animation: fadeInUp 0.5s ease both; }
.animate-fadeIn { animation: fadeIn 0.4s ease both; }
.animate-slideInLeft { animation: slideInLeft 0.4s ease both; }
.delay-1 { animation-delay: 0.1s; }
.delay-2 { animation-delay: 0.2s; }
.delay-3 { animation-delay: 0.3s; }
.delay-4 { animation-delay: 0.4s; }

/* Breaking badge pulse */
.breaking-badge { display: inline-flex; align-items: center; gap: 0.3rem; }
.breaking-dot { width: 8px; height: 8px; background: var(--color-cta); border-radius: 50%; animation: pulse 1.2s infinite; }

/* Skeleton loader */
.skeleton { background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: shimmer 1.5s infinite; border-radius: var(--radius-md); }

/* Scroll reveal */
.reveal { opacity: 0; transform: translateY(15px); transition: opacity 0.5s ease, transform 0.5s ease; }
.reveal.visible { opacity: 1; transform: translateY(0); }

/* Hover lift for interactive elements */
.hover-lift { transition: transform var(--transition-base), box-shadow var(--transition-base); }
.hover-lift:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); }
