@tailwind base; @tailwind components; @tailwind utilities; :root { font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; line-height: 1.5; font-weight: 400; } /* Light mode (default) */ :root, .light { --color-bg: #f8fafc; --color-bg-secondary: #f1f5f9; --color-bg-tertiary: #e2e8f0; --color-text: #1e293b; --color-text-secondary: #475569; --color-text-muted: #94a3b8; --color-border: #e2e8f0; --color-border-light: #f1f5f9; /* Workflow node execution state colors */ --node-running-bg: #eff6ff; --node-completed-bg: #f0fdf4; --node-failed-bg: #fef2f2; --node-skipped-bg: #f3f4f6; color: var(--color-text); background-color: var(--color-bg); } /* Dark mode */ .dark { --color-bg: #0f172a; --color-bg-secondary: #1e293b; --color-bg-tertiary: #334155; --color-text: #f1f5f9; --color-text-secondary: #cbd5e1; --color-text-muted: #64748b; --color-border: #334155; --color-border-light: #1e293b; /* Workflow node execution state colors */ --node-running-bg: #1e3a5f; --node-completed-bg: #14532d; --node-failed-bg: #450a0a; --node-skipped-bg: #374151; color: var(--color-text); background-color: var(--color-bg); } body { margin: 0; min-height: 100vh; transition: background-color 0.2s ease, color 0.2s ease; } /* React Flow custom styles */ .react-flow__node { background: white; border: 1px solid #e2e8f0; border-radius: 8px; padding: 10px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .dark .react-flow__node { background: #1e293b; border-color: #334155; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); } .react-flow__node.selected { border-color: #0ea5e9; box-shadow: 0 0 0 2px rgba(14, 165, 233, 0.3); } .dark .react-flow__node.selected { box-shadow: 0 0 0 2px rgba(14, 165, 233, 0.4); } .react-flow__handle { width: 12px; height: 12px; background: #0ea5e9; border: 2px solid white; } .dark .react-flow__handle { border-color: #1e293b; } .react-flow__edge-path { stroke-width: 2; } /* Default edge color - will be overridden by inline styles for colored edges */ .react-flow__edge:not([style*="stroke"]) .react-flow__edge-path { stroke: #94a3b8; } .dark .react-flow__edge:not([style*="stroke"]) .react-flow__edge-path { stroke: #9ca3af; } .react-flow__edge.selected .react-flow__edge-path { stroke: #0ea5e9; stroke-width: 3; } /* Selection rectangle styling */ .react-flow__selection { background: rgba(14, 165, 233, 0.1); border: 1px dashed #0ea5e9; } .dark .react-flow__selection { background: rgba(14, 165, 233, 0.15); } /* React Flow background */ .react-flow__background { background-color: #f8fafc; } .dark .react-flow__background { background-color: #0f172a; } /* Grid dot styling for better visibility */ .react-flow__background pattern circle { fill: #cbd5e1; } .dark .react-flow__background pattern circle { fill: #475569; } /* React Flow controls */ .react-flow__controls { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .dark .react-flow__controls { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); } .dark .react-flow__controls-button { background: #1e293b; border-color: #334155; fill: #94a3b8; } .dark .react-flow__controls-button:hover { background: #334155; } /* React Flow minimap */ .dark .react-flow__minimap { background: #1e293b; } /* Scrollbar styling */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #94a3b8; } .dark ::-webkit-scrollbar-thumb { background: #475569; } .dark ::-webkit-scrollbar-thumb:hover { background: #64748b; } /* Monaco editor dark mode already handles itself */