1- /* ─── Design Tokens ────────────────────── ────────────────────── */
1+ /* ─── Design Tokens: Light Mode (default) ────────────────────── */
22: root {
3- color-scheme : dark;
3+ color-scheme : light dark;
44
55 /* Backgrounds */
6+ --bg : # f4f4f9 ;
7+ --bg-surface : # ffffff ;
8+ --bg-elevated : # ededf6 ;
9+ --bg-hover : # e4e4f0 ;
10+
11+ /* Borders */
12+ --border : # d0d0e4 ;
13+ --border-subtle : # e4e4f2 ;
14+
15+ /* Text */
16+ --text : # 0e0e18 ;
17+ --text-muted : # 525278 ;
18+ --text-faint : # 9898b8 ;
19+
20+ /* Accent (indigo — darker for light bg) */
21+ --accent : # 5252e0 ;
22+ --accent-hover : # 3e3ece ;
23+ --accent-subtle : rgba (82 , 82 , 224 , 0.08 );
24+ --accent-border : rgba (82 , 82 , 224 , 0.20 );
25+
26+ /* Status */
27+ --ok : # 16a34a ;
28+ --warn : # b45309 ;
29+ --err : # b91c1c ;
30+ --info : # 1d4ed8 ;
31+ --ok-subtle : rgba (22 , 163 , 74 , 0.10 );
32+ --warn-subtle : rgba (180 , 83 , 9 , 0.10 );
33+ --err-subtle : rgba (185 , 28 , 28 , 0.10 );
34+ --info-subtle : rgba (29 , 78 , 216 , 0.10 );
35+
36+ /* Aliases */
37+ --primary : var (--accent );
38+ --primary-strong : var (--accent-hover );
39+ --focus-ring : rgba (82 , 82 , 224 , 0.20 );
40+ --surface : var (--bg-elevated );
41+ --muted : var (--text-muted );
42+
43+ /* Layout */
44+ --sidebar-width : 220px ;
45+ --content-max : 900px ;
46+ }
47+
48+ /* ─── Design Tokens: Dark Mode ───────────────────────────────── */
49+ /* OS preference (no explicit theme set) */
50+ @media (prefers-color-scheme : dark) {
51+ : root : not ([data-theme = "light" ]) {
52+ color-scheme : dark;
53+
54+ --bg : # 0e0e14 ;
55+ --bg-surface : # 13131b ;
56+ --bg-elevated : # 1a1a25 ;
57+ --bg-hover : # 20202e ;
58+
59+ --border : # 2a2a3c ;
60+ --border-subtle : # 1d1d2a ;
61+
62+ --text : # e0e0ec ;
63+ --text-muted : # 7878a0 ;
64+ --text-faint : # 44445c ;
65+
66+ --accent : # 7c7cf0 ;
67+ --accent-hover : # 9191f5 ;
68+ --accent-subtle : rgba (124 , 124 , 240 , 0.12 );
69+ --accent-border : rgba (124 , 124 , 240 , 0.20 );
70+
71+ --ok : # 4ade80 ;
72+ --warn : # fbbf24 ;
73+ --err : # f87171 ;
74+ --info : # 60a5fa ;
75+ --ok-subtle : rgba (74 , 222 , 128 , 0.12 );
76+ --warn-subtle : rgba (251 , 191 , 36 , 0.12 );
77+ --err-subtle : rgba (248 , 113 , 113 , 0.12 );
78+ --info-subtle : rgba (96 , 165 , 250 , 0.12 );
79+
80+ --focus-ring : rgba (124 , 124 , 240 , 0.28 );
81+ }
82+ }
83+
84+ /* Explicit dark theme */
85+ [data-theme = "dark" ] {
86+ color-scheme : dark;
87+
688 --bg : # 0e0e14 ;
789 --bg-surface : # 13131b ;
890 --bg-elevated : # 1a1a25 ;
991 --bg-hover : # 20202e ;
1092
11- /* Borders */
1293 --border : # 2a2a3c ;
1394 --border-subtle : # 1d1d2a ;
1495
15- /* Text */
1696 --text : # e0e0ec ;
1797 --text-muted : # 7878a0 ;
1898 --text-faint : # 44445c ;
1999
20- /* Accent (indigo) */
21100 --accent : # 7c7cf0 ;
22101 --accent-hover : # 9191f5 ;
23102 --accent-subtle : rgba (124 , 124 , 240 , 0.12 );
103+ --accent-border : rgba (124 , 124 , 240 , 0.20 );
104+
105+ --ok : # 4ade80 ;
106+ --warn : # fbbf24 ;
107+ --err : # f87171 ;
108+ --info : # 60a5fa ;
109+ --ok-subtle : rgba (74 , 222 , 128 , 0.12 );
110+ --warn-subtle : rgba (251 , 191 , 36 , 0.12 );
111+ --err-subtle : rgba (248 , 113 , 113 , 0.12 );
112+ --info-subtle : rgba (96 , 165 , 250 , 0.12 );
113+
114+ --focus-ring : rgba (124 , 124 , 240 , 0.28 );
115+ }
24116
25- /* Status */
26- --ok : # 4ade80 ;
27- --warn : # fbbf24 ;
28- --err : # f87171 ;
29- --info : # 60a5fa ;
30-
31- /* Aliases for backwards compat */
32- --primary : var (--accent );
33- --primary-strong : var (--accent-hover );
34- --focus-ring : rgba (124 , 124 , 240 , 0.28 );
35- --surface : var (--bg-elevated );
36- --muted : var (--text-muted );
37-
38- /* Layout */
39- --sidebar-width : 220px ;
40- --content-max : 900px ;
117+ /* Explicit light theme */
118+ [data-theme = "light" ] {
119+ color-scheme : light;
41120}
42121
43122/* ─── Reset ──────────────────────────────────────────────────── */
@@ -94,15 +173,15 @@ body {
94173}
95174
96175.badge-danger {
97- background : rgba ( 248 , 113 , 113 , 0.14 );
98- color : # f87171 ;
99- border : 1px solid rgba ( 248 , 113 , 113 , 0.2 );
176+ background : var ( --err-subtle );
177+ color : var ( --err ) ;
178+ border : 1px solid color-mix (in srgb , var ( --err ) 20 % , transparent );
100179}
101180
102181.badge-soft {
103182 background : var (--accent-subtle );
104183 color : var (--accent-hover );
105- border : 1px solid rgba ( 124 , 124 , 240 , 0.2 );
184+ border : 1px solid var ( --accent-border );
106185}
107186
108187.chip {
@@ -114,10 +193,10 @@ body {
114193 font-weight : 700 ;
115194}
116195
117- .chip-ready { background : rgba ( 74 , 222 , 128 , 0.12 ); color : # 4ade80 ; }
118- .chip-loading { background : rgba ( 96 , 165 , 250 , 0.12 ); color : # 60a5fa ; }
119- .chip-empty { background : rgba ( 251 , 191 , 36 , 0.12 ); color : # fbbf24 ; }
120- .chip-error { background : rgba ( 248 , 113 , 113 , 0.12 ); color : # f87171 ; }
196+ .chip-ready { background : var ( --ok-subtle ); color : var ( --ok ); }
197+ .chip-loading { background : var ( --info-subtle ); color : var ( --info ) ; }
198+ .chip-empty { background : var ( --warn-subtle ); color : var ( --warn ) ; }
199+ .chip-error { background : var ( --err-subtle ); color : var ( --err ); }
121200
122201/* ─── Form Controls ──────────────────────────────────────────── */
123202.field {
@@ -157,6 +236,7 @@ body {
157236
158237.select option {
159238 background : var (--bg-elevated );
239+ color : var (--text );
160240}
161241
162242/* ─── Buttons ────────────────────────────────────────────────── */
@@ -176,7 +256,6 @@ body {
176256.button : hover {
177257 background : var (--bg-hover );
178258 color : var (--text );
179- border-color : var (--border );
180259}
181260
182261.button-primary {
@@ -191,13 +270,13 @@ body {
191270}
192271
193272.button-danger {
194- background : rgba ( 248 , 113 , 113 , 0.1 );
273+ background : var ( --err-subtle );
195274 color : var (--err );
196- border-color : rgba ( 248 , 113 , 113 , 0.2 );
275+ border-color : color-mix (in srgb , var ( --err ) 20 % , transparent );
197276}
198277
199278.button-danger : hover {
200- background : rgba ( 248 , 113 , 113 , 0.18 );
279+ background : color-mix (in srgb , var ( --err ) 18 % , transparent );
201280}
202281
203282.button-block {
@@ -242,10 +321,10 @@ body {
242321 color : var (--text-muted );
243322}
244323
245- .status-ready { border-color : rgba ( 74 , 222 , 128 , 0.25 ); }
246- .status-loading { border-color : rgba ( 96 , 165 , 250 , 0.25 ); }
247- .status-empty { border-color : rgba ( 251 , 191 , 36 , 0.25 ); }
248- .status-error { border-color : rgba ( 248 , 113 , 113 , 0.25 ); }
324+ .status-ready { border-color : color-mix (in srgb , var ( --ok ) 25 % , transparent ); }
325+ .status-loading { border-color : color-mix (in srgb , var ( --info ) 25 % , transparent ); }
326+ .status-empty { border-color : color-mix (in srgb , var ( --warn ) 25 % , transparent ); }
327+ .status-error { border-color : color-mix (in srgb , var ( --err ) 25 % , transparent ); }
249328
250329/* ─── Panel ──────────────────────────────────────────────────── */
251330.panel {
0 commit comments