@chaaskit/client 0.1.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 (135) hide show
  1. package/dist/favicon.svg +11 -0
  2. package/dist/index.html +17 -0
  3. package/dist/lib/LoadingSkeletons-IcIC2JPq.js +132 -0
  4. package/dist/lib/LoadingSkeletons-IcIC2JPq.js.map +1 -0
  5. package/dist/lib/ServerThemeProvider-DNF0LAyk.js +42 -0
  6. package/dist/lib/ServerThemeProvider-DNF0LAyk.js.map +1 -0
  7. package/dist/lib/extensions.js +10 -0
  8. package/dist/lib/extensions.js.map +1 -0
  9. package/dist/lib/favicon.svg +11 -0
  10. package/dist/lib/index.js +74126 -0
  11. package/dist/lib/index.js.map +1 -0
  12. package/dist/lib/logo.svg +12 -0
  13. package/dist/lib/routes/AcceptInviteRoute.js +19 -0
  14. package/dist/lib/routes/AcceptInviteRoute.js.map +1 -0
  15. package/dist/lib/routes/AdminDashboardRoute.js +19 -0
  16. package/dist/lib/routes/AdminDashboardRoute.js.map +1 -0
  17. package/dist/lib/routes/AdminTeamRoute.js +19 -0
  18. package/dist/lib/routes/AdminTeamRoute.js.map +1 -0
  19. package/dist/lib/routes/AdminTeamsRoute.js +19 -0
  20. package/dist/lib/routes/AdminTeamsRoute.js.map +1 -0
  21. package/dist/lib/routes/AdminUsersRoute.js +19 -0
  22. package/dist/lib/routes/AdminUsersRoute.js.map +1 -0
  23. package/dist/lib/routes/ApiKeysRoute.js +19 -0
  24. package/dist/lib/routes/ApiKeysRoute.js.map +1 -0
  25. package/dist/lib/routes/AutomationsRoute.js +19 -0
  26. package/dist/lib/routes/AutomationsRoute.js.map +1 -0
  27. package/dist/lib/routes/ChatRoute.js +19 -0
  28. package/dist/lib/routes/ChatRoute.js.map +1 -0
  29. package/dist/lib/routes/DocumentsRoute.js +19 -0
  30. package/dist/lib/routes/DocumentsRoute.js.map +1 -0
  31. package/dist/lib/routes/OAuthConsentRoute.js +19 -0
  32. package/dist/lib/routes/OAuthConsentRoute.js.map +1 -0
  33. package/dist/lib/routes/PricingRoute.js +19 -0
  34. package/dist/lib/routes/PricingRoute.js.map +1 -0
  35. package/dist/lib/routes/PrivacyRoute.js +19 -0
  36. package/dist/lib/routes/PrivacyRoute.js.map +1 -0
  37. package/dist/lib/routes/TeamSettingsRoute.js +19 -0
  38. package/dist/lib/routes/TeamSettingsRoute.js.map +1 -0
  39. package/dist/lib/routes/TermsRoute.js +19 -0
  40. package/dist/lib/routes/TermsRoute.js.map +1 -0
  41. package/dist/lib/routes/VerifyEmailRoute.js +19 -0
  42. package/dist/lib/routes/VerifyEmailRoute.js.map +1 -0
  43. package/dist/lib/routes.js +79 -0
  44. package/dist/lib/routes.js.map +1 -0
  45. package/dist/lib/ssr-utils.js +29 -0
  46. package/dist/lib/ssr-utils.js.map +1 -0
  47. package/dist/lib/ssr.js +60 -0
  48. package/dist/lib/ssr.js.map +1 -0
  49. package/dist/lib/styles.css +2410 -0
  50. package/dist/lib/useExtensions-B5nX_8XD.js +155 -0
  51. package/dist/lib/useExtensions-B5nX_8XD.js.map +1 -0
  52. package/dist/logo.svg +12 -0
  53. package/package.json +84 -0
  54. package/src/components/AgentSelector.tsx +90 -0
  55. package/src/components/BranchModal.tsx +129 -0
  56. package/src/components/ClientOnly.tsx +27 -0
  57. package/src/components/ExportMenu.tsx +122 -0
  58. package/src/components/LoadingSkeletons.tsx +110 -0
  59. package/src/components/MCPCredentialsSection.tsx +309 -0
  60. package/src/components/MentionChip.tsx +149 -0
  61. package/src/components/MentionDropdown.tsx +175 -0
  62. package/src/components/MentionInput.tsx +293 -0
  63. package/src/components/MessageItem.tsx +300 -0
  64. package/src/components/MessageList.tsx +159 -0
  65. package/src/components/OAuthAppsSection.tsx +124 -0
  66. package/src/components/ProjectFolder.tsx +141 -0
  67. package/src/components/ProjectModal.tsx +296 -0
  68. package/src/components/SSRMessageList.tsx +153 -0
  69. package/src/components/SearchModal.tsx +173 -0
  70. package/src/components/SettingsModal.tsx +412 -0
  71. package/src/components/ShareModal.tsx +280 -0
  72. package/src/components/Sidebar.tsx +491 -0
  73. package/src/components/TeamSwitcher.tsx +273 -0
  74. package/src/components/ToolCallDisplay.tsx +473 -0
  75. package/src/components/ToolConfirmationModal.tsx +130 -0
  76. package/src/components/UsageChart.tsx +177 -0
  77. package/src/components/content/CodeBlock.tsx +69 -0
  78. package/src/components/content/MarkdownRenderer.tsx +64 -0
  79. package/src/components/content/SSRMarkdownRenderer.tsx +158 -0
  80. package/src/contexts/AuthContext.tsx +119 -0
  81. package/src/contexts/ConfigContext.tsx +214 -0
  82. package/src/contexts/ProjectContext.tsx +167 -0
  83. package/src/contexts/ServerConfigProvider.tsx +41 -0
  84. package/src/contexts/ServerThemeProvider.tsx +47 -0
  85. package/src/contexts/TeamContext.tsx +255 -0
  86. package/src/contexts/ThemeContext.tsx +113 -0
  87. package/src/extensions/index.ts +15 -0
  88. package/src/extensions/registry.ts +187 -0
  89. package/src/extensions/useExtensions.ts +52 -0
  90. package/src/hooks/useAppPath.ts +34 -0
  91. package/src/hooks/useBasePath.ts +13 -0
  92. package/src/hooks/useKeyboardShortcuts.ts +50 -0
  93. package/src/hooks/useMentionSearch.ts +106 -0
  94. package/src/index.tsx +116 -0
  95. package/src/layouts/MainLayout.tsx +98 -0
  96. package/src/pages/AcceptInvitePage.tsx +175 -0
  97. package/src/pages/AdminDashboardPage.tsx +362 -0
  98. package/src/pages/AdminTeamPage.tsx +304 -0
  99. package/src/pages/AdminTeamsPage.tsx +242 -0
  100. package/src/pages/AdminUsersPage.tsx +385 -0
  101. package/src/pages/ApiKeysPage.tsx +449 -0
  102. package/src/pages/ChatPage.tsx +310 -0
  103. package/src/pages/DocumentsPage.tsx +577 -0
  104. package/src/pages/LoginPage.tsx +232 -0
  105. package/src/pages/OAuthConsentPage.tsx +234 -0
  106. package/src/pages/PricingPage.tsx +314 -0
  107. package/src/pages/PrivacyPage.tsx +65 -0
  108. package/src/pages/RegisterPage.tsx +153 -0
  109. package/src/pages/ScheduledPromptsPage.tsx +702 -0
  110. package/src/pages/SharedThreadPage.tsx +116 -0
  111. package/src/pages/TeamSettingsPage.tsx +1085 -0
  112. package/src/pages/TermsPage.tsx +82 -0
  113. package/src/pages/VerifyEmailPage.tsx +202 -0
  114. package/src/routes/AcceptInviteRoute.tsx +24 -0
  115. package/src/routes/AdminDashboardRoute.tsx +24 -0
  116. package/src/routes/AdminTeamRoute.tsx +24 -0
  117. package/src/routes/AdminTeamsRoute.tsx +24 -0
  118. package/src/routes/AdminUsersRoute.tsx +24 -0
  119. package/src/routes/ApiKeysRoute.tsx +24 -0
  120. package/src/routes/AutomationsRoute.tsx +24 -0
  121. package/src/routes/ChatRoute.tsx +28 -0
  122. package/src/routes/DocumentsRoute.tsx +24 -0
  123. package/src/routes/OAuthConsentRoute.tsx +24 -0
  124. package/src/routes/PricingRoute.tsx +24 -0
  125. package/src/routes/PrivacyRoute.tsx +24 -0
  126. package/src/routes/TeamSettingsRoute.tsx +24 -0
  127. package/src/routes/TermsRoute.tsx +24 -0
  128. package/src/routes/VerifyEmailRoute.tsx +24 -0
  129. package/src/routes/index.ts +57 -0
  130. package/src/ssr-utils.tsx +84 -0
  131. package/src/ssr.ts +123 -0
  132. package/src/stores/chatStore.ts +670 -0
  133. package/src/styles/index.css +254 -0
  134. package/src/utils/api.ts +78 -0
  135. package/src/vite-env.d.ts +13 -0
