Files
Dash/apps/frontend/src/index.css
T
Tomas DvorakandDevin ddd29aad24 feat(frontend): restyle monitoring charts on the Beszel school
Ports Beszel's chart design language onto our recharts primitives:
titled card grid, area fills on a true time axis, unit-aware Y ticks,
sorted dotted tooltips, and legend chips. System detail gains stacked
per-container Docker CPU/memory, per-sensor temperature lines, load
1/5/15, and GPU usage/VRAM — all from data the agent already sends.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-22 17:05:34 +02:00

162 lines
4.3 KiB
CSS

@import "tailwindcss";
@import "tw-animate-css";
/* Design tokens — ported from mockups/d-bento-mono.html.
Semantic vars flip on [data-theme]; Tailwind utilities map via @theme.
shadcn/ui names (background, popover, ...) alias the same tokens. */
:root {
--ease: cubic-bezier(0.2, 0, 0, 1);
--radius: 0.5rem;
}
[data-theme="dark"] {
--bg: #0a0a0a;
--surface: #111111;
--surface-hover: #161616;
--border: rgba(255, 255, 255, 0.08);
--border-strong: rgba(255, 255, 255, 0.14);
--text: #fafafa;
--text-dim: #a1a1aa;
--text-faint: #52525b;
--accent: #3b82f6;
--up: #22c55e;
--down: #f59e0b;
--destructive: #ef4444;
--icon-bg: #1c1c1e;
--popover: #141414;
/* chart series palette (monitoring graphs) */
--chart-1: #3b82f6;
--chart-2: #10b981;
--chart-3: #8b5cf6;
--chart-4: #f59e0b;
--chart-5: #22d3ee;
--chart-6: #fb7185;
--chart-7: #a3e635;
--chart-8: #c084fc;
--background: var(--bg);
--foreground: var(--text);
--card: var(--surface);
--card-foreground: var(--text);
--popover-foreground: var(--text);
--primary: var(--text);
--primary-foreground: var(--bg);
--secondary: var(--surface);
--secondary-foreground: var(--text);
--muted: var(--surface-hover);
--muted-foreground: var(--text-dim);
--accent-foreground: var(--text);
--input: var(--border-strong);
--ring: var(--accent);
}
[data-theme="light"] {
--bg: #fafafa;
--surface: #ffffff;
--surface-hover: #f4f4f5;
--border: rgba(0, 0, 0, 0.08);
--border-strong: rgba(0, 0, 0, 0.16);
--text: #09090b;
--text-dim: #52525b;
--text-faint: #a1a1aa;
--accent: #2563eb;
--up: #16a34a;
--down: #d97706;
--destructive: #dc2626;
--icon-bg: #f4f4f5;
--popover: #ffffff;
/* chart series palette (monitoring graphs) — darker for light bg */
--chart-1: #2563eb;
--chart-2: #059669;
--chart-3: #7c3aed;
--chart-4: #d97706;
--chart-5: #0891b2;
--chart-6: #e11d48;
--chart-7: #65a30d;
--chart-8: #9333ea;
--background: var(--bg);
--foreground: var(--text);
--card: var(--surface);
--card-foreground: var(--text);
--popover-foreground: var(--text);
--primary: var(--text);
--primary-foreground: var(--bg);
--secondary: var(--surface);
--secondary-foreground: var(--text);
--muted: var(--surface-hover);
--muted-foreground: var(--text-dim);
--accent-foreground: var(--text);
--input: var(--border-strong);
--ring: var(--accent);
}
@theme inline {
--color-bg: var(--bg);
--color-surface: var(--surface);
--color-surface-hover: var(--surface-hover);
--color-border: var(--border);
--color-border-strong: var(--border-strong);
--color-text: var(--text);
--color-text-dim: var(--text-dim);
--color-text-faint: var(--text-faint);
--color-accent: var(--accent);
--color-up: var(--up);
--color-down: var(--down);
--color-destructive: var(--destructive);
--color-icon-bg: var(--icon-bg);
--color-popover: var(--popover);
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-card: var(--card);
--color-card-foreground: var(--card-foreground);
--color-popover-foreground: var(--popover-foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
--color-secondary: var(--secondary);
--color-secondary-foreground: var(--secondary-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-accent-foreground: var(--accent-foreground);
--color-input: var(--input);
--color-ring: var(--ring);
--radius-lg: var(--radius);
--radius-md: calc(var(--radius) - 2px);
--radius-sm: calc(var(--radius) - 4px);
--font-sans: "Geist Variable", ui-sans-serif, system-ui, -apple-system, sans-serif;
--font-mono: "Geist Mono Variable", ui-monospace, monospace;
--font-serif: "Instrument Serif", Georgia, serif;
--font-terminal: "JetBrains Mono Variable", ui-monospace, monospace;
}
@layer base {
html {
-webkit-font-smoothing: antialiased;
}
body {
background: var(--bg);
color: var(--text);
min-height: 100dvh;
transition:
background 200ms var(--ease),
color 200ms var(--ease);
}
:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
* {
transition: none !important;
}
}
}