Download brain/frontend/styles.css from MouleeswaranM/FairRelay: direct link, hf CLI and curl.
- Browser
- Download file 13.7 kB
-
https://huggingface.co/MouleeswaranM/FairRelay/resolve/refs%2Fpr%2F21/brain/frontend/styles.css
- Command line
-
hf download hf://MouleeswaranM/FairRelay@refs/pr/21/brain/frontend/styles.css
-
curl -L -o styles.css https://huggingface.co/MouleeswaranM/FairRelay/resolve/refs%2Fpr%2F21/brain/frontend/styles.css
13.7 kB
| /* ============================================ | |
| Live Agent Supervision Dashboard | |
| Dark Theme Styling | |
| ============================================ */ | |
| :root { | |
| /* Color Palette */ | |
| --bg-primary: #0a0f1a; | |
| --bg-secondary: #0d1929; | |
| --bg-card: #0f1e2e; | |
| --bg-card-hover: #142639; | |
| /* Accent Colors */ | |
| --accent-primary: #00d4aa; | |
| --accent-secondary: #00b894; | |
| --accent-glow: rgba(0, 212, 170, 0.4); | |
| --accent-blue: #3b82f6; | |
| --accent-yellow: #fbbf24; | |
| --accent-purple: #8b5cf6; | |
| /* Text Colors */ | |
| --text-primary: #ffffff; | |
| --text-secondary: #94a3b8; | |
| --text-muted: #64748b; | |
| /* Border Colors */ | |
| --border-primary: #1e3a5f; | |
| --border-accent: #00d4aa; | |
| /* Status Colors */ | |
| --status-active: #00d4aa; | |
| --status-processing: #fbbf24; | |
| --status-idle: #64748b; | |
| --status-error: #ef4444; | |
| /* Spacing */ | |
| --header-height: 60px; | |
| --footer-height: 40px; | |
| /* Transitions */ | |
| --transition-fast: 0.15s ease; | |
| --transition-normal: 0.3s ease; | |
| --transition-slow: 0.5s ease; | |
| } | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| body { | |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; | |
| background: var(--bg-primary); | |
| color: var(--text-primary); | |
| min-height: 100vh; | |
| overflow: hidden; | |
| } | |
| /* ============================================ | |
| Header Styles | |
| ============================================ */ | |
| .header { | |
| height: var(--header-height); | |
| background: var(--bg-secondary); | |
| border-bottom: 1px solid var(--border-primary); | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 0 24px; | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| z-index: 100; | |
| } | |
| .header-left { | |
| display: flex; | |
| align-items: center; | |
| gap: 16px; | |
| } | |
| .logo { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .header-title h1 { | |
| font-size: 18px; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| line-height: 1.2; | |
| } | |
| .header-title .subtitle { | |
| font-size: 12px; | |
| color: var(--text-muted); | |
| } | |
| .header-center { | |
| display: flex; | |
| gap: 12px; | |
| } | |
| .header-right { | |
| display: flex; | |
| align-items: center; | |
| gap: 16px; | |
| } | |
| /* Buttons */ | |
| .btn { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 8px 16px; | |
| border-radius: 6px; | |
| font-size: 13px; | |
| font-weight: 500; | |
| cursor: pointer; | |
| transition: all var(--transition-fast); | |
| border: none; | |
| outline: none; | |
| } | |
| .btn-secondary { | |
| background: var(--bg-card); | |
| color: var(--text-secondary); | |
| border: 1px solid var(--border-primary); | |
| } | |
| .btn-secondary:hover { | |
| background: var(--bg-card-hover); | |
| color: var(--text-primary); | |
| border-color: var(--accent-primary); | |
| } | |
| /* Status Indicators */ | |
| .status-indicator { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 13px; | |
| font-weight: 500; | |
| } | |
| .status-indicator.live { | |
| color: var(--status-active); | |
| } | |
| .status-dot { | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| background: var(--status-active); | |
| animation: pulse 2s infinite; | |
| } | |
| @keyframes pulse { | |
| 0%, 100% { opacity: 1; transform: scale(1); } | |
| 50% { opacity: 0.5; transform: scale(1.2); } | |
| } | |
| .status-badge { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 6px 12px; | |
| background: var(--bg-card); | |
| border: 1px solid var(--border-primary); | |
| border-radius: 20px; | |
| font-size: 12px; | |
| color: var(--text-secondary); | |
| } | |
| .status-badge.processing svg { | |
| color: var(--accent-yellow); | |
| animation: spin 2s linear infinite; | |
| } | |
| .status-badge.data-flows svg { | |
| color: var(--accent-primary); | |
| } | |
| .status-badge.agents svg { | |
| color: var(--accent-blue); | |
| } | |
| @keyframes spin { | |
| from { transform: rotate(0deg); } | |
| to { transform: rotate(360deg); } | |
| } | |
| /* ============================================ | |
| Canvas Container | |
| ============================================ */ | |
| .canvas-container { | |
| position: fixed; | |
| top: var(--header-height); | |
| left: 0; | |
| right: 0; | |
| bottom: var(--footer-height); | |
| overflow: hidden; | |
| background: | |
| radial-gradient(ellipse at center, rgba(0, 212, 170, 0.03) 0%, transparent 70%), | |
| var(--bg-primary); | |
| } | |
| .connections-layer { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| pointer-events: none; | |
| z-index: 1; | |
| } | |
| .nodes-container { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| z-index: 2; | |
| } | |
| /* ============================================ | |
| Agent Node Styles | |
| ============================================ */ | |
| .agent-node { | |
| position: absolute; | |
| background: var(--bg-card); | |
| border: 1px solid var(--border-primary); | |
| border-radius: 12px; | |
| padding: 16px 20px; | |
| min-width: 180px; | |
| cursor: pointer; | |
| transition: all var(--transition-normal); | |
| user-select: none; | |
| } | |
| .agent-node:hover { | |
| background: var(--bg-card-hover); | |
| border-color: var(--accent-primary); | |
| box-shadow: 0 0 30px var(--accent-glow); | |
| transform: translateY(-2px); | |
| } | |
| .agent-node.orchestrator { | |
| border-color: var(--accent-primary); | |
| box-shadow: 0 0 20px var(--accent-glow); | |
| min-width: 260px; | |
| } | |
| .agent-node.dragging { | |
| opacity: 0.8; | |
| cursor: grabbing; | |
| z-index: 1000; | |
| } | |
| .agent-icon { | |
| width: 36px; | |
| height: 36px; | |
| border-radius: 8px; | |
| background: linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-secondary) 100%); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| margin-bottom: 12px; | |
| } | |
| .agent-icon svg { | |
| width: 20px; | |
| height: 20px; | |
| color: var(--bg-primary); | |
| } | |
| .agent-name { | |
| font-size: 14px; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| margin-bottom: 4px; | |
| } | |
| .agent-description { | |
| font-size: 11px; | |
| color: var(--text-muted); | |
| margin-bottom: 12px; | |
| line-height: 1.4; | |
| } | |
| .agent-footer { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| padding-top: 12px; | |
| border-top: 1px solid var(--border-primary); | |
| } | |
| .agent-status { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| font-size: 11px; | |
| font-weight: 500; | |
| } | |
| .agent-status.active { | |
| color: var(--status-active); | |
| } | |
| .agent-status.processing { | |
| color: var(--status-processing); | |
| } | |
| .agent-status.idle { | |
| color: var(--status-idle); | |
| } | |
| .agent-status .dot { | |
| width: 6px; | |
| height: 6px; | |
| border-radius: 50%; | |
| background: currentColor; | |
| } | |
| .agent-status.active .dot { | |
| animation: pulse 2s infinite; | |
| } | |
| .agent-status.processing .dot { | |
| animation: blink 0.8s infinite; | |
| } | |
| @keyframes blink { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0.3; } | |
| } | |
| .agent-meta { | |
| font-size: 11px; | |
| color: var(--text-muted); | |
| } | |
| .processing-badge { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 4px; | |
| padding: 2px 8px; | |
| background: rgba(251, 191, 36, 0.15); | |
| border: 1px solid var(--accent-yellow); | |
| border-radius: 4px; | |
| font-size: 10px; | |
| color: var(--accent-yellow); | |
| margin-left: auto; | |
| } | |
| /* ============================================ | |
| Connection Lines | |
| ============================================ */ | |
| .connection-line { | |
| fill: none; | |
| stroke: var(--accent-primary); | |
| stroke-width: 2; | |
| filter: url(#glow); | |
| pointer-events: stroke; | |
| cursor: pointer; | |
| } | |
| .connection-line:hover { | |
| stroke-width: 3; | |
| } | |
| .connection-line-bg { | |
| fill: none; | |
| stroke: var(--accent-primary); | |
| stroke-width: 2; | |
| opacity: 0.3; | |
| } | |
| .connection-line-animated { | |
| fill: none; | |
| stroke: var(--accent-primary); | |
| stroke-width: 2; | |
| stroke-dasharray: 8, 4; | |
| animation: flow 1s linear infinite; | |
| filter: url(#glow); | |
| } | |
| @keyframes flow { | |
| from { stroke-dashoffset: 12; } | |
| to { stroke-dashoffset: 0; } | |
| } | |
| /* Data flow particles */ | |
| .data-particle { | |
| fill: var(--accent-primary); | |
| filter: url(#glow); | |
| } | |
| /* ============================================ | |
| Zoom Controls | |
| ============================================ */ | |
| .zoom-controls { | |
| position: absolute; | |
| bottom: 80px; | |
| left: 20px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 4px; | |
| z-index: 50; | |
| } | |
| .zoom-btn { | |
| width: 32px; | |
| height: 32px; | |
| background: var(--bg-card); | |
| border: 1px solid var(--border-primary); | |
| border-radius: 6px; | |
| color: var(--text-secondary); | |
| font-size: 18px; | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: all var(--transition-fast); | |
| } | |
| .zoom-btn:hover { | |
| background: var(--bg-card-hover); | |
| border-color: var(--accent-primary); | |
| color: var(--text-primary); | |
| } | |
| /* ============================================ | |
| Minimap | |
| ============================================ */ | |
| .minimap { | |
| position: absolute; | |
| bottom: 20px; | |
| right: 20px; | |
| width: 180px; | |
| height: 120px; | |
| background: var(--bg-secondary); | |
| border: 1px solid var(--border-primary); | |
| border-radius: 8px; | |
| overflow: hidden; | |
| z-index: 50; | |
| } | |
| .minimap-viewport { | |
| position: absolute; | |
| border: 2px solid var(--accent-primary); | |
| background: rgba(0, 212, 170, 0.1); | |
| border-radius: 4px; | |
| pointer-events: none; | |
| } | |
| .minimap-node { | |
| position: absolute; | |
| background: var(--accent-primary); | |
| border-radius: 2px; | |
| } | |
| .minimap-connection { | |
| position: absolute; | |
| background: var(--accent-primary); | |
| opacity: 0.5; | |
| height: 1px; | |
| } | |
| /* ============================================ | |
| Footer | |
| ============================================ */ | |
| .footer { | |
| position: fixed; | |
| bottom: 0; | |
| left: 0; | |
| right: 0; | |
| height: var(--footer-height); | |
| background: var(--bg-secondary); | |
| border-top: 1px solid var(--border-primary); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 8px; | |
| padding: 0 24px; | |
| z-index: 100; | |
| } | |
| .instruction { | |
| font-size: 12px; | |
| color: var(--text-muted); | |
| } | |
| .instruction .highlight { | |
| color: var(--accent-primary); | |
| font-weight: 500; | |
| } | |
| .separator { | |
| color: var(--text-muted); | |
| opacity: 0.5; | |
| } | |
| /* ============================================ | |
| Modal Styles | |
| ============================================ */ | |
| .modal { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: rgba(0, 0, 0, 0.7); | |
| display: none; | |
| align-items: center; | |
| justify-content: center; | |
| z-index: 1000; | |
| backdrop-filter: blur(4px); | |
| } | |
| .modal.active { | |
| display: flex; | |
| } | |
| .modal-content { | |
| background: var(--bg-secondary); | |
| border: 1px solid var(--border-primary); | |
| border-radius: 12px; | |
| max-width: 700px; | |
| width: 90%; | |
| max-height: 80vh; | |
| overflow: hidden; | |
| box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5); | |
| } | |
| .modal-content.terminal { | |
| background: #0d0d0d; | |
| } | |
| .terminal-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 12px 16px; | |
| background: #1a1a1a; | |
| border-bottom: 1px solid #333; | |
| } | |
| .terminal-title { | |
| font-size: 13px; | |
| font-weight: 500; | |
| color: var(--text-secondary); | |
| } | |
| .terminal-body { | |
| padding: 16px; | |
| max-height: 400px; | |
| overflow-y: auto; | |
| } | |
| .terminal-body pre { | |
| font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; | |
| font-size: 12px; | |
| line-height: 1.6; | |
| color: var(--accent-primary); | |
| white-space: pre-wrap; | |
| word-break: break-all; | |
| } | |
| .modal-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 16px 20px; | |
| border-bottom: 1px solid var(--border-primary); | |
| } | |
| .modal-title { | |
| font-size: 16px; | |
| font-weight: 600; | |
| } | |
| .modal-body { | |
| padding: 20px; | |
| max-height: 500px; | |
| overflow-y: auto; | |
| } | |
| .modal-body pre { | |
| font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; | |
| font-size: 12px; | |
| line-height: 1.6; | |
| color: var(--text-primary); | |
| background: var(--bg-card); | |
| padding: 16px; | |
| border-radius: 8px; | |
| overflow-x: auto; | |
| } | |
| .close-btn { | |
| width: 28px; | |
| height: 28px; | |
| background: none; | |
| border: none; | |
| color: var(--text-muted); | |
| font-size: 20px; | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| border-radius: 4px; | |
| transition: all var(--transition-fast); | |
| } | |
| .close-btn:hover { | |
| background: var(--bg-card); | |
| color: var(--text-primary); | |
| } | |
| /* ============================================ | |
| Scrollbar Styles | |
| ============================================ */ | |
| ::-webkit-scrollbar { | |
| width: 8px; | |
| height: 8px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| background: var(--bg-primary); | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| background: var(--border-primary); | |
| border-radius: 4px; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| background: var(--text-muted); | |
| } | |
| /* ============================================ | |
| Database Node Special Styling | |
| ============================================ */ | |
| .agent-node.database { | |
| border-color: var(--accent-blue); | |
| } | |
| .agent-node.database .agent-icon { | |
| background: linear-gradient(135deg, var(--accent-blue) 0%, #2563eb 100%); | |
| } | |
| .agent-node.database:hover { | |
| box-shadow: 0 0 30px rgba(59, 130, 246, 0.4); | |
| } | |
| /* ============================================ | |
| Responsive Adjustments | |
| ============================================ */ | |
| @media (max-width: 1200px) { | |
| .header-center { | |
| display: none; | |
| } | |
| } | |
| @media (max-width: 900px) { | |
| .status-badge { | |
| display: none; | |
| } | |
| .agent-node { | |
| min-width: 150px; | |
| padding: 12px 16px; | |
| } | |
| .agent-name { | |
| font-size: 12px; | |
| } | |
| .agent-description { | |
| font-size: 10px; | |
| } | |
| } | |