/* Global Styles */ body { font-family: 'Inter', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; background: #0a0a0a; } /* Scrollbar Styling */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: #18181b; } ::-webkit-scrollbar-thumb { background: #525252; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #71717a; } /* Glassmorphism Effects */ .glass { background: rgba(17, 24, 39, 0.7); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); } /* Hover Effects */ .hover-lift { transition: transform 0.2s ease, box-shadow 0.2s ease; } .hover-lift:hover { transform: translateY(-2px); box-shadow: 0 10px 40px rgba(255, 255, 255, 0.1); } /* Animations */ @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } @keyframes float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-10px); } } @keyframes slideIn { from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); } } .pulse-animation { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } .float-animation { animation: float 3s ease-in-out infinite; } /* Enhanced Message Cards */ .message-slide-in { animation: slideInFade 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); } @keyframes slideInFade { from { opacity: 0; transform: translateY(10px) scale(0.98); } to { opacity: 1; transform: translateY(0) scale(1); } } /* Modern Message Container */ .max-w-4xl { max-width: 56rem; } /* Enhanced Markdown Styling */ .markdown h1 { @apply text-lg font-semibold text-white mb-3 mt-4 tracking-tight; background: linear-gradient(to right, #ffffff, #e5e5e5); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; } .markdown h2 { @apply text-base font-medium text-white mb-3 mt-3 tracking-tight; color: #f4f4f5; } .markdown h3 { @apply text-sm font-medium text-zinc-200 mb-2 mt-3 tracking-tight; } .markdown p { @apply text-zinc-100 mb-3 leading-relaxed; line-height: 1.6; } .markdown code { @apply bg-zinc-800/60 px-2 py-1 rounded-md text-xs text-emerald-400 font-mono; border: 1px solid rgba(34, 197, 94, 0.1); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); } .markdown pre { @apply bg-gradient-to-br from-zinc-900 to-zinc-950 rounded-xl p-4 overflow-x-auto mb-4 text-xs; font-family: 'Fira Code', 'Monaco', 'Courier New', monospace; border: 1px solid #27272a; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.5); } .markdown pre code { @apply bg-transparent text-zinc-200 py-0 px-0; border: none; box-shadow: none; } .markdown ul { @apply list-disc list-inside text-zinc-100 mb-3 space-y-2 text-sm; line-height: 1.6; } .markdown ol { @apply list-decimal list-inside text-zinc-100 mb-3 space-y-2 text-sm; line-height: 1.6; } .markdown blockquote { @apply border-l-3 border-zinc-600 pl-4 italic text-zinc-300 mb-3 text-sm; background: linear-gradient(to right, rgba(113, 113, 122, 0.1), transparent); padding: 12px 16px; border-radius: 0 8px 8px 0; line-height: 1.6; } .markdown a { @apply text-blue-400 underline decoration-1 underline-offset-2 hover:text-blue-300 hover:decoration-blue-300 transition-colors duration-200 text-sm; } .markdown table { @apply w-full border-collapse mb-4 text-sm rounded-lg overflow-hidden; border: 1px solid #27272a; } .markdown th { @apply border border-zinc-700 px-3 py-2 bg-zinc-900/80 text-left text-sm font-medium text-zinc-200; } .markdown td { @apply border border-zinc-800 px-3 py-2 text-zinc-300; } /* Message hover effects */ .group:hover .group-hover\\:ring-zinc-700\\/50 { --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px * var(--tw-ring-inset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } .group:hover .group-hover\\:ring-blue-500\\/50 { --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px * var(--tw-ring-inset-width)) var(--tw-ring-color); box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } /* Transition Classes */ .transition-all { transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } /* Utility Classes */ .text-shadow { text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); } .border-glow { box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.1), 0 0 20px rgba(255, 255, 255, 0.05); } /* Model Dropdown Styles */ #modelDropdownMenu { max-height: 300px; overflow-y: auto; } #modelDropdownMenu::-webkit-scrollbar { width: 4px; } #modelDropdownMenu::-webkit-scrollbar-track { background: transparent; } #modelDropdownMenu::-webkit-scrollbar-thumb { background: #525252; border-radius: 2px; } .model-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; } .model-dot.white { background: #ffffff; } .model-dot.zinc-300 { background: #d4d4d8; } .model-dot.zinc-400 { background: #a1a1aa; } .model-dot.zinc-500 { background: #71717a; } /* Chat Container */ .flex-1.flex { position: relative; overflow: hidden; } /* Chat Section */ .flex.flex-col { background: #09090b; position: relative; overflow: hidden; max-height: 100vh; } /* Chat Width Constraints */ .max-w-6xl { max-width: 72rem; } /* Fixed sidebar layout */ custom-sidebar { position: fixed !important; left: 0; top: 0; height: 100vh; z-index: 1000; } /* Chat layout always positioned to account for fixed sidebar */ .flex-1.flex { margin-left: 260px; width: calc(100% - 260px); position: relative; } /* Fixed sidebar - no transitions */ .sidebar { transition: none !important; position: fixed !important; } .sidebar * { transition-property: background, border-color; transition-duration: 0.2s; transition-timing-function: ease; } /* Sidebar Transitions */ .sidebar { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: fixed !important; } .sidebar * { transition-property: background, border-color, transform, box-shadow; transition-duration: 0.2s; transition-timing-function: ease; } /* Loading Skeleton */ .skeleton { background: linear-gradient(90deg, #18181b 25%, #27272a 50%, #18181b 75%); background-size: 200% 100%; animation: loading 1.5s infinite; } @keyframes loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }