unspaghettit 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/build/client/_app/immutable/assets/0.DSctqr5I.css +1 -0
  2. package/build/client/_app/immutable/assets/0.DSctqr5I.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.DSctqr5I.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css +1 -0
  5. package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.br +0 -0
  6. package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.gz +0 -0
  7. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js +1 -0
  8. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/B439_FLv.js +1 -0
  11. package/build/client/_app/immutable/chunks/B439_FLv.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/B439_FLv.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/BCEY79Dw.js +1 -0
  14. package/build/client/_app/immutable/chunks/BCEY79Dw.js.br +2 -0
  15. package/build/client/_app/immutable/chunks/BCEY79Dw.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{DBJWcC6Y.js → BYIrIC5L.js} +1 -1
  17. package/build/client/_app/immutable/chunks/BYIrIC5L.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/BYIrIC5L.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/B_9TWPrx2.js +1 -0
  20. package/build/client/_app/immutable/chunks/B_9TWPrx2.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/B_9TWPrx2.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/BvOhVtZg.js +1 -0
  23. package/build/client/_app/immutable/chunks/BvOhVtZg.js.br +1 -0
  24. package/build/client/_app/immutable/chunks/BvOhVtZg.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/CY3em1ma2.js +1 -0
  26. package/build/client/_app/immutable/chunks/CY3em1ma2.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/CY3em1ma2.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/CgdRZPgI.js +1 -0
  29. package/build/client/_app/immutable/chunks/CgdRZPgI.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/CgdRZPgI.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/D5speDV82.js +908 -0
  32. package/build/client/_app/immutable/chunks/D5speDV82.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/D5speDV82.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/DkxwAIfJ2.js +1 -0
  35. package/build/client/_app/immutable/chunks/DkxwAIfJ2.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/DkxwAIfJ2.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/{DatGSObE.js → OJscNS3T.js} +1 -1
  38. package/build/client/_app/immutable/chunks/OJscNS3T.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/OJscNS3T.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/U9p9CtKG2.js +2 -0
  41. package/build/client/_app/immutable/chunks/U9p9CtKG2.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/U9p9CtKG2.js.gz +0 -0
  43. package/build/client/_app/immutable/entry/app.Cd4S3giu.js +2 -0
  44. package/build/client/_app/immutable/entry/app.Cd4S3giu.js.br +0 -0
  45. package/build/client/_app/immutable/entry/app.Cd4S3giu.js.gz +0 -0
  46. package/build/client/_app/immutable/entry/start.C3xXQVkq.js +1 -0
  47. package/build/client/_app/immutable/entry/start.C3xXQVkq.js.br +0 -0
  48. package/build/client/_app/immutable/entry/start.C3xXQVkq.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js +4 -0
  50. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{1.KYdA6ppX.js → 1.Dyte3Ggf.js} +1 -1
  53. package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js.br +2 -0
  54. package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/10.ivxAosDg.js +2 -0
  56. package/build/client/_app/immutable/nodes/10.ivxAosDg.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/10.ivxAosDg.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/{9.CMW6a2Lg.js → 11.wvMfJKC2.js} +1 -1
  59. package/build/client/_app/immutable/nodes/11.wvMfJKC2.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/11.wvMfJKC2.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/{2.DBz20KgG.js → 2.CmPPom9Z.js} +1 -1
  62. package/build/client/_app/immutable/nodes/2.CmPPom9Z.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/2.CmPPom9Z.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js +1 -0
  65. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/{4.BvMzqBJj.js → 4.DbfAvO8Z.js} +1 -1
  68. package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js +42 -0
  71. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js +1 -0
  74. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/{6.BOHISqs-.js → 7.Ejs18ZUc.js} +1 -1
  77. package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/{7.CemgNJfw.js → 8.B-HweAc8.js} +1 -1
  80. package/build/client/_app/immutable/nodes/8.B-HweAc8.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/8.B-HweAc8.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js +5 -0
  83. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js.gz +0 -0
  85. package/build/client/_app/version.json +1 -1
  86. package/build/client/_app/version.json.br +0 -0
  87. package/build/client/_app/version.json.gz +0 -0
  88. package/build/client/lyriks_logo.svg +148 -0
  89. package/build/client/lyriks_logo.svg.br +0 -0
  90. package/build/client/lyriks_logo.svg.gz +0 -0
  91. package/build/server/chunks/{0-C_o0oz-N.js → 0-Co8kcANG.js} +4 -4
  92. package/build/server/chunks/{0-C_o0oz-N.js.map → 0-Co8kcANG.js.map} +1 -1
  93. package/build/server/chunks/1-BSUItTig.js +9 -0
  94. package/build/server/chunks/{1-DPpKAKXV.js.map → 1-BSUItTig.js.map} +1 -1
  95. package/build/server/chunks/10-BygvxrZp.js +9 -0
  96. package/build/server/chunks/10-BygvxrZp.js.map +1 -0
  97. package/build/server/chunks/11-DRx0tRx2.js +9 -0
  98. package/build/server/chunks/11-DRx0tRx2.js.map +1 -0
  99. package/build/server/chunks/{2-AlfFqtL1.js → 2-BQT3m1vc.js} +3 -3
  100. package/build/server/chunks/{2-AlfFqtL1.js.map → 2-BQT3m1vc.js.map} +1 -1
  101. package/build/server/chunks/{3-vbjUt_51.js → 3-DPZ9BquJ.js} +3 -3
  102. package/build/server/chunks/{3-vbjUt_51.js.map → 3-DPZ9BquJ.js.map} +1 -1
  103. package/build/server/chunks/{4-BNow4x6D.js → 4-DHo47YX6.js} +3 -3
  104. package/build/server/chunks/{4-BNow4x6D.js.map → 4-DHo47YX6.js.map} +1 -1
  105. package/build/server/chunks/5-Cp9evBAG.js +9 -0
  106. package/build/server/chunks/5-Cp9evBAG.js.map +1 -0
  107. package/build/server/chunks/6-DiBq3bOV.js +9 -0
  108. package/build/server/chunks/6-DiBq3bOV.js.map +1 -0
  109. package/build/server/chunks/{6-QQ7r8Rd5.js → 7-C4hmS0dG.js} +3 -3
  110. package/build/server/chunks/{6-QQ7r8Rd5.js.map → 7-C4hmS0dG.js.map} +1 -1
  111. package/build/server/chunks/{7-CbPLGaIG.js → 8-CFFuDzBC.js} +4 -4
  112. package/build/server/chunks/{7-CbPLGaIG.js.map → 8-CFFuDzBC.js.map} +1 -1
  113. package/build/server/chunks/9-nhhKZJrs.js +9 -0
  114. package/build/server/chunks/9-nhhKZJrs.js.map +1 -0
  115. package/build/server/chunks/BehaviorGraph-m5kYj5HH.js +757 -0
  116. package/build/server/chunks/BehaviorGraph-m5kYj5HH.js.map +1 -0
  117. package/build/server/chunks/{FeatureCard-BQOY6gJQ.js → FeatureCard-CfbXNYe8.js} +2 -2
  118. package/build/server/chunks/{FeatureCard-BQOY6gJQ.js.map → FeatureCard-CfbXNYe8.js.map} +1 -1
  119. package/build/server/chunks/{ProgressBar-CfhccQ83.js → ProgressBar-DDoQJ_C9.js} +2 -2
  120. package/build/server/chunks/ProgressBar-DDoQJ_C9.js.map +1 -0
  121. package/build/server/chunks/{ProjectsIndex-CoDrvRya.js → ProjectsIndex-DUVJ3hyL.js} +2 -2
  122. package/build/server/chunks/{ProjectsIndex-CoDrvRya.js.map → ProjectsIndex-DUVJ3hyL.js.map} +1 -1
  123. package/build/server/chunks/TransitionCatalog-B8zHs-2E.js +271 -0
  124. package/build/server/chunks/TransitionCatalog-B8zHs-2E.js.map +1 -0
  125. package/build/server/chunks/{_layout.svelte-BREws55o.js → _layout.svelte-CLTmk0xU.js} +66 -15
  126. package/build/server/chunks/_layout.svelte-CLTmk0xU.js.map +1 -0
  127. package/build/server/chunks/{_page.svelte-De508ek8.js → _page.svelte-B1nG3PKn.js} +4 -4
  128. package/build/server/chunks/{_page.svelte-De508ek8.js.map → _page.svelte-B1nG3PKn.js.map} +1 -1
  129. package/build/server/chunks/{_page.svelte-Zf9H4KOP.js → _page.svelte-BW_nbAAH.js} +11 -315
  130. package/build/server/chunks/_page.svelte-BW_nbAAH.js.map +1 -0
  131. package/build/server/chunks/{_page.svelte-BqSC-1vK.js → _page.svelte-Caq7J0jU.js} +91 -47
  132. package/build/server/chunks/_page.svelte-Caq7J0jU.js.map +1 -0
  133. package/build/server/chunks/{_page.svelte-B7hT3P8E.js → _page.svelte-Cham-dsM.js} +4 -4
  134. package/build/server/chunks/{_page.svelte-B7hT3P8E.js.map → _page.svelte-Cham-dsM.js.map} +1 -1
  135. package/build/server/chunks/_page.svelte-Dhwjwph_.js +41 -0
  136. package/build/server/chunks/_page.svelte-Dhwjwph_.js.map +1 -0
  137. package/build/server/chunks/{_page.svelte-BKKCa9H5.js → _page.svelte-DlFVT40-.js} +3 -3
  138. package/build/server/chunks/{_page.svelte-BKKCa9H5.js.map → _page.svelte-DlFVT40-.js.map} +1 -1
  139. package/build/server/chunks/{_page.svelte-BtI2zZ_Z.js → _page.svelte-NVT2dzpG.js} +176 -327
  140. package/build/server/chunks/_page.svelte-NVT2dzpG.js.map +1 -0
  141. package/build/server/chunks/{_page.svelte-BKTveFAj.js → _page.svelte-Oj-W7G5s.js} +5 -5
  142. package/build/server/chunks/{_page.svelte-BKTveFAj.js.map → _page.svelte-Oj-W7G5s.js.map} +1 -1
  143. package/build/server/chunks/_page.svelte-Z_kK2lHY.js +68 -0
  144. package/build/server/chunks/_page.svelte-Z_kK2lHY.js.map +1 -0
  145. package/build/server/chunks/{builderModeStore.svelte-ihupr-3p.js → builderModeStore.svelte-BpRIU_zP.js} +217 -6
  146. package/build/server/chunks/builderModeStore.svelte-BpRIU_zP.js.map +1 -0
  147. package/build/server/chunks/client-DeX3TC3s.js +51 -0
  148. package/build/server/chunks/{client-DfpLcAZ9.js.map → client-DeX3TC3s.js.map} +1 -1
  149. package/build/server/chunks/{error.svelte-C35KOpru.js → error.svelte-Cdjeq3L2.js} +4 -4
  150. package/build/server/chunks/{error.svelte-C35KOpru.js.map → error.svelte-Cdjeq3L2.js.map} +1 -1
  151. package/build/server/chunks/featureStore.svelte-DIYgPBVm.js +161 -0
  152. package/build/server/chunks/featureStore.svelte-DIYgPBVm.js.map +1 -0
  153. package/build/server/chunks/{hooks.server-Rv301GTB.js → hooks.server-y3jdg_sB.js} +6 -2
  154. package/build/server/chunks/hooks.server-y3jdg_sB.js.map +1 -0
  155. package/build/server/chunks/{internal-BPKrFkK1.js → internal-KYK0WpL7.js} +4 -4
  156. package/build/server/chunks/{internal-BPKrFkK1.js.map → internal-KYK0WpL7.js.map} +1 -1
  157. package/build/server/chunks/projectFeaturesStore.svelte-2o-72_vr.js +313 -0
  158. package/build/server/chunks/projectFeaturesStore.svelte-2o-72_vr.js.map +1 -0
  159. package/build/server/chunks/{reconcile-Dv7jS3C8.js → reconcile-B5xqb6-s.js} +3 -272
  160. package/build/server/chunks/reconcile-B5xqb6-s.js.map +1 -0
  161. package/build/server/chunks/registry-DqAn_hVE.js +21 -0
  162. package/build/server/chunks/registry-DqAn_hVE.js.map +1 -0
  163. package/build/server/chunks/{state-CpLVNZq7.js → state-DBjl9lhV.js} +2 -2
  164. package/build/server/chunks/{state-CpLVNZq7.js.map → state-DBjl9lhV.js.map} +1 -1
  165. package/build/server/index.js +1 -1
  166. package/build/server/index.js.map +1 -1
  167. package/build/server/manifest.js +33 -17
  168. package/build/server/manifest.js.map +1 -1
  169. package/cli/commands/dashboard.ts +14 -0
  170. package/cli/commands/init.ts +26 -0
  171. package/cli/commands/theme.ts +62 -0
  172. package/cli/unspa.ts +38 -2
  173. package/cli/util/context-files.ts +5 -0
  174. package/cli/util/theme.ts +34 -0
  175. package/mcp-server/sync-notifier.ts +88 -35
  176. package/package.json +2 -1
  177. package/src/app.css +187 -0
  178. package/src/app.html +15 -1
  179. package/src/features/behavior-model/domain/services/BehaviorGraphModel.ts +531 -0
  180. package/src/features/behavior-model/presentation/adapters/VisBehaviorGraphRenderer.ts +492 -0
  181. package/src/features/behavior-model/presentation/components/BehaviorGraph.svelte +370 -0
  182. package/src/features/behavior-model/presentation/components/FeatureHeader.svelte +13 -5
  183. package/src/features/behavior-model/presentation/view-models/BehaviorGraphTheme.ts +43 -0
  184. package/src/features/builder-mode/domain/BuilderModeDashboard.ts +7 -1
  185. package/src/features/builder-mode/presentation/components/BuilderModeDashboard.svelte +78 -16
  186. package/src/features/builder-mode/presentation/components/BuilderTagChips.svelte +25 -0
  187. package/src/features/builder-mode/presentation/stores/builderModeStore.svelte.ts +247 -3
  188. package/src/features/projects/presentation/components/ProjectEditor.svelte +7 -0
  189. package/src/features/simulator/application/use-cases/RunScenarios.ts +15 -1
  190. package/src/hooks.server.ts +11 -1
  191. package/src/lib/theme/registry.ts +77 -0
  192. package/src/lib/theme/themeStore.svelte.ts +64 -0
  193. package/src/routes/+layout.svelte +184 -30
  194. package/src/routes/features/[id]/graph/+page.svelte +34 -0
  195. package/src/routes/projects/[id]/graph/+page.svelte +79 -0
  196. package/src/shared/presentation/components/ProgressBar.svelte +1 -1
  197. package/src/shared/presentation/toast/SyncToast.svelte +14 -3
  198. package/src/shared/presentation/toast/viewLinkResolver.ts +32 -0
  199. package/static/lyriks_logo.svg +148 -0
  200. package/build/client/_app/immutable/assets/0.DFMDYAU9.css +0 -1
  201. package/build/client/_app/immutable/assets/0.DFMDYAU9.css.br +0 -0
  202. package/build/client/_app/immutable/assets/0.DFMDYAU9.css.gz +0 -0
  203. package/build/client/_app/immutable/chunks/BO66rBOa2.js +0 -1
  204. package/build/client/_app/immutable/chunks/BO66rBOa2.js.br +0 -0
  205. package/build/client/_app/immutable/chunks/BO66rBOa2.js.gz +0 -0
  206. package/build/client/_app/immutable/chunks/DBJWcC6Y.js.br +0 -0
  207. package/build/client/_app/immutable/chunks/DBJWcC6Y.js.gz +0 -0
  208. package/build/client/_app/immutable/chunks/DHoA038D.js +0 -1
  209. package/build/client/_app/immutable/chunks/DHoA038D.js.br +0 -2
  210. package/build/client/_app/immutable/chunks/DHoA038D.js.gz +0 -0
  211. package/build/client/_app/immutable/chunks/DatGSObE.js.br +0 -0
  212. package/build/client/_app/immutable/chunks/DatGSObE.js.gz +0 -0
  213. package/build/client/_app/immutable/chunks/DjWKKtqp.js +0 -1
  214. package/build/client/_app/immutable/chunks/DjWKKtqp.js.br +0 -1
  215. package/build/client/_app/immutable/chunks/DjWKKtqp.js.gz +0 -0
  216. package/build/client/_app/immutable/chunks/Dq0DUAz1.js +0 -1
  217. package/build/client/_app/immutable/chunks/Dq0DUAz1.js.br +0 -0
  218. package/build/client/_app/immutable/chunks/Dq0DUAz1.js.gz +0 -0
  219. package/build/client/_app/immutable/chunks/iQu0D9Ux.js +0 -1
  220. package/build/client/_app/immutable/chunks/iQu0D9Ux.js.br +0 -0
  221. package/build/client/_app/immutable/chunks/iQu0D9Ux.js.gz +0 -0
  222. package/build/client/_app/immutable/entry/app.CLgh6Mx_.js +0 -2
  223. package/build/client/_app/immutable/entry/app.CLgh6Mx_.js.br +0 -0
  224. package/build/client/_app/immutable/entry/app.CLgh6Mx_.js.gz +0 -0
  225. package/build/client/_app/immutable/entry/start.D5GPCQZD.js +0 -1
  226. package/build/client/_app/immutable/entry/start.D5GPCQZD.js.br +0 -0
  227. package/build/client/_app/immutable/entry/start.D5GPCQZD.js.gz +0 -0
  228. package/build/client/_app/immutable/nodes/0.BOoI-hsu.js +0 -4
  229. package/build/client/_app/immutable/nodes/0.BOoI-hsu.js.br +0 -0
  230. package/build/client/_app/immutable/nodes/0.BOoI-hsu.js.gz +0 -0
  231. package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.br +0 -2
  232. package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.gz +0 -0
  233. package/build/client/_app/immutable/nodes/2.DBz20KgG.js.br +0 -0
  234. package/build/client/_app/immutable/nodes/2.DBz20KgG.js.gz +0 -0
  235. package/build/client/_app/immutable/nodes/3.19DIoFtw.js +0 -1
  236. package/build/client/_app/immutable/nodes/3.19DIoFtw.js.br +0 -0
  237. package/build/client/_app/immutable/nodes/3.19DIoFtw.js.gz +0 -0
  238. package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.br +0 -0
  239. package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.gz +0 -0
  240. package/build/client/_app/immutable/nodes/5.Dq6obSGG.js +0 -42
  241. package/build/client/_app/immutable/nodes/5.Dq6obSGG.js.br +0 -0
  242. package/build/client/_app/immutable/nodes/5.Dq6obSGG.js.gz +0 -0
  243. package/build/client/_app/immutable/nodes/6.BOHISqs-.js.br +0 -0
  244. package/build/client/_app/immutable/nodes/6.BOHISqs-.js.gz +0 -0
  245. package/build/client/_app/immutable/nodes/7.CemgNJfw.js.br +0 -0
  246. package/build/client/_app/immutable/nodes/7.CemgNJfw.js.gz +0 -0
  247. package/build/client/_app/immutable/nodes/8.DejSfIYh.js +0 -5
  248. package/build/client/_app/immutable/nodes/8.DejSfIYh.js.br +0 -0
  249. package/build/client/_app/immutable/nodes/8.DejSfIYh.js.gz +0 -0
  250. package/build/client/_app/immutable/nodes/9.CMW6a2Lg.js.br +0 -0
  251. package/build/client/_app/immutable/nodes/9.CMW6a2Lg.js.gz +0 -0
  252. package/build/server/chunks/1-DPpKAKXV.js +0 -9
  253. package/build/server/chunks/5-D7OCJpxD.js +0 -9
  254. package/build/server/chunks/5-D7OCJpxD.js.map +0 -1
  255. package/build/server/chunks/8-CVO-E-sf.js +0 -9
  256. package/build/server/chunks/8-CVO-E-sf.js.map +0 -1
  257. package/build/server/chunks/9-DxT1baO5.js +0 -9
  258. package/build/server/chunks/9-DxT1baO5.js.map +0 -1
  259. package/build/server/chunks/ProgressBar-CfhccQ83.js.map +0 -1
  260. package/build/server/chunks/_layout.svelte-BREws55o.js.map +0 -1
  261. package/build/server/chunks/_page.svelte-BqSC-1vK.js.map +0 -1
  262. package/build/server/chunks/_page.svelte-BtI2zZ_Z.js.map +0 -1
  263. package/build/server/chunks/_page.svelte-Zf9H4KOP.js.map +0 -1
  264. package/build/server/chunks/builderModeStore.svelte-ihupr-3p.js.map +0 -1
  265. package/build/server/chunks/client-DfpLcAZ9.js +0 -24
  266. package/build/server/chunks/hooks.server-Rv301GTB.js.map +0 -1
  267. package/build/server/chunks/reconcile-Dv7jS3C8.js.map +0 -1
  268. /package/build/client/_app/immutable/assets/{9.nv0I59TU.css → 11.nv0I59TU.css} +0 -0
  269. /package/build/client/_app/immutable/assets/{9.nv0I59TU.css.br → 11.nv0I59TU.css.br} +0 -0
  270. /package/build/client/_app/immutable/assets/{9.nv0I59TU.css.gz → 11.nv0I59TU.css.gz} +0 -0
