wu981526092's picture
🚀 Deploy AgentGraph: Complete agent monitoring and knowledge graph system
c2ea5ed
@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;
}