@syncupsuite/themes 0.3.0 → 0.4.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.
Files changed (39) hide show
  1. package/dist/index.cjs +11364 -4488
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +9 -1
  4. package/dist/index.d.ts +9 -1
  5. package/dist/index.js +11359 -4487
  6. package/dist/index.js.map +1 -1
  7. package/package.json +3 -3
  8. package/src/art-deco/tailwind.css +22 -0
  9. package/src/art-deco/tokens.css +16 -2
  10. package/src/de-stijl/meta.json +50 -0
  11. package/src/de-stijl/tailwind.css +391 -0
  12. package/src/de-stijl/tokens.css +319 -0
  13. package/src/de-stijl/tokens.json +840 -0
  14. package/src/milanese-design/meta.json +50 -0
  15. package/src/milanese-design/tailwind.css +391 -0
  16. package/src/milanese-design/tokens.css +319 -0
  17. package/src/milanese-design/tokens.json +840 -0
  18. package/src/nihon-minimal/tailwind.css +22 -0
  19. package/src/nihon-minimal/tokens.css +16 -2
  20. package/src/nihon-traditional/tailwind.css +22 -0
  21. package/src/nihon-traditional/tokens.css +16 -2
  22. package/src/nordic-modern/tailwind.css +22 -0
  23. package/src/nordic-modern/tokens.css +16 -2
  24. package/src/renaissance/tailwind.css +22 -0
  25. package/src/renaissance/tokens.css +16 -2
  26. package/src/shuimo-modern/tailwind.css +22 -0
  27. package/src/shuimo-modern/tokens.css +16 -2
  28. package/src/swiss-international/tailwind.css +22 -0
  29. package/src/swiss-international/tokens.css +16 -2
  30. package/src/swiss-modernist/meta.json +62 -0
  31. package/src/swiss-modernist/tailwind.css +451 -0
  32. package/src/swiss-modernist/tokens.css +359 -0
  33. package/src/swiss-modernist/tokens.json +960 -0
  34. package/src/tang-imperial/tailwind.css +22 -0
  35. package/src/tang-imperial/tokens.css +16 -2
  36. package/src/wiener-werkstaette/meta.json +44 -0
  37. package/src/wiener-werkstaette/tailwind.css +361 -0
  38. package/src/wiener-werkstaette/tokens.css +299 -0
  39. package/src/wiener-werkstaette/tokens.json +780 -0
@@ -235,6 +235,28 @@
235
235
 
236
236
  }
237
237
 
238
+ /* === Semantic Color API — theme-aware Tailwind utilities === */
239
+ @theme {
240
+ --color-canvas: var(--background-canvas);
241
+ --color-surface: var(--background-surface);
242
+ --color-muted: var(--background-muted);
243
+ --color-foreground: var(--text-primary);
244
+ --color-foreground-secondary: var(--text-secondary);
245
+ --color-foreground-muted: var(--text-muted);
246
+ --color-foreground-inverse: var(--text-inverse);
247
+ --color-primary: var(--interactive-primary);
248
+ --color-primary-hover: var(--interactive-primary-hover);
249
+ --color-primary-active: var(--interactive-primary-active);
250
+ --color-border: var(--border-default);
251
+ --color-border-strong: var(--border-strong);
252
+ --color-error: var(--status-error);
253
+ --color-success: var(--status-success);
254
+ --color-warning: var(--status-warning);
255
+ --color-info: var(--status-info);
256
+ --color-ring: var(--focus-ring);
257
+ --color-focus-visible: var(--accessibility-focus-visible);
258
+ }
259
+
238
260
  /* Primitive aliases + light mode semantic tokens */
