/* Custom Scrollbar */ .scrollbar-thin::-webkit-scrollbar { width: 6px; height: 6px; } .scrollbar-thin::-webkit-scrollbar-track { background: transparent; } .scrollbar-thin::-webkit-scrollbar-thumb { background-color: rgb(209 213 219); border-radius: 20px; } .dark .scrollbar-thin::-webkit-scrollbar-thumb { background-color: rgb(75 85 99); } /* Gradient Text Utilities */ .gradient-text { background: linear-gradient(135deg, #8b5cf6 0%, #06b6d4 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Glassmorphism */ .glass { background: rgba(255, 255, 255, 0.7); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); } .dark .glass { background: rgba(17, 24, 39, 0.7); } /* Message Animations */ .message-enter { animation: slideUp 0.3s ease-out forwards; } @keyframes slideUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } /* Typing Indicator Dots */ .typing-dot { animation: typing 1.4s infinite ease-in-out both; } .typing-dot:nth-child(1) { animation-delay: -0.32s; } .typing-dot:nth-child(2) { animation-delay: -0.16s; } @keyframes typing { 0%, 80%, 100% { transform: scale(0); opacity: 0.5; } 40% { transform: scale(1); opacity: 1; } } /* Code Block Styling */ pre { background: #1e1e2e; border-radius: 0.75rem; padding: 1rem; overflow-x: auto; position: relative; margin: 0.5rem 0; } code { font-family: 'Menlo', 'Monaco', 'Courier New', monospace; font-size: 0.875rem; line-height: 1.5; } .hljs { background: transparent !important; padding: 0 !important; } .code-block-wrapper { position: relative; margin: 1rem 0; } .code-header { display: flex; align-items: center; justify-content: space-between; padding: 0.5rem 1rem; background: #2d2d3d; border-top-left-radius: 0.75rem; border-top-right-radius: 0.75rem; border-bottom: 1px solid #3e3e50; } .code-header + pre { border-top-left-radius: 0; border-top-right-radius: 0; margin-top: 0; } .copy-code-btn { padding: 0.25rem 0.75rem; background: rgba(255,255,255,0.1); border-radius: 0.375rem; font-size: 0.75rem; color: #9ca3af; transition: all 0.2s; } .copy-code-btn:hover { background: rgba(255,255,255,0.2); color: white; } .copy-code-btn.copied { background: #10b981; color: white; } /* Markdown Content Styling */ .markdown-content h1, .markdown-content h2, .markdown-content h3 { margin-top: 1.5rem; margin-bottom: 0.75rem; font-weight: 600; } .markdown-content h1 { font-size: 1.5rem; } .markdown-content h2 { font-size: 1.25rem; } .markdown-content h3 { font-size: 1.125rem; } .markdown-content p { margin-bottom: 0.75rem; line-height: 1.7; } .markdown-content ul, .markdown-content ol { margin-bottom: 0.75rem; padding-left: 1.5rem; } .markdown-content li { margin-bottom: 0.25rem; } .markdown-content blockquote { border-left: 4px solid #8b5cf6; padding-left: 1rem; margin: 1rem 0; color: #6b7280; font-style: italic; } .markdown-content a { color: #8b5cf6; text-decoration: underline; } .dark .markdown-content blockquote { color: #9ca3af; } /* Input Area Auto-resize */ textarea { min-height: 24px; field-sizing: content; } /* Sidebar Transition */ .sidebar-transition { transition: transform 0.3s ease-in-out; } /* Glow Effects */ .glow-primary { box-shadow: 0 0 20px rgba(139, 92, 246, 0.3); } .glow-secondary { box-shadow: 0 0 20px rgba(6, 182, 212, 0.3); } /* Loading Shimmer */ .shimmer { background: linear-gradient(90deg, transparent, rgba(255,255,255,0.1), transparent); background-size: 200% 100%; animation: shimmer 2s infinite; } @keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }