Spaces:
Running
Running
| @tailwind base; | |
| @tailwind components; | |
| @tailwind utilities; | |
| @layer base { | |
| :root { | |
| --background: 0 0% 100%; | |
| --foreground: 240 10% 3.9%; | |
| --card: 0 0% 100%; | |
| --card-foreground: 240 10% 3.9%; | |
| --popover: 0 0% 100%; | |
| --popover-foreground: 240 10% 3.9%; | |
| --primary: 262 83% 58%; | |
| --primary-foreground: 210 40% 98%; | |
| --secondary: 240 4.8% 95.9%; | |
| --secondary-foreground: 240 5.9% 10%; | |
| --muted: 240 4.8% 95.9%; | |
| --muted-foreground: 240 3.8% 46.1%; | |
| --accent: 240 4.8% 95.9%; | |
| --accent-foreground: 240 5.9% 10%; | |
| --destructive: 0 84.2% 60.2%; | |
| --destructive-foreground: 210 40% 98%; | |
| --border: 240 5.9% 90%; | |
| --input: 240 5.9% 90%; | |
| --ring: 262 83% 58%; | |
| --radius: 0.5rem; | |
| } | |
| .dark { | |
| --background: 240 10% 3.9%; | |
| --foreground: 210 40% 98%; | |
| --card: 240 10% 3.9%; | |
| --card-foreground: 210 40% 98%; | |
| --popover: 240 10% 3.9%; | |
| --popover-foreground: 210 40% 98%; | |
| --primary: 262 83% 58%; | |
| --primary-foreground: 210 40% 98%; | |
| --secondary: 240 3.7% 15.9%; | |
| --secondary-foreground: 210 40% 98%; | |
| --muted: 240 3.7% 15.9%; | |
| --muted-foreground: 240 5% 64.9%; | |
| --accent: 240 3.7% 15.9%; | |
| --accent-foreground: 210 40% 98%; | |
| --destructive: 0 62.8% 30.6%; | |
| --destructive-foreground: 210 40% 98%; | |
| --border: 240 3.7% 15.9%; | |
| --input: 240 3.7% 15.9%; | |
| --ring: 262 83% 58%; | |
| } | |
| } | |
| @layer base { | |
| * { | |
| @apply border-border; | |
| } | |
| html, | |
| body, | |
| #root { | |
| height: 100%; | |
| margin: 0; | |
| padding: 0; | |
| } | |
| body { | |
| @apply bg-background text-foreground; | |
| font-feature-settings: "rlig" 1, "calt" 1; | |
| } | |
| } | |
| /* Glassmorphism utility classes */ | |
| @layer utilities { | |
| .glass-card { | |
| background: rgba(255, 255, 255, 0.1); | |
| backdrop-filter: blur(20px); | |
| -webkit-backdrop-filter: blur(20px); | |
| border: 1px solid rgba(255, 255, 255, 0.2); | |
| box-shadow: | |
| 0 8px 32px rgba(0, 0, 0, 0.1), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.2); | |
| transition: all 0.3s ease; | |
| } | |
| .glass-card:hover { | |
| background: rgba(255, 255, 255, 0.15); | |
| border: 1px solid rgba(255, 255, 255, 0.3); | |
| box-shadow: | |
| 0 12px 48px rgba(0, 0, 0, 0.15), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.3); | |
| transform: translateY(-2px); | |
| } | |
| .dark .glass-card { | |
| background: rgba(255, 255, 255, 0.05); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| box-shadow: | |
| 0 8px 32px rgba(0, 0, 0, 0.3), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.1); | |
| } | |
| .dark .glass-card:hover { | |
| background: rgba(255, 255, 255, 0.08); | |
| border: 1px solid rgba(255, 255, 255, 0.15); | |
| box-shadow: | |
| 0 12px 48px rgba(0, 0, 0, 0.4), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.15); | |
| } | |
| /* Color-themed glassmorphism variants */ | |
| .glass-card-blue { | |
| background: linear-gradient(135deg, rgba(59, 130, 246, 0.1), rgba(59, 130, 246, 0.05)); | |
| border: 1px solid rgba(59, 130, 246, 0.2); | |
| } | |
| .glass-card-blue:hover { | |
| background: linear-gradient(135deg, rgba(59, 130, 246, 0.15), rgba(59, 130, 246, 0.08)); | |
| border: 1px solid rgba(59, 130, 246, 0.3); | |
| } | |
| .glass-card-green { | |
| background: linear-gradient(135deg, rgba(34, 197, 94, 0.1), rgba(34, 197, 94, 0.05)); | |
| border: 1px solid rgba(34, 197, 94, 0.2); | |
| } | |
| .glass-card-green:hover { | |
| background: linear-gradient(135deg, rgba(34, 197, 94, 0.15), rgba(34, 197, 94, 0.08)); | |
| border: 1px solid rgba(34, 197, 94, 0.3); | |
| } | |
| .glass-card-purple { | |
| background: linear-gradient(135deg, rgba(168, 85, 247, 0.1), rgba(168, 85, 247, 0.05)); | |
| border: 1px solid rgba(168, 85, 247, 0.2); | |
| } | |
| .glass-card-purple:hover { | |
| background: linear-gradient(135deg, rgba(168, 85, 247, 0.15), rgba(168, 85, 247, 0.08)); | |
| border: 1px solid rgba(168, 85, 247, 0.3); | |
| } | |
| .glass-card-orange { | |
| background: linear-gradient(135deg, rgba(249, 115, 22, 0.1), rgba(249, 115, 22, 0.05)); | |
| border: 1px solid rgba(249, 115, 22, 0.2); | |
| } | |
| .glass-card-orange:hover { | |
| background: linear-gradient(135deg, rgba(249, 115, 22, 0.15), rgba(249, 115, 22, 0.08)); | |
| border: 1px solid rgba(249, 115, 22, 0.3); | |
| } | |
| .glass-card-red { | |
| background: linear-gradient(135deg, rgba(239, 68, 68, 0.1), rgba(239, 68, 68, 0.05)); | |
| border: 1px solid rgba(239, 68, 68, 0.2); | |
| } | |
| .glass-card-red:hover { | |
| background: linear-gradient(135deg, rgba(239, 68, 68, 0.15), rgba(239, 68, 68, 0.08)); | |
| border: 1px solid rgba(239, 68, 68, 0.3); | |
| } | |
| /* Dark mode variants */ | |
| .dark .glass-card-blue { | |
| background: linear-gradient(135deg, rgba(59, 130, 246, 0.08), rgba(59, 130, 246, 0.03)); | |
| border: 1px solid rgba(59, 130, 246, 0.15); | |
| } | |
| .dark .glass-card-blue:hover { | |
| background: linear-gradient(135deg, rgba(59, 130, 246, 0.12), rgba(59, 130, 246, 0.06)); | |
| border: 1px solid rgba(59, 130, 246, 0.25); | |
| } | |
| .dark .glass-card-green { | |
| background: linear-gradient(135deg, rgba(34, 197, 94, 0.08), rgba(34, 197, 94, 0.03)); | |
| border: 1px solid rgba(34, 197, 94, 0.15); | |
| } | |
| .dark .glass-card-green:hover { | |
| background: linear-gradient(135deg, rgba(34, 197, 94, 0.12), rgba(34, 197, 94, 0.06)); | |
| border: 1px solid rgba(34, 197, 94, 0.25); | |
| } | |
| .dark .glass-card-purple { | |
| background: linear-gradient(135deg, rgba(168, 85, 247, 0.08), rgba(168, 85, 247, 0.03)); | |
| border: 1px solid rgba(168, 85, 247, 0.15); | |
| } | |
| .dark .glass-card-purple:hover { | |
| background: linear-gradient(135deg, rgba(168, 85, 247, 0.12), rgba(168, 85, 247, 0.06)); | |
| border: 1px solid rgba(168, 85, 247, 0.25); | |
| } | |
| .dark .glass-card-orange { | |
| background: linear-gradient(135deg, rgba(249, 115, 22, 0.08), rgba(249, 115, 22, 0.03)); | |
| border: 1px solid rgba(249, 115, 22, 0.15); | |
| } | |
| .dark .glass-card-orange:hover { | |
| background: linear-gradient(135deg, rgba(249, 115, 22, 0.12), rgba(249, 115, 22, 0.06)); | |
| border: 1px solid rgba(249, 115, 22, 0.25); | |
| } | |
| .dark .glass-card-red { | |
| background: linear-gradient(135deg, rgba(239, 68, 68, 0.08), rgba(239, 68, 68, 0.03)); | |
| border: 1px solid rgba(239, 68, 68, 0.15); | |
| } | |
| .dark .glass-card-red:hover { | |
| background: linear-gradient(135deg, rgba(239, 68, 68, 0.12), rgba(239, 68, 68, 0.06)); | |
| border: 1px solid rgba(239, 68, 68, 0.25); | |
| } | |
| /* Enhanced Tab Styling */ | |
| .enhanced-tabs { | |
| background: hsl(var(--muted) / 0.3); | |
| } | |
| .dark .enhanced-tabs [data-state=active] { | |
| background: hsl(var(--background)); | |
| border-color: hsl(var(--primary) / 0.3); | |
| box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); | |
| } | |
| .enhanced-tabs [data-state=active] { | |
| background: hsl(var(--background)); | |
| border-color: hsl(var(--primary) / 0.2); | |
| box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); | |
| } | |
| .dark .enhanced-tabs [data-state=inactive]:hover { | |
| background: hsl(var(--background) / 0.8); | |
| } | |
| /* Glass icon effects */ | |
| .glass-icon { | |
| background: rgba(255, 255, 255, 0.1); | |
| backdrop-filter: blur(10px); | |
| -webkit-backdrop-filter: blur(10px); | |
| border: 1px solid rgba(255, 255, 255, 0.2); | |
| transition: all 0.3s ease; | |
| } | |
| .glass-icon:hover { | |
| background: rgba(255, 255, 255, 0.2); | |
| transform: scale(1.05); | |
| } | |
| .dark .glass-icon { | |
| background: rgba(255, 255, 255, 0.05); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .dark .glass-icon:hover { | |
| background: rgba(255, 255, 255, 0.1); | |
| } | |
| /* Glass number glow effect */ | |
| .glass-number { | |
| text-shadow: 0 0 20px rgba(255, 255, 255, 0.3); | |
| transition: all 0.3s ease; | |
| } | |
| .glass-number:hover { | |
| text-shadow: 0 0 30px rgba(255, 255, 255, 0.5); | |
| } | |
| .dark .glass-number { | |
| text-shadow: 0 0 20px rgba(255, 255, 255, 0.2); | |
| } | |
| .dark .glass-number:hover { | |
| text-shadow: 0 0 30px rgba(255, 255, 255, 0.4); | |
| } | |
| } | |
| /* Custom scrollbar styles */ | |
| ::-webkit-scrollbar { | |
| width: 8px; | |
| height: 8px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| @apply bg-secondary; | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| @apply bg-muted-foreground/20 rounded; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| @apply bg-muted-foreground/30; | |
| } | |
| /* Loading animations */ | |
| @keyframes pulse { | |
| 0%, | |
| 100% { | |
| opacity: 1; | |
| } | |
| 50% { | |
| opacity: 0.5; | |
| } | |
| } | |
| .animate-pulse { | |
| animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; | |
| } | |
| /* Trace Details Modal Enhancements */ | |
| .modal-content { | |
| max-height: 90vh; | |
| overflow-y: auto; | |
| } | |
| /* Custom scroll bar for modal content */ | |
| .modal-content::-webkit-scrollbar { | |
| width: 6px; | |
| } | |
| .modal-content::-webkit-scrollbar-track { | |
| background: transparent; | |
| } | |
| .modal-content::-webkit-scrollbar-thumb { | |
| background: hsl(var(--border)); | |
| border-radius: 3px; | |
| } | |
| .modal-content::-webkit-scrollbar-thumb:hover { | |
| background: hsl(var(--muted-foreground)); | |
| } | |
| /* Knowledge Graph Tree Enhancements */ | |
| .kg-item { | |
| transition: all 0.2s ease-in-out; | |
| } | |
| .kg-item:hover { | |
| box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); | |
| } | |
| .kg-item.selected { | |
| border-color: hsl(var(--primary)); | |
| box-shadow: 0 0 0 1px hsl(var(--primary)); | |
| } | |
| /* Window KG animations */ | |
| .window-kgs-container { | |
| transition: all 0.3s ease-in-out; | |
| } | |
| .window-kgs-container.closing { | |
| opacity: 0; | |
| transform: translateY(-10px); | |
| } | |
| /* Progress bars in window stats */ | |
| .window-stat-progress.entities { | |
| background: linear-gradient(90deg, hsl(var(--primary)) 0%, hsl(var(--primary)/0.7) 100%); | |
| } | |
| .window-stat-progress.relations { | |
| background: linear-gradient(90deg, hsl(var(--secondary)) 0%, hsl(var(--secondary)/0.7) 100%); | |
| } | |
| /* Quick stats cards */ | |
| .quick-stats-card { | |
| transition: transform 0.2s ease-in-out; | |
| } | |
| .quick-stats-card:hover { | |
| transform: translateY(-2px); | |
| } | |
| /* Badge enhancements */ | |
| .kg-final-badge { | |
| background: linear-gradient(45deg, hsl(var(--primary)), hsl(var(--primary)/0.8)); | |
| color: white; | |
| border: none; | |
| } | |
| /* Action button group spacing */ | |
| .action-button-group { | |
| gap: 0.5rem; | |
| } | |
| .action-button-group>* { | |
| flex-shrink: 0; | |
| } | |
| /* Enhanced metadata display */ | |
| .metadata-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); | |
| gap: 1rem; | |
| } | |
| /* Responsive improvements */ | |
| @media (max-width: 768px) { | |
| .modal-content { | |
| max-height: 95vh; | |
| padding: 1rem; | |
| } | |
| .action-button-group { | |
| flex-direction: column; | |
| width: 100%; | |
| } | |
| .action-button-group>* { | |
| width: 100%; | |
| } | |
| .quick-stats-card { | |
| padding: 0.75rem; | |
| } | |
| } | |
| /* Loading states */ | |
| .loading-indicator { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 2rem; | |
| gap: 0.5rem; | |
| } | |
| .loading-indicator i { | |
| animation: spin 1s linear infinite; | |
| } | |
| @keyframes spin { | |
| from { | |
| transform: rotate(0deg); | |
| } | |
| to { | |
| transform: rotate(360deg); | |
| } | |
| } | |
| /* Empty state styling */ | |
| .empty-state { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 3rem 2rem; | |
| text-align: center; | |
| opacity: 0.8; | |
| } | |
| .empty-state-icon { | |
| opacity: 0.5; | |
| margin-bottom: 1rem; | |
| } | |
| /* Window KG table enhancements */ | |
| .window-kg-item { | |
| transition: background-color 0.2s ease-in-out; | |
| } | |
| .window-kg-item:hover { | |
| background-color: hsl(var(--muted)/0.5); | |
| } | |
| /* Graph Visualization Enhancements */ | |
| .graph-container { | |
| background: radial-gradient(circle at 20% 50%, rgba(120, 119, 198, 0.05) 0%, transparent 50%), | |
| radial-gradient(circle at 80% 20%, rgba(255, 107, 107, 0.05) 0%, transparent 50%), | |
| radial-gradient(circle at 40% 80%, rgba(78, 205, 196, 0.05) 0%, transparent 50%); | |
| } | |
| /* Modern Zone Highlighting Styles */ | |
| .zone-overlay-main { | |
| background: linear-gradient(135deg, | |
| rgba(16, 185, 129, 0.06) 0%, | |
| rgba(16, 185, 129, 0.02) 50%, | |
| transparent 100%); | |
| border: 1px solid rgba(16, 185, 129, 0.15); | |
| border-radius: 12px; | |
| backdrop-filter: blur(12px); | |
| box-shadow: | |
| 0 4px 16px rgba(16, 185, 129, 0.1), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.1); | |
| } | |
| .zone-overlay-isolated { | |
| background: linear-gradient(135deg, | |
| rgba(245, 158, 11, 0.06) 0%, | |
| rgba(245, 158, 11, 0.02) 50%, | |
| transparent 100%); | |
| border: 1px solid rgba(245, 158, 11, 0.15); | |
| border-radius: 12px; | |
| backdrop-filter: blur(12px); | |
| box-shadow: | |
| 0 4px 16px rgba(245, 158, 11, 0.1), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.1); | |
| } | |
| .zone-overlay-critical { | |
| background: linear-gradient(135deg, | |
| rgba(239, 68, 68, 0.06) 0%, | |
| rgba(239, 68, 68, 0.02) 50%, | |
| transparent 100%); | |
| border: 1px solid rgba(239, 68, 68, 0.15); | |
| border-radius: 12px; | |
| backdrop-filter: blur(12px); | |
| box-shadow: | |
| 0 4px 16px rgba(239, 68, 68, 0.1), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.1); | |
| } | |
| .zone-overlay-primary { | |
| background: linear-gradient(135deg, | |
| rgba(99, 102, 241, 0.06) 0%, | |
| rgba(99, 102, 241, 0.02) 50%, | |
| transparent 100%); | |
| border: 1px solid rgba(99, 102, 241, 0.15); | |
| border-radius: 12px; | |
| backdrop-filter: blur(12px); | |
| box-shadow: | |
| 0 4px 16px rgba(99, 102, 241, 0.1), | |
| inset 0 1px 0 rgba(255, 255, 255, 0.1); | |
| } | |
| .graph-link { | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1)); | |
| } | |
| .graph-link:hover { | |
| filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.15)); | |
| transform: translateZ(0); | |
| } | |
| .graph-link.selected { | |
| filter: drop-shadow(0 4px 12px rgba(0, 102, 204, 0.3)); | |
| animation: pulse-glow 2s ease-in-out infinite; | |
| } | |
| .graph-node { | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1)); | |
| } | |
| .graph-node:hover { | |
| filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.2)); | |
| transform: scale(1.05); | |
| } | |
| .graph-node.selected { | |
| filter: drop-shadow(0 6px 16px rgba(99, 102, 241, 0.4)); | |
| animation: gentle-pulse 2s ease-in-out infinite; | |
| } | |
| /* Zone Hover Effects */ | |
| .zone-highlight { | |
| transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| .zone-highlight:hover { | |
| background: rgba(99, 102, 241, 0.12) ; | |
| border-color: rgba(99, 102, 241, 0.3) ; | |
| transform: translateY(-1px); | |
| box-shadow: | |
| 0 0 0 3px rgba(99, 102, 241, 0.2), | |
| 0 4px 12px rgba(0, 0, 0, 0.1); | |
| } | |
| /* Node Highlight Effects */ | |
| .node-highlight { | |
| transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| .node-highlight:hover { | |
| transform: translateY(-1px); | |
| box-shadow: | |
| 0 0 0 3px rgba(99, 102, 241, 0.2), | |
| 0 4px 12px rgba(0, 0, 0, 0.1); | |
| } | |
| .node-selected { | |
| animation: gentle-pulse 2s ease-in-out infinite; | |
| } | |
| .graph-label { | |
| font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; | |
| font-weight: 500; | |
| text-shadow: 0 1px 3px rgba(255, 255, 255, 0.8), | |
| 0 1px 2px rgba(255, 255, 255, 0.9); | |
| transition: all 0.3s ease; | |
| } | |
| .graph-link-label { | |
| font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; | |
| font-weight: 600; | |
| font-size: 9px; | |
| text-shadow: 0 0 3px rgba(255, 255, 255, 0.9), | |
| 0 0 2px rgba(255, 255, 255, 0.8), | |
| 0 1px 1px rgba(0, 0, 0, 0.1); | |
| transition: all 0.3s ease; | |
| opacity: 0.85; | |
| } | |
| .graph-link-label:hover { | |
| opacity: 1; | |
| transform: scale(1.1); | |
| } | |
| /* Modern Highlight Labels */ | |
| .highlight-label { | |
| font-family: system-ui, -apple-system, sans-serif; | |
| font-weight: 600; | |
| font-size: 11px; | |
| color: rgba(255, 255, 255, 0.9); | |
| text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); | |
| backdrop-filter: blur(8px); | |
| background: rgba(0, 0, 0, 0.1); | |
| padding: 2px 6px; | |
| border-radius: 4px; | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| .highlight-label:hover { | |
| background: rgba(0, 0, 0, 0.15); | |
| border-color: rgba(255, 255, 255, 0.2); | |
| transform: translateY(-1px); | |
| } | |
| /* Zone Labels */ | |
| .zone-label-main { | |
| background: linear-gradient(135deg, rgba(16, 185, 129, 0.9), rgba(16, 185, 129, 0.7)); | |
| color: white; | |
| border: 1px solid rgba(16, 185, 129, 0.3); | |
| } | |
| .zone-label-isolated { | |
| background: linear-gradient(135deg, rgba(245, 158, 11, 0.9), rgba(245, 158, 11, 0.7)); | |
| color: white; | |
| border: 1px solid rgba(245, 158, 11, 0.3); | |
| } | |
| .zone-label-critical { | |
| background: linear-gradient(135deg, rgba(239, 68, 68, 0.9), rgba(239, 68, 68, 0.7)); | |
| color: white; | |
| border: 1px solid rgba(239, 68, 68, 0.3); | |
| } | |
| /* Modern Animations */ | |
| @keyframes gentle-pulse { | |
| 0%, | |
| 100% { | |
| box-shadow: 0 0 0 0 rgba(99, 102, 241, 0.4); | |
| transform: scale(1); | |
| } | |
| 50% { | |
| box-shadow: 0 0 0 8px rgba(99, 102, 241, 0.1); | |
| transform: scale(1.02); | |
| } | |
| } | |
| @keyframes pulse-glow { | |
| 0%, | |
| 100% { | |
| filter: drop-shadow(0 4px 12px rgba(99, 102, 241, 0.3)); | |
| } | |
| 50% { | |
| filter: drop-shadow(0 6px 20px rgba(99, 102, 241, 0.5)); | |
| } | |
| } | |
| @keyframes pulse-node { | |
| 0%, | |
| 100% { | |
| transform: scale(1); | |
| filter: drop-shadow(0 6px 16px rgba(99, 102, 241, 0.4)); | |
| } | |
| 50% { | |
| transform: scale(1.02); | |
| filter: drop-shadow(0 8px 24px rgba(99, 102, 241, 0.6)); | |
| } | |
| } | |
| @keyframes zone-highlight { | |
| 0%, | |
| 100% { | |
| background: rgba(99, 102, 241, 0.06); | |
| border-color: rgba(99, 102, 241, 0.15); | |
| } | |
| 50% { | |
| background: rgba(99, 102, 241, 0.12); | |
| border-color: rgba(99, 102, 241, 0.3); | |
| } | |
| } | |
| /* Arrow head improvements */ | |
| .graph-arrow { | |
| transition: all 0.3s ease; | |
| } | |
| /* Improved scrollbar for graph containers */ | |
| .graph-sidebar::-webkit-scrollbar { | |
| width: 6px; | |
| } | |
| .graph-sidebar::-webkit-scrollbar-track { | |
| background: transparent; | |
| } | |
| .graph-sidebar::-webkit-scrollbar-thumb { | |
| background: rgba(0, 0, 0, 0.1); | |
| border-radius: 3px; | |
| transition: background 0.3s ease; | |
| } | |
| .graph-sidebar::-webkit-scrollbar-thumb:hover { | |
| background: rgba(0, 0, 0, 0.2); | |
| } | |
| /* Graph Comparison Styles */ | |
| .selected { | |
| transition: all 0.2s ease-in-out; | |
| } | |
| .selected-1 { | |
| background-color: rgba(59, 130, 246, 0.08) ; | |
| border-left: 4px solid rgb(59, 130, 246) ; | |
| box-shadow: inset 0 1px 3px rgba(59, 130, 246, 0.1); | |
| } | |
| .selected-2 { | |
| background-color: rgba(34, 197, 94, 0.08) ; | |
| border-left: 4px solid rgb(34, 197, 94) ; | |
| box-shadow: inset 0 1px 3px rgba(34, 197, 94, 0.1); | |
| } | |
| .selected:hover { | |
| background-color: rgba(59, 130, 246, 0.12) ; | |
| } | |
| .selected-1:hover { | |
| background-color: rgba(59, 130, 246, 0.12) ; | |
| } | |
| .selected-2:hover { | |
| background-color: rgba(34, 197, 94, 0.12) ; | |
| } | |
| /* Selection Badge Animation */ | |
| @keyframes selectionPulse { | |
| 0% { | |
| transform: scale(0.8); | |
| opacity: 0; | |
| } | |
| 50% { | |
| transform: scale(1.1); | |
| } | |
| 100% { | |
| transform: scale(1); | |
| opacity: 1; | |
| } | |
| } | |
| .highlight-line { | |
| background-color: rgba(251, 191, 36, 0.4); | |
| /* amber-400, 40% */ | |
| } | |
| @media (prefers-color-scheme: dark) { | |
| .highlight-line { | |
| background-color: rgba(251, 191, 36, 0.2); | |
| } | |
| } | |
| /* Added by Example Trace UI overhaul */ | |
| .line-clamp-3 { | |
| overflow: hidden; | |
| display: -webkit-box; | |
| -webkit-line-clamp: 3; | |
| -webkit-box-orient: vertical; | |
| } | |
| /* Slide-in animation for right drawer */ | |
| @keyframes slideInRight { | |
| from { | |
| transform: translateX(100%); | |
| } | |
| to { | |
| transform: translateX(0); | |
| } | |
| } | |
| .animate-slideInRight { | |
| animation: slideInRight 0.25s ease-out forwards; | |
| } | |
| /* Enhanced trace viewer highlighting */ | |
| .current-highlight { | |
| animation: currentHighlightPulse 1.5s ease-in-out; | |
| background-color: rgba(251, 191, 36, 0.6); | |
| /* amber-400, 60% */ | |
| } | |
| .current-highlight-content { | |
| animation: contentHighlightGlow 1.5s ease-in-out; | |
| } | |
| .current-highlight-segment { | |
| transition: all 0.3s ease-in-out; | |
| } | |
| .current-highlight-pulse { | |
| animation: currentHighlightPulse 1.5s ease-in-out; | |
| } | |
| .highlight-segment { | |
| transition: background-color 0.2s ease-in-out; | |
| } | |
| @keyframes currentHighlightPulse { | |
| 0% { | |
| background-color: rgba(251, 191, 36, 0.2); | |
| /* amber-400, 20% */ | |
| } | |
| 50% { | |
| background-color: rgba(251, 191, 36, 0.8); | |
| /* amber-400, 80% */ | |
| } | |
| 100% { | |
| background-color: rgba(251, 191, 36, 0.4); | |
| /* amber-400, 40% */ | |
| } | |
| } | |
| @keyframes contentHighlightGlow { | |
| 0% { | |
| box-shadow: 0 0 0 rgba(251, 191, 36, 0); | |
| } | |
| 50% { | |
| box-shadow: 0 0 8px rgba(251, 191, 36, 0.6); | |
| } | |
| 100% { | |
| box-shadow: 0 0 0 rgba(251, 191, 36, 0); | |
| } | |
| } | |
| @media (prefers-color-scheme: dark) { | |
| .current-highlight { | |
| background-color: rgba(251, 191, 36, 0.3); | |
| } | |
| @keyframes currentHighlightPulse { | |
| 0% { | |
| background-color: rgba(251, 191, 36, 0.1); | |
| } | |
| 50% { | |
| background-color: rgba(251, 191, 36, 0.5); | |
| } | |
| 100% { | |
| background-color: rgba(251, 191, 36, 0.2); | |
| } | |
| } | |
| } | |
| /* Monaco Editor highlight decorations */ | |
| .highlight-decoration { | |
| background-color: rgba(251, 191, 36, 0.4) ; | |
| /* amber-400, 40% opacity - increased from 30% */ | |
| border: 1px solid rgba(251, 191, 36, 0.6) ; | |
| /* amber border for better definition */ | |
| border-radius: 2px ; | |
| } | |
| .current-highlight-decoration { | |
| background-color: rgba(251, 191, 36, 0.7) ; | |
| /* amber-400, 70% opacity - increased from 60% */ | |
| border: 2px solid rgba(251, 191, 36, 0.9) ; | |
| /* stronger amber border */ | |
| border-radius: 3px ; | |
| animation: monacoHighlightPulse 1.5s ease-in-out; | |
| box-shadow: 0 0 8px rgba(251, 191, 36, 0.4) ; | |
| /* subtle glow effect */ | |
| } | |
| @keyframes monacoHighlightPulse { | |
| 0% { | |
| background-color: rgba(251, 191, 36, 0.4) ; | |
| box-shadow: 0 0 4px rgba(251, 191, 36, 0.3) ; | |
| } | |
| 50% { | |
| background-color: rgba(251, 191, 36, 0.8) ; | |
| box-shadow: 0 0 12px rgba(251, 191, 36, 0.6) ; | |
| } | |
| 100% { | |
| background-color: rgba(251, 191, 36, 0.7) ; | |
| box-shadow: 0 0 8px rgba(251, 191, 36, 0.4) ; | |
| } | |
| } | |
| /* Monaco Editor theme adjustments */ | |
| .monaco-editor { | |
| --vscode-editor-background: transparent ; | |
| } | |
| .monaco-editor .margin { | |
| background-color: rgba(0, 0, 0, 0.05) ; | |
| } | |
| .monaco-editor.vs-dark .margin { | |
| background-color: rgba(255, 255, 255, 0.05) ; | |
| } | |
| /* Enhanced text contrast for Monaco Editor */ | |
| .monaco-editor .mtk1 { | |
| /* Default text color - dark enough to be visible */ | |
| color: #1f2937 ; | |
| /* gray-800 - dark and clearly visible */ | |
| } | |
| .monaco-editor .mtk2 { | |
| /* Comments - readable but subdued */ | |
| color: #6b7280 ; | |
| /* gray-500 - visible grey for comments */ | |
| } | |
| .monaco-editor .mtk3 { | |
| /* Keywords - ensure good contrast */ | |
| color: #2563eb ; | |
| /* blue-600 - darker blue for visibility */ | |
| } | |
| .monaco-editor .mtk4 { | |
| /* Strings - bright and readable */ | |
| color: #059669 ; | |
| /* emerald-600 - darker green */ | |
| } | |
| .monaco-editor .mtk5 { | |
| /* Numbers - distinct color */ | |
| color: #d97706 ; | |
| /* amber-600 - darker amber */ | |
| } | |
| .monaco-editor .mtk6 { | |
| /* Functions - prominent color */ | |
| color: #7c3aed ; | |
| /* violet-600 - darker violet */ | |
| } | |
| /* Python-specific syntax highlighting improvements */ | |
| .monaco-editor .mtk7 { | |
| /* Python keywords */ | |
| color: #ea580c ; | |
| /* orange-600 - darker orange */ | |
| font-weight: 600 ; | |
| } | |
| .monaco-editor .mtk8 { | |
| /* Python strings */ | |
| color: #059669 ; | |
| /* emerald-600 - darker green */ | |
| } | |
| .monaco-editor .mtk9 { | |
| /* Python comments */ | |
| color: #6b7280 ; | |
| /* gray-500 - visible grey for comments */ | |
| font-style: italic ; | |
| } | |
| /* Comprehensive grey text overrides - catch all possible variations */ | |
| .monaco-editor .view-line span[style*="color:#6a6a6a"], | |
| .monaco-editor .view-line span[style*="color:#808080"], | |
| .monaco-editor .view-line span[style*="color:#999999"], | |
| .monaco-editor .view-line span[style*="color:#999"], | |
| .monaco-editor .view-line span[style*="color:#888888"], | |
| .monaco-editor .view-line span[style*="color:#888"], | |
| .monaco-editor .view-line span[style*="color:#777777"], | |
| .monaco-editor .view-line span[style*="color:#777"], | |
| .monaco-editor .view-line span[style*="color:#666666"], | |
| .monaco-editor .view-line span[style*="color:#666"], | |
| .monaco-editor .view-line span[style*="color:#555555"], | |
| .monaco-editor .view-line span[style*="color:#555"], | |
| .monaco-editor .view-line span[style*="color:#444444"], | |
| .monaco-editor .view-line span[style*="color:#444"], | |
| .monaco-editor .view-line span[style*="color:#aaa"], | |
| .monaco-editor .view-line span[style*="color:#aaaaaa"], | |
| .monaco-editor .view-line span[style*="color:#bbb"], | |
| .monaco-editor .view-line span[style*="color:#bbbbbb"], | |
| .monaco-editor .view-line span[style*="color:#ccc"], | |
| .monaco-editor .view-line span[style*="color:#cccccc"], | |
| .monaco-editor .view-line span[style*="color:rgb(106,106,106)"], | |
| .monaco-editor .view-line span[style*="color:rgb(128,128,128)"], | |
| .monaco-editor .view-line span[style*="color:rgb(153,153,153)"], | |
| .monaco-editor .view-line span[style*="color:rgb(136,136,136)"], | |
| .monaco-editor .view-line span[style*="color:rgb(119,119,119)"], | |
| .monaco-editor .view-line span[style*="color:rgb(102,102,102)"], | |
| .monaco-editor .view-line span[style*="color:rgb(85,85,85)"], | |
| .monaco-editor .view-line span[style*="color:rgb(68,68,68)"] { | |
| color: #374151 ; | |
| /* gray-700 - dark enough to be clearly visible */ | |
| } | |
| /* Force visibility for any potentially invisible text */ | |
| .monaco-editor .view-line span[style*="opacity:0."], | |
| .monaco-editor .view-line span[style*="opacity: 0."] { | |
| opacity: 1 ; | |
| color: #374151 ; | |
| /* gray-700 - clearly visible */ | |
| } | |
| /* JSON-specific highlighting improvements */ | |
| .monaco-editor .token.property { | |
| color: #2563eb ; | |
| /* blue-600 for JSON keys */ | |
| } | |
| .monaco-editor .token.string { | |
| color: #059669 ; | |
| /* emerald-600 for JSON values */ | |
| } | |
| .monaco-editor .token.number { | |
| color: #d97706 ; | |
| /* amber-600 for JSON numbers */ | |
| } | |
| /* Light theme overrides */ | |
| .monaco-editor:not(.vs-dark) .mtk1 { | |
| color: #1f2937 ; | |
| /* gray-800 for light theme */ | |
| } | |
| .monaco-editor:not(.vs-dark) .mtk2 { | |
| color: #4b5563 ; | |
| /* gray-600 - good contrast for light theme */ | |
| } | |
| .monaco-editor:not(.vs-dark) .mtk9 { | |
| color: #4b5563 ; | |
| /* gray-600 - good contrast for light theme */ | |
| } | |
| /* Light theme grey text overrides */ | |
| .monaco-editor:not(.vs-dark) .view-line span[style*="color:#6a6a6a"], | |
| .monaco-editor:not(.vs-dark) .view-line span[style*="color:#808080"], | |
| .monaco-editor:not(.vs-dark) .view-line span[style*="color:#999999"], | |
| .monaco-editor:not(.vs-dark) .view-line span[style*="color:#999"], | |
| .monaco-editor:not(.vs-dark) .view-line span[style*="color:#888888"], | |
| .monaco-editor:not(.vs-dark) .view-line span[style*="color:#888"], | |
| .monaco-editor:not(.vs-dark) .view-line span[style*="color:#777777"], | |
| .monaco-editor:not(.vs-dark) .view-line span[style*="color:#777"], | |
| .monaco-editor:not(.vs-dark) .view-line span[style*="color:#666666"], | |
| .monaco-editor:not(.vs-dark) .view-line span[style*="color:#666"], | |
| .monaco-editor:not(.vs-dark) .view-line span[style*="color:#555555"], | |
| .monaco-editor:not(.vs-dark) .view-line span[style*="color:#555"] { | |
| color: #374151 ; | |
| /* gray-700 - dark enough for light theme */ | |
| } | |
| /* Line number styling improvements */ | |
| .monaco-editor .line-numbers { | |
| color: #6b7280 ; | |
| /* gray-500 - clearly visible line numbers */ | |
| } | |
| .monaco-editor.vs-dark .line-numbers { | |
| color: #9ca3af ; | |
| /* gray-400 - lighter for dark theme */ | |
| } | |
| /* Selection and cursor improvements */ | |
| .monaco-editor .selected-text { | |
| background-color: rgba(59, 130, 246, 0.3) ; | |
| /* blue selection */ | |
| } | |
| .monaco-editor .cursor { | |
| background-color: #f59e0b ; | |
| /* amber cursor */ | |
| } | |
| /* Additional Monaco Editor token styling for better visibility */ | |
| .monaco-editor .token.comment { | |
| color: #6b7280 ; | |
| /* gray-500 - visible comments */ | |
| font-style: italic ; | |
| } | |
| .monaco-editor .token.keyword { | |
| color: #2563eb ; | |
| /* blue-600 - darker keywords */ | |
| font-weight: 600 ; | |
| } | |
| .monaco-editor .token.string { | |
| color: #059669 ; | |
| /* emerald-600 - darker strings */ | |
| } | |
| .monaco-editor .token.number { | |
| color: #d97706 ; | |
| /* amber-600 - darker numbers */ | |
| } | |
| .monaco-editor .token.function { | |
| color: #7c3aed ; | |
| /* violet-600 - darker functions */ | |
| } | |
| .monaco-editor .token.operator { | |
| color: #dc2626 ; | |
| /* red-600 - darker operators */ | |
| } | |
| .monaco-editor .token.punctuation { | |
| color: #374151 ; | |
| /* gray-700 - visible punctuation */ | |
| } | |
| /* Python-specific tokens */ | |
| .monaco-editor .token.keyword.python { | |
| color: #ea580c ; | |
| /* orange-600 - Python keywords */ | |
| } | |
| .monaco-editor .token.builtin.python { | |
| color: #7c3aed ; | |
| /* violet-600 - Python builtins */ | |
| } | |
| /* Shell/Bash specific tokens */ | |
| .monaco-editor .token.keyword.shell { | |
| color: #059669 ; | |
| /* emerald-600 - shell commands */ | |
| } | |
| .monaco-editor .token.string.shell { | |
| color: #d97706 ; | |
| /* amber-600 - shell strings */ | |
| } | |
| /* SQL specific tokens */ | |
| .monaco-editor .token.keyword.sql { | |
| color: #2563eb ; | |
| /* blue-600 - SQL keywords */ | |
| text-transform: uppercase ; | |
| } | |
| /* General text improvements */ | |
| .monaco-editor .view-line { | |
| /* Ensure good line height and spacing */ | |
| line-height: 1.4 ; | |
| } | |
| .monaco-editor .monaco-editor-background { | |
| /* Ensure background doesn't interfere */ | |
| background: transparent ; | |
| } | |
| /* Improve visibility of whitespace characters */ | |
| .monaco-editor .whitespace { | |
| color: #9ca3af ; | |
| /* gray-400 - subtle but visible */ | |
| } | |
| /* Light theme specific improvements */ | |
| .monaco-editor:not(.vs-dark) .token.comment { | |
| color: #4b5563 ; | |
| /* gray-600 for light theme comments */ | |
| } | |
| .monaco-editor:not(.vs-dark) .token.keyword { | |
| color: #1d4ed8 ; | |
| /* blue-700 for light theme keywords */ | |
| } | |
| .monaco-editor:not(.vs-dark) .token.string { | |
| color: #059669 ; | |
| /* emerald-600 for light theme strings */ | |
| } | |
| .monaco-editor:not(.vs-dark) .token.punctuation { | |
| color: #374151 ; | |
| /* gray-700 for light theme punctuation */ | |
| } | |
| /* Additional catch-all for any remaining grey text */ | |
| .monaco-editor .view-line span[style*="color: #6"], | |
| .monaco-editor .view-line span[style*="color: #7"], | |
| .monaco-editor .view-line span[style*="color: #8"], | |
| .monaco-editor .view-line span[style*="color: #9"], | |
| .monaco-editor .view-line span[style*="color: #a"], | |
| .monaco-editor .view-line span[style*="color: #b"], | |
| .monaco-editor .view-line span[style*="color: #c"] { | |
| color: #374151 ; | |
| /* gray-700 - clearly visible for all grey variations */ | |
| } | |
| /* Ensure minimum contrast for all text */ | |
| .monaco-editor .view-line span { | |
| min-height: 18px ; | |
| } | |
| /* Override any remaining faint text - but preserve intentional colors */ | |
| .monaco-editor .view-line span[style*="color:"] { | |
| opacity: 1 ; | |
| } | |
| /* Markdown prose styling for context documents */ | |
| .prose { | |
| color: hsl(var(--foreground)); | |
| max-width: none; | |
| } | |
| .prose h1, | |
| .prose h2, | |
| .prose h3, | |
| .prose h4, | |
| .prose h5, | |
| .prose h6 { | |
| color: hsl(var(--foreground)); | |
| font-weight: 600; | |
| line-height: 1.25; | |
| margin-top: 1.5em; | |
| margin-bottom: 0.5em; | |
| } | |
| .prose h1 { | |
| font-size: 1.875rem; | |
| border-bottom: 1px solid hsl(var(--border)); | |
| padding-bottom: 0.5rem; | |
| } | |
| .prose h2 { | |
| font-size: 1.5rem; | |
| border-bottom: 1px solid hsl(var(--border)); | |
| padding-bottom: 0.25rem; | |
| } | |
| .prose h3 { | |
| font-size: 1.25rem; | |
| } | |
| .prose h4 { | |
| font-size: 1.125rem; | |
| } | |
| .prose p { | |
| margin-top: 1em; | |
| margin-bottom: 1em; | |
| line-height: 1.6; | |
| } | |
| .prose ul, | |
| .prose ol { | |
| margin-top: 1em; | |
| margin-bottom: 1em; | |
| padding-left: 1.5rem; | |
| } | |
| .prose li { | |
| margin-top: 0.25em; | |
| margin-bottom: 0.25em; | |
| } | |
| .prose blockquote { | |
| border-left: 4px solid hsl(var(--primary)); | |
| padding-left: 1rem; | |
| margin: 1.5em 0; | |
| font-style: italic; | |
| background: hsl(var(--muted) / 0.3); | |
| padding: 1rem; | |
| border-radius: 0.375rem; | |
| } | |
| .prose code { | |
| background: hsl(var(--muted)); | |
| padding: 0.125rem 0.25rem; | |
| border-radius: 0.25rem; | |
| font-size: 0.875em; | |
| font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', monospace; | |
| } | |
| .prose pre { | |
| background: hsl(var(--muted)); | |
| padding: 1rem; | |
| border-radius: 0.5rem; | |
| overflow-x: auto; | |
| margin: 1.5em 0; | |
| } | |
| .prose pre code { | |
| background: transparent; | |
| padding: 0; | |
| border-radius: 0; | |
| font-size: 0.875rem; | |
| } | |
| .prose a { | |
| color: hsl(var(--primary)); | |
| text-decoration: underline; | |
| text-decoration-color: hsl(var(--primary) / 0.3); | |
| transition: text-decoration-color 0.2s; | |
| } | |
| .prose a:hover { | |
| text-decoration-color: hsl(var(--primary)); | |
| } | |
| .prose table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| margin: 1.5em 0; | |
| } | |
| .prose th, | |
| .prose td { | |
| border: 1px solid hsl(var(--border)); | |
| padding: 0.5rem 1rem; | |
| text-align: left; | |
| } | |
| .prose th { | |
| background: hsl(var(--muted)); | |
| font-weight: 600; | |
| } | |
| .prose img { | |
| max-width: 100%; | |
| height: auto; | |
| border-radius: 0.5rem; | |
| margin: 1.5em 0; | |
| } | |
| .prose hr { | |
| border: none; | |
| border-top: 1px solid hsl(var(--border)); | |
| margin: 2em 0; | |
| } | |
| .prose strong { | |
| font-weight: 600; | |
| color: hsl(var(--foreground)); | |
| } | |
| .prose em { | |
| font-style: italic; | |
| } |