@llui/components 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/README.md +73 -0
  2. package/dist/components/color-picker.d.ts +2 -0
  3. package/dist/components/color-picker.d.ts.map +1 -1
  4. package/dist/components/color-picker.js +8 -0
  5. package/dist/components/listbox.d.ts +1 -0
  6. package/dist/components/listbox.d.ts.map +1 -1
  7. package/dist/components/listbox.js +6 -0
  8. package/dist/components/navigation-menu.d.ts +2 -0
  9. package/dist/components/navigation-menu.d.ts.map +1 -1
  10. package/dist/components/navigation-menu.js +26 -4
  11. package/dist/components/tree-view.d.ts +1 -0
  12. package/dist/components/tree-view.d.ts.map +1 -1
  13. package/dist/components/tree-view.js +6 -0
  14. package/dist/styles/classes/accordion.d.ts +23 -0
  15. package/dist/styles/classes/accordion.d.ts.map +1 -0
  16. package/dist/styles/classes/accordion.js +47 -0
  17. package/dist/styles/classes/angle-slider.d.ts +19 -0
  18. package/dist/styles/classes/angle-slider.d.ts.map +1 -0
  19. package/dist/styles/classes/angle-slider.js +32 -0
  20. package/dist/styles/classes/async-list.d.ts +13 -0
  21. package/dist/styles/classes/async-list.d.ts.map +1 -0
  22. package/dist/styles/classes/async-list.js +9 -0
  23. package/dist/styles/classes/avatar.d.ts +18 -0
  24. package/dist/styles/classes/avatar.d.ts.map +1 -0
  25. package/dist/styles/classes/avatar.js +20 -0
  26. package/dist/styles/classes/carousel.d.ts +21 -0
  27. package/dist/styles/classes/carousel.d.ts.map +1 -0
  28. package/dist/styles/classes/carousel.js +23 -0
  29. package/dist/styles/classes/cascade-select.d.ts +18 -0
  30. package/dist/styles/classes/cascade-select.d.ts.map +1 -0
  31. package/dist/styles/classes/cascade-select.js +20 -0
  32. package/dist/styles/classes/checkbox.d.ts +21 -0
  33. package/dist/styles/classes/checkbox.d.ts.map +1 -0
  34. package/dist/styles/classes/checkbox.js +23 -0
  35. package/dist/styles/classes/clipboard.d.ts +12 -0
  36. package/dist/styles/classes/clipboard.d.ts.map +1 -0
  37. package/dist/styles/classes/clipboard.js +8 -0
  38. package/dist/styles/classes/collapsible.d.ts +21 -0
  39. package/dist/styles/classes/collapsible.d.ts.map +1 -0
  40. package/dist/styles/classes/collapsible.js +40 -0
  41. package/dist/styles/classes/color-picker.d.ts +14 -0
  42. package/dist/styles/classes/color-picker.d.ts.map +1 -0
  43. package/dist/styles/classes/color-picker.js +10 -0
  44. package/dist/styles/classes/combobox.d.ts +21 -0
  45. package/dist/styles/classes/combobox.d.ts.map +1 -0
  46. package/dist/styles/classes/combobox.js +45 -0
  47. package/dist/styles/classes/context-menu.d.ts +18 -0
  48. package/dist/styles/classes/context-menu.d.ts.map +1 -0
  49. package/dist/styles/classes/context-menu.js +31 -0
  50. package/dist/styles/classes/date-input.d.ts +18 -0
  51. package/dist/styles/classes/date-input.d.ts.map +1 -0
  52. package/dist/styles/classes/date-input.js +20 -0
  53. package/dist/styles/classes/date-picker.d.ts +19 -0
  54. package/dist/styles/classes/date-picker.d.ts.map +1 -0
  55. package/dist/styles/classes/date-picker.js +32 -0
  56. package/dist/styles/classes/dialog.d.ts +22 -0
  57. package/dist/styles/classes/dialog.d.ts.map +1 -0
  58. package/dist/styles/classes/dialog.js +24 -0
  59. package/dist/styles/classes/drawer.d.ts +27 -0
  60. package/dist/styles/classes/drawer.d.ts.map +1 -0
  61. package/dist/styles/classes/drawer.js +55 -0
  62. package/dist/styles/classes/editable.d.ts +20 -0
  63. package/dist/styles/classes/editable.d.ts.map +1 -0
  64. package/dist/styles/classes/editable.js +22 -0
  65. package/dist/styles/classes/file-upload.d.ts +21 -0
  66. package/dist/styles/classes/file-upload.d.ts.map +1 -0
  67. package/dist/styles/classes/file-upload.js +17 -0
  68. package/dist/styles/classes/floating-panel.d.ts +21 -0
  69. package/dist/styles/classes/floating-panel.d.ts.map +1 -0
  70. package/dist/styles/classes/floating-panel.js +23 -0
  71. package/dist/styles/classes/hover-card.d.ts +18 -0
  72. package/dist/styles/classes/hover-card.d.ts.map +1 -0
  73. package/dist/styles/classes/hover-card.js +20 -0
  74. package/dist/styles/classes/image-cropper.d.ts +13 -0
  75. package/dist/styles/classes/image-cropper.d.ts.map +1 -0
  76. package/dist/styles/classes/image-cropper.js +9 -0
  77. package/dist/styles/classes/index.d.ts +54 -0
  78. package/dist/styles/classes/index.d.ts.map +1 -0
  79. package/dist/styles/classes/index.js +53 -0
  80. package/dist/styles/classes/listbox.d.ts +16 -0
  81. package/dist/styles/classes/listbox.d.ts.map +1 -0
  82. package/dist/styles/classes/listbox.js +29 -0
  83. package/dist/styles/classes/marquee.d.ts +10 -0
  84. package/dist/styles/classes/marquee.d.ts.map +1 -0
  85. package/dist/styles/classes/marquee.js +6 -0
  86. package/dist/styles/classes/menu.d.ts +22 -0
  87. package/dist/styles/classes/menu.d.ts.map +1 -0
  88. package/dist/styles/classes/menu.js +35 -0
  89. package/dist/styles/classes/navigation-menu.d.ts +11 -0
  90. package/dist/styles/classes/navigation-menu.d.ts.map +1 -0
  91. package/dist/styles/classes/navigation-menu.js +7 -0
  92. package/dist/styles/classes/number-input.d.ts +18 -0
  93. package/dist/styles/classes/number-input.d.ts.map +1 -0
  94. package/dist/styles/classes/number-input.js +42 -0
  95. package/dist/styles/classes/pagination.d.ts +19 -0
  96. package/dist/styles/classes/pagination.d.ts.map +1 -0
  97. package/dist/styles/classes/pagination.js +32 -0
  98. package/dist/styles/classes/password-input.d.ts +17 -0
  99. package/dist/styles/classes/password-input.d.ts.map +1 -0
  100. package/dist/styles/classes/password-input.js +30 -0
  101. package/dist/styles/classes/pin-input.d.ts +17 -0
  102. package/dist/styles/classes/pin-input.d.ts.map +1 -0
  103. package/dist/styles/classes/pin-input.js +19 -0
  104. package/dist/styles/classes/popover.d.ts +21 -0
  105. package/dist/styles/classes/popover.d.ts.map +1 -0
  106. package/dist/styles/classes/popover.js +23 -0
  107. package/dist/styles/classes/presence.d.ts +9 -0
  108. package/dist/styles/classes/presence.d.ts.map +1 -0
  109. package/dist/styles/classes/presence.js +5 -0
  110. package/dist/styles/classes/progress.d.ts +22 -0
  111. package/dist/styles/classes/progress.d.ts.map +1 -0
  112. package/dist/styles/classes/progress.js +46 -0
  113. package/dist/styles/classes/qr-code.d.ts +11 -0
  114. package/dist/styles/classes/qr-code.d.ts.map +1 -0
  115. package/dist/styles/classes/qr-code.js +7 -0
  116. package/dist/styles/classes/radio-group.d.ts +23 -0
  117. package/dist/styles/classes/radio-group.d.ts.map +1 -0
  118. package/dist/styles/classes/radio-group.js +40 -0
  119. package/dist/styles/classes/rating-group.d.ts +16 -0
  120. package/dist/styles/classes/rating-group.d.ts.map +1 -0
  121. package/dist/styles/classes/rating-group.js +29 -0
  122. package/dist/styles/classes/scroll-area.d.ts +14 -0
  123. package/dist/styles/classes/scroll-area.d.ts.map +1 -0
  124. package/dist/styles/classes/scroll-area.js +10 -0
  125. package/dist/styles/classes/select.d.ts +19 -0
  126. package/dist/styles/classes/select.d.ts.map +1 -0
  127. package/dist/styles/classes/select.js +43 -0
  128. package/dist/styles/classes/signature-pad.d.ts +14 -0
  129. package/dist/styles/classes/signature-pad.d.ts.map +1 -0
  130. package/dist/styles/classes/signature-pad.js +10 -0
  131. package/dist/styles/classes/slider.d.ts +19 -0
  132. package/dist/styles/classes/slider.d.ts.map +1 -0
  133. package/dist/styles/classes/slider.js +43 -0
  134. package/dist/styles/classes/splitter.d.ts +17 -0
  135. package/dist/styles/classes/splitter.d.ts.map +1 -0
  136. package/dist/styles/classes/splitter.js +29 -0
  137. package/dist/styles/classes/steps.d.ts +24 -0
  138. package/dist/styles/classes/steps.d.ts.map +1 -0
  139. package/dist/styles/classes/steps.js +42 -0
  140. package/dist/styles/classes/switch.d.ts +22 -0
  141. package/dist/styles/classes/switch.d.ts.map +1 -0
  142. package/dist/styles/classes/switch.js +46 -0
  143. package/dist/styles/classes/tabs.d.ts +24 -0
  144. package/dist/styles/classes/tabs.d.ts.map +1 -0
  145. package/dist/styles/classes/tabs.js +48 -0
  146. package/dist/styles/classes/tags-input.d.ts +19 -0
  147. package/dist/styles/classes/tags-input.d.ts.map +1 -0
  148. package/dist/styles/classes/tags-input.js +32 -0
  149. package/dist/styles/classes/time-picker.d.ts +18 -0
  150. package/dist/styles/classes/time-picker.d.ts.map +1 -0
  151. package/dist/styles/classes/time-picker.js +20 -0
  152. package/dist/styles/classes/timer.d.ts +19 -0
  153. package/dist/styles/classes/timer.d.ts.map +1 -0
  154. package/dist/styles/classes/timer.js +21 -0
  155. package/dist/styles/classes/toast.d.ts +24 -0
  156. package/dist/styles/classes/toast.d.ts.map +1 -0
  157. package/dist/styles/classes/toast.js +26 -0
  158. package/dist/styles/classes/toc.d.ts +19 -0
  159. package/dist/styles/classes/toc.d.ts.map +1 -0
  160. package/dist/styles/classes/toc.js +21 -0
  161. package/dist/styles/classes/toggle-group.d.ts +20 -0
  162. package/dist/styles/classes/toggle-group.d.ts.map +1 -0
  163. package/dist/styles/classes/toggle-group.js +28 -0
  164. package/dist/styles/classes/toggle.d.ts +19 -0
  165. package/dist/styles/classes/toggle.d.ts.map +1 -0
  166. package/dist/styles/classes/toggle.js +21 -0
  167. package/dist/styles/classes/tooltip.d.ts +18 -0
  168. package/dist/styles/classes/tooltip.d.ts.map +1 -0
  169. package/dist/styles/classes/tooltip.js +20 -0
  170. package/dist/styles/classes/tour.d.ts +17 -0
  171. package/dist/styles/classes/tour.d.ts.map +1 -0
  172. package/dist/styles/classes/tour.js +13 -0
  173. package/dist/styles/classes/tree-view.d.ts +18 -0
  174. package/dist/styles/classes/tree-view.d.ts.map +1 -0
  175. package/dist/styles/classes/tree-view.js +20 -0
  176. package/dist/styles/index.d.ts +5 -0
  177. package/dist/styles/index.d.ts.map +1 -0
  178. package/dist/styles/index.js +4 -0
  179. package/dist/styles/theme-dark.css +56 -0
  180. package/dist/styles/theme.css +1782 -0
  181. package/dist/styles/theme.d.ts +49 -0
  182. package/dist/styles/theme.d.ts.map +1 -0
  183. package/dist/styles/theme.js +13 -0
  184. package/dist/styles/utils/cx.d.ts +4 -0
  185. package/dist/styles/utils/cx.d.ts.map +1 -0
  186. package/dist/styles/utils/cx.js +12 -0
  187. package/dist/styles/utils/index.d.ts +3 -0
  188. package/dist/styles/utils/index.d.ts.map +1 -0
  189. package/dist/styles/utils/index.js +2 -0
  190. package/dist/styles/utils/variants.d.ts +18 -0
  191. package/dist/styles/utils/variants.d.ts.map +1 -0
  192. package/dist/styles/utils/variants.js +25 -0
  193. package/package.json +225 -4
@@ -0,0 +1,1782 @@
1
+ /*
2
+ * @llui/components — opt-in base theme
3
+ *
4
+ * Import once at app root:
5
+ * import '@llui/components/styles/theme.css'
6
+ *
7
+ * Override tokens in your own CSS:
8
+ * @theme { --color-primary: #8b5cf6; }
9
+ */
10
+
11
+ /* ─── Design Tokens ─── */
12
+ @theme {
13
+ /* Surface */
14
+ --color-surface: #ffffff;
15
+ --color-surface-muted: #f8fafc;
16
+ --color-surface-hover: #f1f5f9;
17
+ --color-surface-active: #e2e8f0;
18
+
19
+ /* Border */
20
+ --color-border: #e2e8f0;
21
+ --color-border-hover: #cbd5e1;
22
+ --color-border-focus: #3b82f6;
23
+
24
+ /* Text */
25
+ --color-text: #0f172a;
26
+ --color-text-muted: #64748b;
27
+ --color-text-inverted: #ffffff;
28
+
29
+ /* Primary */
30
+ --color-primary: #3b82f6;
31
+ --color-primary-hover: #2563eb;
32
+ --color-primary-active: #1d4ed8;
33
+
34
+ /* Destructive */
35
+ --color-destructive: #ef4444;
36
+ --color-destructive-hover: #dc2626;
37
+
38
+ /* Radius */
39
+ --radius-sm: 0.25rem;
40
+ --radius-md: 0.375rem;
41
+ --radius-lg: 0.5rem;
42
+ --radius-xl: 0.75rem;
43
+
44
+ /* Spacing */
45
+ --space-1: 0.25rem;
46
+ --space-2: 0.5rem;
47
+ --space-3: 0.75rem;
48
+ --space-4: 1rem;
49
+ --space-6: 1.5rem;
50
+ --space-8: 2rem;
51
+
52
+ /* Shadows */
53
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
54
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
55
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
56
+
57
+ /* Transitions */
58
+ --duration-fast: 150ms;
59
+ --duration-normal: 200ms;
60
+
61
+ /* Z-index */
62
+ --z-popover: 50;
63
+ --z-dialog: 100;
64
+ --z-tooltip: 150;
65
+ }
66
+
67
+ /* ─── Accordion ─── */
68
+
69
+ [data-scope='accordion'][data-part='root'] {
70
+ display: flex;
71
+ flex-direction: column;
72
+ border: 1px solid var(--color-border);
73
+ border-radius: var(--radius-lg);
74
+ overflow: hidden;
75
+ }
76
+
77
+ [data-scope='accordion'][data-part='item'] {
78
+ border-bottom: 1px solid var(--color-border);
79
+ }
80
+
81
+ [data-scope='accordion'][data-part='item']:last-child {
82
+ border-bottom: none;
83
+ }
84
+
85
+ [data-scope='accordion'][data-part='trigger'] {
86
+ display: flex;
87
+ align-items: center;
88
+ justify-content: space-between;
89
+ width: 100%;
90
+ padding: var(--space-3) var(--space-4);
91
+ font-weight: 500;
92
+ background: var(--color-surface);
93
+ border: none;
94
+ cursor: pointer;
95
+ transition: background var(--duration-fast);
96
+ }
97
+
98
+ [data-scope='accordion'][data-part='trigger']:hover {
99
+ background: var(--color-surface-hover);
100
+ }
101
+
102
+ [data-scope='accordion'][data-part='trigger'][data-state='open'] {
103
+ background: var(--color-surface-muted);
104
+ }
105
+
106
+ [data-scope='accordion'][data-part='trigger'][data-disabled] {
107
+ opacity: 0.5;
108
+ cursor: not-allowed;
109
+ }
110
+
111
+ [data-scope='accordion'][data-part='content'] {
112
+ padding: var(--space-4);
113
+ }
114
+
115
+ [data-scope='accordion'][data-part='content'][hidden] {
116
+ display: none;
117
+ }
118
+
119
+ /* ─── Switch ─── */
120
+
121
+ [data-scope='switch'][data-part='root'] {
122
+ display: inline-flex;
123
+ align-items: center;
124
+ gap: var(--space-3);
125
+ cursor: pointer;
126
+ }
127
+
128
+ [data-scope='switch'][data-part='root'][data-disabled] {
129
+ opacity: 0.5;
130
+ cursor: not-allowed;
131
+ }
132
+
133
+ [data-scope='switch'][data-part='track'] {
134
+ position: relative;
135
+ width: 2.75rem;
136
+ height: 1.5rem;
137
+ border-radius: 9999px;
138
+ background: var(--color-surface-active);
139
+ transition: background var(--duration-fast);
140
+ }
141
+
142
+ [data-scope='switch'][data-part='track'][data-state='checked'] {
143
+ background: var(--color-primary);
144
+ }
145
+
146
+ [data-scope='switch'][data-part='thumb'] {
147
+ position: absolute;
148
+ top: 0.125rem;
149
+ left: 0.125rem;
150
+ width: 1.25rem;
151
+ height: 1.25rem;
152
+ border-radius: 9999px;
153
+ background: white;
154
+ box-shadow: var(--shadow-sm);
155
+ transition: transform var(--duration-fast);
156
+ }
157
+
158
+ [data-scope='switch'][data-part='thumb'][data-state='checked'] {
159
+ transform: translateX(1.25rem);
160
+ }
161
+
162
+ /* ─── Checkbox ─── */
163
+
164
+ [data-scope='checkbox'][data-part='root'] {
165
+ display: inline-flex;
166
+ align-items: center;
167
+ justify-content: center;
168
+ width: 1.25rem;
169
+ height: 1.25rem;
170
+ border: 2px solid var(--color-border);
171
+ border-radius: var(--radius-sm);
172
+ cursor: pointer;
173
+ transition: all var(--duration-fast);
174
+ }
175
+
176
+ [data-scope='checkbox'][data-part='root'][data-state='checked'],
177
+ [data-scope='checkbox'][data-part='root'][data-state='indeterminate'] {
178
+ background: var(--color-primary);
179
+ border-color: var(--color-primary);
180
+ }
181
+
182
+ [data-scope='checkbox'][data-part='root'][data-disabled] {
183
+ opacity: 0.5;
184
+ cursor: not-allowed;
185
+ }
186
+
187
+ [data-scope='checkbox'][data-part='indicator'] {
188
+ color: var(--color-text-inverted);
189
+ display: flex;
190
+ align-items: center;
191
+ justify-content: center;
192
+ }
193
+
194
+ [data-scope='checkbox'][data-part='indicator'][data-state='unchecked'] {
195
+ display: none;
196
+ }
197
+
198
+ /* ─── Dialog ─── */
199
+
200
+ [data-scope='dialog'][data-part='backdrop'] {
201
+ position: fixed;
202
+ inset: 0;
203
+ background: rgba(0, 0, 0, 0.5);
204
+ z-index: var(--z-dialog);
205
+ opacity: 0;
206
+ transition: opacity var(--duration-normal);
207
+ }
208
+
209
+ [data-scope='dialog'][data-part='backdrop'][data-state='open'] {
210
+ opacity: 1;
211
+ }
212
+
213
+ [data-scope='dialog'][data-part='positioner'] {
214
+ position: fixed;
215
+ inset: 0;
216
+ display: flex;
217
+ align-items: center;
218
+ justify-content: center;
219
+ padding: var(--space-4);
220
+ z-index: var(--z-dialog);
221
+ background: rgba(0, 0, 0, 0.4);
222
+ }
223
+
224
+ [data-scope='dialog'][data-part='content'] {
225
+ background: var(--color-surface);
226
+ border-radius: var(--radius-xl);
227
+ box-shadow: var(--shadow-lg);
228
+ padding: var(--space-6);
229
+ max-width: 32rem;
230
+ width: 100%;
231
+ position: relative;
232
+ }
233
+
234
+ [data-scope='dialog'][data-part='title'] {
235
+ font-size: 1.125rem;
236
+ font-weight: 600;
237
+ margin-bottom: var(--space-2);
238
+ }
239
+
240
+ [data-scope='dialog'][data-part='description'] {
241
+ color: var(--color-text-muted);
242
+ margin-bottom: var(--space-4);
243
+ }
244
+
245
+ [data-scope='dialog'][data-part='close-trigger'] {
246
+ position: absolute;
247
+ top: var(--space-4);
248
+ right: var(--space-4);
249
+ background: none;
250
+ border: none;
251
+ cursor: pointer;
252
+ color: var(--color-text-muted);
253
+ font-size: 1.25rem;
254
+ line-height: 1;
255
+ padding: var(--space-1);
256
+ transition: color var(--duration-fast);
257
+ }
258
+
259
+ [data-scope='dialog'][data-part='close-trigger']:hover {
260
+ color: var(--color-text);
261
+ }
262
+
263
+ /* ─── Tabs ─── */
264
+
265
+ [data-scope='tabs'][data-part='root'] {
266
+ display: flex;
267
+ flex-direction: column;
268
+ }
269
+
270
+ [data-scope='tabs'][data-part='root'][data-orientation='vertical'] {
271
+ flex-direction: row;
272
+ }
273
+
274
+ [data-scope='tabs'][data-part='list'] {
275
+ display: flex;
276
+ border-bottom: 1px solid var(--color-border);
277
+ gap: var(--space-1);
278
+ position: relative;
279
+ }
280
+
281
+ [data-scope='tabs'][data-part='list'][aria-orientation='vertical'] {
282
+ flex-direction: column;
283
+ border-bottom: none;
284
+ border-right: 1px solid var(--color-border);
285
+ }
286
+
287
+ [data-scope='tabs'][data-part='trigger'] {
288
+ padding: var(--space-2) var(--space-4);
289
+ background: none;
290
+ border: none;
291
+ border-bottom: 2px solid transparent;
292
+ cursor: pointer;
293
+ font-weight: 500;
294
+ color: var(--color-text-muted);
295
+ transition: all var(--duration-fast);
296
+ }
297
+
298
+ [data-scope='tabs'][data-part='trigger']:hover {
299
+ color: var(--color-text);
300
+ }
301
+
302
+ [data-scope='tabs'][data-part='trigger'][data-state='active'] {
303
+ color: var(--color-primary);
304
+ border-bottom-color: var(--color-primary);
305
+ }
306
+
307
+ [data-scope='tabs'][data-part='trigger'][data-disabled] {
308
+ opacity: 0.5;
309
+ cursor: not-allowed;
310
+ }
311
+
312
+ [data-scope='tabs'][data-part='panel'] {
313
+ padding: var(--space-4);
314
+ }
315
+
316
+ [data-scope='tabs'][data-part='panel'][hidden] {
317
+ display: none;
318
+ }
319
+
320
+ [data-scope='tabs'][data-part='indicator'] {
321
+ position: absolute;
322
+ bottom: 0;
323
+ height: 2px;
324
+ background: var(--color-primary);
325
+ transition: all var(--duration-normal) ease;
326
+ left: var(--indicator-left, 0);
327
+ width: var(--indicator-width, 0);
328
+ }
329
+
330
+ /* ─── Toggle ─── */
331
+
332
+ [data-scope='toggle'][data-part='root'] {
333
+ display: inline-flex;
334
+ align-items: center;
335
+ justify-content: center;
336
+ padding: var(--space-2);
337
+ border: 1px solid var(--color-border);
338
+ border-radius: var(--radius-md);
339
+ background: var(--color-surface);
340
+ cursor: pointer;
341
+ transition: all var(--duration-fast);
342
+ }
343
+
344
+ [data-scope='toggle'][data-part='root']:hover {
345
+ background: var(--color-surface-hover);
346
+ }
347
+
348
+ [data-scope='toggle'][data-part='root'][data-state='on'] {
349
+ background: var(--color-surface-active);
350
+ border-color: var(--color-border-hover);
351
+ }
352
+
353
+ [data-scope='toggle'][data-part='root'][data-disabled] {
354
+ opacity: 0.5;
355
+ cursor: not-allowed;
356
+ }
357
+
358
+ /* ─── Radio Group ─── */
359
+
360
+ [data-scope='radio-group'][data-part='root'] {
361
+ display: flex;
362
+ flex-direction: column;
363
+ gap: var(--space-2);
364
+ }
365
+
366
+ [data-scope='radio-group'][data-part='item'] {
367
+ width: 1.125rem;
368
+ height: 1.125rem;
369
+ border: 1.5px solid var(--color-border);
370
+ border-radius: 9999px;
371
+ display: inline-flex;
372
+ align-items: center;
373
+ justify-content: center;
374
+ cursor: pointer;
375
+ transition: all var(--duration-fast);
376
+ flex-shrink: 0;
377
+ }
378
+
379
+ [data-scope='radio-group'][data-part='item'][data-state='checked'] {
380
+ border-color: var(--color-primary);
381
+ }
382
+
383
+ [data-scope='radio-group'][data-part='item'][data-disabled] {
384
+ opacity: 0.5;
385
+ cursor: not-allowed;
386
+ }
387
+
388
+ [data-scope='radio-group'][data-part='indicator'] {
389
+ width: 0.5rem;
390
+ height: 0.5rem;
391
+ border-radius: 9999px;
392
+ background: var(--color-primary);
393
+ opacity: 0;
394
+ transition: opacity var(--duration-fast);
395
+ }
396
+
397
+ [data-scope='radio-group'][data-part='indicator'][data-state='checked'] {
398
+ opacity: 1;
399
+ }
400
+
401
+ /* ─── Toggle Group ─── */
402
+
403
+ [data-scope='toggle-group'][data-part='root'] {
404
+ display: inline-flex;
405
+ border: 1px solid var(--color-border);
406
+ border-radius: var(--radius-md);
407
+ overflow: hidden;
408
+ }
409
+
410
+ [data-scope='toggle-group'][data-part='item'] {
411
+ padding: var(--space-2) 0.875rem;
412
+ border: 0;
413
+ border-right: 1px solid var(--color-border);
414
+ background: var(--color-surface);
415
+ font-size: 0.875rem;
416
+ font-weight: 600;
417
+ color: var(--color-text-muted);
418
+ cursor: pointer;
419
+ transition: all var(--duration-fast);
420
+ }
421
+
422
+ [data-scope='toggle-group'][data-part='item']:last-child {
423
+ border-right: 0;
424
+ }
425
+
426
+ [data-scope='toggle-group'][data-part='item'][aria-pressed='true'],
427
+ [data-scope='toggle-group'][data-part='item'][data-state='on'] {
428
+ background: var(--color-primary);
429
+ color: var(--color-text-inverted);
430
+ }
431
+
432
+ [data-scope='toggle-group'][data-part='item']:hover:not([aria-pressed='true']):not(
433
+ [data-state='on']
434
+ ) {
435
+ background: var(--color-surface-hover);
436
+ }
437
+
438
+ /* ─── Number Input ─── */
439
+
440
+ [data-scope='number-input'][data-part='root'] {
441
+ display: inline-flex;
442
+ align-items: center;
443
+ border: 1px solid var(--color-border);
444
+ border-radius: var(--radius-md);
445
+ overflow: hidden;
446
+ }
447
+
448
+ [data-scope='number-input'][data-part='input'] {
449
+ width: 3rem;
450
+ border: 0;
451
+ padding: var(--space-1) var(--space-2);
452
+ text-align: center;
453
+ font-size: 0.875rem;
454
+ background: var(--color-surface);
455
+ }
456
+
457
+ [data-scope='number-input'][data-part='input']:focus {
458
+ outline: none;
459
+ }
460
+
461
+ [data-scope='number-input'][data-part='increment'],
462
+ [data-scope='number-input'][data-part='decrement'] {
463
+ padding: var(--space-1) var(--space-3);
464
+ border: 0;
465
+ background: var(--color-surface-muted);
466
+ font-size: 1rem;
467
+ font-weight: 600;
468
+ color: var(--color-text-muted);
469
+ cursor: pointer;
470
+ }
471
+
472
+ [data-scope='number-input'][data-part='increment']:hover:not(:disabled),
473
+ [data-scope='number-input'][data-part='decrement']:hover:not(:disabled) {
474
+ background: var(--color-surface-hover);
475
+ }
476
+
477
+ [data-scope='number-input'][data-part='increment']:disabled,
478
+ [data-scope='number-input'][data-part='decrement']:disabled {
479
+ opacity: 0.4;
480
+ cursor: not-allowed;
481
+ }
482
+
483
+ /* ─── Password Input ─── */
484
+
485
+ [data-scope='password-input'][data-part='root'] {
486
+ display: inline-flex;
487
+ align-items: center;
488
+ border: 1px solid var(--color-border);
489
+ border-radius: var(--radius-md);
490
+ overflow: hidden;
491
+ background: var(--color-surface);
492
+ }
493
+
494
+ [data-scope='password-input'][data-part='input'] {
495
+ border: 0;
496
+ padding: var(--space-2) var(--space-3);
497
+ font-size: 0.875rem;
498
+ font-family: monospace;
499
+ width: 12rem;
500
+ }
501
+
502
+ [data-scope='password-input'][data-part='input']:focus {
503
+ outline: none;
504
+ }
505
+
506
+ [data-scope='password-input'][data-part='visibility-trigger'] {
507
+ padding: var(--space-2) var(--space-3);
508
+ border: 0;
509
+ border-left: 1px solid var(--color-border);
510
+ background: var(--color-surface-muted);
511
+ font-size: 0.75rem;
512
+ cursor: pointer;
513
+ color: var(--color-text-muted);
514
+ }
515
+
516
+ [data-scope='password-input'][data-part='visibility-trigger']:hover {
517
+ background: var(--color-surface-hover);
518
+ }
519
+
520
+ /* ─── Pin Input ─── */
521
+
522
+ [data-scope='pin-input'][data-part='root'] {
523
+ display: inline-flex;
524
+ align-items: center;
525
+ gap: var(--space-2);
526
+ }
527
+
528
+ [data-scope='pin-input'][data-part='input'] {
529
+ width: 2.75rem;
530
+ height: 2.75rem;
531
+ text-align: center;
532
+ font-size: 1.25rem;
533
+ border: 1px solid var(--color-border);
534
+ border-radius: var(--radius-md);
535
+ background: var(--color-surface);
536
+ }
537
+
538
+ [data-scope='pin-input'][data-part='input']:focus {
539
+ outline: 2px solid var(--color-border-focus);
540
+ outline-offset: 2px;
541
+ border-color: var(--color-border-focus);
542
+ }
543
+
544
+ [data-scope='pin-input'][data-part='label'] {
545
+ position: absolute;
546
+ width: 1px;
547
+ height: 1px;
548
+ padding: 0;
549
+ margin: -1px;
550
+ overflow: hidden;
551
+ clip: rect(0, 0, 0, 0);
552
+ white-space: nowrap;
553
+ border: 0;
554
+ }
555
+
556
+ /* ─── Tags Input ─── */
557
+
558
+ [data-scope='tags-input'][data-part='root'] {
559
+ display: flex;
560
+ flex-wrap: wrap;
561
+ gap: 0.375rem;
562
+ padding: var(--space-2);
563
+ border: 1px solid var(--color-border);
564
+ border-radius: var(--radius-md);
565
+ background: var(--color-surface);
566
+ }
567
+
568
+ [data-scope='tags-input'][data-part='input'] {
569
+ flex: 1;
570
+ min-width: 6rem;
571
+ border: 0;
572
+ outline: 0;
573
+ font-size: 0.875rem;
574
+ background: transparent;
575
+ }
576
+
577
+ [data-scope='tags-input'][data-part='tag'] {
578
+ display: inline-flex;
579
+ align-items: center;
580
+ gap: var(--space-1);
581
+ padding: 0.125rem var(--space-2);
582
+ border-radius: 9999px;
583
+ background: color-mix(in srgb, var(--color-primary) 15%, transparent);
584
+ color: var(--color-primary-active);
585
+ font-size: 0.75rem;
586
+ }
587
+
588
+ [data-scope='tags-input'][data-part='tag-remove'] {
589
+ border: 0;
590
+ background: transparent;
591
+ color: inherit;
592
+ cursor: pointer;
593
+ font-size: 1rem;
594
+ line-height: 1;
595
+ padding: 0 0.125rem;
596
+ opacity: 0.7;
597
+ }
598
+
599
+ [data-scope='tags-input'][data-part='tag-remove']:hover {
600
+ opacity: 1;
601
+ }
602
+
603
+ /* ─── Rating Group ─── */
604
+
605
+ [data-scope='rating-group'][data-part='root'] {
606
+ display: inline-flex;
607
+ gap: 0.125rem;
608
+ }
609
+
610
+ [data-scope='rating-group'][data-part='item'] {
611
+ font-size: 1.5rem;
612
+ color: var(--color-border);
613
+ cursor: pointer;
614
+ transition: color var(--duration-fast);
615
+ }
616
+
617
+ [data-scope='rating-group'][data-part='item'][data-fill='full'] {
618
+ color: rgb(250 204 21);
619
+ }
620
+
621
+ [data-scope='rating-group'][data-part='item'][data-fill='half'] {
622
+ background: linear-gradient(90deg, rgb(250 204 21) 50%, var(--color-border) 50%);
623
+ -webkit-background-clip: text;
624
+ -webkit-text-fill-color: transparent;
625
+ }
626
+
627
+ /* ─── Avatar ─── */
628
+
629
+ [data-scope='avatar'][data-part='root'] {
630
+ position: relative;
631
+ height: 3rem;
632
+ width: 3rem;
633
+ overflow: hidden;
634
+ border-radius: 9999px;
635
+ background: var(--color-surface-active);
636
+ }
637
+
638
+ [data-scope='avatar'][data-part='image'] {
639
+ height: 100%;
640
+ width: 100%;
641
+ object-fit: cover;
642
+ }
643
+
644
+ [data-scope='avatar'][data-part='fallback'] {
645
+ position: absolute;
646
+ inset: 0;
647
+ display: flex;
648
+ align-items: center;
649
+ justify-content: center;
650
+ font-size: 1rem;
651
+ font-weight: 600;
652
+ color: var(--color-text-muted);
653
+ }
654
+
655
+ /* ─── Pagination ─── */
656
+
657
+ [data-scope='pagination'][data-part='root'] {
658
+ display: inline-flex;
659
+ align-items: center;
660
+ gap: var(--space-1);
661
+ }
662
+
663
+ [data-scope='pagination'][data-part='item'],
664
+ [data-scope='pagination'][data-part='prev-trigger'],
665
+ [data-scope='pagination'][data-part='next-trigger'] {
666
+ min-width: 2rem;
667
+ padding: 0.375rem var(--space-2);
668
+ border: 1px solid var(--color-border);
669
+ background: var(--color-surface);
670
+ font-size: 0.875rem;
671
+ color: var(--color-text-muted);
672
+ cursor: pointer;
673
+ border-radius: var(--radius-sm);
674
+ transition: all var(--duration-fast);
675
+ }
676
+
677
+ [data-scope='pagination'][data-part='item']:hover:not(:disabled),
678
+ [data-scope='pagination'][data-part='prev-trigger']:hover:not(:disabled),
679
+ [data-scope='pagination'][data-part='next-trigger']:hover:not(:disabled) {
680
+ background: var(--color-surface-hover);
681
+ border-color: var(--color-border-hover);
682
+ }
683
+
684
+ [data-scope='pagination'][data-part='item']:disabled,
685
+ [data-scope='pagination'][data-part='prev-trigger']:disabled,
686
+ [data-scope='pagination'][data-part='next-trigger']:disabled {
687
+ opacity: 0.4;
688
+ cursor: not-allowed;
689
+ }
690
+
691
+ [data-scope='pagination'][data-part='item'][aria-current='page'] {
692
+ background: var(--color-primary);
693
+ border-color: var(--color-primary);
694
+ color: var(--color-text-inverted);
695
+ }
696
+
697
+ [data-scope='pagination'][data-part='ellipsis'] {
698
+ display: inline-flex;
699
+ align-items: center;
700
+ justify-content: center;
701
+ color: var(--color-text-muted);
702
+ }
703
+
704
+ /* ─── Steps ─── */
705
+
706
+ [data-scope='steps'][data-part='root'] {
707
+ display: flex;
708
+ align-items: center;
709
+ gap: var(--space-2);
710
+ }
711
+
712
+ [data-scope='steps'][data-part='item'] {
713
+ display: flex;
714
+ align-items: center;
715
+ gap: var(--space-2);
716
+ flex: 1;
717
+ }
718
+
719
+ [data-scope='steps'][data-part='trigger'] {
720
+ width: 2rem;
721
+ height: 2rem;
722
+ border-radius: 9999px;
723
+ border: 1.5px solid var(--color-border);
724
+ background: var(--color-surface);
725
+ font-size: 0.875rem;
726
+ font-weight: 600;
727
+ color: var(--color-text-muted);
728
+ cursor: pointer;
729
+ display: inline-flex;
730
+ align-items: center;
731
+ justify-content: center;
732
+ }
733
+
734
+ [data-scope='steps'][data-part='trigger'][data-status='current'] {
735
+ background: var(--color-primary);
736
+ border-color: var(--color-primary);
737
+ color: var(--color-text-inverted);
738
+ }
739
+
740
+ [data-scope='steps'][data-part='trigger'][data-status='completed'] {
741
+ background: rgb(34 197 94);
742
+ border-color: rgb(34 197 94);
743
+ color: var(--color-text-inverted);
744
+ }
745
+
746
+ [data-scope='steps'][data-part='trigger']:disabled {
747
+ cursor: not-allowed;
748
+ }
749
+
750
+ [data-scope='steps'][data-part='separator'] {
751
+ flex: 1;
752
+ height: 2px;
753
+ background: var(--color-border);
754
+ }
755
+
756
+ [data-scope='steps'][data-part='separator'][data-status='completed'] {
757
+ background: rgb(34 197 94);
758
+ }
759
+
760
+ /* ─── Carousel ─── */
761
+
762
+ [data-scope='carousel'][data-part='root'] {
763
+ display: flex;
764
+ flex-direction: column;
765
+ gap: var(--space-2);
766
+ }
767
+
768
+ [data-scope='carousel'][data-part='viewport'] {
769
+ position: relative;
770
+ height: 8rem;
771
+ border-radius: var(--radius-lg);
772
+ overflow: hidden;
773
+ }
774
+
775
+ [data-scope='carousel'][data-part='slide'] {
776
+ position: absolute;
777
+ inset: 0;
778
+ display: flex;
779
+ align-items: center;
780
+ justify-content: center;
781
+ color: var(--color-text-inverted);
782
+ font-size: 1.25rem;
783
+ font-weight: 600;
784
+ }
785
+
786
+ [data-scope='carousel'][data-part='indicator-group'] {
787
+ display: flex;
788
+ align-items: center;
789
+ justify-content: center;
790
+ gap: var(--space-1);
791
+ }
792
+
793
+ [data-scope='carousel'][data-part='indicator'] {
794
+ width: 0.5rem;
795
+ height: 0.5rem;
796
+ border-radius: 9999px;
797
+ background: var(--color-border);
798
+ border: 0;
799
+ cursor: pointer;
800
+ padding: 0;
801
+ }
802
+
803
+ [data-scope='carousel'][data-part='indicator'][aria-selected='true'] {
804
+ background: var(--color-primary);
805
+ }
806
+
807
+ [data-scope='carousel'][data-part='next-trigger'],
808
+ [data-scope='carousel'][data-part='prev-trigger'] {
809
+ background: none;
810
+ border: 0;
811
+ cursor: pointer;
812
+ font-size: 1rem;
813
+ color: var(--color-text-muted);
814
+ }
815
+
816
+ [data-scope='carousel'][data-part='next-trigger']:hover,
817
+ [data-scope='carousel'][data-part='prev-trigger']:hover {
818
+ color: var(--color-text);
819
+ }
820
+
821
+ /* ─── Tree View ─── */
822
+
823
+ [data-scope='tree-view'][data-part='root'] {
824
+ font-size: 0.875rem;
825
+ }
826
+
827
+ [data-scope='tree-view'][data-part='item'] {
828
+ display: flex;
829
+ align-items: center;
830
+ gap: var(--space-1);
831
+ padding: var(--space-1) var(--space-2);
832
+ border-radius: var(--radius-sm);
833
+ cursor: pointer;
834
+ }
835
+
836
+ [data-scope='tree-view'][data-part='item']:hover {
837
+ background: var(--color-surface-hover);
838
+ }
839
+
840
+ [data-scope='tree-view'][data-part='item'][data-selected=''] {
841
+ background: color-mix(in srgb, var(--color-primary) 15%, transparent);
842
+ color: var(--color-primary-active);
843
+ }
844
+
845
+ [data-scope='tree-view'][data-part='branch-trigger'] {
846
+ width: 1.25rem;
847
+ height: 1.25rem;
848
+ display: inline-flex;
849
+ align-items: center;
850
+ justify-content: center;
851
+ border: 0;
852
+ border-radius: var(--radius-sm);
853
+ background: transparent;
854
+ cursor: pointer;
855
+ color: var(--color-text-muted);
856
+ padding: 0;
857
+ font-size: 1rem;
858
+ transition:
859
+ transform var(--duration-fast),
860
+ background-color var(--duration-fast);
861
+ }
862
+
863
+ [data-scope='tree-view'][data-part='branch-trigger']:hover {
864
+ background: var(--color-surface-active);
865
+ }
866
+
867
+ [data-scope='tree-view'][data-part='branch-trigger'][data-state='open'] {
868
+ transform: rotate(90deg);
869
+ }
870
+
871
+ /* ─── Progress ─── */
872
+
873
+ [data-scope='progress'][data-part='track'] {
874
+ position: relative;
875
+ height: 0.5rem;
876
+ width: 100%;
877
+ overflow: hidden;
878
+ border-radius: 9999px;
879
+ background: var(--color-surface-active);
880
+ }
881
+
882
+ [data-scope='progress'][data-part='range'] {
883
+ height: 100%;
884
+ border-radius: 9999px;
885
+ background: var(--color-primary);
886
+ transition: width 300ms;
887
+ }
888
+
889
+ [data-scope='progress'][data-part='range'][data-state='indeterminate'] {
890
+ width: 33% !important;
891
+ animation: indeterminate 1.5s infinite ease-in-out;
892
+ }
893
+
894
+ @keyframes indeterminate {
895
+ 0% {
896
+ margin-left: -33%;
897
+ }
898
+ 100% {
899
+ margin-left: 100%;
900
+ }
901
+ }
902
+
903
+ [data-scope='progress'][data-part='label'] {
904
+ font-size: 0.875rem;
905
+ color: var(--color-text-muted);
906
+ }
907
+
908
+ /* ─── Slider ─── */
909
+
910
+ [data-scope='slider'][data-part='control'] {
911
+ position: relative;
912
+ height: 1.5rem;
913
+ width: 100%;
914
+ cursor: pointer;
915
+ touch-action: none;
916
+ }
917
+
918
+ [data-scope='slider'][data-part='track'] {
919
+ position: absolute;
920
+ top: 50%;
921
+ height: 0.375rem;
922
+ width: 100%;
923
+ transform: translateY(-50%);
924
+ border-radius: 9999px;
925
+ background: var(--color-surface-active);
926
+ }
927
+
928
+ [data-scope='slider'][data-part='range'] {
929
+ height: 100%;
930
+ border-radius: 9999px;
931
+ background: var(--color-primary);
932
+ }
933
+
934
+ [data-scope='slider'][data-part='thumb'] {
935
+ top: 50% !important;
936
+ height: 1rem;
937
+ width: 1rem;
938
+ border-radius: 9999px;
939
+ border: 2px solid var(--color-primary);
940
+ background: var(--color-surface);
941
+ box-shadow: var(--shadow-sm);
942
+ transform: translate(-50%, -50%) !important;
943
+ }
944
+
945
+ [data-scope='slider'][data-part='thumb']:focus {
946
+ outline: 2px solid var(--color-border-focus);
947
+ outline-offset: 2px;
948
+ }
949
+
950
+ /* ─── Select ─── */
951
+
952
+ [data-scope='select'][data-part='trigger'] {
953
+ display: flex;
954
+ width: 100%;
955
+ align-items: center;
956
+ justify-content: space-between;
957
+ border-radius: var(--radius-md);
958
+ border: 1px solid var(--color-border);
959
+ background: var(--color-surface);
960
+ padding: var(--space-2) var(--space-3);
961
+ font-size: 0.875rem;
962
+ cursor: pointer;
963
+ }
964
+
965
+ [data-scope='select'][data-part='trigger']:focus {
966
+ outline: 2px solid var(--color-border-focus);
967
+ outline-offset: 2px;
968
+ }
969
+
970
+ [data-scope='select'][data-part='content'] {
971
+ max-height: 15rem;
972
+ min-width: 8rem;
973
+ overflow: auto;
974
+ border-radius: var(--radius-md);
975
+ border: 1px solid var(--color-border);
976
+ background: var(--color-surface);
977
+ padding: var(--space-1);
978
+ box-shadow: var(--shadow-lg);
979
+ outline: none;
980
+ }
981
+
982
+ [data-scope='select'][data-part='item'] {
983
+ cursor: pointer;
984
+ border-radius: var(--radius-sm);
985
+ padding: 0.375rem var(--space-2);
986
+ font-size: 0.875rem;
987
+ }
988
+
989
+ [data-scope='select'][data-part='item'][data-highlighted=''] {
990
+ background: color-mix(in srgb, var(--color-primary) 15%, transparent);
991
+ color: var(--color-primary-active);
992
+ }
993
+
994
+ [data-scope='select'][data-part='item'][data-state='selected'] {
995
+ font-weight: 500;
996
+ }
997
+
998
+ /* ─── Menu ─── */
999
+
1000
+ [data-scope='menu'][data-part='content'] {
1001
+ min-width: 12rem;
1002
+ border-radius: var(--radius-md);
1003
+ border: 1px solid var(--color-border);
1004
+ background: var(--color-surface);
1005
+ padding: var(--space-2);
1006
+ box-shadow: var(--shadow-lg);
1007
+ outline: none;
1008
+ }
1009
+
1010
+ [data-scope='menu'][data-part='item'] {
1011
+ cursor: pointer;
1012
+ border-radius: var(--radius-sm);
1013
+ padding: 0.375rem var(--space-2);
1014
+ font-size: 0.875rem;
1015
+ }
1016
+
1017
+ [data-scope='menu'][data-part='item']:hover {
1018
+ background: var(--color-surface-hover);
1019
+ }
1020
+
1021
+ [data-scope='menu'][data-part='item'][data-state='highlighted'] {
1022
+ background: color-mix(in srgb, var(--color-primary) 15%, transparent);
1023
+ color: var(--color-primary-active);
1024
+ }
1025
+
1026
+ /* ─── Context Menu ─── */
1027
+
1028
+ [data-scope='context-menu'][data-part='content'] {
1029
+ min-width: 10rem;
1030
+ border: 1px solid var(--color-border);
1031
+ background: var(--color-surface);
1032
+ border-radius: var(--radius-md);
1033
+ padding: var(--space-1);
1034
+ box-shadow: var(--shadow-lg);
1035
+ outline: 0;
1036
+ }
1037
+
1038
+ [data-scope='context-menu'][data-part='item'] {
1039
+ padding: 0.375rem var(--space-2);
1040
+ border-radius: var(--radius-sm);
1041
+ font-size: 0.875rem;
1042
+ cursor: pointer;
1043
+ }
1044
+
1045
+ [data-scope='context-menu'][data-part='item']:hover {
1046
+ background: var(--color-surface-hover);
1047
+ }
1048
+
1049
+ [data-scope='context-menu'][data-part='item'][data-state='highlighted'] {
1050
+ background: color-mix(in srgb, var(--color-primary) 15%, transparent);
1051
+ color: var(--color-primary-active);
1052
+ }
1053
+
1054
+ /* ─── Combobox ─── */
1055
+
1056
+ [data-scope='combobox'][data-part='input'] {
1057
+ width: 100%;
1058
+ padding: var(--space-2) var(--space-3);
1059
+ border: 1px solid var(--color-border);
1060
+ border-radius: var(--radius-md);
1061
+ background: var(--color-surface);
1062
+ font-size: 0.875rem;
1063
+ }
1064
+
1065
+ [data-scope='combobox'][data-part='input']:focus {
1066
+ outline: 2px solid var(--color-border-focus);
1067
+ outline-offset: 2px;
1068
+ }
1069
+
1070
+ [data-scope='combobox'][data-part='content'] {
1071
+ max-height: 12rem;
1072
+ overflow-y: auto;
1073
+ border: 1px solid var(--color-border);
1074
+ border-radius: var(--radius-md);
1075
+ background: var(--color-surface);
1076
+ padding: var(--space-1);
1077
+ box-shadow: var(--shadow-lg);
1078
+ }
1079
+
1080
+ [data-scope='combobox'][data-part='item'] {
1081
+ padding: 0.375rem var(--space-2);
1082
+ border-radius: var(--radius-sm);
1083
+ font-size: 0.875rem;
1084
+ cursor: pointer;
1085
+ }
1086
+
1087
+ [data-scope='combobox'][data-part='item']:hover {
1088
+ background: var(--color-surface-hover);
1089
+ }
1090
+
1091
+ [data-scope='combobox'][data-part='item'][data-highlighted=''] {
1092
+ background: color-mix(in srgb, var(--color-primary) 15%, transparent);
1093
+ color: var(--color-primary-active);
1094
+ }
1095
+
1096
+ /* ─── Popover ─── */
1097
+
1098
+ [data-scope='popover'][data-part='content'] {
1099
+ min-width: 12rem;
1100
+ border-radius: var(--radius-md);
1101
+ border: 1px solid var(--color-border);
1102
+ background: var(--color-surface);
1103
+ padding: var(--space-2);
1104
+ box-shadow: var(--shadow-lg);
1105
+ outline: none;
1106
+ }
1107
+
1108
+ /* ─── Tooltip ─── */
1109
+
1110
+ [data-scope='tooltip'][data-part='content'] {
1111
+ background: var(--color-text);
1112
+ color: var(--color-text-inverted);
1113
+ font-size: 0.75rem;
1114
+ padding: var(--space-1) var(--space-2);
1115
+ border-radius: var(--radius-sm);
1116
+ box-shadow: var(--shadow-md);
1117
+ }
1118
+
1119
+ /* ─── Hover Card ─── */
1120
+
1121
+ [data-scope='hover-card'][data-part='content'] {
1122
+ background: var(--color-surface);
1123
+ border: 1px solid var(--color-border);
1124
+ border-radius: var(--radius-lg);
1125
+ padding: 0.875rem;
1126
+ box-shadow: var(--shadow-lg);
1127
+ max-width: 18rem;
1128
+ }
1129
+
1130
+ /* ─── Drawer ─── */
1131
+
1132
+ [data-scope='drawer'][data-part='positioner'] {
1133
+ position: fixed;
1134
+ inset: 0;
1135
+ z-index: var(--z-dialog);
1136
+ background: rgba(0, 0, 0, 0.4);
1137
+ }
1138
+
1139
+ [data-scope='drawer'][data-part='content'] {
1140
+ position: absolute;
1141
+ top: 0;
1142
+ right: 0;
1143
+ bottom: 0;
1144
+ width: 20rem;
1145
+ background: var(--color-surface);
1146
+ padding: var(--space-6);
1147
+ box-shadow: var(--shadow-lg);
1148
+ outline: none;
1149
+ }
1150
+
1151
+ [data-scope='drawer'][data-part='title'] {
1152
+ font-size: 1.125rem;
1153
+ font-weight: 600;
1154
+ }
1155
+
1156
+ [data-scope='drawer'][data-part='description'] {
1157
+ margin-top: var(--space-2);
1158
+ font-size: 0.875rem;
1159
+ color: var(--color-text-muted);
1160
+ }
1161
+
1162
+ [data-scope='drawer'][data-part='close-trigger'] {
1163
+ background: none;
1164
+ border: none;
1165
+ cursor: pointer;
1166
+ color: var(--color-text-muted);
1167
+ }
1168
+
1169
+ [data-scope='drawer'][data-part='close-trigger']:hover {
1170
+ color: var(--color-text);
1171
+ }
1172
+
1173
+ /* ─── Toast ─── */
1174
+
1175
+ [data-scope='toast'][data-part='region'] {
1176
+ position: fixed;
1177
+ bottom: 1rem;
1178
+ right: 1rem;
1179
+ z-index: var(--z-dialog);
1180
+ display: flex;
1181
+ width: 20rem;
1182
+ flex-direction: column;
1183
+ gap: var(--space-2);
1184
+ }
1185
+
1186
+ [data-scope='toast'][data-part='root'] {
1187
+ border-radius: var(--radius-lg);
1188
+ background: var(--color-surface);
1189
+ padding: var(--space-4);
1190
+ box-shadow: var(--shadow-lg);
1191
+ border: 1px solid var(--color-border);
1192
+ }
1193
+
1194
+ [data-scope='toast'][data-part='root'][data-type='success'] {
1195
+ background: rgb(240 253 244);
1196
+ border-color: rgb(187 247 208);
1197
+ }
1198
+
1199
+ [data-scope='toast'][data-part='root'][data-type='error'] {
1200
+ background: rgb(254 242 242);
1201
+ border-color: rgb(254 202 202);
1202
+ }
1203
+
1204
+ [data-scope='toast'][data-part='title'] {
1205
+ font-size: 0.875rem;
1206
+ font-weight: 500;
1207
+ }
1208
+
1209
+ [data-scope='toast'][data-part='description'] {
1210
+ font-size: 0.75rem;
1211
+ color: var(--color-text-muted);
1212
+ }
1213
+
1214
+ /* ─── Date Picker ─── */
1215
+
1216
+ [data-scope='date-picker'][data-part='root'] {
1217
+ border: 1px solid var(--color-border);
1218
+ border-radius: var(--radius-md);
1219
+ padding: var(--space-3);
1220
+ }
1221
+
1222
+ [data-scope='date-picker'][data-part='grid'] {
1223
+ display: grid;
1224
+ grid-template-columns: repeat(7, 1fr);
1225
+ gap: 0.125rem;
1226
+ }
1227
+
1228
+ [data-scope='date-picker'][data-part='day-cell'] {
1229
+ aspect-ratio: 1;
1230
+ border: 0;
1231
+ background: transparent;
1232
+ border-radius: var(--radius-sm);
1233
+ font-size: 0.75rem;
1234
+ color: var(--color-text-muted);
1235
+ cursor: pointer;
1236
+ display: flex;
1237
+ align-items: center;
1238
+ justify-content: center;
1239
+ }
1240
+
1241
+ [data-scope='date-picker'][data-part='day-cell']:hover {
1242
+ background: var(--color-surface-hover);
1243
+ }
1244
+
1245
+ [data-scope='date-picker'][data-part='day-cell'][data-in-month='']:not([data-selected='']) {
1246
+ color: var(--color-text);
1247
+ }
1248
+
1249
+ [data-scope='date-picker'][data-part='day-cell']:not([data-in-month='']) {
1250
+ color: var(--color-border);
1251
+ }
1252
+
1253
+ [data-scope='date-picker'][data-part='day-cell'][data-today=''] {
1254
+ font-weight: 700;
1255
+ }
1256
+
1257
+ [data-scope='date-picker'][data-part='day-cell'][data-selected=''] {
1258
+ background: var(--color-primary);
1259
+ color: var(--color-text-inverted);
1260
+ }
1261
+
1262
+ [data-scope='date-picker'][data-part='day-cell'][data-disabled=''] {
1263
+ opacity: 0.3;
1264
+ cursor: not-allowed;
1265
+ }
1266
+
1267
+ [data-scope='date-picker'][data-part='prev-month-trigger'],
1268
+ [data-scope='date-picker'][data-part='next-month-trigger'] {
1269
+ padding: var(--space-1) var(--space-2);
1270
+ border: 0;
1271
+ background: transparent;
1272
+ cursor: pointer;
1273
+ color: var(--color-text-muted);
1274
+ border-radius: var(--radius-sm);
1275
+ font-size: 1rem;
1276
+ }
1277
+
1278
+ [data-scope='date-picker'][data-part='prev-month-trigger']:hover,
1279
+ [data-scope='date-picker'][data-part='next-month-trigger']:hover {
1280
+ background: var(--color-surface-hover);
1281
+ }
1282
+
1283
+ /* ─── Time Picker ─── */
1284
+
1285
+ [data-scope='time-picker'][data-part='root'] {
1286
+ display: inline-flex;
1287
+ align-items: center;
1288
+ gap: var(--space-1);
1289
+ border: 1px solid var(--color-border);
1290
+ border-radius: var(--radius-md);
1291
+ padding: var(--space-1);
1292
+ background: var(--color-surface);
1293
+ }
1294
+
1295
+ [data-scope='time-picker'][data-part='hours-input'],
1296
+ [data-scope='time-picker'][data-part='minutes-input'] {
1297
+ width: 2.5rem;
1298
+ border: 0;
1299
+ text-align: center;
1300
+ font-size: 1.125rem;
1301
+ font-variant-numeric: tabular-nums;
1302
+ outline: 0;
1303
+ background: transparent;
1304
+ }
1305
+
1306
+ [data-scope='time-picker'][data-part='hours-input']::-webkit-inner-spin-button,
1307
+ [data-scope='time-picker'][data-part='minutes-input']::-webkit-inner-spin-button,
1308
+ [data-scope='time-picker'][data-part='hours-input']::-webkit-outer-spin-button,
1309
+ [data-scope='time-picker'][data-part='minutes-input']::-webkit-outer-spin-button {
1310
+ -webkit-appearance: none;
1311
+ margin: 0;
1312
+ }
1313
+
1314
+ [data-scope='time-picker'][data-part='period-trigger'] {
1315
+ padding: var(--space-1) var(--space-2);
1316
+ border: 0;
1317
+ background: var(--color-surface-hover);
1318
+ color: var(--color-text-muted);
1319
+ font-size: 0.75rem;
1320
+ font-weight: 600;
1321
+ cursor: pointer;
1322
+ border-radius: var(--radius-sm);
1323
+ }
1324
+
1325
+ /* ─── Color Picker ─── */
1326
+
1327
+ [data-scope='color-picker'][data-part='root'] {
1328
+ display: flex;
1329
+ flex-direction: column;
1330
+ gap: var(--space-2);
1331
+ }
1332
+
1333
+ [data-scope='color-picker'][data-part='swatch'] {
1334
+ width: 3rem;
1335
+ height: 3rem;
1336
+ border-radius: var(--radius-md);
1337
+ border: 1px solid var(--color-border);
1338
+ }
1339
+
1340
+ [data-scope='color-picker'][data-part='hex-input'] {
1341
+ flex: 1;
1342
+ padding: var(--space-2) var(--space-3);
1343
+ border: 1px solid var(--color-border);
1344
+ border-radius: var(--radius-md);
1345
+ font-size: 0.875rem;
1346
+ font-family: monospace;
1347
+ }
1348
+
1349
+ [data-scope='color-picker'][data-part='hue-slider'],
1350
+ [data-scope='color-picker'][data-part='saturation-slider'],
1351
+ [data-scope='color-picker'][data-part='lightness-slider'] {
1352
+ flex: 1;
1353
+ height: 0.75rem;
1354
+ appearance: none;
1355
+ -webkit-appearance: none;
1356
+ border-radius: var(--radius-md);
1357
+ outline: none;
1358
+ cursor: pointer;
1359
+ border: 1px solid var(--color-border);
1360
+ }
1361
+
1362
+ [data-scope='color-picker'][data-part='hue-slider']::-webkit-slider-thumb,
1363
+ [data-scope='color-picker'][data-part='saturation-slider']::-webkit-slider-thumb,
1364
+ [data-scope='color-picker'][data-part='lightness-slider']::-webkit-slider-thumb {
1365
+ -webkit-appearance: none;
1366
+ width: 1rem;
1367
+ height: 1rem;
1368
+ border-radius: 9999px;
1369
+ background: var(--color-surface);
1370
+ border: 2px solid var(--color-primary);
1371
+ cursor: grab;
1372
+ box-shadow: var(--shadow-sm);
1373
+ }
1374
+
1375
+ [data-scope='color-picker'][data-part='hue-slider'] {
1376
+ background: linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00);
1377
+ }
1378
+
1379
+ /* ─── Editable ─── */
1380
+
1381
+ [data-scope='editable'][data-part='root'] {
1382
+ display: inline-block;
1383
+ }
1384
+
1385
+ [data-scope='editable'][data-part='preview'] {
1386
+ padding: 0.375rem var(--space-2);
1387
+ border-radius: var(--radius-sm);
1388
+ cursor: pointer;
1389
+ font-size: 0.875rem;
1390
+ }
1391
+
1392
+ [data-scope='editable'][data-part='preview']:hover {
1393
+ background: var(--color-surface-hover);
1394
+ }
1395
+
1396
+ [data-scope='editable'][data-part='input'] {
1397
+ padding: 0.375rem var(--space-2);
1398
+ border: 1px solid var(--color-border-focus);
1399
+ border-radius: var(--radius-sm);
1400
+ font-size: 0.875rem;
1401
+ outline: 0;
1402
+ }
1403
+
1404
+ /* ─── Clipboard ─── */
1405
+
1406
+ [data-scope='clipboard'][data-part='root'] {
1407
+ display: flex;
1408
+ gap: var(--space-2);
1409
+ align-items: center;
1410
+ }
1411
+
1412
+ [data-scope='clipboard'][data-part='input'] {
1413
+ flex: 1;
1414
+ padding: var(--space-2) var(--space-3);
1415
+ border: 1px solid var(--color-border);
1416
+ border-radius: var(--radius-md);
1417
+ background: var(--color-surface-muted);
1418
+ font-family: monospace;
1419
+ font-size: 0.75rem;
1420
+ }
1421
+
1422
+ /* ─── File Upload ─── */
1423
+
1424
+ [data-scope='file-upload'][data-part='root'] {
1425
+ display: flex;
1426
+ flex-direction: column;
1427
+ gap: var(--space-2);
1428
+ }
1429
+
1430
+ [data-scope='file-upload'][data-part='dropzone'] {
1431
+ display: flex;
1432
+ flex-direction: column;
1433
+ align-items: center;
1434
+ gap: var(--space-1);
1435
+ padding: var(--space-6);
1436
+ border: 2px dashed var(--color-border);
1437
+ border-radius: var(--radius-md);
1438
+ color: var(--color-text-muted);
1439
+ font-size: 0.875rem;
1440
+ background: var(--color-surface-muted);
1441
+ cursor: pointer;
1442
+ }
1443
+
1444
+ [data-scope='file-upload'][data-part='dropzone']:hover {
1445
+ border-color: var(--color-border-hover);
1446
+ background: var(--color-surface-hover);
1447
+ }
1448
+
1449
+ [data-scope='file-upload'][data-part='dropzone'][data-dragging=''] {
1450
+ border-color: var(--color-primary);
1451
+ background: color-mix(in srgb, var(--color-primary) 10%, transparent);
1452
+ }
1453
+
1454
+ [data-scope='file-upload'][data-part='label'] {
1455
+ color: var(--color-primary);
1456
+ text-decoration: underline;
1457
+ cursor: pointer;
1458
+ }
1459
+
1460
+ [data-scope='file-upload'][data-part='hidden-input'] {
1461
+ position: absolute;
1462
+ width: 1px;
1463
+ height: 1px;
1464
+ padding: 0;
1465
+ margin: -1px;
1466
+ overflow: hidden;
1467
+ clip: rect(0, 0, 0, 0);
1468
+ white-space: nowrap;
1469
+ border: 0;
1470
+ }
1471
+
1472
+ [data-scope='file-upload'][data-part='item-group'] {
1473
+ font-size: 0.75rem;
1474
+ color: var(--color-text-muted);
1475
+ }
1476
+
1477
+ /* ─── Splitter ─── */
1478
+
1479
+ [data-scope='splitter'][data-part='root'] {
1480
+ display: flex;
1481
+ height: 5rem;
1482
+ border: 1px solid var(--color-border);
1483
+ border-radius: var(--radius-md);
1484
+ overflow: hidden;
1485
+ }
1486
+
1487
+ [data-scope='splitter'][data-part='root'][data-dragging=''] {
1488
+ user-select: none;
1489
+ }
1490
+
1491
+ [data-scope='splitter'][data-part='primary-panel'],
1492
+ [data-scope='splitter'][data-part='secondary-panel'] {
1493
+ display: flex;
1494
+ align-items: center;
1495
+ justify-content: center;
1496
+ background: var(--color-surface-muted);
1497
+ color: var(--color-text-muted);
1498
+ font-size: 0.875rem;
1499
+ }
1500
+
1501
+ [data-scope='splitter'][data-part='resize-trigger'] {
1502
+ width: 4px;
1503
+ background: var(--color-border);
1504
+ cursor: col-resize;
1505
+ }
1506
+
1507
+ [data-scope='splitter'][data-part='resize-trigger']:hover {
1508
+ background: var(--color-border-hover);
1509
+ }
1510
+
1511
+ [data-scope='splitter'][data-part='resize-trigger']:focus {
1512
+ outline: 2px solid var(--color-border-focus);
1513
+ outline-offset: -2px;
1514
+ }
1515
+
1516
+ /* ─── Listbox ─── */
1517
+
1518
+ [data-scope='listbox'][data-part='root'] {
1519
+ border: 1px solid var(--color-border);
1520
+ border-radius: var(--radius-md);
1521
+ overflow: auto;
1522
+ background: var(--color-surface);
1523
+ }
1524
+
1525
+ [data-scope='listbox'][data-part='item'] {
1526
+ padding: 0.375rem var(--space-2);
1527
+ font-size: 0.875rem;
1528
+ cursor: pointer;
1529
+ }
1530
+
1531
+ [data-scope='listbox'][data-part='item']:hover {
1532
+ background: var(--color-surface-hover);
1533
+ }
1534
+
1535
+ [data-scope='listbox'][data-part='item'][data-state='checked'] {
1536
+ background: color-mix(in srgb, var(--color-primary) 15%, transparent);
1537
+ color: var(--color-primary-active);
1538
+ }
1539
+
1540
+ /* ─── Buttons ─── */
1541
+
1542
+ .btn {
1543
+ display: inline-flex;
1544
+ align-items: center;
1545
+ justify-content: center;
1546
+ border-radius: var(--radius-md);
1547
+ padding: var(--space-2) var(--space-4);
1548
+ font-size: 0.875rem;
1549
+ font-weight: 500;
1550
+ cursor: pointer;
1551
+ border: 0;
1552
+ transition: background-color var(--duration-fast);
1553
+ }
1554
+
1555
+ .btn-primary {
1556
+ background: var(--color-primary);
1557
+ color: var(--color-text-inverted);
1558
+ }
1559
+
1560
+ .btn-primary:hover {
1561
+ background: var(--color-primary-hover);
1562
+ }
1563
+
1564
+ .btn-secondary {
1565
+ border: 1px solid var(--color-border);
1566
+ background: var(--color-surface);
1567
+ color: var(--color-text);
1568
+ }
1569
+
1570
+ .btn-secondary:hover {
1571
+ background: var(--color-surface-hover);
1572
+ }
1573
+
1574
+ .btn-danger {
1575
+ background: var(--color-destructive);
1576
+ color: var(--color-text-inverted);
1577
+ }
1578
+
1579
+ .btn-danger:hover {
1580
+ background: var(--color-destructive-hover);
1581
+ }
1582
+
1583
+ .btn.text-xs {
1584
+ font-size: 0.75rem;
1585
+ padding: 0.375rem 0.75rem;
1586
+ }
1587
+
1588
+ /* ─── Confirm Dialog (pattern) ─── */
1589
+
1590
+ .confirm-dialog {
1591
+ position: relative;
1592
+ z-index: 10;
1593
+ width: 100%;
1594
+ max-width: 28rem;
1595
+ border-radius: var(--radius-lg);
1596
+ background: var(--color-surface);
1597
+ padding: var(--space-6);
1598
+ box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1);
1599
+ }
1600
+
1601
+ .confirm-dialog__actions {
1602
+ margin-top: var(--space-6);
1603
+ display: flex;
1604
+ justify-content: flex-end;
1605
+ gap: var(--space-3);
1606
+ }
1607
+
1608
+ /* ─── Marquee ─── */
1609
+
1610
+ @keyframes marquee-scroll {
1611
+ from {
1612
+ transform: translateX(0);
1613
+ }
1614
+ to {
1615
+ transform: translateX(-50%);
1616
+ }
1617
+ }
1618
+
1619
+ /* ─── Utilities ─── */
1620
+
1621
+ .sr-only {
1622
+ position: absolute;
1623
+ width: 1px;
1624
+ height: 1px;
1625
+ padding: 0;
1626
+ margin: -1px;
1627
+ overflow: hidden;
1628
+ clip: rect(0, 0, 0, 0);
1629
+ white-space: nowrap;
1630
+ border: 0;
1631
+ }
1632
+
1633
+ /* ─── Angle Slider ─── */
1634
+
1635
+ [data-scope='angle-slider'][data-part='control'] {
1636
+ user-select: none;
1637
+ -webkit-user-select: none;
1638
+ touch-action: none;
1639
+ }
1640
+
1641
+ /* ─── Animations ─── */
1642
+
1643
+ @keyframes fade-in {
1644
+ from {
1645
+ opacity: 0;
1646
+ }
1647
+ to {
1648
+ opacity: 1;
1649
+ }
1650
+ }
1651
+
1652
+ @keyframes fade-out {
1653
+ from {
1654
+ opacity: 1;
1655
+ }
1656
+ to {
1657
+ opacity: 0;
1658
+ }
1659
+ }
1660
+
1661
+ @keyframes scale-in {
1662
+ from {
1663
+ opacity: 0;
1664
+ transform: scale(0.95);
1665
+ }
1666
+ to {
1667
+ opacity: 1;
1668
+ transform: scale(1);
1669
+ }
1670
+ }
1671
+
1672
+ @keyframes scale-out {
1673
+ from {
1674
+ opacity: 1;
1675
+ transform: scale(1);
1676
+ }
1677
+ to {
1678
+ opacity: 0;
1679
+ transform: scale(0.95);
1680
+ }
1681
+ }
1682
+
1683
+ @keyframes slide-in-from-top {
1684
+ from {
1685
+ opacity: 0;
1686
+ transform: translateY(-0.5rem);
1687
+ }
1688
+ to {
1689
+ opacity: 1;
1690
+ transform: translateY(0);
1691
+ }
1692
+ }
1693
+
1694
+ @keyframes slide-in-from-bottom {
1695
+ from {
1696
+ opacity: 0;
1697
+ transform: translateY(0.5rem);
1698
+ }
1699
+ to {
1700
+ opacity: 1;
1701
+ transform: translateY(0);
1702
+ }
1703
+ }
1704
+
1705
+ @keyframes slide-in-from-left {
1706
+ from {
1707
+ transform: translateX(-100%);
1708
+ }
1709
+ to {
1710
+ transform: translateX(0);
1711
+ }
1712
+ }
1713
+
1714
+ @keyframes slide-in-from-right {
1715
+ from {
1716
+ transform: translateX(100%);
1717
+ }
1718
+ to {
1719
+ transform: translateX(0);
1720
+ }
1721
+ }
1722
+
1723
+ @keyframes collapse-down {
1724
+ from {
1725
+ height: 0;
1726
+ opacity: 0;
1727
+ }
1728
+ to {
1729
+ height: var(--height);
1730
+ opacity: 1;
1731
+ }
1732
+ }
1733
+
1734
+ @keyframes collapse-up {
1735
+ from {
1736
+ height: var(--height);
1737
+ opacity: 1;
1738
+ }
1739
+ to {
1740
+ height: 0;
1741
+ opacity: 0;
1742
+ }
1743
+ }
1744
+
1745
+ /* Dialog / Drawer enter */
1746
+ [data-scope='dialog'][data-part='backdrop'][data-state='open'],
1747
+ [data-scope='drawer'][data-part='backdrop'][data-state='open'] {
1748
+ animation: fade-in var(--duration-normal) ease-out;
1749
+ }
1750
+
1751
+ [data-scope='dialog'][data-part='content'][data-state='open'] {
1752
+ animation: scale-in var(--duration-normal) ease-out;
1753
+ }
1754
+
1755
+ [data-scope='drawer'][data-part='content'][data-state='open'][data-placement='right'] {
1756
+ animation: slide-in-from-right var(--duration-normal) ease-out;
1757
+ }
1758
+
1759
+ [data-scope='drawer'][data-part='content'][data-state='open'][data-placement='left'] {
1760
+ animation: slide-in-from-left var(--duration-normal) ease-out;
1761
+ }
1762
+
1763
+ /* Popover / Tooltip / Hover Card enter */
1764
+ [data-scope='popover'][data-part='content'][data-state='open'],
1765
+ [data-scope='tooltip'][data-part='content'][data-state='open'],
1766
+ [data-scope='hover-card'][data-part='content'][data-state='open'] {
1767
+ animation: scale-in var(--duration-fast) ease-out;
1768
+ }
1769
+
1770
+ /* Collapsible enter/exit */
1771
+ [data-scope='collapsible'][data-part='content'][data-state='open'] {
1772
+ animation: collapse-down var(--duration-normal) ease-out;
1773
+ }
1774
+
1775
+ [data-scope='collapsible'][data-part='content'][data-state='closed'] {
1776
+ animation: collapse-up var(--duration-normal) ease-out;
1777
+ }
1778
+
1779
+ /* Toast enter */
1780
+ [data-scope='toast'][data-part='root'][data-state='open'] {
1781
+ animation: slide-in-from-bottom var(--duration-normal) ease-out;
1782
+ }