/* SoulSync Global Styles */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', sans-serif; background: linear-gradient(135deg, #0f172a 0%, #111827 50%, #1f2937 100%); min-height: 100vh; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: #1f2937; } ::-webkit-scrollbar-thumb { background: linear-gradient(45deg, #d946ef, #8b5cf6); border-radius: 3px; } /* Animations */ @keyframes float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-10px); } } @keyframes glow { 0%, 100% { box-shadow: 0 0 20px rgba(217, 70, 239, 0.3); } 50% { box-shadow: 0 0 40px rgba(217, 70, 239, 0.6); } } @keyframes pulse-glow { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } .floating { animation: float 3s ease-in-out infinite; } .glow { animation: glow 2s ease-in-out infinite alternate; } .pulse-glow { animation: pulse-glow 2s ease-in-out infinite; } /* Chat bubble animations */ .chat-bubble { transform-origin: left bottom; animation: messageAppear 0.3s ease-out; } @keyframes messageAppear { from { opacity: 0; transform: scale(0.8) translateY(10px); } to { opacity: 1; transform: scale(1) translateY(0); } } /* Voice recording animation */ .voice-recording { animation: voicePulse 1.5s ease-in-out infinite; } @keyframes voicePulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.05); opacity: 0.8; } } /* Typing indicator */ .typing-dot { animation: typingAnimation 1.4s infinite ease-in-out; } .typing-dot:nth-child(1) { animation-delay: -0.32s; } .typing-dot:nth-child(2) { animation-delay: -0.16s; } @keyframes typingAnimation { 0%, 80%, 100% { transform: scale(0); } 40% { transform: scale(1); } } /* Gradient text */ .gradient-text { background: linear-gradient(45deg, #d946ef, #8b5cf6); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Glass morphism effect */ .glass { background: rgba(255, 255, 255, 0.05); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.1); } /* Button hover effects */ .btn-primary { background: linear-gradient(45deg, #d946ef, #8b5cf6); transition: all 0.3s ease; } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 10px 25px rgba(217, 70, 239, 0.3); } /* Progress bar animation */ .progress-fill { transition: width 0.5s ease-in-out; } /* Emotional state indicators */ .emotion-happy { color: #10b981; } .emotion-neutral { color: #6b7280; } .emotion-sad { color: #ef4444; } .emotion-excited { color: #f59e0b; } .emotion-calm { color: #3b82f6; } /* RTL support for Arabic */ [dir="rtl"] .chat-bubble-user { transform-origin: right bottom; } /* Mobile optimizations */ @media (max-width: 768px) { .mobile-padding { padding-left: 1rem; padding-right: 1rem; } } /* Dark mode enhancements */ .dark-mode-toggle { transition: all 0.3s ease; } .dark-mode-toggle:hover { transform: rotate(12deg); } /* Subscription tier cards */ .tier-card { transition: all 0.3s ease; border: 2px solid transparent; } .tier-card:hover { border-color: #d946ef; transform: translateY(-5px); } /* Loading spinner */ .loading-spinner { animation: spin 1s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } /* Voice waveform */ .voice-wave { animation: wave 1.5s infinite ease-in-out; } .voice-wave:nth-child(2) { animation-delay: -0.3s; } .voice-wave:nth-child(3) { animation-delay: -0.6s; } .voice-wave:nth-child(4) { animation-delay: -0.9s; } @keyframes wave { 0%, 100% { transform: scaleY(0.3); } 50% { transform: scaleY(1); } } /* Accessibility improvements */ @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } }