@a4ui/core 0.11.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/README.md +36 -26
  2. package/dist/full.css +3042 -0
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.js +1 -1
  5. package/package.json +8 -1
  6. package/src/charts/BarChart.tsx +55 -0
  7. package/src/charts/DonutChart.tsx +127 -0
  8. package/src/charts/Sparkline.tsx +101 -0
  9. package/src/charts/index.ts +5 -0
  10. package/src/commerce/CartLine.tsx +84 -0
  11. package/src/commerce/CartSummary.tsx +70 -0
  12. package/src/commerce/FilterGroup.tsx +70 -0
  13. package/src/commerce/PriceTag.tsx +62 -0
  14. package/src/commerce/ProductCard.tsx +121 -0
  15. package/src/commerce/ProductGrid.tsx +27 -0
  16. package/src/commerce/QuantityStepper.tsx +59 -0
  17. package/src/commerce/index.ts +10 -0
  18. package/src/elements.tsx +167 -0
  19. package/src/index.ts +166 -0
  20. package/src/layout/AppShell.tsx +102 -0
  21. package/src/layout/ChristmasBackground.tsx +177 -0
  22. package/src/layout/EffectsToggle.tsx +41 -0
  23. package/src/layout/NavGroup.tsx +45 -0
  24. package/src/layout/SnowScenery.tsx +76 -0
  25. package/src/layout/SpaceBackground.tsx +459 -0
  26. package/src/layout/ThemeToggle.tsx +40 -0
  27. package/src/layout/ThemedScenery.tsx +179 -0
  28. package/src/layout/sceneEffects.ts +49 -0
  29. package/src/lib/cn.ts +17 -0
  30. package/src/lib/effects.ts +71 -0
  31. package/src/lib/media.ts +27 -0
  32. package/src/lib/motion.ts +191 -0
  33. package/src/lib/theme.ts +113 -0
  34. package/src/lib/virtual.ts +33 -0
  35. package/src/styles/space.css +510 -0
  36. package/src/styles/tokens.css +213 -0
  37. package/src/themes/index.ts +102 -0
  38. package/src/themes/palettes.ts +368 -0
  39. package/src/ui/Accordion.tsx +65 -0
  40. package/src/ui/Affix.tsx +72 -0
  41. package/src/ui/Alert.tsx +55 -0
  42. package/src/ui/AlertDialog.tsx +58 -0
  43. package/src/ui/Anchor.tsx +100 -0
  44. package/src/ui/Avatar.tsx +34 -0
  45. package/src/ui/AvatarGroup.tsx +55 -0
  46. package/src/ui/BackToTop.tsx +51 -0
  47. package/src/ui/Badge.tsx +46 -0
  48. package/src/ui/BottomNavigation.tsx +65 -0
  49. package/src/ui/Breadcrumb.tsx +64 -0
  50. package/src/ui/Button.tsx +49 -0
  51. package/src/ui/Calendar.tsx +40 -0
  52. package/src/ui/CalendarHeatmap.tsx +180 -0
  53. package/src/ui/Card.tsx +84 -0
  54. package/src/ui/Carousel.tsx +121 -0
  55. package/src/ui/Cascader.tsx +158 -0
  56. package/src/ui/Checkbox.tsx +35 -0
  57. package/src/ui/Clock.tsx +221 -0
  58. package/src/ui/Collapse.tsx +48 -0
  59. package/src/ui/ColorPicker.tsx +89 -0
  60. package/src/ui/Combobox.tsx +67 -0
  61. package/src/ui/Command.tsx +158 -0
  62. package/src/ui/Comment.tsx +91 -0
  63. package/src/ui/ContextMenu.tsx +58 -0
  64. package/src/ui/Countdown.tsx +123 -0
  65. package/src/ui/DataGrid.tsx +177 -0
  66. package/src/ui/DateField.tsx +177 -0
  67. package/src/ui/DateRangePicker.tsx +204 -0
  68. package/src/ui/DateTimeField.tsx +68 -0
  69. package/src/ui/Descriptions.tsx +56 -0
  70. package/src/ui/Drawer.tsx +72 -0
  71. package/src/ui/Dropdown.tsx +71 -0
  72. package/src/ui/Dropzone.tsx +88 -0
  73. package/src/ui/Empty.tsx +53 -0
  74. package/src/ui/FileUpload.tsx +198 -0
  75. package/src/ui/FloatingActionButton.tsx +48 -0
  76. package/src/ui/Form.tsx +108 -0
  77. package/src/ui/Highlight.tsx +53 -0
  78. package/src/ui/HoverCard.tsx +42 -0
  79. package/src/ui/Image.tsx +66 -0
  80. package/src/ui/Input.tsx +38 -0
  81. package/src/ui/Kbd.tsx +25 -0
  82. package/src/ui/List.tsx +71 -0
  83. package/src/ui/Marquee.tsx +48 -0
  84. package/src/ui/Mentions.tsx +170 -0
  85. package/src/ui/Meter.tsx +57 -0
  86. package/src/ui/Modal.tsx +106 -0
  87. package/src/ui/MultiSelect.tsx +236 -0
  88. package/src/ui/NotificationCenter.tsx +103 -0
  89. package/src/ui/NumberInput.tsx +48 -0
  90. package/src/ui/PageHeader.tsx +60 -0
  91. package/src/ui/Pagination.tsx +62 -0
  92. package/src/ui/Popover.tsx +42 -0
  93. package/src/ui/Portal.tsx +34 -0
  94. package/src/ui/Progress.tsx +55 -0
  95. package/src/ui/RadioGroup.tsx +65 -0
  96. package/src/ui/Rating.tsx +98 -0
  97. package/src/ui/Result.tsx +75 -0
  98. package/src/ui/RingProgress.tsx +75 -0
  99. package/src/ui/SegmentedControl.tsx +61 -0
  100. package/src/ui/Select.tsx +55 -0
  101. package/src/ui/Separator.tsx +39 -0
  102. package/src/ui/Skeleton.tsx +23 -0
  103. package/src/ui/Slider.tsx +57 -0
  104. package/src/ui/Sortable.tsx +174 -0
  105. package/src/ui/SpeedDial.tsx +75 -0
  106. package/src/ui/Spinner.tsx +33 -0
  107. package/src/ui/Splitter.tsx +115 -0
  108. package/src/ui/Stat.tsx +74 -0
  109. package/src/ui/Stepper.tsx +134 -0
  110. package/src/ui/Switch.tsx +44 -0
  111. package/src/ui/Table.tsx +128 -0
  112. package/src/ui/Tabs.tsx +72 -0
  113. package/src/ui/TagInput.tsx +85 -0
  114. package/src/ui/Textarea.tsx +38 -0
  115. package/src/ui/TimeField.tsx +298 -0
  116. package/src/ui/Timeline.tsx +89 -0
  117. package/src/ui/Toast.tsx +68 -0
  118. package/src/ui/Toggle.tsx +41 -0
  119. package/src/ui/ToggleGroup.tsx +59 -0
  120. package/src/ui/Tooltip.tsx +42 -0
  121. package/src/ui/Tour.tsx +197 -0
  122. package/src/ui/Transfer.tsx +112 -0
  123. package/src/ui/Tree.tsx +100 -0
  124. package/src/ui/TreeSelect.tsx +151 -0
  125. package/src/ui/VirtualList.tsx +81 -0
  126. package/src/ui/internal/CalendarCore.tsx +276 -0
