/* Smooth Message Scrolling/Appearance*/ @keyframes messageSlideIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } /* Icon pulsation */ @keyframes iconPulse { 0%, 100% { opacity: 0.7; } 50% { opacity: 1; } } /* Pulse for the timer */ @keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } } /* Scroll of logos */ @keyframes walletLogosScroll { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } } /* ── Voice messages ─────────────────────────────────────────────── */ /* Pulsing red REC dot while recording. */ @keyframes vmRec { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.35; transform: scale(0.82); } } /* Expanding ring behind the record button. */ @keyframes vmRing { 0% { transform: scale(1); opacity: 0.5; } 100% { transform: scale(2.1); opacity: 0; } } /* ── Encrypted call UI ─────────────────────────────────────────────── */ /* Expanding ring pulse behind the caller avatar while ringing. */ @keyframes sbCallPulse { 0% { transform: scale(1); opacity: 0.5; } 100% { transform: scale(1.85); opacity: 0; } } /* Slow animated gradient behind a camera-off video placeholder. */ @keyframes sbLiveBg { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }