/* FORGE-ATLAS — Animations */
@keyframes fade-in { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } }
@keyframes pulse-ring { 0%, 100% { box-shadow: 0 0 0 0 rgba(255,59,92,0.4), 0 0 0 4px rgba(255,59,92,0.1); } 50% { box-shadow: 0 0 0 4px rgba(255,59,92,0.2), 0 0 0 8px rgba(255,59,92,0.05); } }
@keyframes badge-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } }
@keyframes scanlines { 0% { background-position: 0 0; } 100% { background-position: 0 100px; } }
@keyframes float { 0%, 100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-8px); } }
@keyframes msg-in { from { opacity: 0; transform: translateY(10px) scale(0.97); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes thinking-bounce { 0%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-6px); } }
@keyframes toast-in { from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: translateX(0); } }
@keyframes atlas-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
@keyframes glitch-shift { 0%, 100% { clip-path: inset(0 0 98% 0); transform: translate(-2px, 0); } 20% { clip-path: inset(30% 0 50% 0); transform: translate(2px, 0); } 40% { clip-path: inset(60% 0 20% 0); transform: translate(-1px, 0); } 60% { clip-path: inset(80% 0 5% 0); transform: translate(1px, 0); } 80% { clip-path: inset(10% 0 85% 0); transform: translate(0, 0); } }
@keyframes neon-flicker { 0%, 95%, 100% { opacity: 1; } 96% { opacity: 0.4; } 97% { opacity: 1; } 98% { opacity: 0.3; } 99% { opacity: 1; } }
@keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }
@keyframes typewriter-cursor { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }
@keyframes counter-up { from { transform: translateY(100%); opacity: 0; } to { transform: translateY(0); opacity: 1; } }

.glitch { position: relative; }
.glitch::before, .glitch::after { content: attr(data-text); position: absolute; top: 0; left: 0; width: 100%; }
.glitch::before { color: var(--red); animation: glitch-shift 4s infinite 0.3s; text-shadow: -1px 0 var(--red); }
.glitch::after { color: var(--cyan); animation: glitch-shift 4s infinite 0.6s; text-shadow: 1px 0 var(--cyan); }
.typewriter::after { content: '|'; animation: typewriter-cursor 0.8s ease infinite; color: var(--cyan); font-weight: 300; }
.shimmer { background: linear-gradient(90deg, var(--surface) 0%, var(--surface-3) 50%, var(--surface) 100%); background-size: 200%; animation: shimmer 1.5s ease infinite; }
.neon-cyan { color: var(--cyan); text-shadow: 0 0 10px rgba(0,229,204,0.8), 0 0 30px rgba(0,229,204,0.4); }
.neon-amber { color: var(--amber); text-shadow: 0 0 10px rgba(255,184,0,0.8), 0 0 30px rgba(255,184,0,0.4); }
.reveal { opacity: 0; transform: translateY(24px); transition: opacity 0.6s ease, transform 0.6s ease; }
.reveal.visible { opacity: 1; transform: none; }
.animate-fade-in { animation: fade-in 0.6s ease both; }
.stagger-1 { animation-delay: 0.1s; } .stagger-2 { animation-delay: 0.2s; }
.stagger-3 { animation-delay: 0.3s; } .stagger-4 { animation-delay: 0.4s; }
