@tangle-network/brand 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +3 -1
- package/package.json +1 -1
- package/src/styles/index.css +1 -0
- package/src/styles/theme.css +39 -8
- package/src/styles/themes.css +107 -0
- package/src/styles/tokens.css +28 -28
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.8.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 46592b3: Calmer chat/run design + named multi-theme system.
|
|
8
|
+
|
|
9
|
+
- `ChatMessage`/`RunGroup`: role labels move above the bubble (plain text-xs), avatar circles removed (`avatar`/`hideAvatar` are deprecated no-ops), `InlineToolItem` rows are taller with quiet inline failed/running text instead of uppercase pills. `ToolCallStep`/`ToolCallFeed` stories leave Storybook (source adapters remain).
|
|
10
|
+
- `@tangle-network/brand` adds `themes.css`: `[data-theme]` scopes (`aubergine`, `aubergine-light`, `arena`, `arena-light`, `tangle-light`) that re-skin every component through the `@theme` semantic mappings, plus a `Foundations/Theme Showcase` story.
|
|
11
|
+
|
|
12
|
+
## 0.7.0
|
|
13
|
+
|
|
14
|
+
### Minor Changes
|
|
15
|
+
|
|
16
|
+
- e199bc7: Fix the dark theme being unresponsive to token changes + harsh on dark surfaces — root cause was the `@theme` layer.
|
|
17
|
+
|
|
18
|
+
- **Single source of truth for semantic tokens.** `theme.css` now maps every shadcn/MD3 utility token (`--color-background/card/border/muted/popover/secondary/accent/destructive/ring/input` + `--color-surface-container*`) onto the `tokens.css` spine via `var()`, instead of leaving them undefined (forcing every app to re-define them) and hardcoding a now-stale `--color-depth-*` copy. Editing the spine in `tokens.css` now actually flows through to `bg-card` / `border-border` / `bg-muted` everywhere.
|
|
19
|
+
- **Comfortable dark surface ladder.** Lift the canvas off near-black (`#0b0b0d` → `#15151a`) and spread the surface/depth/MD3 ladder so panels separate by _fill_, with the border softened (`13%` → `16%` lightness) so it recedes instead of reading as a bright outline on black.
|
|
20
|
+
|
|
3
21
|
## 0.6.0
|
|
4
22
|
|
|
5
23
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Single source of truth for the Tangle design system. Design tokens, logo, and a Tailwind v4 theme preset, shared across every Tangle app (`tangle-website`, `sandbox-ui`, `evals`, `agent-builder`, product surfaces).
|
|
4
4
|
|
|
5
|
-
**Scope:** tokens, not components.
|
|
5
|
+
**Scope:** tokens, not components. Shared components live in `@tangle-network/ui`; product-specific components stay in their product repos.
|
|
6
|
+
|
|
7
|
+
For the broader visual, copy, graphic, and component standards, see the repo-level [brand guidelines](../../docs/brand-guidelines.md).
|
|
6
8
|
|
|
7
9
|
## Install
|
|
8
10
|
|
package/package.json
CHANGED
package/src/styles/index.css
CHANGED
package/src/styles/theme.css
CHANGED
|
@@ -52,16 +52,47 @@
|
|
|
52
52
|
--color-brand-glow: #A5AAFC;
|
|
53
53
|
--color-brand-emerald: #10B981;
|
|
54
54
|
|
|
55
|
-
/* Depth stack —
|
|
56
|
-
|
|
57
|
-
--color-depth-
|
|
58
|
-
--color-depth-
|
|
59
|
-
--color-depth-
|
|
55
|
+
/* Depth stack — REFERENCE the spine in tokens.css (single source; was a stale
|
|
56
|
+
hardcoded copy that drifted from --depth-* and broke theme retunes). */
|
|
57
|
+
--color-depth-1: var(--depth-1);
|
|
58
|
+
--color-depth-2: var(--depth-2);
|
|
59
|
+
--color-depth-3: var(--depth-3);
|
|
60
|
+
--color-depth-4: var(--depth-4);
|
|
61
|
+
|
|
62
|
+
/* Semantic surface + text roles — map the shadcn/MD3 utility names onto the
|
|
63
|
+
tokens.css spine so `bg-card` / `border-border` / `bg-muted` /
|
|
64
|
+
`bg-surface-container*` / `text-muted-foreground` resolve from ONE source
|
|
65
|
+
here, instead of every consuming app re-defining them (the drift you hit).
|
|
66
|
+
Apps may still override locally; absent an override these are the defaults. */
|
|
67
|
+
--color-background: hsl(var(--background));
|
|
68
|
+
--color-foreground: hsl(var(--foreground));
|
|
69
|
+
--color-card: hsl(var(--card));
|
|
70
|
+
--color-card-foreground: hsl(var(--card-foreground));
|
|
71
|
+
--color-popover: hsl(var(--popover));
|
|
72
|
+
--color-popover-foreground: hsl(var(--popover-foreground));
|
|
73
|
+
--color-primary: hsl(var(--primary));
|
|
74
|
+
--color-primary-foreground: hsl(var(--primary-foreground));
|
|
75
|
+
--color-secondary: hsl(var(--secondary));
|
|
76
|
+
--color-secondary-foreground: hsl(var(--secondary-foreground));
|
|
77
|
+
--color-muted: hsl(var(--muted));
|
|
78
|
+
--color-muted-foreground: hsl(var(--muted-foreground));
|
|
79
|
+
--color-accent: hsl(var(--accent));
|
|
80
|
+
--color-accent-foreground: hsl(var(--accent-foreground));
|
|
81
|
+
--color-destructive: hsl(var(--destructive));
|
|
82
|
+
--color-destructive-foreground: hsl(var(--destructive-foreground));
|
|
83
|
+
--color-border: hsl(var(--border));
|
|
84
|
+
--color-input: hsl(var(--input));
|
|
85
|
+
--color-ring: hsl(var(--ring));
|
|
86
|
+
--color-surface-container-lowest: var(--md3-surface-container-lowest);
|
|
87
|
+
--color-surface-container-low: var(--md3-surface-container-low);
|
|
88
|
+
--color-surface-container: var(--md3-surface-container);
|
|
89
|
+
--color-surface-container-high: var(--md3-surface-container-high);
|
|
90
|
+
--color-surface-container-highest: var(--md3-surface-container-highest);
|
|
60
91
|
|
|
61
92
|
/* Semantic text — use as `text-fg`, `text-fg-muted`, `text-fg-dim` */
|
|
62
|
-
--color-fg:
|
|
63
|
-
--color-fg-muted:
|
|
64
|
-
--color-fg-dim:
|
|
93
|
+
--color-fg: var(--text-primary);
|
|
94
|
+
--color-fg-muted: var(--text-muted);
|
|
95
|
+
--color-fg-dim: var(--text-dim);
|
|
65
96
|
|
|
66
97
|
/* Status — use as `text-status-running`, `bg-status-stopped` */
|
|
67
98
|
--color-status-running: #10B981;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/* Named brand themes. Each scope overrides only the spine tokens in tokens.css;
|
|
2
|
+
* components re-skin automatically because they reference the semantic tokens
|
|
3
|
+
* (bg-card / border-border / surface-container, mapped in theme.css). Apply with
|
|
4
|
+
* data-theme="<name>" on a wrapper (or <html>). The default :root / .dark spine
|
|
5
|
+
* is the neutral "tangle" theme; "<name>-light" scopes are the light variants. */
|
|
6
|
+
|
|
7
|
+
/* ───────────────────────── Aubergine (bazaar) — dark purple ──────────────── */
|
|
8
|
+
[data-theme="aubergine"] {
|
|
9
|
+
--hsl-background: 258 43% 7%; --hsl-foreground: 258 50% 97%;
|
|
10
|
+
--hsl-card: 258 39% 19%; --hsl-card-foreground: 258 50% 97%;
|
|
11
|
+
--hsl-popover: 258 37% 25%; --hsl-popover-foreground: 258 50% 97%;
|
|
12
|
+
--hsl-primary: 232 100% 75%; --hsl-primary-foreground: 258 45% 8%;
|
|
13
|
+
--hsl-secondary: 257 42% 13%; --hsl-muted: 257 42% 13%;
|
|
14
|
+
--hsl-muted-foreground: 258 22% 64%;
|
|
15
|
+
--hsl-accent: 258 39% 19%; --hsl-border: 258 28% 27%;
|
|
16
|
+
--hsl-input: 257 42% 13%; --hsl-ring: 232 100% 75%;
|
|
17
|
+
--depth-1: #0f0a1a; --depth-2: #1a1330; --depth-3: #271d42; --depth-4: #362858;
|
|
18
|
+
--bg-root: #0f0a1a; --bg-card: var(--depth-3); --bg-input: var(--depth-2);
|
|
19
|
+
--md3-surface-container-lowest: #140d24; --md3-surface-container-low: #1a1330;
|
|
20
|
+
--md3-surface-container: #221842; --md3-surface-container-high: #271d42;
|
|
21
|
+
--md3-surface-container-highest: #362858; --md3-outline-variant: #392d52;
|
|
22
|
+
--border-subtle: rgba(183,157,255,0.10); --border-default: rgba(183,157,255,0.18);
|
|
23
|
+
--border-hover: rgba(183,157,255,0.34); --accent-text: #b69dff;
|
|
24
|
+
--brand-primary: #8090ff; --brand-glow: #b69dff;
|
|
25
|
+
--text-primary: #f4f1fd; --text-secondary: #c6bcdf; --text-muted: #998fb6; --text-dim: #6c6289;
|
|
26
|
+
}
|
|
27
|
+
[data-theme="aubergine-light"] {
|
|
28
|
+
--hsl-background: 258 60% 96%; --hsl-foreground: 258 45% 11%;
|
|
29
|
+
--hsl-card: 0 0% 100%; --hsl-card-foreground: 258 45% 11%;
|
|
30
|
+
--hsl-popover: 0 0% 100%; --hsl-popover-foreground: 258 45% 11%;
|
|
31
|
+
--hsl-primary: 258 70% 50%; --hsl-primary-foreground: 0 0% 100%;
|
|
32
|
+
--hsl-secondary: 258 45% 92%; --hsl-muted: 258 45% 92%;
|
|
33
|
+
--hsl-muted-foreground: 258 18% 42%;
|
|
34
|
+
--hsl-accent: 258 45% 92%; --hsl-border: 258 30% 88%;
|
|
35
|
+
--hsl-input: 258 30% 88%; --hsl-ring: 258 70% 50%;
|
|
36
|
+
--depth-1: #f4f1fc; --depth-2: #ece6f8; --depth-3: #ffffff; --depth-4: #ffffff;
|
|
37
|
+
--bg-root: #f4f1fc; --bg-card: #ffffff; --bg-input: #ece6f8;
|
|
38
|
+
--md3-surface-container-lowest: #ffffff; --md3-surface-container-low: #faf8fe;
|
|
39
|
+
--md3-surface-container: #f4f1fc; --md3-surface-container-high: #ece6f8;
|
|
40
|
+
--md3-surface-container-highest: #e4dcf4; --md3-outline-variant: #e0d8f0;
|
|
41
|
+
--border-subtle: rgba(60,32,110,0.10); --border-default: rgba(60,32,110,0.16);
|
|
42
|
+
--border-hover: rgba(60,32,110,0.30); --accent-text: #6d28d9;
|
|
43
|
+
--brand-primary: #6d28d9; --brand-glow: #8b5cf6;
|
|
44
|
+
--text-primary: #160f22; --text-secondary: #3f3460; --text-muted: #6c6289; --text-dim: #8a82a6;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* ───────────────────────── Arena — emerald / green accent ────────────────── */
|
|
48
|
+
[data-theme="arena"] {
|
|
49
|
+
--hsl-background: 160 16% 6%; --hsl-foreground: 150 20% 96%;
|
|
50
|
+
--hsl-card: 158 14% 12%; --hsl-card-foreground: 150 20% 96%;
|
|
51
|
+
--hsl-popover: 158 13% 16%; --hsl-popover-foreground: 150 20% 96%;
|
|
52
|
+
--hsl-primary: 160 84% 39%; --hsl-primary-foreground: 160 60% 8%;
|
|
53
|
+
--hsl-secondary: 158 12% 12%; --hsl-muted: 158 12% 12%;
|
|
54
|
+
--hsl-muted-foreground: 152 12% 62%;
|
|
55
|
+
--hsl-accent: 158 14% 14%; --hsl-border: 158 14% 18%;
|
|
56
|
+
--hsl-input: 158 12% 12%; --hsl-ring: 160 84% 45%;
|
|
57
|
+
--depth-1: #0a0f0c; --depth-2: #131b16; --depth-3: #1b261f; --depth-4: #233328;
|
|
58
|
+
--bg-root: #0a0f0c; --bg-card: var(--depth-3); --bg-input: var(--depth-2);
|
|
59
|
+
--md3-surface-container-lowest: #070b08; --md3-surface-container-low: #131b16;
|
|
60
|
+
--md3-surface-container: #182019; --md3-surface-container-high: #1b261f;
|
|
61
|
+
--md3-surface-container-highest: #233328; --md3-outline-variant: #2a3a31;
|
|
62
|
+
--border-subtle: rgba(52,211,153,0.10); --border-default: rgba(52,211,153,0.18);
|
|
63
|
+
--border-hover: rgba(52,211,153,0.32); --accent-text: #34d399;
|
|
64
|
+
--brand-primary: #10b981; --brand-glow: #34d399;
|
|
65
|
+
--text-primary: #ecfdf5; --text-secondary: #c2e8d6; --text-muted: #8fb6a3; --text-dim: #5f8472;
|
|
66
|
+
}
|
|
67
|
+
[data-theme="arena-light"] {
|
|
68
|
+
--hsl-background: 150 30% 96%; --hsl-foreground: 158 30% 10%;
|
|
69
|
+
--hsl-card: 0 0% 100%; --hsl-card-foreground: 158 30% 10%;
|
|
70
|
+
--hsl-popover: 0 0% 100%; --hsl-popover-foreground: 158 30% 10%;
|
|
71
|
+
--hsl-primary: 160 84% 30%; --hsl-primary-foreground: 0 0% 100%;
|
|
72
|
+
--hsl-secondary: 150 25% 92%; --hsl-muted: 150 25% 92%;
|
|
73
|
+
--hsl-muted-foreground: 158 14% 40%;
|
|
74
|
+
--hsl-accent: 150 25% 92%; --hsl-border: 150 20% 86%;
|
|
75
|
+
--hsl-input: 150 20% 86%; --hsl-ring: 160 84% 30%;
|
|
76
|
+
--depth-1: #f0f6f2; --depth-2: #e6f0ea; --depth-3: #ffffff; --depth-4: #ffffff;
|
|
77
|
+
--bg-root: #f0f6f2; --bg-card: #ffffff; --bg-input: #e6f0ea;
|
|
78
|
+
--md3-surface-container-lowest: #ffffff; --md3-surface-container-low: #f6fbf8;
|
|
79
|
+
--md3-surface-container: #f0f6f2; --md3-surface-container-high: #e6f0ea;
|
|
80
|
+
--md3-surface-container-highest: #dcebe2; --md3-outline-variant: #d7e8de;
|
|
81
|
+
--border-subtle: rgba(6,95,70,0.10); --border-default: rgba(6,95,70,0.16);
|
|
82
|
+
--border-hover: rgba(6,95,70,0.30); --accent-text: #047857;
|
|
83
|
+
--brand-primary: #059669; --brand-glow: #10b981;
|
|
84
|
+
--text-primary: #06231a; --text-secondary: #285048; --text-muted: #5f8472; --text-dim: #82a699;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* ───────────────────────── Tangle (neutral) — light variant alias ─────────── */
|
|
88
|
+
/* dark = default :root spine; this is its light mode for the showcase. */
|
|
89
|
+
[data-theme="tangle-light"] {
|
|
90
|
+
--hsl-background: 240 33% 98%; --hsl-foreground: 245 32% 14%;
|
|
91
|
+
--hsl-card: 0 0% 100%; --hsl-card-foreground: 245 32% 14%;
|
|
92
|
+
--hsl-popover: 0 0% 100%; --hsl-popover-foreground: 245 32% 14%;
|
|
93
|
+
--hsl-primary: 239 84% 60%; --hsl-primary-foreground: 0 0% 100%;
|
|
94
|
+
--hsl-secondary: 240 30% 95%; --hsl-muted: 240 28% 95%;
|
|
95
|
+
--hsl-muted-foreground: 240 8% 42%;
|
|
96
|
+
--hsl-accent: 240 30% 95%; --hsl-border: 240 20% 90%;
|
|
97
|
+
--hsl-input: 240 20% 90%; --hsl-ring: 239 84% 60%;
|
|
98
|
+
--depth-1: #f4f4f9; --depth-2: #edecf4; --depth-3: #ffffff; --depth-4: #ffffff;
|
|
99
|
+
--bg-root: #f4f4f9; --bg-card: #ffffff; --bg-input: #edecf4;
|
|
100
|
+
--md3-surface-container-lowest: #ffffff; --md3-surface-container-low: #f8f8fc;
|
|
101
|
+
--md3-surface-container: #f4f4f9; --md3-surface-container-high: #edecf4;
|
|
102
|
+
--md3-surface-container-highest: #e5e4ee; --md3-outline-variant: #e2e1ec;
|
|
103
|
+
--border-subtle: rgba(20,20,40,0.08); --border-default: rgba(20,20,40,0.14);
|
|
104
|
+
--border-hover: rgba(20,20,40,0.26); --accent-text: #4f46e5;
|
|
105
|
+
--brand-primary: #6366f1; --brand-glow: #818cf8;
|
|
106
|
+
--text-primary: #15131f; --text-secondary: #3f3a52; --text-muted: #6a6680; --text-dim: #9490a6;
|
|
107
|
+
}
|
package/src/styles/tokens.css
CHANGED
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
[data-sandbox-ui],
|
|
10
10
|
[data-theme="dark"],
|
|
11
11
|
.dark {
|
|
12
|
-
--md3-surface: #
|
|
13
|
-
--md3-surface-dim: #
|
|
14
|
-
--md3-surface-bright: #
|
|
15
|
-
--md3-surface-container-lowest: #
|
|
16
|
-
--md3-surface-container-low: #
|
|
17
|
-
--md3-surface-container: #
|
|
18
|
-
--md3-surface-container-high: #
|
|
19
|
-
--md3-surface-container-highest: #
|
|
20
|
-
--md3-surface-variant: #
|
|
12
|
+
--md3-surface: #16161f;
|
|
13
|
+
--md3-surface-dim: #111119;
|
|
14
|
+
--md3-surface-bright: #2a2940;
|
|
15
|
+
--md3-surface-container-lowest: #101017;
|
|
16
|
+
--md3-surface-container-low: #16161f;
|
|
17
|
+
--md3-surface-container: #1c1b27;
|
|
18
|
+
--md3-surface-container-high: #232231;
|
|
19
|
+
--md3-surface-container-highest: #2c2b3d;
|
|
20
|
+
--md3-surface-variant: #2c2b3d;
|
|
21
21
|
--md3-on-surface: #fdfdfd;
|
|
22
22
|
--md3-on-surface-variant: #aaa8b8;
|
|
23
23
|
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
--md3-on-secondary-container: #E8E5FF;
|
|
37
37
|
|
|
38
38
|
--md3-tertiary: #10B981;
|
|
39
|
-
--md3-outline: #
|
|
40
|
-
--md3-outline-variant: #
|
|
39
|
+
--md3-outline: #4a4965;
|
|
40
|
+
--md3-outline-variant: #34324a;
|
|
41
41
|
|
|
42
42
|
--md3-error: #ff5277;
|
|
43
43
|
--md3-error-dim: #eb2855;
|
|
@@ -51,24 +51,24 @@
|
|
|
51
51
|
--md3-surface-tint: #818CF8;
|
|
52
52
|
|
|
53
53
|
/* Semantic HSL bridge — flat neutral spine (Tangle Quiet) */
|
|
54
|
-
--hsl-background: 240
|
|
54
|
+
--hsl-background: 240 7% 9%; /* #15151a canvas — lifted off pure black */
|
|
55
55
|
--hsl-foreground: 240 6% 93%; /* #ececee */
|
|
56
|
-
--hsl-card: 240 5%
|
|
56
|
+
--hsl-card: 240 5% 13%; /* #1f1f23 surface, clearly above canvas */
|
|
57
57
|
--hsl-card-foreground: 240 6% 93%;
|
|
58
|
-
--hsl-popover: 240
|
|
58
|
+
--hsl-popover: 240 5% 17%; /* #28282d elevated */
|
|
59
59
|
--hsl-popover-foreground: 240 6% 93%;
|
|
60
60
|
--hsl-primary: 239 84% 67%;
|
|
61
61
|
--hsl-primary-foreground: 0 0% 100%;
|
|
62
|
-
--hsl-secondary: 240 5%
|
|
62
|
+
--hsl-secondary: 240 5% 15%; /* #242428 surface-2 */
|
|
63
63
|
--hsl-secondary-foreground: 240 6% 93%;
|
|
64
|
-
--hsl-muted: 240 5%
|
|
65
|
-
--hsl-muted-foreground: 240 4%
|
|
66
|
-
--hsl-accent: 240 5%
|
|
64
|
+
--hsl-muted: 240 5% 15%; /* #242428 — neutral hover well */
|
|
65
|
+
--hsl-muted-foreground: 240 4% 64%; /* #9c9ca6 text-muted */
|
|
66
|
+
--hsl-accent: 240 5% 15%; /* neutral hover (indigo lives in accent-surface-strong) */
|
|
67
67
|
--hsl-accent-foreground: 240 6% 93%;
|
|
68
68
|
--hsl-destructive: 348 90% 60%;
|
|
69
69
|
--hsl-destructive-foreground: 0 0% 100%;
|
|
70
|
-
--hsl-border: 240
|
|
71
|
-
--hsl-input: 240 5%
|
|
70
|
+
--hsl-border: 240 5% 16%; /* soft edge — fill carries separation, not the line */
|
|
71
|
+
--hsl-input: 240 5% 15%;
|
|
72
72
|
--hsl-ring: 239 84% 67%;
|
|
73
73
|
--hsl-success: 160 84% 39%;
|
|
74
74
|
--hsl-warning: 40 94% 56%;
|
|
@@ -100,20 +100,20 @@
|
|
|
100
100
|
--info: var(--hsl-info);
|
|
101
101
|
|
|
102
102
|
/* Sidebar tokens — flat surface + hairline */
|
|
103
|
-
--sidebar-background: 240
|
|
103
|
+
--sidebar-background: 240 6% 11%; /* #1a1a1f surface */
|
|
104
104
|
--sidebar-foreground: 240 6% 93%;
|
|
105
105
|
--sidebar-primary: 239 84% 67%;
|
|
106
106
|
--sidebar-primary-foreground: 0 0% 100%;
|
|
107
|
-
--sidebar-accent: 240 5%
|
|
107
|
+
--sidebar-accent: 240 5% 15%; /* neutral hover */
|
|
108
108
|
--sidebar-accent-foreground: 240 6% 93%;
|
|
109
|
-
--sidebar-border: 240
|
|
109
|
+
--sidebar-border: 240 5% 16%; /* soft edge */
|
|
110
110
|
--sidebar-ring: 239 84% 67%;
|
|
111
111
|
|
|
112
112
|
/* Depth scale — flat neutral spine (Tangle Quiet) */
|
|
113
|
-
--depth-1: #
|
|
114
|
-
--depth-2: #
|
|
115
|
-
--depth-3: #
|
|
116
|
-
--depth-4: #
|
|
113
|
+
--depth-1: #15151a;
|
|
114
|
+
--depth-2: #1f1f23;
|
|
115
|
+
--depth-3: #26262b;
|
|
116
|
+
--depth-4: #2e2e34;
|
|
117
117
|
|
|
118
118
|
/* Status colors */
|
|
119
119
|
--status-running: #10B981;
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
--accent-text: #b9bffb;
|
|
173
173
|
|
|
174
174
|
/* Surfaces — flat single-neutral (no radial mesh) */
|
|
175
|
-
--bg-root: #
|
|
175
|
+
--bg-root: #15151a;
|
|
176
176
|
--bg-dark: var(--depth-1);
|
|
177
177
|
--bg-card: var(--depth-2);
|
|
178
178
|
--bg-elevated: var(--depth-4);
|