@kazamitte/design-token 0.0.0-stage → 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.
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Status role assignments.
3
+ *
4
+ * Error, warning, success, and info map to fixed hues. Unlike brand
5
+ * roles, these are not generated and not configurable: their meaning
6
+ * is carried by convention, and a product that recolors its errors
7
+ * away from red is trading recognition for consistency.
8
+ *
9
+ * Status
10
+ * ├─ Error → red
11
+ * ├─ Warning → amber
12
+ * ├─ Success → green
13
+ * └─ Info → blue
14
+ */
15
+
16
+ :root {
17
+ --r-error-bg: var(--c-red-bg);
18
+ --r-error-bg-subtle: var(--c-red-bg-subtle);
19
+ --r-error-bg-muted: var(--c-red-bg-muted);
20
+ --r-error-bg-selected: var(--c-red-bg-selected);
21
+ --r-error-bg-solid: var(--c-red-bg-solid);
22
+ --r-error-border-subtle: var(--c-red-border-subtle);
23
+ --r-error-border-muted: var(--c-red-border-muted);
24
+ --r-error-border-selected: var(--c-red-border-selected);
25
+ --r-error-border: var(--c-red-border);
26
+ --r-error-border-solid: var(--c-red-border-solid);
27
+ --r-error-fg-strong: var(--c-red-fg-strong);
28
+ --r-error-fg: var(--c-red-fg);
29
+ --r-error-fg-muted: var(--c-red-fg-muted);
30
+ --r-error-fg-subtle: var(--c-red-fg-subtle);
31
+ --r-error-fg-contrast: var(--c-red-fg-contrast);
32
+ --r-error-focus-ring: var(--c-red-focus-ring);
33
+
34
+ --r-warning-bg: var(--c-amber-bg);
35
+ --r-warning-bg-subtle: var(--c-amber-bg-subtle);
36
+ --r-warning-bg-muted: var(--c-amber-bg-muted);
37
+ --r-warning-bg-selected: var(--c-amber-bg-selected);
38
+ --r-warning-bg-solid: var(--c-amber-bg-solid);
39
+ --r-warning-border-subtle: var(--c-amber-border-subtle);
40
+ --r-warning-border-muted: var(--c-amber-border-muted);
41
+ --r-warning-border-selected: var(--c-amber-border-selected);
42
+ --r-warning-border: var(--c-amber-border);
43
+ --r-warning-border-solid: var(--c-amber-border-solid);
44
+ --r-warning-fg-strong: var(--c-amber-fg-strong);
45
+ --r-warning-fg: var(--c-amber-fg);
46
+ --r-warning-fg-muted: var(--c-amber-fg-muted);
47
+ --r-warning-fg-subtle: var(--c-amber-fg-subtle);
48
+ --r-warning-fg-contrast: var(--c-amber-fg-contrast);
49
+ --r-warning-focus-ring: var(--c-amber-focus-ring);
50
+
51
+ --r-success-bg: var(--c-green-bg);
52
+ --r-success-bg-subtle: var(--c-green-bg-subtle);
53
+ --r-success-bg-muted: var(--c-green-bg-muted);
54
+ --r-success-bg-selected: var(--c-green-bg-selected);
55
+ --r-success-bg-solid: var(--c-green-bg-solid);
56
+ --r-success-border-subtle: var(--c-green-border-subtle);
57
+ --r-success-border-muted: var(--c-green-border-muted);
58
+ --r-success-border-selected: var(--c-green-border-selected);
59
+ --r-success-border: var(--c-green-border);
60
+ --r-success-border-solid: var(--c-green-border-solid);
61
+ --r-success-fg-strong: var(--c-green-fg-strong);
62
+ --r-success-fg: var(--c-green-fg);
63
+ --r-success-fg-muted: var(--c-green-fg-muted);
64
+ --r-success-fg-subtle: var(--c-green-fg-subtle);
65
+ --r-success-fg-contrast: var(--c-green-fg-contrast);
66
+ --r-success-focus-ring: var(--c-green-focus-ring);
67
+
68
+ --r-info-bg: var(--c-blue-bg);
69
+ --r-info-bg-subtle: var(--c-blue-bg-subtle);
70
+ --r-info-bg-muted: var(--c-blue-bg-muted);
71
+ --r-info-bg-selected: var(--c-blue-bg-selected);
72
+ --r-info-bg-solid: var(--c-blue-bg-solid);
73
+ --r-info-border-subtle: var(--c-blue-border-subtle);
74
+ --r-info-border-muted: var(--c-blue-border-muted);
75
+ --r-info-border-selected: var(--c-blue-border-selected);
76
+ --r-info-border: var(--c-blue-border);
77
+ --r-info-border-solid: var(--c-blue-border-solid);
78
+ --r-info-fg-strong: var(--c-blue-fg-strong);
79
+ --r-info-fg: var(--c-blue-fg);
80
+ --r-info-fg-muted: var(--c-blue-fg-muted);
81
+ --r-info-fg-subtle: var(--c-blue-fg-subtle);
82
+ --r-info-fg-contrast: var(--c-blue-fg-contrast);
83
+ --r-info-focus-ring: var(--c-blue-focus-ring);
84
+ }
@@ -0,0 +1,478 @@
1
+ /*
2
+ * Color role utilities
3
+ *
4
+ * Class names mirror their variable names exactly:
5
+ * {role}-{category}[-{step}] to var(--r-{role}-{category}[-{step}])
6
+ */
7
+
8
+ /* base */
9
+
10
+ @utility base-bg {
11
+ background-color: var(--r-base-bg);
12
+ }
13
+
14
+ @utility base-bg-subtle {
15
+ background-color: var(--r-base-bg-subtle);
16
+ }
17
+
18
+ @utility base-bg-muted {
19
+ background-color: var(--r-base-bg-muted);
20
+ }
21
+
22
+ @utility base-bg-selected {
23
+ background-color: var(--r-base-bg-selected);
24
+ }
25
+
26
+ @utility base-bg-solid {
27
+ background-color: var(--r-base-bg-solid);
28
+ }
29
+
30
+ @utility base-border-subtle {
31
+ border-color: var(--r-base-border-subtle);
32
+ }
33
+
34
+ @utility base-border-muted {
35
+ border-color: var(--r-base-border-muted);
36
+ }
37
+
38
+ @utility base-border-selected {
39
+ border-color: var(--r-base-border-selected);
40
+ }
41
+
42
+ @utility base-border {
43
+ border-color: var(--r-base-border);
44
+ }
45
+
46
+ @utility base-border-solid {
47
+ border-color: var(--r-base-border-solid);
48
+ }
49
+
50
+ @utility base-fg-strong {
51
+ color: var(--r-base-fg-strong);
52
+ }
53
+
54
+ @utility base-fg {
55
+ color: var(--r-base-fg);
56
+ }
57
+
58
+ @utility base-fg-muted {
59
+ color: var(--r-base-fg-muted);
60
+ }
61
+
62
+ @utility base-fg-subtle {
63
+ color: var(--r-base-fg-subtle);
64
+ }
65
+
66
+ @utility base-fg-contrast {
67
+ color: var(--r-base-fg-contrast);
68
+ }
69
+
70
+ @utility base-focus-ring {
71
+ outline-color: var(--r-base-focus-ring);
72
+ }
73
+
74
+ /* primary */
75
+
76
+ @utility primary-bg {
77
+ background-color: var(--r-primary-bg);
78
+ }
79
+
80
+ @utility primary-bg-subtle {
81
+ background-color: var(--r-primary-bg-subtle);
82
+ }
83
+
84
+ @utility primary-bg-muted {
85
+ background-color: var(--r-primary-bg-muted);
86
+ }
87
+
88
+ @utility primary-bg-selected {
89
+ background-color: var(--r-primary-bg-selected);
90
+ }
91
+
92
+ @utility primary-bg-solid {
93
+ background-color: var(--r-primary-bg-solid);
94
+ }
95
+
96
+ @utility primary-border-subtle {
97
+ border-color: var(--r-primary-border-subtle);
98
+ }
99
+
100
+ @utility primary-border-muted {
101
+ border-color: var(--r-primary-border-muted);
102
+ }
103
+
104
+ @utility primary-border-selected {
105
+ border-color: var(--r-primary-border-selected);
106
+ }
107
+
108
+ @utility primary-border {
109
+ border-color: var(--r-primary-border);
110
+ }
111
+
112
+ @utility primary-border-solid {
113
+ border-color: var(--r-primary-border-solid);
114
+ }
115
+
116
+ @utility primary-fg-strong {
117
+ color: var(--r-primary-fg-strong);
118
+ }
119
+
120
+ @utility primary-fg {
121
+ color: var(--r-primary-fg);
122
+ }
123
+
124
+ @utility primary-fg-muted {
125
+ color: var(--r-primary-fg-muted);
126
+ }
127
+
128
+ @utility primary-fg-subtle {
129
+ color: var(--r-primary-fg-subtle);
130
+ }
131
+
132
+ @utility primary-fg-contrast {
133
+ color: var(--r-primary-fg-contrast);
134
+ }
135
+
136
+ @utility primary-focus-ring {
137
+ outline-color: var(--r-primary-focus-ring);
138
+ }
139
+
140
+ /* secondary */
141
+
142
+ @utility secondary-bg {
143
+ background-color: var(--r-secondary-bg);
144
+ }
145
+
146
+ @utility secondary-bg-subtle {
147
+ background-color: var(--r-secondary-bg-subtle);
148
+ }
149
+
150
+ @utility secondary-bg-muted {
151
+ background-color: var(--r-secondary-bg-muted);
152
+ }
153
+
154
+ @utility secondary-bg-selected {
155
+ background-color: var(--r-secondary-bg-selected);
156
+ }
157
+
158
+ @utility secondary-bg-solid {
159
+ background-color: var(--r-secondary-bg-solid);
160
+ }
161
+
162
+ @utility secondary-border-subtle {
163
+ border-color: var(--r-secondary-border-subtle);
164
+ }
165
+
166
+ @utility secondary-border-muted {
167
+ border-color: var(--r-secondary-border-muted);
168
+ }
169
+
170
+ @utility secondary-border-selected {
171
+ border-color: var(--r-secondary-border-selected);
172
+ }
173
+
174
+ @utility secondary-border {
175
+ border-color: var(--r-secondary-border);
176
+ }
177
+
178
+ @utility secondary-border-solid {
179
+ border-color: var(--r-secondary-border-solid);
180
+ }
181
+
182
+ @utility secondary-fg-strong {
183
+ color: var(--r-secondary-fg-strong);
184
+ }
185
+
186
+ @utility secondary-fg {
187
+ color: var(--r-secondary-fg);
188
+ }
189
+
190
+ @utility secondary-fg-muted {
191
+ color: var(--r-secondary-fg-muted);
192
+ }
193
+
194
+ @utility secondary-fg-subtle {
195
+ color: var(--r-secondary-fg-subtle);
196
+ }
197
+
198
+ @utility secondary-fg-contrast {
199
+ color: var(--r-secondary-fg-contrast);
200
+ }
201
+
202
+ @utility secondary-focus-ring {
203
+ outline-color: var(--r-secondary-focus-ring);
204
+ }
205
+
206
+ /* error */
207
+
208
+ @utility error-bg {
209
+ background-color: var(--r-error-bg);
210
+ }
211
+
212
+ @utility error-bg-subtle {
213
+ background-color: var(--r-error-bg-subtle);
214
+ }
215
+
216
+ @utility error-bg-muted {
217
+ background-color: var(--r-error-bg-muted);
218
+ }
219
+
220
+ @utility error-bg-selected {
221
+ background-color: var(--r-error-bg-selected);
222
+ }
223
+
224
+ @utility error-bg-solid {
225
+ background-color: var(--r-error-bg-solid);
226
+ }
227
+
228
+ @utility error-border-subtle {
229
+ border-color: var(--r-error-border-subtle);
230
+ }
231
+
232
+ @utility error-border-muted {
233
+ border-color: var(--r-error-border-muted);
234
+ }
235
+
236
+ @utility error-border-selected {
237
+ border-color: var(--r-error-border-selected);
238
+ }
239
+
240
+ @utility error-border {
241
+ border-color: var(--r-error-border);
242
+ }
243
+
244
+ @utility error-border-solid {
245
+ border-color: var(--r-error-border-solid);
246
+ }
247
+
248
+ @utility error-fg-strong {
249
+ color: var(--r-error-fg-strong);
250
+ }
251
+
252
+ @utility error-fg {
253
+ color: var(--r-error-fg);
254
+ }
255
+
256
+ @utility error-fg-muted {
257
+ color: var(--r-error-fg-muted);
258
+ }
259
+
260
+ @utility error-fg-subtle {
261
+ color: var(--r-error-fg-subtle);
262
+ }
263
+
264
+ @utility error-fg-contrast {
265
+ color: var(--r-error-fg-contrast);
266
+ }
267
+
268
+ @utility error-focus-ring {
269
+ outline-color: var(--r-error-focus-ring);
270
+ }
271
+
272
+ /* warning */
273
+
274
+ @utility warning-bg {
275
+ background-color: var(--r-warning-bg);
276
+ }
277
+
278
+ @utility warning-bg-subtle {
279
+ background-color: var(--r-warning-bg-subtle);
280
+ }
281
+
282
+ @utility warning-bg-muted {
283
+ background-color: var(--r-warning-bg-muted);
284
+ }
285
+
286
+ @utility warning-bg-selected {
287
+ background-color: var(--r-warning-bg-selected);
288
+ }
289
+
290
+ @utility warning-bg-solid {
291
+ background-color: var(--r-warning-bg-solid);
292
+ }
293
+
294
+ @utility warning-border-subtle {
295
+ border-color: var(--r-warning-border-subtle);
296
+ }
297
+
298
+ @utility warning-border-muted {
299
+ border-color: var(--r-warning-border-muted);
300
+ }
301
+
302
+ @utility warning-border-selected {
303
+ border-color: var(--r-warning-border-selected);
304
+ }
305
+
306
+ @utility warning-border {
307
+ border-color: var(--r-warning-border);
308
+ }
309
+
310
+ @utility warning-border-solid {
311
+ border-color: var(--r-warning-border-solid);
312
+ }
313
+
314
+ @utility warning-fg-strong {
315
+ color: var(--r-warning-fg-strong);
316
+ }
317
+
318
+ @utility warning-fg {
319
+ color: var(--r-warning-fg);
320
+ }
321
+
322
+ @utility warning-fg-muted {
323
+ color: var(--r-warning-fg-muted);
324
+ }
325
+
326
+ @utility warning-fg-subtle {
327
+ color: var(--r-warning-fg-subtle);
328
+ }
329
+
330
+ @utility warning-fg-contrast {
331
+ color: var(--r-warning-fg-contrast);
332
+ }
333
+
334
+ @utility warning-focus-ring {
335
+ outline-color: var(--r-warning-focus-ring);
336
+ }
337
+
338
+ /* success */
339
+
340
+ @utility success-bg {
341
+ background-color: var(--r-success-bg);
342
+ }
343
+
344
+ @utility success-bg-subtle {
345
+ background-color: var(--r-success-bg-subtle);
346
+ }
347
+
348
+ @utility success-bg-muted {
349
+ background-color: var(--r-success-bg-muted);
350
+ }
351
+
352
+ @utility success-bg-selected {
353
+ background-color: var(--r-success-bg-selected);
354
+ }
355
+
356
+ @utility success-bg-solid {
357
+ background-color: var(--r-success-bg-solid);
358
+ }
359
+
360
+ @utility success-border-subtle {
361
+ border-color: var(--r-success-border-subtle);
362
+ }
363
+
364
+ @utility success-border-muted {
365
+ border-color: var(--r-success-border-muted);
366
+ }
367
+
368
+ @utility success-border-selected {
369
+ border-color: var(--r-success-border-selected);
370
+ }
371
+
372
+ @utility success-border {
373
+ border-color: var(--r-success-border);
374
+ }
375
+
376
+ @utility success-border-solid {
377
+ border-color: var(--r-success-border-solid);
378
+ }
379
+
380
+ @utility success-fg-strong {
381
+ color: var(--r-success-fg-strong);
382
+ }
383
+
384
+ @utility success-fg {
385
+ color: var(--r-success-fg);
386
+ }
387
+
388
+ @utility success-fg-muted {
389
+ color: var(--r-success-fg-muted);
390
+ }
391
+
392
+ @utility success-fg-subtle {
393
+ color: var(--r-success-fg-subtle);
394
+ }
395
+
396
+ @utility success-fg-contrast {
397
+ color: var(--r-success-fg-contrast);
398
+ }
399
+
400
+ @utility success-focus-ring {
401
+ outline-color: var(--r-success-focus-ring);
402
+ }
403
+
404
+ /* info */
405
+
406
+ @utility info-bg {
407
+ background-color: var(--r-info-bg);
408
+ }
409
+
410
+ @utility info-bg-subtle {
411
+ background-color: var(--r-info-bg-subtle);
412
+ }
413
+
414
+ @utility info-bg-muted {
415
+ background-color: var(--r-info-bg-muted);
416
+ }
417
+
418
+ @utility info-bg-selected {
419
+ background-color: var(--r-info-bg-selected);
420
+ }
421
+
422
+ @utility info-bg-solid {
423
+ background-color: var(--r-info-bg-solid);
424
+ }
425
+
426
+ @utility info-border-subtle {
427
+ border-color: var(--r-info-border-subtle);
428
+ }
429
+
430
+ @utility info-border-muted {
431
+ border-color: var(--r-info-border-muted);
432
+ }
433
+
434
+ @utility info-border-selected {
435
+ border-color: var(--r-info-border-selected);
436
+ }
437
+
438
+ @utility info-border {
439
+ border-color: var(--r-info-border);
440
+ }
441
+
442
+ @utility info-border-solid {
443
+ border-color: var(--r-info-border-solid);
444
+ }
445
+
446
+ @utility info-fg-strong {
447
+ color: var(--r-info-fg-strong);
448
+ }
449
+
450
+ @utility info-fg {
451
+ color: var(--r-info-fg);
452
+ }
453
+
454
+ @utility info-fg-muted {
455
+ color: var(--r-info-fg-muted);
456
+ }
457
+
458
+ @utility info-fg-subtle {
459
+ color: var(--r-info-fg-subtle);
460
+ }
461
+
462
+ @utility info-fg-contrast {
463
+ color: var(--r-info-fg-contrast);
464
+ }
465
+
466
+ @utility info-focus-ring {
467
+ outline-color: var(--r-info-focus-ring);
468
+ }
469
+
470
+ /* link */
471
+
472
+ @utility link-fg {
473
+ color: var(--r-link-fg);
474
+ }
475
+
476
+ @utility link-fg-strong {
477
+ color: var(--r-link-fg-strong);
478
+ }
@@ -0,0 +1,7 @@
1
+ @theme {
2
+ --color-*: initial;
3
+ --font-*: initial;
4
+ --text-*: initial;
5
+ --tracking-*: initial;
6
+ --leading-*: initial;
7
+ }
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Animation primitives.
3
+ *
4
+ * Enter / exit
5
+ * ├─ fade-in / fade-out
6
+ * ├─ scale-in / scale-out
7
+ * ├─ slide-in-from-top / -right / -bottom / -left
8
+ * └─ slide-out-to-top / -right / -bottom / -left
9
+ *
10
+ * Every step is composed from `var(--duration-*)` and `var(--ease-*)`,
11
+ * so it follows whichever style preset is loaded and collapses to 1ms
12
+ * under `prefers-reduced-motion` — no preset carries an animation
13
+ * override, the same arrangement the shadow scale uses for light and
14
+ * dark.
15
+ *
16
+ * The slide steps travel `--slide-distance`, the full size of the
17
+ * element unless the element narrows it — 100% is the drawer case,
18
+ * `[--slide-distance:1rem]` the toast case.
19
+ *
20
+ * Height-based collapse / expand is deliberately absent: it needs a
21
+ * measured height, which no keyframe can supply.
22
+ */
23
+ @theme {
24
+ --animate-fade-in: fade-in var(--duration-enter) var(--ease-standard) both;
25
+ --animate-fade-out: fade-out var(--duration-transition) var(--ease-standard)
26
+ both;
27
+
28
+ --animate-scale-in: scale-in var(--duration-enter) var(--ease-emphasized) both;
29
+ --animate-scale-out: scale-out var(--duration-transition) var(--ease-standard)
30
+ both;
31
+
32
+ --animate-slide-in-from-top: slide-in-from-top var(--duration-enter)
33
+ var(--ease-emphasized) both;
34
+ --animate-slide-in-from-right: slide-in-from-right var(--duration-enter)
35
+ var(--ease-emphasized) both;
36
+ --animate-slide-in-from-bottom: slide-in-from-bottom var(--duration-enter)
37
+ var(--ease-emphasized) both;
38
+ --animate-slide-in-from-left: slide-in-from-left var(--duration-enter)
39
+ var(--ease-emphasized) both;
40
+
41
+ --animate-slide-out-to-top: slide-out-to-top var(--duration-transition)
42
+ var(--ease-standard) both;
43
+ --animate-slide-out-to-right: slide-out-to-right var(--duration-transition)
44
+ var(--ease-standard) both;
45
+ --animate-slide-out-to-bottom: slide-out-to-bottom var(--duration-transition)
46
+ var(--ease-standard) both;
47
+ --animate-slide-out-to-left: slide-out-to-left var(--duration-transition)
48
+ var(--ease-standard) both;
49
+
50
+ @keyframes fade-in {
51
+ from {
52
+ opacity: 0;
53
+ }
54
+ }
55
+ @keyframes fade-out {
56
+ to {
57
+ opacity: 0;
58
+ }
59
+ }
60
+
61
+ @keyframes scale-in {
62
+ from {
63
+ opacity: 0;
64
+ scale: 0.96;
65
+ }
66
+ }
67
+ @keyframes scale-out {
68
+ to {
69
+ opacity: 0;
70
+ scale: 0.96;
71
+ }
72
+ }
73
+
74
+ @keyframes slide-in-from-top {
75
+ from {
76
+ opacity: 0;
77
+ translate: 0 calc(var(--slide-distance, 100%) * -1);
78
+ }
79
+ }
80
+ @keyframes slide-in-from-right {
81
+ from {
82
+ opacity: 0;
83
+ translate: var(--slide-distance, 100%) 0;
84
+ }
85
+ }
86
+ @keyframes slide-in-from-bottom {
87
+ from {
88
+ opacity: 0;
89
+ translate: 0 var(--slide-distance, 100%);
90
+ }
91
+ }
92
+ @keyframes slide-in-from-left {
93
+ from {
94
+ opacity: 0;
95
+ translate: calc(var(--slide-distance, 100%) * -1) 0;
96
+ }
97
+ }
98
+
99
+ @keyframes slide-out-to-top {
100
+ to {
101
+ opacity: 0;
102
+ translate: 0 calc(var(--slide-distance, 100%) * -1);
103
+ }
104
+ }
105
+ @keyframes slide-out-to-right {
106
+ to {
107
+ opacity: 0;
108
+ translate: var(--slide-distance, 100%) 0;
109
+ }
110
+ }
111
+ @keyframes slide-out-to-bottom {
112
+ to {
113
+ opacity: 0;
114
+ translate: 0 var(--slide-distance, 100%);
115
+ }
116
+ }
117
+ @keyframes slide-out-to-left {
118
+ to {
119
+ opacity: 0;
120
+ translate: calc(var(--slide-distance, 100%) * -1) 0;
121
+ }
122
+ }
123
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Radius primitives.
3
+ *
4
+ * The `--radius-*` namespace is redefined here with literal values
5
+ * so that the scale the style presets build on stays identical
6
+ * across Tailwind versions. `theme/style/*.css` maps these steps to
7
+ * the semantic roles (tight / control / surface / overlay / pill),
8
+ * so a change to the underlying scale would silently reshape every
9
+ * preset.
10
+ *
11
+ * Scale
12
+ * ├─ xs / sm / md / lg / xl / 2xl / 3xl / 4xl
13
+ * └─ full
14
+ *
15
+ * These are raw steps with no semantic meaning; consume them through
16
+ * the style presets in `theme/style/` instead of referencing them
17
+ * directly.
18
+ */
19
+ @theme {
20
+ --radius-xs: 0.125rem;
21
+ --radius-sm: 0.25rem;
22
+ --radius-md: 0.375rem;
23
+ --radius-lg: 0.5rem;
24
+ --radius-xl: 0.75rem;
25
+ --radius-2xl: 1rem;
26
+ --radius-3xl: 1.5rem;
27
+ --radius-4xl: 2rem;
28
+ --radius-full: calc(infinity * 1px);
29
+ }