@harperfast/harper 5.2.0 → 5.2.2

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 (308) hide show
  1. package/bin/copyDb.ts +40 -11
  2. package/bin/harper.ts +20 -51
  3. package/bin/help.ts +216 -0
  4. package/components/Application.ts +236 -46
  5. package/components/ApplicationScope.ts +26 -0
  6. package/components/EntryHandler.ts +410 -105
  7. package/components/RuntimeModuleTracker.ts +189 -0
  8. package/components/Scope.ts +68 -24
  9. package/components/componentLoader.ts +70 -16
  10. package/components/deployLifecycle.ts +119 -33
  11. package/components/deploymentRecorder.ts +102 -11
  12. package/components/mcp/tools/operations.ts +6 -0
  13. package/components/operations.js +8 -6
  14. package/config/configUtils.ts +78 -20
  15. package/config/harperConfigEnvVars.ts +114 -17
  16. package/config-root.schema.json +10 -0
  17. package/dataLayer/harperBridge/ResourceBridge.ts +26 -5
  18. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
  19. package/dataLayer/hdbInfoController.ts +8 -0
  20. package/dataLayer/schemaDescribe.ts +2 -1
  21. package/dist/bin/copyDb.js +33 -9
  22. package/dist/bin/copyDb.js.map +1 -1
  23. package/dist/bin/harper.d.ts +6 -0
  24. package/dist/bin/harper.js +18 -50
  25. package/dist/bin/harper.js.map +1 -1
  26. package/dist/bin/help.d.ts +8 -0
  27. package/dist/bin/help.js +192 -0
  28. package/dist/bin/help.js.map +1 -0
  29. package/dist/components/Application.d.ts +16 -1
  30. package/dist/components/Application.js +210 -38
  31. package/dist/components/Application.js.map +1 -1
  32. package/dist/components/ApplicationScope.d.ts +7 -0
  33. package/dist/components/ApplicationScope.js +22 -0
  34. package/dist/components/ApplicationScope.js.map +1 -1
  35. package/dist/components/EntryHandler.d.ts +4 -4
  36. package/dist/components/EntryHandler.js +386 -95
  37. package/dist/components/EntryHandler.js.map +1 -1
  38. package/dist/components/RuntimeModuleTracker.d.ts +11 -0
  39. package/dist/components/RuntimeModuleTracker.js +189 -0
  40. package/dist/components/RuntimeModuleTracker.js.map +1 -0
  41. package/dist/components/Scope.d.ts +1 -0
  42. package/dist/components/Scope.js +69 -22
  43. package/dist/components/Scope.js.map +1 -1
  44. package/dist/components/componentLoader.js +69 -10
  45. package/dist/components/componentLoader.js.map +1 -1
  46. package/dist/components/deployLifecycle.d.ts +6 -2
  47. package/dist/components/deployLifecycle.js +109 -31
  48. package/dist/components/deployLifecycle.js.map +1 -1
  49. package/dist/components/deploymentRecorder.d.ts +6 -0
  50. package/dist/components/deploymentRecorder.js +94 -12
  51. package/dist/components/deploymentRecorder.js.map +1 -1
  52. package/dist/components/mcp/tools/operations.js +6 -0
  53. package/dist/components/mcp/tools/operations.js.map +1 -1
  54. package/dist/components/operations.js +8 -6
  55. package/dist/components/operations.js.map +1 -1
  56. package/dist/config/configUtils.d.ts +6 -0
  57. package/dist/config/configUtils.js +78 -18
  58. package/dist/config/configUtils.js.map +1 -1
  59. package/dist/config/harperConfigEnvVars.js +108 -16
  60. package/dist/config/harperConfigEnvVars.js.map +1 -1
  61. package/dist/dataLayer/harperBridge/ResourceBridge.js +12 -5
  62. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  63. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
  64. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js.map +1 -1
  65. package/dist/dataLayer/hdbInfoController.js +4 -0
  66. package/dist/dataLayer/hdbInfoController.js.map +1 -1
  67. package/dist/dataLayer/schemaDescribe.js +2 -1
  68. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  69. package/dist/resources/DatabaseTransaction.d.ts +57 -0
  70. package/dist/resources/DatabaseTransaction.js +284 -104
  71. package/dist/resources/DatabaseTransaction.js.map +1 -1
  72. package/dist/resources/ResourceInterface.d.ts +8 -2
  73. package/dist/resources/ResourceInterface.js.map +1 -1
  74. package/dist/resources/Resources.js +22 -4
  75. package/dist/resources/Resources.js.map +1 -1
  76. package/dist/resources/Table.d.ts +8 -6
  77. package/dist/resources/Table.js +158 -31
  78. package/dist/resources/Table.js.map +1 -1
  79. package/dist/resources/analytics/write.js +6 -6
  80. package/dist/resources/analytics/write.js.map +1 -1
  81. package/dist/resources/auditStore.js +27 -1
  82. package/dist/resources/auditStore.js.map +1 -1
  83. package/dist/resources/blob.d.ts +0 -1
  84. package/dist/resources/blob.js +15 -7
  85. package/dist/resources/blob.js.map +1 -1
  86. package/dist/resources/databases.d.ts +22 -5
  87. package/dist/resources/databases.js +118 -9
  88. package/dist/resources/databases.js.map +1 -1
  89. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +15 -2
  90. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +128 -39
  91. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  92. package/dist/resources/jsResource.d.ts +4 -26
  93. package/dist/resources/jsResource.js +5 -59
  94. package/dist/resources/jsResource.js.map +1 -1
  95. package/dist/resources/models/Models.d.ts +11 -1
  96. package/dist/resources/models/Models.js +10 -1
  97. package/dist/resources/models/Models.js.map +1 -1
  98. package/dist/resources/models/backendRegistry.d.ts +9 -0
  99. package/dist/resources/models/backendRegistry.js +10 -0
  100. package/dist/resources/models/backendRegistry.js.map +1 -1
  101. package/dist/resources/models/openaiStream.d.ts +16 -1
  102. package/dist/resources/models/openaiStream.js +113 -21
  103. package/dist/resources/models/openaiStream.js.map +1 -1
  104. package/dist/resources/models/v1/chatCompletions.d.ts +54 -0
  105. package/dist/resources/models/v1/chatCompletions.js +115 -0
  106. package/dist/resources/models/v1/chatCompletions.js.map +1 -0
  107. package/dist/resources/models/v1/embeddings.d.ts +11 -0
  108. package/dist/resources/models/v1/embeddings.js +71 -0
  109. package/dist/resources/models/v1/embeddings.js.map +1 -0
  110. package/dist/resources/models/v1/errors.d.ts +54 -0
  111. package/dist/resources/models/v1/errors.js +130 -0
  112. package/dist/resources/models/v1/errors.js.map +1 -0
  113. package/dist/resources/models/v1/index.d.ts +36 -0
  114. package/dist/resources/models/v1/index.js +75 -0
  115. package/dist/resources/models/v1/index.js.map +1 -0
  116. package/dist/resources/models/v1/models.d.ts +26 -0
  117. package/dist/resources/models/v1/models.js +44 -0
  118. package/dist/resources/models/v1/models.js.map +1 -0
  119. package/dist/resources/models/v1/translation.d.ts +133 -0
  120. package/dist/resources/models/v1/translation.js +298 -0
  121. package/dist/resources/models/v1/translation.js.map +1 -0
  122. package/dist/resources/roles.d.ts +1 -1
  123. package/dist/resources/roles.js +54 -7
  124. package/dist/resources/roles.js.map +1 -1
  125. package/dist/resources/search.d.ts +1 -1
  126. package/dist/resources/search.js +7 -3
  127. package/dist/resources/search.js.map +1 -1
  128. package/dist/security/jsLoader.js +84 -33
  129. package/dist/security/jsLoader.js.map +1 -1
  130. package/dist/security/role.js +4 -0
  131. package/dist/security/role.js.map +1 -1
  132. package/dist/security/superUserGuard.d.ts +7 -0
  133. package/dist/security/superUserGuard.js +23 -0
  134. package/dist/security/superUserGuard.js.map +1 -0
  135. package/dist/security/tokenAuthentication.d.ts +0 -1
  136. package/dist/security/tokenAuthentication.js +6 -2
  137. package/dist/security/tokenAuthentication.js.map +1 -1
  138. package/dist/security/user.d.ts +6 -1
  139. package/dist/security/user.js +23 -1
  140. package/dist/security/user.js.map +1 -1
  141. package/dist/server/http.d.ts +23 -2
  142. package/dist/server/http.js +99 -12
  143. package/dist/server/http.js.map +1 -1
  144. package/dist/server/operationsServer.d.ts +0 -2
  145. package/dist/server/operationsServer.js.map +1 -1
  146. package/dist/server/serverHelpers/multipartParser.js +9 -0
  147. package/dist/server/serverHelpers/multipartParser.js.map +1 -1
  148. package/dist/server/serverHelpers/operationAuthorizationState.d.ts +2 -0
  149. package/dist/server/serverHelpers/operationAuthorizationState.js +13 -0
  150. package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -0
  151. package/dist/server/serverHelpers/registeredOperations.d.ts +3 -2
  152. package/dist/server/serverHelpers/registeredOperations.js +14 -13
  153. package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
  154. package/dist/server/serverHelpers/serverHandlers.js +19 -3
  155. package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
  156. package/dist/server/serverHelpers/serverUtilities.d.ts +1 -1
  157. package/dist/server/serverHelpers/serverUtilities.js +10 -7
  158. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  159. package/dist/server/static.js +57 -18
  160. package/dist/server/static.js.map +1 -1
  161. package/dist/server/storageReclamation.d.ts +17 -0
  162. package/dist/server/storageReclamation.js +90 -6
  163. package/dist/server/storageReclamation.js.map +1 -1
  164. package/dist/server/threads/manageThreads.js +8 -0
  165. package/dist/server/threads/manageThreads.js.map +1 -1
  166. package/dist/server/threads/socketRouter.js +20 -0
  167. package/dist/server/threads/socketRouter.js.map +1 -1
  168. package/dist/server/threads/threadServer.js +12 -0
  169. package/dist/server/threads/threadServer.js.map +1 -1
  170. package/dist/sqlEngine/diff/differential.js +7 -3
  171. package/dist/sqlEngine/diff/differential.js.map +1 -1
  172. package/dist/sqlEngine/parser/normalizer.js +37 -9
  173. package/dist/sqlEngine/parser/normalizer.js.map +1 -1
  174. package/dist/sqlTranslator/index.js +6 -1
  175. package/dist/sqlTranslator/index.js.map +1 -1
  176. package/dist/upgrade/upgradePrompt.d.ts +2 -2
  177. package/dist/upgrade/upgradePrompt.js +22 -3
  178. package/dist/upgrade/upgradePrompt.js.map +1 -1
  179. package/dist/utility/environment/environmentManager.d.ts +11 -0
  180. package/dist/utility/environment/environmentManager.js +154 -0
  181. package/dist/utility/environment/environmentManager.js.map +1 -1
  182. package/dist/utility/errors/commonErrors.d.ts +1 -0
  183. package/dist/utility/errors/commonErrors.js +1 -0
  184. package/dist/utility/errors/commonErrors.js.map +1 -1
  185. package/dist/utility/hdbTerms.d.ts +2 -0
  186. package/dist/utility/hdbTerms.js +2 -0
  187. package/dist/utility/hdbTerms.js.map +1 -1
  188. package/dist/utility/install/installer.js +32 -0
  189. package/dist/utility/install/installer.js.map +1 -1
  190. package/dist/utility/lmdb/environmentUtility.js +2 -1
  191. package/dist/utility/lmdb/environmentUtility.js.map +1 -1
  192. package/dist/utility/logging/harper_logger.d.ts +7 -0
  193. package/dist/utility/logging/harper_logger.js +57 -24
  194. package/dist/utility/logging/harper_logger.js.map +1 -1
  195. package/npm-shrinkwrap.json +208 -198
  196. package/package.json +10 -8
  197. package/resources/DESIGN.md +1 -0
  198. package/resources/DatabaseTransaction.ts +313 -102
  199. package/resources/ResourceInterface.ts +8 -2
  200. package/resources/Resources.ts +22 -4
  201. package/resources/Table.ts +398 -259
  202. package/resources/analytics/write.ts +22 -20
  203. package/resources/auditStore.ts +32 -1
  204. package/resources/blob.ts +15 -8
  205. package/resources/databases.ts +123 -12
  206. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +119 -45
  207. package/resources/jsResource.ts +5 -62
  208. package/resources/models/Models.ts +14 -1
  209. package/resources/models/backendRegistry.ts +10 -0
  210. package/resources/models/openaiStream.ts +131 -19
  211. package/resources/models/v1/chatCompletions.ts +128 -0
  212. package/resources/models/v1/embeddings.ts +70 -0
  213. package/resources/models/v1/errors.ts +141 -0
  214. package/resources/models/v1/index.ts +72 -0
  215. package/resources/models/v1/models.ts +53 -0
  216. package/resources/models/v1/translation.ts +362 -0
  217. package/resources/roles.ts +67 -7
  218. package/resources/search.ts +8 -3
  219. package/security/jsLoader.ts +84 -30
  220. package/security/role.ts +7 -0
  221. package/security/superUserGuard.ts +20 -0
  222. package/security/tokenAuthentication.ts +6 -3
  223. package/security/user.ts +26 -1
  224. package/server/DESIGN.md +45 -34
  225. package/server/http.ts +100 -13
  226. package/server/operationsServer.ts +0 -2
  227. package/server/serverHelpers/multipartParser.ts +9 -0
  228. package/server/serverHelpers/operationAuthorizationState.ts +11 -0
  229. package/server/serverHelpers/registeredOperations.ts +19 -15
  230. package/server/serverHelpers/serverHandlers.js +20 -3
  231. package/server/serverHelpers/serverUtilities.ts +10 -7
  232. package/server/static.ts +75 -20
  233. package/server/storageReclamation.ts +104 -8
  234. package/server/threads/manageThreads.js +8 -0
  235. package/server/threads/socketRouter.ts +20 -0
  236. package/server/threads/threadServer.js +11 -0
  237. package/sqlTranslator/index.ts +6 -1
  238. package/static/defaultConfig.yaml +2 -0
  239. package/studio/web/assets/{Chat-DoVWScmq.js → Chat-BMUjPklt.js} +5 -5
  240. package/studio/web/assets/{Chat-DoVWScmq.js.map → Chat-BMUjPklt.js.map} +1 -1
  241. package/studio/web/assets/{FloatingChat-UZ2NsUOZ.js → FloatingChat-Cbghuxe5.js} +5 -5
  242. package/studio/web/assets/{FloatingChat-UZ2NsUOZ.js.map → FloatingChat-Cbghuxe5.js.map} +1 -1
  243. package/studio/web/assets/{apiToken-BUI_04o7.js → apiToken-CkgTQAqc.js} +2 -2
  244. package/studio/web/assets/{apiToken-BUI_04o7.js.map → apiToken-CkgTQAqc.js.map} +1 -1
  245. package/studio/web/assets/{applications-D03NA7wW.js → applications-WvF4NOTN.js} +13 -13
  246. package/studio/web/assets/applications-WvF4NOTN.js.map +1 -0
  247. package/studio/web/assets/chevron-right-anDJCGlp.js +2 -0
  248. package/studio/web/assets/chevron-right-anDJCGlp.js.map +1 -0
  249. package/studio/web/assets/index-CDeqVx71.css +1 -0
  250. package/studio/web/assets/index-Sevt3MVx.js +819 -0
  251. package/studio/web/assets/index-Sevt3MVx.js.map +1 -0
  252. package/studio/web/assets/index.lazy-Dg5YYPGg.js +14 -0
  253. package/studio/web/assets/{index.lazy-Dx3MpyDC.js.map → index.lazy-Dg5YYPGg.js.map} +1 -1
  254. package/studio/web/assets/{jsonMode-Cjj7dtlr.js → jsonMode-CBSEleE7.js} +2 -2
  255. package/studio/web/assets/{jsonMode-Cjj7dtlr.js.map → jsonMode-CBSEleE7.js.map} +1 -1
  256. package/studio/web/assets/languageServices-gxedeeTo.js +2 -0
  257. package/studio/web/assets/languageServices-gxedeeTo.js.map +1 -0
  258. package/studio/web/assets/{notifications-0edoFTsb.js → notifications-Ap84YyQp.js} +2 -2
  259. package/studio/web/assets/{notifications-0edoFTsb.js.map → notifications-Ap84YyQp.js.map} +1 -1
  260. package/studio/web/assets/notifications-vehqyOLM.js +2 -0
  261. package/studio/web/assets/{notifications-CwKhipK7.js.map → notifications-vehqyOLM.js.map} +1 -1
  262. package/studio/web/assets/{pollUnlessForbidden-HHdQZW1N.js → pollUnlessForbidden-BhzefVRn.js} +2 -2
  263. package/studio/web/assets/pollUnlessForbidden-BhzefVRn.js.map +1 -0
  264. package/studio/web/assets/{profile-DUfEPQtx.js → profile-DzDpRLHY.js} +2 -2
  265. package/studio/web/assets/{profile-DUfEPQtx.js.map → profile-DzDpRLHY.js.map} +1 -1
  266. package/studio/web/assets/queryClient-CgtkoiCY.js +2 -0
  267. package/studio/web/assets/queryClient-CgtkoiCY.js.map +1 -0
  268. package/studio/web/assets/regions-DpJ8s7iN.js +2 -0
  269. package/studio/web/assets/regions-DpJ8s7iN.js.map +1 -0
  270. package/studio/web/assets/register-BDy01-q3.js +3 -0
  271. package/studio/web/assets/register-BDy01-q3.js.map +1 -0
  272. package/studio/web/assets/register-CQHRwNP4.js +3 -0
  273. package/studio/web/assets/register-CQHRwNP4.js.map +1 -0
  274. package/studio/web/assets/{setComponentFile-DMPo4UjC.js → setComponentFile-D0aPcI3W.js} +2 -2
  275. package/studio/web/assets/{setComponentFile-DMPo4UjC.js.map → setComponentFile-D0aPcI3W.js.map} +1 -1
  276. package/studio/web/assets/setup-I15FAF9H.js +3 -0
  277. package/studio/web/assets/{setup-B56Oz1_u.js.map → setup-I15FAF9H.js.map} +1 -1
  278. package/studio/web/assets/status-BF1eJshJ.js +62 -0
  279. package/studio/web/assets/status-BF1eJshJ.js.map +1 -0
  280. package/studio/web/assets/{swagger-ui-react-lQrBxfwM.js → swagger-ui-react-DwSPXXhl.js} +2 -2
  281. package/studio/web/assets/{swagger-ui-react-lQrBxfwM.js.map → swagger-ui-react-DwSPXXhl.js.map} +1 -1
  282. package/studio/web/assets/{textarea-DhLMZ3PA.js → table-DpOjNQHt.js} +2 -10
  283. package/studio/web/assets/table-DpOjNQHt.js.map +1 -0
  284. package/studio/web/assets/{tsMode-CrHCRjTK.js → tsMode-Bu51A-VG.js} +2 -2
  285. package/studio/web/assets/{tsMode-CrHCRjTK.js.map → tsMode-Bu51A-VG.js.map} +1 -1
  286. package/studio/web/assets/{useEntityRestURL-DoaBMEvU.js → useEntityRestURL-DrV1zMrN.js} +2 -2
  287. package/studio/web/assets/{useEntityRestURL-DoaBMEvU.js.map → useEntityRestURL-DrV1zMrN.js.map} +1 -1
  288. package/studio/web/index.html +6 -7
  289. package/upgrade/upgradePrompt.ts +22 -3
  290. package/utility/environment/environmentManager.ts +152 -0
  291. package/utility/errors/commonErrors.ts +2 -0
  292. package/utility/hdbTerms.ts +2 -0
  293. package/utility/install/installer.ts +37 -0
  294. package/utility/lmdb/environmentUtility.ts +2 -1
  295. package/utility/logging/harper_logger.ts +57 -26
  296. package/studio/web/assets/applications-D03NA7wW.js.map +0 -1
  297. package/studio/web/assets/index-Bh_CNAHr.js +0 -809
  298. package/studio/web/assets/index-Bh_CNAHr.js.map +0 -1
  299. package/studio/web/assets/index-C8Mv9kHV.css +0 -1
  300. package/studio/web/assets/index.lazy-Dx3MpyDC.js +0 -14
  301. package/studio/web/assets/notifications-CwKhipK7.js +0 -2
  302. package/studio/web/assets/pollUnlessForbidden-HHdQZW1N.js.map +0 -1
  303. package/studio/web/assets/queryClient-CbA8wM7J.js +0 -2
  304. package/studio/web/assets/queryClient-CbA8wM7J.js.map +0 -1
  305. package/studio/web/assets/setup-B56Oz1_u.js +0 -3
  306. package/studio/web/assets/status-BAod7p3o.js +0 -62
  307. package/studio/web/assets/status-BAod7p3o.js.map +0 -1
  308. package/studio/web/assets/textarea-DhLMZ3PA.js.map +0 -1
