@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap'); @tailwind base; @tailwind components; @tailwind utilities; @layer utilities { /* Custom scrollbar utility */ .scrollbar-thin { scrollbar-width: thin; } .scrollbar-thin::-webkit-scrollbar { width: 5px; height: 5px; } .scrollbar-thin::-webkit-scrollbar-track { background: transparent; } .scrollbar-thin::-webkit-scrollbar-thumb { background: rgba(var(--muted-foreground), 0.3); border-radius: 9999px; } .scrollbar-thin::-webkit-scrollbar-thumb:hover { background: rgba(var(--muted-foreground), 0.5); } } @layer base { :root { --background: 222 45% 98%; --foreground: 222 47% 20%; --card: 0 0% 100%; --card-foreground: 222 47% 20%; --popover: 0 0% 100%; --popover-foreground: 222 47% 20%; --primary: 252 62% 64%; --primary-foreground: 210 40% 98%; --secondary: 220 25% 95%; --secondary-foreground: 222 47% 20%; --muted: 220 25% 95%; --muted-foreground: 222 20% 40%; --accent: 252 62% 64%; --accent-foreground: 0 0% 100%; --destructive: 0 84% 60%; --destructive-foreground: 210 40% 98%; --border: 214 20% 90%; --input: 214 20% 90%; --ring: 252 62% 64%; --radius: 0.75rem; --sidebar-background: 260 73% 56%; --sidebar-foreground: 0 0% 100%; --sidebar-primary: 252 62% 64%; --sidebar-primary-foreground: 0 0% 100%; --sidebar-accent: 224 47% 20%; --sidebar-accent-foreground: 0 0% 100%; --sidebar-border: 224 47% 40%; --sidebar-ring: 252 62% 64%; } .dark { --background: 225 30% 8%; --foreground: 210 40% 98%; --card: 225 30% 12%; --card-foreground: 210 40% 98%; --popover: 225 30% 12%; --popover-foreground: 210 40% 98%; --primary: 252 62% 64%; --primary-foreground: 222 47% 20%; --secondary: 225 25% 16%; --secondary-foreground: 210 40% 98%; --muted: 225 25% 16%; --muted-foreground: 220 20% 70%; --accent: 252 62% 64%; --accent-foreground: 222 47% 20%; --destructive: 0 80% 52%; --destructive-foreground: 210 40% 98%; --border: 225 25% 20%; --input: 225 25% 20%; --ring: 252 62% 64%; } } @layer base { * { @apply border-border; } body { @apply bg-background text-foreground font-sans; background-image: radial-gradient(at 50% 0%, rgba(var(--accent) / 0.08) 0px, transparent 75%), radial-gradient(at 100% 0%, rgba(var(--accent) / 0.08) 0px, transparent 50%); background-attachment: fixed; } h1, h2, h3, h4 { @apply font-heading; } /* Glass effect styles */ .glass-effect { @apply bg-white/70 dark:bg-card/70 backdrop-blur-md border border-white/20 dark:border-white/10; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05); } .glass-input { @apply bg-white/50 dark:bg-card/50 backdrop-blur-md border-white/20 dark:border-white/10; } /* Text gradient effect */ .text-gradient { @apply bg-gradient-to-r from-financial-accent to-financial-light-accent bg-clip-text text-transparent; } } .search-container { box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05); @apply backdrop-blur-md; } .result-card { box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06); transition: transform 0.2s ease, box-shadow 0.25s ease; @apply backdrop-blur-md; } .result-card:hover { transform: translateY(-2px); box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1); } .source-card { border-left: 3px solid theme('colors.financial.accent'); } .dashboard-card { transition: all 0.3s ease-in-out; } .dashboard-card:hover { transform: translateY(-3px); box-shadow: 0 12px 30px rgba(0, 0, 0, 0.12); } .nav-item { position: relative; } .nav-item::after { content: ''; position: absolute; width: 0; height: 2px; bottom: -4px; left: 0; background: linear-gradient(to right, theme('colors.financial.accent'), theme('colors.financial.light-accent')); transition: width 0.3s ease; border-radius: 2px; } .nav-item:hover::after, .nav-item.active::after { width: 100%; } .chat-container { height: calc(100vh - 64px); } .message-bubble { position: relative; } .message-bubble-ai { border-top-left-radius: 4px; } .message-bubble-user { border-top-right-radius: 4px; } /* Thinking animation - Enhanced */ .thinking-brain { position: relative; width: 32px; height: 32px; margin-bottom: 4px; display: flex; align-items: center; justify-content: center; } .thinking-brain-small { position: relative; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; } .thinking-brain-svg { z-index: 2; } .thinking-waves-enhanced { position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: flex; justify-content: center; align-items: center; z-index: 1; } .thinking-waves-enhanced span { position: absolute; border: 1.5px solid var(--financial-accent, #7C3AED); border-radius: 50%; opacity: 0; animation: thinking-wave 2.5s ease-out infinite; } .thinking-waves-enhanced span:nth-child(1) { width: 100%; height: 100%; animation-delay: 0s; } .thinking-waves-enhanced span:nth-child(2) { width: 80%; height: 80%; animation-delay: 0.3s; } .thinking-waves-enhanced span:nth-child(3) { width: 60%; height: 60%; animation-delay: 0.6s; } @keyframes thinking-wave { 0% { transform: scale(0.5); opacity: 0.3; } 50% { opacity: 0.7; } 100% { transform: scale(1.4); opacity: 0; } } .thinking-dots-container { display: inline-flex; align-items: center; } .thinking-dot { width: 4px; height: 4px; border-radius: 50%; background-color: var(--muted-foreground); margin: 0 2px; opacity: 0.3; transition: opacity 0.2s ease; } .thinking-dot-active { opacity: 1; } /* Collapsible thinking block */ .think-collapsible { @apply bg-financial-accent/5 dark:bg-financial-accent/10 rounded-md overflow-hidden; transition: all 0.3s ease; border-left: 3px solid var(--financial-accent, #7C3AED); background: linear-gradient(to right, rgba(124, 58, 237, 0.05), transparent); } .think-collapsible:hover { background: linear-gradient(to right, rgba(124, 58, 237, 0.1), rgba(124, 58, 237, 0.02)); } .think-header { @apply px-3 py-2 text-financial-accent; } .think-block { @apply bg-financial-accent/5 dark:bg-financial-accent/10 p-3 rounded-md text-muted-foreground; position: relative; } /* Variations UI */ .variations-container { margin-top: 0.5rem; border-top: 1px solid var(--border); padding-top: 0.5rem; } .variation-tabs { display: flex; gap: 0.5rem; } .variation-tab { font-size: 0.75rem; padding: 0.25rem 0.5rem; border-radius: 0.25rem; border: 1px solid var(--border); cursor: pointer; transition: background-color 0.2s, border-color 0.2s; } .variation-tab:hover { background-color: var(--accent); } .variation-tab.active { background-color: var(--financial-accent); color: white; border-color: var(--financial-accent); } .typing-indicator span { @apply inline-block h-2 w-2 rounded-full bg-current; animation: typing-bounce 1.4s infinite ease-in-out both; } .typing-indicator span:nth-child(1) { animation-delay: -0.32s; } .typing-indicator span:nth-child(2) { animation-delay: -0.16s; } @keyframes typing-bounce { 0%, 80%, 100% { transform: scale(0.6); } 40% { transform: scale(1.0); } } /* Enhanced glass effect */ .neo-glass { @apply bg-white/80 dark:bg-card/80 backdrop-blur-xl; box-shadow: 0 4px 24px -6px rgba(0, 0, 0, 0.12), 0 12px 48px -4px rgba(0, 0, 0, 0.1); } .input-container { @apply border border-border dark:border-border backdrop-blur-md rounded-xl; background: linear-gradient(to bottom right, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.7)); box-shadow: 0 2px 10px rgba(0, 0, 0, 0.03), 0 0 0 1px rgba(255, 255, 255, 0.8); } .dark .input-container { background: linear-gradient(to bottom right, rgba(30, 41, 59, 0.7), rgba(30, 41, 59, 0.5)); box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(255, 255, 255, 0.1); } /* Enhanced message styles */ .message-container { @apply transition-all duration-300; } .message-bubble { box-shadow: 0 1px 8px rgba(0, 0, 0, 0.08); } /* Glow effect */ .glow-accent { box-shadow: 0 0 15px rgba(var(--accent), 0.5); } /* Code block styling */ pre code { @apply p-4 rounded-lg text-sm block overflow-x-auto; } .code-block { @apply relative; } .code-block-header { @apply flex items-center justify-between px-3 py-1.5 bg-muted/70 border-b border-border rounded-t-lg; } .retry-button { @apply transition-transform hover:scale-105 active:scale-95; } /* High-tech progress bars */ .progress-bar { @apply h-1.5 bg-muted/50 rounded-full overflow-hidden; } .progress-bar-fill { height: 100%; background: linear-gradient(90deg, theme('colors.financial.accent'), theme('colors.financial.light-accent')); border-radius: inherit; transition: width 0.5s ease; } /* Modern pulse animation */ @keyframes pulse-glow { 0% { box-shadow: 0 0 0 0 rgba(var(--accent), 0.7); } 70% { box-shadow: 0 0 0 10px rgba(var(--accent), 0); } 100% { box-shadow: 0 0 0 0 rgba(var(--accent), 0); } } .pulse-accent { animation: pulse-glow 2s infinite; } /* High-tech button styles */ .tech-button { @apply relative overflow-hidden; transition: all 0.3s; } .tech-button::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(120deg, transparent, rgba(255, 255, 255, 0.2), transparent); transform: translateX(-100%); } .tech-button:hover::before { transform: translateX(100%); transition: transform 0.5s; } /* Chat bubble styles */ .thinking-dot { @apply inline-block rounded-full bg-financial-accent; } .thinking-dot-active { @apply animate-pulse; } @keyframes pulse { 0%, 100% { transform: scale(0.8); opacity: 0.5; } 50% { transform: scale(1.2); opacity: 0.8; } } .animate-pulse { animation: pulse 1.5s infinite ease-in-out; } /* Thinking text styles */ .thinking-text { @apply bg-gradient-to-r from-financial-accent to-financial-light-accent bg-clip-text text-transparent px-2 py-1 rounded; animation: thinking-glow 2s infinite alternate; } @keyframes thinking-glow { from { box-shadow: 0 0 5px rgba(var(--accent), 0.2); } to { box-shadow: 0 0 15px rgba(var(--accent), 0.5); } } /* Think tag styling */ .think-block { @apply bg-stone-50/70 dark:bg-stone-900/50 p-3 my-2 rounded-md italic text-muted-foreground; position: relative; overflow: hidden; backdrop-filter: blur(6px); } .think-block::before { content: ''; position: absolute; left: 0; top: 0; height: 100%; width: 4px; background: linear-gradient(to bottom, theme('colors.financial.accent'), theme('colors.financial.light-accent')); } .think-block::after { content: '💭'; position: absolute; right: 10px; bottom: 5px; opacity: 0.2; font-size: 2rem; } /* Message variations styling */ .variations-container { @apply border-t border-border/30 mt-2 pt-2; } .variation-tabs { @apply flex gap-1 overflow-x-auto pb-2 scrollbar-thin; } .variation-tab { @apply text-xs px-3 py-1.5 rounded-full bg-muted/50 text-muted-foreground hover:bg-muted transition-all cursor-pointer flex-shrink-0; } .variation-tab.active { @apply bg-financial-accent/20 text-financial-accent border border-financial-accent/30 font-medium; } @keyframes pulse-border { from { opacity: 0.5; } to { opacity: 1; } } /* Regeneration button pulse effect */ .regenerate-pulse { animation: regenerate-pulse 2s infinite; } @keyframes regenerate-pulse { 0% { box-shadow: 0 0 0 0 rgba(var(--accent), 0.4); } 70% { box-shadow: 0 0 0 6px rgba(var(--accent), 0); } 100% { box-shadow: 0 0 0 0 rgba(var(--accent), 0); } }