@wtasnorg/candi 0.0.22

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,463 @@
1
+ /*
2
+ * Scandinavian Theme - Base CSS
3
+ *
4
+ * AUTO-GENERATED FILE - DO NOT EDIT MANUALLY
5
+ * This file is generated by: npm run build (scripts/sync-colors.js)
6
+ * Source of truth: src/data/colors.js
7
+ * Manual changes will be overwritten on next build.
8
+ *
9
+ * OKLCH color tokens for light and dark modes.
10
+ * Import this file to get CSS custom properties without Tailwind.
11
+ */
12
+
13
+ :root {
14
+ /* @tokens-start-light */
15
+ --candi-bg: oklch(98% 0.008 85);
16
+ --candi-surface: oklch(95.5% 0.012 85);
17
+ --candi-elevated: oklch(100% 0 0);
18
+ --candi-text: oklch(28% 0.015 250);
19
+ --candi-text-subtle: oklch(50% 0.01 250);
20
+ --candi-text-muted: oklch(62% 0.008 250);
21
+ --candi-border: oklch(90% 0.008 85);
22
+ --candi-border-strong: oklch(82% 0.01 85);
23
+ --candi-divider: oklch(88% 0.006 85);
24
+ --candi-accent: oklch(52% 0.06 230);
25
+ --candi-accent-subtle: oklch(85% 0.03 230);
26
+ --candi-on-accent: oklch(100% 0 0);
27
+ --candi-secondary: oklch(58% 0.12 55);
28
+ --candi-secondary-subtle: oklch(88% 0.04 55);
29
+ --candi-on-secondary: oklch(100% 0 0);
30
+ --candi-success: oklch(52% 0.08 145);
31
+ --candi-on-success: oklch(100% 0 0);
32
+ --candi-warning: oklch(68% 0.13 70);
33
+ --candi-on-warning: oklch(20% 0.02 70);
34
+ --candi-error: oklch(58% 0.12 25);
35
+ --candi-on-error: oklch(100% 0 0);
36
+ --candi-info: oklch(55% 0.1 240);
37
+ --candi-on-info: oklch(100% 0 0);
38
+ --candi-link: oklch(50% 0.08 230);
39
+ --candi-disabled: oklch(75% 0.005 250);
40
+ --candi-overlay: oklch(0% 0 0 / 0.5);
41
+ --candi-scrim: oklch(0% 0 0 / 0.32);
42
+ --candi-inverse-surface: oklch(25% 0.015 250);
43
+ --candi-inverse-text: oklch(92% 0.01 85);
44
+ --candi-shadow: 0 2px 8px rgba(45, 50, 57, 0.06);
45
+ --candi-shadow-md: 0 4px 20px rgba(45, 50, 57, 0.1);
46
+ --candi-shadow-lg: 0 8px 40px rgba(45, 50, 57, 0.15);
47
+ --candi-shadow-color: oklch(25% 0.01 250 / 0.15);
48
+ --candi-focus-ring: oklch(52% 0.06 230 / 0.4);
49
+ --candi-syntax-keyword: oklch(60% 0.15 0);
50
+ --candi-syntax-type: oklch(65% 0.12 280);
51
+ --candi-syntax-var: oklch(65% 0.1 200);
52
+ --candi-syntax-const: oklch(70% 0.14 50);
53
+ --candi-syntax-func: oklch(55% 0.12 240);
54
+ --candi-syntax-string: oklch(60% 0.12 140);
55
+ --candi-hover: oklch(0% 0 0 / 0.05);
56
+ --candi-active: oklch(0% 0 0 / 0.1);
57
+ --candi-terminal-black: oklch(25% 0.01 250);
58
+ --candi-terminal-red: oklch(58% 0.12 25);
59
+ --candi-terminal-green: oklch(52% 0.08 145);
60
+ --candi-terminal-yellow: oklch(68% 0.13 70);
61
+ --candi-terminal-blue: oklch(52% 0.06 230);
62
+ --candi-terminal-magenta: oklch(60% 0.15 0);
63
+ --candi-terminal-cyan: oklch(65% 0.1 200);
64
+ --candi-terminal-white: oklch(92% 0.01 85);
65
+
66
+ /* Terminal Palette */
67
+ --candi-terminal-black: oklch(25% 0.01 250);
68
+ --candi-terminal-red: var(--candi-error);
69
+ --candi-terminal-green: var(--candi-success);
70
+ --candi-terminal-yellow: var(--candi-warning);
71
+ --candi-terminal-blue: var(--candi-accent);
72
+ --candi-terminal-magenta: var(--candi-syntax-keyword);
73
+ --candi-terminal-cyan: var(--candi-syntax-var);
74
+ --candi-terminal-white: var(--candi-text);
75
+ /* @tokens-end-light */
76
+ }
77
+
78
+ .dark {
79
+ /* @tokens-start-dark */
80
+ --candi-bg: oklch(18% 0.015 250);
81
+ --candi-surface: oklch(22% 0.012 250);
82
+ --candi-elevated: oklch(25% 0.015 250);
83
+ --candi-text: oklch(92% 0.01 85);
84
+ --candi-text-subtle: oklch(72% 0.008 85);
85
+ --candi-text-muted: oklch(58% 0.006 85);
86
+ --candi-border: oklch(30% 0.01 250);
87
+ --candi-border-strong: oklch(40% 0.012 250);
88
+ --candi-divider: oklch(28% 0.008 250);
89
+ --candi-accent: oklch(62% 0.08 230);
90
+ --candi-accent-subtle: oklch(35% 0.04 230);
91
+ --candi-on-accent: oklch(15% 0.01 230);
92
+ --candi-secondary: oklch(65% 0.12 55);
93
+ --candi-secondary-subtle: oklch(30% 0.05 55);
94
+ --candi-on-secondary: oklch(15% 0.02 55);
95
+ --candi-success: oklch(60% 0.1 145);
96
+ --candi-on-success: oklch(15% 0.02 145);
97
+ --candi-warning: oklch(72% 0.13 70);
98
+ --candi-on-warning: oklch(15% 0.02 70);
99
+ --candi-error: oklch(65% 0.12 25);
100
+ --candi-on-error: oklch(15% 0.02 25);
101
+ --candi-info: oklch(65% 0.1 240);
102
+ --candi-on-info: oklch(15% 0.02 240);
103
+ --candi-link: oklch(60% 0.08 230);
104
+ --candi-disabled: oklch(45% 0.005 250);
105
+ --candi-overlay: oklch(0% 0 0 / 0.7);
106
+ --candi-scrim: oklch(0% 0 0 / 0.6);
107
+ --candi-inverse-surface: oklch(92% 0.008 85);
108
+ --candi-inverse-text: oklch(25% 0.015 250);
109
+ --candi-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
110
+ --candi-shadow-md: 0 4px 20px rgba(0, 0, 0, 0.35);
111
+ --candi-shadow-lg: 0 8px 40px rgba(0, 0, 0, 0.45);
112
+ --candi-shadow-color: oklch(0% 0 0 / 0.4);
113
+ --candi-focus-ring: oklch(62% 0.08 230 / 0.5);
114
+ --candi-syntax-keyword: oklch(70% 0.15 0);
115
+ --candi-syntax-type: oklch(75% 0.12 280);
116
+ --candi-syntax-var: oklch(75% 0.1 200);
117
+ --candi-syntax-const: oklch(80% 0.14 50);
118
+ --candi-syntax-func: oklch(65% 0.12 240);
119
+ --candi-syntax-string: oklch(70% 0.12 140);
120
+ --candi-hover: oklch(100% 0 0 / 0.1);
121
+ --candi-active: oklch(100% 0 0 / 0.2);
122
+ --candi-terminal-black: oklch(15% 0.01 250);
123
+ --candi-terminal-red: oklch(65% 0.12 25);
124
+ --candi-terminal-green: oklch(60% 0.1 145);
125
+ --candi-terminal-yellow: oklch(72% 0.13 70);
126
+ --candi-terminal-blue: oklch(62% 0.08 230);
127
+ --candi-terminal-magenta: oklch(70% 0.15 0);
128
+ --candi-terminal-cyan: oklch(75% 0.1 200);
129
+ --candi-terminal-white: oklch(92% 0.01 85);
130
+
131
+ /* Terminal Palette */
132
+ --candi-terminal-black: oklch(15% 0.01 250);
133
+ --candi-terminal-red: var(--candi-error);
134
+ --candi-terminal-green: var(--candi-success);
135
+ --candi-terminal-yellow: var(--candi-warning);
136
+ --candi-terminal-blue: var(--candi-accent);
137
+ --candi-terminal-magenta: var(--candi-syntax-keyword);
138
+ --candi-terminal-cyan: var(--candi-syntax-var);
139
+ --candi-terminal-white: var(--candi-text);
140
+ /* @tokens-end-dark */
141
+ }
142
+
143
+ /* Base styles */
144
+ html {
145
+ font-family: Helvetica, sans-serif;
146
+ line-height: 1.7;
147
+ letter-spacing: 0.01em;
148
+ }
149
+
150
+ body {
151
+ background-color: var(--candi-bg);
152
+ color: var(--candi-text);
153
+ transition: background-color 0.3s ease, color 0.3s ease;
154
+ }
155
+
156
+ ::selection {
157
+ background-color: var(--candi-accent-subtle);
158
+ color: var(--candi-text);
159
+ }
160
+
161
+ :focus-visible {
162
+ outline: 2px solid var(--candi-accent);
163
+ outline-offset: 2px;
164
+ }
165
+ /*
166
+ * Scandinavian Theme - Component Classes
167
+ */
168
+
169
+ /* Cards */
170
+ .candi-card {
171
+ background-color: var(--candi-surface);
172
+ border: 1px solid var(--candi-border);
173
+ border-radius: 1rem;
174
+ padding: 2.5rem;
175
+ box-shadow: var(--candi-shadow);
176
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
177
+ }
178
+
179
+ .candi-card:hover {
180
+ transform: translateY(-2px);
181
+ box-shadow: var(--candi-shadow-md);
182
+ }
183
+
184
+ .candi-card-elevated {
185
+ background-color: var(--candi-elevated);
186
+ border: none;
187
+ border-radius: 1.25rem;
188
+ padding: 3rem;
189
+ box-shadow: var(--candi-shadow-md);
190
+ }
191
+
192
+ /* Buttons */
193
+ .candi-btn {
194
+ display: inline-flex;
195
+ align-items: center;
196
+ justify-content: center;
197
+ gap: 0.625rem;
198
+ padding: 1rem 2rem;
199
+ font-size: 0.9375rem;
200
+ font-weight: 500;
201
+ letter-spacing: 0.02em;
202
+ border-radius: 0.75rem;
203
+ border: none;
204
+ cursor: pointer;
205
+ transition: all 0.25s ease;
206
+ min-height: 3.25rem;
207
+ }
208
+
209
+ .candi-btn-primary {
210
+ background-color: var(--candi-accent);
211
+ color: white;
212
+ }
213
+
214
+ .candi-btn-primary:hover {
215
+ opacity: 0.9;
216
+ transform: translateY(-1px);
217
+ }
218
+
219
+ .candi-btn-secondary {
220
+ background-color: transparent;
221
+ color: var(--candi-text);
222
+ border: 1.5px solid var(--candi-border-strong);
223
+ }
224
+
225
+ .candi-btn-secondary:hover {
226
+ background-color: var(--candi-surface);
227
+ }
228
+
229
+ .candi-btn-warm {
230
+ background-color: var(--candi-secondary);
231
+ color: white;
232
+ }
233
+
234
+ .candi-btn-ghost {
235
+ background-color: transparent;
236
+ color: var(--candi-accent);
237
+ }
238
+
239
+ .candi-btn-ghost:hover {
240
+ background-color: var(--candi-accent-subtle);
241
+ }
242
+
243
+ /* Form Inputs */
244
+ .candi-input {
245
+ width: 100%;
246
+ padding: 1rem 1.25rem;
247
+ font-size: 1rem;
248
+ line-height: 1.5;
249
+ background-color: var(--candi-elevated);
250
+ border: 1.5px solid var(--candi-border-strong);
251
+ border-radius: 0.75rem;
252
+ color: var(--candi-text);
253
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
254
+ min-height: 3.5rem;
255
+ }
256
+
257
+ .candi-input::placeholder {
258
+ color: var(--candi-text-muted);
259
+ }
260
+
261
+ .candi-input:hover {
262
+ border-color: var(--candi-text-muted);
263
+ }
264
+
265
+ .candi-input:focus {
266
+ outline: none;
267
+ border-color: var(--candi-accent);
268
+ box-shadow: 0 0 0 4px var(--candi-focus-ring);
269
+ }
270
+
271
+ .candi-label {
272
+ display: block;
273
+ margin-bottom: 0.625rem;
274
+ font-size: 0.875rem;
275
+ font-weight: 500;
276
+ color: var(--candi-text-subtle);
277
+ letter-spacing: 0.02em;
278
+ }
279
+
280
+ .candi-input-group {
281
+ margin-bottom: 1.75rem;
282
+ }
283
+
284
+ /* Navigation */
285
+ .candi-nav {
286
+ background-color: var(--candi-elevated);
287
+ border-bottom: 1px solid var(--candi-border);
288
+ padding: 1.25rem 2rem;
289
+ }
290
+
291
+ .candi-nav-link {
292
+ color: var(--candi-text-subtle);
293
+ font-size: 0.9375rem;
294
+ font-weight: 450;
295
+ padding: 0.75rem 1.25rem;
296
+ border-radius: 0.5rem;
297
+ transition: all 0.2s ease;
298
+ text-decoration: none;
299
+ }
300
+
301
+ .candi-nav-link:hover,
302
+ .candi-nav-link.active {
303
+ color: var(--candi-text);
304
+ background-color: var(--candi-surface);
305
+ }
306
+
307
+ /* Badges */
308
+ .candi-badge {
309
+ display: inline-flex;
310
+ align-items: center;
311
+ padding: 0.5rem 1rem;
312
+ font-size: 0.8125rem;
313
+ font-weight: 500;
314
+ border-radius: 2rem;
315
+ background-color: var(--candi-surface);
316
+ color: var(--candi-text-subtle);
317
+ }
318
+
319
+ .candi-badge-accent {
320
+ background-color: var(--candi-accent-subtle);
321
+ color: var(--candi-accent);
322
+ }
323
+
324
+ .candi-badge-warm {
325
+ background-color: var(--candi-secondary-subtle);
326
+ color: var(--candi-secondary);
327
+ }
328
+
329
+ /* Divider */
330
+ .candi-divider {
331
+ height: 1px;
332
+ background-color: var(--candi-border);
333
+ border: none;
334
+ margin: 2.5rem 0;
335
+ }
336
+
337
+ /* Theme Toggle */
338
+ .candi-theme-toggle {
339
+ width: 3.5rem;
340
+ height: 2rem;
341
+ padding: 0.25rem;
342
+ background-color: var(--candi-surface);
343
+ border: 1.5px solid var(--candi-border-strong);
344
+ border-radius: 2rem;
345
+ cursor: pointer;
346
+ position: relative;
347
+ transition: all 0.3s ease;
348
+ }
349
+
350
+ .candi-theme-toggle::after {
351
+ content: '';
352
+ position: absolute;
353
+ width: 1.375rem;
354
+ height: 1.375rem;
355
+ background-color: var(--candi-elevated);
356
+ border-radius: 50%;
357
+ top: 50%;
358
+ left: 0.25rem;
359
+ transform: translateY(-50%);
360
+ transition: all 0.3s ease;
361
+ box-shadow: var(--candi-shadow);
362
+ }
363
+
364
+ .dark .candi-theme-toggle::after {
365
+ left: calc(100% - 1.625rem);
366
+ background-color: var(--candi-accent);
367
+ }
368
+
369
+ /*
370
+ * Scandinavian Theme - Utility Classes
371
+ */
372
+
373
+ /* Text colors */
374
+ .candi-text-subtle {
375
+ color: var(--candi-text-subtle);
376
+ }
377
+
378
+ .candi-text-muted {
379
+ color: var(--candi-text-muted);
380
+ }
381
+
382
+ .candi-text-accent {
383
+ color: var(--candi-accent);
384
+ }
385
+
386
+ .candi-text-warm {
387
+ color: var(--candi-secondary);
388
+ }
389
+
390
+ /* Spacing - Lagom (generous but balanced) */
391
+ .candi-p-cozy {
392
+ padding: 1.5rem;
393
+ }
394
+
395
+ .candi-p-relaxed {
396
+ padding: 2.5rem;
397
+ }
398
+
399
+ .candi-p-spacious {
400
+ padding: 4rem;
401
+ }
402
+
403
+ .candi-gap-cozy {
404
+ gap: 1.5rem;
405
+ }
406
+
407
+ .candi-gap-airy {
408
+ gap: 2.5rem;
409
+ }
410
+
411
+ /* Surfaces */
412
+ .candi-surface {
413
+ background-color: var(--candi-surface);
414
+ }
415
+
416
+ .candi-elevated {
417
+ background-color: var(--candi-elevated);
418
+ }
419
+
420
+ .candi-bg {
421
+ background-color: var(--candi-bg);
422
+ }
423
+
424
+ /* Borders */
425
+ .candi-border {
426
+ border: 1px solid var(--candi-border);
427
+ }
428
+
429
+ .candi-border-strong {
430
+ border: 1px solid var(--candi-border-strong);
431
+ }
432
+
433
+ /* Shadows */
434
+ .candi-shadow {
435
+ box-shadow: var(--candi-shadow);
436
+ }
437
+
438
+ .candi-shadow-md {
439
+ box-shadow: var(--candi-shadow-md);
440
+ }
441
+
442
+ .candi-shadow-lg {
443
+ box-shadow: var(--candi-shadow-lg);
444
+ }
445
+
446
+ /* Border radius */
447
+ .candi-rounded {
448
+ border-radius: 0.75rem;
449
+ }
450
+
451
+ .candi-rounded-lg {
452
+ border-radius: 1rem;
453
+ }
454
+
455
+ .candi-rounded-xl {
456
+ border-radius: 1.5rem;
457
+ }
458
+
459
+ /* Transition */
460
+ .candi-transition {
461
+ transition: all 0.25s ease;
462
+ }
463
+
package/dist/theme.js ADDED
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Scandinavian Theme - Tailwind Theme Extension
3
+ *
4
+ * Use this to extend your Tailwind config with Scandinavian design tokens.
5
+ */
6
+
7
+ module.exports = {
8
+ colors: {
9
+ candi: {
10
+ // Backgrounds
11
+ bg: 'var(--candi-bg)',
12
+ surface: 'var(--candi-surface)',
13
+ elevated: 'var(--candi-elevated)',
14
+
15
+ // Text
16
+ text: 'var(--candi-text)',
17
+ subtle: 'var(--candi-text-subtle)',
18
+ muted: 'var(--candi-text-muted)',
19
+
20
+ // Borders
21
+ border: 'var(--candi-border)',
22
+ 'border-strong': 'var(--candi-border-strong)',
23
+ divider: 'var(--candi-divider)',
24
+
25
+ // Accents
26
+ accent: 'var(--candi-accent)',
27
+ 'accent-subtle': 'var(--candi-accent-subtle)',
28
+ 'on-accent': 'var(--candi-on-accent)',
29
+ secondary: 'var(--candi-secondary)',
30
+ 'secondary-subtle': 'var(--candi-secondary-subtle)',
31
+ 'on-secondary': 'var(--candi-on-secondary)',
32
+ success: 'var(--candi-success)',
33
+ 'on-success': 'var(--candi-on-success)',
34
+ warning: 'var(--candi-warning)',
35
+ 'on-warning': 'var(--candi-on-warning)',
36
+ error: 'var(--candi-error)',
37
+ 'on-error': 'var(--candi-on-error)',
38
+ info: 'var(--candi-info)',
39
+ 'on-info': 'var(--candi-on-info)',
40
+ link: 'var(--candi-link)',
41
+ disabled: 'var(--candi-disabled)',
42
+ overlay: 'var(--candi-overlay)',
43
+ scrim: 'var(--candi-scrim)',
44
+ 'focus-ring': 'var(--candi-focus-ring)',
45
+
46
+ // Inverse
47
+ 'inverse-surface': 'var(--candi-inverse-surface)',
48
+ 'inverse-text': 'var(--candi-inverse-text)',
49
+
50
+ // Shadow
51
+ 'shadow-color': 'var(--candi-shadow-color)',
52
+
53
+ // Extended Syntax
54
+ 'syntax-keyword': 'var(--candi-syntax-keyword)',
55
+ 'syntax-type': 'var(--candi-syntax-type)',
56
+ 'syntax-var': 'var(--candi-syntax-var)',
57
+ 'syntax-const': 'var(--candi-syntax-const)',
58
+ 'syntax-func': 'var(--candi-syntax-func)',
59
+ 'syntax-string': 'var(--candi-syntax-string)',
60
+
61
+ // Terminal
62
+ 'terminal-black': 'var(--candi-terminal-black)',
63
+ 'terminal-red': 'var(--candi-terminal-red)',
64
+ 'terminal-green': 'var(--candi-terminal-green)',
65
+ 'terminal-yellow': 'var(--candi-terminal-yellow)',
66
+ 'terminal-blue': 'var(--candi-terminal-blue)',
67
+ 'terminal-magenta': 'var(--candi-terminal-magenta)',
68
+ 'terminal-cyan': 'var(--candi-terminal-cyan)',
69
+ 'terminal-white': 'var(--candi-terminal-white)',
70
+
71
+ // UI States
72
+ hover: 'var(--candi-hover)',
73
+ active: 'var(--candi-active)',
74
+ },
75
+ },
76
+
77
+ spacing: {
78
+ '4.5': '1.125rem',
79
+ '5.5': '1.375rem',
80
+ '7': '1.75rem',
81
+ '9': '2.25rem',
82
+ '11': '2.75rem',
83
+ '13': '3.25rem',
84
+ '15': '3.75rem',
85
+ '18': '4.5rem',
86
+ '22': '5.5rem',
87
+ },
88
+
89
+ fontFamily: {
90
+ sans: ['Inter', 'Segoe UI', 'system-ui', '-apple-system', 'sans-serif'],
91
+ },
92
+
93
+ fontSize: {
94
+ 'xs': ['0.8125rem', { lineHeight: '1.5' }],
95
+ 'sm': ['0.9375rem', { lineHeight: '1.6' }],
96
+ },
97
+
98
+ lineHeight: {
99
+ 'relaxed': '1.7',
100
+ 'relaxed-plus': '1.85',
101
+ },
102
+
103
+ minHeight: {
104
+ 'btn': '3.25rem',
105
+ 'input': '3.5rem',
106
+ },
107
+
108
+ borderRadius: {
109
+ 'soft': '0.75rem',
110
+ 'softer': '1rem',
111
+ 'pill': '2rem',
112
+ },
113
+
114
+ boxShadow: {
115
+ 'hygge': 'var(--candi-shadow)',
116
+ 'hygge-md': 'var(--candi-shadow-md)',
117
+ 'hygge-lg': 'var(--candi-shadow-lg)',
118
+ },
119
+
120
+ transitionDuration: {
121
+ '250': '250ms',
122
+ },
123
+ };
package/dist/theme.mjs ADDED
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Scandinavian Theme - Tailwind Theme Extension
3
+ *
4
+ * Use this to extend your Tailwind config with Scandinavian design tokens.
5
+ */
6
+
7
+ export default {
8
+ colors: {
9
+ candi: {
10
+ // Backgrounds
11
+ bg: 'var(--candi-bg)',
12
+ surface: 'var(--candi-surface)',
13
+ elevated: 'var(--candi-elevated)',
14
+
15
+ // Text
16
+ text: 'var(--candi-text)',
17
+ subtle: 'var(--candi-text-subtle)',
18
+ muted: 'var(--candi-text-muted)',
19
+
20
+ // Borders
21
+ border: 'var(--candi-border)',
22
+ 'border-strong': 'var(--candi-border-strong)',
23
+ divider: 'var(--candi-divider)',
24
+
25
+ // Accents
26
+ accent: 'var(--candi-accent)',
27
+ 'accent-subtle': 'var(--candi-accent-subtle)',
28
+ 'on-accent': 'var(--candi-on-accent)',
29
+ secondary: 'var(--candi-secondary)',
30
+ 'secondary-subtle': 'var(--candi-secondary-subtle)',
31
+ 'on-secondary': 'var(--candi-on-secondary)',
32
+ success: 'var(--candi-success)',
33
+ 'on-success': 'var(--candi-on-success)',
34
+ warning: 'var(--candi-warning)',
35
+ 'on-warning': 'var(--candi-on-warning)',
36
+ error: 'var(--candi-error)',
37
+ 'on-error': 'var(--candi-on-error)',
38
+ info: 'var(--candi-info)',
39
+ 'on-info': 'var(--candi-on-info)',
40
+ link: 'var(--candi-link)',
41
+ disabled: 'var(--candi-disabled)',
42
+ overlay: 'var(--candi-overlay)',
43
+ scrim: 'var(--candi-scrim)',
44
+ 'focus-ring': 'var(--candi-focus-ring)',
45
+
46
+ // Inverse
47
+ 'inverse-surface': 'var(--candi-inverse-surface)',
48
+ 'inverse-text': 'var(--candi-inverse-text)',
49
+
50
+ // Shadow
51
+ 'shadow-color': 'var(--candi-shadow-color)',
52
+
53
+ // Extended Syntax
54
+ 'syntax-keyword': 'var(--candi-syntax-keyword)',
55
+ 'syntax-type': 'var(--candi-syntax-type)',
56
+ 'syntax-var': 'var(--candi-syntax-var)',
57
+ 'syntax-const': 'var(--candi-syntax-const)',
58
+ 'syntax-func': 'var(--candi-syntax-func)',
59
+ 'syntax-string': 'var(--candi-syntax-string)',
60
+
61
+ // Terminal
62
+ 'terminal-black': 'var(--candi-terminal-black)',
63
+ 'terminal-red': 'var(--candi-terminal-red)',
64
+ 'terminal-green': 'var(--candi-terminal-green)',
65
+ 'terminal-yellow': 'var(--candi-terminal-yellow)',
66
+ 'terminal-blue': 'var(--candi-terminal-blue)',
67
+ 'terminal-magenta': 'var(--candi-terminal-magenta)',
68
+ 'terminal-cyan': 'var(--candi-terminal-cyan)',
69
+ 'terminal-white': 'var(--candi-terminal-white)',
70
+
71
+ // UI States
72
+ hover: 'var(--candi-hover)',
73
+ active: 'var(--candi-active)',
74
+ },
75
+ },
76
+
77
+ spacing: {
78
+ '4.5': '1.125rem',
79
+ '5.5': '1.375rem',
80
+ '7': '1.75rem',
81
+ '9': '2.25rem',
82
+ '11': '2.75rem',
83
+ '13': '3.25rem',
84
+ '15': '3.75rem',
85
+ '18': '4.5rem',
86
+ '22': '5.5rem',
87
+ },
88
+
89
+ fontFamily: {
90
+ sans: ['Inter', 'Segoe UI', 'system-ui', '-apple-system', 'sans-serif'],
91
+ },
92
+
93
+ fontSize: {
94
+ 'xs': ['0.8125rem', { lineHeight: '1.5' }],
95
+ 'sm': ['0.9375rem', { lineHeight: '1.6' }],
96
+ },
97
+
98
+ lineHeight: {
99
+ 'relaxed': '1.7',
100
+ 'relaxed-plus': '1.85',
101
+ },
102
+
103
+ minHeight: {
104
+ 'btn': '3.25rem',
105
+ 'input': '3.5rem',
106
+ },
107
+
108
+ borderRadius: {
109
+ 'soft': '0.75rem',
110
+ 'softer': '1rem',
111
+ 'pill': '2rem',
112
+ },
113
+
114
+ boxShadow: {
115
+ 'hygge': 'var(--candi-shadow)',
116
+ 'hygge-md': 'var(--candi-shadow-md)',
117
+ 'hygge-lg': 'var(--candi-shadow-lg)',
118
+ },
119
+
120
+ transitionDuration: {
121
+ '250': '250ms',
122
+ },
123
+ };