@paraxe/design 1.0.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.
@@ -0,0 +1,471 @@
1
+ /* ==========================================================================
2
+ @loba/design — themes/default.css
3
+ LAYER 2 — COLOR TOKENS (FROZEN v1.0)
4
+
5
+ Dark theme is the default → declared on :root.
6
+ Light mode lives in [data-theme="light"] and overrides colors only.
7
+
8
+ ✅ colors only: brand · semantic states · backgrounds · surfaces · text ·
9
+ borders · glass · overlays · focus · selection · component colors
10
+ ❌ spacing/typography/motion/radius/layout (→ tokens.css)
11
+ ========================================================================== */
12
+
13
+ :root {
14
+ /* =====================================================
15
+ BRAND — single brand colour generates the family
16
+ ===================================================== */
17
+ --brand-primary: #6366f1;
18
+ --brand-primary-hover: #4f46e5;
19
+ --brand-primary-active: #4338ca;
20
+ --brand-primary-light: #a5b4fc;
21
+ --brand-primary-muted: color-mix(in srgb, var(--brand-primary) 15%, transparent);
22
+ --brand-glow: color-mix(in srgb, var(--brand-primary) 25%, transparent);
23
+ --text-on-brand: #ffffff;
24
+
25
+ /* =====================================================
26
+ SEMANTIC STATE COLOURS
27
+ ===================================================== */
28
+ --color-success: #22c55e;
29
+ --color-warning: #f59e0b;
30
+ --color-danger: #ef4444;
31
+ --color-info: #3b82f6;
32
+
33
+ /* =====================================================
34
+ BACKGROUNDS
35
+ ===================================================== */
36
+ --background-primary: #09090b;
37
+ --background-secondary: color-mix(in srgb, var(--background-primary) 92%, white);
38
+
39
+ /* =====================================================
40
+ SURFACES — layers built from background
41
+ ===================================================== */
42
+ --surface-base: color-mix(in srgb, var(--background-primary) 92%, white);
43
+ --surface-raised: color-mix(in srgb, var(--background-primary) 84%, white);
44
+ --surface-card: color-mix(in srgb, var(--background-primary) 88%, white);
45
+ --surface-hover: color-mix(in srgb, var(--background-primary) 84%, white);
46
+ --surface-elevated-1: color-mix(in srgb, var(--background-primary) 84%, white);
47
+ --surface-elevated-2: color-mix(in srgb, var(--background-primary) 76%, white);
48
+ --surface-elevated-3: color-mix(in srgb, var(--background-primary) 68%, white);
49
+ --surface-glass: color-mix(in srgb, white 6%, transparent);
50
+ --surface-glass-strong: color-mix(in srgb, white 10%, transparent);
51
+
52
+ /* =====================================================
53
+ TEXT
54
+ ===================================================== */
55
+ --text-primary: color-mix(in srgb, white 96%, transparent);
56
+ --text-secondary: color-mix(in srgb, white 72%, transparent);
57
+ --text-muted: color-mix(in srgb, white 54%, transparent);
58
+ --text-inverse: color-mix(in srgb, white 96%, black);
59
+
60
+ /* Compatibility aliases */
61
+ --text-accent: var(--brand-primary);
62
+ --text-link: var(--brand-primary);
63
+ --text-link-hover: var(--brand-primary-hover);
64
+
65
+ /* =====================================================
66
+ BORDERS
67
+ ===================================================== */
68
+ --border-default: color-mix(in srgb, white 12%, transparent);
69
+ --border-strong: color-mix(in srgb, white 20%, transparent);
70
+ --border-subtle: color-mix(in srgb, white 6%, transparent);
71
+ --border-focus: color-mix(in srgb, var(--brand-primary) 45%, transparent);
72
+
73
+ /* =====================================================
74
+ GLASSMORPHISM (colour only — blur lives in tokens.css)
75
+ ===================================================== */
76
+ --glass-background: color-mix(in srgb, white 6%, transparent);
77
+ --glass-border: color-mix(in srgb, white 14%, transparent);
78
+
79
+ /* =====================================================
80
+ OVERLAYS
81
+ ===================================================== */
82
+ --overlay-scrim: color-mix(in srgb, black 60%, transparent);
83
+ --overlay-scrim-strong: color-mix(in srgb, black 75%, transparent);
84
+
85
+ /* =====================================================
86
+ FOCUS RING & SELECTION (colour only)
87
+ ===================================================== */
88
+ --focus-ring-color: var(--border-focus);
89
+ --selection-background: var(--brand-primary);
90
+ --selection-text: #ffffff;
91
+
92
+ /* =====================================================
93
+ BUTTONS — PRIMARY
94
+ ===================================================== */
95
+ --button-primary-bg: var(--brand-primary);
96
+ --button-primary-text: var(--text-on-brand);
97
+ --button-primary-border: transparent;
98
+ --button-primary-hover-bg: var(--brand-primary-hover);
99
+ --button-primary-hover-border: transparent;
100
+ --button-primary-active-bg: var(--brand-primary-active);
101
+ --button-primary-disabled-bg: color-mix(in srgb, var(--brand-primary) 30%, transparent);
102
+ --button-primary-disabled-text: color-mix(in srgb, var(--text-primary) 40%, transparent);
103
+
104
+ /* =====================================================
105
+ BUTTONS — SECONDARY
106
+ ===================================================== */
107
+ --button-secondary-bg: color-mix(in srgb, var(--surface-base), var(--text-primary) 10%);
108
+ --button-secondary-text: var(--text-primary);
109
+ --button-secondary-border: var(--border-default);
110
+ --button-secondary-hover-bg: color-mix(in srgb, var(--surface-raised), var(--text-primary) 14%);
111
+ --button-secondary-hover-border: var(--border-strong);
112
+ --button-secondary-active-bg: color-mix(in srgb, var(--surface-raised), var(--text-primary) 20%);
113
+ --button-secondary-disabled-bg: color-mix(in srgb, var(--surface-base), var(--text-primary) 2%);
114
+ --button-secondary-disabled-text: var(--text-muted);
115
+ --button-secondary-disabled-border: color-mix(in srgb, var(--border-default), transparent 30%);
116
+
117
+ /* =====================================================
118
+ BUTTONS — GHOST
119
+ ===================================================== */
120
+ --button-ghost-bg: transparent;
121
+ --button-ghost-text: var(--text-primary);
122
+ --button-ghost-border: transparent;
123
+ --button-ghost-hover-bg: color-mix(in srgb, var(--surface-base), var(--text-primary) 6%);
124
+ --button-ghost-hover-border: transparent;
125
+ --button-ghost-active-bg: color-mix(in srgb, var(--surface-base), var(--text-primary) 12%);
126
+ --button-ghost-disabled-text: var(--text-muted);
127
+
128
+ /* =====================================================
129
+ BUTTONS — OUTLINE
130
+ ===================================================== */
131
+ --button-outline-bg: transparent;
132
+ --button-outline-text: var(--text-primary);
133
+ --button-outline-border: var(--border-strong);
134
+ --button-outline-hover-bg: color-mix(in srgb, var(--surface-base), var(--text-primary) 6%);
135
+ --button-outline-hover-border: var(--border-focus);
136
+ --button-outline-active-bg: color-mix(in srgb, var(--surface-base), var(--text-primary) 12%);
137
+ --button-outline-disabled-text: var(--text-muted);
138
+ --button-outline-disabled-border: var(--border-default);
139
+
140
+ /* =====================================================
141
+ BUTTONS — destructive
142
+ ===================================================== */
143
+ --button-destructive-bg: color-mix(in srgb, var(--color-danger) 14%, transparent);
144
+ --button-destructive-text: color-mix(in srgb, var(--color-danger) 80%, white);
145
+ --button-destructive-border: color-mix(in srgb, var(--color-danger) 20%, transparent);
146
+ --button-destructive-hover-bg: color-mix(in srgb, var(--color-danger) 20%, transparent);
147
+ --button-destructive-hover-border: color-mix(in srgb, var(--color-danger) 28%, transparent);
148
+ --button-destructive-active-bg: color-mix(in srgb, var(--color-danger) 26%, transparent);
149
+ --button-destructive-disabled-bg: color-mix(in srgb, var(--color-danger) 6%, transparent);
150
+ --button-destructive-disabled-text: color-mix(in srgb, var(--color-danger) 40%, transparent);
151
+
152
+ /* =====================================================
153
+ CARDS
154
+ ===================================================== */
155
+ --card-background: var(--surface-card);
156
+ --card-background-hover: var(--surface-hover);
157
+ --card-gradient:
158
+ linear-gradient(
159
+ 180deg,
160
+ color-mix(in srgb, var(--brand-primary) 10%, transparent),
161
+ transparent 40%
162
+ );
163
+ --card-highlight:
164
+ inset 0 1px 0 0 color-mix(in srgb, white 10%, transparent);
165
+ --card-highlight-inset:
166
+ inset 0 1px 0 0 color-mix(in srgb, white 10%, transparent);
167
+ --card-border: var(--border-default);
168
+ --card-border-hover: color-mix(in srgb, var(--brand-primary) 30%, transparent);
169
+ --card-shadow: color-mix(in srgb, var(--brand-primary) 12%, rgba(0, 0, 0, 0.7));
170
+ --card-shadow-hover: color-mix(in srgb, var(--brand-primary) 18%, rgba(0, 0, 0, 0.8));
171
+
172
+ /* =====================================================
173
+ NAVIGATION
174
+ ===================================================== */
175
+ --nav-background: color-mix(in srgb, var(--background-primary) 80%, transparent);
176
+ --nav-border: var(--border-default);
177
+ --nav-link: var(--text-secondary);
178
+ --nav-link-hover: var(--text-primary);
179
+ --nav-link-active: var(--text-primary);
180
+ --nav-link-active-border: var(--brand-primary);
181
+ --nav-focus-ring: var(--border-focus);
182
+
183
+ /* =====================================================
184
+ FORMS
185
+ ===================================================== */
186
+ --form-background: color-mix(in srgb, var(--surface-base), var(--text-primary) 3%);
187
+ --form-border: var(--border-default);
188
+ --form-border-hover: var(--border-strong);
189
+ --form-border-focus: var(--border-focus);
190
+ --form-border-error: var(--color-danger);
191
+ --form-border-success: var(--color-success);
192
+ --form-text: var(--text-primary);
193
+ --form-text-muted: var(--text-muted);
194
+ --form-text-error: var(--color-danger);
195
+ --form-text-success: var(--color-success);
196
+ --form-placeholder: var(--text-muted);
197
+ --form-bg-disabled: color-mix(in srgb, var(--surface-base), var(--text-primary) 2%);
198
+ --form-border-disabled: color-mix(in srgb, var(--border-default), transparent 30%);
199
+ --form-text-disabled: var(--text-muted);
200
+ /* =====================================================
201
+ ALERTS
202
+ ===================================================== */
203
+
204
+ --alert-info-background: color-mix(
205
+ in srgb,
206
+ var(--color-info) 10%,
207
+ transparent
208
+ );
209
+
210
+ --alert-info-border: color-mix(
211
+ in srgb,
212
+ var(--color-info) 28%,
213
+ transparent
214
+ );
215
+
216
+ --alert-info-text: var(--color-info);
217
+
218
+
219
+ --alert-success-background: color-mix(
220
+ in srgb,
221
+ var(--color-success) 10%,
222
+ transparent
223
+ );
224
+
225
+ --alert-success-border: color-mix(
226
+ in srgb,
227
+ var(--color-success) 28%,
228
+ transparent
229
+ );
230
+
231
+ --alert-success-text: var(--color-success);
232
+
233
+
234
+ --alert-warning-background: color-mix(
235
+ in srgb,
236
+ var(--color-warning) 10%,
237
+ transparent
238
+ );
239
+
240
+ --alert-warning-border: color-mix(
241
+ in srgb,
242
+ var(--color-warning) 28%,
243
+ transparent
244
+ );
245
+
246
+ --alert-warning-text: var(--color-warning);
247
+
248
+
249
+ --alert-danger-background: color-mix(
250
+ in srgb,
251
+ var(--color-danger) 10%,
252
+ transparent
253
+ );
254
+
255
+ --alert-danger-border: color-mix(
256
+ in srgb,
257
+ var(--color-danger) 28%,
258
+ transparent
259
+ );
260
+
261
+ --alert-danger-text: var(--color-danger);
262
+ /* =====================================================
263
+ BADGES
264
+ ===================================================== */
265
+
266
+ --badge-background: color-mix(
267
+ in srgb,
268
+ var(--surface-raised),
269
+ var(--text-primary) 8%
270
+ );
271
+ --badge-border: var(--border-default);
272
+ --badge-text: var(--text-secondary);
273
+
274
+
275
+ /* =====================================================
276
+ BADGES
277
+ ===================================================== */
278
+
279
+ --badge-background: color-mix(
280
+ in srgb,
281
+ var(--surface-raised),
282
+ var(--text-primary) 8%
283
+ );
284
+
285
+ --badge-border: var(--border-default);
286
+ --badge-text: var(--text-secondary);
287
+
288
+
289
+ /* -----------------------------------------------------
290
+ BADGE VARIANTS
291
+ ----------------------------------------------------- */
292
+
293
+ --badge-default-background: color-mix(
294
+ in srgb,
295
+ var(--surface-raised),
296
+ var(--text-primary) 8%
297
+ );
298
+ --badge-default-border: var(--border-default);
299
+ --badge-default-text: var(--text-secondary);
300
+
301
+ --badge-success-background: color-mix(
302
+ in srgb,
303
+ var(--color-success) 10%,
304
+ transparent
305
+ );
306
+ --badge-success-border: color-mix(
307
+ in srgb,
308
+ var(--color-success) 28%,
309
+ transparent
310
+ );
311
+ --badge-success-text: var(--color-success);
312
+
313
+ --badge-warning-background: color-mix(
314
+ in srgb,
315
+ var(--color-warning) 10%,
316
+ transparent
317
+ );
318
+ --badge-warning-border: color-mix(
319
+ in srgb,
320
+ var(--color-warning) 28%,
321
+ transparent
322
+ );
323
+ --badge-warning-text: var(--color-warning);
324
+
325
+ --badge-danger-background: color-mix(
326
+ in srgb,
327
+ var(--color-danger) 10%,
328
+ transparent
329
+ );
330
+ --badge-danger-border: color-mix(
331
+ in srgb,
332
+ var(--color-danger) 28%,
333
+ transparent
334
+ );
335
+ --badge-danger-text: var(--color-danger);
336
+
337
+ --badge-info-background: color-mix(
338
+ in srgb,
339
+ var(--color-info) 10%,
340
+ transparent
341
+ );
342
+ --badge-info-border: color-mix(
343
+ in srgb,
344
+ var(--color-info) 28%,
345
+ transparent
346
+ );
347
+ --badge-info-text: var(--color-info);
348
+
349
+ --badge-brand-background: color-mix(
350
+ in srgb,
351
+ var(--brand-primary) 10%,
352
+ transparent
353
+ );
354
+ --badge-brand-border: color-mix(
355
+ in srgb,
356
+ var(--brand-primary) 28%,
357
+ transparent
358
+ );
359
+ --badge-brand-text: var(--brand-primary);
360
+ /* =====================================================
361
+ TAGS
362
+ ===================================================== */
363
+
364
+ --tag-background: var(--surface-raised);
365
+ --tag-border: var(--border-subtle);
366
+ --tag-text: var(--text-muted);
367
+
368
+ /* =====================================================
369
+ FOOTER
370
+ ===================================================== */
371
+ --footer-background: color-mix(in srgb, var(--surface-base), var(--text-primary) 3%);
372
+ --footer-border: var(--border-default);
373
+ --footer-text: var(--text-muted);
374
+ --footer-link: var(--text-secondary);
375
+ --footer-link-hover: var(--text-primary);
376
+
377
+ /* =====================================================
378
+ SHADOWS — component elevation
379
+ ===================================================== */
380
+ --shadow-elevation-low: 0 2px 8px color-mix(in srgb, var(--brand-primary) 10%, rgba(0, 0, 0, 0.6));
381
+ --shadow-elevation-medium: 0 4px 24px color-mix(in srgb, var(--brand-primary) 14%, rgba(0, 0, 0, 0.7));
382
+ --shadow-elevation-high: 0 8px 40px color-mix(in srgb, var(--brand-primary) 18%, rgba(0, 0, 0, 0.8));
383
+ --shadow-elevation-modal: 0 20px 60px color-mix(in srgb, var(--brand-primary) 22%, rgba(0, 0, 0, 0.9));
384
+ }
385
+
386
+ /* ==========================================================================
387
+ THEME: LIGHT MODE — colors only, overrides
388
+ ========================================================================== */
389
+ [data-theme="light"] {
390
+ --brand-primary: #6366f1;
391
+ --brand-primary-hover: #4f46e5;
392
+ --brand-primary-active: #4338ca;
393
+ --brand-primary-light: #c7d2fe;
394
+ --brand-primary-muted: color-mix(in srgb, var(--brand-primary) 12%, transparent);
395
+ --brand-glow: color-mix(in srgb, var(--brand-primary) 18%, transparent);
396
+ --text-on-brand: #ffffff;
397
+
398
+ --background-primary: #ffffff;
399
+ --background-secondary: color-mix(in srgb, var(--background-primary) 95%, black);
400
+
401
+ --surface-base: color-mix(in srgb, var(--background-primary) 93%, black);
402
+ --surface-raised: color-mix(in srgb, var(--background-primary) 86%, black);
403
+ --surface-card: color-mix(in srgb, var(--background-primary) 97%, black);
404
+ --surface-hover: color-mix(in srgb, var(--background-primary) 90%, black);
405
+ --surface-elevated-1: color-mix(in srgb, var(--background-primary) 86%, black);
406
+ --surface-elevated-2: color-mix(in srgb, var(--background-primary) 78%, black);
407
+ --surface-elevated-3: color-mix(in srgb, var(--background-primary) 70%, black);
408
+ --surface-glass: color-mix(in srgb, white 60%, transparent);
409
+ --surface-glass-strong: color-mix(in srgb, white 75%, transparent);
410
+
411
+ --text-primary: color-mix(in srgb, black 92%, white);
412
+ --text-secondary: color-mix(in srgb, black 70%, white);
413
+ --text-muted: color-mix(in srgb, black 55%, white);
414
+ --text-inverse: color-mix(in srgb, white 96%, black);
415
+
416
+ --text-accent: var(--brand-primary);
417
+ --text-link: var(--brand-primary);
418
+ --text-link-hover: var(--brand-primary-hover);
419
+
420
+ --border-default: color-mix(in srgb, var(--text-primary) 12%, transparent);
421
+ --border-strong: color-mix(in srgb, var(--text-primary) 20%, transparent);
422
+ --border-subtle: color-mix(in srgb, var(--text-primary) 6%, transparent);
423
+ --border-focus: color-mix(in srgb, var(--brand-primary) 40%, transparent);
424
+
425
+ --glass-background: color-mix(in srgb, white 60%, transparent);
426
+ --glass-border: color-mix(in srgb, black 12%, transparent);
427
+
428
+ --overlay-scrim: color-mix(in srgb, black 40%, transparent);
429
+ --overlay-scrim-strong: color-mix(in srgb, black 60%, transparent);
430
+
431
+ --focus-ring-color: var(--border-focus);
432
+ --selection-background: var(--brand-primary);
433
+ --selection-text: #ffffff;
434
+
435
+ --nav-background: color-mix(in srgb, var(--background-primary) 80%, transparent);
436
+
437
+ --button-secondary-bg: color-mix(in srgb, var(--surface-base), var(--text-primary) 5%);
438
+ --button-secondary-hover-bg: color-mix(in srgb, var(--surface-raised), var(--text-primary) 8%);
439
+ --button-secondary-active-bg: color-mix(in srgb, var(--surface-raised), var(--text-primary) 12%);
440
+ --button-ghost-hover-bg: color-mix(in srgb, var(--surface-base), var(--text-primary) 5%);
441
+ --button-ghost-active-bg: color-mix(in srgb, var(--surface-base), var(--text-primary) 10%);
442
+ --button-outline-hover-bg: color-mix(in srgb, var(--surface-base), var(--text-primary) 5%);
443
+ --button-outline-active-bg: color-mix(in srgb, var(--surface-base), var(--text-primary) 10%);
444
+
445
+ --button-destructive-bg: color-mix(in srgb, var(--color-danger) 10%, transparent);
446
+ --button-destructive-text: var(--color-danger);
447
+ --button-destructive-border: color-mix(in srgb, var(--color-danger) 18%, transparent);
448
+
449
+ --card-gradient:
450
+ linear-gradient(
451
+ 180deg,
452
+ color-mix(in srgb, var(--brand-primary) 7%, transparent),
453
+ transparent 40%
454
+ );
455
+ --card-highlight:
456
+ inset 0 1px 0 0 color-mix(in srgb, white 24%, transparent);
457
+ --card-highlight-inset:
458
+ inset 0 1px 0 0 color-mix(in srgb, white 24%, transparent);
459
+ --card-border-hover: color-mix(in srgb, var(--brand-primary) 24%, transparent);
460
+ --card-shadow: color-mix(in srgb, var(--brand-primary) 8%, rgba(0, 0, 0, 0.5));
461
+ --card-shadow-hover: color-mix(in srgb, var(--brand-primary) 12%, rgba(0, 0, 0, 0.6));
462
+
463
+ --form-background: color-mix(in srgb, var(--surface-base), var(--text-primary) 2%);
464
+ --badge-background: color-mix(in srgb, var(--surface-raised), var(--text-primary) 5%);
465
+
466
+ --shadow-elevation-low: 0 2px 8px color-mix(in srgb, var(--brand-primary) 6%, rgba(0, 0, 0, 0.4));
467
+ --shadow-elevation-medium: 0 4px 24px color-mix(in srgb, var(--brand-primary) 8%, rgba(0, 0, 0, 0.5));
468
+ --shadow-elevation-high: 0 8px 40px color-mix(in srgb, var(--brand-primary) 12%, rgba(0, 0, 0, 0.6));
469
+ --shadow-elevation-modal: 0 20px 60px color-mix(in srgb, var(--brand-primary) 16%, rgba(0, 0, 0, 0.7));
470
+ }
471
+
@@ -0,0 +1,45 @@
1
+ /* ==========================================================================
2
+ @loba/design — themes/electric.css
3
+ Modern tech — Electric blue (#4040ed) on deep slate (#0f172a)
4
+ LAYER 2 — COLOR TOKENS (consumes tokens.css)
5
+ ========================================================================== */
6
+
7
+ @import "./default.css";
8
+
9
+ :root {
10
+ --brand-primary: #4040ed;
11
+ --brand-primary-hover: #3333cc;
12
+ --brand-primary-active: #2a2ab0;
13
+ --brand-primary-light: #7a7af3;
14
+ --brand-primary-muted: color-mix(in srgb, #4040ed 15%, transparent);
15
+ --brand-glow: color-mix(in srgb, #4040ed 25%, transparent);
16
+ --text-on-brand: #ffffff;
17
+
18
+ --background-primary: #0f172a;
19
+ --background-secondary: color-mix(in srgb, #0f172a 92%, white);
20
+
21
+ --surface-base: color-mix(in srgb, #0f172a 92%, white);
22
+ --surface-raised: color-mix(in srgb, #0f172a 84%, white);
23
+ --surface-card: color-mix(in srgb, #0f172a 88%, white);
24
+ --surface-hover: color-mix(in srgb, #0f172a 84%, white);
25
+
26
+ --text-primary: color-mix(in srgb, #0f172a 4%, white);
27
+ --text-secondary: color-mix(in srgb, #0f172a 40%, white);
28
+ --text-muted: color-mix(in srgb, #0f172a 60%, white);
29
+ --text-inverse: color-mix(in srgb, white 96%, black);
30
+ }
31
+
32
+ [data-theme="light"] {
33
+ --background-primary: #ffffff;
34
+ --background-secondary: color-mix(in srgb, #ffffff 95%, black);
35
+
36
+ --surface-base: color-mix(in srgb, #ffffff 93%, black);
37
+ --surface-raised: color-mix(in srgb, #ffffff 86%, black);
38
+ --surface-card: color-mix(in srgb, #ffffff 97%, black);
39
+ --surface-hover: color-mix(in srgb, #ffffff 90%, black);
40
+
41
+ --text-primary: color-mix(in srgb, black 92%, white);
42
+ --text-secondary: color-mix(in srgb, black 70%, white);
43
+ --text-muted: color-mix(in srgb, black 55%, white);
44
+ --text-inverse: color-mix(in srgb, white 96%, black);
45
+ }
@@ -0,0 +1,30 @@
1
+ /* ==========================================================================
2
+ @loba/design — themes/forge.css
3
+ Forge Boys — Warm orange/copper brand (#c2410c) on dark charcoal (#0c0a09)
4
+ LAYER 2 — COLOR TOKENS (consumes tokens.css)
5
+ ========================================================================== */
6
+
7
+ @import "./default.css";
8
+
9
+ :root {
10
+ --brand-primary: #c2410c;
11
+ --brand-primary-hover: #9a3412;
12
+ --brand-primary-active: #7c2d12;
13
+ --brand-primary-light: #fb923c;
14
+ --brand-primary-muted: color-mix(in srgb, #c2410c 15%, transparent);
15
+ --brand-glow: color-mix(in srgb, #c2410c 25%, transparent);
16
+
17
+ --background-primary: #0c0a09;
18
+ --background-secondary: color-mix(in srgb, #0c0a09 92%, white);
19
+
20
+ --surface-base: color-mix(in srgb, #0c0a09 92%, white);
21
+ --surface-raised: color-mix(in srgb, #0c0a09 84%, white);
22
+ --surface-card: color-mix(in srgb, #0c0a09 88%, white);
23
+ --surface-hover: color-mix(in srgb, #0c0a09 84%, white);
24
+
25
+ --text-primary: #fafaf9;
26
+ --text-secondary: #d6d3d1;
27
+ --text-muted: #78716c;
28
+ --text-inverse: #0c0a09;
29
+ }
30
+
@@ -0,0 +1,34 @@
1
+ /* ==========================================================================
2
+ @loba/design — themes/light.css
3
+ Clean light — Blue brand (#2563eb) on soft grey-white (#f8fafc)
4
+ LAYER 2 — COLOR TOKENS (consumes tokens.css)
5
+
6
+ For a light-default project, set `data-theme="light"` on <html> or import
7
+ this file's :root block. The [data-theme="light"] block in default.css
8
+ handles runtime theme toggling.
9
+ ========================================================================== */
10
+
11
+ @import "./default.css";
12
+
13
+ :root {
14
+ --brand-primary: #2563eb;
15
+ --brand-primary-hover: #1d4ed8;
16
+ --brand-primary-active: #1e40af;
17
+ --brand-primary-light: #bfdbfe;
18
+ --brand-primary-muted: color-mix(in srgb, #2563eb 12%, transparent);
19
+ --brand-glow: color-mix(in srgb, #2563eb 18%, transparent);
20
+
21
+ --background-primary: #f8fafc;
22
+ --background-secondary: #f1f5f9;
23
+
24
+ --surface-base: #f1f5f9;
25
+ --surface-raised: #e2e8f0;
26
+ --surface-card: #ffffff;
27
+ --surface-hover: #e8edf3;
28
+
29
+ --text-primary: #0f172a;
30
+ --text-secondary: #475569;
31
+ --text-muted: #94a3b8;
32
+ --text-inverse: #f8fafc;
33
+ }
34
+
@@ -0,0 +1,50 @@
1
+ /* ==========================================================================
2
+ @loba/design — themes/minimal.css
3
+ Minimal — Neutral slate brand (#64748b) on pure white (#ffffff)
4
+ LAYER 2 — COLOR TOKENS (consumes tokens.css)
5
+ ========================================================================== */
6
+
7
+ @import "./default.css";
8
+
9
+ :root {
10
+ --brand-primary: #64748b;
11
+ --brand-primary-hover: #475569;
12
+ --brand-primary-active: #334155;
13
+ --brand-primary-light: #94a3b8;
14
+ --brand-primary-muted: color-mix(in srgb, #64748b 15%, transparent);
15
+ --brand-glow: color-mix(in srgb, #64748b 25%, transparent);
16
+ --text-on-brand: #ffffff;
17
+
18
+ --background-primary: #ffffff;
19
+ --background-secondary: color-mix(in srgb, #ffffff 95%, black);
20
+
21
+ --surface-base: color-mix(in srgb, #ffffff 93%, black);
22
+ --surface-raised: color-mix(in srgb, #ffffff 86%, black);
23
+ --surface-card: color-mix(in srgb, #ffffff 97%, black);
24
+ --surface-hover: color-mix(in srgb, #ffffff 90%, black);
25
+
26
+ --text-primary: #0f172a;
27
+ --text-secondary: #475569;
28
+ --text-muted: #94a3b8;
29
+ --text-inverse: #ffffff;
30
+
31
+ --border-default: color-mix(in srgb, #0f172a 12%, transparent);
32
+ --border-strong: color-mix(in srgb, #0f172a 20%, transparent);
33
+ --border-subtle: color-mix(in srgb, #0f172a 6%, transparent);
34
+ --border-focus: color-mix(in srgb, #64748b 45%, transparent);
35
+ }
36
+
37
+ [data-theme="light"] {
38
+ --background-primary: #ffffff;
39
+ --background-secondary: color-mix(in srgb, #ffffff 95%, black);
40
+
41
+ --surface-base: color-mix(in srgb, #ffffff 93%, black);
42
+ --surface-raised: color-mix(in srgb, #ffffff 86%, black);
43
+ --surface-card: color-mix(in srgb, #ffffff 97%, black);
44
+ --surface-hover: color-mix(in srgb, #ffffff 90%, black);
45
+
46
+ --text-primary: #0f172a;
47
+ --text-secondary: #475569;
48
+ --text-muted: #94a3b8;
49
+ --text-inverse: #ffffff;
50
+ }
@@ -0,0 +1,44 @@
1
+ /* ==========================================================================
2
+ @loba/design — themes/mocha.css
3
+ Warm editorial — Muted navy (#3a405a) on soft cream (#f9dec9)
4
+ LAYER 2 — COLOR TOKENS (consumes tokens.css)
5
+ ========================================================================== */
6
+
7
+ @import "./default.css";
8
+
9
+ :root {
10
+ --brand-primary: #3a405a;
11
+ --brand-primary-hover: #2d3349;
12
+ --brand-primary-active: #222738;
13
+ --brand-primary-light: #6b7291;
14
+ --brand-primary-muted: color-mix(in srgb, #3a405a 15%, transparent);
15
+ --brand-glow: color-mix(in srgb, #3a405a 25%, transparent);
16
+
17
+ --background-primary: #f9dec9;
18
+ --background-secondary: color-mix(in srgb, #f9dec9 92%, black);
19
+
20
+ --surface-base: color-mix(in srgb, #f9dec9 93%, black);
21
+ --surface-raised: color-mix(in srgb, #f9dec9 86%, black);
22
+ --surface-card: color-mix(in srgb, #f9dec9 97%, black);
23
+ --surface-hover: color-mix(in srgb, #f9dec9 90%, black);
24
+
25
+ --text-primary: color-mix(in srgb, black 92%, #f9dec9);
26
+ --text-secondary: color-mix(in srgb, black 70%, #f9dec9);
27
+ --text-muted: color-mix(in srgb, black 55%, #f9dec9);
28
+ --text-inverse: color-mix(in srgb, white 96%, #f9dec9);
29
+ }
30
+
31
+ [data-theme="light"] {
32
+ --background-primary: #f9dec9;
33
+ --background-secondary: color-mix(in srgb, #f9dec9 92%, black);
34
+
35
+ --surface-base: color-mix(in srgb, #f9dec9 93%, black);
36
+ --surface-raised: color-mix(in srgb, #f9dec9 86%, black);
37
+ --surface-card: color-mix(in srgb, #f9dec9 97%, black);
38
+ --surface-hover: color-mix(in srgb, #f9dec9 90%, black);
39
+
40
+ --text-primary: color-mix(in srgb, black 92%, #f9dec9);
41
+ --text-secondary: color-mix(in srgb, black 70%, #f9dec9);
42
+ --text-muted: color-mix(in srgb, black 55%, #f9dec9);
43
+ --text-inverse: color-mix(in srgb, white 96%, #f9dec9);
44
+ }