@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) !important; border-color: rgba(99, 102, 241, 0.3) !important; 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) !important; border-left: 4px solid rgb(59, 130, 246) !important; box-shadow: inset 0 1px 3px rgba(59, 130, 246, 0.1); } .selected-2 { background-color: rgba(34, 197, 94, 0.08) !important; border-left: 4px solid rgb(34, 197, 94) !important; box-shadow: inset 0 1px 3px rgba(34, 197, 94, 0.1); } .selected:hover { background-color: rgba(59, 130, 246, 0.12) !important; } .selected-1:hover { background-color: rgba(59, 130, 246, 0.12) !important; } .selected-2:hover { background-color: rgba(34, 197, 94, 0.12) !important; } /* 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) !important; /* amber-400, 40% opacity - increased from 30% */ border: 1px solid rgba(251, 191, 36, 0.6) !important; /* amber border for better definition */ border-radius: 2px !important; } .current-highlight-decoration { background-color: rgba(251, 191, 36, 0.7) !important; /* amber-400, 70% opacity - increased from 60% */ border: 2px solid rgba(251, 191, 36, 0.9) !important; /* stronger amber border */ border-radius: 3px !important; animation: monacoHighlightPulse 1.5s ease-in-out; box-shadow: 0 0 8px rgba(251, 191, 36, 0.4) !important; /* subtle glow effect */ } @keyframes monacoHighlightPulse { 0% { background-color: rgba(251, 191, 36, 0.4) !important; box-shadow: 0 0 4px rgba(251, 191, 36, 0.3) !important; } 50% { background-color: rgba(251, 191, 36, 0.8) !important; box-shadow: 0 0 12px rgba(251, 191, 36, 0.6) !important; } 100% { background-color: rgba(251, 191, 36, 0.7) !important; box-shadow: 0 0 8px rgba(251, 191, 36, 0.4) !important; } } /* Monaco Editor theme adjustments */ .monaco-editor { --vscode-editor-background: transparent !important; } .monaco-editor .margin { background-color: rgba(0, 0, 0, 0.05) !important; } .monaco-editor.vs-dark .margin { background-color: rgba(255, 255, 255, 0.05) !important; } /* Enhanced text contrast for Monaco Editor */ .monaco-editor .mtk1 { /* Default text color - dark enough to be visible */ color: #1f2937 !important; /* gray-800 - dark and clearly visible */ } .monaco-editor .mtk2 { /* Comments - readable but subdued */ color: #6b7280 !important; /* gray-500 - visible grey for comments */ } .monaco-editor .mtk3 { /* Keywords - ensure good contrast */ color: #2563eb !important; /* blue-600 - darker blue for visibility */ } .monaco-editor .mtk4 { /* Strings - bright and readable */ color: #059669 !important; /* emerald-600 - darker green */ } .monaco-editor .mtk5 { /* Numbers - distinct color */ color: #d97706 !important; /* amber-600 - darker amber */ } .monaco-editor .mtk6 { /* Functions - prominent color */ color: #7c3aed !important; /* violet-600 - darker violet */ } /* Python-specific syntax highlighting improvements */ .monaco-editor .mtk7 { /* Python keywords */ color: #ea580c !important; /* orange-600 - darker orange */ font-weight: 600 !important; } .monaco-editor .mtk8 { /* Python strings */ color: #059669 !important; /* emerald-600 - darker green */ } .monaco-editor .mtk9 { /* Python comments */ color: #6b7280 !important; /* gray-500 - visible grey for comments */ font-style: italic !important; } /* 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 !important; /* 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 !important; color: #374151 !important; /* gray-700 - clearly visible */ } /* JSON-specific highlighting improvements */ .monaco-editor .token.property { color: #2563eb !important; /* blue-600 for JSON keys */ } .monaco-editor .token.string { color: #059669 !important; /* emerald-600 for JSON values */ } .monaco-editor .token.number { color: #d97706 !important; /* amber-600 for JSON numbers */ } /* Light theme overrides */ .monaco-editor:not(.vs-dark) .mtk1 { color: #1f2937 !important; /* gray-800 for light theme */ } .monaco-editor:not(.vs-dark) .mtk2 { color: #4b5563 !important; /* gray-600 - good contrast for light theme */ } .monaco-editor:not(.vs-dark) .mtk9 { color: #4b5563 !important; /* 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 !important; /* gray-700 - dark enough for light theme */ } /* Line number styling improvements */ .monaco-editor .line-numbers { color: #6b7280 !important; /* gray-500 - clearly visible line numbers */ } .monaco-editor.vs-dark .line-numbers { color: #9ca3af !important; /* gray-400 - lighter for dark theme */ } /* Selection and cursor improvements */ .monaco-editor .selected-text { background-color: rgba(59, 130, 246, 0.3) !important; /* blue selection */ } .monaco-editor .cursor { background-color: #f59e0b !important; /* amber cursor */ } /* Additional Monaco Editor token styling for better visibility */ .monaco-editor .token.comment { color: #6b7280 !important; /* gray-500 - visible comments */ font-style: italic !important; } .monaco-editor .token.keyword { color: #2563eb !important; /* blue-600 - darker keywords */ font-weight: 600 !important; } .monaco-editor .token.string { color: #059669 !important; /* emerald-600 - darker strings */ } .monaco-editor .token.number { color: #d97706 !important; /* amber-600 - darker numbers */ } .monaco-editor .token.function { color: #7c3aed !important; /* violet-600 - darker functions */ } .monaco-editor .token.operator { color: #dc2626 !important; /* red-600 - darker operators */ } .monaco-editor .token.punctuation { color: #374151 !important; /* gray-700 - visible punctuation */ } /* Python-specific tokens */ .monaco-editor .token.keyword.python { color: #ea580c !important; /* orange-600 - Python keywords */ } .monaco-editor .token.builtin.python { color: #7c3aed !important; /* violet-600 - Python builtins */ } /* Shell/Bash specific tokens */ .monaco-editor .token.keyword.shell { color: #059669 !important; /* emerald-600 - shell commands */ } .monaco-editor .token.string.shell { color: #d97706 !important; /* amber-600 - shell strings */ } /* SQL specific tokens */ .monaco-editor .token.keyword.sql { color: #2563eb !important; /* blue-600 - SQL keywords */ text-transform: uppercase !important; } /* General text improvements */ .monaco-editor .view-line { /* Ensure good line height and spacing */ line-height: 1.4 !important; } .monaco-editor .monaco-editor-background { /* Ensure background doesn't interfere */ background: transparent !important; } /* Improve visibility of whitespace characters */ .monaco-editor .whitespace { color: #9ca3af !important; /* gray-400 - subtle but visible */ } /* Light theme specific improvements */ .monaco-editor:not(.vs-dark) .token.comment { color: #4b5563 !important; /* gray-600 for light theme comments */ } .monaco-editor:not(.vs-dark) .token.keyword { color: #1d4ed8 !important; /* blue-700 for light theme keywords */ } .monaco-editor:not(.vs-dark) .token.string { color: #059669 !important; /* emerald-600 for light theme strings */ } .monaco-editor:not(.vs-dark) .token.punctuation { color: #374151 !important; /* 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 !important; /* gray-700 - clearly visible for all grey variations */ } /* Ensure minimum contrast for all text */ .monaco-editor .view-line span { min-height: 18px !important; } /* Override any remaining faint text - but preserve intentional colors */ .monaco-editor .view-line span[style*="color:"] { opacity: 1 !important; } /* 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; }