@keyframes spin { to { transform: rotate(360deg); } } @keyframes pulse { 0%, 100% { opacity: 0.72; transform: scale(1); } 50% { opacity: 1; transform: scale(1.08); } } @keyframes riseIn { from { opacity: 0; transform: translate3d(-50%, 14px, 0); } to { opacity: 1; transform: translate3d(-50%, 0, 0); } } .jarvis-bubble:not(.hidden) { animation: riseIn 0.22s ease-out; } .loading-ring { animation: spin 1.2s linear infinite; } .pinch-cursor { animation: pulse 1.4s ease-in-out infinite; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: 0.01ms !important; } }