@a4ui/core 0.11.1 → 0.13.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 (151) hide show
  1. package/README.md +80 -37
  2. package/dist/elements.css +79 -9
  3. package/dist/full.css +3112 -0
  4. package/dist/index.d.ts +13 -1
  5. package/dist/index.js +3392 -2537
  6. package/dist/lib/flyToCart.d.ts +25 -0
  7. package/dist/ui/Curtain.d.ts +44 -0
  8. package/dist/ui/Expandable.d.ts +34 -0
  9. package/dist/ui/FillText.d.ts +18 -0
  10. package/dist/ui/HoldToConfirm.d.ts +24 -0
  11. package/dist/ui/LoadingDots.d.ts +20 -0
  12. package/dist/ui/MultiStateBadge.d.ts +23 -0
  13. package/dist/ui/NotificationStack.d.ts +32 -0
  14. package/dist/ui/NowPlaying.d.ts +21 -0
  15. package/dist/ui/Parallax.d.ts +21 -0
  16. package/dist/ui/ScrambleText.d.ts +22 -0
  17. package/dist/ui/TextReveal.d.ts +23 -0
  18. package/package.json +8 -1
  19. package/src/charts/BarChart.tsx +55 -0
  20. package/src/charts/DonutChart.tsx +127 -0
  21. package/src/charts/Sparkline.tsx +101 -0
  22. package/src/charts/index.ts +5 -0
  23. package/src/commerce/CartLine.tsx +84 -0
  24. package/src/commerce/CartSummary.tsx +70 -0
  25. package/src/commerce/FilterGroup.tsx +70 -0
  26. package/src/commerce/PriceTag.tsx +62 -0
  27. package/src/commerce/ProductCard.tsx +121 -0
  28. package/src/commerce/ProductGrid.tsx +27 -0
  29. package/src/commerce/QuantityStepper.tsx +59 -0
  30. package/src/commerce/index.ts +10 -0
  31. package/src/elements.tsx +167 -0
  32. package/src/index.ts +186 -0
  33. package/src/layout/AppShell.tsx +102 -0
  34. package/src/layout/ChristmasBackground.tsx +177 -0
  35. package/src/layout/EffectsToggle.tsx +41 -0
  36. package/src/layout/NavGroup.tsx +45 -0
  37. package/src/layout/SnowScenery.tsx +76 -0
  38. package/src/layout/SpaceBackground.tsx +459 -0
  39. package/src/layout/ThemeToggle.tsx +40 -0
  40. package/src/layout/ThemedScenery.tsx +179 -0
  41. package/src/layout/sceneEffects.ts +49 -0
  42. package/src/lib/cn.ts +17 -0
  43. package/src/lib/effects.ts +71 -0
  44. package/src/lib/flyToCart.ts +103 -0
  45. package/src/lib/media.ts +27 -0
  46. package/src/lib/motion.ts +191 -0
  47. package/src/lib/theme.ts +113 -0
  48. package/src/lib/virtual.ts +33 -0
  49. package/src/styles/space.css +510 -0
  50. package/src/styles/tokens.css +213 -0
  51. package/src/themes/index.ts +102 -0
  52. package/src/themes/palettes.ts +368 -0
  53. package/src/ui/Accordion.tsx +65 -0
  54. package/src/ui/Affix.tsx +72 -0
  55. package/src/ui/Alert.tsx +55 -0
  56. package/src/ui/AlertDialog.tsx +58 -0
  57. package/src/ui/Anchor.tsx +100 -0
  58. package/src/ui/Avatar.tsx +34 -0
  59. package/src/ui/AvatarGroup.tsx +55 -0
  60. package/src/ui/BackToTop.tsx +51 -0
  61. package/src/ui/Badge.tsx +46 -0
  62. package/src/ui/BottomNavigation.tsx +65 -0
  63. package/src/ui/Breadcrumb.tsx +64 -0
  64. package/src/ui/Button.tsx +49 -0
  65. package/src/ui/Calendar.tsx +40 -0
  66. package/src/ui/CalendarHeatmap.tsx +180 -0
  67. package/src/ui/Card.tsx +84 -0
  68. package/src/ui/Carousel.tsx +121 -0
  69. package/src/ui/Cascader.tsx +158 -0
  70. package/src/ui/Checkbox.tsx +35 -0
  71. package/src/ui/Clock.tsx +221 -0
  72. package/src/ui/Collapse.tsx +48 -0
  73. package/src/ui/ColorPicker.tsx +89 -0
  74. package/src/ui/Combobox.tsx +67 -0
  75. package/src/ui/Command.tsx +158 -0
  76. package/src/ui/Comment.tsx +91 -0
  77. package/src/ui/ContextMenu.tsx +58 -0
  78. package/src/ui/Countdown.tsx +123 -0
  79. package/src/ui/Curtain.tsx +348 -0
  80. package/src/ui/DataGrid.tsx +177 -0
  81. package/src/ui/DateField.tsx +177 -0
  82. package/src/ui/DateRangePicker.tsx +204 -0
  83. package/src/ui/DateTimeField.tsx +68 -0
  84. package/src/ui/Descriptions.tsx +56 -0
  85. package/src/ui/Drawer.tsx +72 -0
  86. package/src/ui/Dropdown.tsx +71 -0
  87. package/src/ui/Dropzone.tsx +88 -0
  88. package/src/ui/Empty.tsx +53 -0
  89. package/src/ui/Expandable.tsx +229 -0
  90. package/src/ui/FileUpload.tsx +198 -0
  91. package/src/ui/FillText.tsx +63 -0
  92. package/src/ui/FloatingActionButton.tsx +48 -0
  93. package/src/ui/Form.tsx +108 -0
  94. package/src/ui/Highlight.tsx +53 -0
  95. package/src/ui/HoldToConfirm.tsx +141 -0
  96. package/src/ui/HoverCard.tsx +42 -0
  97. package/src/ui/Image.tsx +66 -0
  98. package/src/ui/Input.tsx +38 -0
  99. package/src/ui/Kbd.tsx +25 -0
  100. package/src/ui/List.tsx +71 -0
  101. package/src/ui/LoadingDots.tsx +75 -0
  102. package/src/ui/Marquee.tsx +48 -0
  103. package/src/ui/Mentions.tsx +170 -0
  104. package/src/ui/Meter.tsx +57 -0
  105. package/src/ui/Modal.tsx +106 -0
  106. package/src/ui/MultiSelect.tsx +236 -0
  107. package/src/ui/MultiStateBadge.tsx +93 -0
  108. package/src/ui/NotificationCenter.tsx +103 -0
  109. package/src/ui/NotificationStack.tsx +104 -0
  110. package/src/ui/NowPlaying.tsx +100 -0
  111. package/src/ui/NumberInput.tsx +48 -0
  112. package/src/ui/PageHeader.tsx +60 -0
  113. package/src/ui/Pagination.tsx +62 -0
  114. package/src/ui/Parallax.tsx +51 -0
  115. package/src/ui/Popover.tsx +42 -0
  116. package/src/ui/Portal.tsx +34 -0
  117. package/src/ui/Progress.tsx +55 -0
  118. package/src/ui/RadioGroup.tsx +65 -0
  119. package/src/ui/Rating.tsx +98 -0
  120. package/src/ui/Result.tsx +75 -0
  121. package/src/ui/RingProgress.tsx +75 -0
  122. package/src/ui/ScrambleText.tsx +95 -0
  123. package/src/ui/SegmentedControl.tsx +61 -0
  124. package/src/ui/Select.tsx +55 -0
  125. package/src/ui/Separator.tsx +39 -0
  126. package/src/ui/Skeleton.tsx +23 -0
  127. package/src/ui/Slider.tsx +57 -0
  128. package/src/ui/Sortable.tsx +174 -0
  129. package/src/ui/SpeedDial.tsx +85 -0
  130. package/src/ui/Spinner.tsx +33 -0
  131. package/src/ui/Splitter.tsx +115 -0
  132. package/src/ui/Stat.tsx +74 -0
  133. package/src/ui/Stepper.tsx +134 -0
  134. package/src/ui/Switch.tsx +44 -0
  135. package/src/ui/Table.tsx +128 -0
  136. package/src/ui/Tabs.tsx +72 -0
  137. package/src/ui/TagInput.tsx +85 -0
  138. package/src/ui/TextReveal.tsx +93 -0
  139. package/src/ui/Textarea.tsx +38 -0
  140. package/src/ui/TimeField.tsx +298 -0
  141. package/src/ui/Timeline.tsx +89 -0
  142. package/src/ui/Toast.tsx +68 -0
  143. package/src/ui/Toggle.tsx +41 -0
  144. package/src/ui/ToggleGroup.tsx +59 -0
  145. package/src/ui/Tooltip.tsx +42 -0
  146. package/src/ui/Tour.tsx +197 -0
  147. package/src/ui/Transfer.tsx +112 -0
  148. package/src/ui/Tree.tsx +100 -0
  149. package/src/ui/TreeSelect.tsx +151 -0
  150. package/src/ui/VirtualList.tsx +81 -0
  151. package/src/ui/internal/CalendarCore.tsx +276 -0
