/* Global styles for SoulMate AI Companion */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Nunito', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; overscroll-behavior: none; } #root { width: 100%; height: 100vh; overflow: hidden; } /* Scrollbar styles */ .no-scrollbar::-webkit-scrollbar { display: none; } .no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; } /* Smooth scroll */ .scroll-smooth { scroll-behavior: smooth; } /* Custom animations */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes fadeSlideUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideUp { from { opacity: 0; transform: translateY(20px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } @keyframes slideDown { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } @keyframes scaleIn { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: scale(1); } } /* Animation utilities */ .animate-fadeIn { animation: fadeIn 0.3s ease-out; } .animate-fadeSlideUp { animation: fadeSlideUp 0.5s ease-out; } .animate-slideUp { animation: slideUp 0.3s ease-out; } .animate-slideDown { animation: slideDown 0.3s ease-out; } .animate-scaleIn { animation: scaleIn 0.3s ease-out; } /* Delay utilities */ .delay-100 { animation-delay: 100ms; } .delay-200 { animation-delay: 200ms; } .delay-300 { animation-delay: 300ms; } .delay-400 { animation-delay: 400ms; } .delay-500 { animation-delay: 500ms; } .delay-700 { animation-delay: 700ms; } /* Bounce In Animation for AI greeting */ @keyframes bounceIn { 0% { opacity: 0; transform: translateX(-50%) scale(0.3) translateY(20px); } 50% { opacity: 1; transform: translateX(-50%) scale(1.05) translateY(-5px); } 70% { transform: translateX(-50%) scale(0.95) translateY(0); } 100% { opacity: 1; transform: translateX(-50%) scale(1) translateY(0); } }