239
261
  :root {
240
262
  /* --primitive-color-* aliases → @theme --color-* (for semantic var() resolution) */
@@ -1,5 +1,19 @@
1
- /* tang-imperial — Design Tokens */
2
- /* Generated by @syncupsuite/transformers */
1
+ /* ═══════════════════════════════════════════════════════════════
2
+ * tang-imperial Design Tokens
3
+ * Generated by @syncupsuite/transformers
4
+ *
5
+ * CONSUMER API — Use these semantic tokens in your styles:
6
+ *
7
+ * Backgrounds: var(--background-canvas | surface | muted)
8
+ * Text: var(--text-primary | secondary | muted | inverse)
9
+ * Interactive: var(--interactive-primary | primary-hover | primary-active)
10
+ * Borders: var(--border-default | strong)
11
+ * Status: var(--status-error | success | warning | info)
12
+ * Focus: var(--focus-ring)
13
+ *
14
+ * Dark mode: Add [data-theme="dark"] to a parent element.
15
+ * Primitives: --primitive-color-*, --primitive-spacing-*, etc.
16
+ * ═══════════════════════════════════════════════════════════════ */
3
17
 
4
18
  :root {
5
19
  /* --- Primitive Colors --- */
@@ -0,0 +1,44 @@
1
+ {
2
+ "id": "wiener-werkstaette",
3
+ "name": "Wiener Werkstätte",
4
+ "description": "Wiener Werkstätte — Vienna Workshop, founded 1903. Josef Hoffmann and Koloman Moser's Gesamtkunstwerk vocabulary: geometric rigor, Klimt gilding, and Biedermeier warmth.",
5
+ "foundation": {
6
+ "story": "Josef Hoffmann and Koloman Moser's Vienna Workshop unified fine art and craft under geometric rigor. Their black-and-white checkerboard motifs, Klimt-gilded surfaces, and Biedermeier cream walls created a distinctly Viennese vocabulary that lives between ornament and abstraction.",
7
+ "philosophy": "Gesamtkunstwerk — the total work of art, where every object from building to teaspoon belongs to the same aesthetic whole",
8
+ "era": "Early Modernist — 1903–1932",
9
+ "harmonyMode": "golden-ratio",
10
+ "radiusTendency": "subtle",
11
+ "typographyCategory": "geometric-sans"
12
+ },
13
+ "seedColors": [
14
+ {
15
+ "hex": "#C8A96E",
16
+ "name": "Gold (Klimt-Gold)",
17
+ "tradition": "Klimt gilding — gold leaf on Secession paintings. The warmth and material opulence of Vienna's artistic golden age.",
18
+ "source": "Gustav Klimt: Painting, Design and Modern Life, T. Natter & G. Frodl"
19
+ },
20
+ {
21
+ "hex": "#B5473A",
22
+ "name": "Crimson (Werkstätte Rot)",
23
+ "tradition": "Werkstätte textile dyes — lacquered tin boxes and woven fabric. The warm red of Viennese craft tradition.",
24
+ "source": "Wiener Werkstätte: Design in Vienna 1903–1932, C. Brandstätter"
25
+ },
26
+ {
27
+ "hex": "#1C1C1A",
28
+ "name": "Charcoal (Schmiedeeisen)",
29
+ "tradition": "Secession building wrought iron — Josef Hoffmann's geometric ironwork. The black of structural craft.",
30
+ "source": "Josef Hoffmann: Interiors 1902–1913, C. Long"
31
+ },
32
+ {
33
+ "hex": "#F5F0E8",
34
+ "name": "Cream (Wiener Weiß)",
35
+ "tradition": "Viennese plasterwork walls — Biedermeier domestic interiors. The warm white ground of all Werkstätte composition.",
36
+ "source": "Vienna 1900: Art, Life & Culture, C. Schorske"
37
+ }
38
+ ],
39
+ "validation": {
40
+ "schema": true,
41
+ "contrast": false,
42
+ "completeness": true
43
+ }
44
+ }
@@ -0,0 +1,361 @@
1
+ @import "tailwindcss";
2
+
3
+ @theme {
4
+ /* --- Colors --- */
5
+ /* Gold (Klimt-Gold) 50 */
6
+ --color-gold-klimt-gold-50: #FCF4E5;
7
+ /* Gold (Klimt-Gold) 100 */
8
+ --color-gold-klimt-gold-100: #F2E5CE;
9
+ /* Gold (Klimt-Gold) 200 */
10
+ --color-gold-klimt-gold-200: #E7D6B6;
11
+ /* Gold (Klimt-Gold) 300 */
12
+ --color-gold-klimt-gold-300: #DDC79E;
13
+ /* Gold (Klimt-Gold) 400 */
14
+ --color-gold-klimt-gold-400: #D2B886;
15
+ /* Gold (Klimt-Gold) 500 */
16
+ --color-gold-klimt-gold-500: #C8A96E;
17
+ /* Gold (Klimt-Gold) 600 */
18
+ --color-gold-klimt-gold-600: #947A46;
19
+ /* Gold (Klimt-Gold) 700 */
20
+ --color-gold-klimt-gold-700: #634D21;
21
+ /* Gold (Klimt-Gold) 800 */
22
+ --color-gold-klimt-gold-800: #362500;
23
+ /* Gold (Klimt-Gold) 900 */
24
+ --color-gold-klimt-gold-900: #0E0300;
25
+ /* Crimson (Werkstätte Rot) 50 */
26
+ --color-crimson-werkst-tte-rot-50: #FFEDE7;
27
+ /* Crimson (Werkstätte Rot) 100 */
28
+ --color-crimson-werkst-tte-rot-100: #FDCBC3;
29
+ /* Crimson (Werkstätte Rot) 200 */
30
+ --color-crimson-werkst-tte-rot-200: #EDABA0;
31
+ /* Crimson (Werkstätte Rot) 300 */
32
+ --color-crimson-werkst-tte-rot-300: #DB8A7D;
33
+ /* Crimson (Werkstätte Rot) 400 */
34
+ --color-crimson-werkst-tte-rot-400: #C9695C;
35
+ /* Crimson (Werkstätte Rot) 500 */
36
+ --color-crimson-werkst-tte-rot-500: #B5473A;
37
+ /* Crimson (Werkstätte Rot) 600 */
38
+ --color-crimson-werkst-tte-rot-600: #8C2D23;
39
+ /* Crimson (Werkstätte Rot) 700 */
40
+ --color-crimson-werkst-tte-rot-700: #65120C;
41
+ /* Crimson (Werkstätte Rot) 800 */
42
+ --color-crimson-werkst-tte-rot-800: #400000;
43
+ /* Crimson (Werkstätte Rot) 900 */
44
+ --color-crimson-werkst-tte-rot-900: #1D0000;
45
+ /* Charcoal (Schmiedeeisen) 50 */
46
+ --color-charcoal-schmiedeeisen-50: #F5F5F4;
47
+ /* Charcoal (Schmiedeeisen) 100 */
48
+ --color-charcoal-schmiedeeisen-100: #C4C4C3;
49
+ /* Charcoal (Schmiedeeisen) 200 */
50
+ --color-charcoal-schmiedeeisen-200: #969694;
51
+ /* Charcoal (Schmiedeeisen) 300 */
52
+ --color-charcoal-schmiedeeisen-300: #6A6A68;
53
+ /* Charcoal (Schmiedeeisen) 400 */
54
+ --color-charcoal-schmiedeeisen-400: #41413F;
55
+ /* Charcoal (Schmiedeeisen) 500 */
56
+ --color-charcoal-schmiedeeisen-500: #1C1C1A;
57
+ /* Charcoal (Schmiedeeisen) 600 */
58
+ --color-charcoal-schmiedeeisen-600: #161614;
59
+ /* Charcoal (Schmiedeeisen) 700 */
60
+ --color-charcoal-schmiedeeisen-700: #10100F;
61
+ /* Charcoal (Schmiedeeisen) 800 */
62
+ --color-charcoal-schmiedeeisen-800: #0A0A09;
63
+ /* Charcoal (Schmiedeeisen) 900 */
64
+ --color-charcoal-schmiedeeisen-900: #060605;
65
+ /* Cream (Wiener Weiß) 50 */
66
+ --color-cream-wiener-wei-50: #F6F5F3;
67
+ /* Cream (Wiener Weiß) 100 */
68
+ --color-cream-wiener-wei-100: #F6F4F1;
69
+ /* Cream (Wiener Weiß) 200 */
70
+ --color-cream-wiener-wei-200: #F6F3EE;
71
+ /* Cream (Wiener Weiß) 300 */
72
+ --color-cream-wiener-wei-300: #F5F2EC;
73
+ /* Cream (Wiener Weiß) 400 */
74
+ --color-cream-wiener-wei-400: #F5F1EA;
75
+ /* Cream (Wiener Weiß) 500 */
76
+ --color-cream-wiener-wei-500: #F5F0E8;
77
+ /* Cream (Wiener Weiß) 600 */
78
+ --color-cream-wiener-wei-600: #B1ADA6;
79
+ /* Cream (Wiener Weiß) 700 */
80
+ --color-cream-wiener-wei-700: #716E68;
81
+ /* Cream (Wiener Weiß) 800 */
82
+ --color-cream-wiener-wei-800: #373530;
83
+ /* Cream (Wiener Weiß) 900 */
84
+ --color-cream-wiener-wei-900: #070604;
85
+ /* Neutral 50 */
86
+ --color-neutral-50: #FCF8F1;
87
+ /* Neutral 100 */
88
+ --color-neutral-100: #F2EEE7;
89
+ /* Neutral 200 */
90
+ --color-neutral-200: #E1DDD7;
91
+ /* Neutral 300 */
92
+ --color-neutral-300: #C7C4BD;
93
+ /* Neutral 400 */
94
+ --color-neutral-400: #9B9891;
95
+ /* Neutral 500 */
96
+ --color-neutral-500: #716E68;
97
+ /* Neutral 600 */
98
+ --color-neutral-600: #504D47;
99
+ /* Neutral 700 */
100
+ --color-neutral-700: #35322D;
101
+ /* Neutral 800 */
102
+ --color-neutral-800: #1D1A15;
103
+ /* Neutral 900 */
104
+ --color-neutral-900: #090704;
105
+ /* Accent 50 */
106
+ --color-accent-50: #F8F1FF;
107
+ /* Accent 100 */
108
+ --color-accent-100: #E1D6FD;
109
+ /* Accent 200 */
110
+ --color-accent-200: #CCBCF0;
111
+ /* Accent 300 */
112
+ --color-accent-300: #B6A2E3;
113
+ /* Accent 400 */
114
+ --color-accent-400: #A289D6;
115
+ /* Accent 500 */
116
+ --color-accent-500: #8E6FC8;
117
+ /* Accent 600 */
118
+ --color-accent-600: #694E9A;
119
+ /* Accent 700 */
120
+ --color-accent-700: #472E6E;
121
+ /* Accent 800 */
122
+ --color-accent-800: #271045;
123
+ /* Accent 900 */
124
+ --color-accent-900: #0B0020;
125
+
126
+ /* --- Spacing (8px grid) --- */
127
+ /* Spacing 0 (0px) */
128
+ --spacing-0: 0px;
129
+ /* Spacing 1 (4px) */
130
+ --spacing-1: 4px;
131
+ /* Spacing 2 (8px) */
132
+ --spacing-2: 8px;
133
+ /* Spacing 3 (12px) */
134
+ --spacing-3: 12px;
135
+ /* Spacing 4 (16px) */
136
+ --spacing-4: 16px;
137
+ /* Spacing 5 (20px) */
138
+ --spacing-5: 20px;
139
+ /* Spacing 6 (24px) */
140
+ --spacing-6: 24px;
141
+ /* Spacing 8 (32px) */
142
+ --spacing-8: 32px;
143
+ /* Spacing 10 (40px) */
144
+ --spacing-10: 40px;
145
+ /* Spacing 12 (48px) */
146
+ --spacing-12: 48px;
147
+ /* Spacing 16 (64px) */
148
+ --spacing-16: 64px;
149
+ /* Spacing 20 (80px) */
150
+ --spacing-20: 80px;
151
+ /* Spacing 0.5 (2px) */
152
+ --spacing-0-5: 2px;
153
+ /* Spacing 1.5 (6px) */
154
+ --spacing-1-5: 6px;
155
+
156
+ /* --- Font Families --- */
157
+ /* Heading font family */
158
+ --font-heading: "Inter", "Futura", system-ui, sans-serif;
159
+ /* Body font family */
160
+ --font-body: "Inter", system-ui, sans-serif;
161
+ /* Monospace font family */
162
+ --font-mono: "JetBrains Mono", "Fira Code", monospace;
163
+
164
+ /* --- Font Sizes --- */
165
+ /* Font size xs */
166
+ --text-xs: 0.75rem;
167
+ /* Font size sm */
168
+ --text-sm: 0.875rem;
169
+ /* Font size base */
170
+ --text-base: 1rem;
171
+ /* Font size lg */
172
+ --text-lg: 1.125rem;
173
+ /* Font size xl */
174
+ --text-xl: 1.25rem;
175
+ /* Font size 2xl */
176
+ --text-2xl: 1.5rem;
177
+ /* Font size 3xl */
178
+ --text-3xl: 1.875rem;
179
+ /* Font size 4xl */
180
+ --text-4xl: 2.25rem;
181
+
182
+ /* --- Border Radius --- */
183
+ /* Border radius none */
184
+ --radius-none: 0px;
185
+ /* Border radius sm */
186
+ --radius-sm: 2px;
187
+ /* Border radius md */
188
+ --radius-md: 4px;
189
+ /* Border radius lg */
190
+ --radius-lg: 6px;
191
+ /* Border radius xl */
192
+ --radius-xl: 8px;
193
+ /* Border radius full */
194
+ --radius-full: 9999px;
195
+
196
+ }
197
+
198
+ /* === Semantic Color API — theme-aware Tailwind utilities === */
199
+ @theme {
200
+ --color-canvas: var(--background-canvas);
201
+ --color-surface: var(--background-surface);
202
+ --color-muted: var(--background-muted);
203
+ --color-foreground: var(--text-primary);
204
+ --color-foreground-secondary: var(--text-secondary);
205
+ --color-foreground-muted: var(--text-muted);
206
+ --color-foreground-inverse: var(--text-inverse);
207
+ --color-primary: var(--interactive-primary);
208
+ --color-primary-hover: var(--interactive-primary-hover);
209
+ --color-primary-active: var(--interactive-primary-active);
210
+ --color-border: var(--border-default);
211
+ --color-border-strong: var(--border-strong);
212
+ --color-error: var(--status-error);
213
+ --color-success: var(--status-success);
214
+ --color-warning: var(--status-warning);
215
+ --color-info: var(--status-info);
216
+ --color-ring: var(--focus-ring);
217
+ --color-focus-visible: var(--accessibility-focus-visible);
218
+ }
219
+
220
+ /* Primitive aliases + light mode semantic tokens */
221
+ :root {
222
+ /* --primitive-color-* aliases → @theme --color-* (for semantic var() resolution) */
223
+ --primitive-color-gold-klimt-gold-50: var(--color-gold-klimt-gold-50);
224
+ --primitive-color-gold-klimt-gold-100: var(--color-gold-klimt-gold-100);
225
+ --primitive-color-gold-klimt-gold-200: var(--color-gold-klimt-gold-200);
226
+ --primitive-color-gold-klimt-gold-300: var(--color-gold-klimt-gold-300);
227
+ --primitive-color-gold-klimt-gold-400: var(--color-gold-klimt-gold-400);
228
+ --primitive-color-gold-klimt-gold-500: var(--color-gold-klimt-gold-500);
229
+ --primitive-color-gold-klimt-gold-600: var(--color-gold-klimt-gold-600);
230
+ --primitive-color-gold-klimt-gold-700: var(--color-gold-klimt-gold-700);
231
+ --primitive-color-gold-klimt-gold-800: var(--color-gold-klimt-gold-800);
232
+ --primitive-color-gold-klimt-gold-900: var(--color-gold-klimt-gold-900);
233
+ --primitive-color-crimson-werkst-tte-rot-50: var(--color-crimson-werkst-tte-rot-50);
234
+ --primitive-color-crimson-werkst-tte-rot-100: var(--color-crimson-werkst-tte-rot-100);
235
+ --primitive-color-crimson-werkst-tte-rot-200: var(--color-crimson-werkst-tte-rot-200);
236
+ --primitive-color-crimson-werkst-tte-rot-300: var(--color-crimson-werkst-tte-rot-300);
237
+ --primitive-color-crimson-werkst-tte-rot-400: var(--color-crimson-werkst-tte-rot-400);
238
+ --primitive-color-crimson-werkst-tte-rot-500: var(--color-crimson-werkst-tte-rot-500);
239
+ --primitive-color-crimson-werkst-tte-rot-600: var(--color-crimson-werkst-tte-rot-600);
240
+ --primitive-color-crimson-werkst-tte-rot-700: var(--color-crimson-werkst-tte-rot-700);
241
+ --primitive-color-crimson-werkst-tte-rot-800: var(--color-crimson-werkst-tte-rot-800);
242
+ --primitive-color-crimson-werkst-tte-rot-900: var(--color-crimson-werkst-tte-rot-900);
243
+ --primitive-color-charcoal-schmiedeeisen-50: var(--color-charcoal-schmiedeeisen-50);
244
+ --primitive-color-charcoal-schmiedeeisen-100: var(--color-charcoal-schmiedeeisen-100);
245
+ --primitive-color-charcoal-schmiedeeisen-200: var(--color-charcoal-schmiedeeisen-200);
246
+ --primitive-color-charcoal-schmiedeeisen-300: var(--color-charcoal-schmiedeeisen-300);
247
+ --primitive-color-charcoal-schmiedeeisen-400: var(--color-charcoal-schmiedeeisen-400);
248
+ --primitive-color-charcoal-schmiedeeisen-500: var(--color-charcoal-schmiedeeisen-500);
249
+ --primitive-color-charcoal-schmiedeeisen-600: var(--color-charcoal-schmiedeeisen-600);
250
+ --primitive-color-charcoal-schmiedeeisen-700: var(--color-charcoal-schmiedeeisen-700);
251
+ --primitive-color-charcoal-schmiedeeisen-800: var(--color-charcoal-schmiedeeisen-800);
252
+ --primitive-color-charcoal-schmiedeeisen-900: var(--color-charcoal-schmiedeeisen-900);
253
+ --primitive-color-cream-wiener-wei-50: var(--color-cream-wiener-wei-50);
254
+ --primitive-color-cream-wiener-wei-100: var(--color-cream-wiener-wei-100);
255
+ --primitive-color-cream-wiener-wei-200: var(--color-cream-wiener-wei-200);
256
+ --primitive-color-cream-wiener-wei-300: var(--color-cream-wiener-wei-300);
257
+ --primitive-color-cream-wiener-wei-400: var(--color-cream-wiener-wei-400);
258
+ --primitive-color-cream-wiener-wei-500: var(--color-cream-wiener-wei-500);
259
+ --primitive-color-cream-wiener-wei-600: var(--color-cream-wiener-wei-600);
260
+ --primitive-color-cream-wiener-wei-700: var(--color-cream-wiener-wei-700);
261
+ --primitive-color-cream-wiener-wei-800: var(--color-cream-wiener-wei-800);
262
+ --primitive-color-cream-wiener-wei-900: var(--color-cream-wiener-wei-900);
263
+ --primitive-color-neutral-50: var(--color-neutral-50);
264
+ --primitive-color-neutral-100: var(--color-neutral-100);
265
+ --primitive-color-neutral-200: var(--color-neutral-200);
266
+ --primitive-color-neutral-300: var(--color-neutral-300);
267
+ --primitive-color-neutral-400: var(--color-neutral-400);
268
+ --primitive-color-neutral-500: var(--color-neutral-500);
269
+ --primitive-color-neutral-600: var(--color-neutral-600);
270
+ --primitive-color-neutral-700: var(--color-neutral-700);
271
+ --primitive-color-neutral-800: var(--color-neutral-800);
272
+ --primitive-color-neutral-900: var(--color-neutral-900);
273
+ --primitive-color-accent-50: var(--color-accent-50);
274
+ --primitive-color-accent-100: var(--color-accent-100);
275
+ --primitive-color-accent-200: var(--color-accent-200);
276
+ --primitive-color-accent-300: var(--color-accent-300);
277
+ --primitive-color-accent-400: var(--color-accent-400);
278
+ --primitive-color-accent-500: var(--color-accent-500);
279
+ --primitive-color-accent-600: var(--color-accent-600);
280
+ --primitive-color-accent-700: var(--color-accent-700);
281
+ --primitive-color-accent-800: var(--color-accent-800);
282
+ --primitive-color-accent-900: var(--color-accent-900);
283
+
284
+ /* Semantic tokens */
285
+ /* Page background */
286
+ --background-canvas: var(--primitive-color-neutral-50);
287
+ /* Card/surface background */
288
+ --background-surface: #FFFFFF;
289
+ /* Muted background */
290
+ --background-muted: var(--primitive-color-neutral-100);
291
+ /* Primary text */
292
+ --text-primary: var(--primitive-color-neutral-900);
293
+ /* Secondary text */
294
+ --text-secondary: var(--primitive-color-neutral-600);
295
+ /* Muted/disabled text */
296
+ --text-muted: var(--primitive-color-neutral-500);
297
+ /* Text on dark backgrounds */
298
+ --text-inverse: var(--primitive-color-neutral-50);
299
+ /* Primary interactive (buttons, links) */
300
+ --interactive-primary: var(--primitive-color-gold-klimt-gold-500);
301
+ /* Primary interactive hover */
302
+ --interactive-primary-hover: var(--primitive-color-gold-klimt-gold-600);
303
+ /* Primary interactive active */
304
+ --interactive-primary-active: var(--primitive-color-gold-klimt-gold-700);
305
+ /* Default border */
306
+ --border-default: var(--primitive-color-neutral-200);
307
+ /* Strong border */
308
+ --border-strong: var(--primitive-color-neutral-400);
309
+ /* Error — WCAG-compliant red */
310
+ --status-error: #DC2626;
311
+ /* Success — WCAG-compliant green */
312
+ --status-success: #16A34A;
313
+ /* Warning — WCAG AA amber (4.5:1+ on white) */
314
+ --status-warning: #A16207;
315
+ /* Info status */
316
+ --status-info: var(--primitive-color-gold-klimt-gold-500);
317
+ /* Focus ring color */
318
+ --focus-ring: var(--primitive-color-gold-klimt-gold-500);
319
+ /* Keyboard focus indicator */
320
+ --accessibility-focus-visible: var(--primitive-color-gold-klimt-gold-500);
321
+ }
322
+
323
+ /* Dark mode semantic tokens */
324
+ [data-theme="dark"] {
325
+ /* Page background — dark */
326
+ --background-canvas: var(--primitive-color-neutral-900);
327
+ /* Card/surface — dark */
328
+ --background-surface: var(--primitive-color-neutral-800);
329
+ /* Muted background — dark */
330
+ --background-muted: var(--primitive-color-neutral-700);
331
+ /* Primary text — dark */
332
+ --text-primary: var(--primitive-color-neutral-50);
333
+ /* Secondary text — dark */
334
+ --text-secondary: var(--primitive-color-neutral-300);
335
+ /* Muted text — dark */
336
+ --text-muted: var(--primitive-color-neutral-500);
337
+ /* Text on light backgrounds — dark */
338
+ --text-inverse: var(--primitive-color-neutral-900);
339
+ /* Primary interactive — dark */
340
+ --interactive-primary: var(--primitive-color-gold-klimt-gold-400);
341
+ /* Primary hover — dark */
342
+ --interactive-primary-hover: var(--primitive-color-gold-klimt-gold-300);
343
+ /* Primary active — dark */
344
+ --interactive-primary-active: var(--primitive-color-gold-klimt-gold-200);
345
+ /* Default border — dark */
346
+ --border-default: var(--primitive-color-neutral-700);
347
+ /* Strong border — dark */
348
+ --border-strong: var(--primitive-color-neutral-500);
349
+ /* Error — WCAG-compliant red (dark) */
350
+ --status-error: #EF4444;
351
+ /* Success — WCAG-compliant green (dark) */
352
+ --status-success: #22C55E;
353
+ /* Warning — WCAG-compliant amber (dark) */
354
+ --status-warning: #EAB308;
355
+ /* Info — dark */
356
+ --status-info: var(--primitive-color-gold-klimt-gold-400);
357
+ /* Focus ring — dark */
358
+ --focus-ring: var(--primitive-color-gold-klimt-gold-400);
359
+ /* Keyboard focus — dark */
360
+ --accessibility-focus-visible: var(--primitive-color-gold-klimt-gold-400);
361
+ }