@zovaris/sephiro 0.4.0 → 0.5.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,2055 @@
1
+ :where([class^="sph-"], [class*=" sph-"]) {
2
+ --tw-font-weight: initial;
3
+ --tw-border-style: solid;
4
+ --tw-leading: initial;
5
+ --tw-shadow: 0 0 #0000;
6
+ --tw-shadow-color: initial;
7
+ --tw-shadow-alpha: 100%;
8
+ --tw-inset-shadow: 0 0 #0000;
9
+ --tw-inset-shadow-color: initial;
10
+ --tw-inset-shadow-alpha: 100%;
11
+ --tw-ring-color: initial;
12
+ --tw-ring-shadow: 0 0 #0000;
13
+ --tw-inset-ring-color: initial;
14
+ --tw-inset-ring-shadow: 0 0 #0000;
15
+ --tw-ring-inset: initial;
16
+ --tw-ring-offset-width: 0px;
17
+ --tw-ring-offset-color: #fff;
18
+ --tw-ring-offset-shadow: 0 0 #0000;
19
+ --tw-duration: initial;
20
+ --tw-ease: initial;
21
+ }
22
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
23
+ .sph-badge {
24
+ display: inline-flex;
25
+ align-items: center;
26
+ border-radius: calc(infinity * 1px);
27
+ padding-inline: calc(var(--spacing, 0.25rem) * 2);
28
+ padding-block: calc(var(--spacing, 0.25rem) * 0.5);
29
+ --tw-font-weight: var(--font-weight-medium, 500);
30
+ font-weight: var(--font-weight-medium, 500);
31
+ color: var(--sph-text-muted);
32
+ font: 550 11px / 1.4 var(--sph-font-sans);
33
+ letter-spacing: 0.01em;
34
+ transition: background-color var(--sph-motion-fast) var(--sph-ease-standard), color var(--sph-motion-fast) var(--sph-ease-standard);
35
+ }
36
+ .sph-badge[data-size="sm"] {
37
+ min-height: calc(var(--spacing, 0.25rem) * 5);
38
+ }
39
+ .sph-badge[data-size="md"] {
40
+ min-height: calc(var(--spacing, 0.25rem) * 6);
41
+ padding-inline: calc(var(--spacing, 0.25rem) * 2.5);
42
+ font-size: var(--text-xs, 0.75rem);
43
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
44
+ }
45
+ .sph-badge[data-size="lg"] {
46
+ min-height: calc(var(--spacing, 0.25rem) * 7);
47
+ padding-inline: calc(var(--spacing, 0.25rem) * 3);
48
+ font-size: var(--text-sm, 0.875rem);
49
+ line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
50
+ }
51
+ .sph-badge[data-variant="neutral"] {
52
+ background: var(--sph-raised);
53
+ }
54
+ .sph-badge[data-variant="accent"] {
55
+ background: var(--sph-accent-soft);
56
+ color: var(--sph-accent-strong);
57
+ }
58
+ .sph-badge[data-variant="success"] {
59
+ background: var(--sph-success-soft);
60
+ color: var(--sph-success);
61
+ }
62
+ .sph-badge[data-variant="warning"] {
63
+ background: var(--sph-warning-soft);
64
+ color: var(--sph-warning);
65
+ }
66
+ .sph-badge[data-variant="danger"] {
67
+ background: var(--sph-danger-soft);
68
+ color: var(--sph-danger);
69
+ }
70
+ @media (prefers-reduced-motion: reduce) {
71
+ .sph-badge {
72
+ transition: none;
73
+ }
74
+ }
75
+ .sph-button {
76
+ display: inline-flex;
77
+ height: calc(var(--spacing, 0.25rem) * 9);
78
+ align-items: center;
79
+ justify-content: center;
80
+ gap: calc(var(--spacing, 0.25rem) * 1.5);
81
+ border-radius: var(--sph-radius-sm);
82
+ border-style: var(--tw-border-style);
83
+ border-width: 0px;
84
+ background-color: transparent;
85
+ padding-inline: calc(var(--spacing, 0.25rem) * 3);
86
+ font-size: 12.5px;
87
+ --tw-font-weight: var(--font-weight-medium, 500);
88
+ font-weight: var(--font-weight-medium, 500);
89
+ color: var(--sph-text);
90
+ box-sizing: border-box;
91
+ cursor: pointer;
92
+ font-family: var(--sph-font-sans);
93
+ font-weight: 550;
94
+ transition: background-color var(--sph-motion-fast) var(--sph-ease-standard), color var(--sph-motion-fast) var(--sph-ease-standard), transform var(--sph-motion-fast) var(--sph-ease-emphasis);
95
+ }
96
+ .sph-button[data-size="sm"] {
97
+ height: calc(var(--spacing, 0.25rem) * 8);
98
+ }
99
+ .sph-button[data-size="md"] {
100
+ height: calc(var(--spacing, 0.25rem) * 9);
101
+ font-size: var(--text-sm, 0.875rem);
102
+ line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
103
+ }
104
+ .sph-button[data-size="lg"] {
105
+ height: calc(var(--spacing, 0.25rem) * 10);
106
+ font-size: var(--text-sm, 0.875rem);
107
+ line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
108
+ }
109
+ .sph-button[data-variant="primary"] {
110
+ background-color: var(--sph-accent);
111
+ color: var(--sph-on-accent);
112
+ }
113
+ .sph-button[data-variant="primary"]:hover {
114
+ background-color: var(--sph-accent-hover);
115
+ }
116
+ .sph-button[data-variant="primary"]:active {
117
+ background-color: var(--sph-accent-pressed);
118
+ transform: translateY(1px);
119
+ }
120
+ .sph-button[data-variant="secondary"] {
121
+ border-style: var(--tw-border-style);
122
+ border-width: 1px;
123
+ border-color: var(--sph-border);
124
+ background-color: var(--sph-surface);
125
+ }
126
+ .sph-button[data-variant="secondary"]:hover, .sph-button[data-variant="quiet"]:hover {
127
+ background-color: var(--sph-raised);
128
+ }
129
+ .sph-button[data-variant="quiet"] {
130
+ color: var(--sph-text-muted);
131
+ }
132
+ .sph-button:disabled {
133
+ opacity: 45%;
134
+ cursor: not-allowed;
135
+ transform: none;
136
+ }
137
+ .sph-button:focus-visible {
138
+ outline: 2px solid var(--sph-focus);
139
+ outline-offset: 2px;
140
+ }
141
+ .sph-button[data-loading="true"] {
142
+ cursor: wait;
143
+ }
144
+ .sph-button__label {
145
+ display: inline-flex;
146
+ align-items: center;
147
+ }
148
+ @media (prefers-reduced-motion: reduce) {
149
+ .sph-button {
150
+ transition: none;
151
+ }
152
+ }
153
+ .sph-checkbox {
154
+ display: inline-flex;
155
+ min-height: calc(var(--spacing, 0.25rem) * 9);
156
+ cursor: pointer;
157
+ align-items: center;
158
+ gap: calc(var(--spacing, 0.25rem) * 2);
159
+ font-size: var(--text-sm, 0.875rem);
160
+ line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
161
+ color: var(--sph-text);
162
+ font-family: var(--sph-font-sans);
163
+ }
164
+ .sph-checkbox[data-size="sm"] {
165
+ min-height: calc(var(--spacing, 0.25rem) * 8);
166
+ font-size: var(--text-xs, 0.75rem);
167
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
168
+ }
169
+ .sph-checkbox[data-size="lg"] {
170
+ min-height: calc(var(--spacing, 0.25rem) * 10);
171
+ }
172
+ .sph-checkbox__input {
173
+ position: absolute;
174
+ opacity: 0;
175
+ pointer-events: none;
176
+ }
177
+ .sph-checkbox__box {
178
+ box-sizing: border-box;
179
+ width: calc(var(--spacing, 0.25rem) * 4);
180
+ height: calc(var(--spacing, 0.25rem) * 4);
181
+ border-radius: var(--sph-radius-xs);
182
+ border-style: var(--tw-border-style);
183
+ border-width: 1px;
184
+ border-color: var(--sph-border);
185
+ background-color: var(--sph-surface);
186
+ position: relative;
187
+ flex: 0 0 auto;
188
+ transition: background-color var(--sph-motion-fast) var(--sph-ease-standard), border-color var(--sph-motion-fast) var(--sph-ease-standard), transform var(--sph-motion-fast) var(--sph-ease-emphasis);
189
+ }
190
+ .sph-checkbox[data-size="sm"] .sph-checkbox__box {
191
+ width: calc(var(--spacing, 0.25rem) * 3.5);
192
+ height: calc(var(--spacing, 0.25rem) * 3.5);
193
+ }
194
+ .sph-checkbox[data-size="lg"] .sph-checkbox__box {
195
+ width: calc(var(--spacing, 0.25rem) * 5);
196
+ height: calc(var(--spacing, 0.25rem) * 5);
197
+ }
198
+ .sph-checkbox__input:checked + .sph-checkbox__box {
199
+ border-color: var(--sph-accent);
200
+ background-color: var(--sph-accent);
201
+ }
202
+ .sph-checkbox__check {
203
+ display: block;
204
+ width: 100%;
205
+ height: 100%;
206
+ color: var(--color-white, #fff);
207
+ opacity: 0;
208
+ transform: scale(0.72);
209
+ transition: opacity var(--sph-motion-fast) var(--sph-ease-standard), transform var(--sph-motion-fast) var(--sph-ease-emphasis);
210
+ }
211
+ .sph-checkbox__input:checked + .sph-checkbox__box .sph-checkbox__check {
212
+ opacity: 1;
213
+ transform: scale(1);
214
+ }
215
+ .sph-checkbox__input:focus-visible + .sph-checkbox__box {
216
+ outline: 2px solid var(--sph-focus);
217
+ outline-offset: 2px;
218
+ }
219
+ .sph-checkbox__input:active + .sph-checkbox__box {
220
+ transform: scale(0.92);
221
+ }
222
+ .sph-checkbox__input:disabled ~ * {
223
+ opacity: 50%;
224
+ cursor: not-allowed;
225
+ }
226
+ .sph-checkbox__input[aria-invalid="true"] + .sph-checkbox__box {
227
+ border-color: var(--sph-danger);
228
+ }
229
+ @media (prefers-reduced-motion: reduce) {
230
+ .sph-checkbox__box, .sph-checkbox__check {
231
+ transition: none;
232
+ }
233
+ }
234
+ .sph-icon-button {
235
+ display: inline-flex;
236
+ flex-shrink: 0;
237
+ align-items: center;
238
+ justify-content: center;
239
+ border-radius: var(--sph-radius-sm);
240
+ border-style: var(--tw-border-style);
241
+ border-width: 0px;
242
+ background-color: transparent;
243
+ padding: 0px;
244
+ color: var(--sph-text-muted);
245
+ box-sizing: border-box;
246
+ cursor: pointer;
247
+ font-family: var(--sph-font-sans);
248
+ transition: background-color var(--sph-motion-fast) var(--sph-ease-standard), color var(--sph-motion-fast) var(--sph-ease-standard), transform var(--sph-motion-fast) var(--sph-ease-emphasis);
249
+ }
250
+ .sph-icon-button[data-size="sm"] {
251
+ width: calc(var(--spacing, 0.25rem) * 8);
252
+ height: calc(var(--spacing, 0.25rem) * 8);
253
+ }
254
+ .sph-icon-button[data-size="md"] {
255
+ width: calc(var(--spacing, 0.25rem) * 9);
256
+ height: calc(var(--spacing, 0.25rem) * 9);
257
+ }
258
+ .sph-icon-button[data-size="lg"] {
259
+ width: calc(var(--spacing, 0.25rem) * 10);
260
+ height: calc(var(--spacing, 0.25rem) * 10);
261
+ }
262
+ .sph-icon-button:hover:not(:disabled) {
263
+ background-color: var(--sph-raised);
264
+ color: var(--sph-text);
265
+ }
266
+ .sph-icon-button:active:not(:disabled) {
267
+ background-color: var(--sph-accent-soft);
268
+ transform: scale(0.94);
269
+ }
270
+ .sph-icon-button[data-variant="solid"] {
271
+ background-color: var(--sph-accent);
272
+ color: var(--sph-on-accent);
273
+ }
274
+ .sph-icon-button[data-variant="solid"]:hover:not(:disabled) {
275
+ background-color: var(--sph-accent-hover);
276
+ color: var(--sph-on-accent);
277
+ }
278
+ .sph-icon-button[data-variant="solid"]:active:not(:disabled) {
279
+ background-color: var(--sph-accent-pressed);
280
+ }
281
+ .sph-icon-button[data-variant="outline"] {
282
+ border-style: var(--tw-border-style);
283
+ border-width: 1px;
284
+ border-color: var(--sph-border);
285
+ background-color: var(--sph-surface);
286
+ color: var(--sph-text);
287
+ }
288
+ .sph-icon-button[data-variant="outline"]:hover:not(:disabled) {
289
+ background-color: var(--sph-raised);
290
+ border-color: var(--sph-border-strong);
291
+ }
292
+ .sph-icon-button:focus-visible {
293
+ outline: 2px solid var(--sph-focus);
294
+ outline-offset: 2px;
295
+ box-shadow: 0 0 0 4px var(--sph-focus-ring);
296
+ }
297
+ .sph-icon-button:disabled {
298
+ opacity: 45%;
299
+ cursor: not-allowed;
300
+ transform: none;
301
+ }
302
+ .sph-icon-button[data-loading="true"] {
303
+ cursor: wait;
304
+ }
305
+ @media (prefers-reduced-motion: reduce) {
306
+ .sph-icon-button {
307
+ transition: none;
308
+ }
309
+ }
310
+ .sph-input {
311
+ box-sizing: border-box;
312
+ height: calc(var(--spacing, 0.25rem) * 9);
313
+ width: 100%;
314
+ border-radius: var(--sph-radius-sm);
315
+ background-color: var(--sph-surface);
316
+ padding-inline: calc(var(--spacing, 0.25rem) * 3);
317
+ color: var(--sph-text);
318
+ --tw-outline-style: none;
319
+ outline-style: none;
320
+ border: 0.5px solid var(--sph-border);
321
+ @supports (color: color-mix(in lab, red, red)) {
322
+ border: 0.5px solid color-mix(in srgb, var(--sph-border) 86%, transparent);
323
+ }
324
+ font: 13px var(--sph-font-sans);
325
+ transition: border-color var(--sph-motion-fast) var(--sph-ease-standard), box-shadow var(--sph-motion-fast) var(--sph-ease-standard), background-color var(--sph-motion-fast) var(--sph-ease-standard);
326
+ }
327
+ .sph-input[data-size="sm"] {
328
+ height: calc(var(--spacing, 0.25rem) * 8);
329
+ }
330
+ .sph-input[data-size="lg"] {
331
+ height: calc(var(--spacing, 0.25rem) * 10);
332
+ }
333
+ .sph-input:hover:not(:disabled) {
334
+ border-color: var(--sph-border-strong);
335
+ }
336
+ .sph-input::placeholder {
337
+ color: var(--sph-text-muted);
338
+ }
339
+ .sph-input[aria-invalid="true"] {
340
+ border-color: var(--sph-danger);
341
+ }
342
+ .sph-input:disabled {
343
+ opacity: 50%;
344
+ cursor: not-allowed;
345
+ }
346
+ .sph-input:focus-visible {
347
+ outline: none;
348
+ box-shadow: none;
349
+ border-color: var(--sph-border-strong);
350
+ }
351
+ .sph-input[aria-invalid="true"]:focus-visible {
352
+ border-color: var(--sph-danger);
353
+ }
354
+ @media (prefers-reduced-motion: reduce) {
355
+ .sph-input {
356
+ transition: none;
357
+ }
358
+ }
359
+ .sph-skeleton {
360
+ display: inline-block;
361
+ min-height: calc(var(--spacing, 0.25rem) * 3);
362
+ border-radius: var(--sph-radius-sm);
363
+ background-color: var(--sph-raised);
364
+ background-image: linear-gradient( 90deg, transparent, var(--sph-text), transparent );
365
+ @supports (color: color-mix(in lab, red, red)) {
366
+ background-image: linear-gradient( 90deg, transparent, color-mix(in srgb, var(--sph-text) 8%, transparent), transparent );
367
+ }
368
+ background-size: 200% 100%;
369
+ animation: sph-skeleton-shimmer 1.4s var(--sph-ease-standard) infinite;
370
+ }
371
+ @keyframes sph-skeleton-shimmer {
372
+ from {
373
+ background-position: 200% 0;
374
+ }
375
+ to {
376
+ background-position: -200% 0;
377
+ }
378
+ }
379
+ @media (prefers-reduced-motion: reduce) {
380
+ .sph-skeleton {
381
+ animation: none;
382
+ }
383
+ }
384
+ .sph-slider {
385
+ display: grid;
386
+ width: 100%;
387
+ gap: calc(var(--spacing, 0.25rem) * 2);
388
+ font-family: var(--sph-font-sans);
389
+ --sph-slider-track: 4px;
390
+ --sph-slider-thumb: 15px;
391
+ }
392
+ .sph-slider[data-size="sm"] {
393
+ --sph-slider-track: 3px;
394
+ --sph-slider-thumb: 12px;
395
+ }
396
+ .sph-slider[data-size="lg"] {
397
+ --sph-slider-track: 5px;
398
+ --sph-slider-thumb: 18px;
399
+ }
400
+ .sph-slider__head {
401
+ display: flex;
402
+ align-items: baseline;
403
+ justify-content: space-between;
404
+ gap: calc(var(--spacing, 0.25rem) * 3);
405
+ }
406
+ .sph-slider__label {
407
+ font-size: 11px;
408
+ --tw-leading: 1;
409
+ line-height: 1;
410
+ color: var(--sph-text);
411
+ }
412
+ .sph-slider__value {
413
+ font-size: 11px;
414
+ --tw-leading: 1;
415
+ line-height: 1;
416
+ color: var(--sph-text-muted);
417
+ font-variant-numeric: tabular-nums;
418
+ }
419
+ .sph-slider[data-size="sm"] .sph-slider__label, .sph-slider[data-size="sm"] .sph-slider__value {
420
+ font-size: 10px;
421
+ }
422
+ .sph-slider[data-size="lg"] .sph-slider__label, .sph-slider[data-size="lg"] .sph-slider__value {
423
+ font-size: var(--text-xs, 0.75rem);
424
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
425
+ }
426
+ .sph-slider__input {
427
+ margin: 0px;
428
+ width: 100%;
429
+ cursor: pointer;
430
+ border-style: var(--tw-border-style);
431
+ border-width: 0px;
432
+ background-color: transparent;
433
+ padding: 0px;
434
+ appearance: none;
435
+ -webkit-appearance: none;
436
+ box-sizing: border-box;
437
+ height: calc(var(--sph-slider-thumb) + 2px);
438
+ }
439
+ .sph-slider__input::-webkit-slider-runnable-track {
440
+ box-sizing: border-box;
441
+ height: var(--sph-slider-track);
442
+ border-radius: 999px;
443
+ background: linear-gradient( to right, var(--sph-slider-fill, var(--sph-accent)) var(--sph-slider-progress, 0%), var(--sph-border) var(--sph-slider-progress, 0%) );
444
+ }
445
+ .sph-slider__input::-moz-range-track {
446
+ box-sizing: border-box;
447
+ height: var(--sph-slider-track);
448
+ border-radius: 999px;
449
+ background: var(--sph-border);
450
+ }
451
+ .sph-slider__input::-moz-range-progress {
452
+ height: var(--sph-slider-track);
453
+ border-radius: 999px;
454
+ background: var(--sph-slider-fill, var(--sph-accent));
455
+ }
456
+ .sph-slider__input::-webkit-slider-thumb {
457
+ appearance: none;
458
+ -webkit-appearance: none;
459
+ box-sizing: border-box;
460
+ width: var(--sph-slider-thumb);
461
+ height: var(--sph-slider-thumb);
462
+ margin-top: calc((var(--sph-slider-track) - var(--sph-slider-thumb)) / 2);
463
+ border: 0;
464
+ border-radius: 999px;
465
+ background: var(--sph-slider-fill, var(--sph-accent));
466
+ box-shadow: 0 0 0 1px var(--sph-slider-ring, var(--sph-surface)), 0 1px 2px rgb(0 0 0 / 0.28);
467
+ transition: box-shadow var(--sph-motion-fast) var(--sph-ease-standard);
468
+ }
469
+ .sph-slider__input::-moz-range-thumb {
470
+ box-sizing: border-box;
471
+ width: var(--sph-slider-thumb);
472
+ height: var(--sph-slider-thumb);
473
+ border: 0;
474
+ border-radius: 999px;
475
+ background: var(--sph-slider-fill, var(--sph-accent));
476
+ box-shadow: 0 0 0 1px var(--sph-slider-ring, var(--sph-surface)), 0 1px 2px rgb(0 0 0 / 0.28);
477
+ }
478
+ .sph-slider__input:hover::-webkit-slider-thumb, .sph-slider__input:active::-webkit-slider-thumb {
479
+ box-shadow: 0 0 0 1px var(--sph-slider-ring, var(--sph-surface)), 0 0 0 5px var(--sph-accent-soft);
480
+ }
481
+ .sph-slider__input:hover::-moz-range-thumb, .sph-slider__input:active::-moz-range-thumb {
482
+ box-shadow: 0 0 0 1px var(--sph-slider-ring, var(--sph-surface)), 0 0 0 5px var(--sph-accent-soft);
483
+ }
484
+ .sph-slider__input:focus-visible {
485
+ outline: 2px solid var(--sph-focus);
486
+ outline-offset: 4px;
487
+ border-radius: 999px;
488
+ }
489
+ .sph-slider[data-invalid] .sph-slider__input {
490
+ --sph-slider-fill: var(--sph-danger);
491
+ }
492
+ .sph-slider[data-invalid] .sph-slider__value {
493
+ color: var(--sph-danger);
494
+ }
495
+ .sph-slider[data-disabled] .sph-slider__input {
496
+ cursor: not-allowed;
497
+ opacity: 0.45;
498
+ }
499
+ .sph-slider[data-disabled] .sph-slider__label, .sph-slider[data-disabled] .sph-slider__value {
500
+ opacity: 60%;
501
+ }
502
+ @media (prefers-reduced-motion: reduce) {
503
+ .sph-slider__input::-webkit-slider-thumb, .sph-slider__input::-moz-range-thumb {
504
+ transition: none;
505
+ }
506
+ }
507
+ .sph-separator {
508
+ margin: 0px;
509
+ border-style: var(--tw-border-style);
510
+ border-width: 0px;
511
+ background-color: var(--sph-border);
512
+ flex: 0 0 auto;
513
+ }
514
+ .sph-separator[data-orientation="horizontal"] {
515
+ height: 1px;
516
+ width: 100%;
517
+ }
518
+ .sph-separator[data-orientation="vertical"] {
519
+ height: 100%;
520
+ width: 1px;
521
+ min-height: 18px;
522
+ }
523
+ .sph-spinner {
524
+ box-sizing: border-box;
525
+ display: inline-block;
526
+ flex-shrink: 0;
527
+ border-radius: calc(infinity * 1px);
528
+ border-style: var(--tw-border-style);
529
+ border-width: 2px;
530
+ border-color: var(--sph-border);
531
+ border-top-color: var(--sph-accent);
532
+ animation: sph-spin 700ms linear infinite;
533
+ }
534
+ .sph-spinner--sm {
535
+ width: calc(var(--spacing, 0.25rem) * 3);
536
+ height: calc(var(--spacing, 0.25rem) * 3);
537
+ }
538
+ .sph-spinner--md {
539
+ width: calc(var(--spacing, 0.25rem) * 4);
540
+ height: calc(var(--spacing, 0.25rem) * 4);
541
+ }
542
+ .sph-spinner--lg {
543
+ width: calc(var(--spacing, 0.25rem) * 5);
544
+ height: calc(var(--spacing, 0.25rem) * 5);
545
+ }
546
+ @keyframes sph-spin {
547
+ to {
548
+ transform: rotate(360deg);
549
+ }
550
+ }
551
+ @media (prefers-reduced-motion: reduce) {
552
+ .sph-spinner {
553
+ animation: none;
554
+ }
555
+ }
556
+ .sph-surface {
557
+ min-width: 0px;
558
+ border-radius: var(--sph-radius-md);
559
+ color: var(--sph-text);
560
+ background: var(--sph-surface);
561
+ font-family: var(--sph-font-sans);
562
+ }
563
+ .sph-surface[data-tone="elevated"] {
564
+ background: var(--sph-surface-elevated);
565
+ }
566
+ .sph-surface[data-tone="raised"] {
567
+ background: var(--sph-raised);
568
+ }
569
+ .sph-surface[data-padding="none"] {
570
+ padding: 0;
571
+ }
572
+ .sph-surface[data-padding="sm"] {
573
+ padding: 10px;
574
+ }
575
+ .sph-surface[data-padding="md"] {
576
+ padding: 16px;
577
+ }
578
+ .sph-surface[data-padding="lg"] {
579
+ padding: 24px;
580
+ }
581
+ .sph-textarea {
582
+ box-sizing: border-box;
583
+ min-height: calc(var(--spacing, 0.25rem) * 24);
584
+ width: 100%;
585
+ resize: vertical;
586
+ border-radius: var(--sph-radius-sm);
587
+ background-color: var(--sph-surface);
588
+ padding-inline: calc(var(--spacing, 0.25rem) * 3);
589
+ padding-block: calc(var(--spacing, 0.25rem) * 2.5);
590
+ color: var(--sph-text);
591
+ --tw-outline-style: none;
592
+ outline-style: none;
593
+ border: 0.5px solid var(--sph-border);
594
+ @supports (color: color-mix(in lab, red, red)) {
595
+ border: 0.5px solid color-mix(in srgb, var(--sph-border) 86%, transparent);
596
+ }
597
+ font: 13px / 1.5 var(--sph-font-sans);
598
+ transition: border-color var(--sph-motion-fast) var(--sph-ease-standard), box-shadow var(--sph-motion-fast) var(--sph-ease-standard);
599
+ }
600
+ .sph-textarea[data-size="sm"] {
601
+ min-height: calc(var(--spacing, 0.25rem) * 20);
602
+ }
603
+ .sph-textarea[data-size="lg"] {
604
+ min-height: calc(var(--spacing, 0.25rem) * 32);
605
+ }
606
+ .sph-textarea:hover:not(:disabled) {
607
+ border-color: var(--sph-border-strong);
608
+ }
609
+ .sph-textarea::placeholder {
610
+ color: var(--sph-text-muted);
611
+ }
612
+ .sph-textarea[aria-invalid="true"] {
613
+ border-color: var(--sph-danger);
614
+ }
615
+ .sph-textarea:disabled {
616
+ opacity: 50%;
617
+ cursor: not-allowed;
618
+ }
619
+ .sph-textarea:focus-visible {
620
+ outline: 2px solid var(--sph-focus);
621
+ outline-offset: 2px;
622
+ box-shadow: 0 0 0 4px var(--sph-focus-ring);
623
+ }
624
+ @media (prefers-reduced-motion: reduce) {
625
+ .sph-textarea {
626
+ transition: none;
627
+ }
628
+ }
629
+ .sph-toggle {
630
+ box-sizing: border-box;
631
+ display: inline-flex;
632
+ height: calc(var(--spacing, 0.25rem) * 9);
633
+ width: calc(var(--spacing, 0.25rem) * 11);
634
+ align-items: center;
635
+ justify-content: center;
636
+ border-style: var(--tw-border-style);
637
+ border-width: 0px;
638
+ background-color: transparent;
639
+ padding: 0px;
640
+ font-family: var(--sph-font-sans);
641
+ --sph-toggle-travel: 16px;
642
+ cursor: pointer;
643
+ }
644
+ .sph-toggle[data-size="sm"] {
645
+ height: calc(var(--spacing, 0.25rem) * 8);
646
+ width: calc(var(--spacing, 0.25rem) * 10);
647
+ --sph-toggle-travel: 12px;
648
+ }
649
+ .sph-toggle[data-size="lg"] {
650
+ height: calc(var(--spacing, 0.25rem) * 10);
651
+ width: calc(var(--spacing, 0.25rem) * 12);
652
+ --sph-toggle-travel: 20px;
653
+ }
654
+ .sph-toggle__track {
655
+ position: relative;
656
+ box-sizing: border-box;
657
+ display: block;
658
+ height: calc(var(--spacing, 0.25rem) * 5);
659
+ width: calc(var(--spacing, 0.25rem) * 9);
660
+ border-radius: calc(infinity * 1px);
661
+ background-color: var(--sph-border-strong);
662
+ padding: calc(var(--spacing, 0.25rem) * 0.5);
663
+ transition: background-color var(--sph-motion-normal) var(--sph-ease-standard);
664
+ }
665
+ .sph-toggle[data-size="sm"] .sph-toggle__track {
666
+ height: calc(var(--spacing, 0.25rem) * 4);
667
+ width: calc(var(--spacing, 0.25rem) * 7);
668
+ }
669
+ .sph-toggle[data-size="lg"] .sph-toggle__track {
670
+ height: calc(var(--spacing, 0.25rem) * 6);
671
+ width: calc(var(--spacing, 0.25rem) * 11);
672
+ }
673
+ .sph-toggle[data-state="checked"] .sph-toggle__track {
674
+ background-color: var(--sph-accent);
675
+ }
676
+ .sph-toggle__thumb {
677
+ display: block;
678
+ width: calc(var(--spacing, 0.25rem) * 4);
679
+ height: calc(var(--spacing, 0.25rem) * 4);
680
+ border-radius: calc(infinity * 1px);
681
+ background-color: var(--color-white, #fff);
682
+ box-shadow: 0 0 0 1px var(--sph-text), 0 1px 3px rgb(0 0 0 / 0.3);
683
+ @supports (color: color-mix(in lab, red, red)) {
684
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--sph-text) 16%, transparent), 0 1px 3px rgb(0 0 0 / 0.3);
685
+ }
686
+ transition: transform var(--sph-motion-normal) var(--sph-ease-emphasis);
687
+ }
688
+ .sph-toggle[data-size="sm"] .sph-toggle__thumb {
689
+ width: calc(var(--spacing, 0.25rem) * 3);
690
+ height: calc(var(--spacing, 0.25rem) * 3);
691
+ }
692
+ .sph-toggle[data-size="lg"] .sph-toggle__thumb {
693
+ width: calc(var(--spacing, 0.25rem) * 5);
694
+ height: calc(var(--spacing, 0.25rem) * 5);
695
+ }
696
+ .sph-toggle[data-state="checked"] .sph-toggle__thumb {
697
+ transform: translateX(var(--sph-toggle-travel));
698
+ }
699
+ .sph-toggle:active:not(:disabled) .sph-toggle__thumb {
700
+ transform: scale(0.9);
701
+ }
702
+ .sph-toggle[data-state="checked"]:active:not(:disabled) .sph-toggle__thumb {
703
+ transform: translateX(var(--sph-toggle-travel)) scale(0.9);
704
+ }
705
+ .sph-toggle:disabled {
706
+ cursor: not-allowed;
707
+ }
708
+ .sph-toggle:disabled .sph-toggle__track {
709
+ background: var(--sph-border);
710
+ @supports (color: color-mix(in lab, red, red)) {
711
+ background: color-mix(in srgb, var(--sph-border) 65%, var(--sph-surface));
712
+ }
713
+ }
714
+ .sph-toggle:disabled[data-state="checked"] .sph-toggle__track {
715
+ background: var(--sph-accent);
716
+ @supports (color: color-mix(in lab, red, red)) {
717
+ background: color-mix(in srgb, var(--sph-accent) 38%, var(--sph-surface));
718
+ }
719
+ }
720
+ .sph-toggle:disabled .sph-toggle__thumb {
721
+ box-shadow: 0 0 0 1px var(--sph-text);
722
+ @supports (color: color-mix(in lab, red, red)) {
723
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--sph-text) 14%, transparent);
724
+ }
725
+ }
726
+ .sph-toggle:focus-visible {
727
+ outline: 2px solid var(--sph-focus);
728
+ outline-offset: 2px;
729
+ }
730
+ @media (prefers-reduced-motion: reduce) {
731
+ .sph-toggle__track, .sph-toggle__thumb {
732
+ transition: none;
733
+ }
734
+ }
735
+ .sph-field {
736
+ display: grid;
737
+ gap: calc(var(--spacing, 0.25rem) * 1.5);
738
+ font-family: var(--sph-font-sans);
739
+ }
740
+ .sph-field__label {
741
+ display: flex;
742
+ align-items: center;
743
+ justify-content: space-between;
744
+ gap: calc(var(--spacing, 0.25rem) * 3);
745
+ font-size: var(--text-sm, 0.875rem);
746
+ line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
747
+ --tw-font-weight: var(--font-weight-medium, 500);
748
+ font-weight: var(--font-weight-medium, 500);
749
+ color: var(--sph-text);
750
+ line-height: 1.25;
751
+ }
752
+ .sph-field__required {
753
+ font-size: var(--text-xs, 0.75rem);
754
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
755
+ --tw-font-weight: var(--font-weight-normal, 400);
756
+ font-weight: var(--font-weight-normal, 400);
757
+ color: var(--sph-text-muted);
758
+ }
759
+ .sph-field__description {
760
+ margin: 0px;
761
+ font-size: var(--text-xs, 0.75rem);
762
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
763
+ color: var(--sph-text-muted);
764
+ line-height: 1.4;
765
+ }
766
+ .sph-field__control {
767
+ min-width: 0px;
768
+ }
769
+ .sph-field-message {
770
+ margin: 0px;
771
+ font-size: var(--text-xs, 0.75rem);
772
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
773
+ color: var(--sph-text-muted);
774
+ font-family: var(--sph-font-sans);
775
+ line-height: 1.4;
776
+ }
777
+ .sph-field-message[data-variant="error"] {
778
+ color: var(--sph-danger);
779
+ }
780
+ .sph-field-message[data-variant="success"] {
781
+ color: var(--sph-success);
782
+ }
783
+ .sph-card {
784
+ min-width: 0px;
785
+ overflow: hidden;
786
+ border-radius: var(--sph-radius-md);
787
+ border-style: var(--tw-border-style);
788
+ border-width: 1px;
789
+ border-color: var(--sph-border);
790
+ background-color: var(--sph-surface);
791
+ color: var(--sph-text);
792
+ font-family: var(--sph-font-sans);
793
+ transition: border-color var(--sph-motion-fast) var(--sph-ease-standard), background-color var(--sph-motion-fast) var(--sph-ease-standard), transform var(--sph-motion-fast) var(--sph-ease-emphasis);
794
+ }
795
+ .sph-card[data-interactive="true"] {
796
+ cursor: pointer;
797
+ }
798
+ .sph-card[data-interactive="true"]:hover {
799
+ border-color: var(--sph-border-strong);
800
+ background: var(--sph-surface-elevated);
801
+ }
802
+ .sph-card[data-interactive="true"]:active {
803
+ transform: translateY(1px);
804
+ }
805
+ .sph-card[data-selected="true"] {
806
+ border-color: var(--sph-accent);
807
+ box-shadow: 0 0 0 1px var(--sph-accent-soft);
808
+ }
809
+ .sph-card:focus-within {
810
+ border-color: var(--sph-focus);
811
+ }
812
+ .sph-card__header {
813
+ display: grid;
814
+ gap: var(--spacing, 0.25rem);
815
+ border-bottom-style: var(--tw-border-style);
816
+ border-bottom-width: 1px;
817
+ border-color: var(--sph-border);
818
+ padding-inline: calc(var(--spacing, 0.25rem) * 4);
819
+ padding-block: calc(var(--spacing, 0.25rem) * 3.5);
820
+ }
821
+ .sph-card__title {
822
+ margin: 0px;
823
+ font-size: var(--text-sm, 0.875rem);
824
+ line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
825
+ --tw-font-weight: var(--font-weight-semibold, 600);
826
+ font-weight: var(--font-weight-semibold, 600);
827
+ color: var(--sph-text);
828
+ line-height: 1.3;
829
+ }
830
+ .sph-card__description {
831
+ margin: 0px;
832
+ font-size: var(--text-xs, 0.75rem);
833
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
834
+ color: var(--sph-text-muted);
835
+ line-height: 1.45;
836
+ }
837
+ .sph-card__content {
838
+ min-width: 0px;
839
+ padding-inline: calc(var(--spacing, 0.25rem) * 4);
840
+ padding-block: calc(var(--spacing, 0.25rem) * 4);
841
+ }
842
+ .sph-card__footer {
843
+ display: flex;
844
+ flex-wrap: wrap;
845
+ align-items: center;
846
+ justify-content: flex-end;
847
+ gap: calc(var(--spacing, 0.25rem) * 2);
848
+ border-top-style: var(--tw-border-style);
849
+ border-top-width: 1px;
850
+ border-color: var(--sph-border);
851
+ padding-inline: calc(var(--spacing, 0.25rem) * 4);
852
+ padding-block: calc(var(--spacing, 0.25rem) * 3);
853
+ }
854
+ @media (prefers-reduced-motion: reduce) {
855
+ .sph-card {
856
+ transition: none;
857
+ }
858
+ }
859
+ .sph-alert {
860
+ display: flex;
861
+ min-width: 0px;
862
+ align-items: flex-start;
863
+ gap: calc(var(--spacing, 0.25rem) * 3);
864
+ border-radius: var(--sph-radius-md);
865
+ border-style: var(--tw-border-style);
866
+ border-width: 1px;
867
+ padding-inline: calc(var(--spacing, 0.25rem) * 3.5);
868
+ padding-block: calc(var(--spacing, 0.25rem) * 3);
869
+ font-size: var(--text-sm, 0.875rem);
870
+ line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
871
+ background: var(--sph-surface);
872
+ border-color: var(--sph-border);
873
+ color: var(--sph-text);
874
+ font-family: var(--sph-font-sans);
875
+ }
876
+ .sph-alert[data-variant="info"] {
877
+ background: var(--sph-accent);
878
+ @supports (color: color-mix(in lab, red, red)) {
879
+ background: color-mix(in srgb, var(--sph-accent) 8%, var(--sph-surface));
880
+ }
881
+ border-color: var(--sph-accent);
882
+ @supports (color: color-mix(in lab, red, red)) {
883
+ border-color: color-mix(in srgb, var(--sph-accent) 30%, var(--sph-border));
884
+ }
885
+ }
886
+ .sph-alert[data-variant="success"] {
887
+ background: var(--sph-success-soft);
888
+ border-color: var(--sph-success);
889
+ @supports (color: color-mix(in lab, red, red)) {
890
+ border-color: color-mix(in srgb, var(--sph-success) 34%, var(--sph-border));
891
+ }
892
+ }
893
+ .sph-alert[data-variant="warning"] {
894
+ background: var(--sph-warning-soft);
895
+ border-color: var(--sph-warning);
896
+ @supports (color: color-mix(in lab, red, red)) {
897
+ border-color: color-mix(in srgb, var(--sph-warning) 34%, var(--sph-border));
898
+ }
899
+ }
900
+ .sph-alert[data-variant="danger"] {
901
+ background: var(--sph-danger-soft);
902
+ border-color: var(--sph-danger);
903
+ @supports (color: color-mix(in lab, red, red)) {
904
+ border-color: color-mix(in srgb, var(--sph-danger) 34%, var(--sph-border));
905
+ }
906
+ }
907
+ .sph-alert__icon {
908
+ display: flex;
909
+ width: calc(var(--spacing, 0.25rem) * 8);
910
+ height: calc(var(--spacing, 0.25rem) * 8);
911
+ flex-shrink: 0;
912
+ align-items: center;
913
+ justify-content: center;
914
+ align-self: center;
915
+ border-radius: var(--sph-radius-md);
916
+ background: var(--sph-accent-soft, var(--sph-raised));
917
+ color: var(--sph-accent);
918
+ }
919
+ .sph-alert__icon svg {
920
+ display: block;
921
+ width: calc(var(--spacing, 0.25rem) * 4);
922
+ height: calc(var(--spacing, 0.25rem) * 4);
923
+ }
924
+ .sph-alert[data-variant="success"] .sph-alert__icon {
925
+ background: var(--sph-success-soft);
926
+ color: var(--sph-success);
927
+ }
928
+ .sph-alert[data-variant="warning"] .sph-alert__icon {
929
+ background: var(--sph-warning-soft);
930
+ color: var(--sph-warning);
931
+ }
932
+ .sph-alert[data-variant="danger"] .sph-alert__icon {
933
+ background: var(--sph-danger-soft);
934
+ color: var(--sph-danger);
935
+ }
936
+ .sph-alert__body {
937
+ min-width: 0px;
938
+ flex: 1;
939
+ }
940
+ .sph-alert__title {
941
+ margin: 0px;
942
+ --tw-font-weight: var(--font-weight-semibold, 600);
943
+ font-weight: var(--font-weight-semibold, 600);
944
+ line-height: 1.35;
945
+ }
946
+ .sph-alert__content {
947
+ margin-top: calc(var(--spacing, 0.25rem) * 0.5);
948
+ font-size: var(--text-xs, 0.75rem);
949
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
950
+ color: var(--sph-text-muted);
951
+ line-height: 1.45;
952
+ }
953
+ .sph-alert__dismiss {
954
+ margin-block: auto;
955
+ display: inline-flex;
956
+ width: calc(var(--spacing, 0.25rem) * 6);
957
+ height: calc(var(--spacing, 0.25rem) * 6);
958
+ flex-shrink: 0;
959
+ align-items: center;
960
+ justify-content: center;
961
+ border-radius: var(--sph-radius-sm);
962
+ border-style: var(--tw-border-style);
963
+ border-width: 0px;
964
+ background-color: transparent;
965
+ padding: 0px;
966
+ color: var(--sph-text-muted);
967
+ cursor: pointer;
968
+ }
969
+ .sph-alert__dismiss:hover {
970
+ background-color: var(--sph-raised);
971
+ color: var(--sph-text);
972
+ }
973
+ .sph-alert__dismiss:focus-visible {
974
+ outline: 2px solid var(--sph-focus);
975
+ outline-offset: 1px;
976
+ }
977
+ .sph-select {
978
+ position: relative;
979
+ box-sizing: border-box;
980
+ font-family: var(--sph-font-sans);
981
+ }
982
+ .sph-select__trigger {
983
+ display: flex;
984
+ height: calc(var(--spacing, 0.25rem) * 9);
985
+ width: 100%;
986
+ align-items: center;
987
+ justify-content: space-between;
988
+ gap: calc(var(--spacing, 0.25rem) * 3);
989
+ border-radius: var(--sph-radius-sm);
990
+ background-color: var(--sph-surface);
991
+ padding-inline: calc(var(--spacing, 0.25rem) * 3);
992
+ text-align: left;
993
+ color: var(--sph-text);
994
+ border: 0.5px solid var(--sph-border);
995
+ @supports (color: color-mix(in lab, red, red)) {
996
+ border: 0.5px solid color-mix(in srgb, var(--sph-border) 86%, transparent);
997
+ }
998
+ cursor: pointer;
999
+ font: 13px var(--sph-font-sans);
1000
+ transition: border-color var(--sph-motion-fast) var(--sph-ease-standard), background-color var(--sph-motion-fast) var(--sph-ease-standard), box-shadow var(--sph-motion-fast) var(--sph-ease-standard);
1001
+ }
1002
+ .sph-select[data-size="sm"] .sph-select__trigger {
1003
+ height: calc(var(--spacing, 0.25rem) * 8);
1004
+ }
1005
+ .sph-select[data-size="lg"] .sph-select__trigger {
1006
+ height: calc(var(--spacing, 0.25rem) * 10);
1007
+ }
1008
+ .sph-select__trigger:hover:not(:disabled) {
1009
+ border-color: var(--sph-border-strong);
1010
+ }
1011
+ .sph-select__trigger:active:not(:disabled) {
1012
+ background-color: var(--sph-raised);
1013
+ }
1014
+ .sph-select__value {
1015
+ overflow: hidden;
1016
+ text-overflow: ellipsis;
1017
+ white-space: nowrap;
1018
+ }
1019
+ .sph-select__caret {
1020
+ width: 7px;
1021
+ height: 7px;
1022
+ border-right: 1.5px solid currentColor;
1023
+ border-bottom: 1.5px solid currentColor;
1024
+ transform: translateY(-2px) rotate(45deg);
1025
+ transition: transform var(--sph-motion-fast) var(--sph-ease-standard);
1026
+ }
1027
+ .sph-select__trigger[aria-expanded="true"] .sph-select__caret {
1028
+ transform: translateY(2px) rotate(225deg);
1029
+ }
1030
+ .sph-select__trigger:disabled {
1031
+ opacity: 50%;
1032
+ cursor: not-allowed;
1033
+ }
1034
+ .sph-select__trigger:focus-visible {
1035
+ outline: 2px solid var(--sph-focus);
1036
+ outline-offset: 2px;
1037
+ box-shadow: 0 0 0 4px var(--sph-focus-ring);
1038
+ }
1039
+ .sph-select__listbox {
1040
+ position: absolute;
1041
+ left: 0px;
1042
+ z-index: 100;
1043
+ max-height: calc(var(--spacing, 0.25rem) * 60);
1044
+ width: 100%;
1045
+ overflow: auto;
1046
+ border-radius: var(--sph-radius-md);
1047
+ border-style: var(--tw-border-style);
1048
+ border-width: 1px;
1049
+ border-color: var(--sph-border);
1050
+ background-color: var(--sph-surface);
1051
+ padding: var(--spacing, 0.25rem);
1052
+ --tw-shadow: var(--sph-shadow-popover);
1053
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1054
+ top: calc(100% + 4px);
1055
+ }
1056
+ .sph-select__option {
1057
+ display: flex;
1058
+ width: 100%;
1059
+ align-items: center;
1060
+ justify-content: space-between;
1061
+ gap: calc(var(--spacing, 0.25rem) * 3);
1062
+ border-radius: var(--sph-radius-xs);
1063
+ border-style: var(--tw-border-style);
1064
+ border-width: 0px;
1065
+ background-color: transparent;
1066
+ padding-inline: calc(var(--spacing, 0.25rem) * 2.5);
1067
+ padding-block: calc(var(--spacing, 0.25rem) * 2);
1068
+ color: var(--sph-text-muted);
1069
+ cursor: pointer;
1070
+ font: 13px var(--sph-font-sans);
1071
+ text-align: left;
1072
+ }
1073
+ .sph-select__option[data-active="true"] {
1074
+ background-color: var(--sph-raised);
1075
+ color: var(--sph-text);
1076
+ }
1077
+ .sph-select__option:active:not(:disabled) {
1078
+ background-color: var(--sph-accent-soft);
1079
+ }
1080
+ .sph-select__option:disabled {
1081
+ opacity: 40%;
1082
+ cursor: not-allowed;
1083
+ }
1084
+ .sph-select__check {
1085
+ width: 10px;
1086
+ height: 6px;
1087
+ border-left: 2px solid var(--sph-accent);
1088
+ border-bottom: 2px solid var(--sph-accent);
1089
+ transform: rotate(-45deg);
1090
+ }
1091
+ @media (prefers-reduced-motion: reduce) {
1092
+ .sph-select__trigger, .sph-select__caret {
1093
+ transition: none;
1094
+ }
1095
+ }
1096
+ .sph-radio-group {
1097
+ display: grid;
1098
+ min-width: 0px;
1099
+ gap: calc(var(--spacing, 0.25rem) * 2);
1100
+ border-style: var(--tw-border-style);
1101
+ border-width: 0px;
1102
+ padding: 0px;
1103
+ font-family: var(--sph-font-sans);
1104
+ }
1105
+ .sph-radio-group__legend {
1106
+ padding: 0px;
1107
+ font-size: var(--text-sm, 0.875rem);
1108
+ line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
1109
+ --tw-font-weight: var(--font-weight-medium, 500);
1110
+ font-weight: var(--font-weight-medium, 500);
1111
+ color: var(--sph-text);
1112
+ }
1113
+ .sph-radio-group__description {
1114
+ margin: 0px;
1115
+ font-size: var(--text-xs, 0.75rem);
1116
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
1117
+ color: var(--sph-text-muted);
1118
+ line-height: 1.4;
1119
+ }
1120
+ .sph-radio-group__options {
1121
+ display: grid;
1122
+ gap: var(--spacing, 0.25rem);
1123
+ }
1124
+ .sph-radio-group[data-orientation="horizontal"] .sph-radio-group__options {
1125
+ display: flex;
1126
+ flex-wrap: wrap;
1127
+ column-gap: calc(var(--spacing, 0.25rem) * 5);
1128
+ row-gap: calc(var(--spacing, 0.25rem) * 2);
1129
+ }
1130
+ .sph-radio-group__option {
1131
+ display: inline-flex;
1132
+ min-height: calc(var(--spacing, 0.25rem) * 9);
1133
+ min-width: 0px;
1134
+ cursor: pointer;
1135
+ align-items: flex-start;
1136
+ gap: calc(var(--spacing, 0.25rem) * 2);
1137
+ font-size: var(--text-sm, 0.875rem);
1138
+ line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
1139
+ color: var(--sph-text);
1140
+ }
1141
+ .sph-radio-group[data-size="sm"] .sph-radio-group__option {
1142
+ min-height: calc(var(--spacing, 0.25rem) * 8);
1143
+ font-size: var(--text-xs, 0.75rem);
1144
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
1145
+ }
1146
+ .sph-radio-group[data-size="lg"] .sph-radio-group__option {
1147
+ min-height: calc(var(--spacing, 0.25rem) * 10);
1148
+ }
1149
+ .sph-radio-group__option input {
1150
+ position: absolute;
1151
+ opacity: 0;
1152
+ pointer-events: none;
1153
+ }
1154
+ .sph-radio-group__control {
1155
+ margin-top: calc(var(--spacing, 0.25rem) * 0.5);
1156
+ box-sizing: border-box;
1157
+ display: inline-flex;
1158
+ width: calc(var(--spacing, 0.25rem) * 4);
1159
+ height: calc(var(--spacing, 0.25rem) * 4);
1160
+ flex-shrink: 0;
1161
+ align-items: center;
1162
+ justify-content: center;
1163
+ border-radius: calc(infinity * 1px);
1164
+ border-style: var(--tw-border-style);
1165
+ border-width: 1px;
1166
+ border-color: var(--sph-border);
1167
+ background-color: var(--sph-surface);
1168
+ transition: border-color var(--sph-motion-fast) var(--sph-ease-standard), background-color var(--sph-motion-fast) var(--sph-ease-standard), transform var(--sph-motion-fast) var(--sph-ease-emphasis);
1169
+ }
1170
+ .sph-radio-group[data-size="sm"] .sph-radio-group__control {
1171
+ width: calc(var(--spacing, 0.25rem) * 3.5);
1172
+ height: calc(var(--spacing, 0.25rem) * 3.5);
1173
+ }
1174
+ .sph-radio-group[data-size="lg"] .sph-radio-group__control {
1175
+ width: calc(var(--spacing, 0.25rem) * 5);
1176
+ height: calc(var(--spacing, 0.25rem) * 5);
1177
+ }
1178
+ .sph-radio-group__option input:checked + .sph-radio-group__control {
1179
+ border-color: var(--sph-accent);
1180
+ box-shadow: inset 0 0 0 3.5px var(--sph-surface), inset 0 0 0 8px var(--sph-accent);
1181
+ }
1182
+ .sph-radio-group__option:hover:not([data-disabled="true"]) .sph-radio-group__control {
1183
+ border-color: var(--sph-border-strong);
1184
+ }
1185
+ .sph-radio-group__option input:focus-visible + .sph-radio-group__control {
1186
+ outline: 2px solid var(--sph-focus);
1187
+ outline-offset: 2px;
1188
+ }
1189
+ .sph-radio-group__option input:active + .sph-radio-group__control {
1190
+ transform: scale(0.92);
1191
+ }
1192
+ .sph-radio-group__option[data-disabled="true"], .sph-radio-group[disabled] .sph-radio-group__option {
1193
+ cursor: not-allowed;
1194
+ opacity: 50%;
1195
+ }
1196
+ .sph-radio-group__content {
1197
+ display: grid;
1198
+ min-width: 0px;
1199
+ gap: calc(var(--spacing, 0.25rem) * 0.5);
1200
+ }
1201
+ .sph-radio-group__label {
1202
+ --tw-leading: calc(var(--spacing, 0.25rem) * 5);
1203
+ line-height: calc(var(--spacing, 0.25rem) * 5);
1204
+ }
1205
+ .sph-radio-group__option-description {
1206
+ font-size: var(--text-xs, 0.75rem);
1207
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
1208
+ color: var(--sph-text-muted);
1209
+ line-height: 1.35;
1210
+ }
1211
+ @media (prefers-reduced-motion: reduce) {
1212
+ .sph-radio-group__control {
1213
+ transition: none;
1214
+ }
1215
+ }
1216
+ .sph-tabs {
1217
+ min-width: 0px;
1218
+ font-family: var(--sph-font-sans);
1219
+ }
1220
+ .sph-tabs__list {
1221
+ display: flex;
1222
+ min-width: 0px;
1223
+ gap: var(--spacing, 0.25rem);
1224
+ border-bottom-style: var(--tw-border-style);
1225
+ border-bottom-width: 1px;
1226
+ border-color: var(--sph-border);
1227
+ }
1228
+ .sph-tabs[data-orientation="vertical"] {
1229
+ display: flex;
1230
+ gap: calc(var(--spacing, 0.25rem) * 4);
1231
+ }
1232
+ .sph-tabs[data-orientation="vertical"] .sph-tabs__list {
1233
+ width: calc(var(--spacing, 0.25rem) * 40);
1234
+ flex-shrink: 0;
1235
+ flex-direction: column;
1236
+ border-right-style: var(--tw-border-style);
1237
+ border-right-width: 1px;
1238
+ border-bottom-style: var(--tw-border-style);
1239
+ border-bottom-width: 0px;
1240
+ }
1241
+ .sph-tabs__tab {
1242
+ position: relative;
1243
+ min-height: calc(var(--spacing, 0.25rem) * 9);
1244
+ flex-shrink: 0;
1245
+ border-radius: var(--sph-radius-sm);
1246
+ border-style: var(--tw-border-style);
1247
+ border-width: 0px;
1248
+ background-color: transparent;
1249
+ padding-inline: calc(var(--spacing, 0.25rem) * 3);
1250
+ font-size: var(--text-xs, 0.75rem);
1251
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
1252
+ --tw-font-weight: var(--font-weight-medium, 500);
1253
+ font-weight: var(--font-weight-medium, 500);
1254
+ color: var(--sph-text-muted);
1255
+ cursor: pointer;
1256
+ font-family: var(--sph-font-sans);
1257
+ transition: background-color var(--sph-motion-fast) var(--sph-ease-standard), color var(--sph-motion-fast) var(--sph-ease-standard);
1258
+ }
1259
+ .sph-tabs__tab:hover:not(:disabled) {
1260
+ background-color: var(--sph-raised);
1261
+ color: var(--sph-text);
1262
+ }
1263
+ .sph-tabs__tab[data-selected="true"] {
1264
+ color: var(--sph-text);
1265
+ }
1266
+ .sph-tabs__tab[data-selected="true"]::after {
1267
+ content: "";
1268
+ position: absolute;
1269
+ bottom: -1px;
1270
+ left: 5px;
1271
+ right: 5px;
1272
+ height: 2px;
1273
+ border-radius: 2px;
1274
+ background: var(--sph-accent);
1275
+ transition-property: all;
1276
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(0.4, 0, 0.2, 1)));
1277
+ transition-duration: var(--tw-duration, var(--default-transition-duration, 150ms));
1278
+ --tw-duration: 200ms;
1279
+ transition-duration: 200ms;
1280
+ --tw-ease: var(--ease-in-out, cubic-bezier(0.4, 0, 0.2, 1));
1281
+ transition-timing-function: var(--ease-in-out, cubic-bezier(0.4, 0, 0.2, 1));
1282
+ }
1283
+ .sph-tabs[data-orientation="vertical"] .sph-tabs__tab {
1284
+ text-align: left;
1285
+ }
1286
+ .sph-tabs[data-orientation="vertical"] .sph-tabs__tab[data-selected="true"]::after {
1287
+ top: 7px;
1288
+ right: -1px;
1289
+ bottom: 7px;
1290
+ left: auto;
1291
+ width: 2px;
1292
+ height: auto;
1293
+ border-radius: 2px 0 0 2px;
1294
+ }
1295
+ .sph-tabs__tab:disabled {
1296
+ opacity: 40%;
1297
+ cursor: not-allowed;
1298
+ }
1299
+ .sph-tabs__tab:focus-visible {
1300
+ outline: 2px solid var(--sph-focus);
1301
+ outline-offset: -2px;
1302
+ }
1303
+ .sph-tabs__panel {
1304
+ min-width: 0px;
1305
+ padding-top: calc(var(--spacing, 0.25rem) * 4);
1306
+ color: var(--sph-text);
1307
+ }
1308
+ @media (prefers-reduced-motion: reduce) {
1309
+ .sph-tabs__tab {
1310
+ transition: none;
1311
+ }
1312
+ }
1313
+ .sph-menu {
1314
+ position: relative;
1315
+ display: inline-flex;
1316
+ font-family: var(--sph-font-sans);
1317
+ }
1318
+ .sph-menu__trigger {
1319
+ display: inline-flex;
1320
+ align-items: center;
1321
+ justify-content: center;
1322
+ border-radius: var(--sph-radius-sm);
1323
+ border-style: var(--tw-border-style);
1324
+ border-width: 0px;
1325
+ background-color: transparent;
1326
+ padding: 0px;
1327
+ color: var(--sph-text);
1328
+ cursor: pointer;
1329
+ font: inherit;
1330
+ }
1331
+ .sph-menu__trigger:focus-visible {
1332
+ outline: 2px solid var(--sph-focus);
1333
+ outline-offset: 2px;
1334
+ }
1335
+ .sph-menu__trigger:disabled {
1336
+ opacity: 45%;
1337
+ cursor: not-allowed;
1338
+ }
1339
+ .sph-menu__content {
1340
+ position: absolute;
1341
+ top: calc(100% + 4px);
1342
+ z-index: 110;
1343
+ display: grid;
1344
+ min-width: calc(var(--spacing, 0.25rem) * 44);
1345
+ gap: calc(var(--spacing, 0.25rem) * 0.5);
1346
+ border-radius: var(--sph-radius-md);
1347
+ border-style: var(--tw-border-style);
1348
+ border-width: 1px;
1349
+ border-color: var(--sph-border);
1350
+ background-color: var(--sph-surface);
1351
+ padding: var(--spacing, 0.25rem);
1352
+ --tw-shadow: var(--sph-shadow-popover);
1353
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1354
+ }
1355
+ .sph-menu__content[data-align="end"] {
1356
+ right: 0px;
1357
+ }
1358
+ .sph-menu__item {
1359
+ display: flex;
1360
+ min-height: calc(var(--spacing, 0.25rem) * 8);
1361
+ width: 100%;
1362
+ align-items: center;
1363
+ justify-content: space-between;
1364
+ gap: calc(var(--spacing, 0.25rem) * 4);
1365
+ border-radius: var(--sph-radius-sm);
1366
+ border-style: var(--tw-border-style);
1367
+ border-width: 0px;
1368
+ background-color: transparent;
1369
+ padding-inline: calc(var(--spacing, 0.25rem) * 2.5);
1370
+ text-align: left;
1371
+ font-size: var(--text-xs, 0.75rem);
1372
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
1373
+ color: var(--sph-text-muted);
1374
+ cursor: pointer;
1375
+ font-family: var(--sph-font-sans);
1376
+ }
1377
+ .sph-menu__item:hover:not(:disabled) {
1378
+ background-color: var(--sph-raised);
1379
+ color: var(--sph-text);
1380
+ }
1381
+ .sph-menu__item:active:not(:disabled) {
1382
+ background-color: var(--sph-accent-soft);
1383
+ }
1384
+ .sph-menu__item:focus-visible {
1385
+ outline: 2px solid var(--sph-focus);
1386
+ outline-offset: -2px;
1387
+ }
1388
+ .sph-menu__item[data-danger="true"] {
1389
+ color: var(--sph-danger);
1390
+ }
1391
+ .sph-menu__item:disabled {
1392
+ opacity: 40%;
1393
+ cursor: not-allowed;
1394
+ }
1395
+ .sph-menu__item-label {
1396
+ display: inline-flex;
1397
+ min-width: 0px;
1398
+ align-items: center;
1399
+ gap: calc(var(--spacing, 0.25rem) * 2);
1400
+ }
1401
+ .sph-menu__shortcut {
1402
+ font-size: 11px;
1403
+ color: var(--sph-text-muted);
1404
+ }
1405
+ .sph-menu__separator {
1406
+ margin-block: var(--spacing, 0.25rem);
1407
+ height: 1px;
1408
+ background-color: var(--sph-border);
1409
+ }
1410
+ .sph-popover {
1411
+ position: relative;
1412
+ display: inline-flex;
1413
+ min-width: 0px;
1414
+ font-family: var(--sph-font-sans);
1415
+ }
1416
+ .sph-popover__trigger {
1417
+ display: inline-flex;
1418
+ min-width: 0px;
1419
+ align-items: center;
1420
+ justify-content: center;
1421
+ border-style: var(--tw-border-style);
1422
+ border-width: 0px;
1423
+ background-color: transparent;
1424
+ padding: 0px;
1425
+ color: var(--sph-text);
1426
+ cursor: pointer;
1427
+ font: inherit;
1428
+ }
1429
+ .sph-popover__trigger:focus-visible {
1430
+ outline: 2px solid var(--sph-focus);
1431
+ outline-offset: 2px;
1432
+ }
1433
+ .sph-popover__trigger:disabled {
1434
+ opacity: 45%;
1435
+ cursor: not-allowed;
1436
+ }
1437
+ .sph-popover__content {
1438
+ position: absolute;
1439
+ top: calc(100% + 6px);
1440
+ z-index: 105;
1441
+ max-width: min(26rem, calc(100vw - 2rem));
1442
+ min-width: calc(var(--spacing, 0.25rem) * 48);
1443
+ border-radius: var(--sph-radius-md);
1444
+ border-style: var(--tw-border-style);
1445
+ border-width: 1px;
1446
+ border-color: var(--sph-border);
1447
+ background-color: var(--sph-surface);
1448
+ padding: calc(var(--spacing, 0.25rem) * 4);
1449
+ font-size: var(--text-sm, 0.875rem);
1450
+ line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
1451
+ color: var(--sph-text);
1452
+ --tw-shadow: var(--sph-shadow-popover);
1453
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1454
+ animation: sph-popover-in var(--sph-motion-fast) var(--sph-ease-emphasis) both;
1455
+ }
1456
+ .sph-popover__content[data-placement="end"] {
1457
+ right: 0px;
1458
+ }
1459
+ @keyframes sph-popover-in {
1460
+ from {
1461
+ opacity: 0;
1462
+ transform: translateY(-3px) scale(0.98);
1463
+ }
1464
+ to {
1465
+ opacity: 1;
1466
+ transform: translateY(0) scale(1);
1467
+ }
1468
+ }
1469
+ @media (prefers-reduced-motion: reduce) {
1470
+ .sph-popover__content {
1471
+ animation: none;
1472
+ }
1473
+ }
1474
+ .sph-tooltip {
1475
+ position: relative;
1476
+ display: inline-flex;
1477
+ font-family: var(--sph-font-sans);
1478
+ }
1479
+ .sph-tooltip__trigger {
1480
+ display: inline-flex;
1481
+ min-width: 0px;
1482
+ }
1483
+ .sph-tooltip__content {
1484
+ pointer-events: none;
1485
+ position: absolute;
1486
+ z-index: 140;
1487
+ border-radius: var(--sph-radius-sm);
1488
+ border-style: var(--tw-border-style);
1489
+ border-width: 1px;
1490
+ border-color: var(--sph-border);
1491
+ background-color: var(--sph-raised);
1492
+ padding-inline: calc(var(--spacing, 0.25rem) * 2.5);
1493
+ padding-block: calc(var(--spacing, 0.25rem) * 1.5);
1494
+ font-size: var(--text-xs, 0.75rem);
1495
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
1496
+ color: var(--sph-text);
1497
+ --tw-shadow: var(--sph-shadow-popover);
1498
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1499
+ width: max-content;
1500
+ max-width: min(14rem, calc(100vw - 2rem));
1501
+ white-space: normal;
1502
+ animation: sph-tooltip-in var(--sph-motion-fast) var(--sph-ease-emphasis) both;
1503
+ }
1504
+ .sph-tooltip__content[hidden] {
1505
+ display: none;
1506
+ }
1507
+ .sph-tooltip__content[data-side="top"] {
1508
+ bottom: calc(100% + 6px);
1509
+ left: 50%;
1510
+ transform: translateX(-50%);
1511
+ }
1512
+ .sph-tooltip__content[data-side="bottom"] {
1513
+ left: 50%;
1514
+ top: calc(100% + 6px);
1515
+ transform: translateX(-50%);
1516
+ }
1517
+ .sph-tooltip__content[data-side="left"] {
1518
+ right: calc(100% + 6px);
1519
+ top: 50%;
1520
+ transform: translateY(-50%);
1521
+ }
1522
+ .sph-tooltip__content[data-side="right"] {
1523
+ left: calc(100% + 6px);
1524
+ top: 50%;
1525
+ transform: translateY(-50%);
1526
+ }
1527
+ @keyframes sph-tooltip-in {
1528
+ from {
1529
+ opacity: 0;
1530
+ }
1531
+ to {
1532
+ opacity: 1;
1533
+ }
1534
+ }
1535
+ @media (prefers-reduced-motion: reduce) {
1536
+ .sph-tooltip__content {
1537
+ animation: none;
1538
+ }
1539
+ }
1540
+ .sph-dialog__backdrop {
1541
+ position: fixed;
1542
+ inset: 0px;
1543
+ z-index: 200;
1544
+ display: flex;
1545
+ align-items: center;
1546
+ justify-content: center;
1547
+ background-color: color-mix(in srgb, #000 55%, transparent);
1548
+ @supports (color: color-mix(in lab, red, red)) {
1549
+ background-color: color-mix(in oklab, var(--color-black, #000) 55%, transparent);
1550
+ }
1551
+ padding: calc(var(--spacing, 0.25rem) * 4);
1552
+ animation: sph-dialog-fade var(--sph-motion-normal) var(--sph-ease-standard) both;
1553
+ }
1554
+ .sph-dialog {
1555
+ display: grid;
1556
+ max-height: min(42rem, calc(100vh - 2rem));
1557
+ width: 100%;
1558
+ max-width: var(--container-lg, 32rem);
1559
+ overflow: auto;
1560
+ border-radius: var(--sph-radius-md);
1561
+ border-style: var(--tw-border-style);
1562
+ border-width: 1px;
1563
+ border-color: var(--sph-border);
1564
+ background-color: var(--sph-surface);
1565
+ color: var(--sph-text);
1566
+ --tw-shadow: var(--sph-shadow-popover);
1567
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1568
+ animation: sph-dialog-in var(--sph-motion-normal) var(--sph-ease-emphasis) both;
1569
+ font-family: var(--sph-font-sans);
1570
+ }
1571
+ .sph-dialog__header {
1572
+ display: flex;
1573
+ align-items: flex-start;
1574
+ justify-content: space-between;
1575
+ gap: calc(var(--spacing, 0.25rem) * 4);
1576
+ border-bottom-style: var(--tw-border-style);
1577
+ border-bottom-width: 1px;
1578
+ border-color: var(--sph-border);
1579
+ padding-inline: calc(var(--spacing, 0.25rem) * 5);
1580
+ padding-block: calc(var(--spacing, 0.25rem) * 4);
1581
+ }
1582
+ .sph-dialog__heading {
1583
+ display: grid;
1584
+ min-width: 0px;
1585
+ gap: var(--spacing, 0.25rem);
1586
+ }
1587
+ .sph-dialog__title {
1588
+ margin: 0px;
1589
+ font-size: var(--text-base, 1rem);
1590
+ line-height: var(--tw-leading, var(--text-base--line-height, calc(1.5 / 1)));
1591
+ --tw-font-weight: var(--font-weight-semibold, 600);
1592
+ font-weight: var(--font-weight-semibold, 600);
1593
+ line-height: 1.3;
1594
+ }
1595
+ .sph-dialog__description {
1596
+ margin: 0px;
1597
+ font-size: var(--text-xs, 0.75rem);
1598
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
1599
+ color: var(--sph-text-muted);
1600
+ line-height: 1.45;
1601
+ }
1602
+ .sph-dialog__close {
1603
+ display: inline-flex;
1604
+ width: calc(var(--spacing, 0.25rem) * 7);
1605
+ height: calc(var(--spacing, 0.25rem) * 7);
1606
+ flex-shrink: 0;
1607
+ align-items: center;
1608
+ justify-content: center;
1609
+ border-radius: var(--sph-radius-sm);
1610
+ border-style: var(--tw-border-style);
1611
+ border-width: 0px;
1612
+ background-color: transparent;
1613
+ padding: 0px;
1614
+ color: var(--sph-text-muted);
1615
+ cursor: pointer;
1616
+ }
1617
+ .sph-dialog__close:hover {
1618
+ background-color: var(--sph-raised);
1619
+ color: var(--sph-text);
1620
+ }
1621
+ .sph-dialog__close:focus-visible {
1622
+ outline: 2px solid var(--sph-focus);
1623
+ outline-offset: 1px;
1624
+ }
1625
+ .sph-dialog__content {
1626
+ min-width: 0px;
1627
+ padding-inline: calc(var(--spacing, 0.25rem) * 5);
1628
+ padding-block: calc(var(--spacing, 0.25rem) * 5);
1629
+ }
1630
+ .sph-dialog__footer {
1631
+ display: flex;
1632
+ flex-wrap: wrap;
1633
+ align-items: center;
1634
+ justify-content: flex-end;
1635
+ gap: calc(var(--spacing, 0.25rem) * 2);
1636
+ border-top-style: var(--tw-border-style);
1637
+ border-top-width: 1px;
1638
+ border-color: var(--sph-border);
1639
+ padding-inline: calc(var(--spacing, 0.25rem) * 5);
1640
+ padding-block: calc(var(--spacing, 0.25rem) * 3.5);
1641
+ }
1642
+ @keyframes sph-dialog-fade {
1643
+ from {
1644
+ opacity: 0;
1645
+ }
1646
+ to {
1647
+ opacity: 1;
1648
+ }
1649
+ }
1650
+ @keyframes sph-dialog-in {
1651
+ from {
1652
+ opacity: 0;
1653
+ transform: translateY(8px) scale(0.98);
1654
+ }
1655
+ to {
1656
+ opacity: 1;
1657
+ transform: translateY(0) scale(1);
1658
+ }
1659
+ }
1660
+ @media (prefers-reduced-motion: reduce) {
1661
+ .sph-dialog__backdrop, .sph-dialog {
1662
+ animation: none;
1663
+ }
1664
+ }
1665
+ [data-sonner-toaster].sph-toast-viewport {
1666
+ --width: min(380px, calc(100vw - 32px));
1667
+ --offset-right: 16px;
1668
+ --offset-bottom: 16px;
1669
+ font-family: var(--sph-font-sans);
1670
+ }
1671
+ [data-sonner-toast].sph-toast {
1672
+ box-sizing: border-box;
1673
+ display: grid;
1674
+ grid-template-columns: 40px minmax(0, 1fr) auto;
1675
+ align-items: center;
1676
+ gap: 12px;
1677
+ width: var(--width);
1678
+ min-height: 72px;
1679
+ padding: 12px;
1680
+ overflow: visible;
1681
+ border: 1px solid var(--sph-border);
1682
+ border-radius: 16px;
1683
+ background: var(--sph-surface);
1684
+ color: var(--sph-text);
1685
+ box-shadow: 0 14px 32px rgb(0 0 0 / 0.18);
1686
+ font-family: var(--sph-font-sans);
1687
+ }
1688
+ [data-sonner-toast].sph-toast[data-type="success"] {
1689
+ --sph-toast-tone: var(--sph-success);
1690
+ --sph-toast-tone-soft: var(--sph-success-soft);
1691
+ }
1692
+ [data-sonner-toast].sph-toast[data-type="info"] {
1693
+ --sph-toast-tone: var(--sph-accent);
1694
+ --sph-toast-tone-soft: var(--sph-accent-soft);
1695
+ }
1696
+ [data-sonner-toast].sph-toast[data-type="warning"] {
1697
+ --sph-toast-tone: var(--sph-warning);
1698
+ --sph-toast-tone-soft: var(--sph-warning-soft);
1699
+ }
1700
+ [data-sonner-toast].sph-toast[data-type="error"] {
1701
+ --sph-toast-tone: var(--sph-danger);
1702
+ --sph-toast-tone-soft: var(--sph-danger-soft);
1703
+ }
1704
+ [data-sonner-toast].sph-toast [data-icon] {
1705
+ display: flex;
1706
+ width: calc(var(--spacing, 0.25rem) * 10);
1707
+ height: calc(var(--spacing, 0.25rem) * 10);
1708
+ align-items: center;
1709
+ justify-content: center;
1710
+ border-radius: var(--sph-radius-md);
1711
+ grid-column: 1;
1712
+ grid-row: 1;
1713
+ align-self: center;
1714
+ margin: 0;
1715
+ background: var(--sph-toast-tone-soft, var(--sph-raised));
1716
+ color: var(--sph-toast-tone, var(--sph-text-muted));
1717
+ }
1718
+ .sph-toast__status-icon {
1719
+ display: flex;
1720
+ width: calc(var(--spacing, 0.25rem) * 5);
1721
+ height: calc(var(--spacing, 0.25rem) * 5);
1722
+ align-items: center;
1723
+ justify-content: center;
1724
+ }
1725
+ .sph-toast__status-icon svg {
1726
+ display: block;
1727
+ width: calc(var(--spacing, 0.25rem) * 5);
1728
+ height: calc(var(--spacing, 0.25rem) * 5);
1729
+ }
1730
+ [data-sonner-toast].sph-toast [data-content] {
1731
+ display: flex;
1732
+ min-width: 0px;
1733
+ flex-direction: column;
1734
+ gap: calc(var(--spacing, 0.25rem) * 0.5);
1735
+ grid-column: 2;
1736
+ grid-row: 1;
1737
+ align-self: center;
1738
+ }
1739
+ [data-sonner-toast].sph-toast [data-title] {
1740
+ margin: 0px;
1741
+ font-size: var(--text-sm, 0.875rem);
1742
+ line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
1743
+ --tw-font-weight: var(--font-weight-semibold, 600);
1744
+ font-weight: var(--font-weight-semibold, 600);
1745
+ color: var(--sph-text);
1746
+ line-height: 1.35;
1747
+ }
1748
+ [data-sonner-toast].sph-toast [data-description] {
1749
+ margin: 0px;
1750
+ font-size: var(--text-xs, 0.75rem);
1751
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
1752
+ color: var(--sph-text-muted);
1753
+ line-height: 1.4;
1754
+ }
1755
+ [data-sonner-toast].sph-toast [data-button] {
1756
+ height: calc(var(--spacing, 0.25rem) * 8);
1757
+ border-radius: var(--sph-radius-sm);
1758
+ border-style: var(--tw-border-style);
1759
+ border-width: 0px;
1760
+ background-color: var(--sph-raised);
1761
+ padding-inline: calc(var(--spacing, 0.25rem) * 2.5);
1762
+ font-size: var(--text-xs, 0.75rem);
1763
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
1764
+ --tw-font-weight: var(--font-weight-medium, 500);
1765
+ font-weight: var(--font-weight-medium, 500);
1766
+ color: var(--sph-text);
1767
+ cursor: pointer;
1768
+ font-family: var(--sph-font-sans);
1769
+ }
1770
+ [data-sonner-toast].sph-toast [data-button]:hover {
1771
+ background: var(--sph-toast-tone-soft, var(--sph-raised));
1772
+ color: var(--sph-toast-tone, var(--sph-text));
1773
+ }
1774
+ [data-sonner-toast].sph-toast [data-button]:focus-visible, [data-sonner-toast].sph-toast [data-close-button]:focus-visible {
1775
+ outline: 2px solid var(--sph-focus);
1776
+ outline-offset: 2px;
1777
+ }
1778
+ [data-sonner-toast].sph-toast [data-close-button] {
1779
+ margin: auto;
1780
+ display: inline-flex;
1781
+ align-items: center;
1782
+ justify-content: center;
1783
+ border-radius: var(--sph-radius-sm);
1784
+ border-style: var(--tw-border-style);
1785
+ border-width: 0px;
1786
+ background-color: transparent;
1787
+ padding: 0px;
1788
+ color: var(--sph-text-muted);
1789
+ grid-column: 3;
1790
+ grid-row: 1;
1791
+ align-self: start;
1792
+ width: 28px;
1793
+ height: 28px;
1794
+ cursor: pointer;
1795
+ transform: none;
1796
+ }
1797
+ [data-sonner-toast].sph-toast [data-close-button]:hover {
1798
+ background-color: var(--sph-raised);
1799
+ color: var(--sph-text);
1800
+ }
1801
+ [data-sonner-toast].sph-toast [data-close-button] svg {
1802
+ width: 13px;
1803
+ height: 13px;
1804
+ stroke-width: 2.5;
1805
+ }
1806
+ [data-sonner-toast].sph-toast[data-expanded="false"][data-front="false"] > * {
1807
+ opacity: 0;
1808
+ }
1809
+ @media (max-width: 600px) {
1810
+ [data-sonner-toaster].sph-toast-viewport {
1811
+ --mobile-offset-left: 12px;
1812
+ --mobile-offset-right: 12px;
1813
+ --mobile-offset-bottom: 12px;
1814
+ }
1815
+ [data-sonner-toast].sph-toast {
1816
+ width: calc(100vw - 24px);
1817
+ }
1818
+ }
1819
+ @media (prefers-reduced-motion: reduce) {
1820
+ [data-sonner-toast].sph-toast {
1821
+ animation: none !important;
1822
+ transition: none !important;
1823
+ }
1824
+ }
1825
+ .sph-empty-state {
1826
+ display: grid;
1827
+ justify-items: center;
1828
+ gap: calc(var(--spacing, 0.25rem) * 2);
1829
+ padding-inline: calc(var(--spacing, 0.25rem) * 6);
1830
+ padding-block: calc(var(--spacing, 0.25rem) * 14);
1831
+ text-align: center;
1832
+ font-family: var(--sph-font-sans);
1833
+ }
1834
+ .sph-empty-state[data-compact="true"] {
1835
+ padding-block: calc(var(--spacing, 0.25rem) * 8);
1836
+ }
1837
+ .sph-empty-state__icon {
1838
+ margin-bottom: var(--spacing, 0.25rem);
1839
+ display: flex;
1840
+ width: calc(var(--spacing, 0.25rem) * 10);
1841
+ height: calc(var(--spacing, 0.25rem) * 10);
1842
+ align-items: center;
1843
+ justify-content: center;
1844
+ border-radius: var(--sph-radius-md);
1845
+ background-color: var(--sph-raised);
1846
+ color: var(--sph-text-muted);
1847
+ }
1848
+ .sph-empty-state__icon svg {
1849
+ display: block;
1850
+ width: calc(var(--spacing, 0.25rem) * 5);
1851
+ height: calc(var(--spacing, 0.25rem) * 5);
1852
+ }
1853
+ .sph-empty-state__title {
1854
+ margin: 0px;
1855
+ font-size: var(--text-base, 1rem);
1856
+ line-height: var(--tw-leading, var(--text-base--line-height, calc(1.5 / 1)));
1857
+ --tw-font-weight: var(--font-weight-semibold, 600);
1858
+ font-weight: var(--font-weight-semibold, 600);
1859
+ color: var(--sph-text);
1860
+ line-height: 1.3;
1861
+ }
1862
+ .sph-empty-state__description {
1863
+ margin: 0px;
1864
+ max-width: var(--container-md, 28rem);
1865
+ font-size: var(--text-sm, 0.875rem);
1866
+ line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
1867
+ color: var(--sph-text-muted);
1868
+ line-height: 1.5;
1869
+ }
1870
+ .sph-empty-state__action {
1871
+ margin-top: calc(var(--spacing, 0.25rem) * 2);
1872
+ }
1873
+ .sph-table-wrap {
1874
+ max-width: 100%;
1875
+ min-width: 0px;
1876
+ overflow-x: auto;
1877
+ border-radius: var(--sph-radius-md);
1878
+ border-style: var(--tw-border-style);
1879
+ border-width: 1px;
1880
+ border-color: var(--sph-border);
1881
+ background-color: var(--sph-surface);
1882
+ font-family: var(--sph-font-sans);
1883
+ }
1884
+ .sph-table {
1885
+ width: 100%;
1886
+ border-collapse: collapse;
1887
+ text-align: left;
1888
+ font-size: var(--text-xs, 0.75rem);
1889
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / 0.75)));
1890
+ color: var(--sph-text);
1891
+ min-width: 480px;
1892
+ }
1893
+ .sph-table caption {
1894
+ border-bottom-style: var(--tw-border-style);
1895
+ border-bottom-width: 1px;
1896
+ border-color: var(--sph-border);
1897
+ padding-inline: calc(var(--spacing, 0.25rem) * 4);
1898
+ padding-block: calc(var(--spacing, 0.25rem) * 3);
1899
+ text-align: left;
1900
+ font-size: var(--text-sm, 0.875rem);
1901
+ line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
1902
+ --tw-font-weight: var(--font-weight-semibold, 600);
1903
+ font-weight: var(--font-weight-semibold, 600);
1904
+ color: var(--sph-text);
1905
+ caption-side: top;
1906
+ }
1907
+ .sph-table th {
1908
+ border-bottom-style: var(--tw-border-style);
1909
+ border-bottom-width: 1px;
1910
+ border-color: var(--sph-border);
1911
+ background-color: var(--sph-raised);
1912
+ padding-inline: calc(var(--spacing, 0.25rem) * 4);
1913
+ padding-block: calc(var(--spacing, 0.25rem) * 2.5);
1914
+ --tw-font-weight: var(--font-weight-medium, 500);
1915
+ font-weight: var(--font-weight-medium, 500);
1916
+ color: var(--sph-text-muted);
1917
+ white-space: nowrap;
1918
+ }
1919
+ .sph-table td {
1920
+ border-bottom-style: var(--tw-border-style);
1921
+ border-bottom-width: 1px;
1922
+ border-color: var(--sph-border);
1923
+ padding-inline: calc(var(--spacing, 0.25rem) * 4);
1924
+ padding-block: calc(var(--spacing, 0.25rem) * 3);
1925
+ vertical-align: middle;
1926
+ }
1927
+ .sph-table tbody tr:last-child td {
1928
+ border-bottom: 0;
1929
+ }
1930
+ .sph-table tbody tr:hover {
1931
+ background: var(--sph-raised);
1932
+ @supports (color: color-mix(in lab, red, red)) {
1933
+ background: color-mix(in srgb, var(--sph-raised) 58%, transparent);
1934
+ }
1935
+ }
1936
+ .sph-table[data-striped="true"] tbody tr:nth-child(even) {
1937
+ background: var(--sph-raised);
1938
+ @supports (color: color-mix(in lab, red, red)) {
1939
+ background: color-mix(in srgb, var(--sph-raised) 32%, transparent);
1940
+ }
1941
+ }
1942
+ .sph-table[data-striped="true"] tbody tr:nth-child(even):hover {
1943
+ background: var(--sph-raised);
1944
+ @supports (color: color-mix(in lab, red, red)) {
1945
+ background: color-mix(in srgb, var(--sph-raised) 62%, transparent);
1946
+ }
1947
+ }
1948
+ .sph-table[data-density="compact"] th {
1949
+ padding-inline: calc(var(--spacing, 0.25rem) * 3);
1950
+ padding-block: calc(var(--spacing, 0.25rem) * 2);
1951
+ }
1952
+ .sph-table[data-density="compact"] td {
1953
+ padding-inline: calc(var(--spacing, 0.25rem) * 3);
1954
+ padding-block: calc(var(--spacing, 0.25rem) * 2);
1955
+ }
1956
+ .sph-table th[data-align="center"], .sph-table td[data-align="center"] {
1957
+ text-align: center;
1958
+ }
1959
+ .sph-table th[data-align="end"], .sph-table td[data-align="end"] {
1960
+ text-align: right;
1961
+ }
1962
+ .sph-table[data-sticky-header="true"] thead th {
1963
+ position: sticky;
1964
+ top: 0px;
1965
+ z-index: 10;
1966
+ }
1967
+ .sph-table__empty {
1968
+ padding-block: calc(var(--spacing, 0.25rem) * 10);
1969
+ text-align: center;
1970
+ color: var(--sph-text-muted);
1971
+ }
1972
+ .sph-toolbar {
1973
+ display: flex;
1974
+ min-width: 0px;
1975
+ align-items: center;
1976
+ gap: calc(var(--spacing, 0.25rem) * 2);
1977
+ border-radius: var(--sph-radius-md);
1978
+ border-style: var(--tw-border-style);
1979
+ border-width: 1px;
1980
+ border-color: var(--sph-border);
1981
+ background-color: var(--sph-surface);
1982
+ font-family: var(--sph-font-sans);
1983
+ }
1984
+ .sph-toolbar[data-size="sm"] {
1985
+ gap: calc(var(--spacing, 0.25rem) * 1.5);
1986
+ padding-inline: calc(var(--spacing, 0.25rem) * 2);
1987
+ padding-block: var(--spacing, 0.25rem);
1988
+ min-height: 2.5rem;
1989
+ }
1990
+ .sph-toolbar[data-size="md"] {
1991
+ gap: calc(var(--spacing, 0.25rem) * 2);
1992
+ padding-inline: calc(var(--spacing, 0.25rem) * 2.5);
1993
+ padding-block: calc(var(--spacing, 0.25rem) * 1.5);
1994
+ min-height: 2.75rem;
1995
+ }
1996
+ .sph-toolbar[data-size="lg"] {
1997
+ gap: calc(var(--spacing, 0.25rem) * 2);
1998
+ padding-inline: calc(var(--spacing, 0.25rem) * 3);
1999
+ padding-block: calc(var(--spacing, 0.25rem) * 2);
2000
+ min-height: 3rem;
2001
+ }
2002
+ .sph-toolbar[data-orientation="vertical"] {
2003
+ flex-direction: column;
2004
+ align-items: stretch;
2005
+ }
2006
+ .sph-toolbar__start, .sph-toolbar__content, .sph-toolbar__end {
2007
+ display: flex;
2008
+ min-width: 0px;
2009
+ align-items: center;
2010
+ gap: calc(var(--spacing, 0.25rem) * 1.5);
2011
+ }
2012
+ .sph-toolbar__start {
2013
+ flex-shrink: 0;
2014
+ }
2015
+ .sph-toolbar__content {
2016
+ flex: 1;
2017
+ }
2018
+ .sph-toolbar__end {
2019
+ margin-left: auto;
2020
+ flex-shrink: 0;
2021
+ }
2022
+ .sph-toolbar[data-orientation="vertical"] .sph-toolbar__end {
2023
+ margin-left: 0px;
2024
+ }
2025
+ .sph-toolbar:focus-visible {
2026
+ outline: 2px solid var(--sph-focus);
2027
+ outline-offset: 2px;
2028
+ }
2029
+ .sph-toolbar .sph-tabs__list {
2030
+ border-bottom-width: 0;
2031
+ gap: 2px;
2032
+ }
2033
+ .sph-toolbar .sph-tabs__tab {
2034
+ min-height: 2rem;
2035
+ }
2036
+ .sph-toolbar[data-size="md"] .sph-tabs__tab {
2037
+ min-height: 2.25rem;
2038
+ }
2039
+ .sph-toolbar[data-size="lg"] .sph-tabs__tab {
2040
+ min-height: 2.5rem;
2041
+ }
2042
+ .sph-toolbar .sph-tabs__tab[data-selected="true"]::after {
2043
+ bottom: 1px;
2044
+ left: 12px;
2045
+ right: 12px;
2046
+ }
2047
+ @media (max-width: 560px) {
2048
+ .sph-toolbar {
2049
+ flex-wrap: wrap;
2050
+ }
2051
+ .sph-toolbar__content {
2052
+ order: 3;
2053
+ flex-basis: 100%;
2054
+ }
2055
+ }