neural-nexus-ai / style.css
nixaut-codelabs's picture
Don't just leave the chat page on the right, fit it completely in the middle. The sidebar will remain fixed on the left, but still. Don't overlap them.
06a659f verified
/* 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; }
}