@@ -1 +0,0 @@
1
- @import "https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,700&display=swap";.github-signin-btn{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-appearance:none;box-sizing:border-box;cursor:pointer;letter-spacing:.25px;text-align:center;vertical-align:middle;white-space:nowrap;color:#fff;background-color:#111;border:1px solid #000;border-radius:20px;outline:none;justify-content:center;align-items:center;width:100%;min-width:min-content;max-width:400px;height:40px;padding:0 12px;font-family:Roboto,arial,sans-serif;font-size:14px;text-decoration:none;transition:background-color .218s,border-color .218s,box-shadow .218s;display:flex;position:relative;overflow:hidden}.github-signin-btn:hover{background-color:#212121}.github-signin-btn .github-icon{width:20px;height:20px;margin-right:12px}.gsi-material-button{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-appearance:none;box-sizing:border-box;color:#1f1f1f;cursor:pointer;letter-spacing:.25px;text-align:center;vertical-align:middle;white-space:nowrap;background-color:#fff;background-image:none;border:1px solid #747775;border-radius:20px;outline:none;width:100%;min-width:min-content;max-width:400px;height:40px;padding:0 12px;font-family:Roboto,arial,sans-serif;font-size:14px;transition:background-color .218s,border-color .218s,box-shadow .218s;position:relative;overflow:hidden}.gsi-material-button .gsi-material-button-icon{width:20px;min-width:20px;height:20px;margin-right:12px}.gsi-material-button .gsi-material-button-content-wrapper{flex-flow:row;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.gsi-material-button .gsi-material-button-contents{text-overflow:ellipsis;vertical-align:top;flex-grow:0;font-family:Roboto,arial,sans-serif;font-weight:500;overflow:hidden}.gsi-material-button .gsi-material-button-state{opacity:0;transition:opacity .218s;position:absolute;inset:0}.gsi-material-button:disabled{cursor:default;background-color:#ffffff61;border-color:#1f1f1f1f}.gsi-material-button:disabled .gsi-material-button-contents,.gsi-material-button:disabled .gsi-material-button-icon{opacity:.38}.gsi-material-button:not(:disabled):active .gsi-material-button-state,.gsi-material-button:not(:disabled):focus .gsi-material-button-state{opacity:.12;background-color:#303030}.gsi-material-button:not(:disabled):hover{box-shadow:0 1px 2px #3c40434d,0 1px 3px 1px #3c404326}.gsi-material-button:not(:disabled):hover .gsi-material-button-state{opacity:.08;background-color:#303030}:root{--rct-color-tree-bg:#f6f8fa;--rct-color-tree-focus-outline:#0366d6;--rct-color-focustree-item-selected-bg:#e8eaed;--rct-color-focustree-item-selected-text:inherit;--rct-color-focustree-item-focused-border:#0366d6;--rct-color-focustree-item-draggingover-bg:#ebf0f4;--rct-color-focustree-item-draggingover-color:inherit;--rct-color-nonfocustree-item-selected-bg:#e8eaed;--rct-color-nonfocustree-item-selected-text:inherit;--rct-color-nonfocustree-item-focused-border:#dbdbdb;--rct-color-search-highlight-bg:#a2aed2;--rct-color-drag-between-line-bg:#0366d6;--rct-color-arrow:#373a3f;--rct-item-height:22px;--rct-color-renaming-input-submitbutton-bg:inherit;--rct-color-renaming-input-submitbutton-bg-hover:#0366d6;--rct-color-renaming-input-submitbutton-bg-active:#095fc1;--rct-color-renaming-input-submitbutton-text:inherit;--rct-color-renaming-input-submitbutton-text-hover:#fff;--rct-color-renaming-input-submitbutton-text-active:#fff}.rct-tree-root{background-color:var(--rct-color-tree-bg);width:max-content;min-width:100%;padding:4px 0;font-family:sans-serif}.rct-tree-root-focus{outline:1px solid var(--rct-color-tree-focus-outline)}.rct-tree-item-li{margin:0;padding:0;font-size:.8rem;list-style-type:none}.rct-tree-item-title-container{padding-left:var(--depthOffset,0px);border-top:1px solid #0000;border-bottom:1px solid #0000;align-items:center;display:flex}.rct-tree-item-button{box-sizing:border-box;font-family:inherit;font-size:inherit;width:100%;height:var(--rct-item-height);text-align:left;color:inherit;background-color:#0000;border:none;outline:none;flex-grow:1;align-items:center;display:flex}.rct-tree-item-arrow,.rct-tree-item-arrow svg{width:10px}.rct-tree-item-arrow-path{fill:var(--rct-color-arrow)}.rct-tree-items-container{margin:0;padding:0}.rct-tree-root:not(.rct-tree-root-focus) .rct-tree-item-title-container-selected{background-color:var(--rct-color-nonfocustree-item-selected-bg);color:var(--rct-color-nonfocustree-item-selected-text)}.rct-tree-root.rct-tree-root-focus .rct-tree-item-title-container-selected{background-color:var(--rct-color-focustree-item-selected-bg);color:var(--rct-color-focustree-item-selected-text)}.rct-tree-root.rct-tree-root-focus .rct-tree-item-title-container-focused{border-color:var(--rct-color-focustree-item-focused-border);outline:none}.rct-tree-root:not(.rct-tree-root-focus) .rct-tree-item-title-container-focused{border-color:var(--rct-color-nonfocustree-item-focused-border);outline:none}.rct-tree-item-title-container-dragging-over{background-color:var(--rct-color-focustree-item-draggingover-bg);color:var(--rct-color-focustree-item-draggingover-color)}.rct-tree-item-button-search-match{font-style:italic}.rct-tree-item-search-highlight{background-color:var(--rct-color-search-highlight-bg)}.rct-tree-drag-between-line{background-color:var(--rct-color-drag-between-line-bg);height:4px;position:absolute;top:-2px;right:0}.rct-tree-drag-between-line-top{top:0}.rct-tree-drag-between-line-bottom{top:-4px}.rct-tree-search-input-container{width:120px;position:absolute;top:0;right:0}.rct-tree-search-input{width:120px;position:fixed}.rct-tree-item-renaming-form{flex-grow:1;display:flex}.rct-tree-item-renaming-input{background-color:inherit;color:inherit;border:none;outline:none;flex-grow:1}.rct-tree-item-renaming-submit-button{background-color:var(--rct-color-renaming-input-submitbutton-bg);color:var(--rct-color-renaming-input-submitbutton-text);cursor:pointer;border:none;border-radius:999px}.rct-tree-item-renaming-submit-button:hover{background-color:var(--rct-color-renaming-input-submitbutton-bg-hover);color:var(--rct-color-renaming-input-submitbutton-text-hover)}.rct-tree-item-renaming-submit-button:active{background-color:var(--rct-color-renaming-input-submitbutton-bg-active);color:var(--rct-color-renaming-input-submitbutton-text-active)}:root{--rct-color-tree-bg:transparent;--rct-item-height:28px;--rct-color-tree-focus-outline:transparent;--rct-item-margin:1px;--rct-item-padding:8px;--rct-radius:4px;--rct-bar-offset:6px;--rct-bar-width:4px;--rct-arrow-size:10px;--rct-arrow-container-size:16px;--rct-arrow-padding:6px;--rct-arrow-hit-extend:14px;--rct-cursor:pointer;--rct-search-width:120px;--rct-search-height:24px;--rct-search-padding:4px;--rct-search-text-offset:calc(var(--rct-search-padding) * 2 + 16px);--rct-search-container-width:calc(var(--rct-search-width) + var(--rct-search-text-offset) + var(--rct-search-padding) + 2px);--rct-bar-color:#1d7be5;--rct-focus-outline:#1d7be5;--rct-color-search-highlight-bg:#cfe3ff;--rct-color-focustree-item-selected-text:#111827;--rct-color-focustree-item-selected-bg:#dbe7f7;--rct-color-focustree-item-hover-bg:#eaf0f8;--rct-color-focustree-item-hover-text:#111827;--rct-color-focustree-item-active-bg:#d2e2f5;--rct-color-focustree-item-active-text:#111827;--rct-color-focustree-item-draggingover-bg:#d2e2f5;--rct-color-focustree-item-draggingover-color:#111827;--rct-color-arrow:#373a3f;--rct-search-border:#cbd5e1;--rct-search-border-bottom:#1d7be5;--rct-search-bg:#fff;--rct-search-text:#111827;--rct-scrollbar-thumb:#3c3c3c59;--rct-scrollbar-thumb-hover:#3c3c3c99;--rct-drop-target-height:4rem}.dark{--rct-bar-color:#1d7be5;--rct-focus-outline:#fff;--rct-color-search-highlight-bg:#2f5381;--rct-color-focustree-item-selected-text:#fff;--rct-color-focustree-item-selected-bg:#373737;--rct-color-focustree-item-hover-bg:#373737;--rct-color-focustree-item-hover-text:#fff;--rct-color-focustree-item-active-bg:#313131;--rct-color-focustree-item-active-text:#fff;--rct-color-focustree-item-draggingover-bg:#313131;--rct-color-focustree-item-draggingover-color:#fff;--rct-color-arrow:#fff;--rct-search-border:#4f4f4f;--rct-search-border-bottom:#1d7be5;--rct-search-bg:#373737;--rct-search-text:#fff;--rct-scrollbar-thumb:#ffffff38;--rct-scrollbar-thumb-hover:#fff6}.app-tree-scroll::-webkit-scrollbar{width:10px}.app-tree-scroll::-webkit-scrollbar-track:vertical{margin-bottom:var(--rct-drop-target-height);background:0 0}.app-tree-scroll::-webkit-scrollbar-thumb{background-color:var(--rct-scrollbar-thumb);background-clip:content-box;border:2px solid #0000;border-radius:99px}.app-tree-scroll::-webkit-scrollbar-thumb:hover{background-color:var(--rct-scrollbar-thumb-hover)}.rct-tree-item-button{padding:0 var(--rct-item-padding) 0 calc(var(--rct-item-padding) + var(--rct-arrow-container-size) + var(--rct-arrow-padding));margin-left:calc(-1 * var(--rct-arrow-size));cursor:var(--rct-cursor);transition:color .1s ease-out,background-color .1s ease-out}.rct-tree-item-button:focus-visible{outline:2px solid var(--rct-focus-outline)}.rct-tree-item-button:hover{background-color:var(--rct-color-focustree-item-hover-bg);color:var(--rct-color-focustree-item-hover-text)}.rct-tree-item-button:active{background-color:var(--rct-color-focustree-item-active-bg);color:var(--rct-color-focustree-item-active-text)}.rct-tree-item-title-container-selected .rct-tree-item-button{background-color:var(--rct-color-focustree-item-selected-bg);color:var(--rct-color-focustree-item-selected-text)}.rct-tree-item-title-container-selected .rct-tree-item-button:before{content:" ";top:calc(var(--rct-bar-offset) + var(--rct-item-margin));left:calc(-.5 * var(--rct-bar-width));height:calc(var(--rct-item-height) - 2 * var(--rct-bar-offset));width:var(--rct-bar-width);background-color:var(--rct-bar-color);border-radius:99px;position:absolute}.rct-tree-item-button{margin-top:var(--rct-item-margin);margin-bottom:var(--rct-item-margin);border-radius:var(--rct-radius);position:relative}.rct-tree-item-title-container-dragging-over .rct-tree-item-button{background-color:var(--rct-color-focustree-item-draggingover-bg);color:var(--rct-color-focustree-item-draggingover-color)}.rct-tree-item-title-container{border:none;background-color:unset!important}.rct-tree-item-arrow{z-index:1;margin-right:calc(-1 * var(--rct-arrow-container-size) + var(--rct-arrow-padding));width:var(--rct-arrow-container-size);height:var(--rct-arrow-container-size);border-radius:var(--rct-radius);cursor:var(--rct-cursor);justify-content:center;align-items:center;display:flex;position:relative}.rct-tree-item-arrow-isFolder:before{content:"";height:var(--rct-item-height);top:50%;left:calc(-1 * var(--rct-arrow-hit-extend));position:absolute;right:0;transform:translateY(-50%)}.rct-tree-item-arrow:not(.rct-tree-item-arrow-isFolder){pointer-events:none}.rct-tree-item-arrow.rct-tree-item-arrow-isFolder:hover{background-color:var(--rct-color-focustree-item-hover-bg);color:var(--rct-color-focustree-item-hover-text)}.rct-tree-item-arrow svg{width:var(--rct-arrow-size)}.rct-tree-item-renaming-submit-button{border-radius:var(--rct-radius);visibility:hidden}.rct-tree-drag-between-line{border-radius:99px;height:3px}.rct-tree-search-input-container{width:var(--rct-search-container-width)}.rct-tree-search-input{width:var(--rct-search-width);height:var(--rct-search-height);padding:var(--rct-search-padding);padding-left:var(--rct-search-text-offset);border:1px solid var(--rct-search-border);border-bottom:2px solid var(--rct-search-border-bottom);border-radius:var(--rct-radius);background-color:var(--rct-search-bg);color:var(--rct-search-text);margin:0}.rct-tree-search-input:focus{outline:none}.rct-tree-input-icon{content:url(data:image/svg+xml,%3Csvg%20stroke%3D%22currentColor%22%20fill%3D%22currentColor%22%20stroke-width%3D%220%22%20viewBox%3D%220%200%2016%2016%22%20height%3D%221em%22%20width%3D%221em%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M11.742%2010.344a6.5%206.5%200%201%200-1.397%201.398h-.001c.03.04.062.078.098.115l3.85%203.85a1%201%200%200%200%201.415-1.414l-3.85-3.85a1.007%201.007%200%200%200-.115-.1zM12%206.5a5.5%205.5%200%201%201-11%200%205.5%205.5%200%200%201%2011%200z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E);transform:translateY(var(--rct-search-padding)) translateX(var(--rct-search-padding));z-index:1;position:fixed}.rct-dark .rct-tree-input-icon{content:url(data:image/svg+xml,%3Csvg%20stroke%3D%22%23ffffff%22%20fill%3D%22%23ffffff%22%20stroke-width%3D%220%22%20viewBox%3D%220%200%2016%2016%22%20height%3D%221em%22%20width%3D%221em%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M11.742%2010.344a6.5%206.5%200%201%200-1.397%201.398h-.001c.03.04.062.078.098.115l3.85%203.85a1%201%200%200%200%201.415-1.414l-3.85-3.85a1.007%201.007%200%200%200-.115-.1zM12%206.5a5.5%205.5%200%201%201-11%200%205.5%205.5%200%200%201%2011%200z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E)}.rct-rtl .rct-tree-item-title-container{flex-direction:row-reverse}.rct-rtl .rct-tree-item-button{text-align:right;justify-content:flex-end}.rct-rtl .rct-tree-item-title-container{padding-right:var(--depthOffset,0px);padding-left:0}.rct-rtl .rct-tree-item-title-container-selected .rct-tree-item-button:before{left:unset;right:calc(-.5 * var(--rct-bar-width))}.rct-rtl .rct-tree-item-arrow{margin-left:4px}.rct-rtl .rct-tree-item-arrow:not(.rct-tree-item-arrow-expanded){transform:rotate(180deg)}@layer components;@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-text-shadow-color:initial;--tw-text-shadow-alpha:100%;--tw-content:""}}}@font-face{font-family:RadioGroteskBold;font-style:bold;font-weight:700;font-display:swap;src:url(/assets/PPRadioGrotesk-Bold-DDaUYG8E.woff)format("woff")}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-950:oklch(25.8% .092 26.042);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-950:oklch(27.9% .077 45.635);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-100:oklch(96.2% .044 156.743);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-950:oklch(26.6% .065 152.934);--color-cyan-400:oklch(78.9% .154 211.53);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-500:oklch(68.5% .169 237.323);--color-blue-400:var(--blue-400);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-100:oklch(94.3% .029 294.588);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-950:oklch(29.1% .149 302.717);--color-fuchsia-300:oklch(83.3% .145 321.434);--color-pink-500:oklch(65.6% .241 354.308);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-zinc-900:oklch(21% .006 285.885);--color-white:var(--white);--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-md:calc(var(--radius) - 2px);--radius-lg:var(--radius);--radius-2xl:1rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-xs:4px;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-ubuntu:"Ubuntu", "sans-serif";--color-accent:var(--accent);--color-border:var(--border);--color-grey-700:var(--grey-700);--color-green:var(--green);--color-pink:var(--pink);--color-blue:var(--blue);--color-text-primary:var(--foreground);--color-text-secondary:var(--muted-foreground);--color-surface:var(--card);--color-surface-alt:var(--accent);--color-bg-secondary:var(--secondary);--color-bg-tertiary:var(--muted);--color-error:var(--destructive);--color-success:var(--green);--color-warning:var(--yellow);--color-info:var(--blue)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}button:not([disabled]),[role=button]:not([disabled]),input[type=checkbox],input[type=radio],label{cursor:pointer}h1{--tw-font-weight:var(--font-weight-bold);font-family:RadioGroteskBold,"sans-serif";font-weight:var(--font-weight-bold)}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}body{background-color:var(--background);height:100%;color:var(--foreground);font-family:Ubuntu,"sans-serif";display:flow-root}}@layer utilities{.\@container{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-x-5{inset-inline:calc(var(--spacing) * 5)}.inset-y-0{inset-block:0}.inset-y-5{inset-block:calc(var(--spacing) * 5)}.-top-1{top:calc(var(--spacing) * -1)}.-top-2{top:calc(var(--spacing) * -2)}.-top-2\.5{top:calc(var(--spacing) * -2.5)}.top-0{top:0}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-4{top:calc(var(--spacing) * 4)}.top-6{top:calc(var(--spacing) * 6)}.top-10{top:calc(var(--spacing) * 10)}.top-11{top:calc(var(--spacing) * 11)}.top-20{top:calc(var(--spacing) * 20)}.top-32{top:calc(var(--spacing) * 32)}.top-40{top:calc(var(--spacing) * 40)}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.-right-1{right:calc(var(--spacing) * -1)}.-right-2{right:calc(var(--spacing) * -2)}.right-0{right:0}.right-1{right:var(--spacing)}.right-1\.5{right:calc(var(--spacing) * 1.5)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.-bottom-2{bottom:calc(var(--spacing) * -2)}.bottom-0{bottom:0}.-left-2{left:calc(var(--spacing) * -2)}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-39{z-index:39}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-start-2{grid-column-start:2}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.-m-1{margin:calc(var(--spacing) * -1)}.-m-1\.5{margin:calc(var(--spacing) * -1.5)}.-m-2{margin:calc(var(--spacing) * -2)}.-m-4{margin:calc(var(--spacing) * -4)}.-m-10{margin:calc(var(--spacing) * -10)}.m-0{margin:0}.m-12{margin:calc(var(--spacing) * 12)}.m-auto{margin:auto}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-0{margin-inline:0}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-6{margin-inline:calc(var(--spacing) * 6)}.mx-auto{margin-inline:auto}.-my-1{margin-block:calc(var(--spacing) * -1)}.my-1{margin-block:var(--spacing)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-5{margin-block:calc(var(--spacing) * 5)}.my-6{margin-block:calc(var(--spacing) * 6)}.ms-3{margin-inline-start:calc(var(--spacing) * 3)}.me-1{margin-inline-end:var(--spacing)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.mt-0{margin-top:0}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-9{margin-top:calc(var(--spacing) * 9)}.mt-20{margin-top:calc(var(--spacing) * 20)}.mt-32{margin-top:calc(var(--spacing) * 32)}.mt-36{margin-top:calc(var(--spacing) * 36)}.mt-auto{margin-top:auto}.mr-1{margin-right:var(--spacing)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-4{margin-right:calc(var(--spacing) * 4)}.mr-37\.5{margin-right:calc(var(--spacing) * 37.5)}.mb-0{margin-bottom:0}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-8{margin-left:calc(var(--spacing) * 8)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.aspect-square{aspect-ratio:1}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-full{width:100%;height:100%}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-40{height:calc(var(--spacing) * 40)}.h-64{height:calc(var(--spacing) * 64)}.h-96{height:calc(var(--spacing) * 96)}.h-\[1\.15rem\]{height:1.15rem}.h-\[1\.125rem\]{height:1.125rem}.h-\[3px\]{height:3px}.h-\[90vh\]{height:90vh}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-\(--radix-context-menu-content-available-height\){max-height:var(--radix-context-menu-content-available-height)}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-0{max-height:0}.max-h-36{max-height:calc(var(--spacing) * 36)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(100vh-\(--spacing\(48\)\)\)\]{max-height:calc(100vh - (calc(var(--spacing) * 48)))}.max-h-\[calc\(100vh-80px-40px\)\]{max-height:calc(100vh - 120px)}.max-h-fit{max-height:fit-content}.max-h-screen{max-height:100vh}.min-h-0{min-height:0}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-96{min-height:calc(var(--spacing) * 96)}.min-h-115{min-height:calc(var(--spacing) * 115)}.min-h-\[calc\(100vh-\(--spacing\(32\)\)\)\]{min-height:calc(100vh - (calc(var(--spacing) * 32)))}.min-h-\[calc\(100vh-\(--spacing\(36\)\)\)\]{min-height:calc(100vh - (calc(var(--spacing) * 36)))}.min-h-\[calc\(100vh-theme\(spacing\.32\)\)\]{min-height:calc(100vh - 8rem)}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-\(--radix-dropdown-menu-trigger-width\){width:var(--radix-dropdown-menu-trigger-width)}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:var(--spacing)}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-2xl{width:var(--container-2xl)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-96{width:calc(var(--spacing) * 96)}.w-\[100px\]{width:100px}.w-\[180px\]{width:180px}.w-\[var\(--app-sidebar-width\)\]{width:var(--app-sidebar-width)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-lg{width:var(--container-lg)}.w-max{width:max-content}.w-xs{width:var(--container-xs)}.\!max-w-\[95vw\]{max-width:95vw!important}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-32{max-width:calc(var(--spacing) * 32)}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-60{max-width:calc(var(--spacing) * 60)}.max-w-96{max-width:calc(var(--spacing) * 96)}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-\[calc\(100\%-56px\)\]{max-width:calc(100% - 56px)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-max{max-width:max-content}.max-w-md{max-width:var(--container-md)}.max-w-prose{max-width:65ch}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-4{min-width:calc(var(--spacing) * 4)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-10{min-width:calc(var(--spacing) * 10)}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-48{min-width:calc(var(--spacing) * 48)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-0{flex:0}.flex-1{flex:1}.flex-3{flex:3}.flex-none{flex:none}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow\!{flex-grow:1!important}.basis-full{flex-basis:100%}.table-fixed{table-layout:fixed}.caption-bottom{caption-side:bottom}.origin-\(--radix-context-menu-content-transform-origin\){transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.translate-1\/2{--tw-translate-x:calc(1 / 2 * 100%);--tw-translate-y:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1\/2{--tw-translate-x:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0\.5{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-copy{cursor:copy}.cursor-default{cursor:default}.cursor-ew-resize{cursor:ew-resize}.cursor-help{cursor:help}.cursor-move{cursor:move}.cursor-n-resize{cursor:n-resize}.cursor-nesw-resize{cursor:nesw-resize}.cursor-not-allowed{cursor:not-allowed}.cursor-ns-resize{cursor:ns-resize}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.cursor-s-resize{cursor:s-resize}.cursor-text{cursor:text}.touch-none{touch-action:none}.resize{resize:both}.scroll-my-1{scroll-margin-block:var(--spacing)}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-content-between{place-content:space-between}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block:0}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(var(--spacing) * var(--tw-space-x-reverse));margin-inline-end:calc(var(--spacing) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-5>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 5) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--border)}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-clip{overflow-y:clip}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-b-md{border-bottom-right-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-bl-md{border-bottom-left-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-3{border-style:var(--tw-border-style);border-width:3px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-\(--color-border\){border-color:var(--color-border)}.border-amber-500\/40{border-color:#f99c0066}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/40{border-color:color-mix(in oklab, var(--color-amber-500) 40%, transparent)}}.border-amber-500\/50{border-color:#f99c0080}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/50{border-color:color-mix(in oklab, var(--color-amber-500) 50%, transparent)}}.border-blue\/40{border-color:var(--blue)}@supports (color:color-mix(in lab, red, red)){.border-blue\/40{border-color:color-mix(in oklab, var(--blue) 40%, transparent)}}.border-border,.border-border\/40{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/40{border-color:color-mix(in oklab, var(--border) 40%, transparent)}}.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/50{border-color:color-mix(in oklab, var(--border) 50%, transparent)}}.border-destructive,.border-destructive\/40{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/40{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-600{border-color:var(--color-gray-600)}.border-gray-700{border-color:var(--color-gray-700)}.border-gray-800{border-color:var(--color-gray-800)}.border-green{border-color:var(--green)}.border-green-600{border-color:var(--color-green-600)}.border-grey-700{border-color:var(--grey-700)}.border-input{border-color:var(--input)}.border-primary{border-color:var(--primary)}.border-primary-foreground\/30{border-color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.border-primary-foreground\/30{border-color:color-mix(in oklab, var(--primary-foreground) 30%, transparent)}}.border-primary\/30{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/30{border-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.border-purple-600{border-color:var(--color-purple-600)}.border-red{border-color:var(--red)}.border-red-600{border-color:var(--color-red-600)}.border-secondary,.border-secondary\/50{border-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.border-secondary\/50{border-color:color-mix(in oklab, var(--secondary) 50%, transparent)}}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:#0000}.border-violet-100{border-color:var(--color-violet-100)}.border-violet-200{border-color:var(--color-violet-200)}.border-yellow,.border-yellow\/40{border-color:var(--yellow)}@supports (color:color-mix(in lab, red, red)){.border-yellow\/40{border-color:color-mix(in oklab, var(--yellow) 40%, transparent)}}.border-t-transparent{border-top-color:#0000}.border-r-black{border-right-color:var(--black)}.border-l-destructive{border-left-color:var(--destructive)}.border-l-green-500{border-left-color:var(--color-green-500)}.border-l-transparent{border-left-color:#0000}.border-l-yellow-500{border-left-color:var(--color-yellow-500)}.bg-\(--color-accent\)\/20{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.bg-\(--color-accent\)\/20{background-color:color-mix(in oklab, var(--color-accent) 20%, transparent)}}.bg-\(--color-bg-secondary\){background-color:var(--color-bg-secondary)}.bg-\(--color-bg-tertiary\){background-color:var(--color-bg-tertiary)}.bg-\(--color-surface\){background-color:var(--color-surface)}.bg-\(--color-surface-alt\){background-color:var(--color-surface-alt)}.bg-accent{background-color:var(--accent)}.bg-amber-50\/50{background-color:#fffbeb80}@supports (color:color-mix(in lab, red, red)){.bg-amber-50\/50{background-color:color-mix(in oklab, var(--color-amber-50) 50%, transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.bg-amber-600{background-color:var(--color-amber-600)}.bg-background,.bg-background\/50{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/50{background-color:color-mix(in oklab, var(--background) 50%, transparent)}}.bg-black\/50{background-color:var(--black)}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--black) 50%, transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-current{background-color:currentColor}.bg-destructive,.bg-destructive\/5{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/5{background-color:color-mix(in oklab, var(--destructive) 5%, transparent)}}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-foreground\/20{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/20{background-color:color-mix(in oklab, var(--foreground) 20%, transparent)}}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900\/20{background-color:#10182833}@supports (color:color-mix(in lab, red, red)){.bg-gray-900\/20{background-color:color-mix(in oklab, var(--color-gray-900) 20%, transparent)}}.bg-green{background-color:var(--green)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-600{background-color:var(--color-green-600)}.bg-green\/10{background-color:var(--green)}@supports (color:color-mix(in lab, red, red)){.bg-green\/10{background-color:color-mix(in oklab, var(--green) 10%, transparent)}}.bg-green\/15{background-color:var(--green)}@supports (color:color-mix(in lab, red, red)){.bg-green\/15{background-color:color-mix(in oklab, var(--green) 15%, transparent)}}.bg-green\/40{background-color:var(--green)}@supports (color:color-mix(in lab, red, red)){.bg-green\/40{background-color:color-mix(in oklab, var(--green) 40%, transparent)}}.bg-green\/80{background-color:var(--green)}@supports (color:color-mix(in lab, red, red)){.bg-green\/80{background-color:color-mix(in oklab, var(--green) 80%, transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/20{background-color:color-mix(in oklab, var(--muted) 20%, transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-primary-foreground\/10{background-color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-primary-foreground\/10{background-color:color-mix(in oklab, var(--primary-foreground) 10%, transparent)}}.bg-primary\/5{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab, var(--primary) 5%, transparent)}}.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.bg-primary\/40{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/40{background-color:color-mix(in oklab, var(--primary) 40%, transparent)}}.bg-purple-600\/10{background-color:#9810fa1a}@supports (color:color-mix(in lab, red, red)){.bg-purple-600\/10{background-color:color-mix(in oklab, var(--color-purple-600) 10%, transparent)}}.bg-purple-950{background-color:var(--color-purple-950)}.bg-purple\/40{background-color:var(--purple)}@supports (color:color-mix(in lab, red, red)){.bg-purple\/40{background-color:color-mix(in oklab, var(--purple) 40%, transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/20{background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.bg-red\/80{background-color:var(--red)}@supports (color:color-mix(in lab, red, red)){.bg-red\/80{background-color:color-mix(in oklab, var(--red) 80%, transparent)}}.bg-secondary,.bg-secondary\/20{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\/20{background-color:color-mix(in oklab, var(--secondary) 20%, transparent)}}.bg-secondary\/40{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\/40{background-color:color-mix(in oklab, var(--secondary) 40%, transparent)}}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-sky-500{background-color:var(--color-sky-500)}.bg-sky-500\/15{background-color:#00a5ef26}@supports (color:color-mix(in lab, red, red)){.bg-sky-500\/15{background-color:color-mix(in oklab, var(--color-sky-500) 15%, transparent)}}.bg-transparent{background-color:#0000}.bg-violet-50{background-color:var(--color-violet-50)}.bg-violet-400\/60{background-color:#a685ff99}@supports (color:color-mix(in lab, red, red)){.bg-violet-400\/60{background-color:color-mix(in oklab, var(--color-violet-400) 60%, transparent)}}.bg-white,.bg-white\/80{background-color:var(--white)}@supports (color:color-mix(in lab, red, red)){.bg-white\/80{background-color:color-mix(in oklab, var(--white) 80%, transparent)}}.bg-yellow{background-color:var(--yellow)}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow\/10{background-color:var(--yellow)}@supports (color:color-mix(in lab, red, red)){.bg-yellow\/10{background-color:color-mix(in oklab, var(--yellow) 10%, transparent)}}.bg-yellow\/40{background-color:var(--yellow)}@supports (color:color-mix(in lab, red, red)){.bg-yellow\/40{background-color:color-mix(in oklab, var(--yellow) 40%, transparent)}}.bg-yellow\/80{background-color:var(--yellow)}@supports (color:color-mix(in lab, red, red)){.bg-yellow\/80{background-color:color-mix(in oklab, var(--yellow) 80%, transparent)}}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-\(--purple-dark-to-light-gradient\){--tw-gradient-position:var(--purple-dark-to-light-gradient);background-image:linear-gradient(var(--tw-gradient-stops,var(--purple-dark-to-light-gradient)))}.from-blue-100{--tw-gradient-from:var(--blue-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-violet-100{--tw-gradient-from:var(--color-violet-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-0\%{--tw-gradient-from-position:0%}.to-blue{--tw-gradient-to:var(--blue);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-white{--tw-gradient-to:var(--white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-100\%{--tw-gradient-to-position:100%}.fill-current{fill:currentColor}.fill-popover{fill:var(--popover)}.fill-primary{fill:var(--primary)}.object-contain{object-fit:contain}.object-scale-down{object-fit:scale-down}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-4\.5{padding:calc(var(--spacing) * 4.5)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.p-12{padding:calc(var(--spacing) * 12)}.p-20{padding:calc(var(--spacing) * 20)}.p-px{padding:1px}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-16{padding-inline:calc(var(--spacing) * 16)}.py-0{padding-block:0}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-0{padding-top:0}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pt-12{padding-top:calc(var(--spacing) * 12)}.pt-15{padding-top:calc(var(--spacing) * 15)}.pt-20{padding-top:calc(var(--spacing) * 20)}.pt-30{padding-top:calc(var(--spacing) * 30)}.pt-\[calc\(--spacing\(32\)\)\]{padding-top:calc(calc(var(--spacing) * 32))}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-0{padding-bottom:0}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-18{padding-bottom:calc(var(--spacing) * 18)}.pl-1{padding-left:var(--spacing)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.-indent-8{text-indent:calc(var(--spacing) * -8)}.align-\[-1px\]{vertical-align:-1px}.align-baseline{vertical-align:baseline}.align-middle{vertical-align:middle}.align-text-bottom{vertical-align:text-bottom}.align-text-top{vertical-align:text-top}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-sm\/6{font-size:var(--text-sm);line-height:calc(var(--spacing) * 6)}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.text-nowrap{text-wrap:nowrap}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.wrap-anywhere{overflow-wrap:anywhere}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\(--color-text-primary\){color:var(--color-text-primary)}.text-\(--color-text-secondary\),.text-\(--color-text-secondary\)\/60{color:var(--color-text-secondary)}@supports (color:color-mix(in lab, red, red)){.text-\(--color-text-secondary\)\/60{color:color-mix(in oklab, var(--color-text-secondary) 60%, transparent)}}.text-accent-foreground{color:var(--accent-foreground)}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-black,.text-black\/60{color:var(--black)}@supports (color:color-mix(in lab, red, red)){.text-black\/60{color:color-mix(in oklab, var(--black) 60%, transparent)}}.text-blue{color:var(--blue)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-border{color:var(--border)}.text-card-foreground{color:var(--card-foreground)}.text-cyan-400{color:var(--color-cyan-400)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-fuchsia-300{color:var(--color-fuchsia-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-green{color:var(--green)}.text-green-500{color:var(--color-green-500)}.text-grey{color:var(--grey)}.text-grey-400{color:var(--grey-400)}.text-muted-foreground,.text-muted-foreground\/40{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/40{color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.text-muted-foreground\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/60{color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.text-orange-300{color:var(--color-orange-300)}.text-orange-400{color:var(--color-orange-400)}.text-orange-500{color:var(--color-orange-500)}.text-orange-600{color:var(--color-orange-600)}.text-pink-500{color:var(--color-pink-500)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple{color:var(--purple)}.text-purple-600{color:var(--color-purple-600)}.text-red{color:var(--red)}.text-red-300{color:var(--color-red-300)}.text-red-500{color:var(--color-red-500)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/70{color:color-mix(in oklab, var(--sidebar-foreground) 70%, transparent)}}.text-sky-400{color:var(--color-sky-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-success{color:var(--green)}.text-white{color:var(--white)}.text-yellow{color:var(--yellow)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-800{color:var(--color-yellow-800)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-55{opacity:.55}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_-2px_12px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 -2px 12px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-deep{--tw-shadow:0 2px 12px 0 var(--tw-shadow-color,#0000000f), 0 1px 3px 0 var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-black\/10{--tw-shadow-color:var(--black)}@supports (color:color-mix(in lab, red, red)){.shadow-black\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--black) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-black\/5{--tw-ring-color:var(--black)}@supports (color:color-mix(in lab, red, red)){.ring-black\/5{--tw-ring-color:color-mix(in oklab, var(--black) 5%, transparent)}}.ring-ring\/10{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.ring-ring\/10{--tw-ring-color:color-mix(in oklab, var(--ring) 10%, transparent)}}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-ring\/50{outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.outline-ring\/50{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.blur{--tw-blur:blur(8px);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,)}.invert{--tw-invert:invert(100%);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,)}.filter{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,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-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,);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,)}.backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-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,);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,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\]{transition-property:left;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[max-height\]{transition-property:max-height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,box-shadow\]{transition-property:transform,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-1000{--tw-duration:1s;transition-duration:1s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.will-change-transform{will-change:transform}.animate-in{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[animation-duration\:3s\]{animation-duration:3s}.\[panel\:x\]{panel:x}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-1000{animation-duration:1s}.ease-in{animation-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{animation-timing-function:linear}.fade-in-0{--tw-enter-opacity:0}.running{animation-play-state:running}.text-shadow-2xs{text-shadow:0px 1px 0px var(--tw-text-shadow-color,#00000026)}.zoom-in-95{--tw-enter-scale:.95}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media (hover:hover){.group-hover\:translate-x-1:is(:where(.group):hover *){--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:bg-violet-400\/60:is(:where(.group):hover *){background-color:#a685ff99}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-violet-400\/60:is(:where(.group):hover *){background-color:color-mix(in oklab, var(--color-violet-400) 60%, transparent)}}.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *){opacity:1}}.group-focus-visible\:bg-violet-500\/80:is(:where(.group):focus-visible *){background-color:#8d54ffcc}@supports (color:color-mix(in lab, red, red)){.group-focus-visible\:bg-violet-500\/80:is(:where(.group):focus-visible *){background-color:color-mix(in oklab, var(--color-violet-500) 80%, transparent)}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing) * 8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing) * -8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing) * 8)!important;height:calc(var(--spacing) * 8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:0!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:0}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing) * -4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:0}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[viewport\=false\]\/navigation-menu\:top-full:is(:where(.group\/navigation-menu)[data-viewport=false] *){top:100%}.group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5:is(:where(.group\/navigation-menu)[data-viewport=false] *){margin-top:calc(var(--spacing) * 1.5)}.group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden:is(:where(.group\/navigation-menu)[data-viewport=false] *){overflow:hidden}.group-data-\[viewport\=false\]\/navigation-menu\:rounded-md:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-radius:calc(var(--radius) - 2px)}.group-data-\[viewport\=false\]\/navigation-menu\:border:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[viewport\=false\]\/navigation-menu\:bg-popover:is(:where(.group\/navigation-menu)[data-viewport=false] *){background-color:var(--popover)}.group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground:is(:where(.group\/navigation-menu)[data-viewport=false] *){color:var(--popover-foreground)}.group-data-\[viewport\=false\]\/navigation-menu\:shadow:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[viewport\=false\]\/navigation-menu\:duration-200:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-duration:.2s;transition-duration:.2s;animation-duration:.2s}.group-\[\.toast\]\:bg-muted:is(:where(.group).toast *){background-color:var(--muted)}.group-\[\.toast\]\:bg-primary:is(:where(.group).toast *){background-color:var(--primary)}.group-\[\.toast\]\:text-muted-foreground:is(:where(.group).toast *){color:var(--muted-foreground)}.group-\[\.toast\]\:text-primary-foreground:is(:where(.group).toast *){color:var(--primary-foreground)}.group-\[\.toaster\]\:border-border:is(:where(.group).toaster *){border-color:var(--border)}.group-\[\.toaster\]\:bg-background:is(:where(.group).toaster *){background-color:var(--background)}.group-\[\.toaster\]\:text-foreground:is(:where(.group).toaster *){color:var(--foreground)}.group-\[\.toaster\]\:shadow-lg:is(:where(.group).toaster *){--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing) * 1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing) * 2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:var(--spacing)}.peer-data-\[state\=checked\]\:border-green:is(:where(.peer)[data-state=checked]~*){border-color:var(--green)}.peer-data-\[state\=checked\]\:bg-primary:is(:where(.peer)[data-state=checked]~*),.peer-data-\[state\=checked\]\:bg-primary\/5:is(:where(.peer)[data-state=checked]~*){background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.peer-data-\[state\=checked\]\:bg-primary\/5:is(:where(.peer)[data-state=checked]~*){background-color:color-mix(in oklab, var(--primary) 5%, transparent)}}.peer-data-\[state\=checked\]\:text-primary-foreground:is(:where(.peer)[data-state=checked]~*){color:var(--primary-foreground)}.selection\:bg-purple ::selection{background-color:var(--purple)}.selection\:bg-purple::selection{background-color:var(--purple)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing) * 7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing) * -2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:0}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:translate-y-0:hover{--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:border-b-2:hover{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.hover\:border-primary:hover{border-color:var(--primary)}.hover\:bg-accent:hover,.hover\:bg-accent\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/50:hover{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.hover\:bg-accent\/60:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/60:hover{background-color:color-mix(in oklab, var(--accent) 60%, transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.hover\:bg-foreground\/10:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-foreground\/10:hover{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-green\/90:hover{background-color:var(--green)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-green\/90:hover{background-color:color-mix(in oklab, var(--green) 90%, transparent)}}.hover\:bg-muted:hover,.hover\:bg-muted\/10:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/10:hover{background-color:color-mix(in oklab, var(--muted) 10%, transparent)}}.hover\:bg-muted\/20:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/20:hover{background-color:color-mix(in oklab, var(--muted) 20%, transparent)}}.hover\:bg-muted\/80:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/80:hover{background-color:color-mix(in oklab, var(--muted) 80%, transparent)}}.hover\:bg-primary:hover{background-color:var(--primary)}.hover\:bg-primary-foreground\/20:hover{background-color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary-foreground\/20:hover{background-color:color-mix(in oklab, var(--primary-foreground) 20%, transparent)}}.hover\:bg-primary\/10:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/10:hover{background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-violet-400\/60:hover{background-color:#a685ff99}@supports (color:color-mix(in lab, red, red)){.hover\:bg-violet-400\/60:hover{background-color:color-mix(in oklab, var(--color-violet-400) 60%, transparent)}}.hover\:bg-yellow\/90:hover{background-color:var(--yellow)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-yellow\/90:hover{background-color:color-mix(in oklab, var(--yellow) 90%, transparent)}}.hover\:bg-gradient-to-r:hover{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.hover\:bg-linear-\(--purple-gradient\):hover{--tw-gradient-position:var(--purple-gradient);background-image:linear-gradient(var(--tw-gradient-stops,var(--purple-gradient)))}.hover\:from-blue:hover{--tw-gradient-from:var(--blue);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:text-\(--color-text-primary\):hover{color:var(--color-text-primary)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-blue-300:hover{color:var(--blue-300)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-grey:hover{color:var(--grey)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:text-red:hover{color:var(--red)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:ring-primary\/60:hover{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:ring-primary\/60:hover{--tw-ring-color:color-mix(in oklab, var(--primary) 60%, transparent)}}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:bg-green\/70:focus{background-color:var(--green)}@supports (color:color-mix(in lab, red, red)){.focus\:bg-green\/70:focus{background-color:color-mix(in oklab, var(--green) 70%, transparent)}}.focus\:bg-primary\/70:focus{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.focus\:bg-primary\/70:focus{background-color:color-mix(in oklab, var(--primary) 70%, transparent)}}.focus\:bg-red\/70:focus{background-color:var(--red)}@supports (color:color-mix(in lab, red, red)){.focus\:bg-red\/70:focus{background-color:color-mix(in oklab, var(--red) 70%, transparent)}}.focus\:bg-yellow\/70:focus{background-color:var(--yellow)}@supports (color:color-mix(in lab, red, red)){.focus\:bg-yellow\/70:focus{background-color:color-mix(in oklab, var(--yellow) 70%, transparent)}}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:text-grey:focus{color:var(--grey)}.focus\:text-white:focus{color:var(--white)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-gray-600:focus{--tw-ring-color:var(--color-gray-600)}.focus\:ring-purple-500:focus{--tw-ring-color:var(--purple-500)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-primary:focus-visible{border-color:var(--primary)}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-4:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-amber-500:focus-visible{--tw-ring-color:var(--color-amber-500)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-primary:focus-visible{--tw-ring-color:var(--primary)}.focus-visible\:ring-purple:focus-visible{--tw-ring-color:var(--purple)}.focus-visible\:ring-purple-200:focus-visible{--tw-ring-color:var(--purple-200)}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-default:disabled{cursor:default}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-\[\[data-state\=checked\]\]\:border-primary:has([data-state=checked]){border-color:var(--primary)}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){column-gap:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true],.aria-invalid\:border-destructive\/60[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:border-destructive\/60[aria-invalid=true]{border-color:color-mix(in oklab, var(--destructive) 60%, transparent)}}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-invalid\:outline-destructive\/60[aria-invalid=true]{outline-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:outline-destructive\/60[aria-invalid=true]{outline-color:color-mix(in oklab, var(--destructive) 60%, transparent)}}.aria-invalid\:focus-visible\:ring-0[aria-invalid=true]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.aria-invalid\:focus-visible\:ring-\[1px\][aria-invalid=true]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.aria-invalid\:focus-visible\:outline-none[aria-invalid=true]:focus-visible{--tw-outline-style:none;outline-style:none}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:var(--accent-foreground)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[error\=true\]\:text-destructive[data-error=true]{color:var(--destructive)}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing) * 8)}.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x:13rem}.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x:-13rem}.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x:13rem}.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x:-13rem}.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity:0}.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-]{--tw-exit-opacity:0}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-.5rem}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:.5rem}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-.5rem}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:.5rem}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab, var(--destructive) 90%, transparent)}}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:ring-0 *)[data-slot=navigation-menu-link]:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:outline-none *)[data-slot=navigation-menu-link]:focus{--tw-outline-style:none;outline-style:none}:is(.\*\:data-\[slot\=select-value\]\:block>*)[data-slot=select-value]{display:block}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing) * 2)}:is(.\*\:data-\[slot\=select-value\]\:truncate>*)[data-slot=select-value]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.data-\[state\=active\]\:bg-card[data-state=active]{background-color:var(--card)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x:calc(100% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:bg-green[data-state=checked]{background-color:var(--green)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:animate-out[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-opacity:0}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=hidden\]\:animate-out[data-state=hidden]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[state\=hidden\]\:fade-out[data-state=hidden]{--tw-exit-opacity:0}.data-\[state\=inactive\]\:border-b-4[data-state=inactive]{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.data-\[state\=inactive\]\:border-b-grey-700[data-state=inactive]{border-bottom-color:var(--grey-700)}.data-\[state\=open\]\:bg-accent[data-state=open],.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}.data-\[state\=open\]\:zoom-in-90[data-state=open]{--tw-enter-scale:.9}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-opacity:0}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-scale:.95}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[state\=visible\]\:animate-in[data-state=visible]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[state\=visible\]\:fade-in[data-state=visible]{--tw-enter-opacity:0}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}@media (prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}}@media (width>=40rem){.sm\:left-\[var\(--app-sidebar-width\)\]{left:var(--app-sidebar-width)}.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:calc(var(--spacing) * 2)}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:inline-block{display:inline-block}.sm\:\!max-w-\[95vw\]{max-width:95vw!important}.sm\:max-w-9\/10{max-width:90%}.sm\:max-w-\[425px\]{max-width:425px}.sm\:max-w-\[550px\]{max-width:550px}.sm\:max-w-\[560px\]{max-width:560px}.sm\:max-w-\[750px\]{max-width:750px}.sm\:max-w-\[800px\]{max-width:800px}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:shrink-0{flex-shrink:0}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:px-0{padding-inline:0}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:text-left{text-align:left}}@media (width>=48rem){.md\:pointer-events-none{pointer-events:none}.md\:absolute{position:absolute}.md\:sticky{position:sticky}.md\:top-32{top:calc(var(--spacing) * 32)}.md\:top-34{top:calc(var(--spacing) * 34)}.md\:right-12{right:calc(var(--spacing) * 12)}.md\:left-\[var\(--app-sidebar-width\)\]{left:var(--app-sidebar-width)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-8{grid-column:span 8/span 8}.md\:col-span-9{grid-column:span 9/span 9}.md\:col-span-12{grid-column:span 12/span 12}.md\:mx-4{margin-inline:calc(var(--spacing) * 4)}.md\:mt-0{margin-top:0}.md\:mb-0{margin-bottom:0}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:inline-block{display:inline-block}.md\:inline-flex{display:inline-flex}.md\:h-\[calc\(100vh-\(--spacing\(32\)\)\)\]{height:calc(100vh - (calc(var(--spacing) * 32)))}.md\:max-h-\[calc\(100vh-\(--spacing\(32\)\)\)\]{max-height:calc(100vh - (calc(var(--spacing) * 32)))}.md\:max-h-\[calc\(100vh-\(--spacing\(34\)\)\)\]{max-height:calc(100vh - (calc(var(--spacing) * 34)))}.md\:max-h-\[calc\(100vh-\(--spacing\(40\)\)\)\]{max-height:calc(100vh - (calc(var(--spacing) * 40)))}.md\:w-\[var\(--db-sidebar-width\)\]{width:var(--db-sidebar-width)}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:min-w-0{min-width:0}.md\:flex-1{flex:1}.md\:shrink-0{flex-shrink:0}.md\:translate-x-0{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-\[1fr_1fr_auto\]{grid-template-columns:1fr 1fr auto}.md\:grid-cols-\[80px_1fr\]{grid-template-columns:80px 1fr}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:items-start{align-items:flex-start}.md\:justify-between{justify-content:space-between}.md\:gap-4{gap:calc(var(--spacing) * 4)}:where(.md\:space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block:0}:where(.md\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.md\:space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)))}.md\:self-start{align-self:flex-start}.md\:overflow-y-auto{overflow-y:auto}.md\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.md\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.md\:p-8{padding:calc(var(--spacing) * 8)}.md\:px-12{padding-inline:calc(var(--spacing) * 12)}.md\:pt-4{padding-top:calc(var(--spacing) * 4)}.md\:pt-6\.5{padding-top:calc(var(--spacing) * 6.5)}.md\:pr-4{padding-right:calc(var(--spacing) * 4)}.md\:pr-12{padding-right:calc(var(--spacing) * 12)}.md\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing) * 2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:0}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing) * 2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media (width>=64rem){.lg\:visible{visibility:visible}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-9{grid-column:span 9/span 9}.lg\:col-span-10{grid-column:span 10/span 10}.lg\:hidden{display:none}.lg\:inline-block{display:inline-block}.lg\:max-w-2xl{max-width:var(--container-2xl)}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (width>=80rem){.xl\:col-span-3{grid-column:span 3/span 3}.xl\:block{display:block}.xl\:flex{display:flex}.xl\:hidden{display:none}.xl\:inline-block{display:inline-block}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}:where(.xl\:space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}}@media (width>=96rem){.\32 xl\:col-span-2{grid-column:span 2/span 2}.\32 xl\:inline-block{display:inline-block}}@container (width>=400px){.\@min-\[400px\]\:inline{display:inline}}@container (width>=480px){.\@min-\[480px\]\:inline{display:inline}}@container (width>=620px){.\@min-\[620px\]\:flex{display:flex}}@container (width>=840px){.\@min-\[840px\]\:block{display:block}.\@min-\[840px\]\:flex{display:flex}}@container (width>=960px){.\@min-\[960px\]\:flex{display:flex}}.dark\:hidden:where(.dark,.dark *){display:none}.dark\:border-none:where(.dark,.dark *){--tw-border-style:none;border-style:none}.dark\:border-black:where(.dark,.dark *){border-color:var(--black)}.dark\:border-blue-300\/40:where(.dark,.dark *){border-color:var(--blue-300)}@supports (color:color-mix(in lab, red, red)){.dark\:border-blue-300\/40:where(.dark,.dark *){border-color:color-mix(in oklab, var(--blue-300) 40%, transparent)}}.dark\:border-gray-600:where(.dark,.dark *){border-color:var(--color-gray-600)}.dark\:border-green-600:where(.dark,.dark *){border-color:var(--color-green-600)}.dark\:border-grey-500:where(.dark,.dark *){border-color:var(--grey-500)}.dark\:border-grey-600:where(.dark,.dark *){border-color:var(--grey-600)}.dark\:border-grey-700:where(.dark,.dark *){border-color:var(--grey-700)}.dark\:border-purple-950:where(.dark,.dark *){border-color:var(--color-purple-950)}.dark\:border-red-600:where(.dark,.dark *){border-color:var(--color-red-600)}.dark\:border-violet-400:where(.dark,.dark *){border-color:var(--color-violet-400)}.dark\:border-violet-400\/30:where(.dark,.dark *){border-color:#a685ff4d}@supports (color:color-mix(in lab, red, red)){.dark\:border-violet-400\/30:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-violet-400) 30%, transparent)}}.dark\:bg-amber-950\/20:where(.dark,.dark *){background-color:#46190133}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-950\/20:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-amber-950) 20%, transparent)}}.dark\:bg-black:where(.dark,.dark *){background-color:var(--black)}.dark\:bg-black-dark:where(.dark,.dark *),.dark\:bg-black-dark\/90:where(.dark,.dark *){background-color:var(--black-dark)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-black-dark\/90:where(.dark,.dark *){background-color:color-mix(in oklab, var(--black-dark) 90%, transparent)}}.dark\:bg-black\/50:where(.dark,.dark *){background-color:var(--black)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-black\/50:where(.dark,.dark *){background-color:color-mix(in oklab, var(--black) 50%, transparent)}}.dark\:bg-gray-700:where(.dark,.dark *){background-color:var(--color-gray-700)}.dark\:bg-gray-800:where(.dark,.dark *){background-color:var(--color-gray-800)}.dark\:bg-gray-950:where(.dark,.dark *){background-color:var(--color-gray-950)}.dark\:bg-green-950:where(.dark,.dark *){background-color:var(--color-green-950)}.dark\:bg-grey-600:where(.dark,.dark *){background-color:var(--grey-600)}.dark\:bg-grey-700:where(.dark,.dark *){background-color:var(--grey-700)}.dark\:bg-input\/30:where(.dark,.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:bg-purple-600\/30:where(.dark,.dark *){background-color:#9810fa4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-purple-600\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-purple-600) 30%, transparent)}}.dark\:bg-red-950:where(.dark,.dark *){background-color:var(--color-red-950)}.dark\:bg-transparent:where(.dark,.dark *){background-color:#0000}.dark\:bg-violet-400\/5:where(.dark,.dark *){background-color:#a685ff0d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-violet-400\/5:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-violet-400) 5%, transparent)}}.dark\:bg-violet-400\/15:where(.dark,.dark *){background-color:#a685ff26}@supports (color:color-mix(in lab, red, red)){.dark\:bg-violet-400\/15:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-violet-400) 15%, transparent)}}.dark\:bg-violet-500\/60:where(.dark,.dark *){background-color:#8d54ff99}@supports (color:color-mix(in lab, red, red)){.dark\:bg-violet-500\/60:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-violet-500) 60%, transparent)}}.dark\:bg-white\/10:where(.dark,.dark *){background-color:var(--white)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/10:where(.dark,.dark *){background-color:color-mix(in oklab, var(--white) 10%, transparent)}}.dark\:bg-linear-\(--black-dark-gradient\):where(.dark,.dark *){--tw-gradient-position:var(--black-dark-gradient);background-image:linear-gradient(var(--tw-gradient-stops,var(--black-dark-gradient)))}.dark\:from-purple-950:where(.dark,.dark *){--tw-gradient-from:var(--color-purple-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-zinc-900:where(.dark,.dark *){--tw-gradient-to:var(--color-zinc-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:text-amber-400:where(.dark,.dark *){color:var(--color-amber-400)}.dark\:text-amber-500:where(.dark,.dark *){color:var(--color-amber-500)}.dark\:text-blue-300:where(.dark,.dark *){color:var(--blue-300)}.dark\:text-gray-400:where(.dark,.dark *){color:var(--color-gray-400)}.dark\:text-grey-400:where(.dark,.dark *){color:var(--grey-400)}.dark\:text-inherit:where(.dark,.dark *){color:inherit}.dark\:text-violet-300:where(.dark,.dark *){color:var(--color-violet-300)}.dark\:text-white:where(.dark,.dark *){color:var(--white)}.dark\:text-yellow-300:where(.dark,.dark *){color:var(--color-yellow-300)}.dark\:opacity-70:where(.dark,.dark *){opacity:.7}.dark\:shadow-black:where(.dark,.dark *){--tw-shadow-color:var(--black)}@supports (color:color-mix(in lab, red, red)){.dark\:shadow-black:where(.dark,.dark *){--tw-shadow-color:color-mix(in oklab, var(--black) var(--tw-shadow-alpha), transparent)}}.dark\:ring-ring\/20:where(.dark,.dark *){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.dark\:ring-ring\/20:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--ring) 20%, transparent)}}.dark\:ring-white\/5:where(.dark,.dark *){--tw-ring-color:var(--white)}@supports (color:color-mix(in lab, red, red)){.dark\:ring-white\/5:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--white) 5%, transparent)}}.dark\:outline-ring\/40:where(.dark,.dark *){outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.dark\:outline-ring\/40:where(.dark,.dark *){outline-color:color-mix(in oklab, var(--ring) 40%, transparent)}}.dark\:invert-0:where(.dark,.dark *){--tw-invert:invert(0%);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,)}.dark\:backdrop-blur-none:where(.dark,.dark *){--tw-backdrop-blur: ;-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,);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,)}@media (hover:hover){.dark\:group-hover\:bg-violet-500\/60:where(.dark,.dark *):is(:where(.group):hover *){background-color:#8d54ff99}@supports (color:color-mix(in lab, red, red)){.dark\:group-hover\:bg-violet-500\/60:where(.dark,.dark *):is(:where(.group):hover *){background-color:color-mix(in oklab, var(--color-violet-500) 60%, transparent)}}.dark\:hover\:border-violet-400:where(.dark,.dark *):hover{border-color:var(--color-violet-400)}.dark\:hover\:bg-black-dark:where(.dark,.dark *):hover{background-color:var(--black-dark)}.dark\:hover\:bg-gray-700:where(.dark,.dark *):hover{background-color:var(--color-gray-700)}.dark\:hover\:bg-grey-700:where(.dark,.dark *):hover,.dark\:hover\:bg-grey-700\/40:where(.dark,.dark *):hover{background-color:var(--grey-700)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-grey-700\/40:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--grey-700) 40%, transparent)}}.dark\:hover\:bg-grey-700\/80:where(.dark,.dark *):hover{background-color:var(--grey-700)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-grey-700\/80:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--grey-700) 80%, transparent)}}.dark\:hover\:bg-violet-400\/10:where(.dark,.dark *):hover{background-color:#a685ff1a}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-violet-400\/10:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-violet-400) 10%, transparent)}}.dark\:hover\:bg-violet-500\/60:where(.dark,.dark *):hover{background-color:#8d54ff99}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-violet-500\/60:where(.dark,.dark *):hover{background-color:color-mix(in oklab, var(--color-violet-500) 60%, transparent)}}.dark\:hover\:text-blue-300:where(.dark,.dark *):hover{color:var(--blue-300)}.dark\:hover\:text-white:where(.dark,.dark *):hover{color:var(--white)}.dark\:hover\:ring-violet-400\/70:where(.dark,.dark *):hover{--tw-ring-color:#a685ffb3}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:ring-violet-400\/70:where(.dark,.dark *):hover{--tw-ring-color:color-mix(in oklab, var(--color-violet-400) 70%, transparent)}}}.dark\:focus\:bg-white\/15:where(.dark,.dark *):focus{background-color:var(--white)}@supports (color:color-mix(in lab, red, red)){.dark\:focus\:bg-white\/15:where(.dark,.dark *):focus{background-color:color-mix(in oklab, var(--white) 15%, transparent)}}.dark\:focus\:text-white:where(.dark,.dark *):focus{color:var(--white)}.dark\:focus-visible\:ring-destructive\/40:where(.dark,.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:where(.dark,.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:border-destructive:where(.dark,.dark *)[aria-invalid=true]{border-color:var(--destructive)}.dark\:aria-invalid\:ring-destructive\/40:where(.dark,.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:where(.dark,.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/50:where(.dark,.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/50:where(.dark,.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 50%, transparent)}}.dark\:aria-invalid\:outline-destructive:where(.dark,.dark *)[aria-invalid=true]{outline-color:var(--destructive)}.dark\:aria-invalid\:focus-visible\:ring-1:where(.dark,.dark *)[aria-invalid=true]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:data-\[state\=active\]\:bg-gray-600:where(.dark,.dark *)[data-state=active]{background-color:var(--color-gray-600)}.dark\:data-\[state\=checked\]\:bg-white:where(.dark,.dark *)[data-state=checked]{background-color:var(--white)}.dark\:data-\[state\=unchecked\]\:bg-grey-500:where(.dark,.dark *)[data-state=unchecked]{background-color:var(--grey-500)}.dark\:data-\[state\=unchecked\]\:bg-white:where(.dark,.dark *)[data-state=unchecked]{background-color:var(--white)}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:where(.dark,.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:where(.dark,.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}@media (width>=48rem){.md\:dark\:inline-block:where(.dark,.dark *){display:inline-block}}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>svg\]\:text-amber-600>svg{color:var(--color-amber-600)}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.data-\[state\=open\]\:\[\&\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}.dark\:\[\&\>svg\]\:text-amber-400:where(.dark,.dark *)>svg{color:var(--color-amber-400)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}@media (width>=48rem){@media (hover:hover){.md\:\[\@media\(hover\:hover\)\]\:block{display:block}.md\:\[\@media\(hover\:hover\)\]\:flex{display:flex}.md\:\[\@media\(hover\:hover\)\]\:hidden{display:none}}}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing) * -2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing) * -2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@media (hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-blue\/10:hover{background-color:var(--blue)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-blue\/10:hover{background-color:color-mix(in oklab, var(--blue) 10%, transparent)}}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}a.\[a\&\]\:hover\:bg-green\/90:hover{background-color:var(--green)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-green\/90:hover{background-color:color-mix(in oklab, var(--green) 90%, transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab, var(--secondary) 90%, transparent)}}a.\[a\&\]\:hover\:bg-yellow\/90:hover{background-color:var(--yellow)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-yellow\/90:hover{background-color:color-mix(in oklab, var(--yellow) 90%, transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}a.\[a\&\]\:hover\:underline:hover{text-decoration-line:underline}}.animate-flower-dance{transform-origin:bottom;animation:1.15s ease-in-out infinite flower-dance;display:inline-block}.animate-glow-pulse{transform-origin:50%;will-change:transform, box-shadow;animation:3s ease-in-out infinite glow-pulse}html:not(.dark) .animate-glow-pulse{--glow-pulse-blur-min:12px;--glow-pulse-color-min:#7a3a8740;--glow-pulse-blur-max:20px;--glow-pulse-color-max:#7a3a878c}}:root{--white:#fefefe;--black:#212121;--black-dark:#111;--black-dark-gradient:90deg, var(--black-dark) 100%, var(--black-dark) 100%;--grey:#9a9a9a;--grey-100:#efefef;--grey-200:#ededed;--grey-300:#ddd;--grey-400:#696969;--grey-500:#555;--grey-600:#232323;--grey-700:#383d40;--red:#ea4c89;--green:#55c58f;--yellow:orange;--pink:#d52bff;--blue:#4b5eec;--blue-100:#30cbfd;--blue-200:#c4c4ff;--blue-300:#8f8dff;--blue-400:#3100d3;--blue-gradient:90deg, var(--blue-100) 0%, var(--blue) 100%;--purple:#7a3a87;--purple-100:#71008b;--purple-200:#5b00a1;--purple-300:#403b8a;--purple-400:#473c68;--purple-500:#312556;--purple-gradient:90deg, var(--purple-500) 100%, var(--purple-500) 100%;--purple-dark-to-light-gradient:45deg, var(--purple-200) 0%, var(--purple-100) 100%;--background:#f6f5fa;--foreground:#171717;--card:#fff;--card-foreground:#171717;--popover:#fff;--popover-foreground:#171717;--primary:var(--purple-300);--primary-foreground:#fafafa;--secondary:#ebebeb;--secondary-foreground:#171717;--muted:#ededed;--muted-foreground:#737373;--accent:#ededed;--accent-foreground:#171717;--destructive:#ef4444;--destructive-foreground:#fafafa;--border:#d9d9d9;--input:#d9d9d9;--ring:var(--purple);--chart-1:#e76e50;--chart-2:#2a9d90;--chart-3:#274754;--chart-4:#e8c468;--chart-5:#f4a462;--radius:.6rem;--blue-pink-gradient:44.5deg, var(--color-blue-400) 39.04%, var(--color-pink) 98.58%;--sidebar:#f5f5f5;--sidebar-foreground:#3f3f46;--sidebar-primary:var(--purple-300);--sidebar-primary-foreground:#fafafa;--sidebar-accent:#e8e8e8;--sidebar-accent-foreground:#18181b;--sidebar-border:#d9d9d9;--sidebar-ring:#3b82f6;--chart-bg:var(--card);--chart-grid:#dedede;--chart-axis:#666;--chart-tooltip-bg:var(--popover);--chart-tooltip-fg:var(--popover-foreground);--chart-node-1:#58a6ff;--chart-node-2:#3fb950;--chart-node-3:#f0883e;--chart-node-4:#bc8cff;--chart-node-5:#f778ba;--chart-node-6:#79c0ff;--chart-node-7:#d2a8ff;--chart-node-8:#ffa657;--chart-node-9:#ff7b72;--chart-node-10:#7ee787;--chart-table-1:#e45756;--chart-table-2:#f58518;--chart-table-3:#eeca3b;--chart-table-4:#54a24b;--chart-table-5:#4c78a8;--chart-table-6:#b279a2;--chart-table-7:#9d755d;--chart-table-8:#17becf;--chart-table-9:#72b7b2;--chart-table-10:#bab0ac;--chart-type-1:#0d9488;--chart-type-2:#dc2626;--chart-type-3:#7c3aed;--chart-type-4:#d97706;--chart-type-5:#db2777;--chart-type-6:#0284c7;--chart-other:#6b7280;--chart-heatmap-muted-bg:#f3f4f6;--chart-heatmap-muted-stroke:#9ca3af;--chart-heatmap-grey-stroke:#9ca3af}.dark{--background:#121018;--foreground:#fafafa;--card:var(--color-grey-700);--card-foreground:var(--color-white);--popover:#0a0a0a;--popover-foreground:#fafafa;--primary:var(--purple-300);--primary-foreground:var(--color-white);--secondary:#262626;--secondary-foreground:#fafafa;--muted:#262626;--muted-foreground:#a3a3a3;--accent:#262626;--accent-foreground:#fafafa;--destructive:#ef4444;--destructive-foreground:#fafafa;--border:#262626;--input:var(--color-grey-700);--ring:var(--purple);--chart-1:#2662d9;--chart-2:#2eb88a;--chart-3:#e88c30;--chart-4:#af57db;--chart-5:#e23670;--sidebar:#18181b;--sidebar-foreground:#f4f4f5;--sidebar-primary:#1d4ed8;--sidebar-primary-foreground:#fff;--sidebar-accent:#27272a;--sidebar-accent-foreground:#f4f4f5;--sidebar-border:#27272a;--sidebar-ring:#3b82f6;--chart-bg:var(--card);--chart-grid:#383838;--chart-axis:#b3b3b3;--chart-tooltip-bg:var(--popover);--chart-tooltip-fg:var(--popover-foreground);--chart-heatmap-muted-bg:#1f2937;--chart-heatmap-muted-stroke:#4b5563;--chart-heatmap-grey-stroke:#6b7280;--shadow-deep:0 2px 8px 0 #0006, 0 1px 2px 0 #0000004d}@keyframes flower-dance{0%{transform:rotate(0)translateY(0)scale(1)}20%{transform:rotate(-12deg)translateY(-3px)scale(1.06)}40%{transform:rotate(6deg)translateY(0)scale(1)}60%{transform:rotate(12deg)translateY(-3px)scale(1.06)}80%{transform:rotate(-6deg)translateY(0)scale(1)}to{transform:rotate(0)translateY(0)scale(1)}}@keyframes glow-pulse{0%,to{box-shadow:0 0 var(--glow-pulse-blur-min,20px) var(--glow-pulse-color-min,#7a3a8780)}50%{box-shadow:0 0 var(--glow-pulse-blur-max,32px) var(--glow-pulse-color-max,#7a3a87)}}.tsqd-open-btn-container{margin-bottom:22px}.fabricSignupTextContainer{background:url(/fabric-signup-background.webp) 50%/cover}html:not(.dark) .fabricSignupTextContainer{filter:brightness(1.3)saturate(.75)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-text-shadow-color{syntax:"*";inherits:false}@property --tw-text-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
@@ -1,14 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/swagger-ui-react-lQrBxfwM.js","assets/rolldown-runtime-CNC7AqOf.js","assets/vendor-datadog-DyjkTkvg.js","assets/vendor-react-DeL8Gtgl.js","assets/vendor-ui-Bj22lHGK.js","assets/vendor-core-xUefYpUO.js","assets/index-Bh_CNAHr.js","assets/authStore-CNoNfv0F.js","assets/button-oQgW4t1x.js","assets/vendor-tanstack-0SjDjtT0.js","assets/useAuth-DvlnspkA.js","assets/card-BHplR9Xd.js","assets/createLucideIcon-BDx8noBh.js","assets/select-y6NKMkG_.js","assets/x-C3uc0qMD.js","assets/setLocalStorage-CD_L8p_D.js","assets/useLocalStorage-hkNSGGg8.js","assets/getRegistrationInfo-BOLlgqXr.js","assets/textarea-DhLMZ3PA.js","assets/errorText-NpBmvk9I.js","assets/queryClient-CbA8wM7J.js","assets/pollUnlessForbidden-HHdQZW1N.js","assets/editor.api-OBQnf1nL.js","assets/editor-jjEx9u7D.css","assets/tokenization-uOBOyHAS.js","assets/index-C8Mv9kHV.css","assets/react-redux-Co6ou4E8.js"])))=>i.map(i=>d[i]);
2
- import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{t}from"./button-oQgW4t1x.js";import{C as n,N as r,h as i,j as a}from"./vendor-tanstack-0SjDjtT0.js";import{a as o,i as s}from"./vendor-datadog-DyjkTkvg.js";import{r as c}from"./vendor-react-DeL8Gtgl.js";import{i as l,t as u}from"./getRegistrationInfo-BOLlgqXr.js";import{o as d}from"./pollUnlessForbidden-HHdQZW1N.js";import{$n as f,ft as p,kn as m,lt as h,zn as g}from"./index-Bh_CNAHr.js";import{t as _}from"./useEntityRestURL-DoaBMEvU.js";var v=[{fn:{requestSnippetGenerator_fetch:e=>{let t=new URL(e.get(`url`)),n=!1,r=e.get(`headers`);r&&r.size&&r.map((e,t)=>{n||=/^content-type$/i.test(t)&&/^multipart\/form-data$/i.test(e)});let i=e.get(`body`),a=e.get(`method`);if(i){if(n&&[`POST`,`PUT`,`PATCH`].includes(a))return`throw new Error("Currently unsupported content-type: /^multipart\\/form-data$/i");`;typeof i!=`string`&&(i=JSON.stringify(i,null,` `))}else!i&&a===`POST`&&(i=``);let o="`"+(i||``).replace(/\\n/g,`
3
- `).replace(/`/g,"\\`")+"`";return`const response = await fetch("${t.toString()}", {
4
- \tmethod: "${e.get(`method`)}",${r&&r.size?`
5
- \theaders: {
6
- \t\t${r.map((e,t)=>`"${t}": "${e}"`).valueSeq().join(`,
7
- `)}
8
- \t},`:``}${i?`
9
- \tbody: ${o},`:``}
10
- });
11
- const data = await response.json();
12
- console.log(data);
13
- `}}}],y={generators:{fetch:{title:`Fetch`,syntax:`javascript`}}};function b({entityId:e,instanceClient:t}){return a({queryKey:[`OpenAPI`,e],queryFn:async()=>{let{data:e}=await t.get(`/api/openapi/rest`);return e}})}var x=e(o(),1),S=c(),C=(0,x.lazy)(()=>s(()=>import(`./swagger-ui-react-lQrBxfwM.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26])));function w(){let{instanceId:e,clusterId:i}=n({strict:!1}),a=d(),{data:o,isLoading:s}=r(h(a)),{data:c,isLoading:w}=r(u(a)),T=_(),{data:E,isLoading:D,error:O}=r(b(a));E?.servers?.length&&(E.servers[0].url=T);let k=o?.http,A=``,j=k?.cors===!1,M=k?.corsAccessList?.length!==void 0&&!k.corsAccessList.includes(`*`)&&!k.corsAccessList.includes(`null`)&&!k.corsAccessList.includes(window.location.origin);j?A=`This ${i&&!e?`cluster`:`instance`} has CORS disabled currently, so you won't be able to execute API requests from the browser.`:M&&(A=`This ${i&&!e?`cluster`:`instance`} has CORS enabled, but ${window.location.origin} is not allowed, so you won't be able to execute API requests from the browser.`);let{onConfigUpdate:N,isPending:P}=p(),F=(0,x.useCallback)(()=>{N({...j?{http_cors:!0}:{},...M?{http_corsAccessList:[...k?.corsAccessList??[],window.location.origin]}:{}})},[j,k?.corsAccessList,M,N]);if(s||w||D)return(0,S.jsx)(m,{centered:!0,text:`Looking up your instance configuration, one moment.`});if(O){let e;return e=c?.version&&!l(`4.7.0-beta.7`,c?.version)?`API Docs are only available starting in version '4.7.0-beta.7' of Harper, please update your version ${c.version}!`:`We weren't able to look up your docs. Please check the Network tab of your developer tools to see why the docs were not accessible to Studio.`,(0,S.jsx)(g,{title:`API Docs Unavailable`,error:{message:e},showReturnToHome:!1})}return(0,S.jsxs)(`div`,{className:`pt-6`,children:[A&&(0,S.jsx)(g,{title:`CORS Disabled: HTTP API Not Accessible`,className:`mt-0 mx-4 mb-4 border-yellow text-yellow`,error:{message:A},showReturnToHome:!1,children:(0,S.jsxs)(t,{type:`button`,disabled:P,variant:`warning`,onClick:F,children:[(0,S.jsx)(f,{}),P?`Enabling CORS...`:`Enable CORS for ${window.location.origin}`]})}),(0,S.jsx)(x.Suspense,{fallback:(0,S.jsx)(m,{centered:!0,text:`Loading API documentation...`}),children:(0,S.jsx)(C,{spec:E,persistAuthorization:!0,withCredentials:!0,requestSnippetsEnabled:!0,defaultModelRendering:`model`,requestSnippets:y,plugins:v,tryItOutEnabled:!0})})]})}var T=i(`/apis`)({component:w});export{T as route};
14
- //# sourceMappingURL=index.lazy-Dx3MpyDC.js.map
@@ -1,2 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{i as t,t as n}from"./button-oQgW4t1x.js";import{A as r,I as i}from"./vendor-tanstack-0SjDjtT0.js";import{a}from"./vendor-datadog-DyjkTkvg.js";import{r as o}from"./vendor-react-DeL8Gtgl.js";import{c as s,d as c,f as l,i as u,l as d,n as f,o as p,p as m,s as h,t as g,u as _}from"./select-y6NKMkG_.js";import{l as v,t as y}from"./textarea-DhLMZ3PA.js";import{$n as b,Cn as x,Dt as S,It as C,On as w,Un as T,gn as E,on as D,rn as O,vn as k,wn as A,xn as j,yn as M}from"./index-Bh_CNAHr.js";import{a as N,c as P,i as F,n as I,o as L,r as R,s as z,t as B}from"./alertDialog-DSs2KlnR.js";function V(){let e=i();return r({mutationFn:async e=>{let{data:n}=await t.post(`/SystemStatus/`,e);return n},onSuccess:()=>e.invalidateQueries({queryKey:k})})}function H(){let e=i();return r({mutationFn:async({id:e,draft:n})=>{await t.patch(`/SystemStatus/${e}`,n)},onSuccess:()=>e.invalidateQueries({queryKey:k})})}function U(){let e=i();return r({mutationFn:async e=>{await t.delete(`/SystemStatus/${e}`)},onSuccess:()=>e.invalidateQueries({queryKey:k})})}var W=e(a(),1),G=o(),K=[{value:`error`,label:`Error / Outage`},{value:`warning`,label:`Warning`},{value:`maintenance`,label:`Maintenance`},{value:`info`,label:`Info`}];function q(e){let t=A(e);if(t===null)return``;let n=new Date(t),r=e=>String(e).padStart(2,`0`);return`${n.getFullYear()}-${r(n.getMonth()+1)}-${r(n.getDate())}T${r(n.getHours())}:${r(n.getMinutes())}`}function J(e){if(!e)return null;let t=Date.parse(e);return Number.isNaN(t)?null:new Date(t).toISOString()}function Y(e){let t=A(e.startAt),n=A(e.endAt);if(t===null&&n===null)return`Always`;let r=e=>e===null?`—`:new Date(e).toLocaleString();return`${r(t)} → ${r(n)}`}function X(){let{data:e,isLoading:t}=E(),[r,i]=(0,W.useState)(!1),[a,o]=(0,W.useState)(null),[s,c]=(0,W.useState)(null),l=U(),u=(0,W.useCallback)(()=>{o(null),i(!0)},[]),d=(0,W.useCallback)(e=>{o(e),i(!0)},[]),f=(0,W.useMemo)(()=>Z({openEdit:d,onDelete:c}),[d]);return(0,G.jsxs)(`div`,{className:`max-w-5xl`,children:[(0,G.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h1`,{className:`text-2xl font-light`,children:`Notifications`}),(0,G.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:`System-wide notices shown to all users in the notification center. Times are stored in UTC.`})]}),(0,G.jsxs)(n,{variant:`submit`,onClick:u,className:`shrink-0`,children:[(0,G.jsx)(b,{}),`New notification`]})]}),(0,G.jsx)(`div`,{className:`mt-6`,children:t?(0,G.jsx)(C,{className:`h-40 w-full`}):(0,G.jsx)(S,{columns:f,data:e??[]})}),(0,G.jsx)(Q,{open:r,onOpenChange:i,editing:a}),(0,G.jsx)(B,{open:!!s,onOpenChange:e=>!e&&c(null),children:(0,G.jsxs)(F,{children:[(0,G.jsxs)(z,{children:[(0,G.jsx)(P,{children:`Delete notification?`}),(0,G.jsx)(N,{children:`This removes it for everyone immediately. This can't be undone.`})]}),(0,G.jsxs)(L,{children:[(0,G.jsx)(R,{children:`Cancel`}),(0,G.jsx)(I,{disabled:l.isPending,onClick:e=>{e.preventDefault(),s&&l.mutate(s.id,{onSuccess:()=>c(null)})},children:l.isPending?`Deleting…`:`Delete`})]})]})})]})}function Z({openEdit:e,onDelete:t}){return[{header:`Type`,accessorKey:`type`,size:12,cell:({row:e})=>{let{label:t,badgeVariant:n}=j(e.original.type);return(0,G.jsx)(w,{variant:n,children:e.original.type||t})}},{header:`Message`,accessorKey:`message`,size:40,cell:({row:e})=>(0,G.jsx)(`span`,{className:`line-clamp-2 break-words`,children:e.original.message})},{header:`Active window (local)`,size:28,cell:({row:e})=>(0,G.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:Y(e.original)})},{header:`Link`,size:8,cell:({row:e})=>e.original.url?(0,G.jsx)(M,{url:e.original.url,className:`text-sm text-primary hover:underline dark:text-white`}):(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:`—`})},{header:``,id:`actions`,size:12,cell:({row:r})=>(0,G.jsxs)(`div`,{className:`flex justify-end gap-1`,children:[(0,G.jsx)(n,{variant:`ghost`,size:`icon`,"aria-label":`Edit`,onClick:()=>e(r.original),children:(0,G.jsx)(v,{})}),(0,G.jsx)(n,{variant:`destructiveGhost`,size:`icon`,"aria-label":`Delete`,onClick:()=>t(r.original),children:(0,G.jsx)(T,{})})]})}]}function Q({open:e,onOpenChange:t,editing:r}){let i=V(),a=H(),o=i.isPending||a.isPending,[v,b]=(0,W.useState)(`error`),[S,C]=(0,W.useState)(``),[w,T]=(0,W.useState)(``),[E,k]=(0,W.useState)(``),[A,j]=(0,W.useState)(``),[M,N]=(0,W.useState)(null);return(0,W.useEffect)(()=>{e&&(b(r?.type??`error`),C(r?.message??``),T(r?.url??``),k(q(r?.startAt)),j(q(r?.endAt)),N(null))},[e,r]),(0,G.jsx)(s,{open:e,onOpenChange:t,children:(0,G.jsxs)(d,{children:[(0,G.jsxs)(l,{children:[(0,G.jsx)(m,{children:r?`Edit notification`:`New notification`}),(0,G.jsx)(_,{children:`Shown to all users. Leave start/end empty for an open-ended window.`})]}),(0,G.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,G.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,G.jsx)(D,{htmlFor:`notification-type`,children:`Type`}),(0,G.jsxs)(g,{value:v,onValueChange:b,children:[(0,G.jsx)(p,{id:`notification-type`,className:`w-full`,children:(0,G.jsx)(h,{})}),(0,G.jsx)(f,{children:K.map(e=>(0,G.jsx)(u,{value:e.value,children:e.label},e.value))})]})]}),(0,G.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,G.jsx)(D,{htmlFor:`notification-message`,children:`Message`}),(0,G.jsx)(y,{id:`notification-message`,rows:3,value:S,onChange:e=>C(e.target.value),placeholder:`The Fabric control plane will be undergoing maintenance…`})]}),(0,G.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,G.jsx)(D,{htmlFor:`notification-url`,children:`Link (optional)`}),(0,G.jsx)(O,{id:`notification-url`,value:w,onChange:e=>T(e.target.value),placeholder:`https://status.harper.io or /organizations`}),(0,G.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`An absolute URL opens in a new tab; a path like `,(0,G.jsx)(`code`,{children:`/organizations`}),` links inside Studio.`]})]}),(0,G.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 sm:grid-cols-2`,children:[(0,G.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,G.jsx)(D,{htmlFor:`notification-start`,children:`Start (local time)`}),(0,G.jsx)(O,{id:`notification-start`,type:`datetime-local`,value:E,onChange:e=>k(e.target.value)})]}),(0,G.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,G.jsx)(D,{htmlFor:`notification-end`,children:`End (local time)`}),(0,G.jsx)(O,{id:`notification-end`,type:`datetime-local`,value:A,onChange:e=>j(e.target.value)})]})]}),M&&(0,G.jsx)(`p`,{className:`text-sm text-destructive`,children:M})]}),(0,G.jsxs)(c,{children:[(0,G.jsx)(n,{variant:`ghostOutline`,onClick:()=>t(!1),disabled:o,children:`Cancel`}),(0,G.jsx)(n,{variant:`submit`,onClick:()=>{let e=S.trim();if(!e){N(`Message is required.`);return}let n=J(E),o=J(A);if(n&&o&&Date.parse(o)<=Date.parse(n)){N(`End time must be after start time.`);return}let s=w.trim();if(s&&!x(s)){N(`Link must be an http(s) URL, a mailto: address, or a path starting with “/”.`);return}let c={type:v,message:e,url:s||null,startAt:n,endAt:o},l=()=>t(!1);r?a.mutate({id:r.id,draft:c},{onSuccess:l}):i.mutate(c,{onSuccess:l})},disabled:o,children:o?`Saving…`:r?`Save changes`:`Create`})]})]})})}export{X as NotificationsAdminIndex};
2
- //# sourceMappingURL=notifications-CwKhipK7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pollUnlessForbidden-HHdQZW1N.js","names":[],"sources":["../../src/config/useInstanceClient.tsx","../../src/lib/arrays/excludeFalsy.ts","../../src/react-query/pollUnlessForbidden.ts"],"sourcesContent":["import { isLocalStudio } from '@/config/constants';\nimport { getInstanceClient } from '@/config/getInstanceClient';\nimport { InstanceClientConfig, InstanceClientIdConfig, InstanceTypeConfig } from '@/config/instanceClientConfig';\nimport { OverallAppSignIn } from '@/features/auth/store/authStore';\nimport { useParams } from '@tanstack/react-router';\nimport { useMemo } from 'react';\n\ninterface UseParams {\n\tclusterId?: string;\n\tdisableFabricConnect?: boolean;\n\tforceFabricConnect?: boolean;\n\tinstanceId?: string;\n\toperationsUrl?: string | null;\n\tport?: number;\n\tsecure?: boolean;\n}\n\nexport function useInstanceClient(\n\tparams: UseParams = {},\n) {\n\tconst { instanceId, clusterId }: { instanceId?: string; clusterId?: string } = useParams({ strict: false });\n\tconst id = isLocalStudio ? OverallAppSignIn : params.instanceId ?? instanceId ?? params.clusterId ?? clusterId;\n\treturn getInstanceClient({ id, ...params });\n}\n\nexport function useInstanceClientParams(\n\tparams: UseParams = {},\n): InstanceClientConfig & InstanceTypeConfig {\n\tconst { instanceId, clusterId }: { instanceId?: string; clusterId?: string } = useParams({ strict: false });\n\tconst id = isLocalStudio ? OverallAppSignIn : params.instanceId ?? instanceId ?? params.clusterId ?? clusterId;\n\treturn {\n\t\tinstanceClient: getInstanceClient({ id, ...params }),\n\t\tentityType: (isLocalStudio || instanceId) ? 'instance' : 'cluster',\n\t};\n}\n\nexport function useInstanceClientIdParams(\n\tparams: UseParams = {},\n): InstanceClientIdConfig & InstanceTypeConfig {\n\tconst { instanceId, clusterId }: { instanceId?: string; clusterId?: string } = useParams({ strict: false });\n\treturn useMemo(\n\t\t() => getInstanceClientIdFromParams({ instanceId, clusterId, ...params }),\n\t\t[\n\t\t\tparams.instanceId ?? instanceId,\n\t\t\tparams.clusterId ?? clusterId,\n\t\t\tparams.operationsUrl,\n\t\t\tparams.port,\n\t\t\tparams.secure,\n\t\t\tparams.disableFabricConnect,\n\t\t\tparams.forceFabricConnect,\n\t\t],\n\t);\n}\n\nexport function getInstanceClientIdFromParams({\n\tinstanceId,\n\tclusterId,\n\t...params\n}: UseParams): InstanceClientIdConfig & InstanceTypeConfig {\n\tconst id = isLocalStudio ? OverallAppSignIn : instanceId ?? clusterId;\n\tif (!id) {\n\t\tthrow new Error('id could not be automatically calculated in useInstanceClientIdParams');\n\t}\n\treturn {\n\t\tinstanceClient: getInstanceClient({ id, ...params }),\n\t\tentityId: id,\n\t\tentityType: (isLocalStudio || instanceId) ? 'instance' : 'cluster',\n\t};\n}\n","export function excludeFalsy<T>(item: T | undefined | 0 | false | null): item is T {\n\treturn !!item;\n}\n","/** The only part of React Query's `Query` this wrapper reads. Typed structurally\n * (rather than as `Query`) because `Query` is invariant in its data type, so a\n * concrete `Query<StatusResponse, …>` will not accept a `(query: Query) => …`\n * callback. A supertype parameter accepts every instantiation. */\ninterface QueryErrorState {\n\tstate: { error: unknown };\n}\n\n/** HTTP status off an axios-style error, tolerating both the axios shape\n * (`error.response.status`) and a bare `{ status }`. */\nfunction errorStatus(err: unknown): number | undefined {\n\treturn (err as { response?: { status?: number } })?.response?.status\n\t\t?? (err as { status?: number })?.status;\n}\n\n/** A 403 means the caller is authenticated but not permitted on this resource.\n * Unlike a 401 (session lost — the auth layer clears auth and redirects), a 403\n * is stable: the same request will keep failing until permissions change, so\n * repeating it is pure waste. */\nexport function isForbiddenError(err: unknown): boolean {\n\treturn errorStatus(err) === 403;\n}\n\n/**\n * Wrap a fixed poll interval so polling STOPS once the endpoint answers 403.\n *\n * `refetchInterval` fires on a timer regardless of the query's error state, so a\n * poll against a resource the user may not touch retries forever. On 2026-07-27 a\n * single session sat on `/$organizationId/$clusterId/instances/` for ~58 minutes\n * while three 10s polls — `GET /Cluster/{id}` and `POST /HDBInstance/{id}/operation`\n * for two instances — all 403'd: ~1,045 doomed requests and 525 handled errors, each\n * one a `console.error` + a toast through the global React Query error handler\n * (`queryClient.ts`). That one session was 525 of the 526 403s Studio reported to RUM\n * that day. 403s are deliberately kept in RUM (see `shouldKeepEvent`), so an\n * unbounded 403 poll also drowns real signal in Error Tracking.\n *\n * Stopping is not permanent: returning `false` only cancels the *timer*. The query\n * still refetches on remount and on window focus (`refetchOnWindowFocus` defaults to\n * true), so if the user is granted access the UI recovers on their next interaction\n * without a reload — it just no longer hammers the endpoint in the background.\n *\n * Only 403 stops the timer. 5xx, network failures, and timeouts are transient\n * (instance restarting, unreachable) and should keep polling so the UI self-heals.\n */\nexport function pollUnlessForbidden(interval: number | false | undefined) {\n\treturn (query: QueryErrorState) => (isForbiddenError(query.state.error) ? false : (interval ?? false));\n}\n\n/**\n * `retry` predicate that gives up immediately on 403 but otherwise keeps React\n * Query's default retry count.\n *\n * Needed to make `pollUnlessForbidden` engage on the FIRST 403. `state.error` is\n * only populated once retries are exhausted (until then the failure lives in\n * `failureReason`), so on a query left at the default `retry: 3` the poll timer\n * cannot see the 403 until three more doomed requests have gone out — ~30s later\n * on a query that also sets `retryDelay: 10_000`.\n *\n * `failureCount < maxRetries` is exactly the semantics of the numeric form\n * (`retry: 3`), so transient failures keep the retry behavior they had before.\n */\nexport function retryUnlessForbidden(maxRetries = 3) {\n\treturn (failureCount: number, error: unknown) => !isForbiddenError(error) && failureCount < maxRetries;\n}\n"],"mappings":"mNAiBA,SAAgB,EACf,EAAoB,CAAC,EACpB,CACD,GAAM,CAAE,aAAY,aAA2D,EAAU,CAAE,OAAQ,EAAM,CAAC,EAE1G,OAAO,EAAkB,CAAE,GADA,EACI,GAAG,CAAO,CAAC,CAC3C,CAEA,SAAgB,EACf,EAAoB,CAAC,EACuB,CAC5C,GAAM,CAAE,aAAY,aAA2D,EAAU,CAAE,OAAQ,EAAM,CAAC,EAE1G,MAAO,CACN,eAAgB,EAAkB,CAAE,GAFV,EAEc,GAAG,CAAO,CAAC,EACnD,WAA4C,UAC7C,CACD,CAEA,SAAgB,EACf,EAAoB,CAAC,EACyB,CAC9C,GAAM,CAAE,aAAY,aAA2D,EAAU,CAAE,OAAQ,EAAM,CAAC,EAC1G,OAAA,EAAA,EAAA,QAAA,KACO,EAA8B,CAAE,aAAY,YAAW,GAAG,CAAO,CAAC,EACxE,CACC,EAAO,YAAc,EACrB,EAAO,WAAa,EACpB,EAAO,cACP,EAAO,KACP,EAAO,OACP,EAAO,qBACP,EAAO,kBACR,CACD,CACD,CAEA,SAAgB,EAA8B,CAC7C,aACA,YACA,GAAG,GACuD,CAC1D,IAAM,EAAqB,EAC3B,GAAI,CAAC,EACJ,MAAU,MAAM,uEAAuE,EAExF,MAAO,CACN,eAAgB,EAAkB,CAAE,KAAI,GAAG,CAAO,CAAC,EACnD,SAAU,EACV,WAA4C,UAC7C,CACD,CCpEA,SAAgB,EAAgB,EAAmD,CAClF,MAAO,CAAC,CAAC,CACV,CCQA,SAAS,EAAY,EAAkC,CACtD,OAAQ,GAA4C,UAAU,QACzD,GAA6B,MACnC,CAMA,SAAgB,EAAiB,EAAuB,CACvD,OAAO,EAAY,CAAG,IAAM,GAC7B,CAuBA,SAAgB,EAAoB,EAAsC,CACzE,MAAQ,IAA4B,EAAiB,EAAM,MAAM,KAAK,EAAI,GAAS,GAAY,EAChG,CAeA,SAAgB,EAAqB,EAAa,EAAG,CACpD,OAAQ,EAAsB,IAAmB,CAAC,EAAiB,CAAK,GAAK,EAAe,CAC7F"}
@@ -1,2 +0,0 @@
1
- import{L as e,R as t,z as n}from"./vendor-tanstack-0SjDjtT0.js";import{Rt as r}from"./vendor-ui-Bj22lHGK.js";import{t as i}from"./errorText-NpBmvk9I.js";function a(e){let t=`Error`,n=`We had some trouble!`;console.error(e);let a=e,o=e;if(n=typeof e==`string`?e:a?.response?.data?typeof a.response.data==`string`?a.response.data:i(a.response.data.error)??i(a.response.data.message)??n:i(o?.message)??n,n.includes(`:`)&&!n.startsWith(`{`)&&!n.startsWith(`[`)){let e=n.split(`:`);t=e.shift(),n=e.join(`:`)}let s=a?.code===`ECONNABORTED`||a?.code===`ETIMEDOUT`,c=a?.response?.status===403;r.error(t,{id:s?`request-timeout`:c?`request-forbidden`:void 0,description:n,action:{label:`Dismiss`,onClick:()=>r.dismiss()}})}var o=new e({queryCache:new t({onError:a}),mutationCache:new n({onError:(e,t,n,r)=>{r.meta?.skipGlobalErrorToast||a(e)}})});export{o as n,a as t};
2
- //# sourceMappingURL=queryClient-CbA8wM7J.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queryClient-CbA8wM7J.js","names":[],"sources":["../../src/react-query/queryClient.ts"],"sourcesContent":["import { errorText } from '@/lib/errorText';\nimport { MutationCache, QueryCache, QueryClient } from '@tanstack/react-query';\nimport { AxiosError } from 'axios';\nimport { toast } from 'sonner';\n\nexport function errorHandler(rawErr: unknown) {\n\tlet errorTitle = 'Error';\n\tlet errorMsg = 'We had some trouble!';\n\tconsole.error(rawErr);\n\tconst axiosWrappedErr = rawErr as AxiosError<string | { error?: unknown; message?: unknown }>;\n\tconst otherErr = rawErr as { message?: unknown };\n\tif (typeof rawErr === 'string') {\n\t\terrorMsg = rawErr;\n\t} else if (axiosWrappedErr?.response?.data) {\n\t\tif (typeof axiosWrappedErr.response.data === 'string') {\n\t\t\terrorMsg = axiosWrappedErr.response.data;\n\t\t} else {\n\t\t\t// `error`/`message` can be a structured object (e.g. Harper's deploy failures) —\n\t\t\t// extract its nested message (or JSON) rather than showing \"[object Object]\" (#1426).\n\t\t\terrorMsg = errorText(axiosWrappedErr.response.data.error)\n\t\t\t\t?? errorText(axiosWrappedErr.response.data.message)\n\t\t\t\t?? errorMsg;\n\t\t}\n\t} else {\n\t\terrorMsg = errorText(otherErr?.message) ?? errorMsg;\n\t}\n\t// The JSON fallback from errorText produces messages full of colons that are not\n\t// \"Title: detail\" shaped — don't split those.\n\tif (errorMsg.includes(':') && !errorMsg.startsWith('{') && !errorMsg.startsWith('[')) {\n\t\tconst split = errorMsg.split(':');\n\t\terrorTitle = split.shift()!;\n\t\terrorMsg = split.join(':');\n\t}\n\t// Axios surfaces request timeouts as ECONNABORTED / ETIMEDOUT. Multiple\n\t// queries can timeout in parallel and stack up identical toasts; collapse\n\t// them onto a single id so the user sees one instead of a wall.\n\tconst isTimeout = axiosWrappedErr?.code === 'ECONNABORTED' || axiosWrappedErr?.code === 'ETIMEDOUT';\n\t// Same collapse for 403s. `pollUnlessForbidden` stops polls that 403, but other\n\t// repeat sources remain (route preloads and background queries firing while\n\t// signed out, #1546), and a permission failure repeated N times is still one\n\t// thing for the user to know.\n\tconst isForbidden = axiosWrappedErr?.response?.status === 403;\n\ttoast.error(errorTitle, {\n\t\tid: isTimeout ? 'request-timeout' : isForbidden ? 'request-forbidden' : undefined,\n\t\tdescription: errorMsg,\n\t\taction: {\n\t\t\tlabel: 'Dismiss',\n\t\t\tonClick: () => toast.dismiss(),\n\t\t},\n\t});\n}\n\nexport const queryClient = new QueryClient({\n\tqueryCache: new QueryCache({\n\t\tonError: errorHandler,\n\t}),\n\tmutationCache: new MutationCache({\n\t\t// Every mutation error routes through the shared toast by default. A mutation can opt out\n\t\t// — to render its own inline UI or redirect instead — with `meta: { skipGlobalErrorToast: true }`\n\t\t// (e.g. the cloud login flow redirects an unverified user to the email-verification page).\n\t\tonError: (error, _variables, _context, mutation) => {\n\t\t\tif (mutation.meta?.skipGlobalErrorToast) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\terrorHandler(error);\n\t\t},\n\t}),\n});\n"],"mappings":"yJAKA,SAAgB,EAAa,EAAiB,CAC7C,IAAI,EAAa,QACb,EAAW,uBACf,QAAQ,MAAM,CAAM,EACpB,IAAM,EAAkB,EAClB,EAAW,EAkBjB,GAjBA,AAaC,EAbG,OAAO,GAAW,SACV,EACD,GAAiB,UAAU,KACjC,OAAO,EAAgB,SAAS,MAAS,SACjC,EAAgB,SAAS,KAIzB,EAAU,EAAgB,SAAS,KAAK,KAAK,GACpD,EAAU,EAAgB,SAAS,KAAK,OAAO,GAC/C,EAGM,EAAU,GAAU,OAAO,GAAK,EAIxC,EAAS,SAAS,GAAG,GAAK,CAAC,EAAS,WAAW,GAAG,GAAK,CAAC,EAAS,WAAW,GAAG,EAAG,CACrF,IAAM,EAAQ,EAAS,MAAM,GAAG,EAChC,EAAa,EAAM,MAAM,EACzB,EAAW,EAAM,KAAK,GAAG,CAC1B,CAIA,IAAM,EAAY,GAAiB,OAAS,gBAAkB,GAAiB,OAAS,YAKlF,EAAc,GAAiB,UAAU,SAAW,IAC1D,EAAM,MAAM,EAAY,CACvB,GAAI,EAAY,kBAAoB,EAAc,oBAAsB,IAAA,GACxE,YAAa,EACb,OAAQ,CACP,MAAO,UACP,YAAe,EAAM,QAAQ,CAC9B,CACD,CAAC,CACF,CAEA,IAAa,EAAc,IAAI,EAAY,CAC1C,WAAY,IAAI,EAAW,CAC1B,QAAS,CACV,CAAC,EACD,cAAe,IAAI,EAAc,CAIhC,SAAU,EAAO,EAAY,EAAU,IAAa,CAC/C,EAAS,MAAM,sBAGnB,EAAa,CAAK,CACnB,CACD,CAAC,CACF,CAAC"}
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/cssMode-CELnYoD2.js","assets/editor.api-OBQnf1nL.js","assets/vendor-datadog-DyjkTkvg.js","assets/rolldown-runtime-CNC7AqOf.js","assets/editor-jjEx9u7D.css","assets/workers-Bhsi-paP.js","assets/toggleHighContrast-el2uNoWb.js","assets/toggleHighContrast--ixms01u.css","assets/lspLanguageFeatures-DxCM7LI8.js","assets/htmlMode-C-XeByKD.js","assets/html-BVEzO_JE.js","assets/javascript-RfS7BpXx.js","assets/typescript-C-f5yNpf.js","assets/xml-CYWXNNmu.js","assets/yaml-C94SWN2B.js"])))=>i.map(i=>d[i]);
2
- import{i as e}from"./vendor-datadog-DyjkTkvg.js";import{m as t,n}from"./editor.api-OBQnf1nL.js";import{K as r,t as i}from"./index-Bh_CNAHr.js";import{loader as a}from"./dist-3T7cRma3.js";import{s as o}from"./toggleHighContrast-el2uNoWb.js";import{t as s}from"./editor-DK9rdQRE.js";var c=`__monacoFindWidgetTabIndexPatchApplied`,l=`__monacoFindWidgetOriginalTabIndex`;function u(e,t){let n=e?._domNode;if(!n)return;let r=n.querySelectorAll(`input, textarea, [tabindex], [role="button"], [role="checkbox"]`);for(let e of r)if(e instanceof HTMLElement)if(t){if(!(l in e.dataset))continue;let t=e.dataset[l];t===``?e.removeAttribute(`tabindex`):e.tabIndex=Number(t),delete e.dataset[l]}else l in e.dataset||(e.dataset[l]=e.getAttribute(`tabindex`)??``),e.tabIndex=-1}if(!o[c]){let e=o.prototype._reveal,t=o.prototype._hide;o.prototype._reveal=function(...t){e.apply(this,t),u(this,!0)},o.prototype._hide=function(...e){t.apply(this,e),u(this,!1)},o[c]=!0}var d=class{constructor(e,t,r){this._onDidChange=new n,this._languageId=e,this.setOptions(t),this.setModeConfiguration(r)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this.options}get options(){return this._options}setOptions(e){this._options=e||Object.create(null),this._onDidChange.fire(this)}setDiagnosticsOptions(e){this.setOptions(e)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},f={validate:!0,lint:{compatibleVendorPrefixes:`ignore`,vendorPrefix:`warning`,duplicateProperties:`warning`,emptyRules:`warning`,importStatement:`ignore`,boxModel:`ignore`,universalSelector:`ignore`,zeroUnits:`ignore`,fontFaceProperties:`warning`,hexColorLength:`error`,argumentsInColorFunction:`error`,unknownProperties:`warning`,ieHack:`ignore`,unknownVendorSpecificProperties:`ignore`,propertyIgnoredDueToDisplay:`warning`,important:`ignore`,float:`ignore`,idSelector:`ignore`},data:{useDefaultDataProvider:!0},format:{newlineBetweenSelectors:!0,newlineBetweenRules:!0,spaceAroundSelectorSeparator:!1,braceStyle:`collapse`,maxPreserveNewLines:void 0,preserveNewLines:!0}},p={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0,documentFormattingEdits:!0,documentRangeFormattingEdits:!0},m=new d(`css`,f,p),h=new d(`scss`,f,p),g=new d(`less`,f,p);function _(){return e(()=>import(`./cssMode-CELnYoD2.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8]))}t.onLanguage(`less`,()=>{_().then(e=>e.setupMode(g))}),t.onLanguage(`scss`,()=>{_().then(e=>e.setupMode(h))}),t.onLanguage(`css`,()=>{_().then(e=>e.setupMode(m))});var v=class{constructor(e,t,r){this._onDidChange=new n,this._languageId=e,this.setOptions(t),this.setModeConfiguration(r)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get options(){return this._options}get modeConfiguration(){return this._modeConfiguration}setOptions(e){this._options=e||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},y={format:{tabSize:4,insertSpaces:!1,wrapLineLength:120,unformatted:`default": "a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var`,contentUnformatted:`pre`,indentInnerHtml:!1,preserveNewLines:!0,maxPreserveNewLines:void 0,indentHandlebars:!1,endWithNewline:!1,extraLiners:`head, body, /html`,wrapAttributes:`auto`},suggest:{},data:{useDefaultDataProvider:!0}};function b(e){return{completionItems:!0,hovers:!0,documentSymbols:!0,links:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,selectionRanges:!0,diagnostics:e===x,documentFormattingEdits:e===x,documentRangeFormattingEdits:e===x}}var x=`html`,S=`handlebars`,C=`razor`;T(x,y,b(x)).defaults,T(S,y,b(S)).defaults,T(C,y,b(C)).defaults;function w(){return e(()=>import(`./htmlMode-C-XeByKD.js`),__vite__mapDeps([9,1,2,3,4,5,6,7,8]))}function T(e,n=y,r=b(e)){let i=new v(e,n,r),a,o=t.onLanguage(e,async()=>{a=(await w()).setupMode(i)});return{defaults:i,dispose(){o.dispose(),a?.dispose(),a=void 0}}}var E={},D={},O=class e{static getOrCreate(t){return D[t]||(D[t]=new e(t)),D[t]}constructor(e){this._languageId=e,this._loadingTriggered=!1,this._lazyLoadPromise=new Promise((e,t)=>{this._lazyLoadPromiseResolve=e,this._lazyLoadPromiseReject=t})}load(){return this._loadingTriggered||(this._loadingTriggered=!0,E[this._languageId].loader().then(e=>this._lazyLoadPromiseResolve(e),e=>this._lazyLoadPromiseReject(e))),this._lazyLoadPromise}};function k(e){let n=e.id;E[n]=e,t.register(e);let r=O.getOrCreate(n);t.registerTokensProviderFactory(n,{create:async()=>(await r.load()).language}),t.onLanguageEncountered(n,async()=>{let e=await r.load();t.setLanguageConfiguration(n,e.conf)})}k({id:`css`,extensions:[`.css`],aliases:[`CSS`,`css`],mimetypes:[`text/css`],loader:()=>e(()=>import(`./css-DIMkf-bt.js`),[])}),k({id:`graphql`,extensions:[`.graphql`,`.gql`],aliases:[`GraphQL`,`graphql`,`gql`],mimetypes:[`application/graphql`],loader:()=>e(()=>import(`./graphql-fmXr3nnJ.js`),[])}),k({id:`html`,extensions:[`.html`,`.htm`,`.shtml`,`.xhtml`,`.mdoc`,`.jsp`,`.asp`,`.aspx`,`.jshtm`],aliases:[`HTML`,`htm`,`html`,`xhtml`],mimetypes:[`text/html`,`text/x-jshtm`,`text/template`,`text/ng-template`],loader:()=>e(()=>import(`./html-BVEzO_JE.js`),__vite__mapDeps([10,1,2,3,4]))}),k({id:`javascript`,extensions:[`.js`,`.es6`,`.jsx`,`.mjs`,`.cjs`],firstLine:`^#!.*\\bnode`,filenames:[`jakefile`],aliases:[`JavaScript`,`javascript`,`js`],mimetypes:[`text/javascript`],loader:()=>e(()=>import(`./javascript-RfS7BpXx.js`),__vite__mapDeps([11,12,1,2,3,4]))}),k({id:`markdown`,extensions:[`.md`,`.markdown`,`.mdown`,`.mkdn`,`.mkd`,`.mdwn`,`.mdtxt`,`.mdtext`],aliases:[`Markdown`,`markdown`],loader:()=>e(()=>import(`./markdown-Cimd5fb3.js`),[])}),k({id:`typescript`,extensions:[`.ts`,`.tsx`,`.cts`,`.mts`],aliases:[`TypeScript`,`ts`,`typescript`],mimetypes:[`text/typescript`],loader:()=>e(()=>import(`./typescript-C-f5yNpf.js`),__vite__mapDeps([12,1,2,3,4]))}),k({id:`xml`,extensions:[`.xml`,`.xsd`,`.dtd`,`.ascx`,`.csproj`,`.config`,`.props`,`.targets`,`.wxi`,`.wxl`,`.wxs`,`.xaml`,`.svg`,`.svgz`,`.opf`,`.xslt`,`.xsl`],firstLine:`(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)`,aliases:[`XML`,`xml`],mimetypes:[`text/xml`,`application/xml`,`application/xaml+xml`,`application/xml-dtd`],loader:()=>e(()=>import(`./xml-CYWXNNmu.js`),__vite__mapDeps([13,1,2,3,4]))}),k({id:`yaml`,extensions:[`.yaml`,`.yml`],aliases:[`YAML`,`yaml`,`YML`,`yml`],mimetypes:[`application/x-yaml`,`text/x-yaml`],loader:()=>e(()=>import(`./yaml-C94SWN2B.js`),__vite__mapDeps([14,1,2,3,4]))});function A(e){return new Worker(`/assets/editor.worker-DSRLG71d.js`,{type:`module`,name:e?.name})}function j(e){return new Worker(`/assets/css.worker-CKX4Om_9.js`,{type:`module`,name:e?.name})}function M(e){return new Worker(`/assets/html.worker-DA4qty_i.js`,{type:`module`,name:e?.name})}function N(e){return new Worker(`/assets/json.worker-BBwVQl7H.js`,{type:`module`,name:e?.name})}function P(e){return new Worker(`/assets/ts.worker-CLx2uvU0.js`,{type:`module`,name:e?.name})}function F(e){return new Worker(`/assets/yaml.worker-Cc_Rnkid.js`,{type:`module`,name:e?.name})}var I=globalThis;function L(e){switch(e){case`json`:return new N;case`css`:case`scss`:case`less`:return new j;case`html`:case`handlebars`:case`razor`:return new M;case`typescript`:case`javascript`:return new P;case`yaml`:return new F;default:return new A}}I.MonacoEnvironment={getWorker(e,t){let n=L(t);return n.addEventListener(`error`,()=>i()),n}},r(t),a.config({monaco:s});
3
- //# sourceMappingURL=setup-B56Oz1_u.js.map