@@ -0,0 +1 @@
1
+ .untangler-sky.svelte-dds6m1{z-index:100;pointer-events:none;position:fixed;inset:0;overflow:hidden}.untangler.svelte-dds6m1{--duration:5s;--ease:cubic-bezier(.3, 0, .2, 1);--outline:#0f172a;--shadow:drop-shadow(0 4px 4px #0f172a59);--strand-1:#f43f5e;--strand-2:#f59e0b;--strand-3:#10b981;--strand-4:#0ea5e9;width:260px;height:120px;animation:svelte-dds6m1-untangler-flight var(--duration) var(--ease) forwards;filter:drop-shadow(0 14px 18px #0f172a29);position:absolute;top:26vh;left:-260px}svg.svelte-dds6m1{width:100%;height:auto;overflow:visible}.tangle.svelte-dds6m1,.clean.svelte-dds6m1{fill:none;stroke-linecap:round;stroke-linejoin:round}.tangle.svelte-dds6m1{animation:svelte-dds6m1-tangle-wipe var(--duration) var(--ease) forwards}.clean.svelte-dds6m1{animation:svelte-dds6m1-clean-reveal var(--duration) var(--ease) forwards}.tangle-outline.svelte-dds6m1,.clean-outline.svelte-dds6m1{stroke:var(--outline);stroke-width:11px;filter:var(--shadow)}.tangle-fill.svelte-dds6m1,.clean-fill.svelte-dds6m1{stroke-width:7px}.tangle-fill.svelte-dds6m1>:where(.svelte-dds6m1):first-child,.clean-fill.svelte-dds6m1>:where(.svelte-dds6m1):first-child{stroke:var(--strand-1)}.tangle-fill.svelte-dds6m1>:where(.svelte-dds6m1):nth-child(2),.clean-fill.svelte-dds6m1>:where(.svelte-dds6m1):nth-child(2){stroke:var(--strand-2)}.tangle-fill.svelte-dds6m1>:where(.svelte-dds6m1):nth-child(3),.clean-fill.svelte-dds6m1>:where(.svelte-dds6m1):nth-child(3){stroke:var(--strand-3)}.tangle-fill.svelte-dds6m1>:where(.svelte-dds6m1):nth-child(4),.clean-fill.svelte-dds6m1>:where(.svelte-dds6m1):nth-child(4){stroke:var(--strand-4)}.glint.svelte-dds6m1{fill:#fff;opacity:0;filter:drop-shadow(0 0 6px #ffffffe6);mix-blend-mode:screen;animation:svelte-dds6m1-glint-sweep var(--duration) var(--ease) forwards}@keyframes svelte-dds6m1-untangler-flight{0%{opacity:0;transform:translate(-20vw,28px)rotate(-3deg)scale(.95)}22%,78%{opacity:1;transform:translate(42vw)rotate(0)scale(1)}90%{opacity:1;transform:translate(60vw,-6px)rotate(2deg)scale(1)}to{opacity:0;transform:translate(calc(100vw + 280px),-22px)rotate(6deg)scale(.96)}}@keyframes svelte-dds6m1-tangle-wipe{0%,28%{clip-path:inset(0)}72%,to{clip-path:inset(0 0 0 100%)}}@keyframes svelte-dds6m1-clean-reveal{0%,28%{clip-path:inset(0 100% 0 0)}72%,to{clip-path:inset(0)}}@keyframes svelte-dds6m1-glint-sweep{0%,70%{opacity:0;transform:translate(0)}74%{opacity:1}88%{opacity:1;transform:translate(258px)}94%,to{opacity:0;transform:translate(264px)}}@media (prefers-reduced-motion:reduce){.untangler.svelte-dds6m1{animation:2.6s ease-out forwards svelte-dds6m1-untangler-peek}.tangle.svelte-dds6m1{clip-path:none;animation:2.6s ease-out forwards svelte-dds6m1-tangle-fade}.clean.svelte-dds6m1{clip-path:none;animation:2.6s ease-out forwards svelte-dds6m1-clean-fade}}@keyframes svelte-dds6m1-untangler-peek{0%{opacity:0;transform:translate(38vw,20px)scale(.96)}20%,80%{opacity:1;transform:translate(38vw)scale(.96)}to{opacity:0;transform:translate(38vw,-10px)scale(.96)}}@keyframes svelte-dds6m1-tangle-fade{0%,40%{opacity:1}65%,to{opacity:0}}@keyframes svelte-dds6m1-clean-fade{0%,40%{opacity:0}65%,to{opacity:1}}@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-divide-y-reverse:0;--tw-border-style:solid;--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-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-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:"Inter", ui-sans-serif, system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-800:oklch(47% .157 37.304);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--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-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-teal-100:oklch(95.3% .051 180.801);--color-teal-200:oklch(91% .096 180.426);--color-teal-800:oklch(43.7% .078 188.216);--color-teal-900:oklch(38.6% .063 188.416);--color-cyan-50:oklch(98.4% .019 200.873);--color-cyan-100:oklch(95.6% .045 203.388);--color-cyan-200:oklch(91.7% .08 205.041);--color-cyan-300:oklch(86.5% .127 207.078);--color-cyan-800:oklch(45% .085 224.283);--color-cyan-950:oklch(30.2% .056 229.695);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-100:oklch(95.1% .026 236.824);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-600:oklch(58.8% .158 241.966);--color-sky-700:oklch(50% .134 242.749);--color-sky-800:oklch(44.3% .11 240.79);--color-sky-900:oklch(39.1% .09 240.876);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-800:oklch(39.8% .195 277.366);--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-violet-600:oklch(54.1% .281 293.009);--color-violet-700:oklch(49.1% .27 292.581);--color-violet-800:oklch(43.2% .232 292.759);--color-violet-900:oklch(38% .189 293.745);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-800:oklch(43.8% .218 303.724);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-300:oklch(81% .117 11.638);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-rose-800:oklch(45.5% .188 13.697);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-neutral-50:oklch(98.5% 0 0);--color-neutral-100:oklch(97% 0 0);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-300:oklch(87% 0 0);--color-neutral-400:oklch(70.8% 0 0);--color-neutral-500:oklch(55.6% 0 0);--color-neutral-600:oklch(43.9% 0 0);--color-neutral-700:oklch(37.1% 0 0);--color-neutral-800:oklch(26.9% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-7xl:80rem;--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-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-out:cubic-bezier(0, 0, .2, 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-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);--color-brand-50:#ecfeff;--color-brand-100:#cffafe;--color-brand-200:#a5f3fc;--color-brand-300:#67e8f9;--color-brand-400:#22d3ee;--color-brand-500:#06b6d4;--color-brand-600:#0891b2;--color-brand-700:#0e7490;--color-brand-800:#155e75;--color-brand-900:#164e63;--color-canvas:#f8fafc;--color-brand-pink:#db2777;--color-brand-peach:#ea580c;--color-brand-ochre:#ca8a04;--color-brand-mint:#14b8a6;--color-brand-coral:#dc2626;--color-ink:#0f172a;--color-hairline:#e2e8f0;--font-brand:"Dancing Script", ui-serif, cursive;--font-grotesk:"Space Grotesk", ui-sans-serif, system-ui, sans-serif}}@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,ui-sans-serif, system-ui, 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{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),[role=tab]:not(:disabled),[role=menuitem]:not(:disabled),[role=option]:not(:disabled),summary,select:not(:disabled),input[type=checkbox]:not(:disabled),input[type=radio]:not(:disabled),input[type=file]:not(:disabled),input[type=submit]:not(:disabled),input[type=reset]:not(:disabled),input[type=button]:not(:disabled){cursor:pointer}label:has(input[type=checkbox]:not(:disabled)){cursor:pointer}label:has(input[type=radio]:not(:disabled)){cursor:pointer}}@layer components;@layer utilities{.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:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-12{top:calc(var(--spacing) * 12)}.top-16{top:calc(var(--spacing) * 16)}.top-18{top:calc(var(--spacing) * 18)}.top-20{top:calc(var(--spacing) * 20)}.top-24{top:calc(var(--spacing) * 24)}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.right-5{right:calc(var(--spacing) * 5)}.-bottom-0\.5{bottom:calc(var(--spacing) * -.5)}.-bottom-2{bottom:calc(var(--spacing) * -2)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-5{bottom:calc(var(--spacing) * 5)}.bottom-24{bottom:calc(var(--spacing) * 24)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.isolate{isolation:isolate}.z-1{z-index:1}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-100{z-index:100}.z-1010{z-index:1010}.z-1015{z-index:1015}.col-span-12{grid-column:span 12/span 12}.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-0{margin:calc(var(--spacing) * 0)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.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-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.-mb-px{margin-bottom:-1px}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.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-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-0{margin-left:calc(var(--spacing) * 0)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-5{margin-left:calc(var(--spacing) * 5)}.ml-auto{margin-left:auto}.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}.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-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:calc(var(--spacing) * 1)}.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-5\.5{height:calc(var(--spacing) * 5.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-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-\[76vh\]{height:76vh}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[60vh\]{max-height:60vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[85vh\]{max-height:85vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-20{min-height:calc(var(--spacing) * 20)}.min-h-32{min-height:calc(var(--spacing) * 32)}.min-h-44{min-height:calc(var(--spacing) * 44)}.min-h-52{min-height:calc(var(--spacing) * 52)}.min-h-\[720px\]{min-height:720px}.min-h-\[calc\(100vh-4rem\)\]{min-height:calc(100vh - 4rem)}.min-h-full{min-height:100%}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/5{width:60%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.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-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-\[min\(92vw\,380px\)\]{width:min(92vw,380px)}.w-\[min\(560px\,95vw\)\]{width:min(560px,95vw)}.w-\[min\(960px\,95vw\)\]{width:min(960px,95vw)}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-0{max-width:calc(var(--spacing) * 0)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-56{max-width:calc(var(--spacing) * 56)}.max-w-400{max-width:calc(var(--spacing) * 400)}.max-w-\[1600px\]{max-width:1600px}.max-w-\[1800px\]{max-width:1800px}.max-w-\[calc\(100vw-3rem\)\]{max-width:calc(100vw - 3rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-4{min-width:calc(var(--spacing) * 4)}.min-w-26{min-width:calc(var(--spacing) * 26)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-40{min-width:calc(var(--spacing) * 40)}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-48{min-width:calc(var(--spacing) * 48)}.min-w-55{min-width:calc(var(--spacing) * 55)}.min-w-64{min-width:calc(var(--spacing) * 64)}.min-w-\[10rem\]{min-width:10rem}.flex-1{flex:1}.flex-\[2\]{flex:2}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);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)}.rotate-180{rotate:180deg}.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-grab{cursor:grab}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.scroll-mt-20{scroll-margin-top:calc(var(--spacing) * 20)}.scroll-mt-24{scroll-margin-top:calc(var(--spacing) * 24)}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.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-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.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-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}: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(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * 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-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-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)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-1{column-gap:calc(var(--spacing) * 1)}.gap-x-1\.5{column-gap:calc(var(--spacing) * 1.5)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}: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-emerald-100>:not(:last-child)){border-color:var(--color-emerald-100)}:where(.divide-neutral-100>:not(:last-child)){border-color:var(--color-neutral-100)}:where(.divide-neutral-200>:not(:last-child)){border-color:var(--color-neutral-200)}:where(.divide-slate-100>:not(:last-child)){border-color:var(--color-slate-100)}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.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-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.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-amber-200{border-color:var(--color-amber-200)}.border-amber-300{border-color:var(--color-amber-300)}.border-amber-400{border-color:var(--color-amber-400)}.border-brand-200{border-color:var(--color-brand-200)}.border-brand-300{border-color:var(--color-brand-300)}.border-brand-400{border-color:var(--color-brand-400)}.border-brand-500{border-color:var(--color-brand-500)}.border-brand-500\/50{border-color:#06b6d480}@supports (color:color-mix(in lab, red, red)){.border-brand-500\/50{border-color:color-mix(in oklab, var(--color-brand-500) 50%, transparent)}}.border-brand-600{border-color:var(--color-brand-600)}.border-brand-700{border-color:var(--color-brand-700)}.border-cyan-100{border-color:var(--color-cyan-100)}.border-cyan-200{border-color:var(--color-cyan-200)}.border-emerald-100{border-color:var(--color-emerald-100)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-hairline{border-color:var(--color-hairline)}.border-neutral-100{border-color:var(--color-neutral-100)}.border-neutral-200{border-color:var(--color-neutral-200)}.border-neutral-300{border-color:var(--color-neutral-300)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab, red, red)){.border-rose-500\/30{border-color:color-mix(in oklab, var(--color-rose-500) 30%, transparent)}}.border-sky-200{border-color:var(--color-sky-200)}.border-sky-300{border-color:var(--color-sky-300)}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-300{border-color:var(--color-slate-300)}.border-slate-600{border-color:var(--color-slate-600)}.border-slate-700{border-color:var(--color-slate-700)}.border-slate-700\/60{border-color:#31415899}@supports (color:color-mix(in lab, red, red)){.border-slate-700\/60{border-color:color-mix(in oklab, var(--color-slate-700) 60%, transparent)}}.border-slate-700\/70{border-color:#314158b3}@supports (color:color-mix(in lab, red, red)){.border-slate-700\/70{border-color:color-mix(in oklab, var(--color-slate-700) 70%, transparent)}}.border-slate-800{border-color:var(--color-slate-800)}.border-slate-900{border-color:var(--color-slate-900)}.border-transparent{border-color:#0000}.border-violet-200{border-color:var(--color-violet-200)}.border-violet-300{border-color:var(--color-violet-300)}.border-white{border-color:var(--color-white)}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\/20{border-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.border-white\/70{border-color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.border-white\/70{border-color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-50\/40{background-color:#fffbeb66}@supports (color:color-mix(in lab, red, red)){.bg-amber-50\/40{background-color:color-mix(in oklab, var(--color-amber-50) 40%, transparent)}}.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-100{background-color:var(--color-amber-100)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-600{background-color:var(--color-amber-600)}.bg-brand-50{background-color:var(--color-brand-50)}.bg-brand-50\/40{background-color:#ecfeff66}@supports (color:color-mix(in lab, red, red)){.bg-brand-50\/40{background-color:color-mix(in oklab, var(--color-brand-50) 40%, transparent)}}.bg-brand-50\/60{background-color:#ecfeff99}@supports (color:color-mix(in lab, red, red)){.bg-brand-50\/60{background-color:color-mix(in oklab, var(--color-brand-50) 60%, transparent)}}.bg-brand-100{background-color:var(--color-brand-100)}.bg-brand-500{background-color:var(--color-brand-500)}.bg-brand-500\/10{background-color:#06b6d41a}@supports (color:color-mix(in lab, red, red)){.bg-brand-500\/10{background-color:color-mix(in oklab, var(--color-brand-500) 10%, transparent)}}.bg-brand-600{background-color:var(--color-brand-600)}.bg-brand-700{background-color:var(--color-brand-700)}.bg-brand-800{background-color:var(--color-brand-800)}.bg-canvas\/95{background-color:#f8fafcf2}@supports (color:color-mix(in lab, red, red)){.bg-canvas\/95{background-color:color-mix(in oklab, var(--color-canvas) 95%, transparent)}}.bg-cyan-50{background-color:var(--color-cyan-50)}.bg-cyan-50\/40{background-color:#ecfeff66}@supports (color:color-mix(in lab, red, red)){.bg-cyan-50\/40{background-color:color-mix(in oklab, var(--color-cyan-50) 40%, transparent)}}.bg-cyan-50\/60{background-color:#ecfeff99}@supports (color:color-mix(in lab, red, red)){.bg-cyan-50\/60{background-color:color-mix(in oklab, var(--color-cyan-50) 60%, transparent)}}.bg-cyan-100{background-color:var(--color-cyan-100)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-50\/30{background-color:#ecfdf54d}@supports (color:color-mix(in lab, red, red)){.bg-emerald-50\/30{background-color:color-mix(in oklab, var(--color-emerald-50) 30%, transparent)}}.bg-emerald-50\/50{background-color:#ecfdf580}@supports (color:color-mix(in lab, red, red)){.bg-emerald-50\/50{background-color:color-mix(in oklab, var(--color-emerald-50) 50%, transparent)}}.bg-emerald-50\/70{background-color:#ecfdf5b3}@supports (color:color-mix(in lab, red, red)){.bg-emerald-50\/70{background-color:color-mix(in oklab, var(--color-emerald-50) 70%, transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-600{background-color:var(--color-emerald-600)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-neutral-50{background-color:var(--color-neutral-50)}.bg-neutral-50\/40{background-color:#fafafa66}@supports (color:color-mix(in lab, red, red)){.bg-neutral-50\/40{background-color:color-mix(in oklab, var(--color-neutral-50) 40%, transparent)}}.bg-neutral-50\/50{background-color:#fafafa80}@supports (color:color-mix(in lab, red, red)){.bg-neutral-50\/50{background-color:color-mix(in oklab, var(--color-neutral-50) 50%, transparent)}}.bg-neutral-100{background-color:var(--color-neutral-100)}.bg-neutral-200{background-color:var(--color-neutral-200)}.bg-neutral-900{background-color:var(--color-neutral-900)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab, red, red)){.bg-rose-500\/10{background-color:color-mix(in oklab, var(--color-rose-500) 10%, transparent)}}.bg-rose-500\/15{background-color:#ff235726}@supports (color:color-mix(in lab, red, red)){.bg-rose-500\/15{background-color:color-mix(in oklab, var(--color-rose-500) 15%, transparent)}}.bg-rose-600{background-color:var(--color-rose-600)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-sky-100{background-color:var(--color-sky-100)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-50\/30{background-color:#f8fafc4d}@supports (color:color-mix(in lab, red, red)){.bg-slate-50\/30{background-color:color-mix(in oklab, var(--color-slate-50) 30%, transparent)}}.bg-slate-50\/40{background-color:#f8fafc66}@supports (color:color-mix(in lab, red, red)){.bg-slate-50\/40{background-color:color-mix(in oklab, var(--color-slate-50) 40%, transparent)}}.bg-slate-50\/50{background-color:#f8fafc80}@supports (color:color-mix(in lab, red, red)){.bg-slate-50\/50{background-color:color-mix(in oklab, var(--color-slate-50) 50%, transparent)}}.bg-slate-50\/60{background-color:#f8fafc99}@supports (color:color-mix(in lab, red, red)){.bg-slate-50\/60{background-color:color-mix(in oklab, var(--color-slate-50) 60%, transparent)}}.bg-slate-50\/70{background-color:#f8fafcb3}@supports (color:color-mix(in lab, red, red)){.bg-slate-50\/70{background-color:color-mix(in oklab, var(--color-slate-50) 70%, transparent)}}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-200\/80{background-color:#e2e8f0cc}@supports (color:color-mix(in lab, red, red)){.bg-slate-200\/80{background-color:color-mix(in oklab, var(--color-slate-200) 80%, transparent)}}.bg-slate-300\/70{background-color:#cad5e2b3}@supports (color:color-mix(in lab, red, red)){.bg-slate-300\/70{background-color:color-mix(in oklab, var(--color-slate-300) 70%, transparent)}}.bg-slate-500{background-color:var(--color-slate-500)}.bg-slate-700{background-color:var(--color-slate-700)}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-800\/40{background-color:#1d293d66}@supports (color:color-mix(in lab, red, red)){.bg-slate-800\/40{background-color:color-mix(in oklab, var(--color-slate-800) 40%, transparent)}}.bg-slate-800\/60{background-color:#1d293d99}@supports (color:color-mix(in lab, red, red)){.bg-slate-800\/60{background-color:color-mix(in oklab, var(--color-slate-800) 60%, transparent)}}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-900\/40{background-color:#0f172b66}@supports (color:color-mix(in lab, red, red)){.bg-slate-900\/40{background-color:color-mix(in oklab, var(--color-slate-900) 40%, transparent)}}.bg-slate-900\/60{background-color:#0f172b99}@supports (color:color-mix(in lab, red, red)){.bg-slate-900\/60{background-color:color-mix(in oklab, var(--color-slate-900) 60%, transparent)}}.bg-slate-900\/70{background-color:#0f172bb3}@supports (color:color-mix(in lab, red, red)){.bg-slate-900\/70{background-color:color-mix(in oklab, var(--color-slate-900) 70%, transparent)}}.bg-slate-900\/95{background-color:#0f172bf2}@supports (color:color-mix(in lab, red, red)){.bg-slate-900\/95{background-color:color-mix(in oklab, var(--color-slate-900) 95%, transparent)}}.bg-slate-950{background-color:var(--color-slate-950)}.bg-slate-950\/30{background-color:#0206184d}@supports (color:color-mix(in lab, red, red)){.bg-slate-950\/30{background-color:color-mix(in oklab, var(--color-slate-950) 30%, transparent)}}.bg-slate-950\/40{background-color:#02061866}@supports (color:color-mix(in lab, red, red)){.bg-slate-950\/40{background-color:color-mix(in oklab, var(--color-slate-950) 40%, transparent)}}.bg-slate-950\/55{background-color:#0206188c}@supports (color:color-mix(in lab, red, red)){.bg-slate-950\/55{background-color:color-mix(in oklab, var(--color-slate-950) 55%, transparent)}}.bg-slate-950\/90{background-color:#020618e6}@supports (color:color-mix(in lab, red, red)){.bg-slate-950\/90{background-color:color-mix(in oklab, var(--color-slate-950) 90%, transparent)}}.bg-teal-100{background-color:var(--color-teal-100)}.bg-teal-200{background-color:var(--color-teal-200)}.bg-transparent{background-color:#0000}.bg-violet-50{background-color:var(--color-violet-50)}.bg-violet-50\/40{background-color:#f5f3ff66}@supports (color:color-mix(in lab, red, red)){.bg-violet-50\/40{background-color:color-mix(in oklab, var(--color-violet-50) 40%, transparent)}}.bg-violet-50\/50{background-color:#f5f3ff80}@supports (color:color-mix(in lab, red, red)){.bg-violet-50\/50{background-color:color-mix(in oklab, var(--color-violet-50) 50%, transparent)}}.bg-violet-100{background-color:var(--color-violet-100)}.bg-violet-100\/70{background-color:#ede9feb3}@supports (color:color-mix(in lab, red, red)){.bg-violet-100\/70{background-color:color-mix(in oklab, var(--color-violet-100) 70%, transparent)}}.bg-violet-500\/15{background-color:#8d54ff26}@supports (color:color-mix(in lab, red, red)){.bg-violet-500\/15{background-color:color-mix(in oklab, var(--color-violet-500) 15%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-white\/15{background-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.bg-white\/15{background-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.bg-white\/25{background-color:#ffffff40}@supports (color:color-mix(in lab, red, red)){.bg-white\/25{background-color:color-mix(in oklab, var(--color-white) 25%, transparent)}}.bg-white\/30{background-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.bg-white\/30{background-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.bg-white\/70{background-color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.bg-white\/70{background-color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.bg-white\/80{background-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.bg-white\/88{background-color:#ffffffe0}@supports (color:color-mix(in lab, red, red)){.bg-white\/88{background-color:color-mix(in oklab, var(--color-white) 88%, transparent)}}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-white\/90{background-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.bg-white\/95{background-color:#fffffff2}@supports (color:color-mix(in lab, red, red)){.bg-white\/95{background-color:color-mix(in oklab, var(--color-white) 95%, transparent)}}.bg-linear-to-b{--tw-gradient-position:to bottom}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-b{--tw-gradient-position:to bottom in oklab}}.bg-linear-to-b{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-br{--tw-gradient-position:to bottom right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-br{--tw-gradient-position:to bottom right in oklab}}.bg-linear-to-br{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[linear-gradient\(90deg\,\#6d28d9_0\%\,\#a21caf_55\%\,\#db2777_100\%\)\]{background-image:linear-gradient(90deg,#6d28d9 0%,#a21caf 55%,#db2777 100%)}.bg-\[linear-gradient\(180deg\,\#e6ddfa_0\%\,\#eeeafb_220px\,\#eeeafb_100\%\)\]{background-image:linear-gradient(#e6ddfa 0%,#eeeafb 220px 100%)}.bg-\[linear-gradient\(180deg\,\#f0fdfa_0\%\,\#f8fafc_220px\,\#f8fafc_100\%\)\]{background-image:linear-gradient(#f0fdfa 0%,#f8fafc 220px 100%)}.bg-\[radial-gradient\(120\%_120\%_at_50\%_-10\%\,\#101a33_0\%\,\#020617_55\%\)\]{background-image:radial-gradient(120% 120% at 50% -10%,#101a33 0%,#020617 55%)}.from-amber-400{--tw-gradient-from:var(--color-amber-400);--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-brand-500{--tw-gradient-from:var(--color-brand-500);--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-brand-600{--tw-gradient-from:var(--color-brand-600);--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-emerald-400{--tw-gradient-from:var(--color-emerald-400);--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-red-400{--tw-gradient-from:var(--color-red-400);--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-slate-800\/45{--tw-gradient-from:#1d293d73}@supports (color:color-mix(in lab, red, red)){.from-slate-800\/45{--tw-gradient-from:color-mix(in oklab, var(--color-slate-800) 45%, transparent)}}.from-slate-800\/45{--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-slate-800\/50{--tw-gradient-from:#1d293d80}@supports (color:color-mix(in lab, red, red)){.from-slate-800\/50{--tw-gradient-from:color-mix(in oklab, var(--color-slate-800) 50%, transparent)}}.from-slate-800\/50{--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-slate-800\/70{--tw-gradient-from:#1d293db3}@supports (color:color-mix(in lab, red, red)){.from-slate-800\/70{--tw-gradient-from:color-mix(in oklab, var(--color-slate-800) 70%, transparent)}}.from-slate-800\/70{--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))}.via-brand-coral{--tw-gradient-via:var(--color-brand-coral);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-brand-mint{--tw-gradient-via:var(--color-brand-mint);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-brand-ochre{--tw-gradient-via:var(--color-brand-ochre);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-brand-500{--tw-gradient-to:var(--color-brand-500);--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-brand-800{--tw-gradient-to:var(--color-brand-800);--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-brand-peach{--tw-gradient-to:var(--color-brand-peach);--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-brand-pink{--tw-gradient-to:var(--color-brand-pink);--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-slate-800\/30{--tw-gradient-to:#1d293d4d}@supports (color:color-mix(in lab, red, red)){.to-slate-800\/30{--tw-gradient-to:color-mix(in oklab, var(--color-slate-800) 30%, transparent)}}.to-slate-800\/30{--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-slate-900{--tw-gradient-to:var(--color-slate-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))}.to-violet-400{--tw-gradient-to:var(--color-violet-400);--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))}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.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-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-7{padding-inline:calc(var(--spacing) * 7)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.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-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-24{padding-block:calc(var(--spacing) * 24)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.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-7{padding-top:calc(var(--spacing) * 7)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.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-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pl-1{padding-left:calc(var(--spacing) * 1)}.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-5{padding-left:calc(var(--spacing) * 5)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-px{padding-left:1px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-brand{font-family:var(--font-brand)}.font-grotesk{font-family:var(--font-grotesk)}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.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-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-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.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-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-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.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)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-brand-200{color:var(--color-brand-200)}.text-brand-300{color:var(--color-brand-300)}.text-brand-300\/70{color:#67e8f9b3}@supports (color:color-mix(in lab, red, red)){.text-brand-300\/70{color:color-mix(in oklab, var(--color-brand-300) 70%, transparent)}}.text-brand-400{color:var(--color-brand-400)}.text-brand-600{color:var(--color-brand-600)}.text-brand-700{color:var(--color-brand-700)}.text-brand-800{color:var(--color-brand-800)}.text-brand-900{color:var(--color-brand-900)}.text-cyan-200{color:var(--color-cyan-200)}.text-cyan-800{color:var(--color-cyan-800)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-emerald-900{color:var(--color-emerald-900)}.text-indigo-800{color:var(--color-indigo-800)}.text-ink{color:var(--color-ink)}.text-neutral-100{color:var(--color-neutral-100)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-500{color:var(--color-neutral-500)}.text-neutral-600{color:var(--color-neutral-600)}.text-neutral-700{color:var(--color-neutral-700)}.text-neutral-800{color:var(--color-neutral-800)}.text-neutral-900{color:var(--color-neutral-900)}.text-orange-800{color:var(--color-orange-800)}.text-purple-700{color:var(--color-purple-700)}.text-purple-800{color:var(--color-purple-800)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-red-900{color:var(--color-red-900)}.text-rose-300{color:var(--color-rose-300)}.text-rose-500{color:var(--color-rose-500)}.text-rose-600{color:var(--color-rose-600)}.text-rose-600\/80{color:#e70044cc}@supports (color:color-mix(in lab, red, red)){.text-rose-600\/80{color:color-mix(in oklab, var(--color-rose-600) 80%, transparent)}}.text-rose-700{color:var(--color-rose-700)}.text-sky-600{color:var(--color-sky-600)}.text-sky-700{color:var(--color-sky-700)}.text-sky-800{color:var(--color-sky-800)}.text-sky-900{color:var(--color-sky-900)}.text-slate-100{color:var(--color-slate-100)}.text-slate-200{color:var(--color-slate-200)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-slate-950{color:var(--color-slate-950)}.text-teal-800{color:var(--color-teal-800)}.text-teal-900{color:var(--color-teal-900)}.text-violet-300{color:var(--color-violet-300)}.text-violet-600{color:var(--color-violet-600)}.text-violet-700{color:var(--color-violet-700)}.text-violet-700\/90{color:#7008e7e6}@supports (color:color-mix(in lab, red, red)){.text-violet-700\/90{color:color-mix(in oklab, var(--color-violet-700) 90%, transparent)}}.text-violet-800{color:var(--color-violet-800)}.text-violet-900{color:var(--color-violet-900)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.text-white\/70{color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.text-white\/75{color:#ffffffbf}@supports (color:color-mix(in lab, red, red)){.text-white\/75{color:color-mix(in oklab, var(--color-white) 75%, transparent)}}.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}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-amber-600{accent-color:var(--color-amber-600)}.accent-brand-500{accent-color:var(--color-brand-500)}.accent-brand-700{accent-color:var(--color-brand-700)}.accent-emerald-600{accent-color:var(--color-emerald-600)}.accent-rose-600{accent-color:var(--color-rose-600)}.accent-slate-700{accent-color:var(--color-slate-700)}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.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_4px_8px_-2px_rgba\(15\,23\,42\,0\.08\)\]{--tw-shadow:0 4px 8px -2px var(--tw-shadow-color,#0f172a14);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-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)}.ring,.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)}.ring-2{--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)}.ring-4{--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)}.shadow-black\/20{--tw-shadow-color:#0003}@supports (color:color-mix(in lab, red, red)){.shadow-black\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/30{--tw-shadow-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.shadow-black\/30{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/40{--tw-shadow-color:#0006}@supports (color:color-mix(in lab, red, red)){.shadow-black\/40{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 40%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/50{--tw-shadow-color:#00000080}@supports (color:color-mix(in lab, red, red)){.shadow-black\/50{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 50%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-brand-500\/30{--tw-shadow-color:#06b6d44d}@supports (color:color-mix(in lab, red, red)){.shadow-brand-500\/30{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-brand-500) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-cyan-950\/5{--tw-shadow-color:#0533450d}@supports (color:color-mix(in lab, red, red)){.shadow-cyan-950\/5{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-cyan-950) 5%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-slate-950\/5{--tw-shadow-color:#0206180d}@supports (color:color-mix(in lab, red, red)){.shadow-slate-950\/5{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-slate-950) 5%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-slate-950\/10{--tw-shadow-color:#0206181a}@supports (color:color-mix(in lab, red, red)){.shadow-slate-950\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-slate-950) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-slate-950\/20{--tw-shadow-color:#02061833}@supports (color:color-mix(in lab, red, red)){.shadow-slate-950\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-slate-950) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-slate-950\/30{--tw-shadow-color:#0206184d}@supports (color:color-mix(in lab, red, red)){.shadow-slate-950\/30{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-slate-950) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-black\/10{--tw-ring-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.ring-black\/10{--tw-ring-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.ring-black\/20{--tw-ring-color:#0003}@supports (color:color-mix(in lab, red, red)){.ring-black\/20{--tw-ring-color:color-mix(in oklab, var(--color-black) 20%, transparent)}}.ring-brand-100{--tw-ring-color:var(--color-brand-100)}.ring-brand-200{--tw-ring-color:var(--color-brand-200)}.ring-brand-300{--tw-ring-color:var(--color-brand-300)}.ring-brand-400{--tw-ring-color:var(--color-brand-400)}.ring-hairline{--tw-ring-color:var(--color-hairline)}.ring-slate-200{--tw-ring-color:var(--color-slate-200)}.ring-slate-300{--tw-ring-color:var(--color-slate-300)}.ring-slate-900{--tw-ring-color:var(--color-slate-900)}.ring-slate-950\/10{--tw-ring-color:#0206181a}@supports (color:color-mix(in lab, red, red)){.ring-slate-950\/10{--tw-ring-color:color-mix(in oklab, var(--color-slate-950) 10%, transparent)}}.ring-transparent{--tw-ring-color:transparent}.ring-white{--tw-ring-color:var(--color-white)}.ring-offset-2{--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)}.ring-offset-transparent{--tw-ring-offset-color:transparent}.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{--tw-backdrop-blur:blur(8px);-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-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,)}.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-\[top\,left\,bottom\,right\]{transition-property:top,left,bottom,right;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,background-color\]{transition-property:width,background-color;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-shadow{transition-property:box-shadow;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))}.delay-0{transition-delay:0s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}.group-focus-within\:inline-flex:is(:where(.group):focus-within *){display:inline-flex}.group-focus-within\:opacity-100:is(:where(.group):focus-within *){opacity:1}.group-focus-within\/tagfilter\:ml-1:is(:where(.group\/tagfilter):focus-within *){margin-left:calc(var(--spacing) * 1)}.group-focus-within\/tagfilter\:max-w-24:is(:where(.group\/tagfilter):focus-within *){max-width:calc(var(--spacing) * 24)}.group-focus-within\/tagfilter\:px-2:is(:where(.group\/tagfilter):focus-within *){padding-inline:calc(var(--spacing) * 2)}.group-focus-within\/tagfilter\:opacity-100:is(:where(.group\/tagfilter):focus-within *){opacity:1}.group-focus-within\/tagfilter\:delay-300:is(:where(.group\/tagfilter):focus-within *){transition-delay:.3s}@media (hover:hover){.group-hover\:inline-flex:is(:where(.group):hover *){display:inline-flex}.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:translate-x-1:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:bg-brand-100:is(:where(.group):hover *){background-color:var(--color-brand-100)}.group-hover\:bg-emerald-100:is(:where(.group):hover *){background-color:var(--color-emerald-100)}.group-hover\:bg-slate-300\/80:is(:where(.group):hover *){background-color:#cad5e2cc}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-slate-300\/80:is(:where(.group):hover *){background-color:color-mix(in oklab, var(--color-slate-300) 80%, transparent)}}.group-hover\:text-brand-300:is(:where(.group):hover *){color:var(--color-brand-300)}.group-hover\:text-brand-800:is(:where(.group):hover *){color:var(--color-brand-800)}.group-hover\:text-brand-900:is(:where(.group):hover *){color:var(--color-brand-900)}.group-hover\:text-emerald-800:is(:where(.group):hover *){color:var(--color-emerald-800)}.group-hover\:text-slate-500:is(:where(.group):hover *){color:var(--color-slate-500)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\/chip\:opacity-70:is(:where(.group\/chip):hover *){opacity:.7}.group-hover\/tagfilter\:ml-1:is(:where(.group\/tagfilter):hover *){margin-left:calc(var(--spacing) * 1)}.group-hover\/tagfilter\:max-w-24:is(:where(.group\/tagfilter):hover *){max-width:calc(var(--spacing) * 24)}.group-hover\/tagfilter\:px-2:is(:where(.group\/tagfilter):hover *){padding-inline:calc(var(--spacing) * 2)}.group-hover\/tagfilter\:opacity-100:is(:where(.group\/tagfilter):hover *){opacity:1}.group-hover\/tagfilter\:delay-300:is(:where(.group\/tagfilter):hover *){transition-delay:.3s}}.placeholder\:text-slate-400::placeholder{color:var(--color-slate-400)}.placeholder\:text-slate-500::placeholder{color:var(--color-slate-500)}.backdrop\:bg-slate-950\/40::backdrop{background-color:#02061866}@supports (color:color-mix(in lab, red, red)){.backdrop\:bg-slate-950\/40::backdrop{background-color:color-mix(in oklab, var(--color-slate-950) 40%, transparent)}}.backdrop\:backdrop-blur-sm::backdrop{--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,)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.focus-within\:border-cyan-300:focus-within{border-color:var(--color-cyan-300)}@media (hover:hover){.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-brand-300:hover{border-color:var(--color-brand-300)}.hover\:border-brand-400:hover{border-color:var(--color-brand-400)}.hover\:border-brand-500:hover{border-color:var(--color-brand-500)}.hover\:border-brand-500\/60:hover{border-color:#06b6d499}@supports (color:color-mix(in lab, red, red)){.hover\:border-brand-500\/60:hover{border-color:color-mix(in oklab, var(--color-brand-500) 60%, transparent)}}.hover\:border-cyan-200:hover{border-color:var(--color-cyan-200)}.hover\:border-hairline:hover{border-color:var(--color-hairline)}.hover\:border-slate-300:hover{border-color:var(--color-slate-300)}.hover\:bg-amber-100:hover{background-color:var(--color-amber-100)}.hover\:bg-amber-500:hover{background-color:var(--color-amber-500)}.hover\:bg-brand-50:hover{background-color:var(--color-brand-50)}.hover\:bg-brand-100:hover{background-color:var(--color-brand-100)}.hover\:bg-brand-500:hover{background-color:var(--color-brand-500)}.hover\:bg-brand-500\/20:hover{background-color:#06b6d433}@supports (color:color-mix(in lab, red, red)){.hover\:bg-brand-500\/20:hover{background-color:color-mix(in oklab, var(--color-brand-500) 20%, transparent)}}.hover\:bg-brand-600:hover{background-color:var(--color-brand-600)}.hover\:bg-brand-700:hover{background-color:var(--color-brand-700)}.hover\:bg-brand-800:hover{background-color:var(--color-brand-800)}.hover\:bg-brand-900:hover{background-color:var(--color-brand-900)}.hover\:bg-cyan-50:hover{background-color:var(--color-cyan-50)}.hover\:bg-cyan-50\/20:hover{background-color:#ecfeff33}@supports (color:color-mix(in lab, red, red)){.hover\:bg-cyan-50\/20:hover{background-color:color-mix(in oklab, var(--color-cyan-50) 20%, transparent)}}.hover\:bg-cyan-50\/40:hover{background-color:#ecfeff66}@supports (color:color-mix(in lab, red, red)){.hover\:bg-cyan-50\/40:hover{background-color:color-mix(in oklab, var(--color-cyan-50) 40%, transparent)}}.hover\:bg-emerald-500:hover{background-color:var(--color-emerald-500)}.hover\:bg-neutral-50:hover{background-color:var(--color-neutral-50)}.hover\:bg-neutral-100:hover{background-color:var(--color-neutral-100)}.hover\:bg-neutral-200:hover{background-color:var(--color-neutral-200)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\:bg-rose-50:hover{background-color:var(--color-rose-50)}.hover\:bg-rose-500:hover{background-color:var(--color-rose-500)}.hover\:bg-sky-50:hover{background-color:var(--color-sky-50)}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-slate-200\/60:hover{background-color:#e2e8f099}@supports (color:color-mix(in lab, red, red)){.hover\:bg-slate-200\/60:hover{background-color:color-mix(in oklab, var(--color-slate-200) 60%, transparent)}}.hover\:bg-slate-700:hover{background-color:var(--color-slate-700)}.hover\:bg-slate-800:hover{background-color:var(--color-slate-800)}.hover\:bg-violet-50:hover{background-color:var(--color-violet-50)}.hover\:bg-violet-100:hover{background-color:var(--color-violet-100)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.hover\:bg-white\/25:hover{background-color:#ffffff40}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/25:hover{background-color:color-mix(in oklab, var(--color-white) 25%, transparent)}}.hover\:bg-white\/60:hover{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/60:hover{background-color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.hover\:bg-white\/70:hover{background-color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/70:hover{background-color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.hover\:from-brand-500:hover{--tw-gradient-from:var(--color-brand-500);--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\:to-brand-700:hover{--tw-gradient-to:var(--color-brand-700);--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-brand-200:hover{color:var(--color-brand-200)}.hover\:text-brand-300:hover{color:var(--color-brand-300)}.hover\:text-brand-700:hover{color:var(--color-brand-700)}.hover\:text-brand-800:hover{color:var(--color-brand-800)}.hover\:text-brand-900:hover{color:var(--color-brand-900)}.hover\:text-neutral-700:hover{color:var(--color-neutral-700)}.hover\:text-neutral-900:hover{color:var(--color-neutral-900)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:text-rose-300:hover{color:var(--color-rose-300)}.hover\:text-rose-800:hover{color:var(--color-rose-800)}.hover\:text-slate-200:hover{color:var(--color-slate-200)}.hover\:text-slate-300:hover{color:var(--color-slate-300)}.hover\:text-slate-700:hover{color:var(--color-slate-700)}.hover\:text-slate-800:hover{color:var(--color-slate-800)}.hover\:text-slate-900:hover{color:var(--color-slate-900)}.hover\:text-slate-950:hover{color:var(--color-slate-950)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100\!:hover{opacity:1!important}.hover\:shadow-md:hover{--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)}.hover\:shadow-brand-500\/20:hover{--tw-shadow-color:#06b6d433}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-brand-500\/20:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-brand-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:shadow-cyan-950\/10:hover{--tw-shadow-color:#0533451a}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-cyan-950\/10:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-cyan-950) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:ring-slate-500:hover{--tw-ring-color:var(--color-slate-500)}.hover\:brightness-95:hover{--tw-brightness:brightness(95%);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,)}}.focus\:border-brand-400:focus{border-color:var(--color-brand-400)}.focus\:border-brand-500:focus{border-color:var(--color-brand-500)}.focus\:border-brand-700:focus{border-color:var(--color-brand-700)}.focus\:border-slate-900:focus{border-color:var(--color-slate-900)}.focus\:ring-1:focus{--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\: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-amber-300:focus{--tw-ring-color:var(--color-amber-300)}.focus\:ring-brand-100:focus{--tw-ring-color:var(--color-brand-100)}.focus\:ring-brand-300:focus{--tw-ring-color:var(--color-brand-300)}.focus\:ring-brand-400:focus{--tw-ring-color:var(--color-brand-400)}.focus\:ring-brand-500\/20:focus{--tw-ring-color:#06b6d433}@supports (color:color-mix(in lab, red, red)){.focus\:ring-brand-500\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-brand-500) 20%, transparent)}}.focus\:ring-slate-900:focus{--tw-ring-color:var(--color-slate-900)}.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-none:focus{--tw-outline-style:none;outline-style:none}.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-brand-300:focus-visible{--tw-ring-color:var(--color-brand-300)}.focus-visible\:ring-brand-500\/50:focus-visible{--tw-ring-color:#06b6d480}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-brand-500\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-brand-500) 50%, transparent)}}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:cursor-default:disabled{cursor:default}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:cursor-wait:disabled{cursor:wait}.disabled\:bg-slate-300:disabled{background-color:var(--color-slate-300)}.disabled\:opacity-0:disabled{opacity:0}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-70:disabled{opacity:.7}@media (hover:hover){.group-hover\:disabled\:opacity-30:is(:where(.group):hover *):disabled{opacity:.3}.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}.disabled\:hover\:text-neutral-600:disabled:hover{color:var(--color-neutral-600)}.disabled\:hover\:text-slate-600:disabled:hover{color:var(--color-slate-600)}}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none\!{animation:none!important}.motion-reduce\:opacity-100\!{opacity:1!important}}@media (width>=40rem){.sm\:flex{display:flex}.sm\:inline-block{display:inline-block}.sm\:w-64{width:calc(var(--spacing) * 64)}.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-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}}@media (width>=48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-\[1fr_1\.4fr_auto\]{grid-template-columns:1fr 1.4fr auto}.md\:grid-cols-\[1fr_1\.6fr_auto\]{grid-template-columns:1fr 1.6fr auto}.md\:items-end{align-items:flex-end}}@media (width>=64rem){.lg\:sticky{position:sticky}.lg\:top-32{top:calc(var(--spacing) * 32)}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-9{grid-column:span 9/span 9}.lg\:max-h-\[calc\(100vh-8rem\)\]{max-height:calc(100vh - 8rem)}.lg\:w-12{width:calc(var(--spacing) * 12)}.lg\:w-80{width:calc(var(--spacing) * 80)}.lg\:w-88{width:calc(var(--spacing) * 88)}.lg\:w-\[16rem\]{width:16rem}.lg\:w-\[34rem\]{width:34rem}.lg\:w-\[42rem\]{width:42rem}.lg\:flex-1{flex:1}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1fr\)_320px\]{grid-template-columns:minmax(0,1fr) 320px}.lg\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:items-end{align-items:flex-end}.lg\:items-start{align-items:flex-start}.lg\:justify-between{justify-content:space-between}.lg\:overflow-y-auto{overflow-y:auto}.lg\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.lg\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media (width>=80rem){.xl\:absolute{position:absolute}.xl\:relative{position:relative}.xl\:sticky{position:sticky}.xl\:inset-x-0{inset-inline:calc(var(--spacing) * 0)}.xl\:top-1\/2{top:50%}.xl\:top-8{top:calc(var(--spacing) * 8)}.xl\:top-18{top:calc(var(--spacing) * 18)}.xl\:mx-auto{margin-inline:auto}.xl\:flex{display:flex}.xl\:min-h-\[calc\(100vh-6rem\)\]{min-height:calc(100vh - 6rem)}.xl\:w-104{width:calc(var(--spacing) * 104)}.xl\:w-\[18rem\]{width:18rem}.xl\:max-w-sm{max-width:var(--container-sm)}.xl\:flex-1{flex:1}.xl\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,0\.95fr\)_minmax\(380px\,1\.05fr\)\]{grid-template-columns:minmax(0,.95fr) minmax(380px,1.05fr)}.xl\:flex-col{flex-direction:column}.xl\:self-start{align-self:flex-start}.xl\:overflow-hidden{overflow:hidden}.xl\:rounded-2xl{border-radius:var(--radius-2xl)}.xl\:bg-transparent{background-color:#0000}.xl\:bg-white\/2\.5{background-color:#ffffff06}@supports (color:color-mix(in lab, red, red)){.xl\:bg-white\/2\.5{background-color:color-mix(in oklab, var(--color-white) 2.5%, transparent)}}.xl\:transition-\[top\,transform\]{transition-property:top,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.xl\: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))}.xl\:duration-500{--tw-duration:.5s;transition-duration:.5s}.xl\:ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media (prefers-reduced-motion:reduce){.xl\:motion-reduce\:transition-none{transition-property:none}}}}html,body{font-family:var(--font-sans);color:#0f172a;background:#f8fafc}:root[data-theme=lyriks]{--color-brand-50:#f5f3ff;--color-brand-100:#ede9fe;--color-brand-200:#ddd6fe;--color-brand-300:#c4b5fd;--color-brand-400:#a78bfa;--color-brand-500:#8b5cf6;--color-brand-600:#7c3aed;--color-brand-700:#6d28d9;--color-brand-800:#5b21b6;--color-brand-900:#4c1d95;--font-brand:"Space Grotesk", ui-sans-serif, system-ui, sans-serif;--color-canvas:#eeeafb;--color-surface-soft:#e6dff7;--color-surface-strong:#ddd4f1;--color-hairline:#e0d8f1;--color-slate-50:#f2eefc;--color-slate-100:#e9e3f7;--color-slate-200:#ddd4ee;--color-slate-300:#c7bce0;--color-slate-400:#948ab0;--color-slate-500:#645c7e;--color-slate-600:#4d4669;--color-slate-700:#393353;--color-slate-800:#261e3b;--color-slate-900:#18122f;--color-slate-950:#0d0822;--color-neutral-50:#f2eefc;--color-neutral-100:#e9e3f7;--color-neutral-200:#ddd4ee;--color-neutral-300:#c7bce0;--color-neutral-400:#948ab0;--color-neutral-500:#645c7e;--color-neutral-600:#4d4669;--color-neutral-700:#393353;--color-neutral-800:#261e3b;--color-neutral-900:#18122f;--color-neutral-950:#0d0822;--color-cyan-50:#f5f3ff;--color-cyan-100:#ede9fe;--color-cyan-200:#ddd6fe;--color-cyan-300:#c4b5fd;--color-cyan-400:#a78bfa;--color-cyan-500:#8b5cf6;--color-cyan-600:#7c3aed;--color-cyan-700:#6d28d9;--color-cyan-800:#5b21b6;--color-cyan-900:#4c1d95;--color-cyan-950:#2e1065;--color-sky-50:#f5f3ff;--color-sky-100:#ede9fe;--color-sky-200:#ddd6fe;--color-sky-300:#c4b5fd;--color-sky-400:#a78bfa;--color-sky-500:#8b5cf6;--color-sky-600:#7c3aed;--color-sky-700:#6d28d9;--color-sky-800:#5b21b6;--color-sky-900:#4c1d95;--color-sky-950:#2e1065;--color-teal-50:#f5f3ff;--color-teal-100:#ede9fe;--color-teal-200:#ddd6fe;--color-teal-300:#c4b5fd;--color-teal-400:#a78bfa;--color-teal-500:#8b5cf6;--color-teal-600:#7c3aed;--color-teal-700:#6d28d9;--color-teal-800:#5b21b6;--color-teal-900:#4c1d95;--color-teal-950:#2e1065}:root[data-theme=lyriks],:root[data-theme=lyriks] body{background:var(--color-canvas)}@keyframes focus-flash-lyriks{0%{background-color:#ede9fe99;box-shadow:0 0 #7c3aed80}60%{background-color:#ede9fe40;box-shadow:0 0 0 8px #7c3aed00}to{background-color:#0000;box-shadow:0 0 #7c3aed00}}:root[data-theme=lyriks] .focus-flash{animation-name:focus-flash-lyriks}:root[data-theme=lyriks] .bg-slate-900,:root[data-theme=lyriks] .bg-slate-950,:root[data-theme=lyriks] .bg-neutral-900,:root[data-theme=lyriks] .bg-neutral-950{background-color:var(--color-brand-600)}:root[data-theme=lyriks] .bg-slate-800{background-color:var(--color-brand-700)}:root[data-theme=lyriks] .border-slate-900{border-color:var(--color-brand-600)}:root[data-theme=lyriks] .hover\:bg-slate-900:hover,:root[data-theme=lyriks] .hover\:bg-slate-800:hover{background-color:var(--color-brand-700)}:root[data-theme=lyriks] .hover\:bg-slate-700:hover{background-color:var(--color-brand-600)}:root[data-theme=lyriks] .via-brand-mint{background-image:linear-gradient(90deg,#6d28d9,#a21caf,#db2777)}.mono{font-family:var(--font-mono)}@keyframes focus-flash{0%{background-color:#cffafe8c;box-shadow:0 0 #0891b280}60%{background-color:#cffafe40;box-shadow:0 0 0 8px #0891b200}to{background-color:#0000;box-shadow:0 0 #7c3aed00}}.focus-flash{border-radius:.5rem;animation:1.6s ease-out focus-flash}@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-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@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-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-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
@@ -0,0 +1 @@
1
+ .graph-canvas.svelte-1wx4hks{background:radial-gradient(circle at 50% 45%,#22d3ee1f,#0000 34rem),radial-gradient(circle at 15% 20%,#0e749014,#0000 22rem),linear-gradient(#f8fafc,#eef6fb)}.graph-canvas.svelte-1wx4hks:before{pointer-events:none;content:"";background-image:linear-gradient(#0f172a0b 1px,#0000 1px),linear-gradient(90deg,#0f172a0b 1px,#0000 1px);background-size:28px 28px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle,#000 0 55%,#0000 100%);mask-image:radial-gradient(circle,#000 0 55%,#0000 100%)}
@@ -0,0 +1 @@
1
+ import{$ as e,et as t,tt as n,z as r}from"./BPl9BITm.js";import{dt as i,i as a,t as o}from"./Bp2_Vghh.js";import{r as s}from"./Bp8HpEPe2.js";var c=new class{#e=n(!1);get loading(){return r(this.#e)}set loading(e){t(this.#e,e,!0)}#t=n(!1);get refreshing(){return r(this.#t)}set refreshing(e){t(this.#t,e,!0)}#n=n(null);get status(){return r(this.#n)}set status(e){t(this.#n,e,!0)}#r=n(null);get error(){return r(this.#r)}set error(e){t(this.#r,e,!0)}#i=n(null);get lastFetchedAt(){return r(this.#i)}set lastFetchedAt(e){t(this.#i,e,!0)}#a=n(null);get lastUpdateSignalAt(){return r(this.#a)}set lastUpdateSignalAt(e){t(this.#a,e,!0)}currentId=null;client=null;clientUnsubscribe=null;async load(e){this.currentId=e,this.error=null,this.loading=!0;try{await this.fetchOnce(e),this.subscribeRoom(e)}finally{this.loading=!1}}async refresh(){if(!(!this.currentId||this.refreshing)){this.refreshing=!0,this.error=null;try{await this.fetchOnce(this.currentId)}finally{this.refreshing=!1}}}reset(){this.clientUnsubscribe&&=(this.clientUnsubscribe(),null),this.client=null,this.currentId=null,this.status=null,this.error=null,this.loading=!1,this.refreshing=!1,this.lastFetchedAt=null,this.lastUpdateSignalAt=null}async fetchOnce(e){try{let t=await i(`/api/snapshots/${e}/implementation-status`);if(!t.ok){this.status=null;return}let n=await t.json();this.status=n??null,this.lastFetchedAt=new Date().toISOString()}catch(e){this.error=e.message}}subscribeRoom(e){this.clientUnsubscribe&&=(this.clientUnsubscribe(),null);let t=s(`implementation-status`,e);this.client=t,this.clientUnsubscribe=t.observe((t,n)=>{this.currentId===e&&n!==`local`&&(this.lastUpdateSignalAt=new Date().toISOString(),this.status=t,this.lastFetchedAt=this.lastUpdateSignalAt)})}},l=new class{#e=n(!1);get loading(){return r(this.#e)}set loading(e){t(this.#e,e,!0)}#t=n(null);get project(){return r(this.#t)}set project(e){t(this.#t,e,!0)}#n=n(e([]));get siblings(){return r(this.#n)}set siblings(e){t(this.#n,e,!0)}#r=n(null);get error(){return r(this.#r)}set error(e){t(this.#r,e,!0)}currentFeatureId=null;async load(e){this.currentFeatureId=e,this.loading=!0,this.error=null;try{let t=await o(),n=await t.useCases.findProjectContainingFeature(e);if(this.currentFeatureId!==e)return;if(this.project=n,!n){this.siblings=[];return}let r=n.featureIds.filter(t=>t!==e),i=[];for(let n of r){let r=await t.useCases.getFeature(n);if(this.currentFeatureId!==e)return;r&&i.push(r)}this.siblings=i}catch(e){this.error=e.message}finally{this.currentFeatureId===e&&(this.loading=!1)}}reset(){this.currentFeatureId=null,this.project=null,this.siblings=[],this.error=null,this.loading=!1}get isInProject(){return this.project!==null}isActionQueued(e,t){let n=this.project?.implementationQueue??[],r=`action:${String(e)}:${String(t)}`;return n.some(e=>a(e)===r)}isSurfaceQueued(e,t){let n=this.project?.implementationQueue??[],r=`surface:${String(e)}:${String(t)}`;return n.some(e=>a(e)===r)}async enqueueAction(e,t){let n=this.project;if(!n)return!1;try{let r=await(await o()).useCases.enqueueQueueItem(n.id,{kind:`action`,featureId:e,actionId:t});return this.project=r.project,!0}catch(e){return this.error=e.message,!1}}async enqueueSurface(e,t){let n=this.project;if(!n)return!1;try{let r=await(await o()).useCases.enqueueQueueItem(n.id,{kind:`surface`,featureId:e,surfaceId:t});return this.project=r.project,!0}catch(e){return this.error=e.message,!1}}async dequeueByItemId(e){let t=this.project;if(t)try{let n=await(await o()).useCases.dequeueQueueItem(t.id,e);this.project=n}catch(e){this.error=e.message}}findQueueItemIdForAction(e,t){let n=this.project?.implementationQueue??[],r=`action:${String(e)}:${String(t)}`,i=n.find(e=>a(e)===r);return i?i.id:null}findQueueItemIdForSurface(e,t){let n=this.project?.implementationQueue??[],r=`surface:${String(e)}:${String(t)}`,i=n.find(e=>a(e)===r);return i?i.id:null}};export{c as n,l as t};
@@ -0,0 +1 @@
1
+ import"./BPl9BITm.js";import{a as e,o as t,s as n}from"./OJscNS3T.js";var r={get data(){return n.data},get error(){return n.error},get form(){return n.form},get params(){return n.params},get route(){return n.route},get state(){return n.state},get status(){return n.status},get url(){return n.url}};Object.defineProperty({get from(){return t.current?t.current.from:null},get to(){return t.current?t.current.to:null},get type(){return t.current?t.current.type:null},get willUnload(){return t.current?t.current.willUnload:null},get delta(){return t.current?t.current.delta:null},get complete(){return t.current?t.current.complete:null}},"current",{get(){throw Error(`Replace navigating.current.<prop> with navigating.<prop>`)}}),e.updated.check;var i=r;export{i as t};
@@ -0,0 +1 @@
1
+ import"./OJscNS3T.js";
@@ -0,0 +1,2 @@
1
+
2
+ �import"./OJscNS3T.js";
@@ -1 +1 @@
1
- import{A as e,E as t,F as n,G as r,I as i,L as a,N as o,Q as s,R as c,V as l,W as u,X as d,Y as f,Z as p,a as m,c as h,ct as g,et as _,j as v,k as y,l as b,lt as x,m as S,mt as C,n as w,p as T,r as E,rt as D,s as O,tt as k,u as A,z as j}from"./BPl9BITm.js";import{t as M}from"./DatGSObE.js";import"./xihTtKlq.js";import{at as N,gt as P,it as ee,lt as F,mt as te,pt as ne,st as re,t as I,vt as ie}from"./Bp2_Vghh.js";import{t as ae}from"./BOrLmFwJ.js";import"./DHoA038D.js";import{t as L}from"./cMamJTsF.js";import{t as R}from"./BfMYiIUi.js";import{t as oe}from"./D8YEa1po.js";import{t as se}from"./DKgYpi6_.js";import{t as z}from"./D9dKmajw.js";import{t as ce}from"./Dhqg7r_2.js";import{a as le,i as ue,r as de,s as fe}from"./HKLi1Yz3.js";import{t as pe}from"./N7PXjlRH.js";import{t as me}from"./D6jhrpTg.js";var B=o(`<a class="block"><p class="line-clamp-3 text-sm leading-6 text-slate-600"> </p></a>`),V=o(`<p class="text-sm leading-6 text-slate-500">No description yet. Add a note so collaborators know what belongs here.</p>`),he=o(`<article data-tour="project-card" class="group relative flex h-full min-h-52 flex-col justify-between overflow-hidden rounded-xl border border-cyan-100 bg-white p-5 shadow-sm shadow-cyan-950/5 transition duration-150 hover:-translate-y-0.5 hover:border-cyan-200 hover:bg-cyan-50/20 hover:shadow-md hover:shadow-cyan-950/10 focus-within:border-cyan-300"><div class="absolute inset-x-0 top-0 h-1 bg-gradient-to-r from-brand-500 via-brand-mint to-violet-400"></div> <div class="space-y-3"><div class="flex items-start justify-between gap-3"><a class="block min-w-0 flex-1"><h3 class="truncate text-base font-semibold text-slate-950 group-hover:text-brand-800"> </h3></a> <span class="shrink-0 rounded-md border border-cyan-100 bg-cyan-50 px-2 py-0.5 text-xs font-medium text-brand-800" title="Features in project"> </span></div> <!></div> <div class="mt-5 flex items-end justify-between gap-3 border-t border-hairline pt-3 text-xs text-slate-500"><div class="min-w-0 flex-1 space-y-2"><!> <span class="block truncate"> </span></div> <div class="flex shrink-0 items-center gap-1"><button type="button" class="rounded px-2 py-1 text-slate-400 opacity-0 transition group-hover:opacity-100 group-focus-within:opacity-100 hover:bg-red-50 hover:text-red-600"> </button></div></div></article>`);function ge(t,n){x(n,!0);let r=m(n,`tagTypeOptions`,19,()=>[]),i=m(n,`deleteLabel`,3,`Delete`);function o(){R.openProject(String(n.summary.id))}var c=he(),l=s(d(c),2),f=d(l),p=d(f),h=d(p),_=d(h,!0);C(h),C(p);var b=s(p,2),S=d(b);C(b),C(f);var w=s(f,2),T=t=>{var r=B(),i=d(r),s=d(i,!0);C(i),C(r),u(()=>{A(r,`href`,`/projects/${n.summary.id}`),e(s,n.summary.description)}),a(`click`,r,o),v(t,r)},E=e=>{v(e,V())};y(w,e=>{n.summary.description?e(T):e(E,-1)}),C(l);var D=s(l,2),O=d(D),k=d(O);z(k,{get tags(){return n.summary.tags},get onAddTag(){return n.onAddTag},get onRemoveTag(){return n.onRemoveTag},get typeOptions(){return r()}});var j=s(k,2),M=d(j);C(j),C(O);var N=s(O,2),P=d(N),ee=d(P,!0);C(P),C(N),C(D),C(c),u(t=>{A(p,`href`,`/projects/${n.summary.id}`),e(_,n.summary.name),e(S,`${n.summary.featureCount??``} feature${n.summary.featureCount===1?``:`s`}`),e(M,`Updated ${t??``}`),e(ee,i())},[()=>new Date(n.summary.updatedAt).toLocaleDateString()]),a(`click`,p,o),a(`click`,P,function(...e){n.onDelete?.apply(this,e)}),v(t,c),g()}i([`click`]);var _e=o(`<form data-tour="new-project-form" class="grid gap-3 rounded-xl border border-cyan-100 bg-cyan-50/40 p-4 md:grid-cols-[1fr_1.6fr_auto] md:items-end"><div><label for="proj-name" class="mb-1.5 block text-xs font-medium text-slate-700">Project name</label> <input id="proj-name" type="text" placeholder="e.g. Acme Platform" class="h-10 w-full rounded-md border border-cyan-100 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100" required=""/></div> <div><label for="proj-desc" class="mb-1.5 block text-xs font-medium text-slate-700">Description</label> <input id="proj-desc" data-tour="new-project-description" type="text" placeholder="What product or initiative does this group?" class="h-10 w-full rounded-md border border-cyan-100 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100" required=""/></div> <button type="submit" class="h-10 rounded-md bg-brand-800 px-4 text-sm font-medium text-white hover:bg-brand-900 disabled:cursor-not-allowed disabled:opacity-50"> </button></form>`);function ve(t,n){x(n,!0);let i=k(``),a=k(``),o=k(!1),f=k(null),p=D(()=>ce(L.currentStep,`new-project`,j(i)));r(()=>{j(f)&&l().then(()=>j(f)?.focus())});async function m(e){if(e.preventDefault(),!j(o)&&j(i).trim().length!==0&&j(a).trim().length!==0){_(o,!0);try{await n.onSubmit(j(i).trim(),j(a).trim()),_(i,``),_(a,``)}finally{_(o,!1)}}}var y=_e(),S=d(y),w=s(d(S),2);b(w),O(w,e=>_(f,e),()=>j(f)),C(S);var T=s(S,2),E=s(d(T),2);b(E),C(T);var M=s(T,2),N=d(M,!0);C(M),C(y),u(t=>{A(M,`title`,j(p).blocked?`Tutorial: name must be exactly "${j(p).requiredValue}"`:void 0),M.disabled=t,e(N,j(o)?`Creating...`:`New project`)},[()=>j(o)||j(i).trim().length===0||j(a).trim().length===0||j(p).blocked]),c(`submit`,y,m),h(w,()=>j(i),e=>_(i,e)),h(E,()=>j(a),e=>_(a,e)),v(t,y),g()}var ye=o(`<button type="button" class="h-8 rounded-md px-2 text-xs font-medium text-slate-500 hover:bg-slate-50 hover:text-slate-900">Clear</button>`),be=o(`<div class="rounded-lg border border-dashed border-hairline bg-white p-8 text-center text-sm text-slate-500">Loading projects...</div>`),xe=o(`<div class="rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700"> </div>`),Se=o(`<div class="space-y-3"><p>No projects yet.</p> <button type="button" class="rounded-md bg-slate-900 px-4 py-2 text-sm font-medium text-white">Create first project</button></div>`),Ce=o(`<div class="rounded-lg border border-dashed border-hairline bg-white p-8 text-center text-sm text-slate-500"><!></div>`),we=o(`<li><!></li>`),Te=o(`<ul class="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3"></ul>`),Ee=o(`<div class="fixed inset-0 z-40 flex items-start justify-center bg-slate-950/30 px-4 py-24 backdrop-blur-sm" role="presentation"><div class="w-full max-w-3xl rounded-xl border border-hairline bg-white shadow-xl" role="dialog" aria-modal="true" aria-labelledby="new-project-title"><header class="flex items-start justify-between gap-4 border-b border-hairline px-5 py-4"><div><h2 id="new-project-title" class="text-base font-semibold text-slate-950">New project</h2> <p class="mt-1 text-sm text-slate-500">Create a project for related behavior models.</p></div> <button type="button" class="rounded-md px-2 py-1 text-sm text-slate-500 hover:bg-slate-100 hover:text-slate-900" aria-label="Close">x</button></header> <div class="p-5"><!></div></div></div>`),De=o(`<div class="mx-auto max-w-7xl px-4 py-8 sm:px-6"><header class="mb-6 border-b border-slate-200 pb-6"><div class="flex items-center justify-between gap-3"><p class="text-xs font-semibold uppercase tracking-wide text-brand-700">Home</p> <button type="button" class="inline-flex items-center gap-1.5 rounded-md border border-slate-300 bg-white px-3 py-1.5 text-xs font-medium text-slate-700 transition hover:border-brand-300 hover:bg-cyan-50 hover:text-brand-800 disabled:opacity-50" title="Restore a project from a .unspa file"><span aria-hidden="true">&#x2B06;</span> </button> <input type="file" accept=".unspa,application/octet-stream,application/json" class="hidden"/></div> <div class="mt-2 max-w-3xl"><h1 class="text-4xl font-semibold tracking-tight text-slate-950">Projects</h1> <p class="mt-2 max-w-2xl text-sm leading-6 text-slate-600">Group related behavior models and inspect their resources, data, events, and transitions together.</p></div> <div class="mt-6 flex flex-col gap-3 rounded-xl border border-slate-200 bg-white p-3 shadow-sm shadow-slate-950/5 lg:flex-row lg:items-center lg:justify-between"><div class="flex min-w-0 items-center rounded-lg border border-hairline bg-white p-1 lg:flex-1"><label for="project-search" class="sr-only">Search projects</label> <input id="project-search" type="search" placeholder="Search projects..." class="h-9 w-full min-w-0 rounded-md border-0 bg-transparent px-3 text-sm outline-none placeholder:text-slate-400"/> <!></div> <div class="flex flex-col gap-2 sm:flex-row sm:items-center"><!> <label class="flex h-10 items-center gap-2 rounded-lg border border-hairline bg-white px-3 text-sm text-slate-600"><span class="text-xs font-medium">Sort</span> <select class="bg-transparent text-sm font-medium text-slate-800 outline-none"><option>Updated</option><option>Name</option><option>Features</option></select></label> <button type="button" data-tour="new-project-button" class="inline-flex h-10 items-center justify-center gap-2 rounded-md bg-slate-900 px-4 text-sm font-medium text-white hover:bg-slate-800"><span class="text-base leading-none" aria-hidden="true">+</span> New project</button></div></div></header> <section aria-labelledby="projects-list-title"><div class="mb-3 flex flex-col gap-1 sm:flex-row sm:items-end sm:justify-between"><div><h2 id="projects-list-title" class="text-base font-semibold text-slate-950">Your projects</h2> <p class="text-sm text-slate-500">Open a project to inspect the features it groups.</p></div> <p class="text-xs text-slate-500"> </p></div> <!></section></div> <!> <!>`,1);function Oe(i,o){x(o,!0);let l=null,m=k(`all`),h=k(!1),A=k(!1),L=k(`updated`);E(()=>{R.refresh(),oe.refresh(),l=ae(e=>{(e.kind===`project`||e.kind===`feature`)&&R.refreshSilent()})}),w(()=>{l?.(),l=null});function z(e){let t=[...e.tags??[]];return e.customTag?.trim()&&t.push({type:e.customTagType?.trim()||`Tag`,value:e.customTag.trim()}),t}async function ce(e,t){await M(`/projects/${await R.create(e,t)}`)}let B=k(!1),V=k(null);function he(){j(B)||j(V)?.click()}async function _e(e){let t=e.target,n=t.files?.[0];if(t.value=``,n){_(B,!0);try{let e=await ue(n),t=await ie({title:`Import .unspa file`,message:`Enter the passphrase used when "${n.name}" was exported. A wrong passphrase will not corrupt anything — the file just stays encrypted.`,inputLabel:`Passphrase`,password:!0,confirmLabel:`Import`,tone:`info`});if(t===null)return;let r=await de(e,t);await R.refreshSilent(),await ne({title:`Import complete`,message:`Restored project with ${r.featuresImported} feature(s) and ${r.statusesImported} implementation-status sidecar(s).`,tone:`success`}),await M(`/projects/${r.projectId}`)}catch(e){await ne({title:`Import failed`,message:e instanceof le?`That file is not a valid .unspa bundle: ${e.message}`:e instanceof fe?e.message:`Import failed: ${e.message}`,tone:`danger`})}finally{_(B,!1)}}}async function Oe(e){R.stagePendingDelete(e);let t=R.summaries.find(t=>String(t.id)===String(e))?.name??`this project`,n=await I(),r=((await n.useCases.getProject(e))?.featureIds??[]).map(String),i=[];if(r.length===0){if(!await P({title:`Delete "${t}"?`,message:`This project has no linked features. Removing it cannot be undone.`,confirmLabel:`Delete project`,tone:`danger`})){R.clearPendingDelete();return}}else{let e=await Promise.all(r.map(async e=>({id:e,label:(await n.useCases.getFeatureCard(e))?.name??e,defaultChecked:!0}))),a=await te({title:`Delete "${t}"?`,message:`This project links to ${r.length} feature${r.length===1?``:`s`}. Tick the ones you want to delete in the same batch. Anything left unchecked stays available as an unassigned feature.`,items:e,confirmLabel:`Delete project + selected`,cancelLabel:`Cancel`,tone:`danger`});if(!a.confirmed){R.clearPendingDelete();return}i=a.selectedIds}for(let e of i)await n.useCases.deleteFeature(e);await R.remove(e),i.length>0&&await se.refreshSilent()}function ke(e){e.key===`Escape`&&_(h,!1)}let H=D(()=>(R.search.trim().length===0?[...R.summaries]:R.summaries.filter(e=>{let t=R.search.toLowerCase();return e.name.toLowerCase().includes(t)||(e.description??``).toLowerCase().includes(t)})).filter(e=>Ae(e,j(m))).sort((e,t)=>j(L)===`name`?e.name.localeCompare(t.name):j(L)===`count`?t.featureCount-e.featureCount:new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()));function Ae(e,t){let n=z(e);if(t===`all`)return!0;if(t===`untagged`)return n.length===0;let r=F(t);return n.some(e=>F(e)===r)}let U=D(()=>{let e=[];for(let t of R.summaries)for(let n of z(t))e.push(n);return e});r(()=>{oe.registerTypes(j(U).map(e=>e.type))});let je=D(()=>[...new Set(j(U).map(e=>N(e.type)))].sort((e,t)=>e.localeCompare(t)));function Me(e){return R.summaries.filter(t=>Ae(t,e)).length}async function Ne(e,t,n){let r=await I(),i=await r.useCases.getProject(e);i&&(await r.useCases.saveProject({...i,tags:ee(z(i),{type:t,value:n})}),await R.refreshSilent())}async function Pe(e,t,n){let r=await I(),i=await r.useCases.getProject(e);if(!i)return;let a=re(z(i),{type:t,value:n});await r.useCases.saveProject({...i,tags:a,customTagType:void 0,customTag:void 0}),j(m)!==`all`&&j(m)!==`untagged`&&F(j(m))===F({type:t,value:n})&&_(m,`all`),await R.refreshSilent()}var Fe=De();c(`keydown`,f,ke);var W=p(Fe),G=d(W),K=d(G),q=s(d(K),2),Ie=s(d(q));C(q);var Le=s(q,2);O(Le,e=>_(V,e),()=>j(V)),C(K);var Re=s(K,4),J=d(Re),Y=s(d(J),2);b(Y);var ze=s(Y,2),Be=e=>{var t=ye();a(`click`,t,()=>R.setSearch(``)),v(e,t)},Ve=D(()=>R.search.trim().length>0);y(ze,e=>{j(Ve)&&e(Be)}),C(J);var He=s(J,2),Ue=d(He);pe(Ue,{get tags(){return j(U)},get value(){return j(m)},onChange:e=>_(m,e,!0),onManage:()=>_(A,!0),countLabel:Me});var X=s(Ue,2),Z=s(d(X),2),Q=d(Z);Q.value=Q.__value=`updated`;var $=s(Q);$.value=$.__value=`name`;var We=s($);We.value=We.__value=`count`,C(Z),C(X);var Ge=s(X,2);C(He),C(Re),C(G);var Ke=s(G,2),qe=d(Ke),Je=s(d(qe),2),Ye=d(Je);C(Je),C(qe);var Xe=s(qe,2),Ze=e=>{v(e,be())},Qe=t=>{var n=xe(),r=d(n,!0);C(n),u(()=>e(r,R.error)),v(t,n)},$e=e=>{var t=Ce(),r=d(t),i=e=>{var t=Se(),n=s(d(t),2);C(t),a(`click`,n,()=>_(h,!0)),v(e,t)},o=e=>{v(e,n(`No projects match your search.`))};y(r,e=>{R.summaries.length===0?e(i):e(o,-1)}),C(t),v(e,t)},et=e=>{var n=Te();t(n,21,()=>j(H),e=>e.id,(e,t)=>{var n=we();ge(d(n),{get summary(){return j(t)},get tagTypeOptions(){return j(je)},onAddTag:(e,n)=>Ne(j(t).id,e,n),onRemoveTag:(e,n)=>Pe(j(t).id,e,n),onDelete:()=>Oe(j(t).id)}),C(n),v(e,n)}),C(n),v(e,n)};y(Xe,e=>{R.loading?e(Ze):R.error?e(Qe,1):j(H).length===0?e($e,2):e(et,-1)}),C(Ke),C(W);var tt=s(W,2),nt=e=>{var t=Ee(),n=d(t),r=d(n),i=s(d(r),2);C(r);var o=s(r,2);ve(d(o),{onSubmit:ce}),C(o),C(n),C(t),a(`click`,t,e=>{e.currentTarget===e.target&&_(h,!1)}),a(`click`,i,()=>_(h,!1)),v(e,t)};y(tt,e=>{j(h)&&e(nt)}),me(s(tt,2),{get open(){return j(A)},get tags(){return j(U)},onClose:()=>_(A,!1),onRenamed:()=>R.refreshSilent()}),u(()=>{q.disabled=j(B),e(Ie,` ${j(B)?`Importing...`:`Import .unspa`}`),T(Y,R.search),e(Ye,`${j(H).length??``} shown`)}),a(`click`,q,he),a(`change`,Le,_e),a(`input`,Y,e=>R.setSearch(e.target.value)),S(Z,()=>j(L),e=>_(L,e)),a(`click`,Ge,()=>_(h,!0)),v(i,Fe),g()}i([`click`,`change`,`input`]);export{Oe as t};
1
+ import{A as e,E as t,F as n,G as r,I as i,L as a,N as o,Q as s,R as c,V as l,W as u,X as d,Y as f,Z as p,a as m,c as h,ct as g,et as _,j as v,k as y,l as b,lt as x,m as S,mt as C,n as w,p as T,r as E,rt as D,s as O,tt as k,u as A,z as j}from"./BPl9BITm.js";import{n as M}from"./OJscNS3T.js";import"./xihTtKlq.js";import{at as N,gt as P,it as ee,lt as F,mt as te,pt as ne,st as re,t as I,vt as ie}from"./Bp2_Vghh.js";import{t as ae}from"./BOrLmFwJ.js";import"./BCEY79Dw.js";import{t as L}from"./cMamJTsF.js";import{t as R}from"./BfMYiIUi.js";import{t as oe}from"./D8YEa1po.js";import{t as se}from"./DKgYpi6_.js";import{t as z}from"./D9dKmajw.js";import{t as ce}from"./Dhqg7r_2.js";import{a as le,i as ue,r as de,s as fe}from"./HKLi1Yz3.js";import{t as pe}from"./N7PXjlRH.js";import{t as me}from"./D6jhrpTg.js";var B=o(`<a class="block"><p class="line-clamp-3 text-sm leading-6 text-slate-600"> </p></a>`),V=o(`<p class="text-sm leading-6 text-slate-500">No description yet. Add a note so collaborators know what belongs here.</p>`),he=o(`<article data-tour="project-card" class="group relative flex h-full min-h-52 flex-col justify-between overflow-hidden rounded-xl border border-cyan-100 bg-white p-5 shadow-sm shadow-cyan-950/5 transition duration-150 hover:-translate-y-0.5 hover:border-cyan-200 hover:bg-cyan-50/20 hover:shadow-md hover:shadow-cyan-950/10 focus-within:border-cyan-300"><div class="absolute inset-x-0 top-0 h-1 bg-gradient-to-r from-brand-500 via-brand-mint to-violet-400"></div> <div class="space-y-3"><div class="flex items-start justify-between gap-3"><a class="block min-w-0 flex-1"><h3 class="truncate text-base font-semibold text-slate-950 group-hover:text-brand-800"> </h3></a> <span class="shrink-0 rounded-md border border-cyan-100 bg-cyan-50 px-2 py-0.5 text-xs font-medium text-brand-800" title="Features in project"> </span></div> <!></div> <div class="mt-5 flex items-end justify-between gap-3 border-t border-hairline pt-3 text-xs text-slate-500"><div class="min-w-0 flex-1 space-y-2"><!> <span class="block truncate"> </span></div> <div class="flex shrink-0 items-center gap-1"><button type="button" class="rounded px-2 py-1 text-slate-400 opacity-0 transition group-hover:opacity-100 group-focus-within:opacity-100 hover:bg-red-50 hover:text-red-600"> </button></div></div></article>`);function ge(t,n){x(n,!0);let r=m(n,`tagTypeOptions`,19,()=>[]),i=m(n,`deleteLabel`,3,`Delete`);function o(){R.openProject(String(n.summary.id))}var c=he(),l=s(d(c),2),f=d(l),p=d(f),h=d(p),_=d(h,!0);C(h),C(p);var b=s(p,2),S=d(b);C(b),C(f);var w=s(f,2),T=t=>{var r=B(),i=d(r),s=d(i,!0);C(i),C(r),u(()=>{A(r,`href`,`/projects/${n.summary.id}`),e(s,n.summary.description)}),a(`click`,r,o),v(t,r)},E=e=>{v(e,V())};y(w,e=>{n.summary.description?e(T):e(E,-1)}),C(l);var D=s(l,2),O=d(D),k=d(O);z(k,{get tags(){return n.summary.tags},get onAddTag(){return n.onAddTag},get onRemoveTag(){return n.onRemoveTag},get typeOptions(){return r()}});var j=s(k,2),M=d(j);C(j),C(O);var N=s(O,2),P=d(N),ee=d(P,!0);C(P),C(N),C(D),C(c),u(t=>{A(p,`href`,`/projects/${n.summary.id}`),e(_,n.summary.name),e(S,`${n.summary.featureCount??``} feature${n.summary.featureCount===1?``:`s`}`),e(M,`Updated ${t??``}`),e(ee,i())},[()=>new Date(n.summary.updatedAt).toLocaleDateString()]),a(`click`,p,o),a(`click`,P,function(...e){n.onDelete?.apply(this,e)}),v(t,c),g()}i([`click`]);var _e=o(`<form data-tour="new-project-form" class="grid gap-3 rounded-xl border border-cyan-100 bg-cyan-50/40 p-4 md:grid-cols-[1fr_1.6fr_auto] md:items-end"><div><label for="proj-name" class="mb-1.5 block text-xs font-medium text-slate-700">Project name</label> <input id="proj-name" type="text" placeholder="e.g. Acme Platform" class="h-10 w-full rounded-md border border-cyan-100 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100" required=""/></div> <div><label for="proj-desc" class="mb-1.5 block text-xs font-medium text-slate-700">Description</label> <input id="proj-desc" data-tour="new-project-description" type="text" placeholder="What product or initiative does this group?" class="h-10 w-full rounded-md border border-cyan-100 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100" required=""/></div> <button type="submit" class="h-10 rounded-md bg-brand-800 px-4 text-sm font-medium text-white hover:bg-brand-900 disabled:cursor-not-allowed disabled:opacity-50"> </button></form>`);function ve(t,n){x(n,!0);let i=k(``),a=k(``),o=k(!1),f=k(null),p=D(()=>ce(L.currentStep,`new-project`,j(i)));r(()=>{j(f)&&l().then(()=>j(f)?.focus())});async function m(e){if(e.preventDefault(),!j(o)&&j(i).trim().length!==0&&j(a).trim().length!==0){_(o,!0);try{await n.onSubmit(j(i).trim(),j(a).trim()),_(i,``),_(a,``)}finally{_(o,!1)}}}var y=_e(),S=d(y),w=s(d(S),2);b(w),O(w,e=>_(f,e),()=>j(f)),C(S);var T=s(S,2),E=s(d(T),2);b(E),C(T);var M=s(T,2),N=d(M,!0);C(M),C(y),u(t=>{A(M,`title`,j(p).blocked?`Tutorial: name must be exactly "${j(p).requiredValue}"`:void 0),M.disabled=t,e(N,j(o)?`Creating...`:`New project`)},[()=>j(o)||j(i).trim().length===0||j(a).trim().length===0||j(p).blocked]),c(`submit`,y,m),h(w,()=>j(i),e=>_(i,e)),h(E,()=>j(a),e=>_(a,e)),v(t,y),g()}var ye=o(`<button type="button" class="h-8 rounded-md px-2 text-xs font-medium text-slate-500 hover:bg-slate-50 hover:text-slate-900">Clear</button>`),be=o(`<div class="rounded-lg border border-dashed border-hairline bg-white p-8 text-center text-sm text-slate-500">Loading projects...</div>`),xe=o(`<div class="rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700"> </div>`),Se=o(`<div class="space-y-3"><p>No projects yet.</p> <button type="button" class="rounded-md bg-slate-900 px-4 py-2 text-sm font-medium text-white">Create first project</button></div>`),Ce=o(`<div class="rounded-lg border border-dashed border-hairline bg-white p-8 text-center text-sm text-slate-500"><!></div>`),we=o(`<li><!></li>`),Te=o(`<ul class="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3"></ul>`),Ee=o(`<div class="fixed inset-0 z-40 flex items-start justify-center bg-slate-950/30 px-4 py-24 backdrop-blur-sm" role="presentation"><div class="w-full max-w-3xl rounded-xl border border-hairline bg-white shadow-xl" role="dialog" aria-modal="true" aria-labelledby="new-project-title"><header class="flex items-start justify-between gap-4 border-b border-hairline px-5 py-4"><div><h2 id="new-project-title" class="text-base font-semibold text-slate-950">New project</h2> <p class="mt-1 text-sm text-slate-500">Create a project for related behavior models.</p></div> <button type="button" class="rounded-md px-2 py-1 text-sm text-slate-500 hover:bg-slate-100 hover:text-slate-900" aria-label="Close">x</button></header> <div class="p-5"><!></div></div></div>`),De=o(`<div class="mx-auto max-w-7xl px-4 py-8 sm:px-6"><header class="mb-6 border-b border-slate-200 pb-6"><div class="flex items-center justify-between gap-3"><p class="text-xs font-semibold uppercase tracking-wide text-brand-700">Home</p> <button type="button" class="inline-flex items-center gap-1.5 rounded-md border border-slate-300 bg-white px-3 py-1.5 text-xs font-medium text-slate-700 transition hover:border-brand-300 hover:bg-cyan-50 hover:text-brand-800 disabled:opacity-50" title="Restore a project from a .unspa file"><span aria-hidden="true">&#x2B06;</span> </button> <input type="file" accept=".unspa,application/octet-stream,application/json" class="hidden"/></div> <div class="mt-2 max-w-3xl"><h1 class="text-4xl font-semibold tracking-tight text-slate-950">Projects</h1> <p class="mt-2 max-w-2xl text-sm leading-6 text-slate-600">Group related behavior models and inspect their resources, data, events, and transitions together.</p></div> <div class="mt-6 flex flex-col gap-3 rounded-xl border border-slate-200 bg-white p-3 shadow-sm shadow-slate-950/5 lg:flex-row lg:items-center lg:justify-between"><div class="flex min-w-0 items-center rounded-lg border border-hairline bg-white p-1 lg:flex-1"><label for="project-search" class="sr-only">Search projects</label> <input id="project-search" type="search" placeholder="Search projects..." class="h-9 w-full min-w-0 rounded-md border-0 bg-transparent px-3 text-sm outline-none placeholder:text-slate-400"/> <!></div> <div class="flex flex-col gap-2 sm:flex-row sm:items-center"><!> <label class="flex h-10 items-center gap-2 rounded-lg border border-hairline bg-white px-3 text-sm text-slate-600"><span class="text-xs font-medium">Sort</span> <select class="bg-transparent text-sm font-medium text-slate-800 outline-none"><option>Updated</option><option>Name</option><option>Features</option></select></label> <button type="button" data-tour="new-project-button" class="inline-flex h-10 items-center justify-center gap-2 rounded-md bg-slate-900 px-4 text-sm font-medium text-white hover:bg-slate-800"><span class="text-base leading-none" aria-hidden="true">+</span> New project</button></div></div></header> <section aria-labelledby="projects-list-title"><div class="mb-3 flex flex-col gap-1 sm:flex-row sm:items-end sm:justify-between"><div><h2 id="projects-list-title" class="text-base font-semibold text-slate-950">Your projects</h2> <p class="text-sm text-slate-500">Open a project to inspect the features it groups.</p></div> <p class="text-xs text-slate-500"> </p></div> <!></section></div> <!> <!>`,1);function Oe(i,o){x(o,!0);let l=null,m=k(`all`),h=k(!1),A=k(!1),L=k(`updated`);E(()=>{R.refresh(),oe.refresh(),l=ae(e=>{(e.kind===`project`||e.kind===`feature`)&&R.refreshSilent()})}),w(()=>{l?.(),l=null});function z(e){let t=[...e.tags??[]];return e.customTag?.trim()&&t.push({type:e.customTagType?.trim()||`Tag`,value:e.customTag.trim()}),t}async function ce(e,t){await M(`/projects/${await R.create(e,t)}`)}let B=k(!1),V=k(null);function he(){j(B)||j(V)?.click()}async function _e(e){let t=e.target,n=t.files?.[0];if(t.value=``,n){_(B,!0);try{let e=await ue(n),t=await ie({title:`Import .unspa file`,message:`Enter the passphrase used when "${n.name}" was exported. A wrong passphrase will not corrupt anything — the file just stays encrypted.`,inputLabel:`Passphrase`,password:!0,confirmLabel:`Import`,tone:`info`});if(t===null)return;let r=await de(e,t);await R.refreshSilent(),await ne({title:`Import complete`,message:`Restored project with ${r.featuresImported} feature(s) and ${r.statusesImported} implementation-status sidecar(s).`,tone:`success`}),await M(`/projects/${r.projectId}`)}catch(e){await ne({title:`Import failed`,message:e instanceof le?`That file is not a valid .unspa bundle: ${e.message}`:e instanceof fe?e.message:`Import failed: ${e.message}`,tone:`danger`})}finally{_(B,!1)}}}async function Oe(e){R.stagePendingDelete(e);let t=R.summaries.find(t=>String(t.id)===String(e))?.name??`this project`,n=await I(),r=((await n.useCases.getProject(e))?.featureIds??[]).map(String),i=[];if(r.length===0){if(!await P({title:`Delete "${t}"?`,message:`This project has no linked features. Removing it cannot be undone.`,confirmLabel:`Delete project`,tone:`danger`})){R.clearPendingDelete();return}}else{let e=await Promise.all(r.map(async e=>({id:e,label:(await n.useCases.getFeatureCard(e))?.name??e,defaultChecked:!0}))),a=await te({title:`Delete "${t}"?`,message:`This project links to ${r.length} feature${r.length===1?``:`s`}. Tick the ones you want to delete in the same batch. Anything left unchecked stays available as an unassigned feature.`,items:e,confirmLabel:`Delete project + selected`,cancelLabel:`Cancel`,tone:`danger`});if(!a.confirmed){R.clearPendingDelete();return}i=a.selectedIds}for(let e of i)await n.useCases.deleteFeature(e);await R.remove(e),i.length>0&&await se.refreshSilent()}function ke(e){e.key===`Escape`&&_(h,!1)}let H=D(()=>(R.search.trim().length===0?[...R.summaries]:R.summaries.filter(e=>{let t=R.search.toLowerCase();return e.name.toLowerCase().includes(t)||(e.description??``).toLowerCase().includes(t)})).filter(e=>Ae(e,j(m))).sort((e,t)=>j(L)===`name`?e.name.localeCompare(t.name):j(L)===`count`?t.featureCount-e.featureCount:new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()));function Ae(e,t){let n=z(e);if(t===`all`)return!0;if(t===`untagged`)return n.length===0;let r=F(t);return n.some(e=>F(e)===r)}let U=D(()=>{let e=[];for(let t of R.summaries)for(let n of z(t))e.push(n);return e});r(()=>{oe.registerTypes(j(U).map(e=>e.type))});let je=D(()=>[...new Set(j(U).map(e=>N(e.type)))].sort((e,t)=>e.localeCompare(t)));function Me(e){return R.summaries.filter(t=>Ae(t,e)).length}async function Ne(e,t,n){let r=await I(),i=await r.useCases.getProject(e);i&&(await r.useCases.saveProject({...i,tags:ee(z(i),{type:t,value:n})}),await R.refreshSilent())}async function Pe(e,t,n){let r=await I(),i=await r.useCases.getProject(e);if(!i)return;let a=re(z(i),{type:t,value:n});await r.useCases.saveProject({...i,tags:a,customTagType:void 0,customTag:void 0}),j(m)!==`all`&&j(m)!==`untagged`&&F(j(m))===F({type:t,value:n})&&_(m,`all`),await R.refreshSilent()}var Fe=De();c(`keydown`,f,ke);var W=p(Fe),G=d(W),K=d(G),q=s(d(K),2),Ie=s(d(q));C(q);var Le=s(q,2);O(Le,e=>_(V,e),()=>j(V)),C(K);var Re=s(K,4),J=d(Re),Y=s(d(J),2);b(Y);var ze=s(Y,2),Be=e=>{var t=ye();a(`click`,t,()=>R.setSearch(``)),v(e,t)},Ve=D(()=>R.search.trim().length>0);y(ze,e=>{j(Ve)&&e(Be)}),C(J);var He=s(J,2),Ue=d(He);pe(Ue,{get tags(){return j(U)},get value(){return j(m)},onChange:e=>_(m,e,!0),onManage:()=>_(A,!0),countLabel:Me});var X=s(Ue,2),Z=s(d(X),2),Q=d(Z);Q.value=Q.__value=`updated`;var $=s(Q);$.value=$.__value=`name`;var We=s($);We.value=We.__value=`count`,C(Z),C(X);var Ge=s(X,2);C(He),C(Re),C(G);var Ke=s(G,2),qe=d(Ke),Je=s(d(qe),2),Ye=d(Je);C(Je),C(qe);var Xe=s(qe,2),Ze=e=>{v(e,be())},Qe=t=>{var n=xe(),r=d(n,!0);C(n),u(()=>e(r,R.error)),v(t,n)},$e=e=>{var t=Ce(),r=d(t),i=e=>{var t=Se(),n=s(d(t),2);C(t),a(`click`,n,()=>_(h,!0)),v(e,t)},o=e=>{v(e,n(`No projects match your search.`))};y(r,e=>{R.summaries.length===0?e(i):e(o,-1)}),C(t),v(e,t)},et=e=>{var n=Te();t(n,21,()=>j(H),e=>e.id,(e,t)=>{var n=we();ge(d(n),{get summary(){return j(t)},get tagTypeOptions(){return j(je)},onAddTag:(e,n)=>Ne(j(t).id,e,n),onRemoveTag:(e,n)=>Pe(j(t).id,e,n),onDelete:()=>Oe(j(t).id)}),C(n),v(e,n)}),C(n),v(e,n)};y(Xe,e=>{R.loading?e(Ze):R.error?e(Qe,1):j(H).length===0?e($e,2):e(et,-1)}),C(Ke),C(W);var tt=s(W,2),nt=e=>{var t=Ee(),n=d(t),r=d(n),i=s(d(r),2);C(r);var o=s(r,2);ve(d(o),{onSubmit:ce}),C(o),C(n),C(t),a(`click`,t,e=>{e.currentTarget===e.target&&_(h,!1)}),a(`click`,i,()=>_(h,!1)),v(e,t)};y(tt,e=>{j(h)&&e(nt)}),me(s(tt,2),{get open(){return j(A)},get tags(){return j(U)},onClose:()=>_(A,!1),onRenamed:()=>R.refreshSilent()}),u(()=>{q.disabled=j(B),e(Ie,` ${j(B)?`Importing...`:`Import .unspa`}`),T(Y,R.search),e(Ye,`${j(H).length??``} shown`)}),a(`click`,q,he),a(`change`,Le,_e),a(`input`,Y,e=>R.setSearch(e.target.value)),S(Z,()=>j(L),e=>_(L,e)),a(`click`,Ge,()=>_(h,!0)),v(i,Fe),g()}i([`click`,`change`,`input`]);export{Oe as t};
@@ -0,0 +1 @@
1
+ import{f as e}from"./Bp2_Vghh.js";var t=e=>e.length===0?e:e.charAt(0).toUpperCase()+e.slice(1),n=e=>{let t=e.split(`.`);return t.length<=1?e:t[t.length-1]},r=r=>{let i=new Map;for(let e of r.surfaces)for(let t of e.stateDefinitions){let r=t.path.split(`.`)[0]??t.path,a=i.get(r);a||(a={fields:new Map,surfaces:new Set},i.set(r,a)),a.fields.has(t.path)||a.fields.set(t.path,{name:n(t.path),path:t.path,type:t.type,source:`deduced`}),a.surfaces.add(e.name)}let a=new Map;for(let e of r.entities)a.set(e.namespace,e);let o=new Set([...i.keys(),...a.keys()]),s=[];for(let n of o){let r=a.get(n),o=i.get(n),c=new Map;if(o)for(let[e,t]of o.fields)c.set(e,t);if(r)for(let e of r.fields)e.path&&c.set(String(e.path),{id:e.id,name:e.name,path:e.path,type:e.type,source:`declared`,fields:e.fields,items:e.items});let l=Array.from(c.values()).sort((e,t)=>e.path.localeCompare(t.path));s.push({id:r?.id,name:t(e(n)),namespace:n,description:r?.description,resourceId:r?.resourceId,fields:l,isMaterialized:r!==void 0,usedBySurfaces:o?Array.from(o.surfaces).sort():[]})}return s.sort((e,t)=>e.namespace.localeCompare(t.namespace)),s},i=(e,t)=>e.fields.map(e=>({id:e.id??t(),name:e.name,path:e.path,type:e.type,fields:e.fields,items:e.items})),a=e=>{let t=e.split(`.`)[0];return t&&t.length>0?t:`_root`},o=e=>{let t=new Map,n=(e,n)=>{let r=t.get(e);r||(r=[],t.set(e,r)),r.push(n)};for(let t of e.surfaces){for(let e of t.actions){for(let r of e.emittedEvents)n(String(r),{surfaceId:t.id,surfaceName:t.name,actionId:e.id,actionName:e.name,origin:`action_default`});for(let r of e.effects)r.type===`emit_event`&&n(String(r.event),{surfaceId:t.id,surfaceName:t.name,actionId:e.id,actionName:e.name,origin:`action_effect`,description:r.description});for(let r of e.rules)r.effect.type===`emit_event`&&n(String(r.effect.event),{surfaceId:t.id,surfaceName:t.name,actionId:e.id,actionName:e.name,origin:`action_rule_effect`,description:r.description})}for(let e of t.rules)e.effect.type===`emit_event`&&n(String(e.effect.event),{surfaceId:t.id,surfaceName:t.name,origin:`surface_rule_effect`,description:e.description})}let r=[];for(let[e,n]of t)r.push({name:e,group:a(e),emissions:n});return r.sort((e,t)=>e.group===t.group?String(e.name).localeCompare(String(t.name)):e.group.localeCompare(t.group)),r},s=e=>{let t=new Map;for(let n of e){let e=t.get(n.group);e||(e=[],t.set(n.group,e)),e.push(n)}return Array.from(t.entries()).map(([e,t])=>({group:e,events:t})).sort((e,t)=>e.group.localeCompare(t.group))},c=e=>{let t=new Map;e.surfaces.forEach((e,n)=>{t.set(e.id,{name:e.name,index:n})});let n=new Map,r=e=>e!==void 0&&t.has(e),i=(e,i,a)=>{if(!r(i))return;let o=`${e}__${i}`,s=n.get(o);s||(s={sources:[],fromIndex:t.get(e)?.index??0},n.set(o,s)),s.sources.push(a)};for(let t of e.surfaces){let e=t.id,n=t.name;for(let r of t.transitions)i(e,r.target,{surfaceId:e,surfaceName:n,origin:`declared`,description:r.label??r.description});for(let r of t.actions){for(let t of r.effects)t.type===`transition_surface`&&i(e,t.target,{surfaceId:e,surfaceName:n,actionId:r.id,actionName:r.name,origin:`action_effect`,description:t.description});for(let t of r.rules)t.effect.type===`transition_surface`&&i(e,t.effect.target,{surfaceId:e,surfaceName:n,actionId:r.id,actionName:r.name,origin:`action_rule_effect`,description:t.description})}for(let r of t.rules)r.effect.type===`transition_surface`&&i(e,r.effect.target,{surfaceId:e,surfaceName:n,origin:`surface_rule_effect`,description:r.description})}let a=[];for(let[e,r]of n){let[n,i]=e.split(`__`),o=t.get(n),s=t.get(i);!o||!s||a.push({fromSurfaceId:n,fromSurfaceName:o.name,toSurfaceId:i,toSurfaceName:s.name,sources:r.sources})}return a.sort((e,n)=>{let r=t.get(e.fromSurfaceId)?.index??0,i=t.get(n.fromSurfaceId)?.index??0;return r===i?(t.get(e.toSurfaceId)?.index??0)-(t.get(n.toSurfaceId)?.index??0):r-i}),a},l=e=>{let t=new Map;for(let n of e){let e=t.get(n.fromSurfaceId);e||(e={fromSurfaceId:n.fromSurfaceId,fromSurfaceName:n.fromSurfaceName,transitions:[]},t.set(n.fromSurfaceId,e)),e.transitions.push(n)}return Array.from(t.values())};export{r as a,s as i,l as n,i as o,o as r,c as t};
@@ -0,0 +1 @@
1
+ import{u as e}from"./OJscNS3T.js";function t(t,n){throw new e(t,n.toString())}export{t};
@@ -0,0 +1 @@
1
+ �+�import{u as e}from"./OJscNS3T.js";function t(t,n){throw new e(t,n.toString())}export{t};
@@ -0,0 +1 @@
1
+ import{$ as e,et as t,rt as n,tt as r,z as i}from"./BPl9BITm.js";import{t as a}from"./Bp2_Vghh.js";import{t as o}from"./Cl7Z3e6-.js";import{n as s,r as c}from"./Bp8HpEPe2.js";var l=new class{#e=r(!0);get loading(){return i(this.#e)}set loading(e){t(this.#e,e,!0)}#t=r(null);get project(){return i(this.#t)}set project(e){t(this.#t,e,!0)}#n=n(()=>this.project?String(this.project.id):``);get id(){return i(this.#n)}set id(e){t(this.#n,e)}#r=n(()=>this.project?.name??``);get name(){return i(this.#r)}set name(e){t(this.#r,e)}#i=n(()=>this.project?this.project.featureIds.map(String):[]);get featureIds(){return i(this.#i)}set featureIds(e){t(this.#i,e)}#a=r(null);get error(){return i(this.#a)}set error(e){t(this.#a,e,!0)}#o=r(null);get saveError(){return i(this.#o)}set saveError(e){t(this.#o,e,!0)}#s=r(!1);get saving(){return i(this.#s)}set saving(e){t(this.#s,e,!0)}#c=r(!1);get dirty(){return i(this.#c)}set dirty(e){t(this.#c,e,!0)}#l=r(``);get lastSavedAt(){return i(this.#l)}set lastSavedAt(e){t(this.#l,e,!0)}#u=r(`features`);get activePanel(){return i(this.#u)}set activePanel(e){t(this.#u,e,!0)}#d=r(``);get selectedFeatureId(){return i(this.#d)}set selectedFeatureId(e){t(this.#d,e,!0)}#f=r(``);get search(){return i(this.#f)}set search(e){t(this.#f,e,!0)}#p=r(e([]));get historyEntries(){return i(this.#p)}set historyEntries(e){t(this.#p,e,!0)}#m=r(-1);get historyCursor(){return i(this.#m)}set historyCursor(e){t(this.#m,e,!0)}currentId=null;client=null;clientUnsubscribe=null;historyUnsubscribe=null;async load(e){try{this.loading=!0,this.error=null,this.currentId=e;let t=await(await a()).useCases.getProject(e);this.project=t,this.dirty=!1,this.lastSavedAt=t?.updatedAt??``,this.subscribeRoom(e)}catch(e){this.error=e.message}finally{this.loading=!1}}setActivePanel(e){this.activePanel=e,o(`project.panel_switched`,{panel:e})}setSearch(e){this.search=e,o(`project.editor_search_updated`,{query:e})}setSelectedFeature(e){this.selectedFeatureId=e,e&&o(`project.feature_opened`,{featureId:e})}async addFeature(e){if(!(!this.project||!this.currentId)){this.saving=!0,this.saveError=null;try{let t=await(await a()).useCases.addFeatureToProject(this.currentId,e);this.applyProject(t),o(`project.feature_added`,{projectId:String(this.currentId),featureId:String(e)})}catch(e){this.saveError=e.message}finally{this.saving=!1}}}async removeFeature(e){if(!(!this.project||!this.currentId)){this.saving=!0,this.saveError=null;try{let t=await(await a()).useCases.removeFeatureFromProject(this.currentId,e);this.applyProject(t),o(`project.feature_removed`,{projectId:String(this.currentId),featureId:String(e)})}catch(e){this.saveError=e.message}finally{this.saving=!1}}}async rename(e){if(this.project){this.saving=!0,this.saveError=null;try{let t=await(await a()).useCases.saveProject({...this.project,name:e.trim()});this.applyProject(t)}catch(e){this.saveError=e.message}finally{this.saving=!1}}}async updateMetadata(e,t){if(!this.project)return;let n=e.trim();if(n.length!==0){this.saving=!0,this.saveError=null;try{let e=await a(),r=t.trim(),i=await e.useCases.saveProject({...this.project,name:n,description:r.length>0?r:void 0});this.applyProject(i),o(`project.saved`,{id:String(i.id),name:i.name})}catch(e){this.saveError=e.message}finally{this.saving=!1}}}async setDescription(e){if(this.project){this.saving=!0,this.saveError=null;try{let t=await a(),n=e.trim(),r=await t.useCases.saveProject({...this.project,description:n.length>0?n:void 0});this.applyProject(r)}catch(e){this.saveError=e.message}finally{this.saving=!1}}}dismissSaveError(){this.saveError=null}reset(){this.clientUnsubscribe&&=(this.clientUnsubscribe(),null),this.historyUnsubscribe&&=(this.historyUnsubscribe(),null),this.client=null,this.currentId=null,this.project=null,this.historyEntries=[],this.historyCursor=-1,this.error=null,this.saveError=null,this.loading=!0,this.saving=!1,this.dirty=!1,this.lastSavedAt=``,this.activePanel=`features`,this.selectedFeatureId=``,this.search=``}applyProject(e){this.project?s(this.project,e):this.project=e,this.dirty=!1,this.lastSavedAt=e.updatedAt}subscribeRoom(e){this.clientUnsubscribe&&=(this.clientUnsubscribe(),null),this.historyUnsubscribe&&=(this.historyUnsubscribe(),null);let t=c(`project`,e);this.client=t,this.clientUnsubscribe=t.observe((t,n)=>{n!==`local`&&t&&this.currentId===e&&(this.project?s(this.project,t):this.project=t,this.lastSavedAt=t.updatedAt)}),this.historyEntries=t.history.entries,this.historyCursor=t.history.cursor,this.historyUnsubscribe=t.observeHistory(t=>{this.currentId===e&&(this.historyEntries=t.entries,this.historyCursor=t.cursor)})}},u=new class{#e=r(!1);get loading(){return i(this.#e)}set loading(e){t(this.#e,e,!0)}#t=r(e([]));get features(){return i(this.#t)}set features(e){t(this.#t,e,!0)}#n=r(e([]));get allSummaries(){return i(this.#n)}set allSummaries(e){t(this.#n,e,!0)}#r=r(null);get error(){return i(this.#r)}set error(e){t(this.#r,e,!0)}async load(e){this.loading=!0,this.error=null;try{let t=await a(),n=await Promise.all(e.map(e=>t.useCases.getFeature(e)));this.features=n.filter(e=>e!==null)}catch(e){this.error=e.message}finally{this.loading=!1}}async syncWith(e){let t=new Set(e.map(String)),n=new Map(this.features.map(e=>[String(e.id),e])),r=e.filter(e=>!n.has(String(e))),i=n;if(r.length>0)try{let e=await a(),t=await Promise.all(r.map(t=>e.useCases.getFeature(t)));i=new Map(n);for(let e of t)e&&i.set(String(e.id),e)}catch(e){this.error=e.message;return}this.features=e.map(e=>i.get(String(e))).filter(e=>e!==void 0&&t.has(String(e.id)))}async refetchOne(e){try{let t=await(await a()).useCases.getFeature(e),n=this.features.findIndex(t=>String(t.id)===String(e));if(!t){n>=0&&(this.features=[...this.features.slice(0,n),...this.features.slice(n+1)]);return}n>=0?this.features=[...this.features.slice(0,n),t,...this.features.slice(n+1)]:this.features=[...this.features,t]}catch(e){this.error=e.message}}async loadAllSummaries(){try{let e=await a();this.allSummaries=[...await e.useCases.listFeatures()]}catch(e){this.error=e.message}}reset(){this.features=[],this.allSummaries=[],this.loading=!1,this.error=null}};export{l as n,u as t};
@@ -0,0 +1 @@
1
+ import{$ as e,et as t,rt as n,tt as r,z as i}from"./BPl9BITm.js";import{D as a,H as o,I as s,L as c,T as l,a as u,ct as d,i as f,it as p,lt as m,st as h,t as g}from"./Bp2_Vghh.js";import{t as _}from"./BOrLmFwJ.js";import{_ as v,v as y}from"./Dg0acPpT.js";import{t as b}from"./D8YEa1po.js";var x=null,S=e=>(x=e,()=>{x===e&&(x=null)}),C=(e,t)=>x?x(e,t):null,w=`No description yet.`,T=e=>e.length===0?0:Math.round(e.reduce((e,t)=>e+t,0)/e.length),E=e=>{let t=e.filter(e=>e!==null);return t.length===0?null:T(t)},D=e=>{let t=[];for(let n of e.surfaces)for(let e of n.actions){let n=e.evolution;if(!n||n.dismissed)continue;let r=n.source?`${n.rationale} (${n.source})`:n.rationale;t.push({id:String(e.id),tone:n.category===`security`||n.category===`compliance`?`urgent`:`next`,text:`${e.name}: ${r}`})}return t},O=e=>({projects:e.map(({project:e,coreFeatures:t})=>{let n=t.map(({feature:e,implementationStatus:t})=>{let n=a(e),r=l(e,t),i=new Map;for(let e of n.perSurface)for(let t of e.perAction)i.set(String(t.action.id),t.report);let o=new Map(r.perSurface.flatMap(e=>e.perAction.map(e=>[String(e.action.id),e]))),c=e.surfaces.flatMap(e=>s(e.actions).map(t=>{let n=i.get(String(t.id)),r=o.get(String(t.id)),a=r&&r.expectedCount>0?r.percentage:null;return{id:String(t.id),name:t.name,description:t.intent||w,maturityPercentage:n?.percentage??0,implementationPercentage:a,suggestions:[],surfaceId:String(e.id),surfaceName:e.name}})),u=r.expectedCount===0?null:r.percentage;return{id:String(e.id),name:e.name,description:e.description||w,maturityPercentage:n.global.percentage,implementationPercentage:u,tags:e.tags??[],suggestions:D(e),features:c}});return{id:String(e.id),name:e.name,description:e.description||w,maturityPercentage:T(n.map(e=>e.maturityPercentage)),implementationPercentage:E(n.map(e=>e.implementationPercentage)),tags:e.tags??[],coreFeatures:n}})}),k=e=>async()=>{let t=await e.projects.list(),n=[];for(let r of t){let t=await e.projects.get(r.id);if(!t)continue;let i=await Promise.all(t.featureIds.map(async t=>{let[n,r]=await Promise.all([e.features.get(t),e.statuses.get(t)]);return n?{feature:n,implementationStatus:r}:null}));n.push({project:t,coreFeatures:i.filter(e=>e!==null)})}return O(n)},A=e=>async t=>{let n=await e.projects.get(t);return n?O([{project:n,coreFeatures:(await Promise.all(n.featureIds.map(async t=>{let[n,r]=await Promise.all([e.features.get(t),e.statuses.get(t)]);return n?{feature:n,implementationStatus:r}:null}))).filter(e=>e!==null)}]).projects[0]??null:null},j={data:{getContainer:()=>g()},tags:{refresh:()=>b.refresh(),registerTypes:e=>b.registerTypes(e),colorForTag:e=>b.colorForTag(e),renameTag:async(e,t)=>{await b.renameTag(e,t)}},sync:{subscribe:e=>_(e)}},M=(e,t)=>`action:${e}:${t}`,N=e=>`feature:${e}`,P=(e,t)=>e.map((e,n)=>({item:e,index:n,score:t(e)})).filter(e=>e.score>0).sort((e,t)=>t.score-e.score||e.index-t.index).map(e=>e.item),F=new class{host;constructor(e){this.host=e}#e=r(!0);get loading(){return i(this.#e)}set loading(e){t(this.#e,e,!0)}#t=r(e({projects:[]}));get dashboard(){return i(this.#t)}set dashboard(e){t(this.#t,e,!0)}#n=r(!1);get fullyLoaded(){return i(this.#n)}set fullyLoaded(e){t(this.#n,e,!0)}#r=r(0);get totalProjectCount(){return i(this.#r)}set totalProjectCount(e){t(this.#r,e,!0)}#i=n(()=>Math.max(this.totalProjectCount,this.dashboard.projects.length));get projectCount(){return i(this.#i)}set projectCount(e){t(this.#i,e)}#a=n(()=>this.fullyLoaded?0:Math.max(0,this.totalProjectCount-this.dashboard.projects.length));get pendingProjectCount(){return i(this.#a)}set pendingProjectCount(e){t(this.#a,e)}#o=r(null);get selectedProjectId(){return i(this.#o)}set selectedProjectId(e){t(this.#o,e,!0)}#s=r(null);get selectedCoreFeatureId(){return i(this.#s)}set selectedCoreFeatureId(e){t(this.#s,e,!0)}#c=r(``);get search(){return i(this.#c)}set search(e){t(this.#c,e,!0)}#l=r(null);get activeTag(){return i(this.#l)}set activeTag(e){t(this.#l,e,!0)}#u=r(null);get error(){return i(this.#u)}set error(e){t(this.#u,e,!0)}#d=r(e([]));get queue(){return i(this.#d)}set queue(e){t(this.#d,e,!0)}#f=r(null);get queueError(){return i(this.#f)}set queueError(e){t(this.#f,e,!0)}#p=r(e(new Set));get busyActions(){return i(this.#p)}set busyActions(e){t(this.#p,e,!0)}isBusy(e){return this.busyActions.has(e)}setBusy(e,t){let n=new Set(this.busyActions);t?n.add(e):n.delete(e),this.busyActions=n}#m=n(()=>this.dashboard.projects.find(e=>e.id===this.selectedProjectId)??null);get selectedProject(){return i(this.#m)}set selectedProject(e){t(this.#m,e)}#h=n(()=>this.selectedProject?.coreFeatures.find(e=>e.id===this.selectedCoreFeatureId)??null);get selectedCoreFeature(){return i(this.#h)}set selectedCoreFeature(e){t(this.#h,e)}#g=n(()=>this.search.trim().toLowerCase());get searchQuery(){return i(this.#g)}set searchQuery(e){t(this.#g,e)}#_=n(()=>this.searchQuery.length>0);get searchActive(){return i(this.#_)}set searchActive(e){t(this.#_,e)}#v=n(()=>this.activeTag?m(this.activeTag):null);get activeTagKey(){return i(this.#v)}set activeTagKey(e){t(this.#v,e)}#y=n(()=>this.activeTag!==null);get tagActive(){return i(this.#y)}set tagActive(e){t(this.#y,e)}#b=n(()=>{let e=new Set;for(let t of this.dashboard.projects){for(let n of t.tags)e.add(n.type);for(let n of t.coreFeatures)for(let t of n.tags)e.add(t.type)}return[...e]});get allTagTypes(){return i(this.#b)}set allTagTypes(e){t(this.#b,e)}#x=n(()=>{let e=this.dashboard.projects,t=this.activeTagKey;t&&(e=e.filter(e=>this.projectMatchesTag(e,t)));let n=this.searchQuery;return n?P(e,e=>this.projectScore(e,n)):e});get filteredProjects(){return i(this.#x)}set filteredProjects(e){t(this.#x,e)}projectMatchesTag(e,t){return e.tags.some(e=>m(e)===t)||e.coreFeatures.some(e=>e.tags.some(e=>m(e)===t))}coreFeatureMatchesTag(e,t,n){return t.tags.some(e=>m(e)===n)||e.tags.some(e=>m(e)===n)}toggleTag(e){this.activeTag=this.activeTagKey===m(e)?null:e}clearTag(){this.activeTag=null}isActiveTag(e){return this.activeTagKey===m(e)}refreshTagPalette(){return this.host.tags.refresh()}registerTagTypes(e){this.host.tags.registerTypes(e)}colorForTag(e){return this.host.tags.colorForTag(e)}subscribeSync(e){return this.host.sync.subscribe(e)}async addProjectTag(e,t){await this.mutateTags(e,async n=>{let r=await n.useCases.getProject(u(e));r&&await n.useCases.saveProject({...r,tags:p(r.tags,t)})})}async removeProjectTag(e,t){await this.mutateTags(e,async n=>{let r=await n.useCases.getProject(u(e));r&&await n.useCases.saveProject({...r,tags:h(r.tags,t)})})}async addCoreFeatureTag(e,t){await this.mutateTags(this.selectedProjectId,async n=>{let r=await n.useCases.getFeature(o(e));r&&await n.useCases.saveFeature({...r,tags:p(r.tags,t)})})}async removeCoreFeatureTag(e,t){await this.mutateTags(this.selectedProjectId,async n=>{let r=await n.useCases.getFeature(o(e));r&&await n.useCases.saveFeature({...r,tags:h(r.tags,t)})})}async renameTag(e,t){if(m(e)!==m(t)){this.dashboard={...this.dashboard,projects:this.dashboard.projects.map(n=>({...n,tags:d(n.tags,e,t)??[],coreFeatures:n.coreFeatures.map(n=>({...n,tags:d(n.tags,e,t)??[]}))}))},this.activeTagKey===m(e)&&(this.activeTag=t);try{await this.host.tags.renameTag(e,t),this.refreshSilent().then(()=>this.reconcileActiveTag())}catch(e){this.error=e.message}}}async mutateTags(e,t){try{await t(await this.host.data.getContainer()),e?await this.refreshProject(e):await this.refreshSilent(),this.reconcileActiveTag()}catch(e){this.error=e.message}}reconcileActiveTag(){let e=this.activeTagKey;e&&(this.dashboard.projects.some(t=>this.projectMatchesTag(t,e))||(this.activeTag=null))}#S=n(()=>{let e=this.selectedProject,t=this.selectedCoreFeature,n=t?[t]:e?.coreFeatures??[],r=this.activeTagKey;r&&e&&!t&&(n=n.filter(t=>this.coreFeatureMatchesTag(t,e,r)));let i=this.searchQuery;return!i||e&&this.matchesText(i,e.name,e.description)?n:P(n,e=>this.coreFeatureScore(e,i))});get visibleCoreFeatures(){return i(this.#S)}set visibleCoreFeatures(e){t(this.#S,e)}#C=n(()=>{let e=this.selectedCoreFeature;if(!e)return[];let t=this.searchQuery;return!t||this.matchesText(t,e.name,e.description)?e.features:P(e.features,e=>this.featureScore(e,t))});get visibleSelectedFeatures(){return i(this.#C)}set visibleSelectedFeatures(e){t(this.#C,e)}#w=n(()=>{let e=this.selectedCoreFeature;if(!e)return[];let t=this.searchQuery,n=!t||this.matchesText(t,e.name,e.description),r=[],i=new Map;for(let a of e.features){if(!n&&this.featureScore(a,t)===0)continue;let e=i.get(a.surfaceId);e||(e={surfaceId:a.surfaceId,surfaceName:a.surfaceName,features:[]},i.set(a.surfaceId,e),r.push(e)),e.features.push(a)}return r});get visibleSelectedSurfaces(){return i(this.#w)}set visibleSelectedSurfaces(e){t(this.#w,e)}setSearch(e){this.search=e}clearSearch(){this.search=``}matchesText(e,...t){return t.some(t=>t.toLowerCase().includes(e))}textScore(e,t,n){let r=t.toLowerCase();return r.includes(e)?r===e?n*5:r.startsWith(e)?n*4:r.split(/\s+/).some(t=>t.startsWith(e))?n*3:n:0}featureScore(e,t){return Math.max(this.textScore(t,e.name,100),this.textScore(t,e.description,35),...e.suggestions.map(e=>this.textScore(t,e.text,20)))}tagScore(e,t,n){return e.length===0?0:Math.max(...e.map(e=>Math.max(this.textScore(t,e.value,n),this.textScore(t,e.type,n*.5))))}coreFeatureScore(e,t){return Math.max(this.textScore(t,e.name,95),this.textScore(t,e.description,32),this.tagScore(e.tags,t,60),...e.suggestions.map(e=>this.textScore(t,e.text,24)),...e.features.map(e=>this.featureScore(e,t)*.75))}projectScore(e,t){return Math.max(this.textScore(t,e.name,120),this.textScore(t,e.description,40),this.tagScore(e.tags,t,70),...e.coreFeatures.map(e=>this.coreFeatureScore(e,t)*.8))}async refresh(){this.loading=!0,this.error=null;try{let e=await this.host.data.getContainer(),t=await e.useCases.listProjects();if(this.totalProjectCount=t.length,t.length===0){this.dashboard={projects:[]},this.fullyLoaded=!0,this.loading=!1;return}let n=new Map(t.map((e,t)=>[String(e.id),t])),r=A({projects:e.projectRepository,features:e.repository,statuses:e.statusRepository}),i=[];await Promise.all(t.map(async e=>{let t=await r(u(String(e.id)));t&&(i.push(t),i.sort((e,t)=>(n.get(e.id)??0)-(n.get(t.id)??0)),this.dashboard={projects:[...i]},this.loading=!1)})),this.fullyLoaded=!0,this.loading=!1,this.selectedProjectId&&!this.dashboard.projects.some(e=>e.id===this.selectedProjectId)&&(this.selectedProjectId=null,this.selectedCoreFeatureId=null),await this.refreshQueue()}catch(e){this.error=e.message,this.loading=!1}}async refreshSilent(){try{let e=await this.host.data.getContainer(),t=k({projects:e.projectRepository,features:e.repository,statuses:e.statusRepository});this.dashboard=await t(),this.fullyLoaded=!0,this.totalProjectCount=this.dashboard.projects.length,this.selectedProjectId&&!this.dashboard.projects.some(e=>e.id===this.selectedProjectId)&&(this.selectedProjectId=null,this.selectedCoreFeatureId=null),this.error=null,await this.refreshQueue()}catch(e){this.error=e.message}}async loadProjectOnly(e){this.loading=!0,this.refreshProjectCount();try{let t=await this.host.data.getContainer(),n=await A({projects:t.projectRepository,features:t.repository,statuses:t.statusRepository})(u(e));n?(this.dashboard={projects:[n]},this.fullyLoaded=!1,this.error=null,await this.refreshQueue()):await this.refreshSilent()}catch(e){this.error=e.message}finally{this.loading=!1}}async ensureFullyLoaded(){this.fullyLoaded||await this.refresh()}async refreshProjectCount(){try{let e=await this.host.data.getContainer();this.totalProjectCount=(await e.useCases.listProjects()).length}catch{}}selectProject(e){this.selectedProjectId=e,this.selectedCoreFeatureId=null,this.refreshQueue()}deselectProject(){this.selectedProjectId=null,this.selectedCoreFeatureId=null,this.queue=[],this.ensureFullyLoaded()}selectCoreFeature(e){this.selectedCoreFeatureId=this.selectedCoreFeatureId===e?null:e}applySelection(e,t){this.selectedProjectId!==e&&(this.selectedProjectId=e,this.selectedCoreFeatureId=null,this.queue=[],this.refreshQueue(),e||this.ensureFullyLoaded()),this.selectedCoreFeatureId=t}deselectCoreFeature(){this.selectedCoreFeatureId=null}async refreshQueue(){let e=this.selectedProjectId;if(!e){this.queue=[];return}try{let t=await this.host.data.getContainer();this.queue=await t.useCases.listQueue(u(e)),this.queueError=null}catch(e){this.queueError=e.message}}isQueued(e,t){let n=M(e,t);return this.queue.some(e=>f(e.item)===n)}queuePositionForAction(e,t){return this.queuePosition(M(e,t))}queuePosition(e){let t=this.queue.findIndex(t=>f(t.item)===e);return t<0?null:t+1}queueItemIdForAction(e,t){let n=M(e,t);return this.queue.find(e=>f(e.item)===n)?.item.id??null}async toggleAction(e,t){let n=this.selectedProjectId;if(!n)return;let r=this.queueItemIdForAction(e,t);await this.mutateQueue(async i=>{r?await i.useCases.dequeueQueueItem(u(n),r):await i.useCases.enqueueQueueItem(u(n),{kind:`action`,featureId:o(e),actionId:c(t)})})}isFeatureQueued(e){let t=N(e);return this.queue.some(e=>f(e.item)===t)}queuePositionForFeature(e){return this.queuePosition(N(e))}queueItemIdForFeature(e){let t=N(e);return this.queue.find(e=>f(e.item)===t)?.item.id??null}async toggleFeature(e){let t=this.selectedProjectId;if(!t)return;let n=this.queueItemIdForFeature(e);await this.mutateQueue(async r=>{n?await r.useCases.dequeueQueueItem(u(t),n):await r.useCases.enqueueQueueItem(u(t),{kind:`feature`,featureId:o(e)})})}async dequeue(e){let t=this.selectedProjectId;t&&await this.mutateQueue(async n=>{await n.useCases.dequeueQueueItem(u(t),e)})}async setQueueTarget(e,t){let n=this.selectedProjectId;n&&await this.mutateQueue(async r=>{await r.useCases.setQueueItemTarget(u(n),e,t)})}currentScoreFor(e,t){let n=this.selectedProject;if(!n)return 0;let r=n.coreFeatures.find(t=>t.id===String(e.item.featureId));if(!r)return 0;let i=(e,n)=>t===`maturity`?e:n??0;if(e.item.kind===`action`){let t=String(e.item.actionId),n=r.features.find(e=>e.id===t);return n?i(n.maturityPercentage,n.implementationPercentage):0}return i(r.maturityPercentage,r.implementationPercentage)}async dismissSuggestion(e,t){let n=this.selectedProjectId;this.setBusy(t,!0);try{let r=await this.host.data.getContainer();if(n&&this.isQueued(e,t)){let i=this.queueItemIdForAction(e,t);i&&await r.useCases.dequeueQueueItem(u(n),i)}await r.useCases.mutateFeature({featureId:o(e),transform:e=>y(e,c(t))}),await this.refreshSelectedProject(),await this.refreshQueue()}catch(e){this.error=e.message}finally{this.setBusy(t,!1)}}async acceptSuggestion(e,t){let n=this.selectedProjectId;this.setBusy(t,!0);try{let r=await this.host.data.getContainer();await r.useCases.mutateFeature({featureId:o(e),transform:e=>v(e,c(t))}),n&&!this.isQueued(e,t)&&await r.useCases.enqueueQueueItem(u(n),{kind:`action`,featureId:o(e),actionId:c(t)}),await this.refreshSelectedProject(),await this.refreshQueue()}catch(e){this.error=e.message}finally{this.setBusy(t,!1)}}async refreshProject(e){let t=await this.host.data.getContainer(),n=await A({projects:t.projectRepository,features:t.repository,statuses:t.statusRepository})(u(e));n&&(this.dashboard={...this.dashboard,projects:this.dashboard.projects.map(e=>e.id===n.id?n:e)})}async refreshSelectedProject(){this.selectedProjectId&&await this.refreshProject(this.selectedProjectId)}hasProject(e){return this.dashboard.projects.some(t=>t.id===e)}projectIdOwningFeature(e){for(let t of this.dashboard.projects)if(t.coreFeatures.some(t=>t.id===e))return t.id;return null}async applySyncEvent(e){if(e.kind===`project`){this.hasProject(e.id)?(await this.refreshProject(e.id),e.id===this.selectedProjectId&&await this.refreshQueue()):await this.refreshSilent();return}let t=this.projectIdOwningFeature(e.id);t?(await this.refreshProject(t),t===this.selectedProjectId&&await this.refreshQueue()):await this.refreshSilent()}deepLinkFor(e,t){if(e===`project`)return this.hasProject(t)?`/builder-mode?project=${encodeURIComponent(t)}`:null;let n=this.projectIdOwningFeature(t);return n?`/builder-mode?project=${encodeURIComponent(n)}&core=${encodeURIComponent(t)}`:null}async moveQueueTo(e,t){let n=this.selectedProjectId;n&&await this.mutateQueue(async r=>{await r.useCases.moveQueueItem(u(n),e,{kind:`to`,targetIndex:t})})}async mutateQueue(e){try{await e(await this.host.data.getContainer()),await this.refreshQueue()}catch(e){this.queueError=e.message}}}(j),I=globalThis.__sveltekit_1o6l84.env,L={id:`expert`,label:`Expert`,href:`/projects`,matches:e=>e===`/`||e.startsWith(`/projects`)||e.startsWith(`/features`)},R={builder:{id:`builder`,label:`Builder`,href:`/builder-mode`,matches:e=>e.startsWith(`/builder-mode`)}},z=e=>{let t=(e??``).split(`,`).map(e=>e.trim().toLowerCase()).filter(e=>e.length>0&&e!==`expert`&&e in R);return[`expert`,...new Set(t)]},B=e=>z(e).map(e=>e===`expert`?L:R[e]),V=(e,t)=>z(e).includes(t),H=()=>B(I.PUBLIC_UNSPA_VIEWS),U=e=>V(I.PUBLIC_UNSPA_VIEWS,e);export{S as a,F as i,U as n,C as o,I as r,H as t};