package/dist/full.css ADDED
@@ -0,0 +1,3042 @@
1
+ /* @a4ui/core/full.css — fully precompiled styles (tokens + every utility the components use). Import instead of styles.css when NOT using Tailwind. */
2
+ /* A4ui — Spatial Glass design tokens + motion.
3
+ *
4
+ * Pure CSS (no @tailwind / @apply) so it can be imported directly by any
5
+ * consumer: `import 'a4ui/styles.css'`. Dark "night" theme is the default;
6
+ * `data-theme="light"` on the root opts into the light palette.
7
+ *
8
+ * Extracted verbatim from the source project
9
+ * (sonora precision/alfredorust/solid/src/index.css) — keep in sync until that
10
+ * app consumes this package instead. */
11
+
12
+ :root {
13
+ --background: 222 47% 7%;
14
+ --foreground: 213 31% 91%;
15
+ --card: 222 40% 11%;
16
+ --card-foreground: 213 31% 91%;
17
+ --muted: 217 33% 17%;
18
+ /* 75% (not 65%) for WCAG AA contrast on glass/dark surfaces (pa11y/axe). */
19
+ --muted-foreground: 215 25% 75%;
20
+ --border: 217 30% 22%;
21
+ --input: 217 30% 22%;
22
+ --primary: 217 91% 52%;
23
+ --primary-foreground: 0 0% 100%;
24
+ --accent: 199 89% 55%;
25
+ --accent-foreground: 0 0% 100%;
26
+ --ring: 217 91% 52%;
27
+ --destructive: 0 72% 52%;
28
+ --destructive-foreground: 0 0% 100%;
29
+
30
+ /* Semantic data colors (financial direction) — constant across themes. */
31
+ --data-emit: 160 84% 39%;
32
+ --data-received: 347 89% 61%;
33
+ --data-net: 199 89% 48%;
34
+
35
+ --font-sans: 'IBM Plex Sans', ui-sans-serif, system-ui, sans-serif;
36
+ --font-mono: 'IBM Plex Mono', ui-monospace, monospace;
37
+ --sidebar-w: 248px;
38
+ --sidebar-w-collapsed: 68px;
39
+
40
+ /* Shadow color for glass surfaces (consumed by the glass plugin in preset.js).
41
+ Undefined in the source project, so its .card box-shadow silently dropped —
42
+ defined here so the intended elevation renders. Low alpha in use, so one
43
+ dark value covers both themes. */
44
+ --shadow: 222 47% 4%;
45
+ --radius-xl: 1rem;
46
+ }
47
+
48
+ :root[data-theme='light'] {
49
+ --background: 214 32% 95%;
50
+ --foreground: 222 47% 11%;
51
+ --card: 0 0% 100%;
52
+ --card-foreground: 222 47% 11%;
53
+ --muted: 214 30% 92%;
54
+ /* 38% (not 47%) for WCAG AA contrast on light/glass surfaces (pa11y/axe). */
55
+ --muted-foreground: 215 22% 38%;
56
+ --border: 214 24% 84%;
57
+ --input: 214 32% 91%;
58
+ --primary: 217 91% 52%;
59
+ --primary-foreground: 0 0% 100%;
60
+ --accent: 199 89% 48%;
61
+ --accent-foreground: 0 0% 100%;
62
+ --ring: 217 91% 52%;
63
+ --destructive: 0 72% 50%;
64
+ --destructive-foreground: 0 0% 100%;
65
+ }
66
+
67
+ body {
68
+ background: hsl(var(--background));
69
+ color: hsl(var(--foreground));
70
+ font-family: var(--font-sans);
71
+ -webkit-font-smoothing: antialiased;
72
+ font-feature-settings: 'cv02', 'cv03', 'cv04';
73
+ }
74
+
75
+ /* ---- Motion (transform/opacity only, short & functional) --------------- */
76
+
77
+ /* Route/page cross-fade (AppShell wraps routed content in a <Transition>). */
78
+ .page-enter-active,
79
+ .page-exit-active {
80
+ transition: opacity 0.16s ease-out;
81
+ }
82
+ .page-enter,
83
+ .page-exit-to {
84
+ opacity: 0;
85
+ }
86
+
87
+ /* Modal — MUST be @keyframes (Kobalte Dialog presence listens for
88
+ animationend, not transitionend, or the exit never resolves). */
89
+ @keyframes modal-overlay-in {
90
+ from {
91
+ opacity: 0;
92
+ }
93
+ to {
94
+ opacity: 1;
95
+ }
96
+ }
97
+ @keyframes modal-overlay-out {
98
+ from {
99
+ opacity: 1;
100
+ }
101
+ to {
102
+ opacity: 0;
103
+ }
104
+ }
105
+ @keyframes modal-content-in {
106
+ from {
107
+ opacity: 0;
108
+ transform: scale(0.96) translateY(4px);
109
+ }
110
+ to {
111
+ opacity: 1;
112
+ transform: scale(1) translateY(0);
113
+ }
114
+ }
115
+ @keyframes modal-content-out {
116
+ from {
117
+ opacity: 1;
118
+ transform: scale(1) translateY(0);
119
+ }
120
+ to {
121
+ opacity: 0;
122
+ transform: scale(0.96) translateY(4px);
123
+ }
124
+ }
125
+ .modal-overlay[data-expanded] {
126
+ animation: modal-overlay-in 0.15s ease-out;
127
+ }
128
+ .modal-overlay[data-closed] {
129
+ animation: modal-overlay-out 0.15s ease-in;
130
+ }
131
+ .modal-content[data-expanded] {
132
+ animation: modal-content-in 0.18s ease-out;
133
+ }
134
+ .modal-content[data-closed] {
135
+ animation: modal-content-out 0.15s ease-in;
136
+ }
137
+
138
+ /* Toast — same animationend-only presence mechanism as Dialog. */
139
+ @keyframes toast-in {
140
+ from {
141
+ opacity: 0;
142
+ transform: translateX(16px);
143
+ }
144
+ to {
145
+ opacity: 1;
146
+ transform: translateX(0);
147
+ }
148
+ }
149
+ @keyframes toast-out {
150
+ from {
151
+ opacity: 1;
152
+ transform: translateX(0);
153
+ }
154
+ to {
155
+ opacity: 0;
156
+ transform: translateX(16px);
157
+ }
158
+ }
159
+ .toast-item[data-opened] {
160
+ animation: toast-in 0.2s ease-out;
161
+ }
162
+ .toast-item[data-closed] {
163
+ animation: toast-out 0.18s ease-in;
164
+ }
165
+
166
+ /* Table row enter/exit fade. */
167
+ .row-enter-active,
168
+ .row-exit-active {
169
+ transition: opacity 0.15s ease-out;
170
+ }
171
+ .row-enter,
172
+ .row-exit-to {
173
+ opacity: 0;
174
+ }
175
+
176
+ /* Drawer / Modal drawer-variant slide-over (Kobalte Dialog presence →
177
+ animationend keyframes, keyed off data-expanded/data-closed like Modal). */
178
+ @keyframes drawer-in {
179
+ from {
180
+ transform: translateX(100%);
181
+ }
182
+ to {
183
+ transform: translateX(0);
184
+ }
185
+ }
186
+ @keyframes drawer-out {
187
+ from {
188
+ transform: translateX(0);
189
+ }
190
+ to {
191
+ transform: translateX(100%);
192
+ }
193
+ }
194
+ .drawer-content[data-expanded] {
195
+ animation: drawer-in 0.28s cubic-bezier(0.16, 1, 0.3, 1);
196
+ }
197
+ .drawer-content[data-closed] {
198
+ animation: drawer-out 0.2s ease-in;
199
+ }
200
+
201
+ /* Reduced motion: resolve near-instantly rather than removing outright, so
202
+ libraries that gate DOM unmount on transitionend/animationend (Kobalte
203
+ Dialog/Toast, solid-transition-group) still fire the event. Add
204
+ `force-motion` to <html> to opt back in (the ⚡ / effects toggle). */
205
+ @media (prefers-reduced-motion: reduce) {
206
+ html:not(.force-motion) *,
207
+ html:not(.force-motion) *::before,
208
+ html:not(.force-motion) *::after {
209
+ animation-duration: 0.001ms !important;
210
+ animation-iteration-count: 1 !important;
211
+ transition-duration: 0.001ms !important;
212
+ scroll-behavior: auto !important;
213
+ }
214
+ }
215
+
216
+ /* A4ui — starfield backdrop styles for <SpaceBackground/>.
217
+ *
218
+ * Extracted from the source project's space-theme.css. Mount SpaceBackground as
219
+ * a single fixed full-viewport layer BEHIND all content (z-index 0), with app
220
+ * content at z-index >= 10 (AppShell already does this). Bundled into
221
+ * `a4ui/styles.css` after the component surfaces. */
222
+
223
+ #space {
224
+ position: fixed;
225
+ inset: 0;
226
+ z-index: 0;
227
+ pointer-events: none;
228
+ overflow: hidden;
229
+ }
230
+
231
+ /* Nebula tinted from the active theme (--primary / --accent / --destructive), so
232
+ switching palettes recolors the whole backdrop. Space's tokens keep it blue. */
233
+ #space .sky {
234
+ position: absolute;
235
+ inset: 0;
236
+ background:
237
+ radial-gradient(1200px 700px at 82% -8%, hsl(var(--primary) / 0.34), transparent 60%),
238
+ radial-gradient(900px 600px at 8% 12%, hsl(var(--accent) / 0.28), transparent 60%),
239
+ radial-gradient(1000px 800px at 50% 120%, hsl(var(--accent) / 0.22), transparent 55%),
240
+ radial-gradient(700px 500px at 30% 55%, hsl(var(--destructive) / 0.12), transparent 60%),
241
+ hsl(var(--background));
242
+ }
243
+ [data-theme='light'] #space .sky {
244
+ background:
245
+ radial-gradient(1100px 680px at 84% -10%, hsl(var(--primary) / 0.22), transparent 60%),
246
+ radial-gradient(900px 600px at 6% 8%, hsl(var(--accent) / 0.2), transparent 60%),
247
+ radial-gradient(1000px 820px at 50% 120%, hsl(var(--accent) / 0.16), transparent 55%),
248
+ radial-gradient(700px 500px at 30% 55%, hsl(var(--destructive) / 0.1), transparent 60%),
249
+ hsl(var(--background));
250
+ }
251
+ @keyframes nebulaShift {
252
+ 0%,
253
+ 100% {
254
+ filter: hue-rotate(0deg);
255
+ }
256
+ 50% {
257
+ filter: hue-rotate(18deg);
258
+ }
259
+ }
260
+
261
+ /* Aurora — dark theme only */
262
+ #space .aurora {
263
+ position: absolute;
264
+ top: -10%;
265
+ left: -10%;
266
+ right: -10%;
267
+ height: 46%;
268
+ background: linear-gradient(
269
+ 180deg,
270
+ hsl(var(--accent) / 0.16),
271
+ hsl(var(--primary) / 0.1) 45%,
272
+ transparent 80%
273
+ );
274
+ filter: blur(40px);
275
+ opacity: 0.55;
276
+ mix-blend-mode: screen;
277
+ }
278
+ [data-theme='light'] #space .aurora {
279
+ display: none;
280
+ }
281
+ @keyframes auroraSway {
282
+ 0%,
283
+ 100% {
284
+ transform: translateX(-2%) scaleY(1);
285
+ opacity: 0.5;
286
+ }
287
+ 50% {
288
+ transform: translateX(3%) scaleY(1.08);
289
+ opacity: 0.68;
290
+ }
291
+ }
292
+
293
+ /* Randomized starfield — each star is generated in SpaceBackground.tsx with a
294
+ random position/size/brightness/bloom, so there's no visible tiling pattern.
295
+ Static (no drift): moving the field behind the frosted cards re-blurs every
296
+ frame and felt laggy; a subset twinkles for life instead. */
297
+ #space #starfield {
298
+ position: absolute;
299
+ inset: 0;
300
+ }
301
+ [data-theme='light'] #space #starfield {
302
+ opacity: 0.85;
303
+ }
304
+ /* A few stars drift smoothly like the satellite: each is a tiny element moving
305
+ via its own transform (GPU-composited, cheap), NOT the whole field. Uses
306
+ `alternate` so it eases out and back with no loop jump. Per-star --dx/--dy. */
307
+ @keyframes starDrift {
308
+ from {
309
+ transform: translate(0, 0);
310
+ }
311
+ to {
312
+ transform: translate(var(--dx, 0), var(--dy, 0));
313
+ }
314
+ }
315
+
316
+ /* Rocket exhaust flame (custom SVG rocket in SpaceBackground.tsx) — flickers. */
317
+ .rk-flame {
318
+ transform-box: fill-box;
319
+ transform-origin: 50% 0%;
320
+ animation: rocketFlame 0.12s ease-in-out infinite alternate;
321
+ }
322
+ @keyframes rocketFlame {
323
+ from {
324
+ transform: scaleY(0.8);
325
+ opacity: 0.85;
326
+ }
327
+ to {
328
+ transform: scaleY(1.06);
329
+ opacity: 1;
330
+ }
331
+ }
332
+
333
+ /* Legacy tiled star layers (kept for parity; the current SpaceBackground scatters
334
+ individual stars into #starfield instead). Sized generously: small dots nearly
335
+ vanish under backdrop-filter blur, so keep them >= 2.5px. */
336
+ #space .stars {
337
+ position: absolute;
338
+ inset: -50%;
339
+ background-repeat: repeat;
340
+ background-image:
341
+ radial-gradient(4px 4px at 20px 30px, hsl(var(--foreground)), transparent),
342
+ radial-gradient(3.6px 3.6px at 120px 90px, hsl(var(--foreground)), transparent),
343
+ radial-gradient(3.2px 3.2px at 210px 160px, hsl(217 91% 78%), transparent),
344
+ radial-gradient(4.8px 4.8px at 300px 60px, hsl(199 89% 82%), transparent),
345
+ radial-gradient(3.4px 3.4px at 380px 220px, hsl(330 80% 84%), transparent),
346
+ radial-gradient(3px 3px at 90px 190px, hsl(var(--foreground)), transparent),
347
+ radial-gradient(2.8px 2.8px at 260px 250px, hsl(48 90% 82%), transparent);
348
+ background-size: 420px 300px;
349
+ opacity: 1;
350
+ animation: drift 140s linear infinite;
351
+ }
352
+ [data-theme='light'] #space .stars {
353
+ background-image:
354
+ radial-gradient(4px 4px at 20px 30px, hsl(38 92% 50%), transparent),
355
+ radial-gradient(3.6px 3.6px at 120px 90px, hsl(42 90% 52%), transparent),
356
+ radial-gradient(3.2px 3.2px at 210px 160px, hsl(32 88% 48%), transparent),
357
+ radial-gradient(4.8px 4.8px at 300px 60px, hsl(45 95% 55%), transparent),
358
+ radial-gradient(3.4px 3.4px at 380px 220px, hsl(28 85% 50%), transparent),
359
+ radial-gradient(3px 3px at 90px 190px, hsl(40 90% 50%), transparent),
360
+ radial-gradient(2.8px 2.8px at 260px 250px, hsl(48 90% 52%), transparent);
361
+ }
362
+ #space .stars.s2 {
363
+ background-size: 640px 480px;
364
+ opacity: 0.85;
365
+ animation-duration: 200s;
366
+ }
367
+ #space .stars.s3 {
368
+ background-size: 260px 190px;
369
+ opacity: 1;
370
+ animation-duration: 95s;
371
+ background-image:
372
+ radial-gradient(6px 6px at 40px 50px, hsl(var(--foreground)), transparent),
373
+ radial-gradient(5.6px 5.6px at 160px 130px, hsl(199 89% 85%), transparent),
374
+ radial-gradient(5.8px 5.8px at 250px 40px, hsl(275 80% 86%), transparent),
375
+ radial-gradient(5px 5px at 90px 20px, hsl(330 85% 85%), transparent);
376
+ }
377
+ [data-theme='light'] #space .stars.s3 {
378
+ opacity: 0.8;
379
+ background-image:
380
+ radial-gradient(6px 6px at 40px 50px, hsl(38 92% 50%), transparent),
381
+ radial-gradient(5.6px 5.6px at 160px 130px, hsl(45 95% 54%), transparent),
382
+ radial-gradient(5.8px 5.8px at 250px 40px, hsl(30 88% 48%), transparent),
383
+ radial-gradient(5px 5px at 90px 20px, hsl(50 92% 55%), transparent);
384
+ }
385
+ @keyframes drift {
386
+ from {
387
+ transform: translate3d(0, 0, 0);
388
+ }
389
+ to {
390
+ transform: translate3d(-420px, -300px, 0);
391
+ }
392
+ }
393
+
394
+ /* Individually-placed twinkling stars */
395
+ .twinkle {
396
+ position: absolute;
397
+ width: 5px;
398
+ height: 5px;
399
+ border-radius: 50%;
400
+ background: hsl(var(--foreground));
401
+ box-shadow: 0 0 14px 3px hsl(var(--foreground) / 0.9);
402
+ animation: twinkle 3.2s ease-in-out infinite;
403
+ }
404
+ [data-theme='light'] .twinkle {
405
+ background: hsl(40 92% 50%);
406
+ box-shadow: 0 0 14px 3px hsl(40 92% 50% / 0.85);
407
+ }
408
+ @keyframes twinkle {
409
+ 0%,
410
+ 100% {
411
+ opacity: 0.25;
412
+ transform: scale(0.6);
413
+ }
414
+ 50% {
415
+ opacity: 1;
416
+ transform: scale(1.15);
417
+ }
418
+ }
419
+
420
+ /* Constellations — thin line art connecting a handful of stars */
421
+ #space .constellation {
422
+ position: absolute;
423
+ opacity: 1;
424
+ }
425
+ [data-theme='light'] #space .constellation {
426
+ opacity: 0.6;
427
+ }
428
+ [data-theme='light'] #space .constellation .cline {
429
+ stroke: hsl(38 92% 50%) !important;
430
+ }
431
+ [data-theme='light'] #space .constellation .cdot {
432
+ fill: hsl(222 47% 20%) !important;
433
+ }
434
+
435
+ /* Planets / moons — decorative, corner-anchored, gentle float */
436
+ .planet {
437
+ border-radius: 50%;
438
+ }
439
+ .planet::after {
440
+ content: '';
441
+ position: absolute;
442
+ inset: -34% -55%;
443
+ border-radius: 50%;
444
+ border: 3px solid hsl(var(--foreground) / 0.18);
445
+ transform: rotate(-24deg);
446
+ }
447
+ .planet-glow {
448
+ border-radius: 50%;
449
+ filter: blur(2px);
450
+ }
451
+ @keyframes floaty {
452
+ 0%,
453
+ 100% {
454
+ transform: translateY(0) rotate(0deg);
455
+ }
456
+ 50% {
457
+ transform: translateY(-14px) rotate(4deg);
458
+ }
459
+ }
460
+ .floaty {
461
+ animation: floaty 12s ease-in-out infinite;
462
+ }
463
+ .floaty.slow {
464
+ animation-duration: 18s;
465
+ }
466
+
467
+ /* Asteroid belt (small drifting rocks) */
468
+ .asteroid {
469
+ border-radius: 40% 55% 50% 45%;
470
+ background: hsl(var(--foreground) / 0.35);
471
+ }
472
+ @keyframes asteroidDrift {
473
+ 0%,
474
+ 100% {
475
+ transform: translate(0, 0) rotate(0deg);
476
+ }
477
+ 50% {
478
+ transform: translate(-8px, 6px) rotate(25deg);
479
+ }
480
+ }
481
+
482
+ /* Shooting star — bright core + tapered glowing trail */
483
+ .shooter {
484
+ position: absolute;
485
+ height: 2.5px;
486
+ border-radius: 999px;
487
+ transform-origin: left center;
488
+ background: linear-gradient(
489
+ 90deg,
490
+ hsla(0, 0%, 100%, 0) 0%,
491
+ hsla(199, 90%, 85%, 0.55) 55%,
492
+ hsla(0, 0%, 100%, 0.98) 100%
493
+ );
494
+ filter: blur(0.2px) drop-shadow(0 0 3px hsla(199, 90%, 80%, 0.5));
495
+ }
496
+ .shooter::before {
497
+ content: '';
498
+ position: absolute;
499
+ right: -2px;
500
+ top: 50%;
501
+ width: 6px;
502
+ height: 6px;
503
+ border-radius: 50%;
504
+ transform: translateY(-50%);
505
+ background: radial-gradient(circle, #fff 0%, hsla(199, 95%, 88%, 0.95) 50%, transparent 75%);
506
+ box-shadow:
507
+ 0 0 8px 2px #fff,
508
+ 0 0 20px 7px hsla(199, 90%, 75%, 0.85),
509
+ 0 0 38px 14px hsla(199, 90%, 60%, 0.4);
510
+ }
511
+ .shooter::after {
512
+ content: '';
513
+ position: absolute;
514
+ left: 0;
515
+ top: 50%;
516
+ width: 55%;
517
+ height: 1px;
518
+ transform: translateY(-50%);
519
+ background: hsla(199, 85%, 92%, 0.65);
520
+ filter: blur(2px);
521
+ }
522
+
523
+ /* Satellite (drifting glyph, e.g. a lucide "satellite" icon) */
524
+ @keyframes satelliteDrift {
525
+ from {
526
+ transform: translate(0, 0) rotate(-18deg);
527
+ }
528
+ to {
529
+ transform: translate(126vw, 34vh) rotate(-18deg);
530
+ }
531
+ }
532
+ #satellite {
533
+ animation: satelliteDrift 46s linear infinite;
534
+ }
535
+
536
+ /* Cursor-following ambient glow (nebula that trails the pointer) */
537
+ #cursorGlow {
538
+ border-radius: 50%;
539
+ transform: translate(-50%, -50%);
540
+ background: radial-gradient(circle, hsl(217 91% 60% / 0.1), transparent 70%);
541
+ opacity: 0;
542
+ transition: opacity 0.4s ease;
543
+ }
544
+
545
+ @media (prefers-reduced-motion: reduce) {
546
+ html:not(.force-motion) #space .stars,
547
+ html:not(.force-motion) .twinkle,
548
+ html:not(.force-motion) .floaty,
549
+ html:not(.force-motion) .shooter,
550
+ html:not(.force-motion) #satellite,
551
+ html:not(.force-motion) .asteroid {
552
+ animation: none !important;
553
+ }
554
+ html:not(.force-motion) #cursorGlow {
555
+ display: none !important;
556
+ }
557
+ html:not(.force-motion) #space .sky,
558
+ html:not(.force-motion) #space .aurora {
559
+ animation: none !important;
560
+ }
561
+ .card.glow-edge::before {
562
+ display: none;
563
+ }
564
+ }
565
+
566
+ /* ---- Generic themed scenery (non-space themes) --------------------------
567
+ A themed nebula (same token-tinted gradients as the starfield) plus a field
568
+ of slowly floating motif glyphs — <ThemedScenery motifs={[...]} />. Lighter
569
+ than the bespoke SpaceBackground so every extra theme costs almost nothing. */
570
+ #scenery {
571
+ position: fixed;
572
+ inset: 0;
573
+ z-index: 0;
574
+ pointer-events: none;
575
+ overflow: hidden;
576
+ }
577
+ #scenery .themed-sky {
578
+ position: absolute;
579
+ inset: 0;
580
+ animation: sceneryPulse 16s ease-in-out infinite;
581
+ background:
582
+ radial-gradient(1200px 700px at 82% -8%, hsl(var(--primary) / 0.34), transparent 60%),
583
+ radial-gradient(900px 600px at 8% 12%, hsl(var(--accent) / 0.28), transparent 60%),
584
+ radial-gradient(1000px 800px at 50% 120%, hsl(var(--accent) / 0.22), transparent 55%),
585
+ radial-gradient(700px 500px at 30% 55%, hsl(var(--destructive) / 0.12), transparent 60%),
586
+ hsl(var(--background));
587
+ }
588
+ [data-theme='light'] #scenery .themed-sky {
589
+ background:
590
+ radial-gradient(1100px 680px at 84% -10%, hsl(var(--primary) / 0.22), transparent 60%),
591
+ radial-gradient(900px 600px at 6% 8%, hsl(var(--accent) / 0.2), transparent 60%),
592
+ radial-gradient(1000px 820px at 50% 120%, hsl(var(--accent) / 0.16), transparent 55%),
593
+ radial-gradient(700px 500px at 30% 55%, hsl(var(--destructive) / 0.1), transparent 60%),
594
+ hsl(var(--background));
595
+ }
596
+ #scenery .motif {
597
+ position: absolute;
598
+ user-select: none;
599
+ will-change: transform;
600
+ animation: motifFloat var(--dur, 9s) ease-in-out var(--delay, 0s) infinite;
601
+ }
602
+ @keyframes motifFloat {
603
+ 0%,
604
+ 100% {
605
+ transform: translateY(0) rotate(var(--r, 0deg));
606
+ }
607
+ 50% {
608
+ transform: translateY(-16px) rotate(calc(var(--r, 0deg) + 5deg));
609
+ }
610
+ }
611
+ /* Subtle nebula "breathing" so the themed backdrop isn't static. */
612
+ @keyframes sceneryPulse {
613
+ 0%,
614
+ 100% {
615
+ filter: brightness(1);
616
+ }
617
+ 50% {
618
+ filter: brightness(1.06);
619
+ }
620
+ }
621
+ @media (prefers-reduced-motion: reduce) {
622
+ html:not(.force-motion) #scenery .motif,
623
+ html:not(.force-motion) #scenery .themed-sky {
624
+ animation: none !important;
625
+ }
626
+ }
627
+
628
+ /* ---- Snow scenery (the "snow" theme) ------------------------------------ */
629
+ #snow,
630
+ #xmas {
631
+ position: fixed;
632
+ inset: 0;
633
+ z-index: 0;
634
+ pointer-events: none;
635
+ overflow: hidden;
636
+ }
637
+ #snow .snow-sky {
638
+ position: absolute;
639
+ inset: 0;
640
+ background:
641
+ radial-gradient(1200px 800px at 50% -12%, hsl(var(--primary) / 0.18), transparent 60%),
642
+ radial-gradient(900px 700px at 82% 8%, hsl(var(--accent) / 0.14), transparent 60%), hsl(var(--background));
643
+ }
644
+ /* Snowflakes (shared by snow + christmas). Each drifts down with a sideways sway. */
645
+ #snow .flake,
646
+ #xmas .flake {
647
+ position: absolute;
648
+ top: -12px;
649
+ border-radius: 50%;
650
+ background: #fff;
651
+ box-shadow: 0 0 4px rgba(255, 255, 255, 0.6);
652
+ will-change: transform;
653
+ }
654
+ [data-theme='light'] #snow .flake,
655
+ [data-theme='light'] #xmas .flake {
656
+ background: hsl(205 45% 82%);
657
+ box-shadow: 0 0 3px hsl(205 45% 72% / 0.6);
658
+ }
659
+ @keyframes snowFall {
660
+ 0% {
661
+ transform: translate(0, -12px);
662
+ }
663
+ 100% {
664
+ transform: translate(var(--sway, 12px), 112vh);
665
+ }
666
+ }
667
+ /* Snow settling at the bottom + a frosted cap on cards (snow theme only). */
668
+ #snow .snow-bank {
669
+ position: absolute;
670
+ inset: auto 0 0 0;
671
+ height: 9vh;
672
+ background: linear-gradient(to top, hsl(0 0% 100% / 0.5), transparent);
673
+ filter: blur(2px);
674
+ }
675
+ [data-theme='light'] #snow .snow-bank {
676
+ background: linear-gradient(to top, hsl(0 0% 100% / 0.95), transparent);
677
+ }
678
+ [data-scene='snow'] .card::after {
679
+ content: '';
680
+ position: absolute;
681
+ top: -3px;
682
+ left: 10px;
683
+ right: 10px;
684
+ height: 5px;
685
+ border-radius: 9999px;
686
+ background: hsl(0 0% 100% / 0.8);
687
+ filter: blur(1.5px);
688
+ pointer-events: none;
689
+ }
690
+
691
+ /* ---- Christmas scenery (the "christmas" theme) -------------------------- */
692
+ #xmas .xmas-sky {
693
+ position: absolute;
694
+ inset: 0;
695
+ background:
696
+ radial-gradient(1000px 700px at 50% -12%, hsl(var(--primary) / 0.14), transparent 55%),
697
+ radial-gradient(900px 600px at 15% 16%, hsl(var(--accent) / 0.16), transparent 60%),
698
+ hsl(var(--background));
699
+ }
700
+ #xmas .light {
701
+ position: absolute;
702
+ top: 10px;
703
+ width: 9px;
704
+ height: 9px;
705
+ border-radius: 50%;
706
+ animation: twinkleLight 2.2s ease-in-out infinite;
707
+ }
708
+ @keyframes twinkleLight {
709
+ 0%,
710
+ 100% {
711
+ opacity: 1;
712
+ box-shadow: 0 0 9px currentColor;
713
+ }
714
+ 50% {
715
+ opacity: 0.35;
716
+ box-shadow: 0 0 3px currentColor;
717
+ }
718
+ }
719
+ @media (prefers-reduced-motion: reduce) {
720
+ html:not(.force-motion) #snow .flake,
721
+ html:not(.force-motion) #xmas .flake,
722
+ html:not(.force-motion) #xmas .light {
723
+ animation: none !important;
724
+ }
725
+ }
726
+
727
+ *, ::before, ::after {
728
+ --tw-border-spacing-x: 0;
729
+ --tw-border-spacing-y: 0;
730
+ --tw-translate-x: 0;
731
+ --tw-translate-y: 0;
732
+ --tw-rotate: 0;
733
+ --tw-skew-x: 0;
734
+ --tw-skew-y: 0;
735
+ --tw-scale-x: 1;
736
+ --tw-scale-y: 1;
737
+ --tw-pan-x: ;
738
+ --tw-pan-y: ;
739
+ --tw-pinch-zoom: ;
740
+ --tw-scroll-snap-strictness: proximity;
741
+ --tw-gradient-from-position: ;
742
+ --tw-gradient-via-position: ;
743
+ --tw-gradient-to-position: ;
744
+ --tw-ordinal: ;
745
+ --tw-slashed-zero: ;
746
+ --tw-numeric-figure: ;
747
+ --tw-numeric-spacing: ;
748
+ --tw-numeric-fraction: ;
749
+ --tw-ring-inset: ;
750
+ --tw-ring-offset-width: 0px;
751
+ --tw-ring-offset-color: #fff;
752
+ --tw-ring-color: rgb(59 130 246 / 0.5);
753
+ --tw-ring-offset-shadow: 0 0 #0000;
754
+ --tw-ring-shadow: 0 0 #0000;
755
+ --tw-shadow: 0 0 #0000;
756
+ --tw-shadow-colored: 0 0 #0000;
757
+ --tw-blur: ;
758
+ --tw-brightness: ;
759
+ --tw-contrast: ;
760
+ --tw-grayscale: ;
761
+ --tw-hue-rotate: ;
762
+ --tw-invert: ;
763
+ --tw-saturate: ;
764
+ --tw-sepia: ;
765
+ --tw-drop-shadow: ;
766
+ --tw-backdrop-blur: ;
767
+ --tw-backdrop-brightness: ;
768
+ --tw-backdrop-contrast: ;
769
+ --tw-backdrop-grayscale: ;
770
+ --tw-backdrop-hue-rotate: ;
771
+ --tw-backdrop-invert: ;
772
+ --tw-backdrop-opacity: ;
773
+ --tw-backdrop-saturate: ;
774
+ --tw-backdrop-sepia: ;
775
+ --tw-contain-size: ;
776
+ --tw-contain-layout: ;
777
+ --tw-contain-paint: ;
778
+ --tw-contain-style: ;
779
+ }
780
+
781
+ ::backdrop {
782
+ --tw-border-spacing-x: 0;
783
+ --tw-border-spacing-y: 0;
784
+ --tw-translate-x: 0;
785
+ --tw-translate-y: 0;
786
+ --tw-rotate: 0;
787
+ --tw-skew-x: 0;
788
+ --tw-skew-y: 0;
789
+ --tw-scale-x: 1;
790
+ --tw-scale-y: 1;
791
+ --tw-pan-x: ;
792
+ --tw-pan-y: ;
793
+ --tw-pinch-zoom: ;
794
+ --tw-scroll-snap-strictness: proximity;
795
+ --tw-gradient-from-position: ;
796
+ --tw-gradient-via-position: ;
797
+ --tw-gradient-to-position: ;
798
+ --tw-ordinal: ;
799
+ --tw-slashed-zero: ;
800
+ --tw-numeric-figure: ;
801
+ --tw-numeric-spacing: ;
802
+ --tw-numeric-fraction: ;
803
+ --tw-ring-inset: ;
804
+ --tw-ring-offset-width: 0px;
805
+ --tw-ring-offset-color: #fff;
806
+ --tw-ring-color: rgb(59 130 246 / 0.5);
807
+ --tw-ring-offset-shadow: 0 0 #0000;
808
+ --tw-ring-shadow: 0 0 #0000;
809
+ --tw-shadow: 0 0 #0000;
810
+ --tw-shadow-colored: 0 0 #0000;
811
+ --tw-blur: ;
812
+ --tw-brightness: ;
813
+ --tw-contrast: ;
814
+ --tw-grayscale: ;
815
+ --tw-hue-rotate: ;
816
+ --tw-invert: ;
817
+ --tw-saturate: ;
818
+ --tw-sepia: ;
819
+ --tw-drop-shadow: ;
820
+ --tw-backdrop-blur: ;
821
+ --tw-backdrop-brightness: ;
822
+ --tw-backdrop-contrast: ;
823
+ --tw-backdrop-grayscale: ;
824
+ --tw-backdrop-hue-rotate: ;
825
+ --tw-backdrop-invert: ;
826
+ --tw-backdrop-opacity: ;
827
+ --tw-backdrop-saturate: ;
828
+ --tw-backdrop-sepia: ;
829
+ --tw-contain-size: ;
830
+ --tw-contain-layout: ;
831
+ --tw-contain-paint: ;
832
+ --tw-contain-style: ;
833
+ }/*
834
+ ! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
835
+ *//*
836
+ 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
837
+ 2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
838
+ */
839
+
840
+ *,
841
+ ::before,
842
+ ::after {
843
+ box-sizing: border-box; /* 1 */
844
+ border-width: 0; /* 2 */
845
+ border-style: solid; /* 2 */
846
+ border-color: #e5e7eb; /* 2 */
847
+ }
848
+
849
+ ::before,
850
+ ::after {
851
+ --tw-content: '';
852
+ }
853
+
854
+ /*
855
+ 1. Use a consistent sensible line-height in all browsers.
856
+ 2. Prevent adjustments of font size after orientation changes in iOS.
857
+ 3. Use a more readable tab size.
858
+ 4. Use the user's configured `sans` font-family by default.
859
+ 5. Use the user's configured `sans` font-feature-settings by default.
860
+ 6. Use the user's configured `sans` font-variation-settings by default.
861
+ 7. Disable tap highlights on iOS
862
+ */
863
+
864
+ html,
865
+ :host {
866
+ line-height: 1.5; /* 1 */
867
+ -webkit-text-size-adjust: 100%; /* 2 */
868
+ -moz-tab-size: 4; /* 3 */
869
+ tab-size: 4; /* 3 */
870
+ font-family: "IBM Plex Sans", ui-sans-serif, system-ui, sans-serif; /* 4 */
871
+ font-feature-settings: normal; /* 5 */
872
+ font-variation-settings: normal; /* 6 */
873
+ -webkit-tap-highlight-color: transparent; /* 7 */
874
+ }
875
+
876
+ /*
877
+ 1. Remove the margin in all browsers.
878
+ 2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
879
+ */
880
+
881
+ body {
882
+ margin: 0; /* 1 */
883
+ line-height: inherit; /* 2 */
884
+ }
885
+
886
+ /*
887
+ 1. Add the correct height in Firefox.
888
+ 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
889
+ 3. Ensure horizontal rules are visible by default.
890
+ */
891
+
892
+ hr {
893
+ height: 0; /* 1 */
894
+ color: inherit; /* 2 */
895
+ border-top-width: 1px; /* 3 */
896
+ }
897
+
898
+ /*
899
+ Add the correct text decoration in Chrome, Edge, and Safari.
900
+ */
901
+
902
+ abbr:where([title]) {
903
+ text-decoration: underline dotted;
904
+ }
905
+
906
+ /*
907
+ Remove the default font size and weight for headings.
908
+ */
909
+
910
+ h1,
911
+ h2,
912
+ h3,
913
+ h4,
914
+ h5,
915
+ h6 {
916
+ font-size: inherit;
917
+ font-weight: inherit;
918
+ }
919
+
920
+ /*
921
+ Reset links to optimize for opt-in styling instead of opt-out.
922
+ */
923
+
924
+ a {
925
+ color: inherit;
926
+ text-decoration: inherit;
927
+ }
928
+
929
+ /*
930
+ Add the correct font weight in Edge and Safari.
931
+ */
932
+
933
+ b,
934
+ strong {
935
+ font-weight: bolder;
936
+ }
937
+
938
+ /*
939
+ 1. Use the user's configured `mono` font-family by default.
940
+ 2. Use the user's configured `mono` font-feature-settings by default.
941
+ 3. Use the user's configured `mono` font-variation-settings by default.
942
+ 4. Correct the odd `em` font sizing in all browsers.
943
+ */
944
+
945
+ code,
946
+ kbd,
947
+ samp,
948
+ pre {
949
+ font-family: "IBM Plex Mono", ui-monospace, monospace; /* 1 */
950
+ font-feature-settings: normal; /* 2 */
951
+ font-variation-settings: normal; /* 3 */
952
+ font-size: 1em; /* 4 */
953
+ }
954
+
955
+ /*
956
+ Add the correct font size in all browsers.
957
+ */
958
+
959
+ small {
960
+ font-size: 80%;
961
+ }
962
+
963
+ /*
964
+ Prevent `sub` and `sup` elements from affecting the line height in all browsers.
965
+ */
966
+
967
+ sub,
968
+ sup {
969
+ font-size: 75%;
970
+ line-height: 0;
971
+ position: relative;
972
+ vertical-align: baseline;
973
+ }
974
+
975
+ sub {
976
+ bottom: -0.25em;
977
+ }
978
+
979
+ sup {
980
+ top: -0.5em;
981
+ }
982
+
983
+ /*
984
+ 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
985
+ 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
986
+ 3. Remove gaps between table borders by default.
987
+ */
988
+
989
+ table {
990
+ text-indent: 0; /* 1 */
991
+ border-color: inherit; /* 2 */
992
+ border-collapse: collapse; /* 3 */
993
+ }
994
+
995
+ /*
996
+ 1. Change the font styles in all browsers.
997
+ 2. Remove the margin in Firefox and Safari.
998
+ 3. Remove default padding in all browsers.
999
+ */
1000
+
1001
+ button,
1002
+ input,
1003
+ optgroup,
1004
+ select,
1005
+ textarea {
1006
+ font-family: inherit; /* 1 */
1007
+ font-feature-settings: inherit; /* 1 */
1008
+ font-variation-settings: inherit; /* 1 */
1009
+ font-size: 100%; /* 1 */
1010
+ font-weight: inherit; /* 1 */
1011
+ line-height: inherit; /* 1 */
1012
+ letter-spacing: inherit; /* 1 */
1013
+ color: inherit; /* 1 */
1014
+ margin: 0; /* 2 */
1015
+ padding: 0; /* 3 */
1016
+ }
1017
+
1018
+ /*
1019
+ Remove the inheritance of text transform in Edge and Firefox.
1020
+ */
1021
+
1022
+ button,
1023
+ select {
1024
+ text-transform: none;
1025
+ }
1026
+
1027
+ /*
1028
+ 1. Correct the inability to style clickable types in iOS and Safari.
1029
+ 2. Remove default button styles.
1030
+ */
1031
+
1032
+ button,
1033
+ input:where([type='button']),
1034
+ input:where([type='reset']),
1035
+ input:where([type='submit']) {
1036
+ -webkit-appearance: button; /* 1 */
1037
+ background-color: transparent; /* 2 */
1038
+ background-image: none; /* 2 */
1039
+ }
1040
+
1041
+ /*
1042
+ Use the modern Firefox focus style for all focusable elements.
1043
+ */
1044
+
1045
+ :-moz-focusring {
1046
+ outline: auto;
1047
+ }
1048
+
1049
+ /*
1050
+ Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
1051
+ */
1052
+
1053
+ :-moz-ui-invalid {
1054
+ box-shadow: none;
1055
+ }
1056
+
1057
+ /*
1058
+ Add the correct vertical alignment in Chrome and Firefox.
1059
+ */
1060
+
1061
+ progress {
1062
+ vertical-align: baseline;
1063
+ }
1064
+
1065
+ /*
1066
+ Correct the cursor style of increment and decrement buttons in Safari.
1067
+ */
1068
+
1069
+ ::-webkit-inner-spin-button,
1070
+ ::-webkit-outer-spin-button {
1071
+ height: auto;
1072
+ }
1073
+
1074
+ /*
1075
+ 1. Correct the odd appearance in Chrome and Safari.
1076
+ 2. Correct the outline style in Safari.
1077
+ */
1078
+
1079
+ [type='search'] {
1080
+ -webkit-appearance: textfield; /* 1 */
1081
+ outline-offset: -2px; /* 2 */
1082
+ }
1083
+
1084
+ /*
1085
+ Remove the inner padding in Chrome and Safari on macOS.
1086
+ */
1087
+
1088
+ ::-webkit-search-decoration {
1089
+ -webkit-appearance: none;
1090
+ }
1091
+
1092
+ /*
1093
+ 1. Correct the inability to style clickable types in iOS and Safari.
1094
+ 2. Change font properties to `inherit` in Safari.
1095
+ */
1096
+
1097
+ ::-webkit-file-upload-button {
1098
+ -webkit-appearance: button; /* 1 */
1099
+ font: inherit; /* 2 */
1100
+ }
1101
+
1102
+ /*
1103
+ Add the correct display in Chrome and Safari.
1104
+ */
1105
+
1106
+ summary {
1107
+ display: list-item;
1108
+ }
1109
+
1110
+ /*
1111
+ Removes the default spacing and border for appropriate elements.
1112
+ */
1113
+
1114
+ blockquote,
1115
+ dl,
1116
+ dd,
1117
+ h1,
1118
+ h2,
1119
+ h3,
1120
+ h4,
1121
+ h5,
1122
+ h6,
1123
+ hr,
1124
+ figure,
1125
+ p,
1126
+ pre {
1127
+ margin: 0;
1128
+ }
1129
+
1130
+ fieldset {
1131
+ margin: 0;
1132
+ padding: 0;
1133
+ }
1134
+
1135
+ legend {
1136
+ padding: 0;
1137
+ }
1138
+
1139
+ ol,
1140
+ ul,
1141
+ menu {
1142
+ list-style: none;
1143
+ margin: 0;
1144
+ padding: 0;
1145
+ }
1146
+
1147
+ /*
1148
+ Reset default styling for dialogs.
1149
+ */
1150
+ dialog {
1151
+ padding: 0;
1152
+ }
1153
+
1154
+ /*
1155
+ Prevent resizing textareas horizontally by default.
1156
+ */
1157
+
1158
+ textarea {
1159
+ resize: vertical;
1160
+ }
1161
+
1162
+ /*
1163
+ 1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
1164
+ 2. Set the default placeholder color to the user's configured gray 400 color.
1165
+ */
1166
+
1167
+ input::placeholder,
1168
+ textarea::placeholder {
1169
+ opacity: 1; /* 1 */
1170
+ color: #9ca3af; /* 2 */
1171
+ }
1172
+
1173
+ /*
1174
+ Set the default cursor for buttons.
1175
+ */
1176
+
1177
+ button,
1178
+ [role="button"] {
1179
+ cursor: pointer;
1180
+ }
1181
+
1182
+ /*
1183
+ Make sure disabled buttons don't get the pointer cursor.
1184
+ */
1185
+ :disabled {
1186
+ cursor: default;
1187
+ }
1188
+
1189
+ /*
1190
+ 1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
1191
+ 2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
1192
+ This can trigger a poorly considered lint error in some tools but is included by design.
1193
+ */
1194
+
1195
+ img,
1196
+ svg,
1197
+ video,
1198
+ canvas,
1199
+ audio,
1200
+ iframe,
1201
+ embed,
1202
+ object {
1203
+ display: block; /* 1 */
1204
+ vertical-align: middle; /* 2 */
1205
+ }
1206
+
1207
+ /*
1208
+ Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
1209
+ */
1210
+
1211
+ img,
1212
+ video {
1213
+ max-width: 100%;
1214
+ height: auto;
1215
+ }
1216
+
1217
+ /* Make elements with the HTML hidden attribute stay hidden by default */
1218
+ [hidden]:where(:not([hidden="until-found"])) {
1219
+ display: none;
1220
+ }
1221
+ .\!container {
1222
+ width: 100% !important;
1223
+ }
1224
+ .container {
1225
+ width: 100%;
1226
+ }
1227
+ @media (min-width: 640px) {
1228
+
1229
+ .\!container {
1230
+ max-width: 640px !important;
1231
+ }
1232
+
1233
+ .container {
1234
+ max-width: 640px;
1235
+ }
1236
+ }
1237
+ @media (min-width: 768px) {
1238
+
1239
+ .\!container {
1240
+ max-width: 768px !important;
1241
+ }
1242
+
1243
+ .container {
1244
+ max-width: 768px;
1245
+ }
1246
+ }
1247
+ @media (min-width: 1024px) {
1248
+
1249
+ .\!container {
1250
+ max-width: 1024px !important;
1251
+ }
1252
+
1253
+ .container {
1254
+ max-width: 1024px;
1255
+ }
1256
+ }
1257
+ @media (min-width: 1280px) {
1258
+
1259
+ .\!container {
1260
+ max-width: 1280px !important;
1261
+ }
1262
+
1263
+ .container {
1264
+ max-width: 1280px;
1265
+ }
1266
+ }
1267
+ @media (min-width: 1536px) {
1268
+
1269
+ .\!container {
1270
+ max-width: 1536px !important;
1271
+ }
1272
+
1273
+ .container {
1274
+ max-width: 1536px;
1275
+ }
1276
+ }
1277
+ .card {
1278
+ position: relative;
1279
+ background: hsl(var(--card) / 0.55);
1280
+ backdrop-filter: blur(8px) saturate(150%);
1281
+ -webkit-backdrop-filter: blur(8px) saturate(150%);
1282
+ border: 1px solid hsl(var(--foreground) / 0.16);
1283
+ border-radius: var(--radius-xl, 1rem);
1284
+ box-shadow: 0 1px 2px hsl(var(--shadow) / 0.05), 0 4px 12px hsl(var(--shadow) / 0.1);
1285
+ transition: transform .25s cubic-bezier(.16,1,.3,1), box-shadow .25s ease, border-color .2s ease;
1286
+ }
1287
+ [data-theme='light'] .card {
1288
+ background: hsl(var(--card) / 0.72);
1289
+ border: 1px solid hsl(var(--border));
1290
+ }
1291
+ .card.glow-edge::before {
1292
+ content: '';
1293
+ position: absolute;
1294
+ inset: 0;
1295
+ border-radius: inherit;
1296
+ padding: 1px;
1297
+ background: radial-gradient(220px circle at var(--mx, 50%) var(--my, 50%), hsl(var(--primary) / .9), hsl(var(--accent) / .25) 45%, transparent 70%);
1298
+ -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
1299
+ -webkit-mask-composite: xor;
1300
+ mask-composite: exclude;
1301
+ opacity: 0;
1302
+ transition: opacity .35s ease;
1303
+ pointer-events: none;
1304
+ }
1305
+ .card.glow-edge:hover::before {
1306
+ opacity: 1;
1307
+ }
1308
+ @media (prefers-reduced-motion: reduce) {
1309
+
1310
+ .card.glow-edge::before {
1311
+ display: none;
1312
+ }
1313
+ }
1314
+ [data-theme='light'] .card.glow-edge::before {
1315
+ padding: 1.5px;
1316
+ background: radial-gradient(240px circle at var(--mx, 50%) var(--my, 50%), hsl(var(--primary) / 1), hsl(var(--accent) / 0.55) 42%, transparent 72%);
1317
+ }
1318
+ .a4-field {
1319
+ transition: box-shadow .16s ease, border-color .16s ease;
1320
+ }
1321
+ .a4-field:focus, .a4-field:focus-within {
1322
+ outline: none;
1323
+ border-color: hsl(var(--ring));
1324
+ box-shadow: 0 0 0 3px hsl(var(--ring) / 0.22), 0 0 16px -2px hsl(var(--ring) / 0.55);
1325
+ }
1326
+ .a4-field[aria-invalid="true"], .a4-field[data-invalid] {
1327
+ border-color: hsl(var(--destructive));
1328
+ box-shadow: 0 0 0 2px hsl(var(--destructive) / 0.18);
1329
+ }
1330
+ .a4-field[aria-invalid="true"]:focus, .a4-field[data-invalid]:focus {
1331
+ outline: none;
1332
+ box-shadow: 0 0 0 3px hsl(var(--destructive) / 0.3), 0 0 16px -2px hsl(var(--destructive) / 0.6);
1333
+ }
1334
+ [data-theme='light'] .a4-field:focus, [data-theme='light'] .a4-field:focus-within {
1335
+ box-shadow: 0 0 0 3px hsl(var(--ring) / 0.3), 0 0 18px -2px hsl(var(--ring) / 0.65);
1336
+ }
1337
+ .bg-glass {
1338
+ background: hsl(var(--card) / 0.72);
1339
+ backdrop-filter: blur(14px) saturate(160%);
1340
+ -webkit-backdrop-filter: blur(14px) saturate(160%);
1341
+ border: 1px solid hsl(var(--foreground) / 0.14);
1342
+ }
1343
+ [data-theme='light'] .bg-glass {
1344
+ background: hsl(var(--card) / 0.85);
1345
+ border: 1px solid hsl(var(--border));
1346
+ }
1347
+ html.calm .glow-edge::before {
1348
+ display: none !important;
1349
+ }
1350
+ html.calm .badge {
1351
+ background-color: hsl(var(--muted)) !important;
1352
+ color: hsl(var(--foreground)) !important;
1353
+ --tw-ring-color: hsl(var(--border)) !important;
1354
+ }
1355
+ html.calm .card, html.calm .bg-glass {
1356
+ background: hsl(var(--card));
1357
+ backdrop-filter: none;
1358
+ -webkit-backdrop-filter: none;
1359
+ }
1360
+ html.calm .tile-glass {
1361
+ background: hsl(var(--muted));
1362
+ border-color: hsl(var(--border));
1363
+ }
1364
+ @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
1365
+
1366
+ .card {
1367
+ background: hsl(var(--card) / 0.92);
1368
+ }
1369
+
1370
+ [data-theme='light'] .card {
1371
+ background: hsl(var(--card) / 0.96);
1372
+ }
1373
+
1374
+ .bg-glass {
1375
+ background: hsl(var(--card) / 0.95);
1376
+ }
1377
+
1378
+ [data-theme='light'] .bg-glass {
1379
+ background: hsl(var(--card) / 0.97);
1380
+ }
1381
+ }
1382
+ @media (prefers-reduced-transparency: reduce) {
1383
+
1384
+ .card {
1385
+ background: hsl(var(--card) / 0.92);
1386
+ }
1387
+
1388
+ [data-theme='light'] .card {
1389
+ background: hsl(var(--card) / 0.96);
1390
+ }
1391
+
1392
+ .bg-glass {
1393
+ background: hsl(var(--card) / 0.95);
1394
+ }
1395
+
1396
+ [data-theme='light'] .bg-glass {
1397
+ background: hsl(var(--card) / 0.97);
1398
+ }
1399
+ }
1400
+ .pointer-events-none {
1401
+ pointer-events: none;
1402
+ }
1403
+ .visible {
1404
+ visibility: visible;
1405
+ }
1406
+ .invisible {
1407
+ visibility: hidden;
1408
+ }
1409
+ .collapse {
1410
+ visibility: collapse;
1411
+ }
1412
+ .static {
1413
+ position: static;
1414
+ }
1415
+ .fixed {
1416
+ position: fixed;
1417
+ }
1418
+ .absolute {
1419
+ position: absolute;
1420
+ }
1421
+ .relative {
1422
+ position: relative;
1423
+ }
1424
+ .sticky {
1425
+ position: sticky;
1426
+ }
1427
+ .inset-0 {
1428
+ inset: 0px;
1429
+ }
1430
+ .inset-x-0 {
1431
+ left: 0px;
1432
+ right: 0px;
1433
+ }
1434
+ .-bottom-6 {
1435
+ bottom: -1.5rem;
1436
+ }
1437
+ .-right-1 {
1438
+ right: -0.25rem;
1439
+ }
1440
+ .-right-9 {
1441
+ right: -2.25rem;
1442
+ }
1443
+ .-top-1 {
1444
+ top: -0.25rem;
1445
+ }
1446
+ .-top-1\.5 {
1447
+ top: -0.375rem;
1448
+ }
1449
+ .bottom-0 {
1450
+ bottom: 0px;
1451
+ }
1452
+ .bottom-4 {
1453
+ bottom: 1rem;
1454
+ }
1455
+ .bottom-6 {
1456
+ bottom: 1.5rem;
1457
+ }
1458
+ .left-2 {
1459
+ left: 0.5rem;
1460
+ }
1461
+ .left-6 {
1462
+ left: 1.5rem;
1463
+ }
1464
+ .left-\[calc\(0\.5rem\+0\.375rem\)\] {
1465
+ left: calc(0.5rem + 0.375rem);
1466
+ }
1467
+ .right-2 {
1468
+ right: 0.5rem;
1469
+ }
1470
+ .right-4 {
1471
+ right: 1rem;
1472
+ }
1473
+ .right-6 {
1474
+ right: 1.5rem;
1475
+ }
1476
+ .top-0 {
1477
+ top: 0px;
1478
+ }
1479
+ .top-1\/2 {
1480
+ top: 50%;
1481
+ }
1482
+ .top-2 {
1483
+ top: 0.5rem;
1484
+ }
1485
+ .top-3 {
1486
+ top: 0.75rem;
1487
+ }
1488
+ .top-3\.5 {
1489
+ top: 0.875rem;
1490
+ }
1491
+ .top-\[14vh\] {
1492
+ top: 14vh;
1493
+ }
1494
+ .isolate {
1495
+ isolation: isolate;
1496
+ }
1497
+ .z-0 {
1498
+ z-index: 0;
1499
+ }
1500
+ .z-10 {
1501
+ z-index: 10;
1502
+ }
1503
+ .z-40 {
1504
+ z-index: 40;
1505
+ }
1506
+ .z-50 {
1507
+ z-index: 50;
1508
+ }
1509
+ .z-\[100\] {
1510
+ z-index: 100;
1511
+ }
1512
+ .z-\[101\] {
1513
+ z-index: 101;
1514
+ }
1515
+ .z-\[1\] {
1516
+ z-index: 1;
1517
+ }
1518
+ .m-0 {
1519
+ margin: 0px;
1520
+ }
1521
+ .mx-2 {
1522
+ margin-left: 0.5rem;
1523
+ margin-right: 0.5rem;
1524
+ }
1525
+ .mx-4 {
1526
+ margin-left: 1rem;
1527
+ margin-right: 1rem;
1528
+ }
1529
+ .mx-auto {
1530
+ margin-left: auto;
1531
+ margin-right: auto;
1532
+ }
1533
+ .my-3 {
1534
+ margin-top: 0.75rem;
1535
+ margin-bottom: 0.75rem;
1536
+ }
1537
+ .-ml-2 {
1538
+ margin-left: -0.5rem;
1539
+ }
1540
+ .-mt-1 {
1541
+ margin-top: -0.25rem;
1542
+ }
1543
+ .mb-1 {
1544
+ margin-bottom: 0.25rem;
1545
+ }
1546
+ .mb-2 {
1547
+ margin-bottom: 0.5rem;
1548
+ }
1549
+ .ml-4 {
1550
+ margin-left: 1rem;
1551
+ }
1552
+ .mt-0\.5 {
1553
+ margin-top: 0.125rem;
1554
+ }
1555
+ .mt-1 {
1556
+ margin-top: 0.25rem;
1557
+ }
1558
+ .mt-2 {
1559
+ margin-top: 0.5rem;
1560
+ }
1561
+ .mt-3 {
1562
+ margin-top: 0.75rem;
1563
+ }
1564
+ .mt-4 {
1565
+ margin-top: 1rem;
1566
+ }
1567
+ .mt-6 {
1568
+ margin-top: 1.5rem;
1569
+ }
1570
+ .mt-auto {
1571
+ margin-top: auto;
1572
+ }
1573
+ .line-clamp-1 {
1574
+ overflow: hidden;
1575
+ display: -webkit-box;
1576
+ -webkit-box-orient: vertical;
1577
+ -webkit-line-clamp: 1;
1578
+ }
1579
+ .block {
1580
+ display: block;
1581
+ }
1582
+ .inline-block {
1583
+ display: inline-block;
1584
+ }
1585
+ .inline {
1586
+ display: inline;
1587
+ }
1588
+ .flex {
1589
+ display: flex;
1590
+ }
1591
+ .inline-flex {
1592
+ display: inline-flex;
1593
+ }
1594
+ .table {
1595
+ display: table;
1596
+ }
1597
+ .grid {
1598
+ display: grid;
1599
+ }
1600
+ .inline-grid {
1601
+ display: inline-grid;
1602
+ }
1603
+ .contents {
1604
+ display: contents;
1605
+ }
1606
+ .hidden {
1607
+ display: none;
1608
+ }
1609
+ .aspect-square {
1610
+ aspect-ratio: 1 / 1;
1611
+ }
1612
+ .size-3 {
1613
+ width: 0.75rem;
1614
+ height: 0.75rem;
1615
+ }
1616
+ .h-0\.5 {
1617
+ height: 0.125rem;
1618
+ }
1619
+ .h-1 {
1620
+ height: 0.25rem;
1621
+ }
1622
+ .h-1\.5 {
1623
+ height: 0.375rem;
1624
+ }
1625
+ .h-10 {
1626
+ height: 2.5rem;
1627
+ }
1628
+ .h-11 {
1629
+ height: 2.75rem;
1630
+ }
1631
+ .h-12 {
1632
+ height: 3rem;
1633
+ }
1634
+ .h-14 {
1635
+ height: 3.5rem;
1636
+ }
1637
+ .h-16 {
1638
+ height: 4rem;
1639
+ }
1640
+ .h-2 {
1641
+ height: 0.5rem;
1642
+ }
1643
+ .h-3 {
1644
+ height: 0.75rem;
1645
+ }
1646
+ .h-3\.5 {
1647
+ height: 0.875rem;
1648
+ }
1649
+ .h-4 {
1650
+ height: 1rem;
1651
+ }
1652
+ .h-5 {
1653
+ height: 1.25rem;
1654
+ }
1655
+ .h-6 {
1656
+ height: 1.5rem;
1657
+ }
1658
+ .h-64 {
1659
+ height: 16rem;
1660
+ }
1661
+ .h-7 {
1662
+ height: 1.75rem;
1663
+ }
1664
+ .h-8 {
1665
+ height: 2rem;
1666
+ }
1667
+ .h-9 {
1668
+ height: 2.25rem;
1669
+ }
1670
+ .h-\[18px\] {
1671
+ height: 18px;
1672
+ }
1673
+ .h-\[1em\] {
1674
+ height: 1em;
1675
+ }
1676
+ .h-\[65vh\] {
1677
+ height: 65vh;
1678
+ }
1679
+ .h-auto {
1680
+ height: auto;
1681
+ }
1682
+ .h-full {
1683
+ height: 100%;
1684
+ }
1685
+ .h-px {
1686
+ height: 1px;
1687
+ }
1688
+ .max-h-48 {
1689
+ max-height: 12rem;
1690
+ }
1691
+ .max-h-56 {
1692
+ max-height: 14rem;
1693
+ }
1694
+ .max-h-60 {
1695
+ max-height: 15rem;
1696
+ }
1697
+ .max-h-64 {
1698
+ max-height: 16rem;
1699
+ }
1700
+ .max-h-80 {
1701
+ max-height: 20rem;
1702
+ }
1703
+ .max-h-96 {
1704
+ max-height: 24rem;
1705
+ }
1706
+ .max-h-\[85vh\] {
1707
+ max-height: 85vh;
1708
+ }
1709
+ .min-h-4 {
1710
+ min-height: 1rem;
1711
+ }
1712
+ .min-h-9 {
1713
+ min-height: 2.25rem;
1714
+ }
1715
+ .min-h-\[80px\] {
1716
+ min-height: 80px;
1717
+ }
1718
+ .min-h-screen {
1719
+ min-height: 100vh;
1720
+ }
1721
+ .w-0\.5 {
1722
+ width: 0.125rem;
1723
+ }
1724
+ .w-1 {
1725
+ width: 0.25rem;
1726
+ }
1727
+ .w-1\.5 {
1728
+ width: 0.375rem;
1729
+ }
1730
+ .w-10 {
1731
+ width: 2.5rem;
1732
+ }
1733
+ .w-11 {
1734
+ width: 2.75rem;
1735
+ }
1736
+ .w-12 {
1737
+ width: 3rem;
1738
+ }
1739
+ .w-14 {
1740
+ width: 3.5rem;
1741
+ }
1742
+ .w-16 {
1743
+ width: 4rem;
1744
+ }
1745
+ .w-2 {
1746
+ width: 0.5rem;
1747
+ }
1748
+ .w-3 {
1749
+ width: 0.75rem;
1750
+ }
1751
+ .w-3\.5 {
1752
+ width: 0.875rem;
1753
+ }
1754
+ .w-32 {
1755
+ width: 8rem;
1756
+ }
1757
+ .w-4 {
1758
+ width: 1rem;
1759
+ }
1760
+ .w-44 {
1761
+ width: 11rem;
1762
+ }
1763
+ .w-48 {
1764
+ width: 12rem;
1765
+ }
1766
+ .w-5 {
1767
+ width: 1.25rem;
1768
+ }
1769
+ .w-56 {
1770
+ width: 14rem;
1771
+ }
1772
+ .w-6 {
1773
+ width: 1.5rem;
1774
+ }
1775
+ .w-7 {
1776
+ width: 1.75rem;
1777
+ }
1778
+ .w-72 {
1779
+ width: 18rem;
1780
+ }
1781
+ .w-8 {
1782
+ width: 2rem;
1783
+ }
1784
+ .w-80 {
1785
+ width: 20rem;
1786
+ }
1787
+ .w-9 {
1788
+ width: 2.25rem;
1789
+ }
1790
+ .w-\[0\.62em\] {
1791
+ width: 0.62em;
1792
+ }
1793
+ .w-\[18px\] {
1794
+ width: 18px;
1795
+ }
1796
+ .w-fit {
1797
+ width: fit-content;
1798
+ }
1799
+ .w-full {
1800
+ width: 100%;
1801
+ }
1802
+ .w-max {
1803
+ width: max-content;
1804
+ }
1805
+ .w-px {
1806
+ width: 1px;
1807
+ }
1808
+ .min-w-0 {
1809
+ min-width: 0px;
1810
+ }
1811
+ .min-w-32 {
1812
+ min-width: 8rem;
1813
+ }
1814
+ .min-w-4 {
1815
+ min-width: 1rem;
1816
+ }
1817
+ .min-w-40 {
1818
+ min-width: 10rem;
1819
+ }
1820
+ .min-w-56 {
1821
+ min-width: 14rem;
1822
+ }
1823
+ .min-w-\[1\.5rem\] {
1824
+ min-width: 1.5rem;
1825
+ }
1826
+ .min-w-\[10rem\] {
1827
+ min-width: 10rem;
1828
+ }
1829
+ .min-w-\[2\.5rem\] {
1830
+ min-width: 2.5rem;
1831
+ }
1832
+ .min-w-\[4rem\] {
1833
+ min-width: 4rem;
1834
+ }
1835
+ .min-w-\[8rem\] {
1836
+ min-width: 8rem;
1837
+ }
1838
+ .max-w-\[520px\] {
1839
+ max-width: 520px;
1840
+ }
1841
+ .max-w-\[90vw\] {
1842
+ max-width: 90vw;
1843
+ }
1844
+ .max-w-lg {
1845
+ max-width: 32rem;
1846
+ }
1847
+ .max-w-md {
1848
+ max-width: 28rem;
1849
+ }
1850
+ .max-w-sm {
1851
+ max-width: 24rem;
1852
+ }
1853
+ .max-w-xs {
1854
+ max-width: 20rem;
1855
+ }
1856
+ .flex-1 {
1857
+ flex: 1 1 0%;
1858
+ }
1859
+ .shrink-0 {
1860
+ flex-shrink: 0;
1861
+ }
1862
+ .border-collapse {
1863
+ border-collapse: collapse;
1864
+ }
1865
+ .-translate-x-1\/2 {
1866
+ --tw-translate-x: -50%;
1867
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1868
+ }
1869
+ .-translate-y-1\/2 {
1870
+ --tw-translate-y: -50%;
1871
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1872
+ }
1873
+ .translate-y-0 {
1874
+ --tw-translate-y: 0px;
1875
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1876
+ }
1877
+ .-rotate-90 {
1878
+ --tw-rotate: -90deg;
1879
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1880
+ }
1881
+ .rotate-180 {
1882
+ --tw-rotate: 180deg;
1883
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1884
+ }
1885
+ .rotate-45 {
1886
+ --tw-rotate: 45deg;
1887
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1888
+ }
1889
+ .rotate-90 {
1890
+ --tw-rotate: 90deg;
1891
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1892
+ }
1893
+ .transform {
1894
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1895
+ }
1896
+ @keyframes pulse {
1897
+
1898
+ 50% {
1899
+ opacity: .5;
1900
+ }
1901
+ }
1902
+ .animate-pulse {
1903
+ animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
1904
+ }
1905
+ @keyframes spin {
1906
+
1907
+ to {
1908
+ transform: rotate(360deg);
1909
+ }
1910
+ }
1911
+ .animate-spin {
1912
+ animation: spin 1s linear infinite;
1913
+ }
1914
+ .cursor-col-resize {
1915
+ cursor: col-resize;
1916
+ }
1917
+ .cursor-grab {
1918
+ cursor: grab;
1919
+ }
1920
+ .cursor-not-allowed {
1921
+ cursor: not-allowed;
1922
+ }
1923
+ .cursor-pointer {
1924
+ cursor: pointer;
1925
+ }
1926
+ .cursor-row-resize {
1927
+ cursor: row-resize;
1928
+ }
1929
+ .cursor-zoom-in {
1930
+ cursor: zoom-in;
1931
+ }
1932
+ .select-none {
1933
+ user-select: none;
1934
+ }
1935
+ .resize-y {
1936
+ resize: vertical;
1937
+ }
1938
+ .resize {
1939
+ resize: both;
1940
+ }
1941
+ .list-none {
1942
+ list-style-type: none;
1943
+ }
1944
+ .grid-cols-1 {
1945
+ grid-template-columns: repeat(1, minmax(0, 1fr));
1946
+ }
1947
+ .grid-cols-2 {
1948
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1949
+ }
1950
+ .grid-cols-3 {
1951
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1952
+ }
1953
+ .grid-cols-7 {
1954
+ grid-template-columns: repeat(7, minmax(0, 1fr));
1955
+ }
1956
+ .flex-row {
1957
+ flex-direction: row;
1958
+ }
1959
+ .flex-col {
1960
+ flex-direction: column;
1961
+ }
1962
+ .flex-wrap {
1963
+ flex-wrap: wrap;
1964
+ }
1965
+ .place-items-center {
1966
+ place-items: center;
1967
+ }
1968
+ .items-start {
1969
+ align-items: flex-start;
1970
+ }
1971
+ .items-end {
1972
+ align-items: flex-end;
1973
+ }
1974
+ .items-center {
1975
+ align-items: center;
1976
+ }
1977
+ .items-baseline {
1978
+ align-items: baseline;
1979
+ }
1980
+ .items-stretch {
1981
+ align-items: stretch;
1982
+ }
1983
+ .justify-end {
1984
+ justify-content: flex-end;
1985
+ }
1986
+ .justify-center {
1987
+ justify-content: center;
1988
+ }
1989
+ .justify-between {
1990
+ justify-content: space-between;
1991
+ }
1992
+ .gap-0\.5 {
1993
+ gap: 0.125rem;
1994
+ }
1995
+ .gap-1 {
1996
+ gap: 0.25rem;
1997
+ }
1998
+ .gap-1\.5 {
1999
+ gap: 0.375rem;
2000
+ }
2001
+ .gap-2 {
2002
+ gap: 0.5rem;
2003
+ }
2004
+ .gap-3 {
2005
+ gap: 0.75rem;
2006
+ }
2007
+ .gap-4 {
2008
+ gap: 1rem;
2009
+ }
2010
+ .gap-6 {
2011
+ gap: 1.5rem;
2012
+ }
2013
+ .gap-x-6 {
2014
+ column-gap: 1.5rem;
2015
+ }
2016
+ .space-y-0\.5 > :not([hidden]) ~ :not([hidden]) {
2017
+ --tw-space-y-reverse: 0;
2018
+ margin-top: calc(0.125rem * calc(1 - var(--tw-space-y-reverse)));
2019
+ margin-bottom: calc(0.125rem * var(--tw-space-y-reverse));
2020
+ }
2021
+ .space-y-1\.5 > :not([hidden]) ~ :not([hidden]) {
2022
+ --tw-space-y-reverse: 0;
2023
+ margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));
2024
+ margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));
2025
+ }
2026
+ .space-y-2 > :not([hidden]) ~ :not([hidden]) {
2027
+ --tw-space-y-reverse: 0;
2028
+ margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
2029
+ margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
2030
+ }
2031
+ .space-y-4 > :not([hidden]) ~ :not([hidden]) {
2032
+ --tw-space-y-reverse: 0;
2033
+ margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
2034
+ margin-bottom: calc(1rem * var(--tw-space-y-reverse));
2035
+ }
2036
+ .divide-x > :not([hidden]) ~ :not([hidden]) {
2037
+ --tw-divide-x-reverse: 0;
2038
+ border-right-width: calc(1px * var(--tw-divide-x-reverse));
2039
+ border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));
2040
+ }
2041
+ .divide-y > :not([hidden]) ~ :not([hidden]) {
2042
+ --tw-divide-y-reverse: 0;
2043
+ border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
2044
+ border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
2045
+ }
2046
+ .divide-border > :not([hidden]) ~ :not([hidden]) {
2047
+ --tw-divide-opacity: 1;
2048
+ border-color: hsl(var(--border) / var(--tw-divide-opacity, 1));
2049
+ }
2050
+ .self-stretch {
2051
+ align-self: stretch;
2052
+ }
2053
+ .overflow-auto {
2054
+ overflow: auto;
2055
+ }
2056
+ .overflow-hidden {
2057
+ overflow: hidden;
2058
+ }
2059
+ .overflow-visible {
2060
+ overflow: visible;
2061
+ }
2062
+ .overflow-x-auto {
2063
+ overflow-x: auto;
2064
+ }
2065
+ .overflow-y-auto {
2066
+ overflow-y: auto;
2067
+ }
2068
+ .truncate {
2069
+ overflow: hidden;
2070
+ text-overflow: ellipsis;
2071
+ white-space: nowrap;
2072
+ }
2073
+ .whitespace-nowrap {
2074
+ white-space: nowrap;
2075
+ }
2076
+ .break-words {
2077
+ overflow-wrap: break-word;
2078
+ }
2079
+ .rounded {
2080
+ border-radius: 0.25rem;
2081
+ }
2082
+ .rounded-full {
2083
+ border-radius: 9999px;
2084
+ }
2085
+ .rounded-lg {
2086
+ border-radius: 0.5rem;
2087
+ }
2088
+ .rounded-md {
2089
+ border-radius: 0.375rem;
2090
+ }
2091
+ .rounded-sm {
2092
+ border-radius: 0.125rem;
2093
+ }
2094
+ .rounded-xl {
2095
+ border-radius: 1rem;
2096
+ }
2097
+ .rounded-l-md {
2098
+ border-top-left-radius: 0.375rem;
2099
+ border-bottom-left-radius: 0.375rem;
2100
+ }
2101
+ .rounded-r-md {
2102
+ border-top-right-radius: 0.375rem;
2103
+ border-bottom-right-radius: 0.375rem;
2104
+ }
2105
+ .rounded-t {
2106
+ border-top-left-radius: 0.25rem;
2107
+ border-top-right-radius: 0.25rem;
2108
+ }
2109
+ .border {
2110
+ border-width: 1px;
2111
+ }
2112
+ .border-0 {
2113
+ border-width: 0px;
2114
+ }
2115
+ .border-2 {
2116
+ border-width: 2px;
2117
+ }
2118
+ .border-y {
2119
+ border-top-width: 1px;
2120
+ border-bottom-width: 1px;
2121
+ }
2122
+ .border-b {
2123
+ border-bottom-width: 1px;
2124
+ }
2125
+ .border-l {
2126
+ border-left-width: 1px;
2127
+ }
2128
+ .border-l-2 {
2129
+ border-left-width: 2px;
2130
+ }
2131
+ .border-r {
2132
+ border-right-width: 1px;
2133
+ }
2134
+ .border-t {
2135
+ border-top-width: 1px;
2136
+ }
2137
+ .border-dashed {
2138
+ border-style: dashed;
2139
+ }
2140
+ .border-amber-500\/30 {
2141
+ border-color: rgb(245 158 11 / 0.3);
2142
+ }
2143
+ .border-border {
2144
+ --tw-border-opacity: 1;
2145
+ border-color: hsl(var(--border) / var(--tw-border-opacity, 1));
2146
+ }
2147
+ .border-destructive\/30 {
2148
+ border-color: hsl(var(--destructive) / 0.3);
2149
+ }
2150
+ .border-emerald-500\/30 {
2151
+ border-color: rgb(16 185 129 / 0.3);
2152
+ }
2153
+ .border-input {
2154
+ --tw-border-opacity: 1;
2155
+ border-color: hsl(var(--input) / var(--tw-border-opacity, 1));
2156
+ }
2157
+ .border-primary {
2158
+ --tw-border-opacity: 1;
2159
+ border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));
2160
+ }
2161
+ .border-primary\/40 {
2162
+ border-color: hsl(var(--primary) / 0.4);
2163
+ }
2164
+ .border-ring {
2165
+ --tw-border-opacity: 1;
2166
+ border-color: hsl(var(--ring) / var(--tw-border-opacity, 1));
2167
+ }
2168
+ .border-ring\/60 {
2169
+ border-color: hsl(var(--ring) / 0.6);
2170
+ }
2171
+ .border-rose-500\/30 {
2172
+ border-color: rgb(244 63 94 / 0.3);
2173
+ }
2174
+ .border-sky-500\/30 {
2175
+ border-color: rgb(14 165 233 / 0.3);
2176
+ }
2177
+ .bg-accent {
2178
+ --tw-bg-opacity: 1;
2179
+ background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));
2180
+ }
2181
+ .bg-amber-500\/10 {
2182
+ background-color: rgb(245 158 11 / 0.1);
2183
+ }
2184
+ .bg-amber-500\/15 {
2185
+ background-color: rgb(245 158 11 / 0.15);
2186
+ }
2187
+ .bg-background {
2188
+ --tw-bg-opacity: 1;
2189
+ background-color: hsl(var(--background) / var(--tw-bg-opacity, 1));
2190
+ }
2191
+ .bg-background\/70 {
2192
+ background-color: hsl(var(--background) / 0.7);
2193
+ }
2194
+ .bg-background\/80 {
2195
+ background-color: hsl(var(--background) / 0.8);
2196
+ }
2197
+ .bg-background\/85 {
2198
+ background-color: hsl(var(--background) / 0.85);
2199
+ }
2200
+ .bg-background\/90 {
2201
+ background-color: hsl(var(--background) / 0.9);
2202
+ }
2203
+ .bg-black\/50 {
2204
+ background-color: rgb(0 0 0 / 0.5);
2205
+ }
2206
+ .bg-border {
2207
+ --tw-bg-opacity: 1;
2208
+ background-color: hsl(var(--border) / var(--tw-bg-opacity, 1));
2209
+ }
2210
+ .bg-card {
2211
+ --tw-bg-opacity: 1;
2212
+ background-color: hsl(var(--card) / var(--tw-bg-opacity, 1));
2213
+ }
2214
+ .bg-destructive {
2215
+ --tw-bg-opacity: 1;
2216
+ background-color: hsl(var(--destructive) / var(--tw-bg-opacity, 1));
2217
+ }
2218
+ .bg-destructive\/10 {
2219
+ background-color: hsl(var(--destructive) / 0.1);
2220
+ }
2221
+ .bg-emerald-500 {
2222
+ --tw-bg-opacity: 1;
2223
+ background-color: rgb(16 185 129 / var(--tw-bg-opacity, 1));
2224
+ }
2225
+ .bg-emerald-500\/10 {
2226
+ background-color: rgb(16 185 129 / 0.1);
2227
+ }
2228
+ .bg-emerald-500\/15 {
2229
+ background-color: rgb(16 185 129 / 0.15);
2230
+ }
2231
+ .bg-input {
2232
+ --tw-bg-opacity: 1;
2233
+ background-color: hsl(var(--input) / var(--tw-bg-opacity, 1));
2234
+ }
2235
+ .bg-muted {
2236
+ --tw-bg-opacity: 1;
2237
+ background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));
2238
+ }
2239
+ .bg-primary {
2240
+ --tw-bg-opacity: 1;
2241
+ background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));
2242
+ }
2243
+ .bg-primary\/10 {
2244
+ background-color: hsl(var(--primary) / 0.1);
2245
+ }
2246
+ .bg-primary\/15 {
2247
+ background-color: hsl(var(--primary) / 0.15);
2248
+ }
2249
+ .bg-primary\/20 {
2250
+ background-color: hsl(var(--primary) / 0.2);
2251
+ }
2252
+ .bg-primary\/25 {
2253
+ background-color: hsl(var(--primary) / 0.25);
2254
+ }
2255
+ .bg-primary\/30 {
2256
+ background-color: hsl(var(--primary) / 0.3);
2257
+ }
2258
+ .bg-primary\/45 {
2259
+ background-color: hsl(var(--primary) / 0.45);
2260
+ }
2261
+ .bg-primary\/5 {
2262
+ background-color: hsl(var(--primary) / 0.05);
2263
+ }
2264
+ .bg-primary\/70 {
2265
+ background-color: hsl(var(--primary) / 0.7);
2266
+ }
2267
+ .bg-rose-500\/10 {
2268
+ background-color: rgb(244 63 94 / 0.1);
2269
+ }
2270
+ .bg-rose-500\/15 {
2271
+ background-color: rgb(244 63 94 / 0.15);
2272
+ }
2273
+ .bg-sky-500\/10 {
2274
+ background-color: rgb(14 165 233 / 0.1);
2275
+ }
2276
+ .bg-sky-500\/15 {
2277
+ background-color: rgb(14 165 233 / 0.15);
2278
+ }
2279
+ .bg-transparent {
2280
+ background-color: transparent;
2281
+ }
2282
+ .bg-white {
2283
+ --tw-bg-opacity: 1;
2284
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
2285
+ }
2286
+ .fill-primary {
2287
+ fill: hsl(var(--primary) / 1);
2288
+ }
2289
+ .fill-transparent {
2290
+ fill: transparent;
2291
+ }
2292
+ .object-contain {
2293
+ object-fit: contain;
2294
+ }
2295
+ .object-cover {
2296
+ object-fit: cover;
2297
+ }
2298
+ .p-0 {
2299
+ padding: 0px;
2300
+ }
2301
+ .p-1 {
2302
+ padding: 0.25rem;
2303
+ }
2304
+ .p-2 {
2305
+ padding: 0.5rem;
2306
+ }
2307
+ .p-3 {
2308
+ padding: 0.75rem;
2309
+ }
2310
+ .p-4 {
2311
+ padding: 1rem;
2312
+ }
2313
+ .p-5 {
2314
+ padding: 1.25rem;
2315
+ }
2316
+ .p-6 {
2317
+ padding: 1.5rem;
2318
+ }
2319
+ .px-0\.5 {
2320
+ padding-left: 0.125rem;
2321
+ padding-right: 0.125rem;
2322
+ }
2323
+ .px-1 {
2324
+ padding-left: 0.25rem;
2325
+ padding-right: 0.25rem;
2326
+ }
2327
+ .px-1\.5 {
2328
+ padding-left: 0.375rem;
2329
+ padding-right: 0.375rem;
2330
+ }
2331
+ .px-2 {
2332
+ padding-left: 0.5rem;
2333
+ padding-right: 0.5rem;
2334
+ }
2335
+ .px-2\.5 {
2336
+ padding-left: 0.625rem;
2337
+ padding-right: 0.625rem;
2338
+ }
2339
+ .px-3 {
2340
+ padding-left: 0.75rem;
2341
+ padding-right: 0.75rem;
2342
+ }
2343
+ .px-4 {
2344
+ padding-left: 1rem;
2345
+ padding-right: 1rem;
2346
+ }
2347
+ .px-5 {
2348
+ padding-left: 1.25rem;
2349
+ padding-right: 1.25rem;
2350
+ }
2351
+ .px-6 {
2352
+ padding-left: 1.5rem;
2353
+ padding-right: 1.5rem;
2354
+ }
2355
+ .py-0 {
2356
+ padding-top: 0px;
2357
+ padding-bottom: 0px;
2358
+ }
2359
+ .py-0\.5 {
2360
+ padding-top: 0.125rem;
2361
+ padding-bottom: 0.125rem;
2362
+ }
2363
+ .py-1 {
2364
+ padding-top: 0.25rem;
2365
+ padding-bottom: 0.25rem;
2366
+ }
2367
+ .py-1\.5 {
2368
+ padding-top: 0.375rem;
2369
+ padding-bottom: 0.375rem;
2370
+ }
2371
+ .py-10 {
2372
+ padding-top: 2.5rem;
2373
+ padding-bottom: 2.5rem;
2374
+ }
2375
+ .py-12 {
2376
+ padding-top: 3rem;
2377
+ padding-bottom: 3rem;
2378
+ }
2379
+ .py-2 {
2380
+ padding-top: 0.5rem;
2381
+ padding-bottom: 0.5rem;
2382
+ }
2383
+ .py-20 {
2384
+ padding-top: 5rem;
2385
+ padding-bottom: 5rem;
2386
+ }
2387
+ .py-24 {
2388
+ padding-top: 6rem;
2389
+ padding-bottom: 6rem;
2390
+ }
2391
+ .py-3 {
2392
+ padding-top: 0.75rem;
2393
+ padding-bottom: 0.75rem;
2394
+ }
2395
+ .py-4 {
2396
+ padding-top: 1rem;
2397
+ padding-bottom: 1rem;
2398
+ }
2399
+ .py-6 {
2400
+ padding-top: 1.5rem;
2401
+ padding-bottom: 1.5rem;
2402
+ }
2403
+ .py-8 {
2404
+ padding-top: 2rem;
2405
+ padding-bottom: 2rem;
2406
+ }
2407
+ .pb-1 {
2408
+ padding-bottom: 0.25rem;
2409
+ }
2410
+ .pb-3 {
2411
+ padding-bottom: 0.75rem;
2412
+ }
2413
+ .pb-4 {
2414
+ padding-bottom: 1rem;
2415
+ }
2416
+ .pl-1 {
2417
+ padding-left: 0.25rem;
2418
+ }
2419
+ .pl-2 {
2420
+ padding-left: 0.5rem;
2421
+ }
2422
+ .pl-4 {
2423
+ padding-left: 1rem;
2424
+ }
2425
+ .pr-1 {
2426
+ padding-right: 0.25rem;
2427
+ }
2428
+ .pt-0 {
2429
+ padding-top: 0px;
2430
+ }
2431
+ .pt-1 {
2432
+ padding-top: 0.25rem;
2433
+ }
2434
+ .pt-2 {
2435
+ padding-top: 0.5rem;
2436
+ }
2437
+ .pt-4 {
2438
+ padding-top: 1rem;
2439
+ }
2440
+ .text-left {
2441
+ text-align: left;
2442
+ }
2443
+ .text-center {
2444
+ text-align: center;
2445
+ }
2446
+ .text-right {
2447
+ text-align: right;
2448
+ }
2449
+ .align-top {
2450
+ vertical-align: top;
2451
+ }
2452
+ .align-middle {
2453
+ vertical-align: middle;
2454
+ }
2455
+ .font-mono {
2456
+ font-family: "IBM Plex Mono", ui-monospace, monospace;
2457
+ }
2458
+ .text-2xl {
2459
+ font-size: 1.5rem;
2460
+ line-height: 2rem;
2461
+ }
2462
+ .text-4xl {
2463
+ font-size: 2.25rem;
2464
+ line-height: 2.5rem;
2465
+ }
2466
+ .text-5xl {
2467
+ font-size: 3rem;
2468
+ line-height: 1;
2469
+ }
2470
+ .text-\[10px\] {
2471
+ font-size: 10px;
2472
+ }
2473
+ .text-\[11px\] {
2474
+ font-size: 11px;
2475
+ }
2476
+ .text-\[12px\] {
2477
+ font-size: 12px;
2478
+ }
2479
+ .text-\[13px\] {
2480
+ font-size: 13px;
2481
+ }
2482
+ .text-\[16px\] {
2483
+ font-size: 16px;
2484
+ }
2485
+ .text-\[9px\] {
2486
+ font-size: 9px;
2487
+ }
2488
+ .text-base {
2489
+ font-size: 1rem;
2490
+ line-height: 1.5rem;
2491
+ }
2492
+ .text-lg {
2493
+ font-size: 1.125rem;
2494
+ line-height: 1.75rem;
2495
+ }
2496
+ .text-sm {
2497
+ font-size: 0.875rem;
2498
+ line-height: 1.25rem;
2499
+ }
2500
+ .text-xl {
2501
+ font-size: 1.25rem;
2502
+ line-height: 1.75rem;
2503
+ }
2504
+ .text-xs {
2505
+ font-size: 0.75rem;
2506
+ line-height: 1rem;
2507
+ }
2508
+ .font-bold {
2509
+ font-weight: 700;
2510
+ }
2511
+ .font-medium {
2512
+ font-weight: 500;
2513
+ }
2514
+ .font-normal {
2515
+ font-weight: 400;
2516
+ }
2517
+ .font-semibold {
2518
+ font-weight: 600;
2519
+ }
2520
+ .uppercase {
2521
+ text-transform: uppercase;
2522
+ }
2523
+ .capitalize {
2524
+ text-transform: capitalize;
2525
+ }
2526
+ .tabular-nums {
2527
+ --tw-numeric-spacing: tabular-nums;
2528
+ font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
2529
+ }
2530
+ .leading-none {
2531
+ line-height: 1;
2532
+ }
2533
+ .leading-tight {
2534
+ line-height: 1.25;
2535
+ }
2536
+ .tracking-tight {
2537
+ letter-spacing: -0.025em;
2538
+ }
2539
+ .tracking-wide {
2540
+ letter-spacing: 0.025em;
2541
+ }
2542
+ .text-accent-foreground {
2543
+ --tw-text-opacity: 1;
2544
+ color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));
2545
+ }
2546
+ .text-amber-500 {
2547
+ --tw-text-opacity: 1;
2548
+ color: rgb(245 158 11 / var(--tw-text-opacity, 1));
2549
+ }
2550
+ .text-amber-600 {
2551
+ --tw-text-opacity: 1;
2552
+ color: rgb(217 119 6 / var(--tw-text-opacity, 1));
2553
+ }
2554
+ .text-card-foreground {
2555
+ --tw-text-opacity: 1;
2556
+ color: hsl(var(--card-foreground) / var(--tw-text-opacity, 1));
2557
+ }
2558
+ .text-destructive {
2559
+ --tw-text-opacity: 1;
2560
+ color: hsl(var(--destructive) / var(--tw-text-opacity, 1));
2561
+ }
2562
+ .text-destructive-foreground {
2563
+ --tw-text-opacity: 1;
2564
+ color: hsl(var(--destructive-foreground) / var(--tw-text-opacity, 1));
2565
+ }
2566
+ .text-emerald-500 {
2567
+ --tw-text-opacity: 1;
2568
+ color: rgb(16 185 129 / var(--tw-text-opacity, 1));
2569
+ }
2570
+ .text-emerald-600 {
2571
+ --tw-text-opacity: 1;
2572
+ color: rgb(5 150 105 / var(--tw-text-opacity, 1));
2573
+ }
2574
+ .text-foreground {
2575
+ --tw-text-opacity: 1;
2576
+ color: hsl(var(--foreground) / var(--tw-text-opacity, 1));
2577
+ }
2578
+ .text-muted-foreground {
2579
+ --tw-text-opacity: 1;
2580
+ color: hsl(var(--muted-foreground) / var(--tw-text-opacity, 1));
2581
+ }
2582
+ .text-muted-foreground\/50 {
2583
+ color: hsl(var(--muted-foreground) / 0.5);
2584
+ }
2585
+ .text-muted-foreground\/60 {
2586
+ color: hsl(var(--muted-foreground) / 0.6);
2587
+ }
2588
+ .text-primary {
2589
+ --tw-text-opacity: 1;
2590
+ color: hsl(var(--primary) / var(--tw-text-opacity, 1));
2591
+ }
2592
+ .text-primary-foreground {
2593
+ --tw-text-opacity: 1;
2594
+ color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));
2595
+ }
2596
+ .text-red-500 {
2597
+ --tw-text-opacity: 1;
2598
+ color: rgb(239 68 68 / var(--tw-text-opacity, 1));
2599
+ }
2600
+ .text-rose-500 {
2601
+ --tw-text-opacity: 1;
2602
+ color: rgb(244 63 94 / var(--tw-text-opacity, 1));
2603
+ }
2604
+ .text-rose-600 {
2605
+ --tw-text-opacity: 1;
2606
+ color: rgb(225 29 72 / var(--tw-text-opacity, 1));
2607
+ }
2608
+ .text-sky-500 {
2609
+ --tw-text-opacity: 1;
2610
+ color: rgb(14 165 233 / var(--tw-text-opacity, 1));
2611
+ }
2612
+ .text-sky-600 {
2613
+ --tw-text-opacity: 1;
2614
+ color: rgb(2 132 199 / var(--tw-text-opacity, 1));
2615
+ }
2616
+ .line-through {
2617
+ text-decoration-line: line-through;
2618
+ }
2619
+ .accent-foreground {
2620
+ accent-color: hsl(var(--foreground) / 1);
2621
+ }
2622
+ .accent-primary {
2623
+ accent-color: hsl(var(--primary) / 1);
2624
+ }
2625
+ .opacity-100 {
2626
+ opacity: 1;
2627
+ }
2628
+ .opacity-25 {
2629
+ opacity: 0.25;
2630
+ }
2631
+ .opacity-50 {
2632
+ opacity: 0.5;
2633
+ }
2634
+ .opacity-60 {
2635
+ opacity: 0.6;
2636
+ }
2637
+ .opacity-75 {
2638
+ opacity: 0.75;
2639
+ }
2640
+ .shadow {
2641
+ --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
2642
+ --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
2643
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2644
+ }
2645
+ .shadow-2xl {
2646
+ --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
2647
+ --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
2648
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2649
+ }
2650
+ .shadow-lg {
2651
+ --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
2652
+ --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
2653
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2654
+ }
2655
+ .shadow-md {
2656
+ --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
2657
+ --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
2658
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2659
+ }
2660
+ .shadow-sm {
2661
+ --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
2662
+ --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
2663
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2664
+ }
2665
+ .outline-none {
2666
+ outline: 2px solid transparent;
2667
+ outline-offset: 2px;
2668
+ }
2669
+ .outline {
2670
+ outline-style: solid;
2671
+ }
2672
+ .ring {
2673
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2674
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2675
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2676
+ }
2677
+ .ring-1 {
2678
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2679
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2680
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2681
+ }
2682
+ .ring-2 {
2683
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2684
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2685
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2686
+ }
2687
+ .ring-inset {
2688
+ --tw-ring-inset: inset;
2689
+ }
2690
+ .ring-amber-500\/30 {
2691
+ --tw-ring-color: rgb(245 158 11 / 0.3);
2692
+ }
2693
+ .ring-background {
2694
+ --tw-ring-opacity: 1;
2695
+ --tw-ring-color: hsl(var(--background) / var(--tw-ring-opacity, 1));
2696
+ }
2697
+ .ring-border {
2698
+ --tw-ring-opacity: 1;
2699
+ --tw-ring-color: hsl(var(--border) / var(--tw-ring-opacity, 1));
2700
+ }
2701
+ .ring-emerald-500\/30 {
2702
+ --tw-ring-color: rgb(16 185 129 / 0.3);
2703
+ }
2704
+ .ring-primary {
2705
+ --tw-ring-opacity: 1;
2706
+ --tw-ring-color: hsl(var(--primary) / var(--tw-ring-opacity, 1));
2707
+ }
2708
+ .ring-primary\/40 {
2709
+ --tw-ring-color: hsl(var(--primary) / 0.4);
2710
+ }
2711
+ .ring-ring {
2712
+ --tw-ring-opacity: 1;
2713
+ --tw-ring-color: hsl(var(--ring) / var(--tw-ring-opacity, 1));
2714
+ }
2715
+ .ring-rose-500\/30 {
2716
+ --tw-ring-color: rgb(244 63 94 / 0.3);
2717
+ }
2718
+ .ring-sky-500\/30 {
2719
+ --tw-ring-color: rgb(14 165 233 / 0.3);
2720
+ }
2721
+ .ring-offset-1 {
2722
+ --tw-ring-offset-width: 1px;
2723
+ }
2724
+ .ring-offset-background {
2725
+ --tw-ring-offset-color: hsl(var(--background) / 1);
2726
+ }
2727
+ .blur {
2728
+ --tw-blur: blur(8px);
2729
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2730
+ }
2731
+ .brightness-110 {
2732
+ --tw-brightness: brightness(1.1);
2733
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2734
+ }
2735
+ .drop-shadow {
2736
+ --tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / 0.1)) drop-shadow(0 1px 1px rgb(0 0 0 / 0.06));
2737
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2738
+ }
2739
+ .filter {
2740
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2741
+ }
2742
+ .backdrop-blur {
2743
+ --tw-backdrop-blur: blur(8px);
2744
+ -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
2745
+ backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
2746
+ }
2747
+ .backdrop-blur-\[2px\] {
2748
+ --tw-backdrop-blur: blur(2px);
2749
+ -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
2750
+ backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
2751
+ }
2752
+ .backdrop-blur-sm {
2753
+ --tw-backdrop-blur: blur(4px);
2754
+ -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
2755
+ backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
2756
+ }
2757
+ .backdrop-filter {
2758
+ -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
2759
+ backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
2760
+ }
2761
+ .transition {
2762
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
2763
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2764
+ transition-duration: 150ms;
2765
+ }
2766
+ .transition-\[color\2c background-color\2c transform\] {
2767
+ transition-property: color,background-color,transform;
2768
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2769
+ transition-duration: 150ms;
2770
+ }
2771
+ .transition-\[opacity\2c transform\] {
2772
+ transition-property: opacity,transform;
2773
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2774
+ transition-duration: 150ms;
2775
+ }
2776
+ .transition-all {
2777
+ transition-property: all;
2778
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2779
+ transition-duration: 150ms;
2780
+ }
2781
+ .transition-colors {
2782
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
2783
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2784
+ transition-duration: 150ms;
2785
+ }
2786
+ .transition-opacity {
2787
+ transition-property: opacity;
2788
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2789
+ transition-duration: 150ms;
2790
+ }
2791
+ .transition-transform {
2792
+ transition-property: transform;
2793
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2794
+ transition-duration: 150ms;
2795
+ }
2796
+ .duration-150 {
2797
+ transition-duration: 150ms;
2798
+ }
2799
+ .duration-200 {
2800
+ transition-duration: 200ms;
2801
+ }
2802
+ .duration-500 {
2803
+ transition-duration: 500ms;
2804
+ }
2805
+ .ease-in-out {
2806
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2807
+ }
2808
+ .ease-out {
2809
+ transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
2810
+ }
2811
+ .placeholder\:text-muted-foreground::placeholder {
2812
+ --tw-text-opacity: 1;
2813
+ color: hsl(var(--muted-foreground) / var(--tw-text-opacity, 1));
2814
+ }
2815
+ .last\:flex-none:last-child {
2816
+ flex: none;
2817
+ }
2818
+ .last\:border-0:last-child {
2819
+ border-width: 0px;
2820
+ }
2821
+ .last\:border-r-0:last-child {
2822
+ border-right-width: 0px;
2823
+ }
2824
+ .focus-within\:border-ring:focus-within {
2825
+ --tw-border-opacity: 1;
2826
+ border-color: hsl(var(--ring) / var(--tw-border-opacity, 1));
2827
+ }
2828
+ .focus-within\:ring-2:focus-within {
2829
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2830
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2831
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2832
+ }
2833
+ .focus-within\:ring-ring\/30:focus-within {
2834
+ --tw-ring-color: hsl(var(--ring) / 0.3);
2835
+ }
2836
+ .hover\:border-primary:hover {
2837
+ --tw-border-opacity: 1;
2838
+ border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));
2839
+ }
2840
+ .hover\:border-ring\/60:hover {
2841
+ border-color: hsl(var(--ring) / 0.6);
2842
+ }
2843
+ .hover\:bg-muted:hover {
2844
+ --tw-bg-opacity: 1;
2845
+ background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));
2846
+ }
2847
+ .hover\:bg-muted\/40:hover {
2848
+ background-color: hsl(var(--muted) / 0.4);
2849
+ }
2850
+ .hover\:bg-muted\/70:hover {
2851
+ background-color: hsl(var(--muted) / 0.7);
2852
+ }
2853
+ .hover\:bg-primary\/5:hover {
2854
+ background-color: hsl(var(--primary) / 0.05);
2855
+ }
2856
+ .hover\:bg-primary\/50:hover {
2857
+ background-color: hsl(var(--primary) / 0.5);
2858
+ }
2859
+ .hover\:bg-primary\/90:hover {
2860
+ background-color: hsl(var(--primary) / 0.9);
2861
+ }
2862
+ .hover\:text-foreground:hover {
2863
+ --tw-text-opacity: 1;
2864
+ color: hsl(var(--foreground) / var(--tw-text-opacity, 1));
2865
+ }
2866
+ .hover\:underline:hover {
2867
+ text-decoration-line: underline;
2868
+ }
2869
+ .hover\:opacity-90:hover {
2870
+ opacity: 0.9;
2871
+ }
2872
+ .hover\:brightness-110:hover {
2873
+ --tw-brightness: brightness(1.1);
2874
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2875
+ }
2876
+ .hover\:\[animation-play-state\:paused\]:hover {
2877
+ animation-play-state: paused;
2878
+ }
2879
+ .focus\:bg-muted:focus {
2880
+ --tw-bg-opacity: 1;
2881
+ background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));
2882
+ }
2883
+ .focus\:outline-none:focus {
2884
+ outline: 2px solid transparent;
2885
+ outline-offset: 2px;
2886
+ }
2887
+ .focus\:ring-2:focus {
2888
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2889
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2890
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2891
+ }
2892
+ .focus\:ring-ring:focus {
2893
+ --tw-ring-opacity: 1;
2894
+ --tw-ring-color: hsl(var(--ring) / var(--tw-ring-opacity, 1));
2895
+ }
2896
+ .focus\:ring-ring\/30:focus {
2897
+ --tw-ring-color: hsl(var(--ring) / 0.3);
2898
+ }
2899
+ .focus\:ring-ring\/40:focus {
2900
+ --tw-ring-color: hsl(var(--ring) / 0.4);
2901
+ }
2902
+ .focus-visible\:bg-primary\/50:focus-visible {
2903
+ background-color: hsl(var(--primary) / 0.5);
2904
+ }
2905
+ .focus-visible\:outline-none:focus-visible {
2906
+ outline: 2px solid transparent;
2907
+ outline-offset: 2px;
2908
+ }
2909
+ .focus-visible\:ring-2:focus-visible {
2910
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2911
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2912
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2913
+ }
2914
+ .focus-visible\:ring-primary:focus-visible {
2915
+ --tw-ring-opacity: 1;
2916
+ --tw-ring-color: hsl(var(--primary) / var(--tw-ring-opacity, 1));
2917
+ }
2918
+ .focus-visible\:ring-ring\/40:focus-visible {
2919
+ --tw-ring-color: hsl(var(--ring) / 0.4);
2920
+ }
2921
+ .active\:scale-90:active {
2922
+ --tw-scale-x: .9;
2923
+ --tw-scale-y: .9;
2924
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
2925
+ }
2926
+ .active\:scale-\[0\.97\]:active {
2927
+ --tw-scale-x: 0.97;
2928
+ --tw-scale-y: 0.97;
2929
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
2930
+ }
2931
+ .active\:cursor-grabbing:active {
2932
+ cursor: grabbing;
2933
+ }
2934
+ .disabled\:pointer-events-none:disabled {
2935
+ pointer-events: none;
2936
+ }
2937
+ .disabled\:cursor-not-allowed:disabled {
2938
+ cursor: not-allowed;
2939
+ }
2940
+ .disabled\:opacity-40:disabled {
2941
+ opacity: 0.4;
2942
+ }
2943
+ .disabled\:opacity-50:disabled {
2944
+ opacity: 0.5;
2945
+ }
2946
+ .group[open] .group-\[\[open\]\]\:rotate-90 {
2947
+ --tw-rotate: 90deg;
2948
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
2949
+ }
2950
+ .aria-pressed\:text-primary[aria-pressed="true"] {
2951
+ --tw-text-opacity: 1;
2952
+ color: hsl(var(--primary) / var(--tw-text-opacity, 1));
2953
+ }
2954
+ .data-\[disabled\]\:pointer-events-none[data-disabled] {
2955
+ pointer-events: none;
2956
+ }
2957
+ .data-\[checked\]\:translate-x-4[data-checked] {
2958
+ --tw-translate-x: 1rem;
2959
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
2960
+ }
2961
+ .data-\[disabled\]\:cursor-not-allowed[data-disabled] {
2962
+ cursor: not-allowed;
2963
+ }
2964
+ .data-\[checked\]\:border-primary[data-checked] {
2965
+ --tw-border-opacity: 1;
2966
+ border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));
2967
+ }
2968
+ .data-\[pressed\]\:border-primary[data-pressed] {
2969
+ --tw-border-opacity: 1;
2970
+ border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));
2971
+ }
2972
+ .data-\[checked\]\:bg-primary[data-checked] {
2973
+ --tw-bg-opacity: 1;
2974
+ background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));
2975
+ }
2976
+ .data-\[highlighted\]\:bg-muted[data-highlighted] {
2977
+ --tw-bg-opacity: 1;
2978
+ background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));
2979
+ }
2980
+ .data-\[pressed\]\:bg-primary[data-pressed] {
2981
+ --tw-bg-opacity: 1;
2982
+ background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));
2983
+ }
2984
+ .data-\[pressed\]\:text-primary-foreground[data-pressed] {
2985
+ --tw-text-opacity: 1;
2986
+ color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));
2987
+ }
2988
+ .data-\[selected\]\:text-foreground[data-selected] {
2989
+ --tw-text-opacity: 1;
2990
+ color: hsl(var(--foreground) / var(--tw-text-opacity, 1));
2991
+ }
2992
+ .data-\[selected\]\:text-primary-foreground[data-selected] {
2993
+ --tw-text-opacity: 1;
2994
+ color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));
2995
+ }
2996
+ .data-\[disabled\]\:opacity-50[data-disabled] {
2997
+ opacity: 0.5;
2998
+ }
2999
+ @media (min-width: 640px) {
3000
+
3001
+ .sm\:grid-cols-2 {
3002
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3003
+ }
3004
+
3005
+ .sm\:grid-cols-3 {
3006
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3007
+ }
3008
+
3009
+ .sm\:flex-row {
3010
+ flex-direction: row;
3011
+ }
3012
+
3013
+ .sm\:items-end {
3014
+ align-items: flex-end;
3015
+ }
3016
+
3017
+ .sm\:items-center {
3018
+ align-items: center;
3019
+ }
3020
+
3021
+ .sm\:justify-between {
3022
+ justify-content: space-between;
3023
+ }
3024
+
3025
+ .sm\:px-6 {
3026
+ padding-left: 1.5rem;
3027
+ padding-right: 1.5rem;
3028
+ }
3029
+ }
3030
+ @media (min-width: 1024px) {
3031
+
3032
+ .lg\:grid-cols-4 {
3033
+ grid-template-columns: repeat(4, minmax(0, 1fr));
3034
+ }
3035
+ }
3036
+ .\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker {
3037
+ display: none;
3038
+ }
3039
+ .\[\&\[data-expanded\]\>svg\]\:rotate-90[data-expanded]>svg {
3040
+ --tw-rotate: 90deg;
3041
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
3042
+ }