swarm-os / frontend /src /index.css
aryxn323's picture
Initial Space deployment with llama-cpp + React dashboard
8892a6c
@tailwind base;
@tailwind components;
@tailwind utilities;
/* ── Global Reset ── */
*, *::before, *::after {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
font-family: 'Inter', system-ui, sans-serif;
background-color: #09090b;
color: #a1a1aa;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
overflow: hidden;
}
#root {
width: 100vw;
height: 100vh;
overflow: hidden;
}
/* ── Custom Scrollbar ── */
::-webkit-scrollbar {
width: 6px;
height: 6px;
}
::-webkit-scrollbar-track {
background: #18181b;
}
::-webkit-scrollbar-thumb {
background: #3f3f46;
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: #52525b;
}
/* ── React Flow Dark Theme Overrides ── */
.react-flow__background {
background-color: #09090b !important;
}
.react-flow__controls {
background: #27272a !important;
border: 1px solid #3f3f46 !important;
border-radius: 8px !important;
overflow: hidden;
}
.react-flow__controls-button {
background: #27272a !important;
border-bottom: 1px solid #3f3f46 !important;
fill: #a1a1aa !important;
}
.react-flow__controls-button:hover {
background: #3f3f46 !important;
}
.react-flow__edge-path {
stroke: #3f3f46 !important;
stroke-width: 2 !important;
}
.react-flow__edge.animated .react-flow__edge-path {
stroke: #10b981 !important;
stroke-dasharray: 5 !important;
animation: dashdraw 0.5s linear infinite !important;
}
@keyframes dashdraw {
from {
stroke-dashoffset: 10;
}
}
/* ── Utility Classes ── */
.panel-card {
background-color: #18181b;
border: 1px solid #27272a;
border-radius: 0.5rem;
}
.terminal-embed {
background-color: #0d0d0d;
font-family: 'JetBrains Mono', monospace;
font-size: 0.75rem;
padding: 1rem;
border-radius: 0.375rem;
overflow-y: auto;
overflow-x: hidden;
}
/* ── Status Dot Animations ── */
@keyframes status-pulse {
0%, 100% { transform: scale(1); opacity: 1; }
50% { transform: scale(1.5); opacity: 0.5; }
}
.status-dot-live {
animation: status-pulse 2s ease-in-out infinite;
}
/* ── Gauge Warning Flash ── */
@keyframes flash-red {
0%, 100% { border-color: #27272a; }
50% { border-color: #ef4444; box-shadow: 0 0 12px rgba(239, 68, 68, 0.3); }
}
.gauge-warning {
animation: flash-red 1s ease-in-out 3;
}
/* ── Recharts Dark Tooltip Override ── */
.recharts-tooltip-wrapper .recharts-default-tooltip {
background-color: #18181b !important;
border: 1px solid #27272a !important;
border-radius: 6px !important;
color: #e4e4e7 !important;
}
.recharts-tooltip-wrapper .recharts-tooltip-label {
color: #a1a1aa !important;
}
.recharts-tooltip-wrapper .recharts-tooltip-item {
color: #e4e4e7 !important;
}
/* ── Recharts Bar Hover β€” prevent white flash ── */
.recharts-bar-rectangle:hover {
filter: brightness(1.2);
}
/* ── React Flow Edge Visibility ── */
.react-flow__edge-path {
stroke-width: 2px !important;
}
.react-flow__edge.animated .react-flow__edge-path {
stroke: #10b981 !important;
stroke-dasharray: 5 !important;
stroke-width: 2px !important;
}