@import "tailwindcss"; @custom-variant dark (&:is(.dark *)); @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --color-sidebar-ring: var(--sidebar-ring); --color-sidebar-border: var(--sidebar-border); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar: var(--sidebar); --color-chart-5: var(--chart-5); --color-chart-4: var(--chart-4); --color-chart-3: var(--chart-3); --color-chart-2: var(--chart-2); --color-chart-1: var(--chart-1); --color-ring: var(--ring); --color-input: var(--input); --color-border: var(--border); --color-destructive: var(--destructive); --color-accent-foreground: var(--accent-foreground); --color-accent: var(--accent); --color-muted-foreground: var(--muted-foreground); --color-muted: var(--muted); --color-secondary-foreground: var(--secondary-foreground); --color-secondary: var(--secondary); --color-primary-foreground: var(--primary-foreground); --color-primary: var(--primary); --color-popover-foreground: var(--popover-foreground); --color-popover: var(--popover); --color-card-foreground: var(--card-foreground); --color-card: var(--card); --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); } :root { --radius: 0.625rem; --background: #F8F6F2; --foreground: #1E1E1E; --card: #FFFFFF; --card-foreground: #1E1E1E; --popover: #FFFFFF; --popover-foreground: #1E1E1E; --primary: #0A4A8F; --primary-foreground: #FFFFFF; --secondary: #F8F6F2; --secondary-foreground: #1E1E1E; --muted: #F8F6F2; --muted-foreground: #6B7280; --accent: #B89B4E; --accent-foreground: #FFFFFF; --destructive: #dc2626; --border: #e5e7eb; --input: #e5e7eb; --ring: #0A4A8F; --chart-1: #0A4A8F; --chart-2: #3B82F6; --chart-3: #B89B4E; --chart-4: #6B7280; --chart-5: #1E1E1E; --sidebar: #FFFFFF; --sidebar-foreground: #1E1E1E; --sidebar-primary: #0A4A8F; --sidebar-primary-foreground: #FFFFFF; --sidebar-accent: #B89B4E; --sidebar-accent-foreground: #FFFFFF; --sidebar-border: #e5e7eb; --sidebar-ring: #0A4A8F; } .dark { --background: #121418; --foreground: #E5E7EB; --card: #1E2024; --card-foreground: #E5E7EB; --popover: #1E2024; --popover-foreground: #E5E7EB; --primary: #3B82F6; --primary-foreground: #FFFFFF; --secondary: #1E2024; --secondary-foreground: #E5E7EB; --muted: #1E2024; --muted-foreground: #9CA3AF; --accent: #DDAF3B; --accent-foreground: #FFFFFF; --destructive: #ef4444; --border: rgba(255, 255, 255, 0.1); --input: rgba(255, 255, 255, 0.15); --ring: #3B82F6; --chart-1: #3B82F6; --chart-2: #0A4A8F; --chart-3: #DDAF3B; --chart-4: #9CA3AF; --chart-5: #E5E7EB; --sidebar: #1E2024; --sidebar-foreground: #E5E7EB; --sidebar-primary: #3B82F6; --sidebar-primary-foreground: #FFFFFF; --sidebar-accent: #DDAF3B; --sidebar-accent-foreground: #FFFFFF; --sidebar-border: rgba(255, 255, 255, 0.1); --sidebar-ring: #3B82F6; } /* Savanna Tech Theme */ [data-theme="savanna-tech"] { --background: #F9FAFB; --foreground: #111827; --card: #FFFFFF; --card-foreground: #111827; --popover: #FFFFFF; --popover-foreground: #111827; --primary: #1E6043; --primary-foreground: #FFFFFF; --secondary: #F9FAFB; --secondary-foreground: #111827; --muted: #F9FAFB; --muted-foreground: #64748B; --accent: #C45A3A; --accent-foreground: #FFFFFF; --destructive: #dc2626; --border: #e5e7eb; --input: #e5e7eb; --ring: #1E6043; --chart-1: #1E6043; --chart-2: #34D399; --chart-3: #C45A3A; --chart-4: #64748B; --chart-5: #111827; --sidebar: #FFFFFF; --sidebar-foreground: #111827; --sidebar-primary: #1E6043; --sidebar-primary-foreground: #FFFFFF; --sidebar-accent: #C45A3A; --sidebar-accent-foreground: #FFFFFF; --sidebar-border: #e5e7eb; --sidebar-ring: #1E6043; } [data-theme="savanna-tech"].dark { --background: #0A0F1A; --foreground: #D1D5DB; --card: #111827; --card-foreground: #D1D5DB; --popover: #111827; --popover-foreground: #D1D5DB; --primary: #34D399; --primary-foreground: #FFFFFF; --secondary: #111827; --secondary-foreground: #D1D5DB; --muted: #111827; --muted-foreground: #94A3B8; --accent: #F07A5A; --accent-foreground: #FFFFFF; --destructive: #ef4444; --border: rgba(255, 255, 255, 0.1); --input: rgba(255, 255, 255, 0.15); --ring: #34D399; --chart-1: #34D399; --chart-2: #1E6043; --chart-3: #F07A5A; --chart-4: #94A3B8; --chart-5: #D1D5DB; --sidebar: #111827; --sidebar-foreground: #D1D5DB; --sidebar-primary: #34D399; --sidebar-primary-foreground: #FFFFFF; --sidebar-accent: #F07A5A; --sidebar-accent-foreground: #FFFFFF; --sidebar-border: rgba(255, 255, 255, 0.1); --sidebar-ring: #34D399; } @layer base { * { @apply border-border; } body { @apply bg-background text-foreground; } /* Mobile touch improvements */ @media (max-width: 768px) { /* Ensure minimum touch target sizes */ button, [role="button"], input[type="submit"], input[type="button"] { min-height: 44px; min-width: 44px; } /* Improve tap targets for interactive elements */ a, button, [role="button"], input, textarea, select { touch-action: manipulation; } /* Better text selection on mobile */ * { -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1); -webkit-touch-callout: none; -webkit-user-select: text; user-select: text; } /* Prevent zoom on input focus on iOS */ input[type="text"], input[type="email"], input[type="password"], input[type="search"], textarea { font-size: 16px; } } /* Smooth scrolling for better mobile experience */ html { scroll-behavior: smooth; } /* Better focus styles for accessibility */ *:focus-visible { outline: 2px solid hsl(var(--ring)); outline-offset: 2px; } } /* Hide all scrollbars globally */ ::-webkit-scrollbar { display: none; width: 0; height: 0; } ::-webkit-scrollbar-track { display: none; } ::-webkit-scrollbar-thumb { display: none; } ::-webkit-scrollbar-corner { display: none; } /* Firefox scrollbar - hide */ * { scrollbar-width: none; -ms-overflow-style: none; } /* Combined Gradient Backgrounds */ .gradient-judicial-savanna { background: linear-gradient(135deg, hsl(210 40% 15%) 0%, hsl(210 60% 25%) 25%, hsl(25 45% 35%) 50%, hsl(165 35% 20%) 75%, hsl(210 40% 15%) 100%); } .gradient-savanna-judicial { background: linear-gradient(135deg, hsl(165 35% 20%) 0%, hsl(25 45% 35%) 25%, hsl(210 60% 25%) 50%, hsl(165 35% 20%) 75%, hsl(25 45% 35%) 100%); } .gradient-blended-primary { background: linear-gradient(135deg, hsl(var(--primary)) 0%, hsl(var(--accent)) 50%, hsl(var(--primary)) 100%); } .gradient-blended-secondary { background: linear-gradient(135deg, hsl(var(--accent)) 0%, hsl(var(--primary)) 50%, hsl(var(--accent)) 100%); } /* Gradient Animation */ @keyframes gradient-x { 0%, 100% { background-size: 200% 200%; background-position: left center; } 50% { background-size: 200% 200%; background-position: right center; } } .animate-gradient-x { animation: gradient-x 3s ease infinite; background-size: 200% 200%; } /* AmaniQuery Message Animations */ @keyframes message-slide-in { 0% { opacity: 0; transform: translateY(20px) scale(0.95); } 100% { opacity: 1; transform: translateY(0) scale(1); } } @keyframes thinking-pulse { 0%, 100% { opacity: 0.6; transform: scale(1); } 50% { opacity: 1; transform: scale(1.05); } } @keyframes citation-glow { 0%, 100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4); } 50% { box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.1); } } @keyframes typing-indicator { 0%, 60%, 100% { transform: translateY(0); opacity: 0.7; } 30% { transform: translateY(-10px); opacity: 1; } } /* Message Animation Classes */ .animate-message-in { animation: message-slide-in 0.4s ease-out forwards; } .animate-thinking { animation: thinking-pulse 2s ease-in-out infinite; } .animate-citation-hover { animation: citation-glow 1.5s ease-in-out infinite; } .animate-typing { animation: typing-indicator 1.4s ease-in-out infinite; } /* Smooth transitions for interactive elements */ .transition-smooth { transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); } .transition-message { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .transition-panel { transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); } /* Hover effects */ .hover-lift:hover { transform: translateY(-2px); box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } .hover-glow:hover { box-shadow: 0 0 20px rgba(59, 130, 246, 0.3); } /* Thinking process animation */ @keyframes thinking-expand { 0% { opacity: 0; transform: translateY(-10px); } 100% { opacity: 1; transform: translateY(0); } } .animate-thinking-expand { animation: thinking-expand 0.3s ease-out forwards; } /* Source panel animations */ @keyframes source-slide-down { 0% { opacity: 0; transform: translateY(-20px); max-height: 0; } 100% { opacity: 1; transform: translateY(0); max-height: 500px; } } .animate-source-slide { animation: source-slide-down 0.4s ease-out forwards; } /* Input field animations */ @keyframes input-focus { 0% { transform: scale(1); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } } .animate-input-focus { animation: input-focus 0.2s ease-out; } /* Citation tooltip animation */ @keyframes tooltip-appear { 0% { opacity: 0; transform: translateY(10px) scale(0.9); } 100% { opacity: 1; transform: translateY(0) scale(1); } } .animate-tooltip { animation: tooltip-appear 0.2s ease-out forwards; } /* Action buttons animation */ @keyframes action-fade-in { 0% { opacity: 0; transform: translateX(10px); } 100% { opacity: 1; transform: translateX(0); } } .animate-action-in { animation: action-fade-in 0.2s ease-out forwards; } /* Staggered animations for multiple elements */ .stagger-1 { animation-delay: 0.1s; } .stagger-2 { animation-delay: 0.2s; } .stagger-3 { animation-delay: 0.3s; } .stagger-4 { animation-delay: 0.4s; } .stagger-5 { animation-delay: 0.5s; } /* Custom scrollbar for better UX */ .custom-scrollbar { scrollbar-width: thin; scrollbar-color: var(--primary) transparent; } .custom-scrollbar::-webkit-scrollbar { display: block; width: 6px; height: 6px; } .custom-scrollbar::-webkit-scrollbar-track { display: block; background: transparent; } .custom-scrollbar::-webkit-scrollbar-thumb { display: block; background-color: var(--primary); border-radius: 3px; } .custom-scrollbar::-webkit-scrollbar-thumb:hover { background-color: var(--accent); } /* Loading shimmer effect */ @keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } .animate-shimmer { background: linear-gradient( 90deg, transparent, rgba(255, 255, 255, 0.4), transparent ); background-size: 200% 100%; animation: shimmer 1.5s infinite; } /* Pulse animation for thinking states */ @keyframes gentle-pulse { 0%, 100% { opacity: 0.6; } 50% { opacity: 0.8; } } .animate-gentle-pulse { animation: gentle-pulse 2s ease-in-out infinite; }