@klodd/ds 5.16.2 → 5.17.1
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/css/00-primitives.css +33 -0
- package/css/10-semantic.css +52 -36
- package/css/apps/ekonom.css +30 -42
- package/css/apps/jubb.css +29 -42
- package/css/apps/klodd.css +36 -0
- package/package.json +1 -1
- package/references/04-locked-decisions/0028-light-mode-architecture.md +23 -0
package/css/00-primitives.css
CHANGED
|
@@ -300,6 +300,11 @@
|
|
|
300
300
|
"Roboto Mono", "Oxygen Mono", "Ubuntu Monospace",
|
|
301
301
|
"Source Code Pro", "Fira Code", "Droid Sans Mono",
|
|
302
302
|
"Courier New", monospace;
|
|
303
|
+
|
|
304
|
+
/* Voice/display-serif. Klödd-temats display-typsnitt för sid-/hero-titlar
|
|
305
|
+
och varumärke (EB Garamond). Konsument-appen self-hostar EB Garamond via
|
|
306
|
+
@font-face; annars faller stacken tillbaka på Times New Roman-serif. */
|
|
307
|
+
--font-voice: "EB Garamond", "Times New Roman", serif;
|
|
303
308
|
}
|
|
304
309
|
|
|
305
310
|
|
|
@@ -519,6 +524,34 @@
|
|
|
519
524
|
}
|
|
520
525
|
|
|
521
526
|
|
|
527
|
+
/* ================================================================
|
|
528
|
+
==== KLÖDD VARM LIGHT (delat ljust standardtema)
|
|
529
|
+
Klödd.io-inspirerad varm neutral + indigo brand-accent. Detta är
|
|
530
|
+
det enda ljusa temat och delas av alla appar (ADR 0028-amendering).
|
|
531
|
+
Custom varma värden, inte Radix Mauve Light (se ADR 0006-not):
|
|
532
|
+
cream-sida med ljusare kort och mörkare input, bläck-text, taupe-ram.
|
|
533
|
+
================================================================ */
|
|
534
|
+
:root {
|
|
535
|
+
--warm-overlay: #fbfaf5; /* ljusast - modaler/sheets */
|
|
536
|
+
--warm-card: #f6f3ec; /* kort/paneler, lyfter över sidan */
|
|
537
|
+
--warm-section: #efebe2; /* sektioner strax över sida */
|
|
538
|
+
--warm-page: #ede9df; /* sida (cream, klodd.io theme-color) */
|
|
539
|
+
--warm-hover: #e9e4d8; /* hover-yta */
|
|
540
|
+
--warm-sunken: #e4dfd2; /* input/sänkt */
|
|
541
|
+
--warm-active: #e0dacb; /* active-yta */
|
|
542
|
+
|
|
543
|
+
--ink: #1a1a18; /* bläck - primär text (~13:1 mot cream) */
|
|
544
|
+
--ink-subtle: #57534a; /* subtil text (~6:1 mot cream) */
|
|
545
|
+
--ink-muted: #807b6e; /* dämpad text / hint */
|
|
546
|
+
|
|
547
|
+
--taupe: #a8a498; /* stark ram / disabled (ej text - faller WCAG) */
|
|
548
|
+
--taupe-subtle: #ded9cc; /* subtil ram / divider */
|
|
549
|
+
|
|
550
|
+
--accent-brand: #433caf; /* indigo (klodd.io) - används mycket sparsamt */
|
|
551
|
+
--accent-brand-hover: #393295; /* hover/active på indigo */
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
|
|
522
555
|
/* ================================================================
|
|
523
556
|
==== BLUE LIGHT (Jubb accent)
|
|
524
557
|
================================================================ */
|
package/css/10-semantic.css
CHANGED
|
@@ -343,15 +343,16 @@
|
|
|
343
343
|
[data-theme="light"] {
|
|
344
344
|
color-scheme: light;
|
|
345
345
|
|
|
346
|
-
/* SURFACES -
|
|
347
|
-
|
|
348
|
-
--surface-
|
|
349
|
-
--surface-
|
|
350
|
-
--surface-
|
|
351
|
-
--surface-
|
|
352
|
-
--surface-
|
|
353
|
-
--surface-
|
|
354
|
-
--surface-
|
|
346
|
+
/* SURFACES - varm cream-ramp (klodd.io). Sida = cream (mitten i z-stacken),
|
|
347
|
+
kort ljusare (lyfter), input mörkare (sänkt). Delat ljust standardtema. */
|
|
348
|
+
--surface-page: var(--warm-page);
|
|
349
|
+
--surface-default: var(--warm-section);
|
|
350
|
+
--surface-raised: var(--warm-card);
|
|
351
|
+
--surface-elevated: var(--warm-card);
|
|
352
|
+
--surface-overlay: var(--warm-overlay);
|
|
353
|
+
--surface-hover: var(--warm-hover);
|
|
354
|
+
--surface-active: var(--warm-active);
|
|
355
|
+
--surface-sunken: var(--warm-sunken);
|
|
355
356
|
|
|
356
357
|
/* Surface tints - svart istället för vit (white-tint osynlig på ljus bg) */
|
|
357
358
|
--surface-faint: color-mix(in oklch, black 2%, transparent);
|
|
@@ -359,30 +360,47 @@
|
|
|
359
360
|
--surface-medium: color-mix(in oklch, black 8%, transparent);
|
|
360
361
|
--surface-strong: color-mix(in oklch, black 12%, transparent);
|
|
361
362
|
|
|
362
|
-
/* TEXT -
|
|
363
|
-
--text-default: var(--
|
|
364
|
-
--text-subtle: var(--
|
|
365
|
-
--text-muted: var(--
|
|
366
|
-
--text-disabled: var(--
|
|
367
|
-
|
|
368
|
-
/* BORDERS */
|
|
369
|
-
--border-subtle: var(--
|
|
370
|
-
--border-default: var(--
|
|
371
|
-
--border-strong: var(--
|
|
372
|
-
--border-focus: var(--
|
|
363
|
+
/* TEXT - varm bläck-ramp (taupe är för ljust för text, blir ram/disabled) */
|
|
364
|
+
--text-default: var(--ink);
|
|
365
|
+
--text-subtle: var(--ink-subtle);
|
|
366
|
+
--text-muted: var(--ink-muted);
|
|
367
|
+
--text-disabled: var(--taupe);
|
|
368
|
+
|
|
369
|
+
/* BORDERS - taupe-toningar, fokus = brand-indigo */
|
|
370
|
+
--border-subtle: var(--taupe-subtle);
|
|
371
|
+
--border-default: var(--taupe);
|
|
372
|
+
--border-strong: var(--ink-muted);
|
|
373
|
+
--border-focus: var(--accent-brand);
|
|
373
374
|
--border-hairline-faint: var(--bw-hairline) solid color-mix(in oklch, black 4%, transparent);
|
|
374
375
|
|
|
375
|
-
/*
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
--
|
|
385
|
-
--
|
|
376
|
+
/* ACCENT - delad indigo för ALLA appar i ljusläge (ADR 0028-amendering).
|
|
377
|
+
Mycket sparsam: länkar, nyckelknappar, selected-rader. Per-app-accenter
|
|
378
|
+
(Jubb blå, Ekonom plum) gäller inte i ljus - ett enda ljust tema.
|
|
379
|
+
OBS: app-base sätter accent i [data-app=X] (olagrat) som vinner över
|
|
380
|
+
detta lagrade block - därför sätter varje apps light-block också brand. */
|
|
381
|
+
--accent-soft: color-mix(in oklch, var(--accent-brand) 10%, transparent);
|
|
382
|
+
--accent-moderate: color-mix(in oklch, var(--accent-brand) 16%, transparent);
|
|
383
|
+
--accent-9: var(--accent-brand);
|
|
384
|
+
--accent-10: var(--accent-brand-hover);
|
|
385
|
+
--accent-text: var(--accent-brand);
|
|
386
|
+
--accent-a1: color-mix(in oklch, var(--accent-brand) 3%, transparent);
|
|
387
|
+
--accent-a2: color-mix(in oklch, var(--accent-brand) 5%, transparent);
|
|
388
|
+
--accent-a3: color-mix(in oklch, var(--accent-brand) 10%, transparent);
|
|
389
|
+
--accent-a6: color-mix(in oklch, var(--accent-brand) 20%, transparent);
|
|
390
|
+
--accent-a8: color-mix(in oklch, var(--accent-brand) 35%, transparent);
|
|
391
|
+
--accent-a10: color-mix(in oklch, var(--accent-brand) 60%, transparent);
|
|
392
|
+
--accent-a12: color-mix(in oklch, var(--accent-brand) 90%, transparent);
|
|
393
|
+
|
|
394
|
+
/* SHADOW-DOKTRIN LIGHT (ADR 0013 light-tillägg) - ink-baserad */
|
|
395
|
+
--shadow-card: 0 1px 3px color-mix(in oklch, var(--ink) 12%, transparent),
|
|
396
|
+
0 1px 2px color-mix(in oklch, var(--ink) 8%, transparent);
|
|
397
|
+
--shadow-float: 0 4px 12px color-mix(in oklch, var(--ink) 16%, transparent),
|
|
398
|
+
0 2px 4px color-mix(in oklch, var(--ink) 10%, transparent);
|
|
399
|
+
|
|
400
|
+
/* GLASS - taupe vid 55% över cream (svagt mörkare tint, iOS UIBlurEffect-
|
|
401
|
+
konvention för ljus bakgrund). Se ADR 0028. */
|
|
402
|
+
--glass-bg: color-mix(in oklch, var(--taupe) 55%, transparent);
|
|
403
|
+
--glass-bg-fallback: color-mix(in oklch, var(--warm-sunken) 92%, transparent);
|
|
386
404
|
|
|
387
405
|
/* STATUS - Light step 11 för text, step 9 för bg */
|
|
388
406
|
--positive: var(--green-light-11);
|
|
@@ -406,11 +424,9 @@
|
|
|
406
424
|
mot amber, 5.76:1 mot green-light-9, 5.52:1 mot red-light-9. */
|
|
407
425
|
--text-on-status: var(--gray-light-12);
|
|
408
426
|
|
|
409
|
-
/* --text-on-accent:
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
gray-light-12 ger godkänd kontrast mot alla app-accenter. */
|
|
413
|
-
--text-on-accent: var(--gray-light-12);
|
|
427
|
+
/* --text-on-accent: ljus, eftersom den delade brand-accenten är mörk
|
|
428
|
+
indigo (#433CAF). Varm vit ger ~8:1 mot indigon (WCAG AAA). */
|
|
429
|
+
--text-on-accent: var(--warm-overlay);
|
|
414
430
|
|
|
415
431
|
/* Danger-action - dim/border följer via accent-danger-recursion */
|
|
416
432
|
--accent-danger: var(--red-light-9);
|
package/css/apps/ekonom.css
CHANGED
|
@@ -65,49 +65,37 @@
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
|
|
68
|
-
/* Light mode-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
(0,2,0)
|
|
72
|
-
och [data-theme]-
|
|
73
|
-
|
|
74
|
-
över semantic [data-theme="light"]-overriden via load-order. */
|
|
68
|
+
/* Light mode - delat ljust standardtema (cream + indigo). Se ADR 0028.
|
|
69
|
+
Ekonom har ingen egen ljus-identitet längre: detta block pekar om allt
|
|
70
|
+
[data-app="ekonom"] sätter i mörkt (accent, ytor, text, glas) till de
|
|
71
|
+
delade brand/warm-värdena. (0,2,0, olagrat) vinner över både app-base
|
|
72
|
+
och det lagrade [data-theme="light"]-blocket. Resten (ramar, status)
|
|
73
|
+
ärvs från [data-theme="light"] i 10-semantic.css. */
|
|
75
74
|
[data-app="ekonom"][data-theme="light"] {
|
|
76
|
-
|
|
77
|
-
--accent-
|
|
78
|
-
--accent-
|
|
79
|
-
--accent-
|
|
80
|
-
--accent-
|
|
81
|
-
--accent-
|
|
82
|
-
--accent-
|
|
83
|
-
--accent-
|
|
84
|
-
--accent-
|
|
85
|
-
--accent-
|
|
86
|
-
--accent-
|
|
87
|
-
--accent-
|
|
88
|
-
--accent-a12: var(--plum-light-a12);
|
|
89
|
-
|
|
90
|
-
/* Surface: Plum Light-toningar för alla 8 nivåer. Måste sättas här -
|
|
91
|
-
app-base sätter plum-N (dark-rampen) och vinner annars över
|
|
92
|
-
[data-theme="light"]-overriden i 10-semantic.css. */
|
|
93
|
-
--surface-page: var(--plum-light-1);
|
|
94
|
-
--surface-default: var(--plum-light-2);
|
|
95
|
-
--surface-raised: var(--plum-light-3);
|
|
96
|
-
--surface-elevated: var(--plum-light-4);
|
|
97
|
-
--surface-overlay: var(--plum-light-5);
|
|
98
|
-
--surface-hover: var(--plum-light-4);
|
|
99
|
-
--surface-active: var(--plum-light-5);
|
|
100
|
-
--surface-sunken: var(--plum-light-1);
|
|
101
|
-
|
|
102
|
-
/* Text-default: mörk i light. App-base sätter Ekonoms varma plum-vit
|
|
103
|
-
#F4F2FA som vinner annars över [data-theme="light"]. */
|
|
104
|
-
--text-default: var(--gray-light-12);
|
|
75
|
+
--accent-soft: color-mix(in oklch, var(--accent-brand) 10%, transparent);
|
|
76
|
+
--accent-moderate: color-mix(in oklch, var(--accent-brand) 16%, transparent);
|
|
77
|
+
--accent-9: var(--accent-brand);
|
|
78
|
+
--accent-10: var(--accent-brand-hover);
|
|
79
|
+
--accent-text: var(--accent-brand);
|
|
80
|
+
--accent-a1: color-mix(in oklch, var(--accent-brand) 3%, transparent);
|
|
81
|
+
--accent-a2: color-mix(in oklch, var(--accent-brand) 5%, transparent);
|
|
82
|
+
--accent-a3: color-mix(in oklch, var(--accent-brand) 10%, transparent);
|
|
83
|
+
--accent-a6: color-mix(in oklch, var(--accent-brand) 20%, transparent);
|
|
84
|
+
--accent-a8: color-mix(in oklch, var(--accent-brand) 35%, transparent);
|
|
85
|
+
--accent-a10: color-mix(in oklch, var(--accent-brand) 60%, transparent);
|
|
86
|
+
--accent-a12: color-mix(in oklch, var(--accent-brand) 90%, transparent);
|
|
105
87
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
--
|
|
88
|
+
--surface-page: var(--warm-page);
|
|
89
|
+
--surface-default: var(--warm-section);
|
|
90
|
+
--surface-raised: var(--warm-card);
|
|
91
|
+
--surface-elevated: var(--warm-card);
|
|
92
|
+
--surface-overlay: var(--warm-overlay);
|
|
93
|
+
--surface-hover: var(--warm-hover);
|
|
94
|
+
--surface-active: var(--warm-active);
|
|
95
|
+
--surface-sunken: var(--warm-sunken);
|
|
110
96
|
|
|
111
|
-
|
|
112
|
-
--
|
|
97
|
+
--text-default: var(--ink);
|
|
98
|
+
--text-on-accent: var(--warm-overlay);
|
|
99
|
+
--glass-bg: color-mix(in oklch, var(--taupe) 55%, transparent);
|
|
100
|
+
--border-focus: var(--accent-brand);
|
|
113
101
|
}
|
package/css/apps/jubb.css
CHANGED
|
@@ -53,49 +53,36 @@
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
|
|
56
|
-
/* Light mode-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
(0,2,0)
|
|
60
|
-
|
|
61
|
-
sätter måste även sättas här för light mode - annars vinner app-base
|
|
62
|
-
över semantic [data-theme="light"]-overriden via load-order. */
|
|
56
|
+
/* Light mode - delat ljust standardtema (cream + indigo). Se ADR 0028.
|
|
57
|
+
Jubb har ingen egen ljus-identitet längre: detta block pekar om allt
|
|
58
|
+
[data-app="jubb"] sätter i mörkt (accent, ytor, text, glas) till de
|
|
59
|
+
delade brand/warm-värdena. (0,2,0, olagrat) vinner. Resten ärvs från
|
|
60
|
+
[data-theme="light"] i 10-semantic.css. */
|
|
63
61
|
[data-app="jubb"][data-theme="light"] {
|
|
64
|
-
|
|
65
|
-
--accent-
|
|
66
|
-
--accent-
|
|
67
|
-
--accent-
|
|
68
|
-
--accent-
|
|
69
|
-
--accent-
|
|
70
|
-
--accent-
|
|
71
|
-
--accent-
|
|
72
|
-
--accent-
|
|
73
|
-
--accent-
|
|
74
|
-
--accent-
|
|
75
|
-
--accent-
|
|
76
|
-
--accent-a12: var(--blue-light-a12);
|
|
77
|
-
|
|
78
|
-
/* Surface: Blue Light-toningar för alla 8 nivåer. Måste sättas här -
|
|
79
|
-
app-base sätter blue-N (dark-rampen) och vinner annars över
|
|
80
|
-
[data-theme="light"]-overriden i 10-semantic.css. */
|
|
81
|
-
--surface-page: var(--blue-light-1);
|
|
82
|
-
--surface-default: var(--blue-light-2);
|
|
83
|
-
--surface-raised: var(--blue-light-3);
|
|
84
|
-
--surface-elevated: var(--blue-light-4);
|
|
85
|
-
--surface-overlay: var(--blue-light-5);
|
|
86
|
-
--surface-hover: var(--blue-light-4);
|
|
87
|
-
--surface-active: var(--blue-light-5);
|
|
88
|
-
--surface-sunken: var(--blue-light-1);
|
|
89
|
-
|
|
90
|
-
/* Text-default: mörk i light. App-base sätter Jubbs varma vit
|
|
91
|
-
#EEF4FF som vinner annars över [data-theme="light"]. */
|
|
92
|
-
--text-default: var(--gray-light-12);
|
|
62
|
+
--accent-soft: color-mix(in oklch, var(--accent-brand) 10%, transparent);
|
|
63
|
+
--accent-moderate: color-mix(in oklch, var(--accent-brand) 16%, transparent);
|
|
64
|
+
--accent-9: var(--accent-brand);
|
|
65
|
+
--accent-10: var(--accent-brand-hover);
|
|
66
|
+
--accent-text: var(--accent-brand);
|
|
67
|
+
--accent-a1: color-mix(in oklch, var(--accent-brand) 3%, transparent);
|
|
68
|
+
--accent-a2: color-mix(in oklch, var(--accent-brand) 5%, transparent);
|
|
69
|
+
--accent-a3: color-mix(in oklch, var(--accent-brand) 10%, transparent);
|
|
70
|
+
--accent-a6: color-mix(in oklch, var(--accent-brand) 20%, transparent);
|
|
71
|
+
--accent-a8: color-mix(in oklch, var(--accent-brand) 35%, transparent);
|
|
72
|
+
--accent-a10: color-mix(in oklch, var(--accent-brand) 60%, transparent);
|
|
73
|
+
--accent-a12: color-mix(in oklch, var(--accent-brand) 90%, transparent);
|
|
93
74
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
--
|
|
75
|
+
--surface-page: var(--warm-page);
|
|
76
|
+
--surface-default: var(--warm-section);
|
|
77
|
+
--surface-raised: var(--warm-card);
|
|
78
|
+
--surface-elevated: var(--warm-card);
|
|
79
|
+
--surface-overlay: var(--warm-overlay);
|
|
80
|
+
--surface-hover: var(--warm-hover);
|
|
81
|
+
--surface-active: var(--warm-active);
|
|
82
|
+
--surface-sunken: var(--warm-sunken);
|
|
98
83
|
|
|
99
|
-
|
|
100
|
-
--
|
|
84
|
+
--text-default: var(--ink);
|
|
85
|
+
--text-on-accent: var(--warm-overlay);
|
|
86
|
+
--glass-bg: color-mix(in oklch, var(--taupe) 55%, transparent);
|
|
87
|
+
--border-focus: var(--accent-brand);
|
|
101
88
|
}
|
package/css/apps/klodd.css
CHANGED
|
@@ -35,3 +35,39 @@
|
|
|
35
35
|
--accent-a10: var(--indigo-a10);
|
|
36
36
|
--accent-a12: var(--indigo-a12);
|
|
37
37
|
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
/* Light mode - delat ljust standardtema (cream + indigo). Klödd är
|
|
41
|
+
referensappen. Re-deklarerar allt [data-app="klodd"] sätter ovan med
|
|
42
|
+
brand-värden (0,2,0 vinner, olagrat -> slår token-lagret). Ytor/text/
|
|
43
|
+
ramar ärvs från [data-theme="light"] i 10-semantic.css. Se ADR 0028. */
|
|
44
|
+
[data-app="klodd"][data-theme="light"] {
|
|
45
|
+
--accent-soft: color-mix(in oklch, var(--accent-brand) 10%, transparent);
|
|
46
|
+
--accent-moderate: color-mix(in oklch, var(--accent-brand) 16%, transparent);
|
|
47
|
+
--accent-9: var(--accent-brand);
|
|
48
|
+
--accent-10: var(--accent-brand-hover);
|
|
49
|
+
--accent-text: var(--accent-brand);
|
|
50
|
+
--accent-a1: color-mix(in oklch, var(--accent-brand) 3%, transparent);
|
|
51
|
+
--accent-a2: color-mix(in oklch, var(--accent-brand) 5%, transparent);
|
|
52
|
+
--accent-a3: color-mix(in oklch, var(--accent-brand) 10%, transparent);
|
|
53
|
+
--accent-a6: color-mix(in oklch, var(--accent-brand) 20%, transparent);
|
|
54
|
+
--accent-a8: color-mix(in oklch, var(--accent-brand) 35%, transparent);
|
|
55
|
+
--accent-a10: color-mix(in oklch, var(--accent-brand) 60%, transparent);
|
|
56
|
+
--accent-a12: color-mix(in oklch, var(--accent-brand) 90%, transparent);
|
|
57
|
+
|
|
58
|
+
--surface-raised: var(--warm-card);
|
|
59
|
+
--text-on-accent: var(--warm-overlay);
|
|
60
|
+
--border-focus: var(--accent-brand);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
/* Klödd-temats display-typsnitt: EB Garamond (--font-voice) för sid- och
|
|
65
|
+
hero-titlar (.heading-1), inklusive bolagsnamn på detaljsidor. Vikt 500
|
|
66
|
+
ärvs från .heading-1 (--fw-medium); tightare tracking för serifen.
|
|
67
|
+
Övriga rubriker (.heading-2..4) förblir sans. Kräver att appen self-hostar
|
|
68
|
+
EB Garamond (@font-face) - annars faller --font-voice till Times-serif.
|
|
69
|
+
Varumärkes-titeln stylas i appens egen CSS (egen klass, ej .heading-1). */
|
|
70
|
+
[data-app="klodd"] .heading-1 {
|
|
71
|
+
font-family: var(--font-voice);
|
|
72
|
+
letter-spacing: -0.018em;
|
|
73
|
+
}
|
package/package.json
CHANGED
|
@@ -35,3 +35,26 @@ Primitives-grund: 78 Radix Light-variabler i 00-primitives.css
|
|
|
35
35
|
- Fas 3 (toggle-JS + visuell QA per app) genomförs separat per app
|
|
36
36
|
- Token-systemet löser komponent-korrekthet automatiskt - inga
|
|
37
37
|
komponent-CSS-edits krävs i light mode
|
|
38
|
+
|
|
39
|
+
## Amendering 2026-07-01 - ett delat ljust standardtema
|
|
40
|
+
|
|
41
|
+
Ljusläget är inte längre per-app. Det finns ETT ljust tema, delat av alla
|
|
42
|
+
appar: ett klodd.io-inspirerat varmt cream-tema med indigo brand-accent
|
|
43
|
+
(#433CAF) använd mycket sparsamt. Ingen sekundärfärg.
|
|
44
|
+
|
|
45
|
+
- Neutralerna är custom varma värden (`--warm-*`, `--ink*`, `--taupe*` i
|
|
46
|
+
00-primitives.css), INTE Radix Mauve Light - avsteg från ADR 0006/0003
|
|
47
|
+
enbart i ljusläge. Dark mode behåller Mauve/Radix oförändrat.
|
|
48
|
+
- Accenten är delad indigo (`--accent-brand`) för alla appar i ljus.
|
|
49
|
+
Per-app-accenterna (Jubb blå, Ekonom plum) gäller bara i dark.
|
|
50
|
+
- Cascade: app-base `[data-app=X]` (olagrat i konsument-appen) vinner över
|
|
51
|
+
det lagrade `[data-theme="light"]`-blocket, så varje apps
|
|
52
|
+
`[data-app=X][data-theme="light"]` pekar om sina dark-overrides (accent,
|
|
53
|
+
ytor, text, glas) till de delade warm/brand-värdena. Tre block, identiska
|
|
54
|
+
värden -> ett tema. Det shared `[data-theme="light"]`-blocket bär ramar,
|
|
55
|
+
status, shadow och är fallback.
|
|
56
|
+
- `text-on-accent` är ljus (varm vit) eftersom brand-accenten är mörk indigo,
|
|
57
|
+
till skillnad från de tidigare ljusa per-app-accenterna.
|
|
58
|
+
|
|
59
|
+
Status: live i Kommers (`data-app="klodd" data-theme="light"`) från
|
|
60
|
+
2026-07-01. Jubb/Ekonom ärver temat vid nästa build:ds (ljus ej aktivt där).
|