@@ -0,0 +1,2410 @@
1
+ *, ::before, ::after {
2
+ --tw-border-spacing-x: 0;
3
+ --tw-border-spacing-y: 0;
4
+ --tw-translate-x: 0;
5
+ --tw-translate-y: 0;
6
+ --tw-rotate: 0;
7
+ --tw-skew-x: 0;
8
+ --tw-skew-y: 0;
9
+ --tw-scale-x: 1;
10
+ --tw-scale-y: 1;
11
+ --tw-pan-x: ;
12
+ --tw-pan-y: ;
13
+ --tw-pinch-zoom: ;
14
+ --tw-scroll-snap-strictness: proximity;
15
+ --tw-gradient-from-position: ;
16
+ --tw-gradient-via-position: ;
17
+ --tw-gradient-to-position: ;
18
+ --tw-ordinal: ;
19
+ --tw-slashed-zero: ;
20
+ --tw-numeric-figure: ;
21
+ --tw-numeric-spacing: ;
22
+ --tw-numeric-fraction: ;
23
+ --tw-ring-inset: ;
24
+ --tw-ring-offset-width: 0px;
25
+ --tw-ring-offset-color: #fff;
26
+ --tw-ring-color: rgb(59 130 246 / 0.5);
27
+ --tw-ring-offset-shadow: 0 0 #0000;
28
+ --tw-ring-shadow: 0 0 #0000;
29
+ --tw-shadow: 0 0 #0000;
30
+ --tw-shadow-colored: 0 0 #0000;
31
+ --tw-blur: ;
32
+ --tw-brightness: ;
33
+ --tw-contrast: ;
34
+ --tw-grayscale: ;
35
+ --tw-hue-rotate: ;
36
+ --tw-invert: ;
37
+ --tw-saturate: ;
38
+ --tw-sepia: ;
39
+ --tw-drop-shadow: ;
40
+ --tw-backdrop-blur: ;
41
+ --tw-backdrop-brightness: ;
42
+ --tw-backdrop-contrast: ;
43
+ --tw-backdrop-grayscale: ;
44
+ --tw-backdrop-hue-rotate: ;
45
+ --tw-backdrop-invert: ;
46
+ --tw-backdrop-opacity: ;
47
+ --tw-backdrop-saturate: ;
48
+ --tw-backdrop-sepia: ;
49
+ --tw-contain-size: ;
50
+ --tw-contain-layout: ;
51
+ --tw-contain-paint: ;
52
+ --tw-contain-style: ;
53
+ }
54
+
55
+ ::backdrop {
56
+ --tw-border-spacing-x: 0;
57
+ --tw-border-spacing-y: 0;
58
+ --tw-translate-x: 0;
59
+ --tw-translate-y: 0;
60
+ --tw-rotate: 0;
61
+ --tw-skew-x: 0;
62
+ --tw-skew-y: 0;
63
+ --tw-scale-x: 1;
64
+ --tw-scale-y: 1;
65
+ --tw-pan-x: ;
66
+ --tw-pan-y: ;
67
+ --tw-pinch-zoom: ;
68
+ --tw-scroll-snap-strictness: proximity;
69
+ --tw-gradient-from-position: ;
70
+ --tw-gradient-via-position: ;
71
+ --tw-gradient-to-position: ;
72
+ --tw-ordinal: ;
73
+ --tw-slashed-zero: ;
74
+ --tw-numeric-figure: ;
75
+ --tw-numeric-spacing: ;
76
+ --tw-numeric-fraction: ;
77
+ --tw-ring-inset: ;
78
+ --tw-ring-offset-width: 0px;
79
+ --tw-ring-offset-color: #fff;
80
+ --tw-ring-color: rgb(59 130 246 / 0.5);
81
+ --tw-ring-offset-shadow: 0 0 #0000;
82
+ --tw-ring-shadow: 0 0 #0000;
83
+ --tw-shadow: 0 0 #0000;
84
+ --tw-shadow-colored: 0 0 #0000;
85
+ --tw-blur: ;
86
+ --tw-brightness: ;
87
+ --tw-contrast: ;
88
+ --tw-grayscale: ;
89
+ --tw-hue-rotate: ;
90
+ --tw-invert: ;
91
+ --tw-saturate: ;
92
+ --tw-sepia: ;
93
+ --tw-drop-shadow: ;
94
+ --tw-backdrop-blur: ;
95
+ --tw-backdrop-brightness: ;
96
+ --tw-backdrop-contrast: ;
97
+ --tw-backdrop-grayscale: ;
98
+ --tw-backdrop-hue-rotate: ;
99
+ --tw-backdrop-invert: ;
100
+ --tw-backdrop-opacity: ;
101
+ --tw-backdrop-saturate: ;
102
+ --tw-backdrop-sepia: ;
103
+ --tw-contain-size: ;
104
+ --tw-contain-layout: ;
105
+ --tw-contain-paint: ;
106
+ --tw-contain-style: ;
107
+ }/*
108
+ ! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
109
+ *//*
110
+ 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
111
+ 2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
112
+ */
113
+
114
+ *,
115
+ ::before,
116
+ ::after {
117
+ box-sizing: border-box; /* 1 */
118
+ border-width: 0; /* 2 */
119
+ border-style: solid; /* 2 */
120
+ border-color: #e5e7eb; /* 2 */
121
+ }
122
+
123
+ ::before,
124
+ ::after {
125
+ --tw-content: '';
126
+ }
127
+
128
+ /*
129
+ 1. Use a consistent sensible line-height in all browsers.
130
+ 2. Prevent adjustments of font size after orientation changes in iOS.
131
+ 3. Use a more readable tab size.
132
+ 4. Use the user's configured `sans` font-family by default.
133
+ 5. Use the user's configured `sans` font-feature-settings by default.
134
+ 6. Use the user's configured `sans` font-variation-settings by default.
135
+ 7. Disable tap highlights on iOS
136
+ */
137
+
138
+ html,
139
+ :host {
140
+ line-height: 1.5; /* 1 */
141
+ -webkit-text-size-adjust: 100%; /* 2 */
142
+ -moz-tab-size: 4; /* 3 */
143
+ -o-tab-size: 4;
144
+ tab-size: 4; /* 3 */
145
+ font-family: var(--font-sans), system-ui, sans-serif; /* 4 */
146
+ font-feature-settings: normal; /* 5 */
147
+ font-variation-settings: normal; /* 6 */
148
+ -webkit-tap-highlight-color: transparent; /* 7 */
149
+ }
150
+
151
+ /*
152
+ 1. Remove the margin in all browsers.
153
+ 2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
154
+ */
155
+
156
+ body {
157
+ margin: 0; /* 1 */
158
+ line-height: inherit; /* 2 */
159
+ }
160
+
161
+ /*
162
+ 1. Add the correct height in Firefox.
163
+ 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
164
+ 3. Ensure horizontal rules are visible by default.
165
+ */
166
+
167
+ hr {
168
+ height: 0; /* 1 */
169
+ color: inherit; /* 2 */
170
+ border-top-width: 1px; /* 3 */
171
+ }
172
+
173
+ /*
174
+ Add the correct text decoration in Chrome, Edge, and Safari.
175
+ */
176
+
177
+ abbr:where([title]) {
178
+ -webkit-text-decoration: underline dotted;
179
+ text-decoration: underline dotted;
180
+ }
181
+
182
+ /*
183
+ Remove the default font size and weight for headings.
184
+ */
185
+
186
+ h1,
187
+ h2,
188
+ h3,
189
+ h4,
190
+ h5,
191
+ h6 {
192
+ font-size: inherit;
193
+ font-weight: inherit;
194
+ }
195
+
196
+ /*
197
+ Reset links to optimize for opt-in styling instead of opt-out.
198
+ */
199
+
200
+ a {
201
+ color: inherit;
202
+ text-decoration: inherit;
203
+ }
204
+
205
+ /*
206
+ Add the correct font weight in Edge and Safari.
207
+ */
208
+
209
+ b,
210
+ strong {
211
+ font-weight: bolder;
212
+ }
213
+
214
+ /*
215
+ 1. Use the user's configured `mono` font-family by default.
216
+ 2. Use the user's configured `mono` font-feature-settings by default.
217
+ 3. Use the user's configured `mono` font-variation-settings by default.
218
+ 4. Correct the odd `em` font sizing in all browsers.
219
+ */
220
+
221
+ code,
222
+ kbd,
223
+ samp,
224
+ pre {
225
+ font-family: var(--font-mono), Menlo, monospace; /* 1 */
226
+ font-feature-settings: normal; /* 2 */
227
+ font-variation-settings: normal; /* 3 */
228
+ font-size: 1em; /* 4 */
229
+ }
230
+
231
+ /*
232
+ Add the correct font size in all browsers.
233
+ */
234
+
235
+ small {
236
+ font-size: 80%;
237
+ }
238
+
239
+ /*
240
+ Prevent `sub` and `sup` elements from affecting the line height in all browsers.
241
+ */
242
+
243
+ sub,
244
+ sup {
245
+ font-size: 75%;
246
+ line-height: 0;
247
+ position: relative;
248
+ vertical-align: baseline;
249
+ }
250
+
251
+ sub {
252
+ bottom: -0.25em;
253
+ }
254
+
255
+ sup {
256
+ top: -0.5em;
257
+ }
258
+
259
+ /*
260
+ 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)
261
+ 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)
262
+ 3. Remove gaps between table borders by default.
263
+ */
264
+
265
+ table {
266
+ text-indent: 0; /* 1 */
267
+ border-color: inherit; /* 2 */
268
+ border-collapse: collapse; /* 3 */
269
+ }
270
+
271
+ /*
272
+ 1. Change the font styles in all browsers.
273
+ 2. Remove the margin in Firefox and Safari.
274
+ 3. Remove default padding in all browsers.
275
+ */
276
+
277
+ button,
278
+ input,
279
+ optgroup,
280
+ select,
281
+ textarea {
282
+ font-family: inherit; /* 1 */
283
+ font-feature-settings: inherit; /* 1 */
284
+ font-variation-settings: inherit; /* 1 */
285
+ font-size: 100%; /* 1 */
286
+ font-weight: inherit; /* 1 */
287
+ line-height: inherit; /* 1 */
288
+ letter-spacing: inherit; /* 1 */
289
+ color: inherit; /* 1 */
290
+ margin: 0; /* 2 */
291
+ padding: 0; /* 3 */
292
+ }
293
+
294
+ /*
295
+ Remove the inheritance of text transform in Edge and Firefox.
296
+ */
297
+
298
+ button,
299
+ select {
300
+ text-transform: none;
301
+ }
302
+
303
+ /*
304
+ 1. Correct the inability to style clickable types in iOS and Safari.
305
+ 2. Remove default button styles.
306
+ */
307
+
308
+ button,
309
+ input:where([type='button']),
310
+ input:where([type='reset']),
311
+ input:where([type='submit']) {
312
+ -webkit-appearance: button; /* 1 */
313
+ background-color: transparent; /* 2 */
314
+ background-image: none; /* 2 */
315
+ }
316
+
317
+ /*
318
+ Use the modern Firefox focus style for all focusable elements.
319
+ */
320
+
321
+ :-moz-focusring {
322
+ outline: auto;
323
+ }
324
+
325
+ /*
326
+ Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
327
+ */
328
+
329
+ :-moz-ui-invalid {
330
+ box-shadow: none;
331
+ }
332
+
333
+ /*
334
+ Add the correct vertical alignment in Chrome and Firefox.
335
+ */
336
+
337
+ progress {
338
+ vertical-align: baseline;
339
+ }
340
+
341
+ /*
342
+ Correct the cursor style of increment and decrement buttons in Safari.
343
+ */
344
+
345
+ ::-webkit-inner-spin-button,
346
+ ::-webkit-outer-spin-button {
347
+ height: auto;
348
+ }
349
+
350
+ /*
351
+ 1. Correct the odd appearance in Chrome and Safari.
352
+ 2. Correct the outline style in Safari.
353
+ */
354
+
355
+ [type='search'] {
356
+ -webkit-appearance: textfield; /* 1 */
357
+ outline-offset: -2px; /* 2 */
358
+ }
359
+
360
+ /*
361
+ Remove the inner padding in Chrome and Safari on macOS.
362
+ */
363
+
364
+ ::-webkit-search-decoration {
365
+ -webkit-appearance: none;
366
+ }
367
+
368
+ /*
369
+ 1. Correct the inability to style clickable types in iOS and Safari.
370
+ 2. Change font properties to `inherit` in Safari.
371
+ */
372
+
373
+ ::-webkit-file-upload-button {
374
+ -webkit-appearance: button; /* 1 */
375
+ font: inherit; /* 2 */
376
+ }
377
+
378
+ /*
379
+ Add the correct display in Chrome and Safari.
380
+ */
381
+
382
+ summary {
383
+ display: list-item;
384
+ }
385
+
386
+ /*
387
+ Removes the default spacing and border for appropriate elements.
388
+ */
389
+
390
+ blockquote,
391
+ dl,
392
+ dd,
393
+ h1,
394
+ h2,
395
+ h3,
396
+ h4,
397
+ h5,
398
+ h6,
399
+ hr,
400
+ figure,
401
+ p,
402
+ pre {
403
+ margin: 0;
404
+ }
405
+
406
+ fieldset {
407
+ margin: 0;
408
+ padding: 0;
409
+ }
410
+
411
+ legend {
412
+ padding: 0;
413
+ }
414
+
415
+ ol,
416
+ ul,
417
+ menu {
418
+ list-style: none;
419
+ margin: 0;
420
+ padding: 0;
421
+ }
422
+
423
+ /*
424
+ Reset default styling for dialogs.
425
+ */
426
+ dialog {
427
+ padding: 0;
428
+ }
429
+
430
+ /*
431
+ Prevent resizing textareas horizontally by default.
432
+ */
433
+
434
+ textarea {
435
+ resize: vertical;
436
+ }
437
+
438
+ /*
439
+ 1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
440
+ 2. Set the default placeholder color to the user's configured gray 400 color.
441
+ */
442
+
443
+ input::-moz-placeholder, textarea::-moz-placeholder {
444
+ opacity: 1; /* 1 */
445
+ color: #9ca3af; /* 2 */
446
+ }
447
+
448
+ input::placeholder,
449
+ textarea::placeholder {
450
+ opacity: 1; /* 1 */
451
+ color: #9ca3af; /* 2 */
452
+ }
453
+
454
+ /*
455
+ Set the default cursor for buttons.
456
+ */
457
+
458
+ button,
459
+ [role="button"] {
460
+ cursor: pointer;
461
+ }
462
+
463
+ /*
464
+ Make sure disabled buttons don't get the pointer cursor.
465
+ */
466
+ :disabled {
467
+ cursor: default;
468
+ }
469
+
470
+ /*
471
+ 1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
472
+ 2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
473
+ This can trigger a poorly considered lint error in some tools but is included by design.
474
+ */
475
+
476
+ img,
477
+ svg,
478
+ video,
479
+ canvas,
480
+ audio,
481
+ iframe,
482
+ embed,
483
+ object {
484
+ display: block; /* 1 */
485
+ vertical-align: middle; /* 2 */
486
+ }
487
+
488
+ /*
489
+ Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
490
+ */
491
+
492
+ img,
493
+ video {
494
+ max-width: 100%;
495
+ height: auto;
496
+ }
497
+
498
+ /* Make elements with the HTML hidden attribute stay hidden by default */
499
+ [hidden]:where(:not([hidden="until-found"])) {
500
+ display: none;
501
+ }
502
+ .pointer-events-none {
503
+ pointer-events: none;
504
+ }
505
+ .visible {
506
+ visibility: visible;
507
+ }
508
+ .collapse {
509
+ visibility: collapse;
510
+ }
511
+ .fixed {
512
+ position: fixed;
513
+ }
514
+ .absolute {
515
+ position: absolute;
516
+ }
517
+ .relative {
518
+ position: relative;
519
+ }
520
+ .sticky {
521
+ position: sticky;
522
+ }
523
+ .inset-0 {
524
+ inset: 0px;
525
+ }
526
+ .inset-y-0 {
527
+ top: 0px;
528
+ bottom: 0px;
529
+ }
530
+ .-bottom-1 {
531
+ bottom: -0.25rem;
532
+ }
533
+ .bottom-full {
534
+ bottom: 100%;
535
+ }
536
+ .left-0 {
537
+ left: 0px;
538
+ }
539
+ .left-1\/2 {
540
+ left: 50%;
541
+ }
542
+ .left-3 {
543
+ left: 0.75rem;
544
+ }
545
+ .top-0 {
546
+ top: 0px;
547
+ }
548
+ .top-1\/2 {
549
+ top: 50%;
550
+ }
551
+ .top-full {
552
+ top: 100%;
553
+ }
554
+ .z-10 {
555
+ z-index: 10;
556
+ }
557
+ .z-20 {
558
+ z-index: 20;
559
+ }
560
+ .z-30 {
561
+ z-index: 30;
562
+ }
563
+ .z-50 {
564
+ z-index: 50;
565
+ }
566
+ .col-span-1 {
567
+ grid-column: span 1 / span 1;
568
+ }
569
+ .col-span-2 {
570
+ grid-column: span 2 / span 2;
571
+ }
572
+ .col-span-3 {
573
+ grid-column: span 3 / span 3;
574
+ }
575
+ .col-span-4 {
576
+ grid-column: span 4 / span 4;
577
+ }
578
+ .mx-auto {
579
+ margin-left: auto;
580
+ margin-right: auto;
581
+ }
582
+ .my-1 {
583
+ margin-top: 0.25rem;
584
+ margin-bottom: 0.25rem;
585
+ }
586
+ .my-2 {
587
+ margin-top: 0.5rem;
588
+ margin-bottom: 0.5rem;
589
+ }
590
+ .my-4 {
591
+ margin-top: 1rem;
592
+ margin-bottom: 1rem;
593
+ }
594
+ .mb-1 {
595
+ margin-bottom: 0.25rem;
596
+ }
597
+ .mb-12 {
598
+ margin-bottom: 3rem;
599
+ }
600
+ .mb-2 {
601
+ margin-bottom: 0.5rem;
602
+ }
603
+ .mb-3 {
604
+ margin-bottom: 0.75rem;
605
+ }
606
+ .mb-4 {
607
+ margin-bottom: 1rem;
608
+ }
609
+ .mb-6 {
610
+ margin-bottom: 1.5rem;
611
+ }
612
+ .mb-8 {
613
+ margin-bottom: 2rem;
614
+ }
615
+ .ml-1 {
616
+ margin-left: 0.25rem;
617
+ }
618
+ .ml-2 {
619
+ margin-left: 0.5rem;
620
+ }
621
+ .ml-3 {
622
+ margin-left: 0.75rem;
623
+ }
624
+ .ml-6 {
625
+ margin-left: 1.5rem;
626
+ }
627
+ .ml-auto {
628
+ margin-left: auto;
629
+ }
630
+ .mr-4 {
631
+ margin-right: 1rem;
632
+ }
633
+ .mt-0\.5 {
634
+ margin-top: 0.125rem;
635
+ }
636
+ .mt-1 {
637
+ margin-top: 0.25rem;
638
+ }
639
+ .mt-12 {
640
+ margin-top: 3rem;
641
+ }
642
+ .mt-2 {
643
+ margin-top: 0.5rem;
644
+ }
645
+ .mt-3 {
646
+ margin-top: 0.75rem;
647
+ }
648
+ .mt-4 {
649
+ margin-top: 1rem;
650
+ }
651
+ .mt-5 {
652
+ margin-top: 1.25rem;
653
+ }
654
+ .mt-6 {
655
+ margin-top: 1.5rem;
656
+ }
657
+ .mt-8 {
658
+ margin-top: 2rem;
659
+ }
660
+ .line-clamp-2 {
661
+ overflow: hidden;
662
+ display: -webkit-box;
663
+ -webkit-box-orient: vertical;
664
+ -webkit-line-clamp: 2;
665
+ }
666
+ .block {
667
+ display: block;
668
+ }
669
+ .inline-block {
670
+ display: inline-block;
671
+ }
672
+ .inline {
673
+ display: inline;
674
+ }
675
+ .flex {
676
+ display: flex;
677
+ }
678
+ .inline-flex {
679
+ display: inline-flex;
680
+ }
681
+ .table {
682
+ display: table;
683
+ }
684
+ .grid {
685
+ display: grid;
686
+ }
687
+ .hidden {
688
+ display: none;
689
+ }
690
+ .h-10 {
691
+ height: 2.5rem;
692
+ }
693
+ .h-11 {
694
+ height: 2.75rem;
695
+ }
696
+ .h-12 {
697
+ height: 3rem;
698
+ }
699
+ .h-16 {
700
+ height: 4rem;
701
+ }
702
+ .h-2 {
703
+ height: 0.5rem;
704
+ }
705
+ .h-32 {
706
+ height: 8rem;
707
+ }
708
+ .h-4 {
709
+ height: 1rem;
710
+ }
711
+ .h-48 {
712
+ height: 12rem;
713
+ }
714
+ .h-5 {
715
+ height: 1.25rem;
716
+ }
717
+ .h-6 {
718
+ height: 1.5rem;
719
+ }
720
+ .h-64 {
721
+ height: 16rem;
722
+ }
723
+ .h-8 {
724
+ height: 2rem;
725
+ }
726
+ .h-full {
727
+ height: 100%;
728
+ }
729
+ .max-h-24 {
730
+ max-height: 6rem;
731
+ }
732
+ .max-h-48 {
733
+ max-height: 12rem;
734
+ }
735
+ .max-h-64 {
736
+ max-height: 16rem;
737
+ }
738
+ .max-h-\[200px\] {
739
+ max-height: 200px;
740
+ }
741
+ .max-h-\[300px\] {
742
+ max-height: 300px;
743
+ }
744
+ .max-h-\[90vh\] {
745
+ max-height: 90vh;
746
+ }
747
+ .min-h-0 {
748
+ min-height: 0px;
749
+ }
750
+ .min-h-\[44px\] {
751
+ min-height: 44px;
752
+ }
753
+ .min-h-full {
754
+ min-height: 100%;
755
+ }
756
+ .min-h-screen {
757
+ min-height: 100vh;
758
+ }
759
+ .w-10 {
760
+ width: 2.5rem;
761
+ }
762
+ .w-11 {
763
+ width: 2.75rem;
764
+ }
765
+ .w-12 {
766
+ width: 3rem;
767
+ }
768
+ .w-16 {
769
+ width: 4rem;
770
+ }
771
+ .w-2 {
772
+ width: 0.5rem;
773
+ }
774
+ .w-20 {
775
+ width: 5rem;
776
+ }
777
+ .w-4 {
778
+ width: 1rem;
779
+ }
780
+ .w-48 {
781
+ width: 12rem;
782
+ }
783
+ .w-5 {
784
+ width: 1.25rem;
785
+ }
786
+ .w-6 {
787
+ width: 1.5rem;
788
+ }
789
+ .w-64 {
790
+ width: 16rem;
791
+ }
792
+ .w-8 {
793
+ width: 2rem;
794
+ }
795
+ .w-auto {
796
+ width: auto;
797
+ }
798
+ .w-full {
799
+ width: 100%;
800
+ }
801
+ .min-w-0 {
802
+ min-width: 0px;
803
+ }
804
+ .min-w-\[200px\] {
805
+ min-width: 200px;
806
+ }
807
+ .min-w-\[240px\] {
808
+ min-width: 240px;
809
+ }
810
+ .min-w-full {
811
+ min-width: 100%;
812
+ }
813
+ .max-w-2xl {
814
+ max-width: 42rem;
815
+ }
816
+ .max-w-3xl {
817
+ max-width: 48rem;
818
+ }
819
+ .max-w-4xl {
820
+ max-width: 56rem;
821
+ }
822
+ .max-w-5xl {
823
+ max-width: 64rem;
824
+ }
825
+ .max-w-6xl {
826
+ max-width: 72rem;
827
+ }
828
+ .max-w-\[120px\] {
829
+ max-width: 120px;
830
+ }
831
+ .max-w-\[150px\] {
832
+ max-width: 150px;
833
+ }
834
+ .max-w-\[320px\] {
835
+ max-width: 320px;
836
+ }
837
+ .max-w-\[85\%\] {
838
+ max-width: 85%;
839
+ }
840
+ .max-w-full {
841
+ max-width: 100%;
842
+ }
843
+ .max-w-lg {
844
+ max-width: 32rem;
845
+ }
846
+ .max-w-md {
847
+ max-width: 28rem;
848
+ }
849
+ .max-w-sm {
850
+ max-width: 24rem;
851
+ }
852
+ .flex-1 {
853
+ flex: 1 1 0%;
854
+ }
855
+ .flex-shrink-0 {
856
+ flex-shrink: 0;
857
+ }
858
+ .shrink-0 {
859
+ flex-shrink: 0;
860
+ }
861
+ .border-collapse {
862
+ border-collapse: collapse;
863
+ }
864
+ .-translate-x-1\/2 {
865
+ --tw-translate-x: -50%;
866
+ 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));
867
+ }
868
+ .-translate-x-full {
869
+ --tw-translate-x: -100%;
870
+ 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));
871
+ }
872
+ .-translate-y-1\/2 {
873
+ --tw-translate-y: -50%;
874
+ 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));
875
+ }
876
+ .translate-x-0 {
877
+ --tw-translate-x: 0px;
878
+ 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));
879
+ }
880
+ .translate-x-1 {
881
+ --tw-translate-x: 0.25rem;
882
+ 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));
883
+ }
884
+ .translate-x-6 {
885
+ --tw-translate-x: 1.5rem;
886
+ 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));
887
+ }
888
+ .rotate-180 {
889
+ --tw-rotate: 180deg;
890
+ 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));
891
+ }
892
+ .rotate-45 {
893
+ --tw-rotate: 45deg;
894
+ 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));
895
+ }
896
+ .scale-110 {
897
+ --tw-scale-x: 1.1;
898
+ --tw-scale-y: 1.1;
899
+ 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));
900
+ }
901
+ .transform {
902
+ 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));
903
+ }
904
+ @keyframes pulse {
905
+
906
+ 50% {
907
+ opacity: .5;
908
+ }
909
+ }
910
+ .animate-pulse {
911
+ animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
912
+ }
913
+ @keyframes spin {
914
+
915
+ to {
916
+ transform: rotate(360deg);
917
+ }
918
+ }
919
+ .animate-spin {
920
+ animation: spin 1s linear infinite;
921
+ }
922
+ .cursor-default {
923
+ cursor: default;
924
+ }
925
+ .cursor-not-allowed {
926
+ cursor: not-allowed;
927
+ }
928
+ .cursor-pointer {
929
+ cursor: pointer;
930
+ }
931
+ .resize-none {
932
+ resize: none;
933
+ }
934
+ .resize-y {
935
+ resize: vertical;
936
+ }
937
+ .appearance-none {
938
+ -webkit-appearance: none;
939
+ -moz-appearance: none;
940
+ appearance: none;
941
+ }
942
+ .grid-cols-1 {
943
+ grid-template-columns: repeat(1, minmax(0, 1fr));
944
+ }
945
+ .grid-cols-12 {
946
+ grid-template-columns: repeat(12, minmax(0, 1fr));
947
+ }
948
+ .grid-cols-2 {
949
+ grid-template-columns: repeat(2, minmax(0, 1fr));
950
+ }
951
+ .grid-cols-3 {
952
+ grid-template-columns: repeat(3, minmax(0, 1fr));
953
+ }
954
+ .flex-row-reverse {
955
+ flex-direction: row-reverse;
956
+ }
957
+ .flex-col {
958
+ flex-direction: column;
959
+ }
960
+ .flex-wrap {
961
+ flex-wrap: wrap;
962
+ }
963
+ .items-start {
964
+ align-items: flex-start;
965
+ }
966
+ .items-end {
967
+ align-items: flex-end;
968
+ }
969
+ .items-center {
970
+ align-items: center;
971
+ }
972
+ .items-baseline {
973
+ align-items: baseline;
974
+ }
975
+ .justify-end {
976
+ justify-content: flex-end;
977
+ }
978
+ .justify-center {
979
+ justify-content: center;
980
+ }
981
+ .justify-between {
982
+ justify-content: space-between;
983
+ }
984
+ .gap-0\.5 {
985
+ gap: 0.125rem;
986
+ }
987
+ .gap-1 {
988
+ gap: 0.25rem;
989
+ }
990
+ .gap-1\.5 {
991
+ gap: 0.375rem;
992
+ }
993
+ .gap-2 {
994
+ gap: 0.5rem;
995
+ }
996
+ .gap-3 {
997
+ gap: 0.75rem;
998
+ }
999
+ .gap-4 {
1000
+ gap: 1rem;
1001
+ }
1002
+ .gap-6 {
1003
+ gap: 1.5rem;
1004
+ }
1005
+ .gap-8 {
1006
+ gap: 2rem;
1007
+ }
1008
+ .gap-\[2px\] {
1009
+ gap: 2px;
1010
+ }
1011
+ .gap-x-4 {
1012
+ -moz-column-gap: 1rem;
1013
+ column-gap: 1rem;
1014
+ }
1015
+ .gap-y-1 {
1016
+ row-gap: 0.25rem;
1017
+ }
1018
+ .space-y-0\.5 > :not([hidden]) ~ :not([hidden]) {
1019
+ --tw-space-y-reverse: 0;
1020
+ margin-top: calc(0.125rem * calc(1 - var(--tw-space-y-reverse)));
1021
+ margin-bottom: calc(0.125rem * var(--tw-space-y-reverse));
1022
+ }
1023
+ .space-y-1 > :not([hidden]) ~ :not([hidden]) {
1024
+ --tw-space-y-reverse: 0;
1025
+ margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
1026
+ margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));
1027
+ }
1028
+ .space-y-2 > :not([hidden]) ~ :not([hidden]) {
1029
+ --tw-space-y-reverse: 0;
1030
+ margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
1031
+ margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
1032
+ }
1033
+ .space-y-3 > :not([hidden]) ~ :not([hidden]) {
1034
+ --tw-space-y-reverse: 0;
1035
+ margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
1036
+ margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
1037
+ }
1038
+ .space-y-4 > :not([hidden]) ~ :not([hidden]) {
1039
+ --tw-space-y-reverse: 0;
1040
+ margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
1041
+ margin-bottom: calc(1rem * var(--tw-space-y-reverse));
1042
+ }
1043
+ .space-y-6 > :not([hidden]) ~ :not([hidden]) {
1044
+ --tw-space-y-reverse: 0;
1045
+ margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));
1046
+ margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));
1047
+ }
1048
+ .divide-y > :not([hidden]) ~ :not([hidden]) {
1049
+ --tw-divide-y-reverse: 0;
1050
+ border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
1051
+ border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
1052
+ }
1053
+ .divide-background > :not([hidden]) ~ :not([hidden]) {
1054
+ --tw-divide-opacity: 1;
1055
+ border-color: rgb(var(--color-background) / var(--tw-divide-opacity, 1));
1056
+ }
1057
+ .self-start {
1058
+ align-self: flex-start;
1059
+ }
1060
+ .overflow-hidden {
1061
+ overflow: hidden;
1062
+ }
1063
+ .overflow-x-auto {
1064
+ overflow-x: auto;
1065
+ }
1066
+ .overflow-y-auto {
1067
+ overflow-y: auto;
1068
+ }
1069
+ .truncate {
1070
+ overflow: hidden;
1071
+ text-overflow: ellipsis;
1072
+ white-space: nowrap;
1073
+ }
1074
+ .whitespace-nowrap {
1075
+ white-space: nowrap;
1076
+ }
1077
+ .whitespace-pre-wrap {
1078
+ white-space: pre-wrap;
1079
+ }
1080
+ .rounded {
1081
+ border-radius: 0.25rem;
1082
+ }
1083
+ .rounded-2xl {
1084
+ border-radius: 1rem;
1085
+ }
1086
+ .rounded-full {
1087
+ border-radius: var(--radius-full);
1088
+ }
1089
+ .rounded-lg {
1090
+ border-radius: var(--radius-lg);
1091
+ }
1092
+ .rounded-md {
1093
+ border-radius: var(--radius-md);
1094
+ }
1095
+ .rounded-xl {
1096
+ border-radius: 0.75rem;
1097
+ }
1098
+ .rounded-t {
1099
+ border-top-left-radius: 0.25rem;
1100
+ border-top-right-radius: 0.25rem;
1101
+ }
1102
+ .rounded-t-2xl {
1103
+ border-top-left-radius: 1rem;
1104
+ border-top-right-radius: 1rem;
1105
+ }
1106
+ .border {
1107
+ border-width: 1px;
1108
+ }
1109
+ .border-2 {
1110
+ border-width: 2px;
1111
+ }
1112
+ .border-b {
1113
+ border-bottom-width: 1px;
1114
+ }
1115
+ .border-b-2 {
1116
+ border-bottom-width: 2px;
1117
+ }
1118
+ .border-l {
1119
+ border-left-width: 1px;
1120
+ }
1121
+ .border-r {
1122
+ border-right-width: 1px;
1123
+ }
1124
+ .border-t {
1125
+ border-top-width: 1px;
1126
+ }
1127
+ .border-dashed {
1128
+ border-style: dashed;
1129
+ }
1130
+ .border-\[var\(--color-background\)\] {
1131
+ border-color: var(--color-background);
1132
+ }
1133
+ .border-\[var\(--color-border\)\] {
1134
+ border-color: var(--color-border);
1135
+ }
1136
+ .border-\[var\(--color-primary\)\] {
1137
+ border-color: var(--color-primary);
1138
+ }
1139
+ .border-blue-500\/20 {
1140
+ border-color: rgb(59 130 246 / 0.2);
1141
+ }
1142
+ .border-border {
1143
+ --tw-border-opacity: 1;
1144
+ border-color: rgb(var(--color-border) / var(--tw-border-opacity, 1));
1145
+ }
1146
+ .border-border\/50 {
1147
+ border-color: rgb(var(--color-border) / 0.5);
1148
+ }
1149
+ .border-error {
1150
+ --tw-border-opacity: 1;
1151
+ border-color: rgb(var(--color-error) / var(--tw-border-opacity, 1));
1152
+ }
1153
+ .border-error\/20 {
1154
+ border-color: rgb(var(--color-error) / 0.2);
1155
+ }
1156
+ .border-error\/30 {
1157
+ border-color: rgb(var(--color-error) / 0.3);
1158
+ }
1159
+ .border-error\/50 {
1160
+ border-color: rgb(var(--color-error) / 0.5);
1161
+ }
1162
+ .border-gray-500\/20 {
1163
+ border-color: rgb(107 114 128 / 0.2);
1164
+ }
1165
+ .border-green-500\/20 {
1166
+ border-color: rgb(34 197 94 / 0.2);
1167
+ }
1168
+ .border-input-border {
1169
+ --tw-border-opacity: 1;
1170
+ border-color: rgb(var(--color-input-border) / var(--tw-border-opacity, 1));
1171
+ }
1172
+ .border-primary {
1173
+ --tw-border-opacity: 1;
1174
+ border-color: rgb(var(--color-primary) / var(--tw-border-opacity, 1));
1175
+ }
1176
+ .border-primary\/20 {
1177
+ border-color: rgb(var(--color-primary) / 0.2);
1178
+ }
1179
+ .border-purple-500\/20 {
1180
+ border-color: rgb(168 85 247 / 0.2);
1181
+ }
1182
+ .border-success\/50 {
1183
+ border-color: rgb(var(--color-success) / 0.5);
1184
+ }
1185
+ .border-text-primary {
1186
+ --tw-border-opacity: 1;
1187
+ border-color: rgb(var(--color-text-primary) / var(--tw-border-opacity, 1));
1188
+ }
1189
+ .border-transparent {
1190
+ border-color: transparent;
1191
+ }
1192
+ .border-warning\/30 {
1193
+ border-color: rgb(var(--color-warning) / 0.3);
1194
+ }
1195
+ .border-t-transparent {
1196
+ border-top-color: transparent;
1197
+ }
1198
+ .bg-\[var\(--color-background\)\] {
1199
+ background-color: var(--color-background);
1200
+ }
1201
+ .bg-\[var\(--color-background-secondary\)\] {
1202
+ background-color: var(--color-background-secondary);
1203
+ }
1204
+ .bg-\[var\(--color-primary\)\] {
1205
+ background-color: var(--color-primary);
1206
+ }
1207
+ .bg-assistant-message-bg {
1208
+ --tw-bg-opacity: 1;
1209
+ background-color: rgb(var(--color-assistant-message-bg) / var(--tw-bg-opacity, 1));
1210
+ }
1211
+ .bg-background {
1212
+ --tw-bg-opacity: 1;
1213
+ background-color: rgb(var(--color-background) / var(--tw-bg-opacity, 1));
1214
+ }
1215
+ .bg-background-secondary {
1216
+ --tw-bg-opacity: 1;
1217
+ background-color: rgb(var(--color-background-secondary) / var(--tw-bg-opacity, 1));
1218
+ }
1219
+ .bg-background-secondary\/30 {
1220
+ background-color: rgb(var(--color-background-secondary) / 0.3);
1221
+ }
1222
+ .bg-background-secondary\/50 {
1223
+ background-color: rgb(var(--color-background-secondary) / 0.5);
1224
+ }
1225
+ .bg-black\/50 {
1226
+ background-color: rgb(0 0 0 / 0.5);
1227
+ }
1228
+ .bg-blue-400 {
1229
+ --tw-bg-opacity: 1;
1230
+ background-color: rgb(96 165 250 / var(--tw-bg-opacity, 1));
1231
+ }
1232
+ .bg-blue-500\/10 {
1233
+ background-color: rgb(59 130 246 / 0.1);
1234
+ }
1235
+ .bg-border {
1236
+ --tw-bg-opacity: 1;
1237
+ background-color: rgb(var(--color-border) / var(--tw-bg-opacity, 1));
1238
+ }
1239
+ .bg-current {
1240
+ background-color: currentColor;
1241
+ }
1242
+ .bg-error {
1243
+ --tw-bg-opacity: 1;
1244
+ background-color: rgb(var(--color-error) / var(--tw-bg-opacity, 1));
1245
+ }
1246
+ .bg-error\/10 {
1247
+ background-color: rgb(var(--color-error) / 0.1);
1248
+ }
1249
+ .bg-error\/20 {
1250
+ background-color: rgb(var(--color-error) / 0.2);
1251
+ }
1252
+ .bg-error\/5 {
1253
+ background-color: rgb(var(--color-error) / 0.05);
1254
+ }
1255
+ .bg-gray-400 {
1256
+ --tw-bg-opacity: 1;
1257
+ background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1));
1258
+ }
1259
+ .bg-gray-500\/10 {
1260
+ background-color: rgb(107 114 128 / 0.1);
1261
+ }
1262
+ .bg-green-400 {
1263
+ --tw-bg-opacity: 1;
1264
+ background-color: rgb(74 222 128 / var(--tw-bg-opacity, 1));
1265
+ }
1266
+ .bg-green-500\/10 {
1267
+ background-color: rgb(34 197 94 / 0.1);
1268
+ }
1269
+ .bg-input-background {
1270
+ --tw-bg-opacity: 1;
1271
+ background-color: rgb(var(--color-input-background) / var(--tw-bg-opacity, 1));
1272
+ }
1273
+ .bg-primary {
1274
+ --tw-bg-opacity: 1;
1275
+ background-color: rgb(var(--color-primary) / var(--tw-bg-opacity, 1));
1276
+ }
1277
+ .bg-primary\/10 {
1278
+ background-color: rgb(var(--color-primary) / 0.1);
1279
+ }
1280
+ .bg-primary\/5 {
1281
+ background-color: rgb(var(--color-primary) / 0.05);
1282
+ }
1283
+ .bg-purple-400 {
1284
+ --tw-bg-opacity: 1;
1285
+ background-color: rgb(192 132 252 / var(--tw-bg-opacity, 1));
1286
+ }
1287
+ .bg-purple-500\/10 {
1288
+ background-color: rgb(168 85 247 / 0.1);
1289
+ }
1290
+ .bg-secondary {
1291
+ --tw-bg-opacity: 1;
1292
+ background-color: rgb(var(--color-secondary) / var(--tw-bg-opacity, 1));
1293
+ }
1294
+ .bg-secondary\/10 {
1295
+ background-color: rgb(var(--color-secondary) / 0.1);
1296
+ }
1297
+ .bg-sidebar {
1298
+ --tw-bg-opacity: 1;
1299
+ background-color: rgb(var(--color-sidebar) / var(--tw-bg-opacity, 1));
1300
+ }
1301
+ .bg-success\/10 {
1302
+ background-color: rgb(var(--color-success) / 0.1);
1303
+ }
1304
+ .bg-success\/20 {
1305
+ background-color: rgb(var(--color-success) / 0.2);
1306
+ }
1307
+ .bg-success\/5 {
1308
+ background-color: rgb(var(--color-success) / 0.05);
1309
+ }
1310
+ .bg-transparent {
1311
+ background-color: transparent;
1312
+ }
1313
+ .bg-user-message-bg {
1314
+ --tw-bg-opacity: 1;
1315
+ background-color: rgb(var(--color-user-message-bg) / var(--tw-bg-opacity, 1));
1316
+ }
1317
+ .bg-warning {
1318
+ --tw-bg-opacity: 1;
1319
+ background-color: rgb(var(--color-warning) / var(--tw-bg-opacity, 1));
1320
+ }
1321
+ .bg-warning\/10 {
1322
+ background-color: rgb(var(--color-warning) / 0.1);
1323
+ }
1324
+ .bg-white {
1325
+ --tw-bg-opacity: 1;
1326
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
1327
+ }
1328
+ .object-contain {
1329
+ -o-object-fit: contain;
1330
+ object-fit: contain;
1331
+ }
1332
+ .object-cover {
1333
+ -o-object-fit: cover;
1334
+ object-fit: cover;
1335
+ }
1336
+ .p-0\.5 {
1337
+ padding: 0.125rem;
1338
+ }
1339
+ .p-1 {
1340
+ padding: 0.25rem;
1341
+ }
1342
+ .p-1\.5 {
1343
+ padding: 0.375rem;
1344
+ }
1345
+ .p-2 {
1346
+ padding: 0.5rem;
1347
+ }
1348
+ .p-2\.5 {
1349
+ padding: 0.625rem;
1350
+ }
1351
+ .p-3 {
1352
+ padding: 0.75rem;
1353
+ }
1354
+ .p-4 {
1355
+ padding: 1rem;
1356
+ }
1357
+ .p-6 {
1358
+ padding: 1.5rem;
1359
+ }
1360
+ .p-8 {
1361
+ padding: 2rem;
1362
+ }
1363
+ .px-1 {
1364
+ padding-left: 0.25rem;
1365
+ padding-right: 0.25rem;
1366
+ }
1367
+ .px-1\.5 {
1368
+ padding-left: 0.375rem;
1369
+ padding-right: 0.375rem;
1370
+ }
1371
+ .px-2 {
1372
+ padding-left: 0.5rem;
1373
+ padding-right: 0.5rem;
1374
+ }
1375
+ .px-2\.5 {
1376
+ padding-left: 0.625rem;
1377
+ padding-right: 0.625rem;
1378
+ }
1379
+ .px-3 {
1380
+ padding-left: 0.75rem;
1381
+ padding-right: 0.75rem;
1382
+ }
1383
+ .px-4 {
1384
+ padding-left: 1rem;
1385
+ padding-right: 1rem;
1386
+ }
1387
+ .px-6 {
1388
+ padding-left: 1.5rem;
1389
+ padding-right: 1.5rem;
1390
+ }
1391
+ .py-0\.5 {
1392
+ padding-top: 0.125rem;
1393
+ padding-bottom: 0.125rem;
1394
+ }
1395
+ .py-1 {
1396
+ padding-top: 0.25rem;
1397
+ padding-bottom: 0.25rem;
1398
+ }
1399
+ .py-1\.5 {
1400
+ padding-top: 0.375rem;
1401
+ padding-bottom: 0.375rem;
1402
+ }
1403
+ .py-12 {
1404
+ padding-top: 3rem;
1405
+ padding-bottom: 3rem;
1406
+ }
1407
+ .py-2 {
1408
+ padding-top: 0.5rem;
1409
+ padding-bottom: 0.5rem;
1410
+ }
1411
+ .py-2\.5 {
1412
+ padding-top: 0.625rem;
1413
+ padding-bottom: 0.625rem;
1414
+ }
1415
+ .py-3 {
1416
+ padding-top: 0.75rem;
1417
+ padding-bottom: 0.75rem;
1418
+ }
1419
+ .py-4 {
1420
+ padding-top: 1rem;
1421
+ padding-bottom: 1rem;
1422
+ }
1423
+ .py-6 {
1424
+ padding-top: 1.5rem;
1425
+ padding-bottom: 1.5rem;
1426
+ }
1427
+ .py-8 {
1428
+ padding-top: 2rem;
1429
+ padding-bottom: 2rem;
1430
+ }
1431
+ .pb-1 {
1432
+ padding-bottom: 0.25rem;
1433
+ }
1434
+ .pb-3 {
1435
+ padding-bottom: 0.75rem;
1436
+ }
1437
+ .pb-8 {
1438
+ padding-bottom: 2rem;
1439
+ }
1440
+ .pl-2 {
1441
+ padding-left: 0.5rem;
1442
+ }
1443
+ .pl-8 {
1444
+ padding-left: 2rem;
1445
+ }
1446
+ .pl-9 {
1447
+ padding-left: 2.25rem;
1448
+ }
1449
+ .pr-3 {
1450
+ padding-right: 0.75rem;
1451
+ }
1452
+ .pr-8 {
1453
+ padding-right: 2rem;
1454
+ }
1455
+ .pt-1 {
1456
+ padding-top: 0.25rem;
1457
+ }
1458
+ .pt-2 {
1459
+ padding-top: 0.5rem;
1460
+ }
1461
+ .pt-3 {
1462
+ padding-top: 0.75rem;
1463
+ }
1464
+ .pt-4 {
1465
+ padding-top: 1rem;
1466
+ }
1467
+ .pt-\[15vh\] {
1468
+ padding-top: 15vh;
1469
+ }
1470
+ .text-left {
1471
+ text-align: left;
1472
+ }
1473
+ .text-center {
1474
+ text-align: center;
1475
+ }
1476
+ .font-mono {
1477
+ font-family: var(--font-mono), Menlo, monospace;
1478
+ }
1479
+ .text-2xl {
1480
+ font-size: 1.5rem;
1481
+ line-height: 2rem;
1482
+ }
1483
+ .text-3xl {
1484
+ font-size: 1.875rem;
1485
+ line-height: 2.25rem;
1486
+ }
1487
+ .text-\[10px\] {
1488
+ font-size: 10px;
1489
+ }
1490
+ .text-base {
1491
+ font-size: 1rem;
1492
+ line-height: 1.5rem;
1493
+ }
1494
+ .text-lg {
1495
+ font-size: 1.125rem;
1496
+ line-height: 1.75rem;
1497
+ }
1498
+ .text-sm {
1499
+ font-size: 0.875rem;
1500
+ line-height: 1.25rem;
1501
+ }
1502
+ .text-xl {
1503
+ font-size: 1.25rem;
1504
+ line-height: 1.75rem;
1505
+ }
1506
+ .text-xs {
1507
+ font-size: 0.75rem;
1508
+ line-height: 1rem;
1509
+ }
1510
+ .font-bold {
1511
+ font-weight: 700;
1512
+ }
1513
+ .font-medium {
1514
+ font-weight: 500;
1515
+ }
1516
+ .font-semibold {
1517
+ font-weight: 600;
1518
+ }
1519
+ .uppercase {
1520
+ text-transform: uppercase;
1521
+ }
1522
+ .lowercase {
1523
+ text-transform: lowercase;
1524
+ }
1525
+ .capitalize {
1526
+ text-transform: capitalize;
1527
+ }
1528
+ .italic {
1529
+ font-style: italic;
1530
+ }
1531
+ .tracking-\[0\.5em\] {
1532
+ letter-spacing: 0.5em;
1533
+ }
1534
+ .tracking-wide {
1535
+ letter-spacing: 0.025em;
1536
+ }
1537
+ .tracking-wider {
1538
+ letter-spacing: 0.05em;
1539
+ }
1540
+ .text-\[var\(--color-error\)\] {
1541
+ color: var(--color-error);
1542
+ }
1543
+ .text-\[var\(--color-primary\)\] {
1544
+ color: var(--color-primary);
1545
+ }
1546
+ .text-\[var\(--color-text-muted\)\] {
1547
+ color: var(--color-text-muted);
1548
+ }
1549
+ .text-\[var\(--color-text-primary\)\] {
1550
+ color: var(--color-text-primary);
1551
+ }
1552
+ .text-\[var\(--color-text-secondary\)\] {
1553
+ color: var(--color-text-secondary);
1554
+ }
1555
+ .text-\[var\(--color-warning\)\] {
1556
+ color: var(--color-warning);
1557
+ }
1558
+ .text-assistant-message-text {
1559
+ --tw-text-opacity: 1;
1560
+ color: rgb(var(--color-assistant-message-text) / var(--tw-text-opacity, 1));
1561
+ }
1562
+ .text-blue-600 {
1563
+ --tw-text-opacity: 1;
1564
+ color: rgb(37 99 235 / var(--tw-text-opacity, 1));
1565
+ }
1566
+ .text-error {
1567
+ --tw-text-opacity: 1;
1568
+ color: rgb(var(--color-error) / var(--tw-text-opacity, 1));
1569
+ }
1570
+ .text-gray-600 {
1571
+ --tw-text-opacity: 1;
1572
+ color: rgb(75 85 99 / var(--tw-text-opacity, 1));
1573
+ }
1574
+ .text-green-600 {
1575
+ --tw-text-opacity: 1;
1576
+ color: rgb(22 163 74 / var(--tw-text-opacity, 1));
1577
+ }
1578
+ .text-primary {
1579
+ --tw-text-opacity: 1;
1580
+ color: rgb(var(--color-primary) / var(--tw-text-opacity, 1));
1581
+ }
1582
+ .text-purple-600 {
1583
+ --tw-text-opacity: 1;
1584
+ color: rgb(147 51 234 / var(--tw-text-opacity, 1));
1585
+ }
1586
+ .text-secondary {
1587
+ --tw-text-opacity: 1;
1588
+ color: rgb(var(--color-secondary) / var(--tw-text-opacity, 1));
1589
+ }
1590
+ .text-success {
1591
+ --tw-text-opacity: 1;
1592
+ color: rgb(var(--color-success) / var(--tw-text-opacity, 1));
1593
+ }
1594
+ .text-text-muted {
1595
+ --tw-text-opacity: 1;
1596
+ color: rgb(var(--color-text-muted) / var(--tw-text-opacity, 1));
1597
+ }
1598
+ .text-text-primary {
1599
+ --tw-text-opacity: 1;
1600
+ color: rgb(var(--color-text-primary) / var(--tw-text-opacity, 1));
1601
+ }
1602
+ .text-text-secondary {
1603
+ --tw-text-opacity: 1;
1604
+ color: rgb(var(--color-text-secondary) / var(--tw-text-opacity, 1));
1605
+ }
1606
+ .text-user-message-text {
1607
+ --tw-text-opacity: 1;
1608
+ color: rgb(var(--color-user-message-text) / var(--tw-text-opacity, 1));
1609
+ }
1610
+ .text-warning {
1611
+ --tw-text-opacity: 1;
1612
+ color: rgb(var(--color-warning) / var(--tw-text-opacity, 1));
1613
+ }
1614
+ .text-white {
1615
+ --tw-text-opacity: 1;
1616
+ color: rgb(255 255 255 / var(--tw-text-opacity, 1));
1617
+ }
1618
+ .placeholder-text-muted::-moz-placeholder {
1619
+ --tw-placeholder-opacity: 1;
1620
+ color: rgb(var(--color-text-muted) / var(--tw-placeholder-opacity, 1));
1621
+ }
1622
+ .placeholder-text-muted::placeholder {
1623
+ --tw-placeholder-opacity: 1;
1624
+ color: rgb(var(--color-text-muted) / var(--tw-placeholder-opacity, 1));
1625
+ }
1626
+ .opacity-0 {
1627
+ opacity: 0;
1628
+ }
1629
+ .opacity-50 {
1630
+ opacity: 0.5;
1631
+ }
1632
+ .opacity-60 {
1633
+ opacity: 0.6;
1634
+ }
1635
+ .shadow-2xl {
1636
+ --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
1637
+ --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
1638
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
1639
+ }
1640
+ .shadow-lg {
1641
+ --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
1642
+ --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
1643
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
1644
+ }
1645
+ .shadow-xl {
1646
+ --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
1647
+ --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);
1648
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
1649
+ }
1650
+ .blur {
1651
+ --tw-blur: blur(8px);
1652
+ 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);
1653
+ }
1654
+ .filter {
1655
+ 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);
1656
+ }
1657
+ .backdrop-blur-sm {
1658
+ --tw-backdrop-blur: blur(4px);
1659
+ 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);
1660
+ }
1661
+ .transition-all {
1662
+ transition-property: all;
1663
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
1664
+ transition-duration: 150ms;
1665
+ }
1666
+ .transition-colors {
1667
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
1668
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
1669
+ transition-duration: 150ms;
1670
+ }
1671
+ .transition-opacity {
1672
+ transition-property: opacity;
1673
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
1674
+ transition-duration: 150ms;
1675
+ }
1676
+ .transition-transform {
1677
+ transition-property: transform;
1678
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
1679
+ transition-duration: 150ms;
1680
+ }
1681
+ .duration-200 {
1682
+ transition-duration: 200ms;
1683
+ }
1684
+ .ease-in-out {
1685
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
1686
+ }
1687
+
1688
+ /* Default theme variables (Light) */
1689
+ :root {
1690
+ --color-primary: 99 102 241;
1691
+ --color-primary-hover: 79 70 229;
1692
+ --color-secondary: 139 92 246;
1693
+
1694
+ --color-background: 255 255 255;
1695
+ --color-background-secondary: 249 250 251;
1696
+ --color-sidebar: 243 244 246;
1697
+
1698
+ --color-text-primary: 17 24 39;
1699
+ --color-text-secondary: 107 114 128;
1700
+ --color-text-muted: 156 163 175;
1701
+
1702
+ --color-border: 229 231 235;
1703
+ --color-input-background: 255 255 255;
1704
+ --color-input-border: 209 213 219;
1705
+
1706
+ --color-user-message-bg: 99 102 241;
1707
+ --color-user-message-text: 255 255 255;
1708
+ --color-assistant-message-bg: 243 244 246;
1709
+ --color-assistant-message-text: 17 24 39;
1710
+
1711
+ --color-success: 16 185 129;
1712
+ --color-warning: 245 158 11;
1713
+ --color-error: 239 68 68;
1714
+
1715
+ --font-sans: 'Inter', system-ui, sans-serif;
1716
+ --font-mono: 'JetBrains Mono', Menlo, monospace;
1717
+
1718
+ --radius-sm: 0.25rem;
1719
+ --radius-md: 0.5rem;
1720
+ --radius-lg: 0.75rem;
1721
+ --radius-full: 9999px;
1722
+ }
1723
+
1724
+ /* Dark theme */
1725
+ [data-theme="dark"] {
1726
+ --color-primary: 129 140 248;
1727
+ --color-primary-hover: 165 180 252;
1728
+ --color-secondary: 167 139 250;
1729
+
1730
+ --color-background: 17 24 39;
1731
+ --color-background-secondary: 31 41 55;
1732
+ --color-sidebar: 15 23 42;
1733
+
1734
+ --color-text-primary: 249 250 251;
1735
+ --color-text-secondary: 209 213 219;
1736
+ --color-text-muted: 107 114 128;
1737
+
1738
+ --color-border: 55 65 81;
1739
+ --color-input-background: 31 41 55;
1740
+ --color-input-border: 75 85 99;
1741
+
1742
+ --color-user-message-bg: 79 70 229;
1743
+ --color-user-message-text: 255 255 255;
1744
+ --color-assistant-message-bg: 31 41 55;
1745
+ --color-assistant-message-text: 249 250 251;
1746
+
1747
+ --color-success: 52 211 153;
1748
+ --color-warning: 251 191 36;
1749
+ --color-error: 248 113 113;
1750
+ }
1751
+
1752
+ /* Base styles */
1753
+ html {
1754
+ font-family: var(--font-sans);
1755
+ }
1756
+
1757
+ body {
1758
+ --tw-bg-opacity: 1;
1759
+ background-color: rgb(var(--color-background) / var(--tw-bg-opacity, 1));
1760
+ --tw-text-opacity: 1;
1761
+ color: rgb(var(--color-text-primary) / var(--tw-text-opacity, 1));
1762
+ }
1763
+
1764
+ /* Mobile viewport height fix - use dvh where supported */
1765
+ @supports (height: 100dvh) {
1766
+ .h-screen-safe {
1767
+ height: 100dvh;
1768
+ }
1769
+ }
1770
+
1771
+ @supports not (height: 100dvh) {
1772
+ .h-screen-safe {
1773
+ height: 100vh;
1774
+ }
1775
+ }
1776
+
1777
+ /* Fallback for older browsers */
1778
+ .h-screen-safe {
1779
+ height: 100vh;
1780
+ height: 100dvh;
1781
+ }
1782
+
1783
+ /* Scrollbar styling */
1784
+ ::-webkit-scrollbar {
1785
+ width: 8px;
1786
+ height: 8px;
1787
+ }
1788
+
1789
+ ::-webkit-scrollbar-track {
1790
+ background-color: transparent;
1791
+ }
1792
+
1793
+ ::-webkit-scrollbar-thumb {
1794
+ border-radius: var(--radius-full);
1795
+ --tw-bg-opacity: 1;
1796
+ background-color: rgb(var(--color-border) / var(--tw-bg-opacity, 1));
1797
+ }
1798
+
1799
+ ::-webkit-scrollbar-thumb:hover {
1800
+ --tw-bg-opacity: 1;
1801
+ background-color: rgb(var(--color-text-muted) / var(--tw-bg-opacity, 1));
1802
+ }
1803
+
1804
+ /* Code block styling */
1805
+ pre {
1806
+ font-family: var(--font-mono), Menlo, monospace;
1807
+ font-size: 0.875rem;
1808
+ line-height: 1.25rem;
1809
+ }
1810
+
1811
+ code {
1812
+ font-family: var(--font-mono), Menlo, monospace;
1813
+ }
1814
+
1815
+ /* Markdown content styling */
1816
+ .markdown-content {
1817
+ line-height: 1.625;
1818
+ }
1819
+
1820
+ .markdown-content h1 {
1821
+ margin-top: 1.5rem;
1822
+ margin-bottom: 1rem;
1823
+ font-size: 1.5rem;
1824
+ line-height: 2rem;
1825
+ font-weight: 700;
1826
+ }
1827
+
1828
+ .markdown-content h2 {
1829
+ margin-top: 1.25rem;
1830
+ margin-bottom: 0.75rem;
1831
+ font-size: 1.25rem;
1832
+ line-height: 1.75rem;
1833
+ font-weight: 700;
1834
+ }
1835
+
1836
+ .markdown-content h3 {
1837
+ margin-top: 1rem;
1838
+ margin-bottom: 0.5rem;
1839
+ font-size: 1.125rem;
1840
+ line-height: 1.75rem;
1841
+ font-weight: 600;
1842
+ }
1843
+
1844
+ .markdown-content p {
1845
+ margin-bottom: 1rem;
1846
+ }
1847
+
1848
+ .markdown-content ul,
1849
+ .markdown-content ol {
1850
+ margin-bottom: 1rem;
1851
+ padding-left: 1.5rem;
1852
+ }
1853
+
1854
+ .markdown-content ul {
1855
+ list-style-type: disc;
1856
+ }
1857
+
1858
+ .markdown-content ol {
1859
+ list-style-type: decimal;
1860
+ }
1861
+
1862
+ .markdown-content li {
1863
+ margin-bottom: 0.25rem;
1864
+ }
1865
+
1866
+ .markdown-content blockquote {
1867
+ margin-top: 1rem;
1868
+ margin-bottom: 1rem;
1869
+ border-left-width: 4px;
1870
+ --tw-border-opacity: 1;
1871
+ border-color: rgb(var(--color-border) / var(--tw-border-opacity, 1));
1872
+ padding-left: 1rem;
1873
+ font-style: italic;
1874
+ }
1875
+
1876
+ .markdown-content a {
1877
+ --tw-text-opacity: 1;
1878
+ color: rgb(var(--color-primary) / var(--tw-text-opacity, 1));
1879
+ }
1880
+
1881
+ .markdown-content a:hover {
1882
+ text-decoration-line: underline;
1883
+ }
1884
+
1885
+ .markdown-content table {
1886
+ margin-top: 1rem;
1887
+ margin-bottom: 1rem;
1888
+ width: 100%;
1889
+ border-collapse: collapse;
1890
+ }
1891
+
1892
+ .markdown-content th,
1893
+ .markdown-content td {
1894
+ border-width: 1px;
1895
+ --tw-border-opacity: 1;
1896
+ border-color: rgb(var(--color-border) / var(--tw-border-opacity, 1));
1897
+ padding-left: 1rem;
1898
+ padding-right: 1rem;
1899
+ padding-top: 0.5rem;
1900
+ padding-bottom: 0.5rem;
1901
+ text-align: left;
1902
+ }
1903
+
1904
+ .markdown-content th {
1905
+ --tw-bg-opacity: 1;
1906
+ background-color: rgb(var(--color-background-secondary) / var(--tw-bg-opacity, 1));
1907
+ font-weight: 600;
1908
+ }
1909
+
1910
+ .markdown-content hr {
1911
+ margin-top: 1.5rem;
1912
+ margin-bottom: 1.5rem;
1913
+ --tw-border-opacity: 1;
1914
+ border-color: rgb(var(--color-border) / var(--tw-border-opacity, 1));
1915
+ }
1916
+
1917
+ /* Animation utilities */
1918
+ @keyframes fade-in {
1919
+ from {
1920
+ opacity: 0;
1921
+ }
1922
+ to {
1923
+ opacity: 1;
1924
+ }
1925
+ }
1926
+
1927
+ @keyframes slide-up {
1928
+ from {
1929
+ transform: translateY(10px);
1930
+ opacity: 0;
1931
+ }
1932
+ to {
1933
+ transform: translateY(0);
1934
+ opacity: 1;
1935
+ }
1936
+ }
1937
+
1938
+ .animate-fade-in {
1939
+ animation: fade-in 0.2s ease-out;
1940
+ }
1941
+
1942
+ .animate-slide-up {
1943
+ animation: slide-up 0.2s ease-out;
1944
+ }
1945
+
1946
+ /* Typing animation for assistant messages */
1947
+ @keyframes typing {
1948
+ 0%, 60%, 100% {
1949
+ opacity: 1;
1950
+ }
1951
+ 30% {
1952
+ opacity: 0.3;
1953
+ }
1954
+ }
1955
+
1956
+ .typing-indicator span {
1957
+ animation: typing 1s infinite;
1958
+ }
1959
+
1960
+ .typing-indicator span:nth-child(2) {
1961
+ animation-delay: 0.2s;
1962
+ }
1963
+
1964
+ .typing-indicator span:nth-child(3) {
1965
+ animation-delay: 0.4s;
1966
+ }
1967
+
1968
+ /* Search highlight styling */
1969
+ mark {
1970
+ border-radius: 0.25rem;
1971
+ background-color: rgb(var(--color-warning) / 0.3);
1972
+ padding-left: 0.125rem;
1973
+ padding-right: 0.125rem;
1974
+ --tw-text-opacity: 1;
1975
+ color: rgb(var(--color-text-primary) / var(--tw-text-opacity, 1));
1976
+ }
1977
+
1978
+ /* Line clamp utility */
1979
+ .line-clamp-2 {
1980
+ display: -webkit-box;
1981
+ -webkit-line-clamp: 2;
1982
+ -webkit-box-orient: vertical;
1983
+ overflow: hidden;
1984
+ }
1985
+
1986
+ /* Keyboard shortcut styling */
1987
+ kbd {
1988
+ font-family: var(--font-sans), system-ui, sans-serif;
1989
+ }
1990
+ .focus-within\:border-primary:focus-within {
1991
+ --tw-border-opacity: 1;
1992
+ border-color: rgb(var(--color-primary) / var(--tw-border-opacity, 1));
1993
+ }
1994
+ .hover\:scale-105:hover {
1995
+ --tw-scale-x: 1.05;
1996
+ --tw-scale-y: 1.05;
1997
+ 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));
1998
+ }
1999
+ .hover\:border-primary:hover {
2000
+ --tw-border-opacity: 1;
2001
+ border-color: rgb(var(--color-primary) / var(--tw-border-opacity, 1));
2002
+ }
2003
+ .hover\:border-text-secondary:hover {
2004
+ --tw-border-opacity: 1;
2005
+ border-color: rgb(var(--color-text-secondary) / var(--tw-border-opacity, 1));
2006
+ }
2007
+ .hover\:bg-\[var\(--color-background-secondary\)\]:hover {
2008
+ background-color: var(--color-background-secondary);
2009
+ }
2010
+ .hover\:bg-\[var\(--color-primary-hover\)\]:hover {
2011
+ background-color: var(--color-primary-hover);
2012
+ }
2013
+ .hover\:bg-background:hover {
2014
+ --tw-bg-opacity: 1;
2015
+ background-color: rgb(var(--color-background) / var(--tw-bg-opacity, 1));
2016
+ }
2017
+ .hover\:bg-background-secondary:hover {
2018
+ --tw-bg-opacity: 1;
2019
+ background-color: rgb(var(--color-background-secondary) / var(--tw-bg-opacity, 1));
2020
+ }
2021
+ .hover\:bg-background-secondary\/30:hover {
2022
+ background-color: rgb(var(--color-background-secondary) / 0.3);
2023
+ }
2024
+ .hover\:bg-background-secondary\/80:hover {
2025
+ background-color: rgb(var(--color-background-secondary) / 0.8);
2026
+ }
2027
+ .hover\:bg-background\/50:hover {
2028
+ background-color: rgb(var(--color-background) / 0.5);
2029
+ }
2030
+ .hover\:bg-black\/10:hover {
2031
+ background-color: rgb(0 0 0 / 0.1);
2032
+ }
2033
+ .hover\:bg-border:hover {
2034
+ --tw-bg-opacity: 1;
2035
+ background-color: rgb(var(--color-border) / var(--tw-bg-opacity, 1));
2036
+ }
2037
+ .hover\:bg-error\/10:hover {
2038
+ background-color: rgb(var(--color-error) / 0.1);
2039
+ }
2040
+ .hover\:bg-error\/20:hover {
2041
+ background-color: rgb(var(--color-error) / 0.2);
2042
+ }
2043
+ .hover\:bg-error\/80:hover {
2044
+ background-color: rgb(var(--color-error) / 0.8);
2045
+ }
2046
+ .hover\:bg-error\/90:hover {
2047
+ background-color: rgb(var(--color-error) / 0.9);
2048
+ }
2049
+ .hover\:bg-primary-hover:hover {
2050
+ --tw-bg-opacity: 1;
2051
+ background-color: rgb(var(--color-primary-hover) / var(--tw-bg-opacity, 1));
2052
+ }
2053
+ .hover\:bg-primary\/10:hover {
2054
+ background-color: rgb(var(--color-primary) / 0.1);
2055
+ }
2056
+ .hover\:bg-success\/10:hover {
2057
+ background-color: rgb(var(--color-success) / 0.1);
2058
+ }
2059
+ .hover\:text-error:hover {
2060
+ --tw-text-opacity: 1;
2061
+ color: rgb(var(--color-error) / var(--tw-text-opacity, 1));
2062
+ }
2063
+ .hover\:text-error\/80:hover {
2064
+ color: rgb(var(--color-error) / 0.8);
2065
+ }
2066
+ .hover\:text-primary:hover {
2067
+ --tw-text-opacity: 1;
2068
+ color: rgb(var(--color-primary) / var(--tw-text-opacity, 1));
2069
+ }
2070
+ .hover\:text-success:hover {
2071
+ --tw-text-opacity: 1;
2072
+ color: rgb(var(--color-success) / var(--tw-text-opacity, 1));
2073
+ }
2074
+ .hover\:text-text-primary:hover {
2075
+ --tw-text-opacity: 1;
2076
+ color: rgb(var(--color-text-primary) / var(--tw-text-opacity, 1));
2077
+ }
2078
+ .hover\:text-text-secondary:hover {
2079
+ --tw-text-opacity: 1;
2080
+ color: rgb(var(--color-text-secondary) / var(--tw-text-opacity, 1));
2081
+ }
2082
+ .hover\:underline:hover {
2083
+ text-decoration-line: underline;
2084
+ }
2085
+ .hover\:opacity-80:hover {
2086
+ opacity: 0.8;
2087
+ }
2088
+ .hover\:opacity-90:hover {
2089
+ opacity: 0.9;
2090
+ }
2091
+ .focus\:border-primary:focus {
2092
+ --tw-border-opacity: 1;
2093
+ border-color: rgb(var(--color-primary) / var(--tw-border-opacity, 1));
2094
+ }
2095
+ .focus\:outline-none:focus {
2096
+ outline: 2px solid transparent;
2097
+ outline-offset: 2px;
2098
+ }
2099
+ .focus\:ring-2:focus {
2100
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2101
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2102
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2103
+ }
2104
+ .focus\:ring-primary\/20:focus {
2105
+ --tw-ring-color: rgb(var(--color-primary) / 0.2);
2106
+ }
2107
+ .focus\:ring-primary\/50:focus {
2108
+ --tw-ring-color: rgb(var(--color-primary) / 0.5);
2109
+ }
2110
+ .active\:bg-background-secondary:active {
2111
+ --tw-bg-opacity: 1;
2112
+ background-color: rgb(var(--color-background-secondary) / var(--tw-bg-opacity, 1));
2113
+ }
2114
+ .active\:bg-error\/10:active {
2115
+ background-color: rgb(var(--color-error) / 0.1);
2116
+ }
2117
+ .active\:bg-primary-hover:active {
2118
+ --tw-bg-opacity: 1;
2119
+ background-color: rgb(var(--color-primary-hover) / var(--tw-bg-opacity, 1));
2120
+ }
2121
+ .active\:bg-primary\/10:active {
2122
+ background-color: rgb(var(--color-primary) / 0.1);
2123
+ }
2124
+ .active\:bg-success\/10:active {
2125
+ background-color: rgb(var(--color-success) / 0.1);
2126
+ }
2127
+ .disabled\:cursor-not-allowed:disabled {
2128
+ cursor: not-allowed;
2129
+ }
2130
+ .disabled\:opacity-50:disabled {
2131
+ opacity: 0.5;
2132
+ }
2133
+ .group:hover .group-hover\:opacity-100 {
2134
+ opacity: 1;
2135
+ }
2136
+ @media (pointer: coarse) {
2137
+
2138
+ .touch-device\:opacity-100 {
2139
+ opacity: 1;
2140
+ }
2141
+ }
2142
+ @media (min-width: 640px) {
2143
+
2144
+ .sm\:mb-8 {
2145
+ margin-bottom: 2rem;
2146
+ }
2147
+
2148
+ .sm\:block {
2149
+ display: block;
2150
+ }
2151
+
2152
+ .sm\:inline {
2153
+ display: inline;
2154
+ }
2155
+
2156
+ .sm\:flex {
2157
+ display: flex;
2158
+ }
2159
+
2160
+ .sm\:grid {
2161
+ display: grid;
2162
+ }
2163
+
2164
+ .sm\:hidden {
2165
+ display: none;
2166
+ }
2167
+
2168
+ .sm\:h-14 {
2169
+ height: 3.5rem;
2170
+ }
2171
+
2172
+ .sm\:h-\[14px\] {
2173
+ height: 14px;
2174
+ }
2175
+
2176
+ .sm\:w-14 {
2177
+ width: 3.5rem;
2178
+ }
2179
+
2180
+ .sm\:w-\[14px\] {
2181
+ width: 14px;
2182
+ }
2183
+
2184
+ .sm\:max-w-\[150px\] {
2185
+ max-width: 150px;
2186
+ }
2187
+
2188
+ .sm\:max-w-\[80\%\] {
2189
+ max-width: 80%;
2190
+ }
2191
+
2192
+ .sm\:flex-1 {
2193
+ flex: 1 1 0%;
2194
+ }
2195
+
2196
+ .sm\:flex-none {
2197
+ flex: none;
2198
+ }
2199
+
2200
+ .sm\:grid-cols-2 {
2201
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2202
+ }
2203
+
2204
+ .sm\:flex-row {
2205
+ flex-direction: row;
2206
+ }
2207
+
2208
+ .sm\:items-start {
2209
+ align-items: flex-start;
2210
+ }
2211
+
2212
+ .sm\:items-center {
2213
+ align-items: center;
2214
+ }
2215
+
2216
+ .sm\:justify-between {
2217
+ justify-content: space-between;
2218
+ }
2219
+
2220
+ .sm\:gap-1 {
2221
+ gap: 0.25rem;
2222
+ }
2223
+
2224
+ .sm\:gap-4 {
2225
+ gap: 1rem;
2226
+ }
2227
+
2228
+ .sm\:space-y-0 > :not([hidden]) ~ :not([hidden]) {
2229
+ --tw-space-y-reverse: 0;
2230
+ margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));
2231
+ margin-bottom: calc(0px * var(--tw-space-y-reverse));
2232
+ }
2233
+
2234
+ .sm\:space-y-4 > :not([hidden]) ~ :not([hidden]) {
2235
+ --tw-space-y-reverse: 0;
2236
+ margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
2237
+ margin-bottom: calc(1rem * var(--tw-space-y-reverse));
2238
+ }
2239
+
2240
+ .sm\:self-auto {
2241
+ align-self: auto;
2242
+ }
2243
+
2244
+ .sm\:rounded-2xl {
2245
+ border-radius: 1rem;
2246
+ }
2247
+
2248
+ .sm\:p-1 {
2249
+ padding: 0.25rem;
2250
+ }
2251
+
2252
+ .sm\:p-4 {
2253
+ padding: 1rem;
2254
+ }
2255
+
2256
+ .sm\:p-6 {
2257
+ padding: 1.5rem;
2258
+ }
2259
+
2260
+ .sm\:p-8 {
2261
+ padding: 2rem;
2262
+ }
2263
+
2264
+ .sm\:px-3 {
2265
+ padding-left: 0.75rem;
2266
+ padding-right: 0.75rem;
2267
+ }
2268
+
2269
+ .sm\:px-4 {
2270
+ padding-left: 1rem;
2271
+ padding-right: 1rem;
2272
+ }
2273
+
2274
+ .sm\:px-6 {
2275
+ padding-left: 1.5rem;
2276
+ padding-right: 1.5rem;
2277
+ }
2278
+
2279
+ .sm\:py-2 {
2280
+ padding-top: 0.5rem;
2281
+ padding-bottom: 0.5rem;
2282
+ }
2283
+
2284
+ .sm\:py-4 {
2285
+ padding-top: 1rem;
2286
+ padding-bottom: 1rem;
2287
+ }
2288
+
2289
+ .sm\:py-6 {
2290
+ padding-top: 1.5rem;
2291
+ padding-bottom: 1.5rem;
2292
+ }
2293
+
2294
+ .sm\:pl-0 {
2295
+ padding-left: 0px;
2296
+ }
2297
+
2298
+ .sm\:text-2xl {
2299
+ font-size: 1.5rem;
2300
+ line-height: 2rem;
2301
+ }
2302
+
2303
+ .sm\:text-3xl {
2304
+ font-size: 1.875rem;
2305
+ line-height: 2.25rem;
2306
+ }
2307
+
2308
+ .sm\:text-base {
2309
+ font-size: 1rem;
2310
+ line-height: 1.5rem;
2311
+ }
2312
+
2313
+ .sm\:text-lg {
2314
+ font-size: 1.125rem;
2315
+ line-height: 1.75rem;
2316
+ }
2317
+
2318
+ .sm\:text-sm {
2319
+ font-size: 0.875rem;
2320
+ line-height: 1.25rem;
2321
+ }
2322
+
2323
+ .sm\:text-xl {
2324
+ font-size: 1.25rem;
2325
+ line-height: 1.75rem;
2326
+ }
2327
+ }
2328
+ @media (min-width: 768px) {
2329
+
2330
+ .md\:block {
2331
+ display: block;
2332
+ }
2333
+
2334
+ .md\:grid {
2335
+ display: grid;
2336
+ }
2337
+
2338
+ .md\:hidden {
2339
+ display: none;
2340
+ }
2341
+
2342
+ .md\:grid-cols-2 {
2343
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2344
+ }
2345
+
2346
+ .md\:flex-row {
2347
+ flex-direction: row;
2348
+ }
2349
+
2350
+ .md\:items-center {
2351
+ align-items: center;
2352
+ }
2353
+
2354
+ .md\:justify-between {
2355
+ justify-content: space-between;
2356
+ }
2357
+ }
2358
+ @media (min-width: 1024px) {
2359
+
2360
+ .lg\:relative {
2361
+ position: relative;
2362
+ }
2363
+
2364
+ .lg\:hidden {
2365
+ display: none;
2366
+ }
2367
+
2368
+ .lg\:translate-x-0 {
2369
+ --tw-translate-x: 0px;
2370
+ 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));
2371
+ }
2372
+
2373
+ .lg\:grid-cols-2 {
2374
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2375
+ }
2376
+
2377
+ .lg\:grid-cols-3 {
2378
+ grid-template-columns: repeat(3, minmax(0, 1fr));
2379
+ }
2380
+
2381
+ .lg\:grid-cols-4 {
2382
+ grid-template-columns: repeat(4, minmax(0, 1fr));
2383
+ }
2384
+ }
2385
+ @media (prefers-color-scheme: dark) {
2386
+
2387
+ .dark\:text-blue-400 {
2388
+ --tw-text-opacity: 1;
2389
+ color: rgb(96 165 250 / var(--tw-text-opacity, 1));
2390
+ }
2391
+
2392
+ .dark\:text-gray-400 {
2393
+ --tw-text-opacity: 1;
2394
+ color: rgb(156 163 175 / var(--tw-text-opacity, 1));
2395
+ }
2396
+
2397
+ .dark\:text-green-400 {
2398
+ --tw-text-opacity: 1;
2399
+ color: rgb(74 222 128 / var(--tw-text-opacity, 1));
2400
+ }
2401
+
2402
+ .dark\:text-purple-400 {
2403
+ --tw-text-opacity: 1;
2404
+ color: rgb(192 132 252 / var(--tw-text-opacity, 1));
2405
+ }
2406
+
2407
+ .dark\:hover\:bg-white\/10:hover {
2408
+ background-color: rgb(255 255 255 / 0.1);
2409
+ }
2410
+ }