package/dist/full.css ADDED
@@ -0,0 +1,3112 @@
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
+ .inset-y-0 {
1435
+ top: 0px;
1436
+ bottom: 0px;
1437
+ }
1438
+ .-bottom-6 {
1439
+ bottom: -1.5rem;
1440
+ }
1441
+ .-right-1 {
1442
+ right: -0.25rem;
1443
+ }
1444
+ .-right-9 {
1445
+ right: -2.25rem;
1446
+ }
1447
+ .-top-1 {
1448
+ top: -0.25rem;
1449
+ }
1450
+ .-top-1\.5 {
1451
+ top: -0.375rem;
1452
+ }
1453
+ .bottom-0 {
1454
+ bottom: 0px;
1455
+ }
1456
+ .bottom-4 {
1457
+ bottom: 1rem;
1458
+ }
1459
+ .bottom-6 {
1460
+ bottom: 1.5rem;
1461
+ }
1462
+ .left-0 {
1463
+ left: 0px;
1464
+ }
1465
+ .left-2 {
1466
+ left: 0.5rem;
1467
+ }
1468
+ .left-6 {
1469
+ left: 1.5rem;
1470
+ }
1471
+ .left-\[calc\(0\.5rem\+0\.375rem\)\] {
1472
+ left: calc(0.5rem + 0.375rem);
1473
+ }
1474
+ .right-0 {
1475
+ right: 0px;
1476
+ }
1477
+ .right-2 {
1478
+ right: 0.5rem;
1479
+ }
1480
+ .right-3 {
1481
+ right: 0.75rem;
1482
+ }
1483
+ .right-4 {
1484
+ right: 1rem;
1485
+ }
1486
+ .right-6 {
1487
+ right: 1.5rem;
1488
+ }
1489
+ .top-0 {
1490
+ top: 0px;
1491
+ }
1492
+ .top-1\/2 {
1493
+ top: 50%;
1494
+ }
1495
+ .top-2 {
1496
+ top: 0.5rem;
1497
+ }
1498
+ .top-3 {
1499
+ top: 0.75rem;
1500
+ }
1501
+ .top-3\.5 {
1502
+ top: 0.875rem;
1503
+ }
1504
+ .top-\[14vh\] {
1505
+ top: 14vh;
1506
+ }
1507
+ .isolate {
1508
+ isolation: isolate;
1509
+ }
1510
+ .z-0 {
1511
+ z-index: 0;
1512
+ }
1513
+ .z-10 {
1514
+ z-index: 10;
1515
+ }
1516
+ .z-40 {
1517
+ z-index: 40;
1518
+ }
1519
+ .z-50 {
1520
+ z-index: 50;
1521
+ }
1522
+ .z-\[100\] {
1523
+ z-index: 100;
1524
+ }
1525
+ .z-\[101\] {
1526
+ z-index: 101;
1527
+ }
1528
+ .z-\[1\] {
1529
+ z-index: 1;
1530
+ }
1531
+ .z-\[9998\] {
1532
+ z-index: 9998;
1533
+ }
1534
+ .z-\[9999\] {
1535
+ z-index: 9999;
1536
+ }
1537
+ .m-0 {
1538
+ margin: 0px;
1539
+ }
1540
+ .mx-2 {
1541
+ margin-left: 0.5rem;
1542
+ margin-right: 0.5rem;
1543
+ }
1544
+ .mx-4 {
1545
+ margin-left: 1rem;
1546
+ margin-right: 1rem;
1547
+ }
1548
+ .mx-auto {
1549
+ margin-left: auto;
1550
+ margin-right: auto;
1551
+ }
1552
+ .my-3 {
1553
+ margin-top: 0.75rem;
1554
+ margin-bottom: 0.75rem;
1555
+ }
1556
+ .-ml-2 {
1557
+ margin-left: -0.5rem;
1558
+ }
1559
+ .-mt-1 {
1560
+ margin-top: -0.25rem;
1561
+ }
1562
+ .mb-1 {
1563
+ margin-bottom: 0.25rem;
1564
+ }
1565
+ .mb-2 {
1566
+ margin-bottom: 0.5rem;
1567
+ }
1568
+ .ml-4 {
1569
+ margin-left: 1rem;
1570
+ }
1571
+ .mt-0\.5 {
1572
+ margin-top: 0.125rem;
1573
+ }
1574
+ .mt-1 {
1575
+ margin-top: 0.25rem;
1576
+ }
1577
+ .mt-2 {
1578
+ margin-top: 0.5rem;
1579
+ }
1580
+ .mt-3 {
1581
+ margin-top: 0.75rem;
1582
+ }
1583
+ .mt-4 {
1584
+ margin-top: 1rem;
1585
+ }
1586
+ .mt-6 {
1587
+ margin-top: 1.5rem;
1588
+ }
1589
+ .mt-auto {
1590
+ margin-top: auto;
1591
+ }
1592
+ .line-clamp-1 {
1593
+ overflow: hidden;
1594
+ display: -webkit-box;
1595
+ -webkit-box-orient: vertical;
1596
+ -webkit-line-clamp: 1;
1597
+ }
1598
+ .line-clamp-2 {
1599
+ overflow: hidden;
1600
+ display: -webkit-box;
1601
+ -webkit-box-orient: vertical;
1602
+ -webkit-line-clamp: 2;
1603
+ }
1604
+ .block {
1605
+ display: block;
1606
+ }
1607
+ .inline-block {
1608
+ display: inline-block;
1609
+ }
1610
+ .inline {
1611
+ display: inline;
1612
+ }
1613
+ .flex {
1614
+ display: flex;
1615
+ }
1616
+ .inline-flex {
1617
+ display: inline-flex;
1618
+ }
1619
+ .table {
1620
+ display: table;
1621
+ }
1622
+ .grid {
1623
+ display: grid;
1624
+ }
1625
+ .inline-grid {
1626
+ display: inline-grid;
1627
+ }
1628
+ .contents {
1629
+ display: contents;
1630
+ }
1631
+ .hidden {
1632
+ display: none;
1633
+ }
1634
+ .aspect-square {
1635
+ aspect-ratio: 1 / 1;
1636
+ }
1637
+ .size-3 {
1638
+ width: 0.75rem;
1639
+ height: 0.75rem;
1640
+ }
1641
+ .h-0\.5 {
1642
+ height: 0.125rem;
1643
+ }
1644
+ .h-1 {
1645
+ height: 0.25rem;
1646
+ }
1647
+ .h-1\.5 {
1648
+ height: 0.375rem;
1649
+ }
1650
+ .h-10 {
1651
+ height: 2.5rem;
1652
+ }
1653
+ .h-11 {
1654
+ height: 2.75rem;
1655
+ }
1656
+ .h-12 {
1657
+ height: 3rem;
1658
+ }
1659
+ .h-14 {
1660
+ height: 3.5rem;
1661
+ }
1662
+ .h-16 {
1663
+ height: 4rem;
1664
+ }
1665
+ .h-2 {
1666
+ height: 0.5rem;
1667
+ }
1668
+ .h-3 {
1669
+ height: 0.75rem;
1670
+ }
1671
+ .h-3\.5 {
1672
+ height: 0.875rem;
1673
+ }
1674
+ .h-4 {
1675
+ height: 1rem;
1676
+ }
1677
+ .h-5 {
1678
+ height: 1.25rem;
1679
+ }
1680
+ .h-6 {
1681
+ height: 1.5rem;
1682
+ }
1683
+ .h-64 {
1684
+ height: 16rem;
1685
+ }
1686
+ .h-7 {
1687
+ height: 1.75rem;
1688
+ }
1689
+ .h-8 {
1690
+ height: 2rem;
1691
+ }
1692
+ .h-9 {
1693
+ height: 2.25rem;
1694
+ }
1695
+ .h-\[12\.5\%\] {
1696
+ height: 12.5%;
1697
+ }
1698
+ .h-\[18px\] {
1699
+ height: 18px;
1700
+ }
1701
+ .h-\[1em\] {
1702
+ height: 1em;
1703
+ }
1704
+ .h-\[65vh\] {
1705
+ height: 65vh;
1706
+ }
1707
+ .h-auto {
1708
+ height: auto;
1709
+ }
1710
+ .h-full {
1711
+ height: 100%;
1712
+ }
1713
+ .h-px {
1714
+ height: 1px;
1715
+ }
1716
+ .max-h-48 {
1717
+ max-height: 12rem;
1718
+ }
1719
+ .max-h-56 {
1720
+ max-height: 14rem;
1721
+ }
1722
+ .max-h-60 {
1723
+ max-height: 15rem;
1724
+ }
1725
+ .max-h-64 {
1726
+ max-height: 16rem;
1727
+ }
1728
+ .max-h-80 {
1729
+ max-height: 20rem;
1730
+ }
1731
+ .max-h-96 {
1732
+ max-height: 24rem;
1733
+ }
1734
+ .max-h-\[85vh\] {
1735
+ max-height: 85vh;
1736
+ }
1737
+ .min-h-4 {
1738
+ min-height: 1rem;
1739
+ }
1740
+ .min-h-9 {
1741
+ min-height: 2.25rem;
1742
+ }
1743
+ .min-h-\[80px\] {
1744
+ min-height: 80px;
1745
+ }
1746
+ .min-h-screen {
1747
+ min-height: 100vh;
1748
+ }
1749
+ .w-0\.5 {
1750
+ width: 0.125rem;
1751
+ }
1752
+ .w-1 {
1753
+ width: 0.25rem;
1754
+ }
1755
+ .w-1\.5 {
1756
+ width: 0.375rem;
1757
+ }
1758
+ .w-1\/2 {
1759
+ width: 50%;
1760
+ }
1761
+ .w-10 {
1762
+ width: 2.5rem;
1763
+ }
1764
+ .w-11 {
1765
+ width: 2.75rem;
1766
+ }
1767
+ .w-12 {
1768
+ width: 3rem;
1769
+ }
1770
+ .w-14 {
1771
+ width: 3.5rem;
1772
+ }
1773
+ .w-16 {
1774
+ width: 4rem;
1775
+ }
1776
+ .w-2 {
1777
+ width: 0.5rem;
1778
+ }
1779
+ .w-3 {
1780
+ width: 0.75rem;
1781
+ }
1782
+ .w-3\.5 {
1783
+ width: 0.875rem;
1784
+ }
1785
+ .w-32 {
1786
+ width: 8rem;
1787
+ }
1788
+ .w-4 {
1789
+ width: 1rem;
1790
+ }
1791
+ .w-44 {
1792
+ width: 11rem;
1793
+ }
1794
+ .w-48 {
1795
+ width: 12rem;
1796
+ }
1797
+ .w-5 {
1798
+ width: 1.25rem;
1799
+ }
1800
+ .w-56 {
1801
+ width: 14rem;
1802
+ }
1803
+ .w-6 {
1804
+ width: 1.5rem;
1805
+ }
1806
+ .w-7 {
1807
+ width: 1.75rem;
1808
+ }
1809
+ .w-72 {
1810
+ width: 18rem;
1811
+ }
1812
+ .w-8 {
1813
+ width: 2rem;
1814
+ }
1815
+ .w-80 {
1816
+ width: 20rem;
1817
+ }
1818
+ .w-9 {
1819
+ width: 2.25rem;
1820
+ }
1821
+ .w-\[0\.62em\] {
1822
+ width: 0.62em;
1823
+ }
1824
+ .w-\[12\.5\%\] {
1825
+ width: 12.5%;
1826
+ }
1827
+ .w-\[18px\] {
1828
+ width: 18px;
1829
+ }
1830
+ .w-fit {
1831
+ width: fit-content;
1832
+ }
1833
+ .w-full {
1834
+ width: 100%;
1835
+ }
1836
+ .w-max {
1837
+ width: max-content;
1838
+ }
1839
+ .w-px {
1840
+ width: 1px;
1841
+ }
1842
+ .min-w-0 {
1843
+ min-width: 0px;
1844
+ }
1845
+ .min-w-32 {
1846
+ min-width: 8rem;
1847
+ }
1848
+ .min-w-4 {
1849
+ min-width: 1rem;
1850
+ }
1851
+ .min-w-40 {
1852
+ min-width: 10rem;
1853
+ }
1854
+ .min-w-56 {
1855
+ min-width: 14rem;
1856
+ }
1857
+ .min-w-\[1\.5rem\] {
1858
+ min-width: 1.5rem;
1859
+ }
1860
+ .min-w-\[10rem\] {
1861
+ min-width: 10rem;
1862
+ }
1863
+ .min-w-\[2\.5rem\] {
1864
+ min-width: 2.5rem;
1865
+ }
1866
+ .min-w-\[4rem\] {
1867
+ min-width: 4rem;
1868
+ }
1869
+ .min-w-\[8rem\] {
1870
+ min-width: 8rem;
1871
+ }
1872
+ .max-w-\[520px\] {
1873
+ max-width: 520px;
1874
+ }
1875
+ .max-w-\[90vw\] {
1876
+ max-width: 90vw;
1877
+ }
1878
+ .max-w-lg {
1879
+ max-width: 32rem;
1880
+ }
1881
+ .max-w-md {
1882
+ max-width: 28rem;
1883
+ }
1884
+ .max-w-sm {
1885
+ max-width: 24rem;
1886
+ }
1887
+ .max-w-xs {
1888
+ max-width: 20rem;
1889
+ }
1890
+ .flex-1 {
1891
+ flex: 1 1 0%;
1892
+ }
1893
+ .shrink {
1894
+ flex-shrink: 1;
1895
+ }
1896
+ .shrink-0 {
1897
+ flex-shrink: 0;
1898
+ }
1899
+ .grow {
1900
+ flex-grow: 1;
1901
+ }
1902
+ .border-collapse {
1903
+ border-collapse: collapse;
1904
+ }
1905
+ .origin-left {
1906
+ transform-origin: left;
1907
+ }
1908
+ .origin-top {
1909
+ transform-origin: top;
1910
+ }
1911
+ .-translate-x-1\/2 {
1912
+ --tw-translate-x: -50%;
1913
+ 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));
1914
+ }
1915
+ .-translate-y-1\/2 {
1916
+ --tw-translate-y: -50%;
1917
+ 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));
1918
+ }
1919
+ .-rotate-90 {
1920
+ --tw-rotate: -90deg;
1921
+ 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));
1922
+ }
1923
+ .rotate-180 {
1924
+ --tw-rotate: 180deg;
1925
+ 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));
1926
+ }
1927
+ .rotate-45 {
1928
+ --tw-rotate: 45deg;
1929
+ 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));
1930
+ }
1931
+ .rotate-90 {
1932
+ --tw-rotate: 90deg;
1933
+ 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));
1934
+ }
1935
+ .transform {
1936
+ 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));
1937
+ }
1938
+ @keyframes pulse {
1939
+
1940
+ 50% {
1941
+ opacity: .5;
1942
+ }
1943
+ }
1944
+ .animate-pulse {
1945
+ animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
1946
+ }
1947
+ @keyframes spin {
1948
+
1949
+ to {
1950
+ transform: rotate(360deg);
1951
+ }
1952
+ }
1953
+ .animate-spin {
1954
+ animation: spin 1s linear infinite;
1955
+ }
1956
+ .cursor-col-resize {
1957
+ cursor: col-resize;
1958
+ }
1959
+ .cursor-grab {
1960
+ cursor: grab;
1961
+ }
1962
+ .cursor-not-allowed {
1963
+ cursor: not-allowed;
1964
+ }
1965
+ .cursor-pointer {
1966
+ cursor: pointer;
1967
+ }
1968
+ .cursor-row-resize {
1969
+ cursor: row-resize;
1970
+ }
1971
+ .cursor-zoom-in {
1972
+ cursor: zoom-in;
1973
+ }
1974
+ .select-none {
1975
+ user-select: none;
1976
+ }
1977
+ .resize-y {
1978
+ resize: vertical;
1979
+ }
1980
+ .resize {
1981
+ resize: both;
1982
+ }
1983
+ .list-none {
1984
+ list-style-type: none;
1985
+ }
1986
+ .grid-cols-1 {
1987
+ grid-template-columns: repeat(1, minmax(0, 1fr));
1988
+ }
1989
+ .grid-cols-2 {
1990
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1991
+ }
1992
+ .grid-cols-3 {
1993
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1994
+ }
1995
+ .grid-cols-7 {
1996
+ grid-template-columns: repeat(7, minmax(0, 1fr));
1997
+ }
1998
+ .flex-row {
1999
+ flex-direction: row;
2000
+ }
2001
+ .flex-col {
2002
+ flex-direction: column;
2003
+ }
2004
+ .flex-wrap {
2005
+ flex-wrap: wrap;
2006
+ }
2007
+ .place-items-center {
2008
+ place-items: center;
2009
+ }
2010
+ .items-start {
2011
+ align-items: flex-start;
2012
+ }
2013
+ .items-end {
2014
+ align-items: flex-end;
2015
+ }
2016
+ .items-center {
2017
+ align-items: center;
2018
+ }
2019
+ .items-baseline {
2020
+ align-items: baseline;
2021
+ }
2022
+ .items-stretch {
2023
+ align-items: stretch;
2024
+ }
2025
+ .justify-end {
2026
+ justify-content: flex-end;
2027
+ }
2028
+ .justify-center {
2029
+ justify-content: center;
2030
+ }
2031
+ .justify-between {
2032
+ justify-content: space-between;
2033
+ }
2034
+ .gap-0\.5 {
2035
+ gap: 0.125rem;
2036
+ }
2037
+ .gap-1 {
2038
+ gap: 0.25rem;
2039
+ }
2040
+ .gap-1\.5 {
2041
+ gap: 0.375rem;
2042
+ }
2043
+ .gap-2 {
2044
+ gap: 0.5rem;
2045
+ }
2046
+ .gap-2\.5 {
2047
+ gap: 0.625rem;
2048
+ }
2049
+ .gap-3 {
2050
+ gap: 0.75rem;
2051
+ }
2052
+ .gap-4 {
2053
+ gap: 1rem;
2054
+ }
2055
+ .gap-6 {
2056
+ gap: 1.5rem;
2057
+ }
2058
+ .gap-x-6 {
2059
+ column-gap: 1.5rem;
2060
+ }
2061
+ .space-y-0\.5 > :not([hidden]) ~ :not([hidden]) {
2062
+ --tw-space-y-reverse: 0;
2063
+ margin-top: calc(0.125rem * calc(1 - var(--tw-space-y-reverse)));
2064
+ margin-bottom: calc(0.125rem * var(--tw-space-y-reverse));
2065
+ }
2066
+ .space-y-1\.5 > :not([hidden]) ~ :not([hidden]) {
2067
+ --tw-space-y-reverse: 0;
2068
+ margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));
2069
+ margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));
2070
+ }
2071
+ .space-y-2 > :not([hidden]) ~ :not([hidden]) {
2072
+ --tw-space-y-reverse: 0;
2073
+ margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
2074
+ margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
2075
+ }
2076
+ .space-y-4 > :not([hidden]) ~ :not([hidden]) {
2077
+ --tw-space-y-reverse: 0;
2078
+ margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
2079
+ margin-bottom: calc(1rem * var(--tw-space-y-reverse));
2080
+ }
2081
+ .divide-x > :not([hidden]) ~ :not([hidden]) {
2082
+ --tw-divide-x-reverse: 0;
2083
+ border-right-width: calc(1px * var(--tw-divide-x-reverse));
2084
+ border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));
2085
+ }
2086
+ .divide-y > :not([hidden]) ~ :not([hidden]) {
2087
+ --tw-divide-y-reverse: 0;
2088
+ border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
2089
+ border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
2090
+ }
2091
+ .divide-border > :not([hidden]) ~ :not([hidden]) {
2092
+ --tw-divide-opacity: 1;
2093
+ border-color: hsl(var(--border) / var(--tw-divide-opacity, 1));
2094
+ }
2095
+ .self-stretch {
2096
+ align-self: stretch;
2097
+ }
2098
+ .overflow-auto {
2099
+ overflow: auto;
2100
+ }
2101
+ .overflow-hidden {
2102
+ overflow: hidden;
2103
+ }
2104
+ .overflow-visible {
2105
+ overflow: visible;
2106
+ }
2107
+ .overflow-x-auto {
2108
+ overflow-x: auto;
2109
+ }
2110
+ .overflow-y-auto {
2111
+ overflow-y: auto;
2112
+ }
2113
+ .truncate {
2114
+ overflow: hidden;
2115
+ text-overflow: ellipsis;
2116
+ white-space: nowrap;
2117
+ }
2118
+ .whitespace-nowrap {
2119
+ white-space: nowrap;
2120
+ }
2121
+ .break-words {
2122
+ overflow-wrap: break-word;
2123
+ }
2124
+ .rounded {
2125
+ border-radius: 0.25rem;
2126
+ }
2127
+ .rounded-2xl {
2128
+ border-radius: 1rem;
2129
+ }
2130
+ .rounded-full {
2131
+ border-radius: 9999px;
2132
+ }
2133
+ .rounded-lg {
2134
+ border-radius: 0.5rem;
2135
+ }
2136
+ .rounded-md {
2137
+ border-radius: 0.375rem;
2138
+ }
2139
+ .rounded-sm {
2140
+ border-radius: 0.125rem;
2141
+ }
2142
+ .rounded-xl {
2143
+ border-radius: 1rem;
2144
+ }
2145
+ .rounded-l-md {
2146
+ border-top-left-radius: 0.375rem;
2147
+ border-bottom-left-radius: 0.375rem;
2148
+ }
2149
+ .rounded-r-md {
2150
+ border-top-right-radius: 0.375rem;
2151
+ border-bottom-right-radius: 0.375rem;
2152
+ }
2153
+ .rounded-t {
2154
+ border-top-left-radius: 0.25rem;
2155
+ border-top-right-radius: 0.25rem;
2156
+ }
2157
+ .border {
2158
+ border-width: 1px;
2159
+ }
2160
+ .border-0 {
2161
+ border-width: 0px;
2162
+ }
2163
+ .border-2 {
2164
+ border-width: 2px;
2165
+ }
2166
+ .border-y {
2167
+ border-top-width: 1px;
2168
+ border-bottom-width: 1px;
2169
+ }
2170
+ .border-b {
2171
+ border-bottom-width: 1px;
2172
+ }
2173
+ .border-l {
2174
+ border-left-width: 1px;
2175
+ }
2176
+ .border-l-2 {
2177
+ border-left-width: 2px;
2178
+ }
2179
+ .border-r {
2180
+ border-right-width: 1px;
2181
+ }
2182
+ .border-t {
2183
+ border-top-width: 1px;
2184
+ }
2185
+ .border-dashed {
2186
+ border-style: dashed;
2187
+ }
2188
+ .border-amber-500\/30 {
2189
+ border-color: rgb(245 158 11 / 0.3);
2190
+ }
2191
+ .border-border {
2192
+ --tw-border-opacity: 1;
2193
+ border-color: hsl(var(--border) / var(--tw-border-opacity, 1));
2194
+ }
2195
+ .border-destructive\/30 {
2196
+ border-color: hsl(var(--destructive) / 0.3);
2197
+ }
2198
+ .border-emerald-500\/30 {
2199
+ border-color: rgb(16 185 129 / 0.3);
2200
+ }
2201
+ .border-input {
2202
+ --tw-border-opacity: 1;
2203
+ border-color: hsl(var(--input) / var(--tw-border-opacity, 1));
2204
+ }
2205
+ .border-primary {
2206
+ --tw-border-opacity: 1;
2207
+ border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));
2208
+ }
2209
+ .border-primary\/40 {
2210
+ border-color: hsl(var(--primary) / 0.4);
2211
+ }
2212
+ .border-ring {
2213
+ --tw-border-opacity: 1;
2214
+ border-color: hsl(var(--ring) / var(--tw-border-opacity, 1));
2215
+ }
2216
+ .border-ring\/60 {
2217
+ border-color: hsl(var(--ring) / 0.6);
2218
+ }
2219
+ .border-rose-500\/30 {
2220
+ border-color: rgb(244 63 94 / 0.3);
2221
+ }
2222
+ .border-sky-500\/30 {
2223
+ border-color: rgb(14 165 233 / 0.3);
2224
+ }
2225
+ .bg-accent {
2226
+ --tw-bg-opacity: 1;
2227
+ background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));
2228
+ }
2229
+ .bg-amber-500\/10 {
2230
+ background-color: rgb(245 158 11 / 0.1);
2231
+ }
2232
+ .bg-amber-500\/15 {
2233
+ background-color: rgb(245 158 11 / 0.15);
2234
+ }
2235
+ .bg-background {
2236
+ --tw-bg-opacity: 1;
2237
+ background-color: hsl(var(--background) / var(--tw-bg-opacity, 1));
2238
+ }
2239
+ .bg-background\/70 {
2240
+ background-color: hsl(var(--background) / 0.7);
2241
+ }
2242
+ .bg-background\/80 {
2243
+ background-color: hsl(var(--background) / 0.8);
2244
+ }
2245
+ .bg-background\/85 {
2246
+ background-color: hsl(var(--background) / 0.85);
2247
+ }
2248
+ .bg-background\/90 {
2249
+ background-color: hsl(var(--background) / 0.9);
2250
+ }
2251
+ .bg-black\/50 {
2252
+ background-color: rgb(0 0 0 / 0.5);
2253
+ }
2254
+ .bg-border {
2255
+ --tw-bg-opacity: 1;
2256
+ background-color: hsl(var(--border) / var(--tw-bg-opacity, 1));
2257
+ }
2258
+ .bg-card {
2259
+ --tw-bg-opacity: 1;
2260
+ background-color: hsl(var(--card) / var(--tw-bg-opacity, 1));
2261
+ }
2262
+ .bg-current {
2263
+ background-color: currentColor;
2264
+ }
2265
+ .bg-destructive {
2266
+ --tw-bg-opacity: 1;
2267
+ background-color: hsl(var(--destructive) / var(--tw-bg-opacity, 1));
2268
+ }
2269
+ .bg-destructive\/10 {
2270
+ background-color: hsl(var(--destructive) / 0.1);
2271
+ }
2272
+ .bg-destructive\/15 {
2273
+ background-color: hsl(var(--destructive) / 0.15);
2274
+ }
2275
+ .bg-emerald-500 {
2276
+ --tw-bg-opacity: 1;
2277
+ background-color: rgb(16 185 129 / var(--tw-bg-opacity, 1));
2278
+ }
2279
+ .bg-emerald-500\/10 {
2280
+ background-color: rgb(16 185 129 / 0.1);
2281
+ }
2282
+ .bg-emerald-500\/15 {
2283
+ background-color: rgb(16 185 129 / 0.15);
2284
+ }
2285
+ .bg-green-500\/15 {
2286
+ background-color: rgb(34 197 94 / 0.15);
2287
+ }
2288
+ .bg-input {
2289
+ --tw-bg-opacity: 1;
2290
+ background-color: hsl(var(--input) / var(--tw-bg-opacity, 1));
2291
+ }
2292
+ .bg-muted {
2293
+ --tw-bg-opacity: 1;
2294
+ background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));
2295
+ }
2296
+ .bg-muted\/80 {
2297
+ background-color: hsl(var(--muted) / 0.8);
2298
+ }
2299
+ .bg-primary {
2300
+ --tw-bg-opacity: 1;
2301
+ background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));
2302
+ }
2303
+ .bg-primary\/10 {
2304
+ background-color: hsl(var(--primary) / 0.1);
2305
+ }
2306
+ .bg-primary\/15 {
2307
+ background-color: hsl(var(--primary) / 0.15);
2308
+ }
2309
+ .bg-primary\/20 {
2310
+ background-color: hsl(var(--primary) / 0.2);
2311
+ }
2312
+ .bg-primary\/25 {
2313
+ background-color: hsl(var(--primary) / 0.25);
2314
+ }
2315
+ .bg-primary\/30 {
2316
+ background-color: hsl(var(--primary) / 0.3);
2317
+ }
2318
+ .bg-primary\/45 {
2319
+ background-color: hsl(var(--primary) / 0.45);
2320
+ }
2321
+ .bg-primary\/5 {
2322
+ background-color: hsl(var(--primary) / 0.05);
2323
+ }
2324
+ .bg-primary\/70 {
2325
+ background-color: hsl(var(--primary) / 0.7);
2326
+ }
2327
+ .bg-rose-500\/10 {
2328
+ background-color: rgb(244 63 94 / 0.1);
2329
+ }
2330
+ .bg-rose-500\/15 {
2331
+ background-color: rgb(244 63 94 / 0.15);
2332
+ }
2333
+ .bg-sky-500\/10 {
2334
+ background-color: rgb(14 165 233 / 0.1);
2335
+ }
2336
+ .bg-sky-500\/15 {
2337
+ background-color: rgb(14 165 233 / 0.15);
2338
+ }
2339
+ .bg-transparent {
2340
+ background-color: transparent;
2341
+ }
2342
+ .bg-white {
2343
+ --tw-bg-opacity: 1;
2344
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
2345
+ }
2346
+ .fill-primary {
2347
+ fill: hsl(var(--primary) / 1);
2348
+ }
2349
+ .fill-transparent {
2350
+ fill: transparent;
2351
+ }
2352
+ .object-contain {
2353
+ object-fit: contain;
2354
+ }
2355
+ .object-cover {
2356
+ object-fit: cover;
2357
+ }
2358
+ .p-0 {
2359
+ padding: 0px;
2360
+ }
2361
+ .p-1 {
2362
+ padding: 0.25rem;
2363
+ }
2364
+ .p-2 {
2365
+ padding: 0.5rem;
2366
+ }
2367
+ .p-3 {
2368
+ padding: 0.75rem;
2369
+ }
2370
+ .p-4 {
2371
+ padding: 1rem;
2372
+ }
2373
+ .p-5 {
2374
+ padding: 1.25rem;
2375
+ }
2376
+ .p-6 {
2377
+ padding: 1.5rem;
2378
+ }
2379
+ .px-0\.5 {
2380
+ padding-left: 0.125rem;
2381
+ padding-right: 0.125rem;
2382
+ }
2383
+ .px-1 {
2384
+ padding-left: 0.25rem;
2385
+ padding-right: 0.25rem;
2386
+ }
2387
+ .px-1\.5 {
2388
+ padding-left: 0.375rem;
2389
+ padding-right: 0.375rem;
2390
+ }
2391
+ .px-2 {
2392
+ padding-left: 0.5rem;
2393
+ padding-right: 0.5rem;
2394
+ }
2395
+ .px-2\.5 {
2396
+ padding-left: 0.625rem;
2397
+ padding-right: 0.625rem;
2398
+ }
2399
+ .px-3 {
2400
+ padding-left: 0.75rem;
2401
+ padding-right: 0.75rem;
2402
+ }
2403
+ .px-4 {
2404
+ padding-left: 1rem;
2405
+ padding-right: 1rem;
2406
+ }
2407
+ .px-5 {
2408
+ padding-left: 1.25rem;
2409
+ padding-right: 1.25rem;
2410
+ }
2411
+ .px-6 {
2412
+ padding-left: 1.5rem;
2413
+ padding-right: 1.5rem;
2414
+ }
2415
+ .py-0 {
2416
+ padding-top: 0px;
2417
+ padding-bottom: 0px;
2418
+ }
2419
+ .py-0\.5 {
2420
+ padding-top: 0.125rem;
2421
+ padding-bottom: 0.125rem;
2422
+ }
2423
+ .py-1 {
2424
+ padding-top: 0.25rem;
2425
+ padding-bottom: 0.25rem;
2426
+ }
2427
+ .py-1\.5 {
2428
+ padding-top: 0.375rem;
2429
+ padding-bottom: 0.375rem;
2430
+ }
2431
+ .py-10 {
2432
+ padding-top: 2.5rem;
2433
+ padding-bottom: 2.5rem;
2434
+ }
2435
+ .py-12 {
2436
+ padding-top: 3rem;
2437
+ padding-bottom: 3rem;
2438
+ }
2439
+ .py-2 {
2440
+ padding-top: 0.5rem;
2441
+ padding-bottom: 0.5rem;
2442
+ }
2443
+ .py-20 {
2444
+ padding-top: 5rem;
2445
+ padding-bottom: 5rem;
2446
+ }
2447
+ .py-24 {
2448
+ padding-top: 6rem;
2449
+ padding-bottom: 6rem;
2450
+ }
2451
+ .py-3 {
2452
+ padding-top: 0.75rem;
2453
+ padding-bottom: 0.75rem;
2454
+ }
2455
+ .py-4 {
2456
+ padding-top: 1rem;
2457
+ padding-bottom: 1rem;
2458
+ }
2459
+ .py-6 {
2460
+ padding-top: 1.5rem;
2461
+ padding-bottom: 1.5rem;
2462
+ }
2463
+ .py-8 {
2464
+ padding-top: 2rem;
2465
+ padding-bottom: 2rem;
2466
+ }
2467
+ .pb-1 {
2468
+ padding-bottom: 0.25rem;
2469
+ }
2470
+ .pb-3 {
2471
+ padding-bottom: 0.75rem;
2472
+ }
2473
+ .pb-4 {
2474
+ padding-bottom: 1rem;
2475
+ }
2476
+ .pl-1 {
2477
+ padding-left: 0.25rem;
2478
+ }
2479
+ .pl-2 {
2480
+ padding-left: 0.5rem;
2481
+ }
2482
+ .pl-4 {
2483
+ padding-left: 1rem;
2484
+ }
2485
+ .pr-1 {
2486
+ padding-right: 0.25rem;
2487
+ }
2488
+ .pt-0 {
2489
+ padding-top: 0px;
2490
+ }
2491
+ .pt-1 {
2492
+ padding-top: 0.25rem;
2493
+ }
2494
+ .pt-2 {
2495
+ padding-top: 0.5rem;
2496
+ }
2497
+ .pt-4 {
2498
+ padding-top: 1rem;
2499
+ }
2500
+ .text-left {
2501
+ text-align: left;
2502
+ }
2503
+ .text-center {
2504
+ text-align: center;
2505
+ }
2506
+ .text-right {
2507
+ text-align: right;
2508
+ }
2509
+ .align-top {
2510
+ vertical-align: top;
2511
+ }
2512
+ .align-middle {
2513
+ vertical-align: middle;
2514
+ }
2515
+ .font-mono {
2516
+ font-family: "IBM Plex Mono", ui-monospace, monospace;
2517
+ }
2518
+ .text-2xl {
2519
+ font-size: 1.5rem;
2520
+ line-height: 2rem;
2521
+ }
2522
+ .text-4xl {
2523
+ font-size: 2.25rem;
2524
+ line-height: 2.5rem;
2525
+ }
2526
+ .text-5xl {
2527
+ font-size: 3rem;
2528
+ line-height: 1;
2529
+ }
2530
+ .text-\[10px\] {
2531
+ font-size: 10px;
2532
+ }
2533
+ .text-\[11px\] {
2534
+ font-size: 11px;
2535
+ }
2536
+ .text-\[12px\] {
2537
+ font-size: 12px;
2538
+ }
2539
+ .text-\[13px\] {
2540
+ font-size: 13px;
2541
+ }
2542
+ .text-\[16px\] {
2543
+ font-size: 16px;
2544
+ }
2545
+ .text-\[9px\] {
2546
+ font-size: 9px;
2547
+ }
2548
+ .text-base {
2549
+ font-size: 1rem;
2550
+ line-height: 1.5rem;
2551
+ }
2552
+ .text-lg {
2553
+ font-size: 1.125rem;
2554
+ line-height: 1.75rem;
2555
+ }
2556
+ .text-sm {
2557
+ font-size: 0.875rem;
2558
+ line-height: 1.25rem;
2559
+ }
2560
+ .text-xl {
2561
+ font-size: 1.25rem;
2562
+ line-height: 1.75rem;
2563
+ }
2564
+ .text-xs {
2565
+ font-size: 0.75rem;
2566
+ line-height: 1rem;
2567
+ }
2568
+ .font-bold {
2569
+ font-weight: 700;
2570
+ }
2571
+ .font-medium {
2572
+ font-weight: 500;
2573
+ }
2574
+ .font-normal {
2575
+ font-weight: 400;
2576
+ }
2577
+ .font-semibold {
2578
+ font-weight: 600;
2579
+ }
2580
+ .uppercase {
2581
+ text-transform: uppercase;
2582
+ }
2583
+ .capitalize {
2584
+ text-transform: capitalize;
2585
+ }
2586
+ .tabular-nums {
2587
+ --tw-numeric-spacing: tabular-nums;
2588
+ font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
2589
+ }
2590
+ .leading-none {
2591
+ line-height: 1;
2592
+ }
2593
+ .leading-tight {
2594
+ line-height: 1.25;
2595
+ }
2596
+ .tracking-tight {
2597
+ letter-spacing: -0.025em;
2598
+ }
2599
+ .tracking-wide {
2600
+ letter-spacing: 0.025em;
2601
+ }
2602
+ .text-accent-foreground {
2603
+ --tw-text-opacity: 1;
2604
+ color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));
2605
+ }
2606
+ .text-amber-500 {
2607
+ --tw-text-opacity: 1;
2608
+ color: rgb(245 158 11 / var(--tw-text-opacity, 1));
2609
+ }
2610
+ .text-amber-600 {
2611
+ --tw-text-opacity: 1;
2612
+ color: rgb(217 119 6 / var(--tw-text-opacity, 1));
2613
+ }
2614
+ .text-card-foreground {
2615
+ --tw-text-opacity: 1;
2616
+ color: hsl(var(--card-foreground) / var(--tw-text-opacity, 1));
2617
+ }
2618
+ .text-current {
2619
+ color: currentColor;
2620
+ }
2621
+ .text-destructive {
2622
+ --tw-text-opacity: 1;
2623
+ color: hsl(var(--destructive) / var(--tw-text-opacity, 1));
2624
+ }
2625
+ .text-destructive-foreground {
2626
+ --tw-text-opacity: 1;
2627
+ color: hsl(var(--destructive-foreground) / var(--tw-text-opacity, 1));
2628
+ }
2629
+ .text-emerald-500 {
2630
+ --tw-text-opacity: 1;
2631
+ color: rgb(16 185 129 / var(--tw-text-opacity, 1));
2632
+ }
2633
+ .text-emerald-600 {
2634
+ --tw-text-opacity: 1;
2635
+ color: rgb(5 150 105 / var(--tw-text-opacity, 1));
2636
+ }
2637
+ .text-foreground {
2638
+ --tw-text-opacity: 1;
2639
+ color: hsl(var(--foreground) / var(--tw-text-opacity, 1));
2640
+ }
2641
+ .text-green-600 {
2642
+ --tw-text-opacity: 1;
2643
+ color: rgb(22 163 74 / var(--tw-text-opacity, 1));
2644
+ }
2645
+ .text-muted-foreground {
2646
+ --tw-text-opacity: 1;
2647
+ color: hsl(var(--muted-foreground) / var(--tw-text-opacity, 1));
2648
+ }
2649
+ .text-muted-foreground\/50 {
2650
+ color: hsl(var(--muted-foreground) / 0.5);
2651
+ }
2652
+ .text-muted-foreground\/60 {
2653
+ color: hsl(var(--muted-foreground) / 0.6);
2654
+ }
2655
+ .text-primary {
2656
+ --tw-text-opacity: 1;
2657
+ color: hsl(var(--primary) / var(--tw-text-opacity, 1));
2658
+ }
2659
+ .text-primary-foreground {
2660
+ --tw-text-opacity: 1;
2661
+ color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));
2662
+ }
2663
+ .text-red-500 {
2664
+ --tw-text-opacity: 1;
2665
+ color: rgb(239 68 68 / var(--tw-text-opacity, 1));
2666
+ }
2667
+ .text-rose-500 {
2668
+ --tw-text-opacity: 1;
2669
+ color: rgb(244 63 94 / var(--tw-text-opacity, 1));
2670
+ }
2671
+ .text-rose-600 {
2672
+ --tw-text-opacity: 1;
2673
+ color: rgb(225 29 72 / var(--tw-text-opacity, 1));
2674
+ }
2675
+ .text-sky-500 {
2676
+ --tw-text-opacity: 1;
2677
+ color: rgb(14 165 233 / var(--tw-text-opacity, 1));
2678
+ }
2679
+ .text-sky-600 {
2680
+ --tw-text-opacity: 1;
2681
+ color: rgb(2 132 199 / var(--tw-text-opacity, 1));
2682
+ }
2683
+ .line-through {
2684
+ text-decoration-line: line-through;
2685
+ }
2686
+ .accent-foreground {
2687
+ accent-color: hsl(var(--foreground) / 1);
2688
+ }
2689
+ .accent-primary {
2690
+ accent-color: hsl(var(--primary) / 1);
2691
+ }
2692
+ .opacity-25 {
2693
+ opacity: 0.25;
2694
+ }
2695
+ .opacity-50 {
2696
+ opacity: 0.5;
2697
+ }
2698
+ .opacity-60 {
2699
+ opacity: 0.6;
2700
+ }
2701
+ .opacity-75 {
2702
+ opacity: 0.75;
2703
+ }
2704
+ .shadow {
2705
+ --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
2706
+ --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
2707
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2708
+ }
2709
+ .shadow-2xl {
2710
+ --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
2711
+ --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
2712
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2713
+ }
2714
+ .shadow-lg {
2715
+ --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
2716
+ --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
2717
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2718
+ }
2719
+ .shadow-md {
2720
+ --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
2721
+ --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
2722
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2723
+ }
2724
+ .shadow-sm {
2725
+ --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
2726
+ --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
2727
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2728
+ }
2729
+ .outline-none {
2730
+ outline: 2px solid transparent;
2731
+ outline-offset: 2px;
2732
+ }
2733
+ .outline {
2734
+ outline-style: solid;
2735
+ }
2736
+ .ring {
2737
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2738
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2739
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2740
+ }
2741
+ .ring-1 {
2742
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2743
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2744
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2745
+ }
2746
+ .ring-2 {
2747
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2748
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2749
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2750
+ }
2751
+ .ring-inset {
2752
+ --tw-ring-inset: inset;
2753
+ }
2754
+ .ring-amber-500\/30 {
2755
+ --tw-ring-color: rgb(245 158 11 / 0.3);
2756
+ }
2757
+ .ring-background {
2758
+ --tw-ring-opacity: 1;
2759
+ --tw-ring-color: hsl(var(--background) / var(--tw-ring-opacity, 1));
2760
+ }
2761
+ .ring-border {
2762
+ --tw-ring-opacity: 1;
2763
+ --tw-ring-color: hsl(var(--border) / var(--tw-ring-opacity, 1));
2764
+ }
2765
+ .ring-emerald-500\/30 {
2766
+ --tw-ring-color: rgb(16 185 129 / 0.3);
2767
+ }
2768
+ .ring-primary {
2769
+ --tw-ring-opacity: 1;
2770
+ --tw-ring-color: hsl(var(--primary) / var(--tw-ring-opacity, 1));
2771
+ }
2772
+ .ring-primary\/40 {
2773
+ --tw-ring-color: hsl(var(--primary) / 0.4);
2774
+ }
2775
+ .ring-ring {
2776
+ --tw-ring-opacity: 1;
2777
+ --tw-ring-color: hsl(var(--ring) / var(--tw-ring-opacity, 1));
2778
+ }
2779
+ .ring-rose-500\/30 {
2780
+ --tw-ring-color: rgb(244 63 94 / 0.3);
2781
+ }
2782
+ .ring-sky-500\/30 {
2783
+ --tw-ring-color: rgb(14 165 233 / 0.3);
2784
+ }
2785
+ .ring-offset-1 {
2786
+ --tw-ring-offset-width: 1px;
2787
+ }
2788
+ .ring-offset-background {
2789
+ --tw-ring-offset-color: hsl(var(--background) / 1);
2790
+ }
2791
+ .blur {
2792
+ --tw-blur: blur(8px);
2793
+ 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);
2794
+ }
2795
+ .brightness-110 {
2796
+ --tw-brightness: brightness(1.1);
2797
+ 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);
2798
+ }
2799
+ .drop-shadow {
2800
+ --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));
2801
+ 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);
2802
+ }
2803
+ .filter {
2804
+ 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);
2805
+ }
2806
+ .backdrop-blur {
2807
+ --tw-backdrop-blur: blur(8px);
2808
+ -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);
2809
+ 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);
2810
+ }
2811
+ .backdrop-blur-\[2px\] {
2812
+ --tw-backdrop-blur: blur(2px);
2813
+ -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);
2814
+ 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);
2815
+ }
2816
+ .backdrop-blur-sm {
2817
+ --tw-backdrop-blur: blur(4px);
2818
+ -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);
2819
+ 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);
2820
+ }
2821
+ .backdrop-filter {
2822
+ -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);
2823
+ 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);
2824
+ }
2825
+ .transition {
2826
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
2827
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2828
+ transition-duration: 150ms;
2829
+ }
2830
+ .transition-\[color\2c background-color\2c transform\] {
2831
+ transition-property: color,background-color,transform;
2832
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2833
+ transition-duration: 150ms;
2834
+ }
2835
+ .transition-\[transform\2c opacity\] {
2836
+ transition-property: transform,opacity;
2837
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2838
+ transition-duration: 150ms;
2839
+ }
2840
+ .transition-all {
2841
+ transition-property: all;
2842
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2843
+ transition-duration: 150ms;
2844
+ }
2845
+ .transition-colors {
2846
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
2847
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2848
+ transition-duration: 150ms;
2849
+ }
2850
+ .transition-opacity {
2851
+ transition-property: opacity;
2852
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2853
+ transition-duration: 150ms;
2854
+ }
2855
+ .transition-transform {
2856
+ transition-property: transform;
2857
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2858
+ transition-duration: 150ms;
2859
+ }
2860
+ .duration-150 {
2861
+ transition-duration: 150ms;
2862
+ }
2863
+ .duration-200 {
2864
+ transition-duration: 200ms;
2865
+ }
2866
+ .duration-300 {
2867
+ transition-duration: 300ms;
2868
+ }
2869
+ .duration-500 {
2870
+ transition-duration: 500ms;
2871
+ }
2872
+ .ease-in-out {
2873
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2874
+ }
2875
+ .ease-out {
2876
+ transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
2877
+ }
2878
+ .will-change-transform {
2879
+ will-change: transform;
2880
+ }
2881
+ .placeholder\:text-muted-foreground::placeholder {
2882
+ --tw-text-opacity: 1;
2883
+ color: hsl(var(--muted-foreground) / var(--tw-text-opacity, 1));
2884
+ }
2885
+ .last\:flex-none:last-child {
2886
+ flex: none;
2887
+ }
2888
+ .last\:border-0:last-child {
2889
+ border-width: 0px;
2890
+ }
2891
+ .last\:border-r-0:last-child {
2892
+ border-right-width: 0px;
2893
+ }
2894
+ .focus-within\:border-ring:focus-within {
2895
+ --tw-border-opacity: 1;
2896
+ border-color: hsl(var(--ring) / var(--tw-border-opacity, 1));
2897
+ }
2898
+ .focus-within\:ring-2:focus-within {
2899
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2900
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2901
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2902
+ }
2903
+ .focus-within\:ring-ring\/30:focus-within {
2904
+ --tw-ring-color: hsl(var(--ring) / 0.3);
2905
+ }
2906
+ .hover\:border-primary:hover {
2907
+ --tw-border-opacity: 1;
2908
+ border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));
2909
+ }
2910
+ .hover\:border-ring\/60:hover {
2911
+ border-color: hsl(var(--ring) / 0.6);
2912
+ }
2913
+ .hover\:bg-muted:hover {
2914
+ --tw-bg-opacity: 1;
2915
+ background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));
2916
+ }
2917
+ .hover\:bg-muted\/40:hover {
2918
+ background-color: hsl(var(--muted) / 0.4);
2919
+ }
2920
+ .hover\:bg-muted\/70:hover {
2921
+ background-color: hsl(var(--muted) / 0.7);
2922
+ }
2923
+ .hover\:bg-primary\/5:hover {
2924
+ background-color: hsl(var(--primary) / 0.05);
2925
+ }
2926
+ .hover\:bg-primary\/50:hover {
2927
+ background-color: hsl(var(--primary) / 0.5);
2928
+ }
2929
+ .hover\:bg-primary\/90:hover {
2930
+ background-color: hsl(var(--primary) / 0.9);
2931
+ }
2932
+ .hover\:text-foreground:hover {
2933
+ --tw-text-opacity: 1;
2934
+ color: hsl(var(--foreground) / var(--tw-text-opacity, 1));
2935
+ }
2936
+ .hover\:underline:hover {
2937
+ text-decoration-line: underline;
2938
+ }
2939
+ .hover\:opacity-90:hover {
2940
+ opacity: 0.9;
2941
+ }
2942
+ .hover\:brightness-110:hover {
2943
+ --tw-brightness: brightness(1.1);
2944
+ 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);
2945
+ }
2946
+ .hover\:\[animation-play-state\:paused\]:hover {
2947
+ animation-play-state: paused;
2948
+ }
2949
+ .focus\:bg-muted:focus {
2950
+ --tw-bg-opacity: 1;
2951
+ background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));
2952
+ }
2953
+ .focus\:outline-none:focus {
2954
+ outline: 2px solid transparent;
2955
+ outline-offset: 2px;
2956
+ }
2957
+ .focus\:ring-2:focus {
2958
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2959
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2960
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2961
+ }
2962
+ .focus\:ring-ring:focus {
2963
+ --tw-ring-opacity: 1;
2964
+ --tw-ring-color: hsl(var(--ring) / var(--tw-ring-opacity, 1));
2965
+ }
2966
+ .focus\:ring-ring\/30:focus {
2967
+ --tw-ring-color: hsl(var(--ring) / 0.3);
2968
+ }
2969
+ .focus\:ring-ring\/40:focus {
2970
+ --tw-ring-color: hsl(var(--ring) / 0.4);
2971
+ }
2972
+ .focus-visible\:bg-primary\/50:focus-visible {
2973
+ background-color: hsl(var(--primary) / 0.5);
2974
+ }
2975
+ .focus-visible\:outline-none:focus-visible {
2976
+ outline: 2px solid transparent;
2977
+ outline-offset: 2px;
2978
+ }
2979
+ .focus-visible\:ring-2:focus-visible {
2980
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2981
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2982
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2983
+ }
2984
+ .focus-visible\:ring-primary:focus-visible {
2985
+ --tw-ring-opacity: 1;
2986
+ --tw-ring-color: hsl(var(--primary) / var(--tw-ring-opacity, 1));
2987
+ }
2988
+ .focus-visible\:ring-ring\/40:focus-visible {
2989
+ --tw-ring-color: hsl(var(--ring) / 0.4);
2990
+ }
2991
+ .active\:scale-90:active {
2992
+ --tw-scale-x: .9;
2993
+ --tw-scale-y: .9;
2994
+ 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));
2995
+ }
2996
+ .active\:scale-\[0\.97\]:active {
2997
+ --tw-scale-x: 0.97;
2998
+ --tw-scale-y: 0.97;
2999
+ 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));
3000
+ }
3001
+ .active\:cursor-grabbing:active {
3002
+ cursor: grabbing;
3003
+ }
3004
+ .disabled\:pointer-events-none:disabled {
3005
+ pointer-events: none;
3006
+ }
3007
+ .disabled\:cursor-not-allowed:disabled {
3008
+ cursor: not-allowed;
3009
+ }
3010
+ .disabled\:opacity-40:disabled {
3011
+ opacity: 0.4;
3012
+ }
3013
+ .disabled\:opacity-50:disabled {
3014
+ opacity: 0.5;
3015
+ }
3016
+ .group[open] .group-\[\[open\]\]\:rotate-90 {
3017
+ --tw-rotate: 90deg;
3018
+ 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));
3019
+ }
3020
+ .aria-pressed\:text-primary[aria-pressed="true"] {
3021
+ --tw-text-opacity: 1;
3022
+ color: hsl(var(--primary) / var(--tw-text-opacity, 1));
3023
+ }
3024
+ .data-\[disabled\]\:pointer-events-none[data-disabled] {
3025
+ pointer-events: none;
3026
+ }
3027
+ .data-\[checked\]\:translate-x-4[data-checked] {
3028
+ --tw-translate-x: 1rem;
3029
+ 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));
3030
+ }
3031
+ .data-\[disabled\]\:cursor-not-allowed[data-disabled] {
3032
+ cursor: not-allowed;
3033
+ }
3034
+ .data-\[checked\]\:border-primary[data-checked] {
3035
+ --tw-border-opacity: 1;
3036
+ border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));
3037
+ }
3038
+ .data-\[pressed\]\:border-primary[data-pressed] {
3039
+ --tw-border-opacity: 1;
3040
+ border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));
3041
+ }
3042
+ .data-\[checked\]\:bg-primary[data-checked] {
3043
+ --tw-bg-opacity: 1;
3044
+ background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));
3045
+ }
3046
+ .data-\[highlighted\]\:bg-muted[data-highlighted] {
3047
+ --tw-bg-opacity: 1;
3048
+ background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));
3049
+ }
3050
+ .data-\[pressed\]\:bg-primary[data-pressed] {
3051
+ --tw-bg-opacity: 1;
3052
+ background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));
3053
+ }
3054
+ .data-\[pressed\]\:text-primary-foreground[data-pressed] {
3055
+ --tw-text-opacity: 1;
3056
+ color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));
3057
+ }
3058
+ .data-\[selected\]\:text-foreground[data-selected] {
3059
+ --tw-text-opacity: 1;
3060
+ color: hsl(var(--foreground) / var(--tw-text-opacity, 1));
3061
+ }
3062
+ .data-\[selected\]\:text-primary-foreground[data-selected] {
3063
+ --tw-text-opacity: 1;
3064
+ color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));
3065
+ }
3066
+ .data-\[disabled\]\:opacity-50[data-disabled] {
3067
+ opacity: 0.5;
3068
+ }
3069
+ @media (min-width: 640px) {
3070
+
3071
+ .sm\:grid-cols-2 {
3072
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3073
+ }
3074
+
3075
+ .sm\:grid-cols-3 {
3076
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3077
+ }
3078
+
3079
+ .sm\:flex-row {
3080
+ flex-direction: row;
3081
+ }
3082
+
3083
+ .sm\:items-end {
3084
+ align-items: flex-end;
3085
+ }
3086
+
3087
+ .sm\:items-center {
3088
+ align-items: center;
3089
+ }
3090
+
3091
+ .sm\:justify-between {
3092
+ justify-content: space-between;
3093
+ }
3094
+
3095
+ .sm\:px-6 {
3096
+ padding-left: 1.5rem;
3097
+ padding-right: 1.5rem;
3098
+ }
3099
+ }
3100
+ @media (min-width: 1024px) {
3101
+
3102
+ .lg\:grid-cols-4 {
3103
+ grid-template-columns: repeat(4, minmax(0, 1fr));
3104
+ }
3105
+ }
3106
+ .\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker {
3107
+ display: none;
3108
+ }
3109
+ .\[\&\[data-expanded\]\>svg\]\:rotate-90[data-expanded]>svg {
3110
+ --tw-rotate: 90deg;
3111
+ 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));
3112
+ }