| @import "tailwindcss"; |
|
|
| |
| |
| |
| |
|
|
| :root { |
| |
| --bg-base: #0A0F14; |
| --bg-surface: #111820; |
| --bg-elevated: #19222D; |
| --bg-input: #0C1218; |
| --bg-hover: #1E2A36; |
|
|
| |
| --primary: #00D2B4; |
| --primary-hover: #00E8C8; |
| --primary-dim: #00A893; |
| --primary-ghost: rgba(0, 210, 180, 0.08); |
| --primary-glow: rgba(0, 210, 180, 0.15); |
|
|
| |
| --text-primary: #E8EDF2; |
| --text-secondary: #8899A6; |
| --text-muted: #5C6F7E; |
| --text-inverse: #0A0F14; |
|
|
| |
| --border: rgba(255, 255, 255, 0.06); |
| --border-hover: rgba(255, 255, 255, 0.12); |
| --border-active: rgba(0, 210, 180, 0.3); |
|
|
| |
| --success: #34D399; |
| --success-bg: rgba(52, 211, 153, 0.1); |
| --warning: #FBBF24; |
| --warning-bg: rgba(251, 191, 36, 0.1); |
| --error: #F87171; |
| --error-bg: rgba(248, 113, 113, 0.1); |
| --info: #60A5FA; |
| --info-bg: rgba(96, 165, 250, 0.1); |
|
|
| |
| --space-1: 4px; |
| --space-2: 8px; |
| --space-3: 12px; |
| --space-4: 16px; |
| --space-5: 20px; |
| --space-6: 24px; |
| --space-8: 32px; |
| --space-10: 40px; |
| --space-12: 48px; |
| --space-16: 64px; |
|
|
| |
| --radius-sm: 4px; |
| --radius: 8px; |
| --radius-md: 12px; |
| --radius-lg: 16px; |
| --radius-full: 9999px; |
|
|
| |
| --sidebar-width: 64px; |
|
|
| |
| --font-sans: 'Inter', var(--font-geist-sans), system-ui, sans-serif; |
| --font-mono: 'JetBrains Mono', var(--font-geist-mono), 'Fira Code', monospace; |
| } |
|
|
| |
| @theme inline { |
| --color-background: var(--bg-base); |
| --color-foreground: var(--text-primary); |
| --color-surface: var(--bg-surface); |
| --color-elevated: var(--bg-elevated); |
| --color-primary: var(--primary); |
| --color-primary-hover: var(--primary-hover); |
| --color-primary-dim: var(--primary-dim); |
| --color-primary-ghost: var(--primary-ghost); |
| --color-text-secondary: var(--text-secondary); |
| --color-text-muted: var(--text-muted); |
| --color-border: var(--border); |
| --color-border-hover: var(--border-hover); |
| --color-success: var(--success); |
| --color-warning: var(--warning); |
| --color-error: var(--error); |
| --color-info: var(--info); |
| --font-sans: var(--font-sans); |
| --font-mono: var(--font-mono); |
| } |
|
|
| |
|
|
| *, |
| *::before, |
| *::after { |
| box-sizing: border-box; |
| } |
|
|
| html { |
| scroll-behavior: smooth; |
| color-scheme: dark; |
| background-color: #0A0F14; |
| } |
|
|
| body { |
| background: #0A0F14 !important; |
| background-color: #0A0F14 !important; |
| color: var(--text-primary); |
| font-family: var(--font-sans); |
| -webkit-font-smoothing: antialiased; |
| -moz-osx-font-smoothing: grayscale; |
| } |
|
|
| |
| ::selection { |
| background: rgba(0, 210, 180, 0.25); |
| color: #fff; |
| } |
|
|
| |
| ::-webkit-scrollbar { |
| width: 6px; |
| height: 6px; |
| } |
|
|
| ::-webkit-scrollbar-track { |
| background: transparent; |
| } |
|
|
| ::-webkit-scrollbar-thumb { |
| background: var(--border-hover); |
| border-radius: var(--radius-full); |
| } |
|
|
| ::-webkit-scrollbar-thumb:hover { |
| background: var(--text-muted); |
| } |
|
|
| |
|
|
| @keyframes fade-in { |
| from { opacity: 0; transform: translateY(8px); } |
| to { opacity: 1; transform: translateY(0); } |
| } |
|
|
| @keyframes fade-up { |
| from { opacity: 0; transform: translateY(16px); } |
| to { opacity: 1; transform: translateY(0); } |
| } |
|
|
| @keyframes slide-in-right { |
| from { opacity: 0; transform: translateX(24px); } |
| to { opacity: 1; transform: translateX(0); } |
| } |
|
|
| @keyframes slide-in-left { |
| from { opacity: 0; transform: translateX(-24px); } |
| to { opacity: 1; transform: translateX(0); } |
| } |
|
|
| @keyframes pulse-glow { |
| 0%, 100% { box-shadow: 0 0 0 0 rgba(0, 210, 180, 0.2); } |
| 50% { box-shadow: 0 0 16px 4px rgba(0, 210, 180, 0.15); } |
| } |
|
|
| @keyframes shimmer { |
| 0% { background-position: -200% 0; } |
| 100% { background-position: 200% 0; } |
| } |
|
|
| @keyframes spin { |
| from { transform: rotate(0deg); } |
| to { transform: rotate(360deg); } |
| } |
|
|
| @keyframes flow-dots { |
| 0% { background-position: 0 0; } |
| 100% { background-position: 24px 0; } |
| } |
|
|
| |
|
|
| .animate-fade-in { |
| animation: fade-in 0.4s ease-out both; |
| } |
|
|
| .animate-fade-up { |
| animation: fade-up 0.5s ease-out both; |
| } |
|
|
| .animate-slide-right { |
| animation: slide-in-right 0.4s ease-out both; |
| } |
|
|
| .animate-pulse-glow { |
| animation: pulse-glow 2s ease-in-out infinite; |
| } |
|
|
| .animate-shimmer { |
| background: linear-gradient(90deg, transparent 25%, rgba(255,255,255,0.04) 50%, transparent 75%); |
| background-size: 200% 100%; |
| animation: shimmer 2s linear infinite; |
| } |
|
|
| .animate-spin-slow { |
| animation: spin 2s linear infinite; |
| } |
|
|
| |
| .stagger-children > * { |
| animation: fade-up 0.4s ease-out both; |
| } |
| .stagger-children > *:nth-child(1) { animation-delay: 0.05s; } |
| .stagger-children > *:nth-child(2) { animation-delay: 0.1s; } |
| .stagger-children > *:nth-child(3) { animation-delay: 0.15s; } |
| .stagger-children > *:nth-child(4) { animation-delay: 0.2s; } |
| .stagger-children > *:nth-child(5) { animation-delay: 0.25s; } |
| .stagger-children > *:nth-child(6) { animation-delay: 0.3s; } |
|
|
| |
|
|
| |
| .glass-card { |
| background: var(--bg-surface); |
| border: 1px solid var(--border); |
| border-radius: var(--radius); |
| backdrop-filter: blur(12px); |
| transition: border-color 0.2s ease, box-shadow 0.2s ease; |
| } |
|
|
| .glass-card:hover { |
| border-color: var(--border-hover); |
| } |
|
|
| .glass-card--interactive:hover { |
| border-color: var(--border-active); |
| box-shadow: 0 0 24px -8px rgba(0, 210, 180, 0.08); |
| cursor: pointer; |
| } |
|
|
| .glass-card--elevated { |
| background: var(--bg-elevated); |
| border-color: var(--border-hover); |
| } |
|
|
| |
| .mesh-gradient { |
| position: fixed; |
| inset: 0; |
| z-index: -1; |
| background: |
| radial-gradient(ellipse 60% 40% at 20% 80%, rgba(0, 210, 180, 0.04) 0%, transparent 60%), |
| radial-gradient(ellipse 50% 50% at 80% 20%, rgba(96, 165, 250, 0.03) 0%, transparent 60%), |
| radial-gradient(ellipse 40% 60% at 50% 50%, rgba(139, 92, 246, 0.02) 0%, transparent 60%); |
| pointer-events: none; |
| } |
|
|
| |
| .btn-primary { |
| display: inline-flex; |
| align-items: center; |
| justify-content: center; |
| gap: 8px; |
| padding: 10px 20px; |
| background: var(--primary); |
| color: var(--text-inverse); |
| font-weight: 600; |
| font-size: 14px; |
| border-radius: var(--radius); |
| border: none; |
| cursor: pointer; |
| transition: all 0.2s ease; |
| white-space: nowrap; |
| } |
|
|
| .btn-primary:hover { |
| background: var(--primary-hover); |
| box-shadow: 0 0 20px -4px rgba(0, 210, 180, 0.3); |
| } |
|
|
| .btn-primary:disabled { |
| opacity: 0.5; |
| cursor: not-allowed; |
| box-shadow: none; |
| } |
|
|
| .btn-secondary { |
| display: inline-flex; |
| align-items: center; |
| justify-content: center; |
| gap: 8px; |
| padding: 10px 20px; |
| background: transparent; |
| color: var(--text-primary); |
| font-weight: 600; |
| font-size: 14px; |
| border-radius: var(--radius); |
| border: 1px solid var(--border-hover); |
| cursor: pointer; |
| transition: all 0.2s ease; |
| white-space: nowrap; |
| } |
|
|
| .btn-secondary:hover { |
| background: var(--bg-hover); |
| border-color: var(--text-muted); |
| } |
|
|
| .btn-ghost { |
| display: inline-flex; |
| align-items: center; |
| justify-content: center; |
| gap: 8px; |
| padding: 10px 20px; |
| background: transparent; |
| color: var(--primary); |
| font-weight: 600; |
| font-size: 14px; |
| border-radius: var(--radius); |
| border: none; |
| cursor: pointer; |
| transition: all 0.2s ease; |
| white-space: nowrap; |
| } |
|
|
| .btn-ghost:hover { |
| background: var(--primary-ghost); |
| } |
|
|
| |
| .input-field { |
| width: 100%; |
| padding: 10px 14px; |
| background: var(--bg-input); |
| border: 1px solid var(--border); |
| border-radius: var(--radius); |
| color: var(--text-primary); |
| font-size: 14px; |
| font-family: var(--font-sans); |
| transition: border-color 0.2s ease, box-shadow 0.2s ease; |
| outline: none; |
| } |
|
|
| .input-field::placeholder { |
| color: var(--text-muted); |
| } |
|
|
| .input-field:focus { |
| border-color: var(--primary); |
| box-shadow: 0 0 0 3px rgba(0, 210, 180, 0.1); |
| } |
|
|
| .input-field--mono { |
| font-family: var(--font-mono); |
| font-size: 13px; |
| } |
|
|
| |
| .input-label { |
| display: block; |
| font-size: 12px; |
| font-weight: 600; |
| font-family: var(--font-mono); |
| letter-spacing: 0.05em; |
| text-transform: uppercase; |
| color: var(--text-secondary); |
| margin-bottom: 6px; |
| } |
|
|
| |
| .badge { |
| display: inline-flex; |
| align-items: center; |
| gap: 4px; |
| padding: 3px 10px; |
| font-size: 11px; |
| font-weight: 600; |
| font-family: var(--font-mono); |
| letter-spacing: 0.02em; |
| border-radius: var(--radius-sm); |
| white-space: nowrap; |
| } |
|
|
| .badge--primary { |
| background: var(--primary-ghost); |
| color: var(--primary); |
| border: 1px solid rgba(0, 210, 180, 0.2); |
| } |
|
|
| .badge--success { |
| background: var(--success-bg); |
| color: var(--success); |
| border: 1px solid rgba(52, 211, 153, 0.2); |
| } |
|
|
| .badge--warning { |
| background: var(--warning-bg); |
| color: var(--warning); |
| border: 1px solid rgba(251, 191, 36, 0.2); |
| } |
|
|
| .badge--error { |
| background: var(--error-bg); |
| color: var(--error); |
| border: 1px solid rgba(248, 113, 113, 0.2); |
| } |
|
|
| .badge--info { |
| background: var(--info-bg); |
| color: var(--info); |
| border: 1px solid rgba(96, 165, 250, 0.2); |
| } |
|
|
| .badge--neutral { |
| background: rgba(255, 255, 255, 0.04); |
| color: var(--text-secondary); |
| border: 1px solid var(--border); |
| } |
|
|
| |
| .pipeline-connector { |
| width: 2px; |
| height: 32px; |
| margin: 0 auto; |
| background: linear-gradient(to bottom, var(--primary-dim), var(--border)); |
| position: relative; |
| } |
|
|
| .pipeline-connector--active { |
| background: var(--primary); |
| box-shadow: 0 0 8px rgba(0, 210, 180, 0.3); |
| } |
|
|
| .pipeline-connector--pending { |
| background: var(--border); |
| } |
|
|
| |
| .terminal { |
| background: #05070A; |
| border: 1px solid var(--border); |
| border-radius: var(--radius); |
| font-family: var(--font-mono); |
| font-size: 12px; |
| line-height: 1.7; |
| overflow-y: auto; |
| padding: var(--space-4); |
| } |
|
|
| .terminal-line { |
| display: flex; |
| gap: 8px; |
| } |
|
|
| .terminal-time { |
| color: var(--text-muted); |
| flex-shrink: 0; |
| } |
|
|
| .terminal-event { |
| color: var(--primary); |
| } |
|
|
| .terminal-detail { |
| color: var(--text-secondary); |
| } |
|
|
| .terminal-error { |
| color: var(--error); |
| } |
|
|
| |
| .progress-bar { |
| height: 6px; |
| background: rgba(255, 255, 255, 0.06); |
| border-radius: var(--radius-full); |
| overflow: hidden; |
| } |
|
|
| .progress-bar__fill { |
| height: 100%; |
| border-radius: var(--radius-full); |
| transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1); |
| } |
|
|
| |
| .empty-state { |
| text-align: center; |
| padding: var(--space-16) var(--space-8); |
| } |
|
|
| .empty-state__icon { |
| width: 56px; |
| height: 56px; |
| margin: 0 auto var(--space-6); |
| border-radius: var(--radius-md); |
| background: var(--primary-ghost); |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| color: var(--primary); |
| font-size: 24px; |
| } |
|
|
| |
|
|
| @media (prefers-reduced-motion: reduce) { |
| *, |
| *::before, |
| *::after { |
| animation-duration: 0.01ms !important; |
| animation-iteration-count: 1 !important; |
| transition-duration: 0.01ms !important; |
| } |
| } |
|
|