/* Global Styles for RAG Chat Application */ /* Scrollbar Styling */ .scrollbar-thin { scrollbar-width: thin; } .scrollbar-thin::-webkit-scrollbar { width: 6px; } .scrollbar-thin::-webkit-scrollbar-track { background: transparent; } .scrollbar-thin::-webkit-scrollbar-thumb { background-color: rgba(107, 114, 128, 0.5); border-radius: 3px; } .scrollbar-thin::-webkit-scrollbar-thumb:hover { background-color: rgba(107, 114, 128, 0.7); } /* Animation Classes */ @keyframes slideInFromBottom { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .animate-in { animation-duration: 300ms; animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1); animation-fill-mode: both; } .slide-in-from-bottom-4 { animation-name: slideInFromBottom; } .fade-in { animation: fadeIn 300ms ease-out; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } /* Smooth scrolling */ html { scroll-behavior: smooth; } /* Better focus states */ *:focus { outline: none; } *:focus-visible { outline: 2px solid rgb(99, 102, 241); outline-offset: 2px; } /* Message content styling */ .prose { max-width: none; } .prose p { margin-bottom: 0.5em; } .prose p:last-child { margin-bottom: 0; } /* Gradient text animation (optional) */ @keyframes gradientShift { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } } .gradient-animate { background-size: 200% 200%; animation: gradientShift 3s ease infinite; } /* Selection color */ ::selection { background-color: rgb(199, 210, 254); color: rgb(55, 48, 163); } /* Loading pulse animation */ @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .animate-pulse { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } /* Bounce animation for typing indicator */ @keyframes bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-4px); } } .animate-bounce { animation: bounce 0.6s infinite; }