plum-e2e 2.12.0 → 2.12.1

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 (298) hide show
  1. package/README.md +23 -22
  2. package/backend/scripts/manage-nodes.mjs +2 -2
  3. package/bin/plum.js +27 -7
  4. package/frontend/.svelte-kit/adapter-node/.vite/manifest.json +4 -4
  5. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/{_layout.B4TT3qNx.css → _layout.DWCC-fI9.css} +1 -1
  6. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.B3djLY18.css +6 -0
  7. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
  8. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
  9. package/frontend/.svelte-kit/adapter-node/chunks/internal.js +1 -1
  10. package/frontend/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +0 -2
  11. package/frontend/.svelte-kit/adapter-node/entries/pages/live/_id_/_page.svelte.js +1 -1
  12. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_id_/_page.svelte.js +0 -2
  13. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/_page.svelte.js +35 -27
  14. package/frontend/.svelte-kit/adapter-node/manifest-full.js +1 -1
  15. package/frontend/.svelte-kit/adapter-node/manifest.js +1 -1
  16. package/frontend/.svelte-kit/adapter-node/nodes/0.js +2 -2
  17. package/frontend/.svelte-kit/adapter-node/nodes/1.js +1 -1
  18. package/frontend/.svelte-kit/adapter-node/nodes/10.js +2 -2
  19. package/frontend/.svelte-kit/adapter-node/nodes/11.js +1 -1
  20. package/frontend/.svelte-kit/adapter-node/nodes/12.js +1 -1
  21. package/frontend/.svelte-kit/adapter-node/nodes/3.js +2 -2
  22. package/frontend/.svelte-kit/adapter-node/nodes/4.js +1 -1
  23. package/frontend/.svelte-kit/adapter-node/nodes/5.js +1 -1
  24. package/frontend/.svelte-kit/adapter-node/nodes/6.js +2 -2
  25. package/frontend/.svelte-kit/adapter-node/nodes/8.js +1 -1
  26. package/frontend/.svelte-kit/adapter-node/nodes/9.js +1 -1
  27. package/frontend/.svelte-kit/generated/server/internal.js +1 -1
  28. package/frontend/.svelte-kit/output/client/.vite/manifest.json +83 -93
  29. package/frontend/{build/client/_app/immutable/assets/0.BEqlRAtD.css → .svelte-kit/output/client/_app/immutable/assets/0.DbhNvxzA.css} +1 -1
  30. package/frontend/.svelte-kit/output/client/_app/immutable/assets/10.D2ehp3UL.css +6 -0
  31. package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.B3djLY18.css +6 -0
  32. package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.BofiCOMr.css +6 -0
  33. package/frontend/.svelte-kit/output/client/_app/immutable/assets/{_layout.B4TT3qNx.css → _layout.DWCC-fI9.css} +1 -1
  34. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.B3djLY18.css +6 -0
  35. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
  36. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
  37. package/frontend/{build/client/_app/immutable/chunks/BdBJfKUi.js → .svelte-kit/output/client/_app/immutable/chunks/B74j8LrV.js} +1 -1
  38. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DiexacSB.js → BIDsfWFz.js} +1 -1
  39. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BX-5iVGy.js +8 -0
  40. package/frontend/{build/client/_app/immutable/chunks/r_d1Iu0W.js → .svelte-kit/output/client/_app/immutable/chunks/DFZtPGTY.js} +1 -1
  41. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Dn1b1Jgc.js +6 -0
  42. package/frontend/{build/client/_app/immutable/chunks/Dlymnwnf.js → .svelte-kit/output/client/_app/immutable/chunks/QwDXcLXz.js} +1 -1
  43. package/frontend/.svelte-kit/output/client/_app/immutable/entry/{app.DgdSwPuN.js → app.oEEXlUWx.js} +2 -2
  44. package/frontend/.svelte-kit/output/client/_app/immutable/entry/{start.D_lhI48n.js → start.BtJ124rC.js} +1 -1
  45. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.coxCxRRE.js +6 -0
  46. package/frontend/{build/client/_app/immutable/nodes/1.JIF2GfHq.js → .svelte-kit/output/client/_app/immutable/nodes/1.C-Zryp-y.js} +1 -1
  47. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.CXqf0Rbs.js +6 -0
  48. package/frontend/{build/client/_app/immutable/nodes/11.CVSPxlqY.js → .svelte-kit/output/client/_app/immutable/nodes/11.PLIMGzrY.js} +1 -1
  49. package/frontend/{build/client/_app/immutable/nodes/12.CnAR0AQb.js → .svelte-kit/output/client/_app/immutable/nodes/12.BGCTaTPG.js} +1 -1
  50. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.HmZmGlze.js +6 -0
  51. package/frontend/{build/client/_app/immutable/nodes/4.BX70m3v6.js → .svelte-kit/output/client/_app/immutable/nodes/4.ahxFrDUH.js} +1 -1
  52. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{5.UIFh06yr.js → 5.BXasF8ka.js} +1 -1
  53. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DYiAtU_m.js +10 -0
  54. package/frontend/{build/client/_app/immutable/nodes/8.CVHgJw-E.js → .svelte-kit/output/client/_app/immutable/nodes/8.iy5VcxjU.js} +1 -1
  55. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{9.DDDQPmMj.js → 9.Bcqk4p04.js} +1 -1
  56. package/frontend/.svelte-kit/output/client/_app/version.json +1 -1
  57. package/frontend/.svelte-kit/output/server/.vite/manifest.json +4 -4
  58. package/frontend/{build/client/_app/immutable/assets/_layout.B4TT3qNx.css → .svelte-kit/output/server/_app/immutable/assets/_layout.DWCC-fI9.css} +1 -1
  59. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.B3djLY18.css +6 -0
  60. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
  61. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
  62. package/frontend/.svelte-kit/output/server/chunks/internal.js +1 -1
  63. package/frontend/.svelte-kit/output/server/entries/pages/_layout.svelte.js +0 -2
  64. package/frontend/.svelte-kit/output/server/entries/pages/live/_id_/_page.svelte.js +1 -1
  65. package/frontend/.svelte-kit/output/server/entries/pages/reports/_id_/_page.svelte.js +0 -2
  66. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/_page.svelte.js +35 -27
  67. package/frontend/.svelte-kit/output/server/manifest-full.js +1 -1
  68. package/frontend/.svelte-kit/output/server/manifest.js +1 -1
  69. package/frontend/.svelte-kit/output/server/nodes/0.js +2 -2
  70. package/frontend/.svelte-kit/output/server/nodes/1.js +1 -1
  71. package/frontend/.svelte-kit/output/server/nodes/10.js +2 -2
  72. package/frontend/.svelte-kit/output/server/nodes/11.js +1 -1
  73. package/frontend/.svelte-kit/output/server/nodes/12.js +1 -1
  74. package/frontend/.svelte-kit/output/server/nodes/3.js +2 -2
  75. package/frontend/.svelte-kit/output/server/nodes/4.js +1 -1
  76. package/frontend/.svelte-kit/output/server/nodes/5.js +1 -1
  77. package/frontend/.svelte-kit/output/server/nodes/6.js +2 -2
  78. package/frontend/.svelte-kit/output/server/nodes/8.js +1 -1
  79. package/frontend/.svelte-kit/output/server/nodes/9.js +1 -1
  80. package/frontend/{.svelte-kit/output/client/_app/immutable/assets/0.BEqlRAtD.css → build/client/_app/immutable/assets/0.DbhNvxzA.css} +1 -1
  81. package/frontend/build/client/_app/immutable/assets/0.DbhNvxzA.css.br +0 -0
  82. package/frontend/build/client/_app/immutable/assets/0.DbhNvxzA.css.gz +0 -0
  83. package/frontend/build/client/_app/immutable/assets/10.D2ehp3UL.css +6 -0
  84. package/frontend/build/client/_app/immutable/assets/10.D2ehp3UL.css.br +0 -0
  85. package/frontend/build/client/_app/immutable/assets/10.D2ehp3UL.css.gz +0 -0
  86. package/frontend/build/client/_app/immutable/assets/3.B3djLY18.css +6 -0
  87. package/frontend/build/client/_app/immutable/assets/3.B3djLY18.css.br +0 -0
  88. package/frontend/build/client/_app/immutable/assets/3.B3djLY18.css.gz +0 -0
  89. package/frontend/build/client/_app/immutable/assets/6.BofiCOMr.css +6 -0
  90. package/frontend/build/client/_app/immutable/assets/6.BofiCOMr.css.br +0 -0
  91. package/frontend/build/client/_app/immutable/assets/6.BofiCOMr.css.gz +0 -0
  92. package/frontend/{.svelte-kit/output/server/_app/immutable/assets/_layout.B4TT3qNx.css → build/client/_app/immutable/assets/_layout.DWCC-fI9.css} +1 -1
  93. package/frontend/build/client/_app/immutable/assets/_layout.DWCC-fI9.css.br +0 -0
  94. package/frontend/build/client/_app/immutable/assets/_layout.DWCC-fI9.css.gz +0 -0
  95. package/frontend/build/client/_app/immutable/assets/_page.B3djLY18.css +6 -0
  96. package/frontend/build/client/_app/immutable/assets/_page.B3djLY18.css.br +0 -0
  97. package/frontend/build/client/_app/immutable/assets/_page.B3djLY18.css.gz +0 -0
  98. package/frontend/build/client/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
  99. package/frontend/build/client/_app/immutable/assets/_page.BNh9zY8Y.css.br +0 -0
  100. package/frontend/build/client/_app/immutable/assets/_page.BNh9zY8Y.css.gz +0 -0
  101. package/frontend/build/client/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
  102. package/frontend/build/client/_app/immutable/assets/_page.D1jbMcpb.css.br +0 -0
  103. package/frontend/build/client/_app/immutable/assets/_page.D1jbMcpb.css.gz +0 -0
  104. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/BdBJfKUi.js → build/client/_app/immutable/chunks/B74j8LrV.js} +1 -1
  105. package/frontend/build/client/_app/immutable/chunks/B74j8LrV.js.br +0 -0
  106. package/frontend/build/client/_app/immutable/chunks/B74j8LrV.js.gz +0 -0
  107. package/frontend/build/client/_app/immutable/chunks/{DiexacSB.js → BIDsfWFz.js} +1 -1
  108. package/frontend/build/client/_app/immutable/chunks/BIDsfWFz.js.br +0 -0
  109. package/frontend/build/client/_app/immutable/chunks/BIDsfWFz.js.gz +0 -0
  110. package/frontend/build/client/_app/immutable/chunks/BX-5iVGy.js +8 -0
  111. package/frontend/build/client/_app/immutable/chunks/BX-5iVGy.js.br +0 -0
  112. package/frontend/build/client/_app/immutable/chunks/BX-5iVGy.js.gz +0 -0
  113. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/r_d1Iu0W.js → build/client/_app/immutable/chunks/DFZtPGTY.js} +1 -1
  114. package/frontend/build/client/_app/immutable/chunks/{r_d1Iu0W.js.br → DFZtPGTY.js.br} +0 -0
  115. package/frontend/build/client/_app/immutable/chunks/{r_d1Iu0W.js.gz → DFZtPGTY.js.gz} +0 -0
  116. package/frontend/build/client/_app/immutable/chunks/Dn1b1Jgc.js +6 -0
  117. package/frontend/build/client/_app/immutable/chunks/Dn1b1Jgc.js.br +0 -0
  118. package/frontend/build/client/_app/immutable/chunks/Dn1b1Jgc.js.gz +0 -0
  119. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/Dlymnwnf.js → build/client/_app/immutable/chunks/QwDXcLXz.js} +1 -1
  120. package/frontend/build/client/_app/immutable/chunks/QwDXcLXz.js.br +0 -0
  121. package/frontend/build/client/_app/immutable/chunks/QwDXcLXz.js.gz +0 -0
  122. package/frontend/build/client/_app/immutable/entry/{app.DgdSwPuN.js → app.oEEXlUWx.js} +2 -2
  123. package/frontend/build/client/_app/immutable/entry/app.oEEXlUWx.js.br +0 -0
  124. package/frontend/build/client/_app/immutable/entry/app.oEEXlUWx.js.gz +0 -0
  125. package/frontend/build/client/_app/immutable/entry/{start.D_lhI48n.js → start.BtJ124rC.js} +1 -1
  126. package/frontend/build/client/_app/immutable/entry/{start.D_lhI48n.js.br → start.BtJ124rC.js.br} +1 -1
  127. package/frontend/build/client/_app/immutable/entry/{start.D_lhI48n.js.gz → start.BtJ124rC.js.gz} +0 -0
  128. package/frontend/build/client/_app/immutable/nodes/0.coxCxRRE.js +6 -0
  129. package/frontend/build/client/_app/immutable/nodes/0.coxCxRRE.js.br +0 -0
  130. package/frontend/build/client/_app/immutable/nodes/0.coxCxRRE.js.gz +0 -0
  131. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/1.JIF2GfHq.js → build/client/_app/immutable/nodes/1.C-Zryp-y.js} +1 -1
  132. package/frontend/build/client/_app/immutable/nodes/1.C-Zryp-y.js.br +0 -0
  133. package/frontend/build/client/_app/immutable/nodes/1.C-Zryp-y.js.gz +0 -0
  134. package/frontend/build/client/_app/immutable/nodes/10.CXqf0Rbs.js +6 -0
  135. package/frontend/build/client/_app/immutable/nodes/10.CXqf0Rbs.js.br +0 -0
  136. package/frontend/build/client/_app/immutable/nodes/10.CXqf0Rbs.js.gz +0 -0
  137. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/11.CVSPxlqY.js → build/client/_app/immutable/nodes/11.PLIMGzrY.js} +1 -1
  138. package/frontend/build/client/_app/immutable/nodes/11.PLIMGzrY.js.br +0 -0
  139. package/frontend/build/client/_app/immutable/nodes/11.PLIMGzrY.js.gz +0 -0
  140. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/12.CnAR0AQb.js → build/client/_app/immutable/nodes/12.BGCTaTPG.js} +1 -1
  141. package/frontend/build/client/_app/immutable/nodes/12.BGCTaTPG.js.br +0 -0
  142. package/frontend/build/client/_app/immutable/nodes/12.BGCTaTPG.js.gz +0 -0
  143. package/frontend/build/client/_app/immutable/nodes/3.HmZmGlze.js +6 -0
  144. package/frontend/build/client/_app/immutable/nodes/3.HmZmGlze.js.br +0 -0
  145. package/frontend/build/client/_app/immutable/nodes/3.HmZmGlze.js.gz +0 -0
  146. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/4.BX70m3v6.js → build/client/_app/immutable/nodes/4.ahxFrDUH.js} +1 -1
  147. package/frontend/build/client/_app/immutable/nodes/4.ahxFrDUH.js.br +0 -0
  148. package/frontend/build/client/_app/immutable/nodes/4.ahxFrDUH.js.gz +0 -0
  149. package/frontend/build/client/_app/immutable/nodes/{5.UIFh06yr.js → 5.BXasF8ka.js} +1 -1
  150. package/frontend/build/client/_app/immutable/nodes/5.BXasF8ka.js.br +0 -0
  151. package/frontend/build/client/_app/immutable/nodes/5.BXasF8ka.js.gz +0 -0
  152. package/frontend/build/client/_app/immutable/nodes/6.DYiAtU_m.js +10 -0
  153. package/frontend/build/client/_app/immutable/nodes/6.DYiAtU_m.js.br +0 -0
  154. package/frontend/build/client/_app/immutable/nodes/6.DYiAtU_m.js.gz +0 -0
  155. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/8.CVHgJw-E.js → build/client/_app/immutable/nodes/8.iy5VcxjU.js} +1 -1
  156. package/frontend/build/client/_app/immutable/nodes/8.iy5VcxjU.js.br +0 -0
  157. package/frontend/build/client/_app/immutable/nodes/{8.CVHgJw-E.js.gz → 8.iy5VcxjU.js.gz} +0 -0
  158. package/frontend/build/client/_app/immutable/nodes/{9.DDDQPmMj.js → 9.Bcqk4p04.js} +1 -1
  159. package/frontend/build/client/_app/immutable/nodes/9.Bcqk4p04.js.br +0 -0
  160. package/frontend/build/client/_app/immutable/nodes/9.Bcqk4p04.js.gz +0 -0
  161. package/frontend/build/client/_app/version.json +1 -1
  162. package/frontend/build/client/_app/version.json.br +0 -0
  163. package/frontend/build/client/_app/version.json.gz +0 -0
  164. package/frontend/build/server/chunks/{0-38cvTs44.js → 0-C9vi7MPa.js} +4 -4
  165. package/frontend/build/server/chunks/0-C9vi7MPa.js.map +5 -0
  166. package/frontend/build/server/chunks/{1-CcYsajvR.js → 1-DzLSP_fj.js} +2 -2
  167. package/frontend/build/server/chunks/{1-CcYsajvR.js.map → 1-DzLSP_fj.js.map} +1 -1
  168. package/frontend/build/server/chunks/{10-CFR2MUJt.js → 10-C2C3V4ib.js} +4 -4
  169. package/frontend/build/server/chunks/{10-CFR2MUJt.js.map → 10-C2C3V4ib.js.map} +1 -1
  170. package/frontend/build/server/chunks/{11-BmkiRQ9D.js → 11-TJq4Q43D.js} +2 -2
  171. package/frontend/build/server/chunks/{11-BmkiRQ9D.js.map → 11-TJq4Q43D.js.map} +1 -1
  172. package/frontend/build/server/chunks/{12-BphJAwnL.js → 12-B1JDiNwh.js} +2 -2
  173. package/frontend/build/server/chunks/{12-BphJAwnL.js.map → 12-B1JDiNwh.js.map} +1 -1
  174. package/frontend/build/server/chunks/{3-BvsmdXCj.js → 3-DZ2GSPqb.js} +4 -4
  175. package/frontend/build/server/chunks/{3-BvsmdXCj.js.map → 3-DZ2GSPqb.js.map} +1 -1
  176. package/frontend/build/server/chunks/{4-CN18WCEn.js → 4-C-1FSKpN.js} +2 -2
  177. package/frontend/build/server/chunks/{4-CN18WCEn.js.map → 4-C-1FSKpN.js.map} +1 -1
  178. package/frontend/build/server/chunks/{5-BwLYF3xL.js → 5-ZN8cEN5r.js} +2 -2
  179. package/frontend/build/server/chunks/{5-BwLYF3xL.js.map → 5-ZN8cEN5r.js.map} +1 -1
  180. package/frontend/build/server/chunks/{6-DTM2N_k3.js → 6-CInDe8Ui.js} +4 -4
  181. package/frontend/build/server/chunks/6-CInDe8Ui.js.map +5 -0
  182. package/frontend/build/server/chunks/{8-BfCbb7pl.js → 8-DTzm-G0z.js} +2 -2
  183. package/frontend/build/server/chunks/{8-BfCbb7pl.js.map → 8-DTzm-G0z.js.map} +1 -1
  184. package/frontend/build/server/chunks/{9-CQKepnMw.js → 9-CjMorbDi.js} +2 -2
  185. package/frontend/build/server/chunks/{9-CQKepnMw.js.map → 9-CjMorbDi.js.map} +1 -1
  186. package/frontend/build/server/chunks/{_layout.svelte-B8vZGefg.js → _layout.svelte-CiX-oQp_.js} +4 -3
  187. package/frontend/build/server/chunks/_layout.svelte-CiX-oQp_.js.map +5 -0
  188. package/frontend/build/server/chunks/{_page.svelte-BrnXHxJ4.js → _page.svelte-BYYUOBOB.js} +1 -3
  189. package/frontend/build/server/chunks/_page.svelte-BYYUOBOB.js.map +5 -0
  190. package/frontend/build/server/chunks/{_page.svelte-DM1_y4Oq.js → _page.svelte-BaxqeEYc.js} +36 -28
  191. package/frontend/build/server/chunks/_page.svelte-BaxqeEYc.js.map +5 -0
  192. package/frontend/build/server/chunks/{_page.svelte-Mo-O3HJ5.js → _page.svelte-DAIQT067.js} +2 -2
  193. package/frontend/build/server/chunks/_page.svelte-DAIQT067.js.map +5 -0
  194. package/frontend/build/server/index.js +1 -1
  195. package/frontend/build/server/index.js.map +1 -1
  196. package/frontend/build/server/manifest.js +12 -12
  197. package/frontend/build/server/manifest.js.map +1 -1
  198. package/frontend/package-lock.json +0 -14
  199. package/frontend/package.json +0 -2
  200. package/frontend/src/lib/components/reports/LiveReplayer.svelte +0 -6
  201. package/frontend/src/lib/components/reports/RecordingPlayer.svelte +30 -177
  202. package/frontend/src/lib/components/ui/NotificationStack.svelte +1 -79
  203. package/frontend/src/lib/copy/reports.js +0 -13
  204. package/frontend/src/routes/reports/[id]/+page.svelte +0 -1
  205. package/frontend/src/routes/test-repository/+page.svelte +6 -3
  206. package/package.json +1 -1
  207. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.4bPj83tb.css +0 -6
  208. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Be5c3USL.css +0 -6
  209. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BwgtEi_a.css +0 -6
  210. package/frontend/.svelte-kit/output/client/_app/immutable/assets/10.DC0wD6w_.css +0 -6
  211. package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.Be5c3USL.css +0 -6
  212. package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.DdQVxyZK.css +0 -6
  213. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.4bPj83tb.css +0 -6
  214. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Be5c3USL.css +0 -6
  215. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BwgtEi_a.css +0 -6
  216. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BIjh3jiU.js +0 -8
  217. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BtTNggoY.js +0 -8
  218. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/pNZogwkM.js +0 -6
  219. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.D2F-i1I5.js +0 -6
  220. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.A0AHLfOt.js +0 -6
  221. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.B6KwaCsM.js +0 -6
  222. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DZ1OV24V.js +0 -10
  223. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.4bPj83tb.css +0 -6
  224. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Be5c3USL.css +0 -6
  225. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BwgtEi_a.css +0 -6
  226. package/frontend/build/client/_app/immutable/assets/0.BEqlRAtD.css.br +0 -0
  227. package/frontend/build/client/_app/immutable/assets/0.BEqlRAtD.css.gz +0 -0
  228. package/frontend/build/client/_app/immutable/assets/10.DC0wD6w_.css +0 -6
  229. package/frontend/build/client/_app/immutable/assets/10.DC0wD6w_.css.br +0 -0
  230. package/frontend/build/client/_app/immutable/assets/10.DC0wD6w_.css.gz +0 -0
  231. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css +0 -6
  232. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css.br +0 -0
  233. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css.gz +0 -0
  234. package/frontend/build/client/_app/immutable/assets/6.DdQVxyZK.css +0 -6
  235. package/frontend/build/client/_app/immutable/assets/6.DdQVxyZK.css.br +0 -0
  236. package/frontend/build/client/_app/immutable/assets/6.DdQVxyZK.css.gz +0 -0
  237. package/frontend/build/client/_app/immutable/assets/_layout.B4TT3qNx.css.br +0 -0
  238. package/frontend/build/client/_app/immutable/assets/_layout.B4TT3qNx.css.gz +0 -0
  239. package/frontend/build/client/_app/immutable/assets/_page.4bPj83tb.css +0 -6
  240. package/frontend/build/client/_app/immutable/assets/_page.4bPj83tb.css.br +0 -0
  241. package/frontend/build/client/_app/immutable/assets/_page.4bPj83tb.css.gz +0 -0
  242. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css +0 -6
  243. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css.br +0 -0
  244. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css.gz +0 -0
  245. package/frontend/build/client/_app/immutable/assets/_page.BwgtEi_a.css +0 -6
  246. package/frontend/build/client/_app/immutable/assets/_page.BwgtEi_a.css.br +0 -0
  247. package/frontend/build/client/_app/immutable/assets/_page.BwgtEi_a.css.gz +0 -0
  248. package/frontend/build/client/_app/immutable/chunks/BIjh3jiU.js +0 -8
  249. package/frontend/build/client/_app/immutable/chunks/BIjh3jiU.js.br +0 -0
  250. package/frontend/build/client/_app/immutable/chunks/BIjh3jiU.js.gz +0 -0
  251. package/frontend/build/client/_app/immutable/chunks/BdBJfKUi.js.br +0 -0
  252. package/frontend/build/client/_app/immutable/chunks/BdBJfKUi.js.gz +0 -0
  253. package/frontend/build/client/_app/immutable/chunks/BtTNggoY.js +0 -8
  254. package/frontend/build/client/_app/immutable/chunks/BtTNggoY.js.br +0 -0
  255. package/frontend/build/client/_app/immutable/chunks/BtTNggoY.js.gz +0 -0
  256. package/frontend/build/client/_app/immutable/chunks/DiexacSB.js.br +0 -0
  257. package/frontend/build/client/_app/immutable/chunks/DiexacSB.js.gz +0 -0
  258. package/frontend/build/client/_app/immutable/chunks/Dlymnwnf.js.br +0 -0
  259. package/frontend/build/client/_app/immutable/chunks/Dlymnwnf.js.gz +0 -0
  260. package/frontend/build/client/_app/immutable/chunks/pNZogwkM.js +0 -6
  261. package/frontend/build/client/_app/immutable/chunks/pNZogwkM.js.br +0 -0
  262. package/frontend/build/client/_app/immutable/chunks/pNZogwkM.js.gz +0 -0
  263. package/frontend/build/client/_app/immutable/entry/app.DgdSwPuN.js.br +0 -0
  264. package/frontend/build/client/_app/immutable/entry/app.DgdSwPuN.js.gz +0 -0
  265. package/frontend/build/client/_app/immutable/nodes/0.D2F-i1I5.js +0 -6
  266. package/frontend/build/client/_app/immutable/nodes/0.D2F-i1I5.js.br +0 -0
  267. package/frontend/build/client/_app/immutable/nodes/0.D2F-i1I5.js.gz +0 -0
  268. package/frontend/build/client/_app/immutable/nodes/1.JIF2GfHq.js.br +0 -5
  269. package/frontend/build/client/_app/immutable/nodes/1.JIF2GfHq.js.gz +0 -0
  270. package/frontend/build/client/_app/immutable/nodes/10.A0AHLfOt.js +0 -6
  271. package/frontend/build/client/_app/immutable/nodes/10.A0AHLfOt.js.br +0 -0
  272. package/frontend/build/client/_app/immutable/nodes/10.A0AHLfOt.js.gz +0 -0
  273. package/frontend/build/client/_app/immutable/nodes/11.CVSPxlqY.js.br +0 -0
  274. package/frontend/build/client/_app/immutable/nodes/11.CVSPxlqY.js.gz +0 -0
  275. package/frontend/build/client/_app/immutable/nodes/12.CnAR0AQb.js.br +0 -0
  276. package/frontend/build/client/_app/immutable/nodes/12.CnAR0AQb.js.gz +0 -0
  277. package/frontend/build/client/_app/immutable/nodes/3.B6KwaCsM.js +0 -6
  278. package/frontend/build/client/_app/immutable/nodes/3.B6KwaCsM.js.br +0 -0
  279. package/frontend/build/client/_app/immutable/nodes/3.B6KwaCsM.js.gz +0 -0
  280. package/frontend/build/client/_app/immutable/nodes/4.BX70m3v6.js.br +0 -0
  281. package/frontend/build/client/_app/immutable/nodes/4.BX70m3v6.js.gz +0 -0
  282. package/frontend/build/client/_app/immutable/nodes/5.UIFh06yr.js.br +0 -0
  283. package/frontend/build/client/_app/immutable/nodes/5.UIFh06yr.js.gz +0 -0
  284. package/frontend/build/client/_app/immutable/nodes/6.DZ1OV24V.js +0 -10
  285. package/frontend/build/client/_app/immutable/nodes/6.DZ1OV24V.js.br +0 -0
  286. package/frontend/build/client/_app/immutable/nodes/6.DZ1OV24V.js.gz +0 -0
  287. package/frontend/build/client/_app/immutable/nodes/8.CVHgJw-E.js.br +0 -0
  288. package/frontend/build/client/_app/immutable/nodes/9.DDDQPmMj.js.br +0 -0
  289. package/frontend/build/client/_app/immutable/nodes/9.DDDQPmMj.js.gz +0 -0
  290. package/frontend/build/server/chunks/0-38cvTs44.js.map +0 -5
  291. package/frontend/build/server/chunks/6-DTM2N_k3.js.map +0 -5
  292. package/frontend/build/server/chunks/_layout.svelte-B8vZGefg.js.map +0 -5
  293. package/frontend/build/server/chunks/_page.svelte-BrnXHxJ4.js.map +0 -5
  294. package/frontend/build/server/chunks/_page.svelte-DM1_y4Oq.js.map +0 -5
  295. package/frontend/build/server/chunks/_page.svelte-Mo-O3HJ5.js.map +0 -5
  296. package/frontend/src/lib/stores/replayVideo.js +0 -51
  297. package/frontend/src/lib/utils/replayCapture.js +0 -91
  298. package/frontend/src/lib/utils/replayVideo.js +0 -111
@@ -3,4 +3,4 @@
3
3
  * Licensed under the MIT License. See LICENSE file in the project root for details.
4
4
  */
5
5
 
6
- :root{--bg: #fdfcfb;--bg-subtle: #f7f6f4;--bg-elevated: #ffffff;--border: #e9e5df;--text: #18160f;--text-muted: #9c9185;--accent: #5c1b87;--accent-soft: #f3eaff;--pass: #16a34a;--pass-soft: #dcfce7;--fail: #dc2626;--fail-soft: #fee2e2;--warn: #d97706;--warn-soft: #fef3c7;--node: #0284c7;--node-soft: #e0f2fe;--external: #0d9488;--external-soft: #ccfbf1;--terminal-bg: #0d0c08;--terminal-text: #d6d0c8;--code-tag: #7dd3fc;--code-attr: #fbbf24;--code-string: #86efac;--code-comment: #9ca3af;--font-display: "Playfair Display", Georgia, serif;--font-body: "DM Sans", system-ui, -apple-system, sans-serif;--ease-out: cubic-bezier(.16, 1, .3, 1);--duration-fast: .14s;--duration-base: .24s;--duration-slow: .4s;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-pill: 100px;--white: #ffffff;--bottom-bar-height: 55px}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes dotPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.65)}}[data-theme=dark]{--bg: #101009;--bg-subtle: #1a1910;--bg-elevated: #201f14;--border: #2e2c1e;--text: #f0ede6;--text-muted: #706a5e;--accent: #d0a5f5;--accent-soft: #1b0d30;--pass: #22c55e;--pass-soft: #0d2118;--fail: #f87171;--fail-soft: #2d1010;--warn: #fbbf24;--warn-soft: #2a1f06;--node: #38bdf8;--node-soft: #082032;--external: #2dd4bf;--external-soft: #0f2e2b;--terminal-bg: #080807;--terminal-text: #cbc5bd}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-body);font-weight:300;font-size:1rem;line-height:1.65;background-color:var(--bg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='0.07'/%3E%3C/svg%3E");background-size:200px 200px;color:var(--text);-webkit-font-smoothing:antialiased;transition:background-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}h1{font-family:var(--font-display);font-weight:400;line-height:1.1;letter-spacing:-.015em;color:var(--text)}h2,h3{font-family:var(--font-display);font-weight:400;line-height:1.2;color:var(--text)}a{color:inherit;text-decoration:none}button{font-family:var(--font-body)}.field{display:flex;flex-direction:column;gap:.375rem}.field-label{display:flex;justify-content:space-between;font-size:.8125rem;font-weight:400;color:var(--text-muted)}.field-hint{font-size:.75rem;color:var(--text-muted)}.field-input{width:100%;padding:.6rem .875rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);color:var(--text);font-family:var(--font-body);font-size:.875rem;font-weight:300;outline:none;appearance:none;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.field-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field-input:disabled{opacity:.5;cursor:not-allowed}.field-input::placeholder{color:var(--text-muted)}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table th{text-align:left;padding:.5rem 1rem;font-family:var(--font-body);font-weight:500;font-size:.7rem;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border)}.data-table td{padding:.875rem 1rem;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;transition:background var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out)}.card-title{font-family:var(--font-display);font-size:1.25rem;font-weight:400;color:var(--text);margin-bottom:.25rem}.card-subtitle{font-size:.8125rem;color:var(--text-muted);margin-bottom:1.25rem}.alert{display:flex;align-items:center;gap:.625rem;padding:.75rem 1rem;border-radius:var(--radius-md);font-size:.875rem;font-weight:400}.alert-success{background:var(--pass-soft);color:var(--pass)}.alert-error{background:var(--fail-soft);color:var(--fail)}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.nav.svelte-10t98u4{position:sticky;top:0;z-index:40;background:var(--bg);border-bottom:1px solid var(--border);transition:background var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out)}.inner.svelte-10t98u4{max-width:1200px;margin:0 auto;padding:0 1.5rem;height:56px;display:flex;align-items:center;gap:2rem}.brand.svelte-10t98u4{font-size:1.2rem;letter-spacing:-.02em;flex-shrink:0;text-decoration:none}.brand-serif.svelte-10t98u4{font-family:var(--font-display);font-weight:400;color:var(--accent)}.brand-sans.svelte-10t98u4{font-family:var(--font-body);font-weight:400;color:var(--text)}.project-card.svelte-10t98u4{display:flex;align-items:center;gap:.4rem;padding:.25rem .6rem .25rem .5rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);flex-shrink:0}.project-logo.svelte-10t98u4{width:16px;height:16px;object-fit:contain;border-radius:2px;flex-shrink:0}.project-name.svelte-10t98u4{font-size:.78rem;font-weight:500;color:var(--text);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.links.svelte-10t98u4{display:flex;gap:.125rem;flex:1}.link.svelte-10t98u4{font-size:.875rem;font-weight:400;color:var(--text-muted);text-decoration:none;padding:.35rem .75rem;border-radius:var(--radius-sm);transition:color var(--duration-fast),background var(--duration-fast)}.link.svelte-10t98u4:hover{color:var(--text);background:var(--bg-subtle)}.link.active.svelte-10t98u4{color:var(--accent);background:var(--accent-soft)}.nav-sep.svelte-10t98u4{display:block;width:1px;height:18px;background:var(--border);margin:0 .375rem;flex-shrink:0;align-self:center}.link.repo.svelte-10t98u4{border:1px solid var(--border);padding:.3rem .75rem}.link.repo.svelte-10t98u4:hover{border-color:var(--text-muted)}.link.repo.active.svelte-10t98u4{border-color:var(--accent)}.actions.svelte-10t98u4{display:flex;align-items:center;gap:.5rem;margin-left:auto}.nav-user.svelte-10t98u4{font-size:.8125rem;color:var(--text-muted);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 640px){.nav-user.svelte-10t98u4{display:none}}.settings-btn.svelte-10t98u4{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-muted);text-decoration:none;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.settings-btn.svelte-10t98u4:hover{background:var(--bg-subtle);color:var(--text);border-color:var(--text-muted)}.settings-btn.active.svelte-10t98u4{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.hamburger.svelte-10t98u4{display:none;flex-direction:column;justify-content:center;gap:4px;width:34px;height:34px;background:none;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;padding:0 8px}.hamburger.svelte-10t98u4 span:where(.svelte-10t98u4){display:block;width:100%;height:1.5px;background:var(--text-muted);border-radius:2px;transform-origin:center;transition:transform var(--duration-base) var(--ease-out),opacity var(--duration-fast)}.hamburger.svelte-10t98u4 span.rotated:where(.svelte-10t98u4){transform:translateY(5.5px) rotate(45deg)}.hamburger.svelte-10t98u4 span.hidden:where(.svelte-10t98u4){opacity:0}.hamburger.svelte-10t98u4 span.rotated-reverse:where(.svelte-10t98u4){transform:translateY(-5.5px) rotate(-45deg)}.mobile-menu.svelte-10t98u4{border-top:1px solid var(--border);padding:.75rem 1.5rem 1rem;display:flex;flex-direction:column;gap:.125rem}.mobile-link.svelte-10t98u4{color:var(--text-muted);text-decoration:none;font-size:.9375rem;font-weight:400;padding:.5rem .75rem;border-radius:var(--radius-sm);transition:background var(--duration-fast),color var(--duration-fast)}.mobile-link.svelte-10t98u4:hover,.mobile-link.active.svelte-10t98u4{background:var(--bg-subtle);color:var(--text)}.mobile-link.active.svelte-10t98u4{color:var(--accent);background:var(--accent-soft)}.mobile-sep.svelte-10t98u4{border:none;border-top:1px solid var(--border);margin:.375rem .75rem}@media (max-width: 640px){.links.svelte-10t98u4{display:none}.hamburger.svelte-10t98u4{display:flex}}.shell.svelte-28zx1m{max-width:1200px;margin:0 auto;padding:2.5rem 1.5rem 5rem}.panel.svelte-1pcdei1{position:fixed;bottom:0;left:0;right:0;z-index:200;background:var(--bg-elevated);border-top:1px solid var(--border);box-shadow:0 -4px 32px #00000012}.scan-line.svelte-1pcdei1{height:2px;background:var(--border);transition:background .5s ease;overflow:hidden;position:relative}.scan-line.scanning.svelte-1pcdei1{background:color-mix(in srgb,var(--accent) 30%,var(--border))}.scan-line.scanning.svelte-1pcdei1:after{content:"";position:absolute;inset:0;width:35%;background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:svelte-1pcdei1-scan 1.8s ease-in-out infinite}.scan-line.line-pass.svelte-1pcdei1{background:var(--pass)}.scan-line.line-fail.svelte-1pcdei1{background:var(--fail)}@keyframes svelte-1pcdei1-scan{0%{transform:translate(-100%)}to{transform:translate(400%)}}.bar.svelte-1pcdei1{display:flex;align-items:center;height:52px;padding:0 1rem 0 1.25rem;gap:.75rem}.flex-gap.svelte-1pcdei1{flex:1}.flex-gap-sm.svelte-1pcdei1{width:.5rem}.bar-left.svelte-1pcdei1{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.bar-status.svelte-1pcdei1{display:flex;align-items:center;gap:.5rem}.status-dot.svelte-1pcdei1{width:7px;height:7px;border-radius:50%;flex-shrink:0;transition:background .4s ease}.status-dot.pulse.svelte-1pcdei1{animation:dotPulse 1.6s ease-in-out infinite}.status-word.svelte-1pcdei1{font-size:.72rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;transition:color .4s ease;white-space:nowrap}.view-report-btn.svelte-1pcdei1{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;font-weight:500;color:var(--accent);text-decoration:none;white-space:nowrap;border:1px solid var(--accent);border-radius:var(--radius-sm);padding:.2rem .6rem;background:var(--accent-soft);transition:background var(--duration-fast),color var(--duration-fast)}.view-report-btn.svelte-1pcdei1:hover{background:var(--accent);color:var(--white)}.bar-center.svelte-1pcdei1{display:flex;align-items:center;gap:.625rem}.input-wrap.svelte-1pcdei1{position:relative;display:flex;align-items:center}.input-icon.svelte-1pcdei1{position:absolute;left:.6rem;color:var(--text-muted);pointer-events:none;opacity:.6}.tag-input.svelte-1pcdei1{height:28px;padding:0 .75rem 0 2rem;font-size:.8rem;font-family:JetBrains Mono,monospace;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);outline:none;transition:border-color var(--duration-fast);width:200px}.tag-input.svelte-1pcdei1:focus{border-color:var(--accent)}.tag-input.svelte-1pcdei1::placeholder{color:var(--text-muted);opacity:.45}.tag-input.svelte-1pcdei1:disabled{opacity:.45}.ctrl-divider.svelte-1pcdei1{width:1px;height:24px;background:var(--border);flex-shrink:0}.ctrl-group.svelte-1pcdei1{display:flex;flex-direction:column;gap:2px}.ctrl-label.svelte-1pcdei1{font-size:.555rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);opacity:.65;line-height:1}.stepper.svelte-1pcdei1{display:flex;align-items:center;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.step-btn.svelte-1pcdei1{width:20px;height:24px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--text-muted);cursor:pointer;font-size:.875rem;font-weight:400;line-height:1;transition:color var(--duration-fast),background var(--duration-fast)}.step-btn.svelte-1pcdei1:hover:not(:disabled){color:var(--text);background:var(--bg-elevated)}.step-btn.svelte-1pcdei1:disabled{opacity:.3;cursor:default}.step-val.svelte-1pcdei1{min-width:20px;text-align:center;font-size:.78rem;font-weight:500;color:var(--text);font-family:JetBrains Mono,monospace;line-height:24px;border-left:1px solid var(--border);border-right:1px solid var(--border)}.dropdown-wrap.svelte-1pcdei1{position:relative}.dropdown-trigger.svelte-1pcdei1{display:inline-flex;align-items:center;gap:.3rem;height:24px;padding:0 .5rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-body);font-size:.78rem;color:var(--text);cursor:pointer;transition:border-color var(--duration-fast),background var(--duration-fast),color var(--duration-fast);white-space:nowrap}.dropdown-trigger.svelte-1pcdei1:hover:not(:disabled){border-color:color-mix(in srgb,var(--text-muted) 50%,var(--border))}.dropdown-trigger.open.svelte-1pcdei1{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.dropdown-trigger.has-remote.svelte-1pcdei1{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.dropdown-trigger.svelte-1pcdei1:disabled{opacity:.45;cursor:default}.trigger-chevron.svelte-1pcdei1{transition:transform .18s var(--ease-out);flex-shrink:0}.trigger-chevron.open.svelte-1pcdei1{transform:rotate(180deg)}.dropdown-menu.svelte-1pcdei1{position:absolute;bottom:calc(100% + 8px);left:0;min-width:130px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:0 8px 28px #00000021;padding:.3rem;z-index:300;display:flex;flex-direction:column;gap:1px}.dropdown-item.svelte-1pcdei1{display:flex;align-items:center;gap:.5rem;width:100%;padding:.35rem .5rem;border:none;border-radius:var(--radius-sm);background:transparent;font-family:var(--font-body);font-size:.8125rem;color:var(--text);cursor:pointer;text-align:left;transition:background var(--duration-fast)}.dropdown-item.svelte-1pcdei1:hover{background:var(--bg-subtle)}.dropdown-item.active.svelte-1pcdei1{color:var(--accent)}.runners-menu.svelte-1pcdei1{min-width:160px}.runner-option.svelte-1pcdei1{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.8125rem;color:var(--text);transition:background var(--duration-fast)}.runner-option.svelte-1pcdei1:hover{background:var(--bg-subtle)}.runner-option.svelte-1pcdei1 input[type=checkbox]:where(.svelte-1pcdei1){accent-color:var(--accent);width:13px;height:13px;cursor:pointer;flex-shrink:0}.runner-dot.svelte-1pcdei1{width:6px;height:6px;border-radius:50%;flex-shrink:0}.runner-dot.built-in.svelte-1pcdei1{background:var(--accent)}.runner-dot.remote.svelte-1pcdei1{background:var(--pass)}.run-btn.svelte-1pcdei1{display:inline-flex;align-items:center;gap:.4rem;height:30px;padding:0 .875rem;background:var(--accent);color:var(--white);border:none;border-radius:var(--radius-sm);font-family:var(--font-body);font-size:.8125rem;font-weight:500;cursor:pointer;transition:opacity var(--duration-fast);flex-shrink:0}.run-btn.svelte-1pcdei1:hover:not(:disabled){opacity:.88}.run-btn.svelte-1pcdei1:disabled{opacity:.6;cursor:default}@keyframes svelte-1pcdei1-spin{to{transform:rotate(360deg)}}.notify-toggles.svelte-1pcdei1{display:flex;gap:.25rem}.notify-btn.svelte-1pcdei1{height:26px;padding:0 .5rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-muted);font-size:.75rem;font-family:inherit;cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.notify-btn.svelte-1pcdei1:hover:not(:disabled){color:var(--text);border-color:var(--text-muted)}.notify-btn.active.svelte-1pcdei1{background:var(--accent);border-color:var(--accent);color:var(--white)}.notify-btn.svelte-1pcdei1:disabled{opacity:.4;cursor:default}.expand-btn.svelte-1pcdei1{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast);flex-shrink:0}.expand-btn.svelte-1pcdei1:hover{background:var(--bg-subtle);color:var(--text);border-color:var(--text-muted)}.expand-btn.svelte-1pcdei1 svg:where(.svelte-1pcdei1){transition:transform .2s var(--ease-out)}.expand-btn.svelte-1pcdei1 svg.flipped:where(.svelte-1pcdei1){transform:rotate(180deg)}.body.svelte-1pcdei1{border-top:1px solid var(--border);padding:.625rem 1.25rem;display:flex;flex-direction:column;gap:.375rem;min-height:72px}.run-card.svelte-1pcdei1{display:flex;align-items:center;gap:.75rem;padding:.625rem .875rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);color:inherit;transition:background var(--duration-fast),border-color var(--duration-fast)}.run-card.svelte-1pcdei1:hover{background:var(--bg-elevated);border-color:var(--accent)}.run-card.active-run.svelte-1pcdei1{border-left:3px solid var(--accent)}.run-card.queued-run.svelte-1pcdei1{border-left:3px solid var(--warn)}.run-card-main.svelte-1pcdei1{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0;text-decoration:none;color:inherit}.run-card-cancel.svelte-1pcdei1{display:flex;align-items:center;justify-content:center;width:22px;height:22px;flex-shrink:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast)}.run-card-cancel.svelte-1pcdei1:hover{color:var(--fail);border-color:var(--fail)}.run-card-dot.svelte-1pcdei1{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:var(--border)}.pulse-accent.svelte-1pcdei1{background:var(--accent);animation:dotPulse 1.6s ease-in-out infinite}.queued-dot.svelte-1pcdei1{background:var(--warn)}.run-card-info.svelte-1pcdei1{display:flex;flex-direction:column;gap:.1rem;flex:1;min-width:0}.run-card-label.svelte-1pcdei1{font-size:.8125rem;font-weight:500;color:var(--text)}.run-card-meta.svelte-1pcdei1{font-size:.72rem;font-family:JetBrains Mono,monospace;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.meta-dot.svelte-1pcdei1{opacity:.4;margin:0 .15rem}.run-card-arrow.svelte-1pcdei1{color:var(--text-muted);flex-shrink:0;transition:transform var(--duration-fast) var(--ease-out),color var(--duration-fast)}.run-card.svelte-1pcdei1:hover .run-card-arrow:where(.svelte-1pcdei1){transform:translate(3px);color:var(--accent)}.empty-runs.svelte-1pcdei1{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 0;color:var(--text-muted);font-size:.8125rem}.empty-icon.svelte-1pcdei1{opacity:.4}.run-chip.svelte-1pcdei1{display:inline-flex;align-items:center;gap:.4rem;height:28px;padding:0 .5rem 0 .625rem;background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--accent);font-size:.78rem;white-space:nowrap;max-width:200px}.run-chip-title.svelte-1pcdei1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.run-chip-count.svelte-1pcdei1{font-size:.65rem;font-weight:600;letter-spacing:.04em;opacity:.75;white-space:nowrap;flex-shrink:0}.run-chip-count.none.svelte-1pcdei1{color:var(--fail);opacity:1}.run-chip-spinner.svelte-1pcdei1{width:9px;height:9px;border:1.5px solid color-mix(in srgb,var(--accent) 35%,transparent);border-top-color:var(--accent);border-radius:50%;animation:svelte-1pcdei1-spin .65s linear infinite;flex-shrink:0}.run-chip-clear.svelte-1pcdei1{display:flex;align-items:center;justify-content:center;width:16px;height:16px;border:none;background:transparent;color:var(--accent);cursor:pointer;border-radius:2px;opacity:.7;padding:0;flex-shrink:0;transition:opacity var(--duration-fast)}.run-chip-clear.svelte-1pcdei1:hover{opacity:1}.run-pick-menu.svelte-1pcdei1{min-width:180px;max-height:240px;overflow-y:auto}.dropdown-divider.svelte-1pcdei1{height:1px;background:var(--border);margin:.25rem 0}.dropdown-empty.svelte-1pcdei1{font-size:.8125rem;color:var(--text-muted);padding:.35rem .5rem;text-align:center;opacity:.7}.stack.svelte-1l6rncl{position:fixed;right:1rem;bottom:3.25rem;z-index:600;display:flex;flex-direction:column-reverse;gap:.5rem;max-width:min(20rem,calc(100vw - 2rem));pointer-events:none}.card.svelte-1l6rncl{pointer-events:auto;padding:.7rem .85rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:0 8px 28px #00000029;font-size:.82rem}.row.svelte-1l6rncl{display:flex;align-items:center;gap:.55rem}.msg.svelte-1l6rncl{flex:1;color:var(--text);line-height:1.35}.sub.svelte-1l6rncl{margin-top:.4rem;color:var(--text-muted);font-size:.72rem}.dot.svelte-1l6rncl{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:var(--text-muted)}.dot.success.svelte-1l6rncl{background:var(--pass)}.dot.error.svelte-1l6rncl{background:var(--fail)}.dot.info.svelte-1l6rncl{background:var(--accent)}.link.svelte-1l6rncl{display:inline-flex;align-items:center;background:none;border:none;color:var(--text-muted);cursor:pointer;padding:0;flex-shrink:0}.link.text.svelte-1l6rncl{font-size:.75rem}.link.svelte-1l6rncl:hover{color:var(--accent)}.bar.svelte-1l6rncl{margin-top:.55rem;height:4px;border-radius:var(--radius-pill);background:var(--bg-subtle);overflow:hidden}.fill.svelte-1l6rncl{display:block;height:100%;background:var(--accent);transition:width .2s var(--ease-out)}.spinner.svelte-1l6rncl{width:12px;height:12px;flex-shrink:0;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:svelte-1l6rncl-spin .7s linear infinite}@keyframes svelte-1l6rncl-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner.svelte-1l6rncl{animation-duration:2s}}.boot-loading.svelte-3qbr79{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);color:var(--text-muted);font-size:.875rem}
6
+ :root{--bg: #fdfcfb;--bg-subtle: #f7f6f4;--bg-elevated: #ffffff;--border: #e9e5df;--text: #18160f;--text-muted: #9c9185;--accent: #5c1b87;--accent-soft: #f3eaff;--pass: #16a34a;--pass-soft: #dcfce7;--fail: #dc2626;--fail-soft: #fee2e2;--warn: #d97706;--warn-soft: #fef3c7;--node: #0284c7;--node-soft: #e0f2fe;--external: #0d9488;--external-soft: #ccfbf1;--terminal-bg: #0d0c08;--terminal-text: #d6d0c8;--code-tag: #7dd3fc;--code-attr: #fbbf24;--code-string: #86efac;--code-comment: #9ca3af;--font-display: "Playfair Display", Georgia, serif;--font-body: "DM Sans", system-ui, -apple-system, sans-serif;--ease-out: cubic-bezier(.16, 1, .3, 1);--duration-fast: .14s;--duration-base: .24s;--duration-slow: .4s;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-pill: 100px;--white: #ffffff;--bottom-bar-height: 55px}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes dotPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.65)}}[data-theme=dark]{--bg: #101009;--bg-subtle: #1a1910;--bg-elevated: #201f14;--border: #2e2c1e;--text: #f0ede6;--text-muted: #706a5e;--accent: #d0a5f5;--accent-soft: #1b0d30;--pass: #22c55e;--pass-soft: #0d2118;--fail: #f87171;--fail-soft: #2d1010;--warn: #fbbf24;--warn-soft: #2a1f06;--node: #38bdf8;--node-soft: #082032;--external: #2dd4bf;--external-soft: #0f2e2b;--terminal-bg: #080807;--terminal-text: #cbc5bd}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-body);font-weight:300;font-size:1rem;line-height:1.65;background-color:var(--bg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='0.07'/%3E%3C/svg%3E");background-size:200px 200px;color:var(--text);-webkit-font-smoothing:antialiased;transition:background-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}h1{font-family:var(--font-display);font-weight:400;line-height:1.1;letter-spacing:-.015em;color:var(--text)}h2,h3{font-family:var(--font-display);font-weight:400;line-height:1.2;color:var(--text)}a{color:inherit;text-decoration:none}button{font-family:var(--font-body)}.field{display:flex;flex-direction:column;gap:.375rem}.field-label{display:flex;justify-content:space-between;font-size:.8125rem;font-weight:400;color:var(--text-muted)}.field-hint{font-size:.75rem;color:var(--text-muted)}.field-input{width:100%;padding:.6rem .875rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);color:var(--text);font-family:var(--font-body);font-size:.875rem;font-weight:300;outline:none;appearance:none;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.field-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field-input:disabled{opacity:.5;cursor:not-allowed}.field-input::placeholder{color:var(--text-muted)}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table th{text-align:left;padding:.5rem 1rem;font-family:var(--font-body);font-weight:500;font-size:.7rem;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border)}.data-table td{padding:.875rem 1rem;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;transition:background var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out)}.card-title{font-family:var(--font-display);font-size:1.25rem;font-weight:400;color:var(--text);margin-bottom:.25rem}.card-subtitle{font-size:.8125rem;color:var(--text-muted);margin-bottom:1.25rem}.alert{display:flex;align-items:center;gap:.625rem;padding:.75rem 1rem;border-radius:var(--radius-md);font-size:.875rem;font-weight:400}.alert-success{background:var(--pass-soft);color:var(--pass)}.alert-error{background:var(--fail-soft);color:var(--fail)}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.nav.svelte-10t98u4{position:sticky;top:0;z-index:40;background:var(--bg);border-bottom:1px solid var(--border);transition:background var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out)}.inner.svelte-10t98u4{max-width:1200px;margin:0 auto;padding:0 1.5rem;height:56px;display:flex;align-items:center;gap:2rem}.brand.svelte-10t98u4{font-size:1.2rem;letter-spacing:-.02em;flex-shrink:0;text-decoration:none}.brand-serif.svelte-10t98u4{font-family:var(--font-display);font-weight:400;color:var(--accent)}.brand-sans.svelte-10t98u4{font-family:var(--font-body);font-weight:400;color:var(--text)}.project-card.svelte-10t98u4{display:flex;align-items:center;gap:.4rem;padding:.25rem .6rem .25rem .5rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);flex-shrink:0}.project-logo.svelte-10t98u4{width:16px;height:16px;object-fit:contain;border-radius:2px;flex-shrink:0}.project-name.svelte-10t98u4{font-size:.78rem;font-weight:500;color:var(--text);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.links.svelte-10t98u4{display:flex;gap:.125rem;flex:1}.link.svelte-10t98u4{font-size:.875rem;font-weight:400;color:var(--text-muted);text-decoration:none;padding:.35rem .75rem;border-radius:var(--radius-sm);transition:color var(--duration-fast),background var(--duration-fast)}.link.svelte-10t98u4:hover{color:var(--text);background:var(--bg-subtle)}.link.active.svelte-10t98u4{color:var(--accent);background:var(--accent-soft)}.nav-sep.svelte-10t98u4{display:block;width:1px;height:18px;background:var(--border);margin:0 .375rem;flex-shrink:0;align-self:center}.link.repo.svelte-10t98u4{border:1px solid var(--border);padding:.3rem .75rem}.link.repo.svelte-10t98u4:hover{border-color:var(--text-muted)}.link.repo.active.svelte-10t98u4{border-color:var(--accent)}.actions.svelte-10t98u4{display:flex;align-items:center;gap:.5rem;margin-left:auto}.nav-user.svelte-10t98u4{font-size:.8125rem;color:var(--text-muted);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 640px){.nav-user.svelte-10t98u4{display:none}}.settings-btn.svelte-10t98u4{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-muted);text-decoration:none;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.settings-btn.svelte-10t98u4:hover{background:var(--bg-subtle);color:var(--text);border-color:var(--text-muted)}.settings-btn.active.svelte-10t98u4{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.hamburger.svelte-10t98u4{display:none;flex-direction:column;justify-content:center;gap:4px;width:34px;height:34px;background:none;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;padding:0 8px}.hamburger.svelte-10t98u4 span:where(.svelte-10t98u4){display:block;width:100%;height:1.5px;background:var(--text-muted);border-radius:2px;transform-origin:center;transition:transform var(--duration-base) var(--ease-out),opacity var(--duration-fast)}.hamburger.svelte-10t98u4 span.rotated:where(.svelte-10t98u4){transform:translateY(5.5px) rotate(45deg)}.hamburger.svelte-10t98u4 span.hidden:where(.svelte-10t98u4){opacity:0}.hamburger.svelte-10t98u4 span.rotated-reverse:where(.svelte-10t98u4){transform:translateY(-5.5px) rotate(-45deg)}.mobile-menu.svelte-10t98u4{border-top:1px solid var(--border);padding:.75rem 1.5rem 1rem;display:flex;flex-direction:column;gap:.125rem}.mobile-link.svelte-10t98u4{color:var(--text-muted);text-decoration:none;font-size:.9375rem;font-weight:400;padding:.5rem .75rem;border-radius:var(--radius-sm);transition:background var(--duration-fast),color var(--duration-fast)}.mobile-link.svelte-10t98u4:hover,.mobile-link.active.svelte-10t98u4{background:var(--bg-subtle);color:var(--text)}.mobile-link.active.svelte-10t98u4{color:var(--accent);background:var(--accent-soft)}.mobile-sep.svelte-10t98u4{border:none;border-top:1px solid var(--border);margin:.375rem .75rem}@media (max-width: 640px){.links.svelte-10t98u4{display:none}.hamburger.svelte-10t98u4{display:flex}}.shell.svelte-28zx1m{max-width:1200px;margin:0 auto;padding:2.5rem 1.5rem 5rem}.panel.svelte-1pcdei1{position:fixed;bottom:0;left:0;right:0;z-index:200;background:var(--bg-elevated);border-top:1px solid var(--border);box-shadow:0 -4px 32px #00000012}.scan-line.svelte-1pcdei1{height:2px;background:var(--border);transition:background .5s ease;overflow:hidden;position:relative}.scan-line.scanning.svelte-1pcdei1{background:color-mix(in srgb,var(--accent) 30%,var(--border))}.scan-line.scanning.svelte-1pcdei1:after{content:"";position:absolute;inset:0;width:35%;background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:svelte-1pcdei1-scan 1.8s ease-in-out infinite}.scan-line.line-pass.svelte-1pcdei1{background:var(--pass)}.scan-line.line-fail.svelte-1pcdei1{background:var(--fail)}@keyframes svelte-1pcdei1-scan{0%{transform:translate(-100%)}to{transform:translate(400%)}}.bar.svelte-1pcdei1{display:flex;align-items:center;height:52px;padding:0 1rem 0 1.25rem;gap:.75rem}.flex-gap.svelte-1pcdei1{flex:1}.flex-gap-sm.svelte-1pcdei1{width:.5rem}.bar-left.svelte-1pcdei1{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.bar-status.svelte-1pcdei1{display:flex;align-items:center;gap:.5rem}.status-dot.svelte-1pcdei1{width:7px;height:7px;border-radius:50%;flex-shrink:0;transition:background .4s ease}.status-dot.pulse.svelte-1pcdei1{animation:dotPulse 1.6s ease-in-out infinite}.status-word.svelte-1pcdei1{font-size:.72rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;transition:color .4s ease;white-space:nowrap}.view-report-btn.svelte-1pcdei1{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;font-weight:500;color:var(--accent);text-decoration:none;white-space:nowrap;border:1px solid var(--accent);border-radius:var(--radius-sm);padding:.2rem .6rem;background:var(--accent-soft);transition:background var(--duration-fast),color var(--duration-fast)}.view-report-btn.svelte-1pcdei1:hover{background:var(--accent);color:var(--white)}.bar-center.svelte-1pcdei1{display:flex;align-items:center;gap:.625rem}.input-wrap.svelte-1pcdei1{position:relative;display:flex;align-items:center}.input-icon.svelte-1pcdei1{position:absolute;left:.6rem;color:var(--text-muted);pointer-events:none;opacity:.6}.tag-input.svelte-1pcdei1{height:28px;padding:0 .75rem 0 2rem;font-size:.8rem;font-family:JetBrains Mono,monospace;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);outline:none;transition:border-color var(--duration-fast);width:200px}.tag-input.svelte-1pcdei1:focus{border-color:var(--accent)}.tag-input.svelte-1pcdei1::placeholder{color:var(--text-muted);opacity:.45}.tag-input.svelte-1pcdei1:disabled{opacity:.45}.ctrl-divider.svelte-1pcdei1{width:1px;height:24px;background:var(--border);flex-shrink:0}.ctrl-group.svelte-1pcdei1{display:flex;flex-direction:column;gap:2px}.ctrl-label.svelte-1pcdei1{font-size:.555rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);opacity:.65;line-height:1}.stepper.svelte-1pcdei1{display:flex;align-items:center;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.step-btn.svelte-1pcdei1{width:20px;height:24px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--text-muted);cursor:pointer;font-size:.875rem;font-weight:400;line-height:1;transition:color var(--duration-fast),background var(--duration-fast)}.step-btn.svelte-1pcdei1:hover:not(:disabled){color:var(--text);background:var(--bg-elevated)}.step-btn.svelte-1pcdei1:disabled{opacity:.3;cursor:default}.step-val.svelte-1pcdei1{min-width:20px;text-align:center;font-size:.78rem;font-weight:500;color:var(--text);font-family:JetBrains Mono,monospace;line-height:24px;border-left:1px solid var(--border);border-right:1px solid var(--border)}.dropdown-wrap.svelte-1pcdei1{position:relative}.dropdown-trigger.svelte-1pcdei1{display:inline-flex;align-items:center;gap:.3rem;height:24px;padding:0 .5rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-body);font-size:.78rem;color:var(--text);cursor:pointer;transition:border-color var(--duration-fast),background var(--duration-fast),color var(--duration-fast);white-space:nowrap}.dropdown-trigger.svelte-1pcdei1:hover:not(:disabled){border-color:color-mix(in srgb,var(--text-muted) 50%,var(--border))}.dropdown-trigger.open.svelte-1pcdei1{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.dropdown-trigger.has-remote.svelte-1pcdei1{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.dropdown-trigger.svelte-1pcdei1:disabled{opacity:.45;cursor:default}.trigger-chevron.svelte-1pcdei1{transition:transform .18s var(--ease-out);flex-shrink:0}.trigger-chevron.open.svelte-1pcdei1{transform:rotate(180deg)}.dropdown-menu.svelte-1pcdei1{position:absolute;bottom:calc(100% + 8px);left:0;min-width:130px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:0 8px 28px #00000021;padding:.3rem;z-index:300;display:flex;flex-direction:column;gap:1px}.dropdown-item.svelte-1pcdei1{display:flex;align-items:center;gap:.5rem;width:100%;padding:.35rem .5rem;border:none;border-radius:var(--radius-sm);background:transparent;font-family:var(--font-body);font-size:.8125rem;color:var(--text);cursor:pointer;text-align:left;transition:background var(--duration-fast)}.dropdown-item.svelte-1pcdei1:hover{background:var(--bg-subtle)}.dropdown-item.active.svelte-1pcdei1{color:var(--accent)}.runners-menu.svelte-1pcdei1{min-width:160px}.runner-option.svelte-1pcdei1{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.8125rem;color:var(--text);transition:background var(--duration-fast)}.runner-option.svelte-1pcdei1:hover{background:var(--bg-subtle)}.runner-option.svelte-1pcdei1 input[type=checkbox]:where(.svelte-1pcdei1){accent-color:var(--accent);width:13px;height:13px;cursor:pointer;flex-shrink:0}.runner-dot.svelte-1pcdei1{width:6px;height:6px;border-radius:50%;flex-shrink:0}.runner-dot.built-in.svelte-1pcdei1{background:var(--accent)}.runner-dot.remote.svelte-1pcdei1{background:var(--pass)}.run-btn.svelte-1pcdei1{display:inline-flex;align-items:center;gap:.4rem;height:30px;padding:0 .875rem;background:var(--accent);color:var(--white);border:none;border-radius:var(--radius-sm);font-family:var(--font-body);font-size:.8125rem;font-weight:500;cursor:pointer;transition:opacity var(--duration-fast);flex-shrink:0}.run-btn.svelte-1pcdei1:hover:not(:disabled){opacity:.88}.run-btn.svelte-1pcdei1:disabled{opacity:.6;cursor:default}@keyframes svelte-1pcdei1-spin{to{transform:rotate(360deg)}}.notify-toggles.svelte-1pcdei1{display:flex;gap:.25rem}.notify-btn.svelte-1pcdei1{height:26px;padding:0 .5rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-muted);font-size:.75rem;font-family:inherit;cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.notify-btn.svelte-1pcdei1:hover:not(:disabled){color:var(--text);border-color:var(--text-muted)}.notify-btn.active.svelte-1pcdei1{background:var(--accent);border-color:var(--accent);color:var(--white)}.notify-btn.svelte-1pcdei1:disabled{opacity:.4;cursor:default}.expand-btn.svelte-1pcdei1{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast);flex-shrink:0}.expand-btn.svelte-1pcdei1:hover{background:var(--bg-subtle);color:var(--text);border-color:var(--text-muted)}.expand-btn.svelte-1pcdei1 svg:where(.svelte-1pcdei1){transition:transform .2s var(--ease-out)}.expand-btn.svelte-1pcdei1 svg.flipped:where(.svelte-1pcdei1){transform:rotate(180deg)}.body.svelte-1pcdei1{border-top:1px solid var(--border);padding:.625rem 1.25rem;display:flex;flex-direction:column;gap:.375rem;min-height:72px}.run-card.svelte-1pcdei1{display:flex;align-items:center;gap:.75rem;padding:.625rem .875rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);color:inherit;transition:background var(--duration-fast),border-color var(--duration-fast)}.run-card.svelte-1pcdei1:hover{background:var(--bg-elevated);border-color:var(--accent)}.run-card.active-run.svelte-1pcdei1{border-left:3px solid var(--accent)}.run-card.queued-run.svelte-1pcdei1{border-left:3px solid var(--warn)}.run-card-main.svelte-1pcdei1{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0;text-decoration:none;color:inherit}.run-card-cancel.svelte-1pcdei1{display:flex;align-items:center;justify-content:center;width:22px;height:22px;flex-shrink:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast)}.run-card-cancel.svelte-1pcdei1:hover{color:var(--fail);border-color:var(--fail)}.run-card-dot.svelte-1pcdei1{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:var(--border)}.pulse-accent.svelte-1pcdei1{background:var(--accent);animation:dotPulse 1.6s ease-in-out infinite}.queued-dot.svelte-1pcdei1{background:var(--warn)}.run-card-info.svelte-1pcdei1{display:flex;flex-direction:column;gap:.1rem;flex:1;min-width:0}.run-card-label.svelte-1pcdei1{font-size:.8125rem;font-weight:500;color:var(--text)}.run-card-meta.svelte-1pcdei1{font-size:.72rem;font-family:JetBrains Mono,monospace;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.meta-dot.svelte-1pcdei1{opacity:.4;margin:0 .15rem}.run-card-arrow.svelte-1pcdei1{color:var(--text-muted);flex-shrink:0;transition:transform var(--duration-fast) var(--ease-out),color var(--duration-fast)}.run-card.svelte-1pcdei1:hover .run-card-arrow:where(.svelte-1pcdei1){transform:translate(3px);color:var(--accent)}.empty-runs.svelte-1pcdei1{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 0;color:var(--text-muted);font-size:.8125rem}.empty-icon.svelte-1pcdei1{opacity:.4}.run-chip.svelte-1pcdei1{display:inline-flex;align-items:center;gap:.4rem;height:28px;padding:0 .5rem 0 .625rem;background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--accent);font-size:.78rem;white-space:nowrap;max-width:200px}.run-chip-title.svelte-1pcdei1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.run-chip-count.svelte-1pcdei1{font-size:.65rem;font-weight:600;letter-spacing:.04em;opacity:.75;white-space:nowrap;flex-shrink:0}.run-chip-count.none.svelte-1pcdei1{color:var(--fail);opacity:1}.run-chip-spinner.svelte-1pcdei1{width:9px;height:9px;border:1.5px solid color-mix(in srgb,var(--accent) 35%,transparent);border-top-color:var(--accent);border-radius:50%;animation:svelte-1pcdei1-spin .65s linear infinite;flex-shrink:0}.run-chip-clear.svelte-1pcdei1{display:flex;align-items:center;justify-content:center;width:16px;height:16px;border:none;background:transparent;color:var(--accent);cursor:pointer;border-radius:2px;opacity:.7;padding:0;flex-shrink:0;transition:opacity var(--duration-fast)}.run-chip-clear.svelte-1pcdei1:hover{opacity:1}.run-pick-menu.svelte-1pcdei1{min-width:180px;max-height:240px;overflow-y:auto}.dropdown-divider.svelte-1pcdei1{height:1px;background:var(--border);margin:.25rem 0}.dropdown-empty.svelte-1pcdei1{font-size:.8125rem;color:var(--text-muted);padding:.35rem .5rem;text-align:center;opacity:.7}.stack.svelte-19gnuo1{position:fixed;right:1rem;bottom:3.25rem;z-index:600;display:flex;flex-direction:column-reverse;gap:.5rem;max-width:min(20rem,calc(100vw - 2rem));pointer-events:none}.card.svelte-19gnuo1{pointer-events:auto;padding:.7rem .85rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:0 8px 28px #00000029;font-size:.82rem}.row.svelte-19gnuo1{display:flex;align-items:center;gap:.55rem}.msg.svelte-19gnuo1{flex:1;color:var(--text);line-height:1.35}.dot.svelte-19gnuo1{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:var(--text-muted)}.dot.success.svelte-19gnuo1{background:var(--pass)}.dot.error.svelte-19gnuo1{background:var(--fail)}.dot.info.svelte-19gnuo1{background:var(--accent)}.link.svelte-19gnuo1{display:inline-flex;align-items:center;background:none;border:none;color:var(--text-muted);cursor:pointer;padding:0;flex-shrink:0}.link.svelte-19gnuo1:hover{color:var(--accent)}.boot-loading.svelte-3qbr79{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);color:var(--text-muted);font-size:.875rem}
@@ -0,0 +1,6 @@
1
+ /*
2
+ * This file is part of Plum.
3
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
4
+ */
5
+
6
+ .live-viewport.svelte-9tul2m{flex:1;width:100%;height:100%;min-width:0;min-height:0;display:flex;align-items:flex-start;justify-content:center;overflow:hidden}.live-stage.svelte-9tul2m{position:relative;overflow:hidden}.live-mount.svelte-9tul2m{position:absolute;top:0;left:0}.live-mount.svelte-9tul2m .rr-player{border-radius:0!important;box-shadow:none!important}.notice-state.svelte-13l3gen{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:5rem 1rem;text-align:center;gap:.75rem}.notice-state.svelte-13l3gen h2:where(.svelte-13l3gen){font-size:1.5rem;font-weight:400}.notice-state.svelte-13l3gen p:where(.svelte-13l3gen){font-size:.9375rem;color:var(--text-muted);max-width:360px}.queue-pos.svelte-13l3gen{font-family:JetBrains Mono,monospace;font-size:.85rem;color:var(--text)}.notice-link.svelte-13l3gen{font-size:.875rem;color:var(--accent);text-decoration:none;margin-top:.5rem}.notice-link.svelte-13l3gen:hover{text-decoration:underline}.pulse-dot.svelte-13l3gen{width:18px;height:18px;border-radius:50%;background:var(--accent);animation:svelte-13l3gen-pulse-dot 1.4s ease-in-out infinite}.pulse-dot.warn.svelte-13l3gen{background:var(--warn)}@keyframes svelte-13l3gen-pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.live-fullscreen.svelte-13l3gen{width:100vw;position:relative;left:50%;margin-left:-50vw;margin-top:-2.5rem;margin-bottom:-5rem;padding-bottom:5rem;height:calc(100vh - 56px);box-sizing:border-box;display:flex;flex-direction:column}.run-header.svelte-13l3gen{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem clamp(1rem,3vw,2rem);background:var(--bg-elevated);border-bottom:1px solid var(--border);animation:fadeUp .3s var(--ease-out) both;flex-shrink:0}.run-header.header-pass.svelte-13l3gen{border-top:3px solid var(--pass)}.run-header.header-fail.svelte-13l3gen{border-top:3px solid var(--fail)}.header-left.svelte-13l3gen{display:flex;align-items:center;gap:.875rem;flex-wrap:wrap}.header-back.svelte-13l3gen{display:flex;align-items:center;padding-right:.875rem;border-right:1px solid var(--border)}.header-back.svelte-13l3gen .back-row{margin-bottom:0}.live-badge.svelte-13l3gen{display:inline-flex;align-items:center;gap:.4rem;font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--white);background:var(--accent);padding:.2rem .6rem;border-radius:var(--radius-pill)}.live-dot.svelte-13l3gen{width:6px;height:6px;border-radius:50%;background:#fffc;animation:dotPulse 1.2s ease-in-out infinite}.run-info.svelte-13l3gen{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.run-title-label.svelte-13l3gen{font-size:.875rem;font-weight:500;color:var(--accent);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:var(--radius-pill);padding:.15rem .6rem;white-space:nowrap}.run-tag-label.svelte-13l3gen{font-family:JetBrains Mono,monospace;font-size:.8125rem;font-weight:500;color:var(--text)}.run-sep.svelte-13l3gen{color:var(--text-muted);opacity:.4;font-size:.75rem}.run-detail.svelte-13l3gen{font-size:.8rem;color:var(--text-muted);font-family:JetBrains Mono,monospace}.cancel-btn.svelte-13l3gen{display:inline-flex;align-items:center;gap:.4rem;font-family:var(--font-body);font-size:.8rem;font-weight:500;color:var(--fail);background:var(--fail-soft);border:1px solid var(--fail);border-radius:var(--radius-sm);padding:.35rem .75rem;cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast);flex-shrink:0}.cancel-btn.svelte-13l3gen:hover{background:var(--fail);color:var(--white)}.completion-bar.svelte-13l3gen{display:flex;align-items:center;justify-content:space-between;padding:.75rem clamp(1rem,3vw,2rem);gap:1rem;border-bottom:1px solid var(--border);flex-shrink:0}.completion-bar.pass-bar.svelte-13l3gen{background:var(--pass-soft);border-bottom-color:color-mix(in srgb,var(--pass) 30%,var(--border));color:var(--pass)}.completion-bar.fail-bar.svelte-13l3gen{background:var(--fail-soft);border-bottom-color:color-mix(in srgb,var(--fail) 30%,var(--border));color:var(--fail)}.completion-left.svelte-13l3gen{display:flex;align-items:center;gap:.5rem;font-size:.9rem;font-weight:500}.completion-right.svelte-13l3gen{display:flex;align-items:center;gap:.875rem}.redirect-hint.svelte-13l3gen{font-size:.8rem;opacity:.7;font-family:JetBrains Mono,monospace;color:inherit}.view-now-btn.svelte-13l3gen{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-body);font-size:.8125rem;font-weight:600;color:inherit;background:transparent;border:1.5px solid currentColor;border-radius:var(--radius-sm);padding:.3rem .75rem;cursor:pointer;transition:background var(--duration-fast)}.view-now-btn.svelte-13l3gen:hover{background:#0000000f}.lane-tabs.svelte-13l3gen{display:flex;gap:2px;padding:.5rem clamp(1rem,3vw,2rem) 0;background:var(--bg-elevated);border-bottom:1px solid var(--border);flex-shrink:0}.lane-tab.svelte-13l3gen{display:inline-flex;align-items:center;gap:.4rem;padding:.375rem .875rem;border:1px solid transparent;border-bottom:none;border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:transparent;font-family:var(--font-body);font-size:.8rem;color:var(--text-muted);cursor:pointer;transition:color var(--duration-fast),background var(--duration-fast),border-color var(--duration-fast);white-space:nowrap}.lane-tab.svelte-13l3gen:hover{color:var(--text);background:var(--bg-subtle)}.lane-tab.active.svelte-13l3gen{color:var(--text);background:var(--bg-elevated);border-color:var(--border);border-bottom-color:var(--bg-elevated)}.tab-dot.svelte-13l3gen{width:6px;height:6px;border-radius:50%;flex-shrink:0;background:var(--accent)}.tab-dot-running.svelte-13l3gen{background:var(--accent);animation:dotPulse 1.6s ease-in-out infinite}.tab-dot-done.svelte-13l3gen{background:var(--pass)}.tab-dot-error.svelte-13l3gen{background:var(--fail)}.tab-count.svelte-13l3gen{font-size:.65rem;font-weight:600;font-family:JetBrains Mono,monospace;opacity:.55}.run-view.svelte-13l3gen{display:grid;grid-template-columns:1fr 340px;flex:1;min-height:0;overflow:hidden;animation:fadeUp .35s var(--ease-out) .05s both}.stream-panel.svelte-13l3gen{position:relative;background:var(--terminal-bg);display:flex;align-items:center;justify-content:center;overflow:hidden;border-right:1px solid var(--border)}.awaiting-state.svelte-13l3gen{display:flex;flex-direction:column;align-items:center;gap:.625rem;color:#fff3;font-size:.8rem;font-family:JetBrains Mono,monospace}.terminal-panel.svelte-13l3gen{display:flex;flex-direction:column;overflow:hidden}.terminal-bar.svelte-13l3gen{display:flex;align-items:center;gap:6px;padding:.6rem .875rem;background:#00000059;flex-shrink:0}.dot.svelte-13l3gen{display:block;width:10px;height:10px;border-radius:50%}.dot.red.svelte-13l3gen{background:#ff5f57}.dot.yellow.svelte-13l3gen{background:#febc2e}.dot.green.svelte-13l3gen{background:#28c840}.terminal-label.svelte-13l3gen{margin-left:auto;font-size:.68rem;font-family:JetBrains Mono,monospace;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:#ffffff4d}.terminal.svelte-13l3gen{font-family:JetBrains Mono,Fira Code,Cascadia Code,Courier New,monospace;font-size:.8rem;line-height:1.75;background:var(--terminal-bg);color:var(--terminal-text);padding:1rem 1.25rem;flex:1;overflow-y:auto;white-space:pre-wrap;word-break:break-word;margin:0}.terminal.svelte-13l3gen::-webkit-scrollbar{width:4px}.terminal.svelte-13l3gen::-webkit-scrollbar-track{background:transparent}.terminal.svelte-13l3gen::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}
@@ -0,0 +1,6 @@
1
+ /*
2
+ * This file is part of Plum.
3
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
4
+ */
5
+
6
+ .page-header.svelte-g440mn{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-text.svelte-g440mn h1:where(.svelte-g440mn){font-size:2.5rem;margin-bottom:.25rem}.header-desc.svelte-g440mn{font-size:.875rem;color:var(--text-muted)}.header-actions.svelte-g440mn{flex-shrink:0;padding-top:.25rem;display:flex;align-items:center;gap:.75rem}.import-link.svelte-g440mn{font-size:.8rem;color:var(--text-muted);text-decoration:none;white-space:nowrap;transition:color var(--duration-fast) var(--ease-out)}.import-link.svelte-g440mn:hover{color:var(--text)}.tabs.svelte-g440mn{display:flex;gap:.125rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border)}.tab.svelte-g440mn{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem .625rem;font-family:var(--font-body);font-size:.875rem;font-weight:400;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast);margin-bottom:-1px}.tab.svelte-g440mn:hover{color:var(--text)}.tab.active.svelte-g440mn{color:var(--accent);border-bottom-color:var(--accent);font-weight:500}.tab-count.svelte-g440mn{font-size:.7rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.05rem .4rem;color:var(--text-muted)}.loading-row.svelte-g440mn{font-size:.875rem;color:var(--text-muted);padding:2rem 0}.pagination-row.svelte-g440mn{margin-top:1.5rem}.search-bar.svelte-g440mn{position:relative;display:flex;align-items:center;margin-bottom:1.25rem}.search-icon.svelte-g440mn{position:absolute;left:.75rem;color:var(--text-muted);pointer-events:none;flex-shrink:0}.search-input.svelte-g440mn{width:100%;max-width:360px;height:34px;padding:0 2rem 0 2.25rem;font-family:var(--font-body);font-size:.875rem;color:var(--text);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;transition:border-color var(--duration-fast)}.search-input.svelte-g440mn::placeholder{color:var(--text-muted)}.search-input.svelte-g440mn:focus{border-color:var(--accent)}.search-input.svelte-g440mn::-webkit-search-cancel-button{display:none}.search-clear.svelte-g440mn{position:absolute;left:calc(360px - 1.75rem);display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:none;border:none;cursor:pointer;color:var(--text-muted);padding:0}.search-clear.svelte-g440mn:hover{color:var(--text)}.sort-bar.svelte-g440mn{display:flex;align-items:center;gap:.375rem;margin-bottom:1.25rem;flex-wrap:wrap}.sort-label.svelte-g440mn{font-size:.75rem;color:var(--text-muted);margin-right:.25rem}.sort-chip.svelte-g440mn{display:flex;align-items:center;gap:.25rem;height:28px;padding:0 .625rem;font-family:var(--font-body);font-size:.8125rem;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast)}.sort-chip.svelte-g440mn:hover{color:var(--text);border-color:var(--accent)}.sort-chip.active.svelte-g440mn{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.sort-dir.svelte-g440mn{font-size:.7rem;opacity:.8}.search-section.svelte-g440mn{margin-bottom:2rem}.search-section-title.svelte-g440mn{display:flex;align-items:center;gap:.5rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:.75rem}.case-results.svelte-g440mn{display:flex;flex-direction:column;gap:.25rem}.case-result-row.svelte-g440mn{display:flex;align-items:center;gap:.625rem;padding:.6rem .875rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);text-decoration:none;color:inherit;transition:border-color var(--duration-fast)}.case-result-row.svelte-g440mn:hover{border-color:var(--accent)}.case-result-title.svelte-g440mn{font-size:.875rem;font-weight:500;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.case-result-suite.svelte-g440mn{font-size:.75rem;color:var(--text-muted);flex-shrink:0;white-space:nowrap}.suite-grid.svelte-g440mn{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.875rem}.card-link.svelte-g440mn{position:absolute;inset:0;border-radius:inherit;z-index:0}.suite-card.svelte-g440mn{position:relative;display:flex;flex-direction:column;gap:.5rem;background:var(--bg-elevated);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:var(--radius-md);padding:1rem;color:inherit;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.suite-card.svelte-g440mn:hover{border-color:var(--accent);box-shadow:0 2px 8px #0000000f}.suite-card-header.svelte-g440mn{display:flex;align-items:center;gap:.5rem}.suite-card-actions.svelte-g440mn{position:relative;z-index:1;margin-left:auto;opacity:0;transition:opacity var(--duration-fast)}.suite-card.svelte-g440mn:hover .suite-card-actions:where(.svelte-g440mn){opacity:1}.suite-name.svelte-g440mn{font-size:.9375rem;font-weight:500;color:var(--text)}.suite-desc.svelte-g440mn{font-size:.8125rem;color:var(--text-muted);line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.suite-meta.svelte-g440mn{display:flex;align-items:center;gap:.75rem;margin-top:.25rem}.meta-item.svelte-g440mn{display:flex;align-items:center;gap:.3rem;font-size:.75rem;color:var(--text-muted)}.id-chip.svelte-g440mn{font-family:JetBrains Mono,monospace;font-size:.7rem;font-weight:600;color:var(--accent);background:var(--accent-soft);border-radius:4px;padding:.1rem .4rem;letter-spacing:.02em;flex-shrink:0}.id-chip.small.svelte-g440mn{font-size:.65rem}.auto-badge.svelte-g440mn{font-size:.62rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--pass);background:var(--pass-soft);border-radius:var(--radius-pill);padding:.1rem .4rem;flex-shrink:0}.priority-badge.svelte-g440mn{font-size:.68rem;font-weight:500;border-radius:var(--radius-pill);padding:.15rem .5rem;flex-shrink:0}.priority-badge.small.svelte-g440mn{font-size:.62rem;padding:.1rem .4rem}.priority-badge.critical.svelte-g440mn{background:var(--fail-soft);color:var(--fail)}.priority-badge.high.svelte-g440mn{background:var(--warn-soft);color:var(--warn)}.priority-badge.medium.svelte-g440mn{background:var(--node-soft);color:var(--node)}.priority-badge.low.svelte-g440mn{background:var(--bg-subtle);color:var(--text-muted)}.icon-btn.svelte-g440mn{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;color:var(--text-muted);transition:background var(--duration-fast),color var(--duration-fast)}.icon-btn.danger.svelte-g440mn:hover{background:var(--fail-soft);color:var(--fail)}.runs-list.svelte-g440mn{display:flex;flex-direction:column;gap:.5rem}.run-row.svelte-g440mn{position:relative;display:flex;align-items:center;gap:1rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:.875rem 1rem;color:inherit;transition:border-color var(--duration-fast)}.run-row.svelte-g440mn:hover{border-color:var(--accent)}.run-row-main.svelte-g440mn{display:flex;align-items:center;gap:.625rem;flex:1;min-width:0}.run-status-dot.svelte-g440mn{width:8px;height:8px;border-radius:50%;flex-shrink:0}.run-status-dot.pass.svelte-g440mn{background:var(--pass)}.run-status-dot.warn.svelte-g440mn{background:var(--warn)}.run-status-dot.muted.svelte-g440mn{background:var(--border)}.run-title.svelte-g440mn{font-size:.9375rem;font-weight:500;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.run-count.svelte-g440mn{font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-meta.svelte-g440mn{display:flex;align-items:center;gap:.375rem;font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-status-label.svelte-g440mn{font-size:.7rem;font-weight:500;text-transform:capitalize;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .4rem}.meta-sep.svelte-g440mn{color:var(--border)}.run-row-actions.svelte-g440mn{position:relative;z-index:1;opacity:0;transition:opacity var(--duration-fast)}.run-row.svelte-g440mn:hover .run-row-actions:where(.svelte-g440mn){opacity:1}.form-fields.svelte-g440mn{display:flex;flex-direction:column;gap:1rem}.field-textarea.svelte-g440mn{height:auto;resize:vertical}.form-error.svelte-g440mn{font-size:.8125rem;color:var(--fail)}.modal-actions.svelte-g440mn{display:flex;gap:.5rem;padding-top:.25rem}@media (max-width: 640px){.page-header.svelte-g440mn{flex-direction:column;gap:.75rem}.suite-grid.svelte-g440mn{grid-template-columns:1fr}.run-meta.svelte-g440mn{display:none}}
@@ -0,0 +1,6 @@
1
+ /*
2
+ * This file is part of Plum.
3
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
4
+ */
5
+
6
+ .status-dot.svelte-eg9xrn{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.pass.svelte-eg9xrn{background:var(--pass)}.fail.svelte-eg9xrn{background:var(--fail)}.skip.svelte-eg9xrn{background:var(--text-muted)}.tag-chip.svelte-foe7v9{font-size:.65rem;font-family:JetBrains Mono,monospace;background:var(--accent-soft);color:var(--accent);padding:.1rem .4rem;border-radius:var(--radius-pill);white-space:nowrap}.kw.svelte-3mvi7i{font-size:.72rem;font-weight:500;letter-spacing:.04em;flex-shrink:0;padding:.05rem .4rem;border-radius:3px;font-family:JetBrains Mono,monospace}.kw-given.svelte-3mvi7i{background:var(--accent-soft);color:var(--accent)}.kw-when.svelte-3mvi7i{background:var(--warn-soft);color:var(--warn)}.kw-then.svelte-3mvi7i{background:var(--pass-soft);color:var(--pass)}.kw-and.svelte-3mvi7i{background:var(--bg-elevated);color:var(--text-muted);border:1px solid var(--border)}.step-status-icon.svelte-9zpq1y{font-size:.75rem;font-weight:600;width:14px;flex-shrink:0;text-align:center}.icon-pass.svelte-9zpq1y{color:var(--pass)}.icon-fail.svelte-9zpq1y{color:var(--fail)}.icon-skip.svelte-9zpq1y{color:var(--text-muted)}.steps-rail.svelte-q7af2t{flex-shrink:0;width:240px;display:flex;flex-direction:column;background:var(--bg-elevated);overflow-y:auto}.steps-rail-header.svelte-q7af2t{flex-shrink:0;padding:.7rem .9rem .5rem;font-family:JetBrains Mono,monospace;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.steps-list.svelte-q7af2t{list-style:none;margin:0;padding:0 .5rem .5rem;display:flex;flex-direction:column;gap:.1rem}.rail-step.svelte-q7af2t{width:100%;display:flex;align-items:flex-start;gap:.5rem;padding:.4rem .5rem;background:none;border:none;border-radius:var(--radius-sm);font:inherit;font-size:.78rem;line-height:1.35;text-align:left;color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}.rail-step.svelte-q7af2t:hover:not(:disabled){background:var(--bg-subtle)}.rail-step.svelte-q7af2t:disabled{cursor:default}.rail-step-text.svelte-q7af2t{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:.35rem;min-width:0;word-break:break-word}.rail-step-active.svelte-q7af2t{background:var(--accent-soft);color:var(--text);font-weight:500}.combined-timeline.svelte-5daecg{position:absolute;left:0;right:0;bottom:38px;width:80%;margin:0 auto;display:flex;align-items:center}.combined-timeline-time.svelte-5daecg{flex-shrink:0;display:inline-block;width:100px;text-align:center;color:#11103e}.combined-timeline-track.svelte-5daecg{position:relative;flex:1;height:12px;background:#eee;border-radius:3px;cursor:pointer;box-sizing:border-box;border-top:solid 4px #fff;border-bottom:solid 4px #fff}.combined-timeline-fill.svelte-5daecg{position:absolute;left:0;top:0;height:100%;background:#e0e1fe}.combined-timeline-tick.svelte-5daecg{position:absolute;top:2px;width:10px;height:5px;transform:translate(-50%,-50%);background:#4950f6;pointer-events:none}.combined-timeline-handle.svelte-5daecg{position:absolute;top:2px;width:20px;height:20px;border-radius:10px;transform:translate(-50%,-50%);background:#4950f6;pointer-events:none}.code-viewer.svelte-mer6ic{margin:0;padding:.75rem 1rem;background:var(--terminal-bg);color:var(--terminal-text);font-family:JetBrains Mono,monospace;font-size:.78rem;line-height:1.5;border-radius:var(--radius-md);overflow-x:auto;white-space:pre-wrap;word-break:break-word}.code-viewer .tok-tag{color:var(--code-tag)}.code-viewer .tok-attr{color:var(--code-attr)}.code-viewer .tok-value{color:var(--code-string)}.code-viewer .tok-comment{color:var(--code-comment);font-style:italic}.inspector-panel.svelte-mmh4st{flex-shrink:0;width:280px;display:flex;flex-direction:column;gap:.65rem;padding:.75rem .9rem .9rem;background:var(--bg-elevated);overflow-y:auto}.inspector-panel.svelte-mmh4st>:where(.svelte-mmh4st){flex-shrink:0}.inspector-panel.svelte-mmh4st .code-viewer{flex-shrink:0}.inspector-header.svelte-mmh4st{display:flex;align-items:center;gap:.4rem;padding-bottom:.5rem;margin-bottom:.1rem;border-bottom:1px solid var(--border);font-family:JetBrains Mono,monospace;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.inspector-empty.svelte-mmh4st{color:var(--text-muted);font-size:.8rem;padding:1rem .1rem;line-height:1.5}.inspector-section.svelte-mmh4st{display:flex;align-items:baseline;gap:.5rem}.inspector-section-label.svelte-mmh4st{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.inspector-size.svelte-mmh4st{font-family:JetBrains Mono,monospace;font-size:.75rem;color:var(--text)}.inspector-attrs.svelte-mmh4st{margin:0;display:flex;flex-direction:column}.inspector-attr-row.svelte-mmh4st{display:flex;flex-direction:column;gap:.1rem;padding:.35rem 0;border-top:1px solid var(--border)}.inspector-attr-row.svelte-mmh4st dt:where(.svelte-mmh4st){font-family:JetBrains Mono,monospace;font-size:.7rem;color:var(--accent)}.inspector-attr-row.svelte-mmh4st dd:where(.svelte-mmh4st){margin:0;font-family:JetBrains Mono,monospace;font-size:.72rem;color:var(--text-muted);word-break:break-all}.recording-player.svelte-1jro3gz{flex:1;min-height:0;display:flex;gap:1px;background:var(--border);overflow:hidden}.player-stage.svelte-1jro3gz{position:relative;flex:1;min-width:0;min-height:0;display:flex;align-items:center;justify-content:center;background:var(--bg-elevated)}.player-column.svelte-1jro3gz{position:relative;display:inline-flex}.player-mount.svelte-1jro3gz{display:flex}.player-mount.svelte-1jro3gz .rr-player{border-radius:0!important;box-shadow:none!important}.player-mount.svelte-1jro3gz .rr-controller{border-radius:0!important}.player-mount.svelte-1jro3gz iframe{pointer-events:auto!important}.player-mount.svelte-1jro3gz .switch{display:none!important}.player-mount.svelte-1jro3gz .rr-controller__btns{gap:.5rem}.player-mount-multi.svelte-1jro3gz .rr-timeline{visibility:hidden!important;pointer-events:none!important}.player-status.svelte-1jro3gz{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:.85rem}.loading-dots.svelte-1jro3gz{display:flex;gap:.3rem}.loading-dots.svelte-1jro3gz span:where(.svelte-1jro3gz){width:6px;height:6px;border-radius:50%;background:var(--text-muted);animation:dotPulse 1.1s ease-in-out infinite}.loading-dots.svelte-1jro3gz span:where(.svelte-1jro3gz):nth-child(2){animation-delay:.15s}.loading-dots.svelte-1jro3gz span:where(.svelte-1jro3gz):nth-child(3){animation-delay:.3s}.active-tab-badge.svelte-1jro3gz{position:absolute;top:.75rem;left:.75rem;padding:.3rem .6rem;background:#0000008c;backdrop-filter:blur(6px);border-radius:var(--radius-pill);color:#fff;font-family:JetBrains Mono,monospace;font-size:.7rem}.inspect-highlight.svelte-1jro3gz{position:absolute;pointer-events:none;background:color-mix(in srgb,var(--accent) 18%,transparent);border:1.5px solid var(--accent);border-radius:2px;z-index:10000}.restart-overlay-btn.svelte-1jro3gz{position:absolute;display:flex;align-items:center;justify-content:center;background:#fff;border:none;border-radius:50%;color:#11103e;cursor:pointer;z-index:10001}.restart-overlay-btn.svelte-1jro3gz:hover{background:#f0f0f5}.inspect-fab.svelte-1jro3gz{position:absolute;top:.75rem;right:.75rem;display:flex;align-items:center;gap:.4rem;padding:.4rem .7rem;background:#0000008c;backdrop-filter:blur(6px);border:none;border-radius:var(--radius-pill);color:#fff;cursor:pointer;opacity:.7;transition:opacity var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.inspect-fab.svelte-1jro3gz:hover:not(:disabled){opacity:1}.inspect-fab.svelte-1jro3gz:disabled{opacity:.3;cursor:default}.inspect-fab-active.svelte-1jro3gz{background:var(--accent);opacity:1}.inspect-fab-label.svelte-1jro3gz{font-size:.72rem;line-height:1;white-space:nowrap}.detail-top.svelte-1wrqiav{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.report-header.svelte-1wrqiav{border-radius:var(--radius-lg);border:1px solid var(--border);border-top-width:3px;padding:1.5rem;margin-bottom:2rem;background:var(--bg-elevated);animation:fadeUp .35s var(--ease-out) both}.report-header.pass.svelte-1wrqiav{border-top-color:var(--pass)}.report-header.fail.svelte-1wrqiav{border-top-color:var(--fail)}.header-main.svelte-1wrqiav{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.header-status.svelte-1wrqiav{display:flex;align-items:center;gap:1rem}.status-icon-wrap.svelte-1wrqiav{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.status-icon-wrap.pass-bg.svelte-1wrqiav{background:var(--pass-soft);color:var(--pass)}.status-icon-wrap.fail-bg.svelte-1wrqiav{background:var(--fail-soft);color:var(--fail)}.h1-row.svelte-1wrqiav{display:flex;align-items:center;gap:.75rem;margin-bottom:.2rem}.run-name-badge.svelte-1wrqiav{display:inline-flex;align-items:center;font-size:.75rem;font-weight:500;color:var(--accent);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:var(--radius-pill);padding:.25rem .7rem;white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis;margin-top:3px}h1.svelte-1wrqiav{font-size:2rem;margin-bottom:0}.header-meta.svelte-1wrqiav{font-size:.8125rem;color:var(--text-muted);display:flex;align-items:center;flex-wrap:wrap;gap:.35rem}.meta-sep.svelte-1wrqiav{opacity:.4}.mono.svelte-1wrqiav{font-family:JetBrains Mono,monospace;font-size:.78rem}.browser-pill.svelte-1wrqiav{display:inline-flex;align-items:center;gap:.3rem;font-family:JetBrains Mono,monospace;font-size:.68rem;font-weight:500;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .45rem}.header-stats.svelte-1wrqiav{display:flex;gap:1.5rem;align-items:flex-start;flex-shrink:0}.stat.svelte-1wrqiav{display:flex;flex-direction:column;align-items:center;gap:.15rem}.stat-num.svelte-1wrqiav{font-family:var(--font-display);font-size:1.75rem;line-height:1;font-weight:400;color:var(--text)}.stat-label.svelte-1wrqiav{display:inline-flex;align-items:center;gap:.25rem;font-size:.68rem;color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase}.pass-color.svelte-1wrqiav{color:var(--pass)}.fail-color.svelte-1wrqiav{color:var(--fail)}.muted-color.svelte-1wrqiav{color:var(--text-muted)}.group-header.svelte-1wrqiav{display:flex;align-items:center;gap:.4rem;padding-bottom:.4rem;margin-top:1.75rem;margin-bottom:.75rem;font-family:JetBrains Mono,monospace;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border)}.group-header.svelte-1wrqiav:first-child{margin-top:0}.group-icon.svelte-1wrqiav{flex-shrink:0;opacity:.7}.runner-group-header.svelte-1wrqiav{font-size:.78rem;font-weight:600;color:var(--text)}.worker-group-header.svelte-1wrqiav{font-size:.7rem;font-weight:500;color:var(--text-muted)}.feature.svelte-1wrqiav{margin-bottom:1.25rem;background:var(--bg-elevated);border:1px solid var(--border);border-top-width:3px;border-radius:var(--radius-lg);overflow:hidden;animation:fadeUp .35s var(--ease-out) both}.feature-pass.svelte-1wrqiav{border-top-color:var(--pass)}.feature-fail.svelte-1wrqiav{border-top-color:var(--fail)}.feature-header.svelte-1wrqiav{display:flex;align-items:center;gap:.75rem;padding:.875rem 1.25rem;border-bottom:1px solid var(--border);background:var(--bg-subtle)}.feature-icon.svelte-1wrqiav{flex-shrink:0;color:var(--text-muted);opacity:.7}.feature-name.svelte-1wrqiav{display:flex;align-items:center;gap:.5rem;font-size:.9375rem;font-family:var(--font-display);font-weight:400;flex:1;min-width:0}.feature-right.svelte-1wrqiav{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.feature-file.svelte-1wrqiav{font-family:JetBrains Mono,monospace;font-size:.72rem;color:var(--text-muted)}.suite-tag.svelte-1wrqiav{font-size:.65rem;font-family:JetBrains Mono,monospace;background:var(--accent-soft);color:var(--accent);padding:.1rem .4rem;border-radius:var(--radius-pill);font-weight:500}.scenarios.svelte-1wrqiav{display:flex;flex-direction:column;padding:.5rem;gap:.25rem}.scenario.svelte-1wrqiav{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-elevated);overflow:hidden;animation:fadeUp .3s var(--ease-out) both}.scenario.scenario-fail.svelte-1wrqiav{border-left-width:3px;border-left-color:var(--fail)}.scenario-row.svelte-1wrqiav{display:flex;align-items:stretch}.scenario-header.svelte-1wrqiav{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;flex:1;min-width:0;background:transparent;border:none;cursor:pointer;text-align:left;font-family:var(--font-body);transition:background var(--duration-fast)}.scenario-header.svelte-1wrqiav:hover{background:var(--bg-subtle)}.replay-btn.svelte-1wrqiav{display:inline-flex;align-items:center;gap:.3rem;padding:0 .875rem;font-family:var(--font-body);font-size:.72rem;font-weight:500;color:var(--accent);background:transparent;border:none;border-left:1px solid var(--border);cursor:pointer;flex-shrink:0;transition:background var(--duration-fast);white-space:nowrap}.replay-btn.svelte-1wrqiav:hover{background:var(--accent-soft)}.replay-btn-sm.svelte-1wrqiav{margin-left:auto;padding:.15rem .5rem;border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);border-radius:var(--radius-sm);font-size:.68rem}.scenario-name.svelte-1wrqiav{flex:1;font-size:.875rem;color:var(--text);font-weight:400;text-align:left;display:inline-flex;align-items:center;gap:.4rem;min-width:0}.scenario-count.svelte-1wrqiav{font-size:.65rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.05rem .4rem;white-space:nowrap}.scenario-tags.svelte-1wrqiav{display:flex;gap:.25rem;flex-shrink:0}.scenario-duration.svelte-1wrqiav{font-size:.75rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;flex-shrink:0}.chevron.svelte-1wrqiav{color:var(--text-muted);flex-shrink:0;transition:transform var(--duration-fast) var(--ease-out)}.chevron.rotated.svelte-1wrqiav{transform:rotate(90deg)}.steps.svelte-1wrqiav{border-top:1px solid var(--border);background:var(--bg-subtle);padding:.5rem 0}.example-header.svelte-1wrqiav{display:flex;align-items:center;gap:.5rem;padding:.625rem 1rem .25rem 1.25rem;color:var(--text-muted);font-size:.72rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase}.example-header.svelte-1wrqiav:not(:first-child){margin-top:.375rem;border-top:1px dashed var(--border)}.example-header.svelte-1wrqiav .scenario-duration:where(.svelte-1wrqiav){margin-left:auto}.step.svelte-1wrqiav{padding:.375rem 1rem .375rem 1.25rem}.step-fail.svelte-1wrqiav{background:color-mix(in srgb,var(--fail-soft) 40%,transparent)}.step-skip.svelte-1wrqiav{opacity:.5}.step-row.svelte-1wrqiav{display:flex;align-items:baseline;gap:.5rem}.step-name.svelte-1wrqiav{flex:1;font-size:.8125rem;color:var(--text);font-family:JetBrains Mono,monospace}.step-duration.svelte-1wrqiav{font-size:.7rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;flex-shrink:0}.step-error.svelte-1wrqiav{margin:.375rem 0 .25rem 1.75rem;padding:.625rem .875rem;background:var(--fail-soft);color:var(--fail);border-radius:var(--radius-sm);font-family:JetBrains Mono,monospace;font-size:.75rem;line-height:1.6;white-space:pre-wrap;word-break:break-word;border-left:2px solid var(--fail)}.step-datatable.svelte-1wrqiav{margin:.375rem 0 .25rem 1.75rem;border-collapse:collapse;font-family:JetBrains Mono,monospace;font-size:.75rem}.step-datatable.svelte-1wrqiav td:where(.svelte-1wrqiav){padding:.35rem .7rem;border:1px solid var(--border);color:var(--text)}.step-datatable-header.svelte-1wrqiav td:where(.svelte-1wrqiav){background:var(--bg-subtle);color:var(--text-muted);font-weight:600}.loading-state.svelte-1wrqiav{display:flex;justify-content:center;padding:4rem 0}.loading-dots.svelte-1wrqiav{display:flex;gap:6px;align-items:center}.loading-dots.svelte-1wrqiav span:where(.svelte-1wrqiav){width:8px;height:8px;border-radius:50%;background:var(--accent);animation:svelte-1wrqiav-dotBeat 1.2s ease-in-out infinite}.loading-dots.svelte-1wrqiav span:where(.svelte-1wrqiav):nth-child(2){animation-delay:.2s}.loading-dots.svelte-1wrqiav span:where(.svelte-1wrqiav):nth-child(3){animation-delay:.4s}@keyframes svelte-1wrqiav-dotBeat{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.6)}}.error-state.svelte-1wrqiav{padding:3rem 0;color:var(--fail);text-align:center;font-size:.9375rem}.logs-section.svelte-1wrqiav{margin-bottom:1.25rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;animation:fadeUp .35s var(--ease-out) both}.logs-summary.svelte-1wrqiav{display:flex;align-items:center;gap:.5rem;padding:.875rem 1.25rem;font-size:.875rem;font-weight:500;color:var(--text);cursor:pointer;user-select:none;list-style:none}.logs-summary.svelte-1wrqiav::-webkit-details-marker{display:none}.logs-summary.svelte-1wrqiav:hover{background:var(--bg-subtle)}.log-runner-count.svelte-1wrqiav{margin-left:auto;font-size:.7rem;font-weight:500;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .5rem}.log-tabs.svelte-1wrqiav{display:flex;gap:0;border-bottom:1px solid var(--border);background:var(--bg-subtle);overflow-x:auto}.log-tab.svelte-1wrqiav{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;font-size:.78rem;font-weight:500;font-family:var(--font-body);color:var(--text-muted);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;transition:color var(--duration-fast)}.log-tab.svelte-1wrqiav:hover{color:var(--text)}.log-tab-active.svelte-1wrqiav{color:var(--text);border-bottom-color:var(--accent)}.logs-body.svelte-1wrqiav{font-family:JetBrains Mono,Fira Code,Cascadia Code,Courier New,monospace;font-size:.775rem;line-height:1.7;background:var(--terminal-bg);color:var(--terminal-text);padding:1rem 1.25rem;max-height:480px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;margin:0;border-top:1px solid var(--border)}.logs-body.svelte-1wrqiav::-webkit-scrollbar{width:4px}.logs-body.svelte-1wrqiav::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.replay-overlay.svelte-1wrqiav{position:fixed;inset:0;background:var(--bg-elevated);display:flex;z-index:500}.replay-modal.svelte-1wrqiav{background:var(--bg-elevated);width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden auto;box-shadow:0 24px 64px #00000080}.replay-modal-header.svelte-1wrqiav{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1.25rem;border-bottom:1px solid var(--border);gap:1rem;flex-shrink:0}.replay-modal-title.svelte-1wrqiav{font-size:.875rem;font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.replay-close.svelte-1wrqiav{background:transparent;border:none;color:var(--text-muted);cursor:pointer;padding:.25rem;display:flex;align-items:center;border-radius:var(--radius-sm);flex-shrink:0;transition:color var(--duration-fast)}.replay-close.svelte-1wrqiav:hover{color:var(--text)}.replay-body.svelte-1wrqiav{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}
@@ -3,4 +3,4 @@
3
3
  * Licensed under the MIT License. See LICENSE file in the project root for details.
4
4
  */
5
5
 
6
- import{A as a,R as u}from"./C4Z3p6jE.js";import{a as f}from"./CXQhSK1T.js";import{d as h}from"./DiexacSB.js";function d(){return f.getToken()}function o(){return{"Content-Type":"application/json",Authorization:`Bearer ${d()}`}}async function m({page:t=1,limit:e=u,sortBy:s,sortOrder:r}={}){const n=new URLSearchParams({page:t,limit:e});s&&n.set("sortBy",s),r&&n.set("sortOrder",r);const i=await fetch(`${a}/test-suites?${n}`,{headers:o()});if(!i.ok)throw new Error("Failed to fetch suites");return i.json()}async function E(){const t=await fetch(`${a}/test-suites?withCases=true`,{headers:o()});if(!t.ok)throw new Error("Failed to fetch suites");return(await t.json()).suites}async function p(t){const e=encodeURIComponent(t),[s,r]=await Promise.all([fetch(`${a}/test-suites?q=${e}`,{headers:o()}),fetch(`${a}/test-runs?q=${e}&limit=50`,{headers:o()})]),{suites:n,cases:i}=await s.json(),{runs:c}=await r.json();return{suites:n,cases:i,runs:c}}async function S(t){const e=await fetch(`${a}/test-suites/${t}`,{headers:o()});if(!e.ok)throw new Error("Suite not found");return(await e.json()).suite}async function T({name:t,description:e,priority:s}){const r=await fetch(`${a}/test-suites`,{method:"POST",headers:o(),body:JSON.stringify({name:t,description:e,priority:s})}),n=await r.json();if(!r.ok)throw new Error(n.error??"Failed to create suite");return n.suite}async function k(t,{name:e,description:s,priority:r}){const n=await fetch(`${a}/test-suites/${t}`,{method:"PUT",headers:o(),body:JSON.stringify({name:e,description:s,priority:r})}),i=await n.json();if(!n.ok)throw new Error(i.error??"Failed to update suite");return i.suite}async function j(t){if(!(await fetch(`${a}/test-suites/${t}`,{method:"DELETE",headers:o()})).ok)throw new Error("Failed to delete suite")}async function g(t){const e=await fetch(`${a}/test-cases/${t}`,{headers:o()});if(!e.ok)throw new Error("Test case not found");return(await e.json()).testCase}async function P({suiteId:t,title:e,description:s,priority:r}){const n=await fetch(`${a}/test-cases`,{method:"POST",headers:o(),body:JSON.stringify({suiteId:t,title:e,description:s,priority:r})}),i=await n.json();if(!n.ok)throw new Error(i.error??"Failed to create test case");return i.testCase}async function O(t,{title:e,description:s,priority:r,suiteId:n}){const i=await fetch(`${a}/test-cases/${t}`,{method:"PUT",headers:o(),body:JSON.stringify({title:e,description:s,priority:r,suiteId:n})}),c=await i.json();if(!i.ok)throw new Error(c.error??"Failed to update test case");return c.testCase}async function F(t,e){const s=await fetch(`${a}/test-cases/${t}/steps`,{method:"PUT",headers:o(),body:JSON.stringify({steps:e})}),r=await s.json();if(!s.ok)throw new Error(r.error??"Failed to save steps");return r.steps}async function b(t){if(!(await fetch(`${a}/test-cases/${t}`,{method:"DELETE",headers:o()})).ok)throw new Error("Failed to delete test case")}async function R({page:t=1,limit:e=u,sortBy:s,sortOrder:r}={}){const n=new URLSearchParams({page:t,limit:e});s&&n.set("sortBy",s),r&&n.set("sortOrder",r);const i=await fetch(`${a}/test-runs?${n}`,{headers:o()});if(!i.ok)throw new Error("Failed to fetch test runs");return i.json()}async function x(t){const e=await fetch(`${a}/test-runs/${t}`,{headers:o()});if(!e.ok)throw new Error("Test run not found");return(await e.json()).run}async function C({title:t,caseIds:e}){const s=await fetch(`${a}/test-runs`,{method:"POST",headers:o(),body:JSON.stringify({title:t,caseIds:e})}),r=await s.json();if(!s.ok)throw new Error(r.error??"Failed to create test run");return r.run}async function N(t,{title:e,status:s,caseIds:r}){const n=await fetch(`${a}/test-runs/${t}`,{method:"PUT",headers:o(),body:JSON.stringify({title:e,status:s,caseIds:r})}),i=await n.json();if(!n.ok)throw new Error(i.error??"Failed to update test run");return i.run}async function J(t){const e=await fetch(`${a}/test-runs/${t}/duplicate`,{method:"POST",headers:o()}),s=await e.json();if(!e.ok)throw new Error(s.error??"Failed to duplicate run");return s.run}async function U(t){if(!(await fetch(`${a}/test-runs/${t}`,{method:"DELETE",headers:o()})).ok)throw new Error("Failed to delete test run")}async function A(t,{status:e,notes:s}){const r=await fetch(`${a}/test-runs/entries/${t}/result`,{method:"POST",headers:o(),body:JSON.stringify({status:e,notes:s})}),n=await r.json();if(!r.ok)throw new Error(n.error??"Failed to record result");return n.entry}async function I(t,e){const s=await fetch(`${a}/test-runs/entries/${t}/assign`,{method:"PUT",headers:o(),body:JSON.stringify({userId:e??null})}),r=await s.json();if(!s.ok)throw new Error(r.error??"Failed to assign entry");return r.entry}async function L(){const t=await fetch(`${a}/users/members`,{headers:o()});if(!t.ok)throw new Error("Failed to fetch members");return(await t.json()).users}async function q(){const t=await fetch(`${a}/settings/test-prefixes`,{headers:o()});if(!t.ok)throw new Error("Failed to fetch prefixes");return t.json()}async function v({testCasePrefix:t,testSuitePrefix:e}){return(await fetch(`${a}/settings/test-prefixes`,{method:"POST",headers:o(),body:JSON.stringify({testCasePrefix:t,testSuitePrefix:e})})).json()}async function z({testCasePrefix:t,testSuitePrefix:e}){return(await fetch(`${a}/settings/test-prefixes/migrate`,{method:"POST",headers:o(),body:JSON.stringify({testCasePrefix:t,testSuitePrefix:e})})).json()}function w(t,e,s){const r=`?format=${s}`;return t==="suite"?`${a}/test-suites/${e}/export${r}`:t==="run"?`${a}/test-runs/${e}/export${r}`:`${a}/test-suites/export${r}`}async function B(t,e,s){await h(w(t,e,s),{headers:{Authorization:`Bearer ${d()}`},fallbackName:`test-cases.${s}`})}async function D(t){const e=await fetch(`${a}/test-cases/import`,{method:"POST",headers:o(),body:JSON.stringify(t)}),s=await e.json();if(!e.ok)throw new Error(s.error??"Import failed");return s}export{R as a,U as b,J as c,j as d,T as e,m as f,C as g,B as h,S as i,E as j,b as k,P as l,O as m,g as n,F as o,q as p,v as q,z as r,p as s,D as t,k as u,x as v,L as w,N as x,I as y,A as z};
6
+ import{A as a,R as u}from"./C4Z3p6jE.js";import{a as f}from"./CXQhSK1T.js";import{d as h}from"./BIDsfWFz.js";function d(){return f.getToken()}function o(){return{"Content-Type":"application/json",Authorization:`Bearer ${d()}`}}async function m({page:t=1,limit:e=u,sortBy:s,sortOrder:r}={}){const n=new URLSearchParams({page:t,limit:e});s&&n.set("sortBy",s),r&&n.set("sortOrder",r);const i=await fetch(`${a}/test-suites?${n}`,{headers:o()});if(!i.ok)throw new Error("Failed to fetch suites");return i.json()}async function E(){const t=await fetch(`${a}/test-suites?withCases=true`,{headers:o()});if(!t.ok)throw new Error("Failed to fetch suites");return(await t.json()).suites}async function p(t){const e=encodeURIComponent(t),[s,r]=await Promise.all([fetch(`${a}/test-suites?q=${e}`,{headers:o()}),fetch(`${a}/test-runs?q=${e}&limit=50`,{headers:o()})]),{suites:n,cases:i}=await s.json(),{runs:c}=await r.json();return{suites:n,cases:i,runs:c}}async function S(t){const e=await fetch(`${a}/test-suites/${t}`,{headers:o()});if(!e.ok)throw new Error("Suite not found");return(await e.json()).suite}async function T({name:t,description:e,priority:s}){const r=await fetch(`${a}/test-suites`,{method:"POST",headers:o(),body:JSON.stringify({name:t,description:e,priority:s})}),n=await r.json();if(!r.ok)throw new Error(n.error??"Failed to create suite");return n.suite}async function k(t,{name:e,description:s,priority:r}){const n=await fetch(`${a}/test-suites/${t}`,{method:"PUT",headers:o(),body:JSON.stringify({name:e,description:s,priority:r})}),i=await n.json();if(!n.ok)throw new Error(i.error??"Failed to update suite");return i.suite}async function j(t){if(!(await fetch(`${a}/test-suites/${t}`,{method:"DELETE",headers:o()})).ok)throw new Error("Failed to delete suite")}async function g(t){const e=await fetch(`${a}/test-cases/${t}`,{headers:o()});if(!e.ok)throw new Error("Test case not found");return(await e.json()).testCase}async function P({suiteId:t,title:e,description:s,priority:r}){const n=await fetch(`${a}/test-cases`,{method:"POST",headers:o(),body:JSON.stringify({suiteId:t,title:e,description:s,priority:r})}),i=await n.json();if(!n.ok)throw new Error(i.error??"Failed to create test case");return i.testCase}async function O(t,{title:e,description:s,priority:r,suiteId:n}){const i=await fetch(`${a}/test-cases/${t}`,{method:"PUT",headers:o(),body:JSON.stringify({title:e,description:s,priority:r,suiteId:n})}),c=await i.json();if(!i.ok)throw new Error(c.error??"Failed to update test case");return c.testCase}async function F(t,e){const s=await fetch(`${a}/test-cases/${t}/steps`,{method:"PUT",headers:o(),body:JSON.stringify({steps:e})}),r=await s.json();if(!s.ok)throw new Error(r.error??"Failed to save steps");return r.steps}async function b(t){if(!(await fetch(`${a}/test-cases/${t}`,{method:"DELETE",headers:o()})).ok)throw new Error("Failed to delete test case")}async function R({page:t=1,limit:e=u,sortBy:s,sortOrder:r}={}){const n=new URLSearchParams({page:t,limit:e});s&&n.set("sortBy",s),r&&n.set("sortOrder",r);const i=await fetch(`${a}/test-runs?${n}`,{headers:o()});if(!i.ok)throw new Error("Failed to fetch test runs");return i.json()}async function x(t){const e=await fetch(`${a}/test-runs/${t}`,{headers:o()});if(!e.ok)throw new Error("Test run not found");return(await e.json()).run}async function C({title:t,caseIds:e}){const s=await fetch(`${a}/test-runs`,{method:"POST",headers:o(),body:JSON.stringify({title:t,caseIds:e})}),r=await s.json();if(!s.ok)throw new Error(r.error??"Failed to create test run");return r.run}async function N(t,{title:e,status:s,caseIds:r}){const n=await fetch(`${a}/test-runs/${t}`,{method:"PUT",headers:o(),body:JSON.stringify({title:e,status:s,caseIds:r})}),i=await n.json();if(!n.ok)throw new Error(i.error??"Failed to update test run");return i.run}async function J(t){const e=await fetch(`${a}/test-runs/${t}/duplicate`,{method:"POST",headers:o()}),s=await e.json();if(!e.ok)throw new Error(s.error??"Failed to duplicate run");return s.run}async function U(t){if(!(await fetch(`${a}/test-runs/${t}`,{method:"DELETE",headers:o()})).ok)throw new Error("Failed to delete test run")}async function A(t,{status:e,notes:s}){const r=await fetch(`${a}/test-runs/entries/${t}/result`,{method:"POST",headers:o(),body:JSON.stringify({status:e,notes:s})}),n=await r.json();if(!r.ok)throw new Error(n.error??"Failed to record result");return n.entry}async function I(t,e){const s=await fetch(`${a}/test-runs/entries/${t}/assign`,{method:"PUT",headers:o(),body:JSON.stringify({userId:e??null})}),r=await s.json();if(!s.ok)throw new Error(r.error??"Failed to assign entry");return r.entry}async function L(){const t=await fetch(`${a}/users/members`,{headers:o()});if(!t.ok)throw new Error("Failed to fetch members");return(await t.json()).users}async function q(){const t=await fetch(`${a}/settings/test-prefixes`,{headers:o()});if(!t.ok)throw new Error("Failed to fetch prefixes");return t.json()}async function v({testCasePrefix:t,testSuitePrefix:e}){return(await fetch(`${a}/settings/test-prefixes`,{method:"POST",headers:o(),body:JSON.stringify({testCasePrefix:t,testSuitePrefix:e})})).json()}async function z({testCasePrefix:t,testSuitePrefix:e}){return(await fetch(`${a}/settings/test-prefixes/migrate`,{method:"POST",headers:o(),body:JSON.stringify({testCasePrefix:t,testSuitePrefix:e})})).json()}function w(t,e,s){const r=`?format=${s}`;return t==="suite"?`${a}/test-suites/${e}/export${r}`:t==="run"?`${a}/test-runs/${e}/export${r}`:`${a}/test-suites/export${r}`}async function B(t,e,s){await h(w(t,e,s),{headers:{Authorization:`Bearer ${d()}`},fallbackName:`test-cases.${s}`})}async function D(t){const e=await fetch(`${a}/test-cases/import`,{method:"POST",headers:o(),body:JSON.stringify(t)}),s=await e.json();if(!e.ok)throw new Error(s.error??"Import failed");return s}export{R as a,U as b,J as c,j as d,T as e,m as f,C as g,B as h,S as i,E as j,b as k,P as l,O as m,g as n,F as o,q as p,v as q,z as r,p as s,D as t,k as u,x as v,L as w,N as x,I as y,A as z};
@@ -3,4 +3,4 @@
3
3
  * Licensed under the MIT License. See LICENSE file in the project root for details.
4
4
  */
5
5
 
6
- function c(t,n){const e=URL.createObjectURL(t),o=document.createElement("a");o.href=e,o.download=n,document.body.appendChild(o),o.click(),o.remove(),setTimeout(()=>URL.revokeObjectURL(e),1e3)}function i(t,n){const e=/filename="?([^"]+)"?/.exec(t??"");return e?e[1]:n}async function r(t,{headers:n={},fallbackName:e="export"}={}){const o=await fetch(t,{headers:n});if(!o.ok)throw new Error("Export failed");const a=await o.blob();c(a,i(o.headers.get("Content-Disposition"),e))}export{c as a,r as d};
6
+ function a(t,n){const e=URL.createObjectURL(t),o=document.createElement("a");o.href=e,o.download=n,document.body.appendChild(o),o.click(),o.remove(),setTimeout(()=>URL.revokeObjectURL(e),1e3)}function i(t,n){const e=/filename="?([^"]+)"?/.exec(t??"");return e?e[1]:n}async function r(t,{headers:n={},fallbackName:e="export"}={}){const o=await fetch(t,{headers:n});if(!o.ok)throw new Error("Export failed");const c=await o.blob();a(c,i(o.headers.get("Content-Disposition"),e))}export{r as d};
@@ -0,0 +1,8 @@
1
+ /*
2
+ * This file is part of Plum.
3
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
4
+ */
5
+
6
+ var Yt=t=>{throw TypeError(t)};var Ce=(t,e,n)=>e.has(t)||Yt("Cannot "+n);var A=(t,e,n)=>(Ce(t,e,"read from private field"),n?n.call(t):e.get(t)),P=(t,e,n)=>e.has(t)?Yt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n);import{w as Ct,o as zt,as as C,g as O,s as N,z as Oe}from"./BIf7lHIm.js";const Ne="1787984688763";new URL("sveltekit-internal://");function je(t,e){return t==="/"||e==="ignore"?t:e==="never"?t.endsWith("/")?t.slice(0,-1):t:e==="always"&&!t.endsWith("/")?t+"/":t}function $e(t){return t.split("%25").map(decodeURI).join("%25")}function De(t){for(const e in t)t[e]=decodeURIComponent(t[e]);return t}function Rt({href:t}){return t.split("#")[0]}function Fe(t,e,n,r=!1){const a=new URL(t);Object.defineProperty(a,"searchParams",{value:new Proxy(a.searchParams,{get(i,o){if(o==="get"||o==="getAll"||o==="has")return f=>(n(f),i[o](f));e();const c=Reflect.get(i,o);return typeof c=="function"?c.bind(i):c}}),enumerable:!0,configurable:!0});const s=["href","pathname","search","toString","toJSON"];r&&s.push("hash");for(const i of s)Object.defineProperty(a,i,{get(){return e(),t[i]},enumerable:!0,configurable:!0});return a}function Ve(...t){let e=5381;for(const n of t)if(typeof n=="string"){let r=n.length;for(;r;)e=e*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)e=e*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(e>>>0).toString(36)}function Be(t){const e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n.buffer}const Ge=window.fetch;window.fetch=(t,e)=>((t instanceof Request?t.method:(e==null?void 0:e.method)||"GET")!=="GET"&&W.delete(Ot(t)),Ge(t,e));const W=new Map;function Me(t,e){const n=Ot(t,e),r=document.querySelector(n);if(r!=null&&r.textContent){let{body:a,...s}=JSON.parse(r.textContent);const i=r.getAttribute("data-ttl");return i&&W.set(n,{body:a,init:s,ttl:1e3*Number(i)}),r.getAttribute("data-b64")!==null&&(a=Be(a)),Promise.resolve(new Response(a,s))}return window.fetch(t,e)}function qe(t,e,n){if(W.size>0){const r=Ot(t,n),a=W.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(n==null?void 0:n.cache))return new Response(a.body,a.init);W.delete(r)}}return window.fetch(e,n)}function Ot(t,e){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(t instanceof Request?t.url:t)}]`;if(e!=null&&e.headers||e!=null&&e.body){const a=[];e.headers&&a.push([...new Headers(e.headers)].join(",")),e.body&&(typeof e.body=="string"||ArrayBuffer.isView(e.body))&&a.push(e.body),r+=`[data-hash="${Ve(...a)}"]`}return r}const He=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Ke(t){const e=[];return{pattern:t==="/"?/^\/$/:new RegExp(`^${Ye(t).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return e.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/(.*))?";const s=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(s)return e.push({name:s[1],matcher:s[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const i=r.split(/\[(.+?)\](?!\])/);return"/"+i.map((c,f)=>{if(f%2){if(c.startsWith("x+"))return It(String.fromCharCode(parseInt(c.slice(2),16)));if(c.startsWith("u+"))return It(String.fromCharCode(...c.slice(2).split("-").map(d=>parseInt(d,16))));const u=He.exec(c),[,p,y,l,m]=u;return e.push({name:l,matcher:m,optional:!!p,rest:!!y,chained:y?f===1&&i[0]==="":!1}),y?"(.*?)":p?"([^/]*)?":"([^/]+?)"}return It(c)}).join("")}).join("")}/?$`),params:e}}function We(t){return!/^\([^)]+\)$/.test(t)}function Ye(t){return t.slice(1).split("/").filter(We)}function ze(t,e,n){const r={},a=t.slice(1),s=a.filter(o=>o!==void 0);let i=0;for(let o=0;o<e.length;o+=1){const c=e[o];let f=a[o-i];if(c.chained&&c.rest&&i&&(f=a.slice(o-i,o+1).filter(u=>u).join("/"),i=0),f===void 0){c.rest&&(r[c.name]="");continue}if(!c.matcher||n[c.matcher](f)){r[c.name]=f;const u=e[o+1],p=a[o+1];u&&!u.rest&&u.optional&&p&&c.chained&&(i=0),!u&&!p&&Object.keys(r).length===s.length&&(i=0);continue}if(c.optional&&c.chained){i++;continue}return}if(!i)return r}function It(t){return t.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Je({nodes:t,server_loads:e,dictionary:n,matchers:r}){const a=new Set(e);return Object.entries(n).map(([o,[c,f,u]])=>{const{pattern:p,params:y}=Ke(o),l={id:o,exec:m=>{const d=p.exec(m);if(d)return ze(d,y,r)},errors:[1,...u||[]].map(m=>t[m]),layouts:[0,...f||[]].map(i),leaf:s(c)};return l.errors.length=l.layouts.length=Math.max(l.errors.length,l.layouts.length),l});function s(o){const c=o<0;return c&&(o=~o),[c,t[o]]}function i(o){return o===void 0?o:[a.has(o),t[o]]}}function fe(t,e=JSON.parse){try{return e(sessionStorage[t])}catch{}}function Jt(t,e,n=JSON.stringify){const r=n(e);try{sessionStorage[t]=r}catch{}}var oe;const x=((oe=globalThis.__sveltekit_18v2hel)==null?void 0:oe.base)??"";var se;const Xe=((se=globalThis.__sveltekit_18v2hel)==null?void 0:se.assets)??x,ue="sveltekit:snapshot",he="sveltekit:scroll",de="sveltekit:states",Ze="sveltekit:pageurl",G="sveltekit:history",J="sveltekit:navigation",ut={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},ft=location.origin;function pe(t){if(t instanceof URL)return t;let e=document.baseURI;if(!e){const n=document.getElementsByTagName("base");e=n.length?n[0].href:document.URL}return new URL(t,e)}function Nt(){return{x:pageXOffset,y:pageYOffset}}function B(t,e){return t.getAttribute(`data-sveltekit-${e}`)}const Xt={...ut,"":ut.hover};function ge(t){let e=t.assignedSlot??t.parentNode;return(e==null?void 0:e.nodeType)===11&&(e=e.host),e}function me(t,e){for(;t&&t!==e;){if(t.nodeName.toUpperCase()==="A"&&t.hasAttribute("href"))return t;t=ge(t)}}function Tt(t,e,n){let r;try{if(r=new URL(t instanceof SVGAElement?t.href.baseVal:t.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";r.hash=`#${o}${r.hash}`}}catch{}const a=t instanceof SVGAElement?t.target.baseVal:t.target,s=!r||!!a||vt(r,e,n)||(t.getAttribute("rel")||"").split(/\s+/).includes("external"),i=(r==null?void 0:r.origin)===ft&&t.hasAttribute("download");return{url:r,external:s,target:a,download:i}}function ht(t){let e=null,n=null,r=null,a=null,s=null,i=null,o=t;for(;o&&o!==document.documentElement;)r===null&&(r=B(o,"preload-code")),a===null&&(a=B(o,"preload-data")),e===null&&(e=B(o,"keepfocus")),n===null&&(n=B(o,"noscroll")),s===null&&(s=B(o,"reload")),i===null&&(i=B(o,"replacestate")),o=ge(o);function c(f){switch(f){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Xt[r??"off"],preload_data:Xt[a??"off"],keepfocus:c(e),noscroll:c(n),reload:c(s),replace_state:c(i)}}function Zt(t){const e=Ct(t);let n=!0;function r(){n=!0,e.update(i=>i)}function a(i){n=!1,e.set(i)}function s(i){let o;return e.subscribe(c=>{(o===void 0||n&&c!==o)&&i(o=c)})}return{notify:r,set:a,subscribe:s}}const ye={v:()=>{}};function Qe(){const{set:t,subscribe:e}=Ct(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${Xe}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const i=(await a.json()).version!==Ne;return i&&(t(!0),ye.v(),clearTimeout(n)),i}catch{return!1}}return{subscribe:e,check:r}}function vt(t,e,n){return t.origin!==ft||!t.pathname.startsWith(e)?!0:n?!(t.pathname===e+"/"||t.pathname===e+"/index.html"||t.protocol==="file:"&&t.pathname.replace(/\/[^/]+\.html?$/,"")===e):!1}function Qt(t){const e=en(t),n=new ArrayBuffer(e.length),r=new DataView(n);for(let a=0;a<n.byteLength;a++)r.setUint8(a,e.charCodeAt(a));return n}const tn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function en(t){t.length%4===0&&(t=t.replace(/==?$/,""));let e="",n=0,r=0;for(let a=0;a<t.length;a++)n<<=6,n|=tn.indexOf(t[a]),r+=6,r===24&&(e+=String.fromCharCode((n&16711680)>>16),e+=String.fromCharCode((n&65280)>>8),e+=String.fromCharCode(n&255),n=r=0);return r===12?(n>>=4,e+=String.fromCharCode(n)):r===18&&(n>>=2,e+=String.fromCharCode((n&65280)>>8),e+=String.fromCharCode(n&255)),e}const nn=-1,rn=-2,an=-3,on=-4,sn=-5,cn=-6;function ln(t,e){if(typeof t=="number")return a(t,!0);if(!Array.isArray(t)||t.length===0)throw new Error("Invalid input");const n=t,r=Array(n.length);function a(s,i=!1){if(s===nn)return;if(s===an)return NaN;if(s===on)return 1/0;if(s===sn)return-1/0;if(s===cn)return-0;if(i)throw new Error("Invalid input");if(s in r)return r[s];const o=n[s];if(!o||typeof o!="object")r[s]=o;else if(Array.isArray(o))if(typeof o[0]=="string"){const c=o[0],f=e==null?void 0:e[c];if(f)return r[s]=f(a(o[1]));switch(c){case"Date":r[s]=new Date(o[1]);break;case"Set":const u=new Set;r[s]=u;for(let l=1;l<o.length;l+=1)u.add(a(o[l]));break;case"Map":const p=new Map;r[s]=p;for(let l=1;l<o.length;l+=2)p.set(a(o[l]),a(o[l+1]));break;case"RegExp":r[s]=new RegExp(o[1],o[2]);break;case"Object":r[s]=Object(o[1]);break;case"BigInt":r[s]=BigInt(o[1]);break;case"null":const y=Object.create(null);r[s]=y;for(let l=1;l<o.length;l+=2)y[o[l]]=a(o[l+1]);break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":{const l=globalThis[c],m=o[1],d=Qt(m),h=new l(d);r[s]=h;break}case"ArrayBuffer":{const l=o[1],m=Qt(l);r[s]=m;break}default:throw new Error(`Unknown type ${c}`)}}else{const c=new Array(o.length);r[s]=c;for(let f=0;f<o.length;f+=1){const u=o[f];u!==rn&&(c[f]=a(u))}}else{const c={};r[s]=c;for(const f in o){const u=o[f];c[f]=a(u)}}return r[s]}return a(0)}const we=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...we];const fn=new Set([...we]);[...fn];function un(t){return t.filter(e=>e!=null)}class bt{constructor(e,n){this.status=e,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}}class jt{constructor(e,n){this.status=e,this.location=n}}class $t extends Error{constructor(e,n,r){super(r),this.status=e,this.text=n}}const hn="x-sveltekit-invalidated",dn="x-sveltekit-trailing-slash";function dt(t){return t instanceof bt||t instanceof $t?t.status:500}function pn(t){return t instanceof $t?t.text:"Internal Error"}let U,X,Ut;const gn=zt.toString().includes("$$")||/function \w+\(\) \{\}/.test(zt.toString());var tt,et,nt,rt,at,ot,st,it,ie,ct,ce,lt,le;gn?(U={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},X={current:null},Ut={current:!1}):(U=new(ie=class{constructor(){P(this,tt,C({}));P(this,et,C(null));P(this,nt,C(null));P(this,rt,C({}));P(this,at,C({id:null}));P(this,ot,C({}));P(this,st,C(-1));P(this,it,C(new URL("https://example.com")))}get data(){return O(A(this,tt))}set data(e){N(A(this,tt),e)}get form(){return O(A(this,et))}set form(e){N(A(this,et),e)}get error(){return O(A(this,nt))}set error(e){N(A(this,nt),e)}get params(){return O(A(this,rt))}set params(e){N(A(this,rt),e)}get route(){return O(A(this,at))}set route(e){N(A(this,at),e)}get state(){return O(A(this,ot))}set state(e){N(A(this,ot),e)}get status(){return O(A(this,st))}set status(e){N(A(this,st),e)}get url(){return O(A(this,it))}set url(e){N(A(this,it),e)}},tt=new WeakMap,et=new WeakMap,nt=new WeakMap,rt=new WeakMap,at=new WeakMap,ot=new WeakMap,st=new WeakMap,it=new WeakMap,ie),X=new(ce=class{constructor(){P(this,ct,C(null))}get current(){return O(A(this,ct))}set current(e){N(A(this,ct),e)}},ct=new WeakMap,ce),Ut=new(le=class{constructor(){P(this,lt,C(!1))}get current(){return O(A(this,lt))}set current(e){N(A(this,lt),e)}},lt=new WeakMap,le),ye.v=()=>Ut.current=!0);function mn(t){Object.assign(U,t)}const yn="/__data.json",wn=".html__data.json";function _n(t){return t.endsWith(".html")?t.replace(/\.html$/,wn):t.replace(/\/$/,"")+yn}const vn=new Set(["icon","shortcut icon","apple-touch-icon"]),V=fe(he)??{},Z=fe(ue)??{},$={url:Zt({}),page:Zt({}),navigating:Ct(null),updated:Qe()};function Dt(t){V[t]=Nt()}function bn(t,e){let n=t+1;for(;V[n];)delete V[n],n+=1;for(n=e+1;Z[n];)delete Z[n],n+=1}function q(t){return location.href=t.href,new Promise(()=>{})}async function _e(){if("serviceWorker"in navigator){const t=await navigator.serviceWorker.getRegistration(x||"/");t&&await t.update()}}function te(){}let Ft,xt,pt,j,Pt,k;const gt=[],mt=[];let L=null;const ve=new Set,An=new Set,Y=new Set;let v={branch:[],error:null,url:null},Vt=!1,yt=!1,ee=!0,Q=!1,H=!1,be=!1,Bt=!1,Ae,R,T,F;const z=new Set;async function Vn(t,e,n){var a,s,i,o;document.URL!==location.href&&(location.href=location.href),k=t,await((s=(a=t.hooks).init)==null?void 0:s.call(a)),Ft=Je(t),j=document.documentElement,Pt=e,xt=t.nodes[0],pt=t.nodes[1],xt(),pt(),R=(i=history.state)==null?void 0:i[G],T=(o=history.state)==null?void 0:o[J],R||(R=T=Date.now(),history.replaceState({...history.state,[G]:R,[J]:T},""));const r=V[R];r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y)),n?await Cn(Pt,n):await Tn(k.hash?Pe(new URL(location.href)):location.href,{replaceState:!0}),Pn()}function kn(){gt.length=0,Bt=!1}function ke(t){mt.some(e=>e==null?void 0:e.snapshot)&&(Z[t]=mt.map(e=>{var n;return(n=e==null?void 0:e.snapshot)==null?void 0:n.capture()}))}function Se(t){var e;(e=Z[t])==null||e.forEach((n,r)=>{var a,s;(s=(a=mt[r])==null?void 0:a.snapshot)==null||s.restore(n)})}function ne(){Dt(R),Jt(he,V),ke(T),Jt(ue,Z)}async function Gt(t,e,n,r){return K({type:"goto",url:pe(t),keepfocus:e.keepFocus,noscroll:e.noScroll,replace_state:e.replaceState,state:e.state,redirect_count:n,nav_token:r,accept:()=>{e.invalidateAll&&(Bt=!0),e.invalidate&&e.invalidate.forEach(xn)}})}async function Sn(t){if(t.id!==(L==null?void 0:L.id)){const e={};z.add(e),L={id:t.id,token:e,promise:Re({...t,preload:e}).then(n=>(z.delete(e),n.type==="loaded"&&n.state.error&&(L=null),n))}}return L.promise}async function Lt(t){var n;const e=(n=await kt(t,!1))==null?void 0:n.route;e&&await Promise.all([...e.layouts,e.leaf].map(r=>r==null?void 0:r[1]()))}function Ee(t,e,n){var s;v=t.state;const r=document.querySelector("style[data-sveltekit]");r&&r.remove(),Object.assign(U,t.props.page),Ae=new k.root({target:e,props:{...t.props,stores:$,components:mt},hydrate:n,sync:!1}),Se(T);const a={from:null,to:{params:v.params,route:{id:((s=v.route)==null?void 0:s.id)??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};Y.forEach(i=>i(a)),yt=!0}function wt({url:t,params:e,branch:n,status:r,error:a,route:s,form:i}){let o="never";if(x&&(t.pathname===x||t.pathname===x+"/"))o="always";else for(const l of n)(l==null?void 0:l.slash)!==void 0&&(o=l.slash);t.pathname=je(t.pathname,o),t.search=t.search;const c={type:"loaded",state:{url:t,params:e,branch:n,error:a,route:s},props:{constructors:un(n).map(l=>l.node.component),page:Ht(U)}};i!==void 0&&(c.props.form=i);let f={},u=!U,p=0;for(let l=0;l<Math.max(n.length,v.branch.length);l+=1){const m=n[l],d=v.branch[l];(m==null?void 0:m.data)!==(d==null?void 0:d.data)&&(u=!0),m&&(f={...f,...m.data},u&&(c.props[`data_${p}`]=f),p+=1)}return(!v.url||t.href!==v.url.href||v.error!==a||i!==void 0&&i!==U.form||u)&&(c.props.page={error:a,params:e,route:{id:(s==null?void 0:s.id)??null},state:{},status:r,url:new URL(t),form:i??null,data:u?f:U.data}),c}async function Mt({loader:t,parent:e,url:n,params:r,route:a,server_data_node:s}){var u,p,y;let i=null,o=!0;const c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},f=await t();if((u=f.universal)!=null&&u.load){let l=function(...d){for(const h of d){const{href:w}=new URL(h,n);c.dependencies.add(w)}};const m={route:new Proxy(a,{get:(d,h)=>(o&&(c.route=!0),d[h])}),params:new Proxy(r,{get:(d,h)=>(o&&c.params.add(h),d[h])}),data:(s==null?void 0:s.data)??null,url:Fe(n,()=>{o&&(c.url=!0)},d=>{o&&c.search_params.add(d)},k.hash),async fetch(d,h){let w;d instanceof Request?(w=d.url,h={body:d.method==="GET"||d.method==="HEAD"?void 0:await d.blob(),cache:d.cache,credentials:d.credentials,headers:[...d.headers].length?d.headers:void 0,integrity:d.integrity,keepalive:d.keepalive,method:d.method,mode:d.mode,redirect:d.redirect,referrer:d.referrer,referrerPolicy:d.referrerPolicy,signal:d.signal,...h}):w=d;const S=new URL(w,n);return o&&l(S.href),S.origin===n.origin&&(w=S.href.slice(n.origin.length)),yt?qe(w,S.href,h):Me(w,h)},setHeaders:()=>{},depends:l,parent(){return o&&(c.parent=!0),e()},untrack(d){o=!1;try{return d()}finally{o=!0}}};i=await f.universal.load.call(null,m)??null}return{node:f,loader:t,server:s,universal:(p=f.universal)!=null&&p.load?{type:"data",data:i,uses:c}:null,data:i??(s==null?void 0:s.data)??null,slash:((y=f.universal)==null?void 0:y.trailingSlash)??(s==null?void 0:s.slash)}}function re(t,e,n,r,a,s){if(Bt)return!0;if(!a)return!1;if(a.parent&&t||a.route&&e||a.url&&n)return!0;for(const i of a.search_params)if(r.has(i))return!0;for(const i of a.params)if(s[i]!==v.params[i])return!0;for(const i of a.dependencies)if(gt.some(o=>o(new URL(i))))return!0;return!1}function qt(t,e){return(t==null?void 0:t.type)==="data"?t:(t==null?void 0:t.type)==="skip"?e??null:null}function En(t,e){if(!t)return new Set(e.searchParams.keys());const n=new Set([...t.searchParams.keys(),...e.searchParams.keys()]);for(const r of n){const a=t.searchParams.getAll(r),s=e.searchParams.getAll(r);a.every(i=>s.includes(i))&&s.every(i=>a.includes(i))&&n.delete(r)}return n}function ae({error:t,url:e,route:n,params:r}){return{type:"loaded",state:{error:t,url:e,route:n,params:r,branch:[]},props:{page:Ht(U),constructors:[]}}}async function Re({id:t,invalidating:e,url:n,params:r,route:a,preload:s}){if((L==null?void 0:L.id)===t)return z.delete(L.token),L.promise;const{errors:i,layouts:o,leaf:c}=a,f=[...o,c];i.forEach(g=>g==null?void 0:g().catch(()=>{})),f.forEach(g=>g==null?void 0:g[1]().catch(()=>{}));let u=null;const p=v.url?t!==_t(v.url):!1,y=v.route?a.id!==v.route.id:!1,l=En(v.url,n);let m=!1;const d=f.map((g,_)=>{var D;const b=v.branch[_],E=!!(g!=null&&g[0])&&((b==null?void 0:b.loader)!==g[1]||re(m,y,p,l,(D=b.server)==null?void 0:D.uses,r));return E&&(m=!0),E});if(d.some(Boolean)){try{u=await Le(n,d)}catch(g){const _=await M(g,{url:n,params:r,route:{id:t}});return z.has(s)?ae({error:_,url:n,params:r,route:a}):At({status:dt(g),error:_,url:n,route:a})}if(u.type==="redirect")return u}const h=u==null?void 0:u.nodes;let w=!1;const S=f.map(async(g,_)=>{var St;if(!g)return;const b=v.branch[_],E=h==null?void 0:h[_];if((!E||E.type==="skip")&&g[1]===(b==null?void 0:b.loader)&&!re(w,y,p,l,(St=b.universal)==null?void 0:St.uses,r))return b;if(w=!0,(E==null?void 0:E.type)==="error")throw E;return Mt({loader:g[1],url:n,params:r,route:a,parent:async()=>{var Wt;const Kt={};for(let Et=0;Et<_;Et+=1)Object.assign(Kt,(Wt=await S[Et])==null?void 0:Wt.data);return Kt},server_data_node:qt(E===void 0&&g[0]?{type:"skip"}:E??null,g[0]?b==null?void 0:b.server:void 0)})});for(const g of S)g.catch(()=>{});const I=[];for(let g=0;g<f.length;g+=1)if(f[g])try{I.push(await S[g])}catch(_){if(_ instanceof jt)return{type:"redirect",location:_.location};if(z.has(s))return ae({error:await M(_,{params:r,url:n,route:{id:a.id}}),url:n,params:r,route:a});let b=dt(_),E;if(h!=null&&h.includes(_))b=_.status??b,E=_.error;else if(_ instanceof bt)E=_.body;else{if(await $.updated.check())return await _e(),await q(n);E=await M(_,{params:r,url:n,route:{id:a.id}})}const D=await Rn(g,I,i);return D?wt({url:n,params:r,branch:I.slice(0,D.idx).concat(D.node),status:b,error:E,route:a}):await Ue(n,{id:a.id},E,b)}else I.push(void 0);return wt({url:n,params:r,branch:I,status:200,error:null,route:a,form:e?void 0:null})}async function Rn(t,e,n){for(;t--;)if(n[t]){let r=t;for(;!e[r];)r-=1;try{return{idx:r+1,node:{node:await n[t](),loader:n[t],data:{},server:null,universal:null}}}catch{continue}}}async function At({status:t,error:e,url:n,route:r}){const a={};let s=null;if(k.server_loads[0]===0)try{const o=await Le(n,[!0]);if(o.type!=="data"||o.nodes[0]&&o.nodes[0].type!=="data")throw 0;s=o.nodes[0]??null}catch{(n.origin!==ft||n.pathname!==location.pathname||Vt)&&await q(n)}try{const o=await Mt({loader:xt,url:n,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:qt(s)}),c={node:await pt(),loader:pt,universal:null,server:null,data:null};return wt({url:n,params:a,branch:[o,c],status:t,error:e,route:null})}catch(o){if(o instanceof jt)return Gt(new URL(o.location,location.href),{},0);throw o}}function In(t){let e;try{if(e=k.hooks.reroute({url:new URL(t)})??t,typeof e=="string"){const n=new URL(t);k.hash?n.hash=e:n.pathname=e,e=n}}catch{return}return e}async function kt(t,e){if(t&&!vt(t,x,k.hash)){const n=In(t);if(!n)return;const r=Un(n);for(const a of Ft){const s=a.exec(r);if(s)return{id:_t(t),invalidating:e,route:a,params:De(s),url:t}}}}function Un(t){return $e(k.hash?t.hash.replace(/^#/,"").replace(/[?#].+/,""):t.pathname.slice(x.length))||"/"}function _t(t){return(k.hash?t.hash.replace(/^#/,""):t.pathname)+t.search}function Ie({url:t,type:e,intent:n,delta:r}){let a=!1;const s=xe(v,n,t,e);r!==void 0&&(s.navigation.delta=r);const i={...s.navigation,cancel:()=>{a=!0,s.reject(new Error("navigation cancelled"))}};return Q||ve.forEach(o=>o(i)),a?null:s}async function K({type:t,url:e,popped:n,keepfocus:r,noscroll:a,replace_state:s,state:i={},redirect_count:o=0,nav_token:c={},accept:f=te,block:u=te}){const p=F;F=c;const y=await kt(e,!1),l=Ie({url:e,type:t,delta:n==null?void 0:n.delta,intent:y});if(!l){u(),F===c&&(F=p);return}const m=R,d=T;f(),Q=!0,yt&&$.navigating.set(X.current=l.navigation);let h=y&&await Re(y);if(!h){if(vt(e,x,k.hash))return await q(e);h=await Ue(e,{id:null},await M(new $t(404,"Not Found",`Not found: ${e.pathname}`),{url:e,params:{},route:{id:null}}),404)}if(e=(y==null?void 0:y.url)||e,F!==c)return l.reject(new Error("navigation aborted")),!1;if(h.type==="redirect")if(o>=20)h=await At({status:500,error:await M(new Error("Redirect loop"),{url:e,params:{},route:{id:null}}),url:e,route:{id:null}});else return await Gt(new URL(h.location,e).href,{},o+1,c),!1;else h.props.page.status>=400&&await $.updated.check()&&(await _e(),await q(e));if(kn(),Dt(m),ke(d),h.props.page.url.pathname!==e.pathname&&(e.pathname=h.props.page.url.pathname),i=n?n.state:i,!n){const g=s?0:1,_={[G]:R+=g,[J]:T+=g,[de]:i};(s?history.replaceState:history.pushState).call(history,_,"",e),s||bn(R,T)}if(L=null,h.props.page.state=i,yt){v=h.state,h.props.page&&(h.props.page.url=e);const g=(await Promise.all(Array.from(An,_=>_(l.navigation)))).filter(_=>typeof _=="function");if(g.length>0){let _=function(){g.forEach(b=>{Y.delete(b)})};g.push(_),g.forEach(b=>{Y.add(b)})}Ae.$set(h.props),mn(h.props.page),be=!0}else Ee(h,Pt,!1);const{activeElement:w}=document;await Oe();const S=n?n.scroll:a?Nt():null;if(ee){const g=e.hash&&document.getElementById(decodeURIComponent(k.hash?e.hash.split("#")[2]??"":e.hash.slice(1)));S?scrollTo(S.x,S.y):g?g.scrollIntoView():scrollTo(0,0)}const I=document.activeElement!==w&&document.activeElement!==document.body;!r&&!I&&On(),ee=!0,h.props.page&&Object.assign(U,h.props.page),Q=!1,t==="popstate"&&Se(T),l.fulfil(void 0),Y.forEach(g=>g(l.navigation)),$.navigating.set(X.current=null)}async function Ue(t,e,n,r){return t.origin===ft&&t.pathname===location.pathname&&!Vt?await At({status:r,error:n,url:t,route:e}):await q(t)}function Ln(){let t,e;j.addEventListener("mousemove",i=>{const o=i.target;clearTimeout(t),t=setTimeout(()=>{a(o,2)},20)});function n(i){i.defaultPrevented||a(i.composedPath()[0],1)}j.addEventListener("mousedown",n),j.addEventListener("touchstart",n,{passive:!0});const r=new IntersectionObserver(i=>{for(const o of i)o.isIntersecting&&(Lt(new URL(o.target.href)),r.unobserve(o.target))},{threshold:0});async function a(i,o){const c=me(i,j);if(!c||c===e)return;e=c;const{url:f,external:u,download:p}=Tt(c,x,k.hash);if(u||p)return;const y=ht(c),l=f&&_t(v.url)===_t(f);if(!y.reload&&!l)if(o<=y.preload_data){const m=await kt(f,!1);m&&Sn(m)}else o<=y.preload_code&&Lt(f)}function s(){r.disconnect();for(const i of j.querySelectorAll("a")){const{url:o,external:c,download:f}=Tt(i,x,k.hash);if(c||f)continue;const u=ht(i);u.reload||(u.preload_code===ut.viewport&&r.observe(i),u.preload_code===ut.eager&&Lt(o))}}Y.add(s),s()}function M(t,e){if(t instanceof bt)return t.body;const n=dt(t),r=pn(t);return k.hooks.handleError({error:t,event:e,status:n,message:r})??{message:r}}function Tn(t,e={}){return t=new URL(pe(t)),t.origin!==ft?Promise.reject(new Error("goto: invalid URL")):Gt(t,e,0)}function xn(t){if(typeof t=="function")gt.push(t);else{const{href:e}=new URL(t,location.href);gt.push(n=>n.href===e)}}function Pn(){var e;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let r=!1;if(ne(),!Q){const a=xe(v,void 0,null,"leave"),s={...a.navigation,cancel:()=>{r=!0,a.reject(new Error("navigation cancelled"))}};ve.forEach(i=>i(s))}r?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&ne()}),(e=navigator.connection)!=null&&e.saveData||Ln(),j.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const r=me(n.composedPath()[0],j);if(!r)return;const{url:a,external:s,target:i,download:o}=Tt(r,x,k.hash);if(!a)return;if(i==="_parent"||i==="_top"){if(window.parent!==window)return}else if(i&&i!=="_self")return;const c=ht(r);if(!(r instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||o)return;const[u,p]=(k.hash?a.hash.replace(/^#/,""):a.href).split("#"),y=u===Rt(location);if(s||c.reload&&(!y||!p)){Ie({url:a,type:"link"})?Q=!0:n.preventDefault();return}if(p!==void 0&&y){const[,l]=v.url.href.split("#");if(l===p){if(n.preventDefault(),p===""||p==="top"&&r.ownerDocument.getElementById("top")===null)window.scrollTo({top:0});else{const m=r.ownerDocument.getElementById(decodeURIComponent(p));m&&(m.scrollIntoView(),m.focus())}return}if(H=!0,Dt(R),t(a),!c.replace_state)return;H=!1}n.preventDefault(),await new Promise(l=>{requestAnimationFrame(()=>{setTimeout(l,0)}),setTimeout(l,100)}),await K({type:"link",url:a,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??a.href===location.href})}),j.addEventListener("submit",n=>{if(n.defaultPrevented)return;const r=HTMLFormElement.prototype.cloneNode.call(n.target),a=n.submitter;if(((a==null?void 0:a.formTarget)||r.target)==="_blank"||((a==null?void 0:a.formMethod)||r.method)!=="get")return;const o=new URL((a==null?void 0:a.hasAttribute("formaction"))&&(a==null?void 0:a.formAction)||r.action);if(vt(o,x,!1))return;const c=n.target,f=ht(c);if(f.reload)return;n.preventDefault(),n.stopPropagation();const u=new FormData(c),p=a==null?void 0:a.getAttribute("name");p&&u.append(p,(a==null?void 0:a.getAttribute("value"))??""),o.search=new URLSearchParams(u).toString(),K({type:"form",url:o,keepfocus:f.keepfocus,noscroll:f.noscroll,replace_state:f.replace_state??o.href===location.href})}),addEventListener("popstate",async n=>{var r;if((r=n.state)!=null&&r[G]){const a=n.state[G];if(F={},a===R)return;const s=V[a],i=n.state[de]??{},o=new URL(n.state[Ze]??location.href),c=n.state[J],f=v.url?Rt(location)===Rt(v.url):!1;if(c===T&&(be||f)){i!==U.state&&(U.state=i),t(o),V[R]=Nt(),s&&scrollTo(s.x,s.y),R=a;return}const p=a-R;await K({type:"popstate",url:o,popped:{state:i,scroll:s,delta:p},accept:()=>{R=a,T=c},block:()=>{history.go(-p)},nav_token:F})}else if(!H){const a=new URL(location.href);t(a)}}),addEventListener("hashchange",()=>{H?(H=!1,history.replaceState({...history.state,[G]:++R,[J]:T},"",location.href)):k.hash&&v.url.hash===location.hash&&K({type:"goto",url:Pe(v.url)})});for(const n of document.querySelectorAll("link"))vn.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&$.navigating.set(X.current=null)});function t(n){v.url=U.url=n,$.page.set(Ht(U)),$.page.notify()}}async function Cn(t,{status:e=200,error:n,node_ids:r,params:a,route:s,server_route:i,data:o,form:c}){Vt=!0;const f=new URL(location.href);let u;({params:a={},route:s={id:null}}=await kt(f,!1)||{}),u=Ft.find(({id:l})=>l===s.id);let p,y=!0;try{const l=r.map(async(d,h)=>{const w=o[h];return w!=null&&w.uses&&(w.uses=Te(w.uses)),Mt({loader:k.nodes[d],url:f,params:a,route:s,parent:async()=>{const S={};for(let I=0;I<h;I+=1)Object.assign(S,(await l[I]).data);return S},server_data_node:qt(w)})}),m=await Promise.all(l);if(u){const d=u.layouts;for(let h=0;h<d.length;h++)d[h]||m.splice(h,0,void 0)}p=wt({url:f,params:a,branch:m,status:e,error:n,form:c,route:u??null})}catch(l){if(l instanceof jt){await q(new URL(l.location,location.href));return}p=await At({status:dt(l),error:await M(l,{url:f,params:a,route:s}),url:f,route:s}),t.textContent="",y=!1}p.props.page&&(p.props.page.state={}),Ee(p,t,y)}async function Le(t,e){var s;const n=new URL(t);n.pathname=_n(t.pathname),t.pathname.endsWith("/")&&n.searchParams.append(dn,"1"),n.searchParams.append(hn,e.map(i=>i?"1":"0").join(""));const r=window.fetch,a=await r(n.href,{});if(!a.ok){let i;throw(s=a.headers.get("content-type"))!=null&&s.includes("application/json")?i=await a.json():a.status===404?i="Not Found":a.status===500&&(i="Internal Error"),new bt(a.status,i)}return new Promise(async i=>{var y;const o=new Map,c=a.body.getReader(),f=new TextDecoder;function u(l){return ln(l,{...k.decoders,Promise:m=>new Promise((d,h)=>{o.set(m,{fulfil:d,reject:h})})})}let p="";for(;;){const{done:l,value:m}=await c.read();if(l&&!p)break;for(p+=!m&&p?`
7
+ `:f.decode(m,{stream:!0});;){const d=p.indexOf(`
8
+ `);if(d===-1)break;const h=JSON.parse(p.slice(0,d));if(p=p.slice(d+1),h.type==="redirect")return i(h);if(h.type==="data")(y=h.nodes)==null||y.forEach(w=>{(w==null?void 0:w.type)==="data"&&(w.uses=Te(w.uses),w.data=u(w.data))}),i(h);else if(h.type==="chunk"){const{id:w,data:S,error:I}=h,g=o.get(w);o.delete(w),I?g.reject(u(I)):g.fulfil(u(S))}}}})}function Te(t){return{dependencies:new Set((t==null?void 0:t.dependencies)??[]),params:new Set((t==null?void 0:t.params)??[]),parent:!!(t!=null&&t.parent),route:!!(t!=null&&t.route),url:!!(t!=null&&t.url),search_params:new Set((t==null?void 0:t.search_params)??[])}}function On(){const t=document.querySelector("[autofocus]");if(t)t.focus();else{const e=document.body,n=e.getAttribute("tabindex");e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),n!==null?e.setAttribute("tabindex",n):e.removeAttribute("tabindex");const r=getSelection();if(r&&r.type!=="None"){const a=[];for(let s=0;s<r.rangeCount;s+=1)a.push(r.getRangeAt(s));setTimeout(()=>{if(r.rangeCount===a.length){for(let s=0;s<r.rangeCount;s+=1){const i=a[s],o=r.getRangeAt(s);if(i.commonAncestorContainer!==o.commonAncestorContainer||i.startContainer!==o.startContainer||i.endContainer!==o.endContainer||i.startOffset!==o.startOffset||i.endOffset!==o.endOffset)return}r.removeAllRanges()}})}}}function xe(t,e,n,r){var c,f;let a,s;const i=new Promise((u,p)=>{a=u,s=p});return i.catch(()=>{}),{navigation:{from:{params:t.params,route:{id:((c=t.route)==null?void 0:c.id)??null},url:t.url},to:n&&{params:(e==null?void 0:e.params)??null,route:{id:((f=e==null?void 0:e.route)==null?void 0:f.id)??null},url:n},willUnload:!e,type:r,complete:i},fulfil:a,reject:s}}function Ht(t){return{data:t.data,error:t.error,form:t.form,params:t.params,route:t.route,state:t.state,status:t.status,url:t.url}}function Pe(t){const e=new URL(t);return e.hash=decodeURIComponent(t.hash),e}export{Vn as a,Tn as g,U as p,$ as s};
@@ -3,4 +3,4 @@
3
3
  * Licensed under the MIT License. See LICENSE file in the project root for details.
4
4
  */
5
5
 
6
- import{p as t}from"./C4Z3p6jE.js";const E="Test Repository",o="Name",_="Description",T="Priority",n="Title",c="Name is required.",L="Title is required.",A="Test Repository — Plum",S="Test Repository",i="Manage test suites, cases, and track manual test runs.",D="+ New Suite",I="+ New Run",d="Import from file",R="/settings?section=testcases",O="Test cases",u="Suite",C="Suites",N="Test Runs",r="Search by ID or name…",l="No results",U="Cases",p="Suites",B="automated",P="Delete suite",b="Delete run",M="Duplicate run",m="No test suites yet",F="Create your first suite to start organising test cases.",g="No test runs yet",$="Create a test run to start executing and tracking manual tests.",h="New Test Suite",H="New Test Run",y="Login flows",v="What this suite covers…",G="Sprint 12 regression",f="Duplicate Run",k="Duplicate",W="? A copy will be added at the top of the list.",Y="Failed to load data",w="Failed to delete suite.",x="Failed to duplicate run.",X="Failed to delete run.",K=s=>`Nothing matches "${s}".`,V=s=>`by ${s}`,q=s=>`${s} ${t(s,"case")}`,z=s=>s?"Creating…":"Create Suite",Q=s=>s?"Creating…":"Create Run",j=s=>`Delete ${s==="suite"?"Suite":"Run"}`,J=s=>`Suite "${s}" created.`,Z=s=>`Suite "${s}" deleted.`,ss=s=>`Duplicated as "${s}".`,ts=s=>`Run "${s}" deleted.`,as="Delete Test Case",es="New Test Case",Es="User can log in with valid credentials",os="What this case verifies…",_s="Create Case",Ts="Edit Suite",ns="Edit suite",cs="Edit case",Ls="Test Cases",As="+ Add Case",Ss="Filter by ID or name…",is="No cases yet",Ds="Add your first test case to this suite.",Is="No cases match",ds="Date",Rs="Step",Os="Action",us="Test Data",Cs="Expected Output",Ns="Describe the action…",rs="Optional",ls="What should happen…",Us='No steps. Click "+ Add step" to begin.',ps="+ Add step",Bs="Edit Steps",Ps='No steps defined. Click "Edit Steps" to add them.',bs="Steps",Ms="History",ms="No history yet. Results appear after test runs or automated builds.",Fs="Automated run ↗",gs="Report not found",$s="Run not found",hs="Failed to load suite",Hs="Failed to load case",ys="Failed to delete case.",vs="Test case updated.",Gs="Steps saved.",fs="Suite updated.",ks="Move to suite",Ws="Move Test Case",Ys="Move to suite",ws="Failed to move case.",xs=s=>`${s?`${s.displayId} — ${s.name}`:"Suite"} — Plum`,Xs=s=>`Created by ${s}`,Ks=s=>`${s} created.`,Vs=s=>`${s} deleted.`,qs=(s,a)=>`${s} moved to ${a}.`,zs=s=>`${s} ${t(s,"step")}`,Qs=s=>s?"Saving…":"Save Steps",js=s=>s?"Moving…":"Move",Js=s=>`${s} ↗`,Zs="Edit Run",st="Edit run",tt="Reopen",at="Start Execution",et="Stop Execution",Et="← Edit Run",ot="Mark Complete",_t="Build",Tt="Execute",nt="In this run",ct="locked",Lt="No cases in this run.",At="Unassigned",St="Suite browser",it="Search cases…",Dt="No matching cases",It="No cases in this suite",dt="All cases added",Rt="No suites available.",Ot="This run is not in progress — start execution to record results.",ut="Toggle steps",Ct="Assign to me",Nt="In Progress",rt="Pass",lt="Fail",Ut="Blocked",pt="Skip",Bt="Reset to pending",Pt="↩ Reset",bt="Failed to add case.",Mt="Run updated.",mt="Run saved.",Ft="Run marked as complete.",gt="Run reopened.",$t=s=>`${(s==null?void 0:s.title)??"Test Run"} — Plum`,ht=s=>`${s} passed`,Ht=s=>`${s} failed`,yt=s=>`${s} remaining`,vt=s=>`Data: ${s}`,Gt=s=>`Expected: ${s}`;export{es as $,l as A,F as B,m as C,k as D,O as E,Y as F,P as G,S as H,R as I,q as J,V as K,$ as L,g as M,h as N,M as O,A as P,b as Q,N as R,C as S,n as T,K as U,U as V,B as W,p as X,hs as Y,xs as Z,as as _,i as a,St as a$,Es as a0,os as a1,Ts as a2,Ws as a3,Vs as a4,ys as a5,_s as a6,js as a7,Rt as a8,Ys as a9,Fs as aA,Gs as aB,Us as aC,Rs as aD,Ns as aE,us as aF,rs as aG,Cs as aH,ls as aI,Os as aJ,Ps as aK,gs as aL,Js as aM,$s as aN,$t as aO,Zs as aP,Mt as aQ,st as aR,_t as aS,Tt as aT,tt as aU,nt as aV,ut as aW,gt as aX,ct as aY,Lt as aZ,At as a_,Ks as aa,fs as ab,qs as ac,ws as ad,E as ae,ns as af,Ls as ag,As as ah,Xs as ai,u as aj,Ss as ak,ds as al,Ds as am,is as an,Is as ao,ks as ap,zs as aq,Hs as ar,bs as as,Ms as at,cs as au,vs as av,Bs as aw,Qs as ax,ps as ay,ms as az,f as b,it as b0,Ot as b1,ht as b2,Ht as b3,yt as b4,Nt as b5,rt as b6,lt as b7,Ut as b8,pt as b9,Bt as ba,Pt as bb,vt as bc,Gt as bd,Ct as be,mt as bf,bt as bg,at as bh,et as bi,Et as bj,ot as bk,Dt as bl,It as bm,dt as bn,Ft as bo,W as c,o as d,y as e,_ as f,v as g,T as h,z as i,H as j,G as k,Q as l,r as m,w as n,X as o,j as p,ss as q,ts as r,Z as s,x as t,c as u,J as v,L as w,d as x,D as y,I as z};
6
+ import{p as t}from"./C4Z3p6jE.js";const E="Test Repository",o="Name",_="Description",T="Priority",n="Title",c="Name is required.",L="Title is required.",A="Test Repository — Plum",S="Test Repository",i="Manage test suites, cases, and track manual test runs.",D="+ New Suite",I="+ New Run",d="Import from file",R="/settings?section=testcases",O="Test cases",u="Suite",C="Suites",N="Test Runs",r="Search by ID or name…",l="No results",U="Cases",p="Suites",B="automated",P="Delete suite",b="Delete run",M="Duplicate run",m="No test suites yet",F="Create your first suite to start organising test cases.",g="No test runs yet",$="Create a test run to start executing and tracking manual tests.",h="New Test Suite",H="New Test Run",y="Login flows",v="What this suite covers…",G="Sprint 12 regression",f="Duplicate Run",k="Duplicate",W="? A copy will be added at the top of the list.",Y="Failed to load data",w="Failed to delete suite.",x="Failed to duplicate run.",X="Failed to delete run.",K=s=>`Nothing matches "${s}".`,V=s=>`by ${s}`,q=s=>`${s} ${t(s,"case")}`,z=s=>s?"Creating…":"Create Suite",Q=s=>s?"Creating…":"Create Run",j=s=>`Delete ${s==="suite"?"Suite":"Run"}`,J=s=>`Suite "${s}" created.`,Z=s=>`Suite "${s}" deleted.`,ss=s=>`Duplicated as "${s}".`,ts=s=>`Run "${s}" deleted.`,as="Delete Test Case",es="New Test Case",Es="User can log in with valid credentials",os="What this case verifies…",_s="Create Case",Ts="Edit Suite",ns="Edit suite",cs="Edit case",Ls="Test Cases",As="+ Add Case",Ss="Filter by ID or name…",is="No cases yet",Ds="Add your first test case to this suite.",Is="No cases match",ds="Date",Rs="Step",Os="Action",us="Test Data",Cs="Expected Output",Ns="Describe the action…",rs="Optional",ls="What should happen…",Us='No steps. Click "+ Add step" to begin.',ps="+ Add step",Bs="Edit Steps",Ps='No steps defined. Click "Edit Steps" to add them.',bs="Steps",Ms="History",ms="No history yet. Results appear after test runs or automated builds.",Fs="Automated run ↗",gs="Report not found",$s="Run not found",hs="Failed to load suite",Hs="Failed to load case",ys="Failed to delete case.",vs="Test case updated.",Gs="Steps saved.",fs="Suite updated.",ks="Move to suite",Ws="Move Test Case",Ys="Move to suite",ws="Failed to move case.",xs=s=>`${s?`${s.displayId} — ${s.name}`:"Suite"} — Plum`,Xs=s=>`Created by ${s}`,Ks=s=>`${s} created.`,Vs=s=>`${s} deleted.`,qs=(s,a)=>`${s} moved to ${a}.`,zs=s=>`${s} ${t(s,"step")}`,Qs=s=>s?"Saving…":"Save Steps",js=s=>s?"Moving…":"Move",Js=s=>`${s} ↗`,Zs="Edit Run",st="Edit run",tt="Reopen",at="Start Execution",et="Stop Execution",Et="← Edit Run",ot="Mark Complete",_t="Build",Tt="Execute",nt="In this run",ct="locked",Lt="No cases in this run.",At="Unassigned",St="Suite browser",it="Search cases…",Dt="No matching cases",It="No cases in this suite",dt="All cases added",Rt="No suites available.",Ot="This run is not in progress — start execution to record results.",ut="Toggle steps",Ct="Assign to me",Nt="In Progress",rt="Pass",lt="Fail",Ut="Blocked",pt="Skip",Bt="Reset to pending",Pt="↩ Reset",bt="Failed to add case.",Mt="Run updated.",mt="Run saved.",Ft="Run marked as complete.",gt="Run reopened.",$t=s=>`${(s==null?void 0:s.title)??"Test Run"} — Plum`,ht=s=>`${s} passed`,Ht=s=>`${s} failed`,yt=s=>`${s} remaining`,vt=s=>`Data: ${s}`,Gt=s=>`Expected: ${s}`;export{es as $,l as A,F as B,m as C,k as D,O as E,Y as F,P as G,S as H,R as I,q as J,V as K,$ as L,g as M,h as N,M as O,A as P,b as Q,N as R,C as S,n as T,K as U,U as V,B as W,p as X,hs as Y,xs as Z,as as _,i as a,St as a$,Es as a0,os as a1,Ts as a2,Ws as a3,Vs as a4,ys as a5,_s as a6,js as a7,Rt as a8,Ys as a9,Fs as aA,Gs as aB,Us as aC,Rs as aD,Ns as aE,us as aF,rs as aG,Cs as aH,ls as aI,Os as aJ,Ps as aK,gs as aL,Js as aM,$s as aN,$t as aO,Zs as aP,Mt as aQ,st as aR,_t as aS,Tt as aT,tt as aU,nt as aV,ut as aW,gt as aX,ct as aY,Lt as aZ,At as a_,Ks as aa,fs as ab,qs as ac,ws as ad,E as ae,ns as af,Ls as ag,As as ah,Xs as ai,u as aj,Ss as ak,ds as al,Ds as am,is as an,Is as ao,ks as ap,zs as aq,Hs as ar,bs as as,Ms as at,cs as au,vs as av,Bs as aw,Qs as ax,ps as ay,ms as az,f as b,it as b0,Ot as b1,ht as b2,Ht as b3,yt as b4,Nt as b5,rt as b6,lt as b7,Ut as b8,pt as b9,Bt as ba,Pt as bb,vt as bc,Gt as bd,Ct as be,mt as bf,bt as bg,at as bh,et as bi,Et as bj,ot as bk,Dt as bl,It as bm,dt as bn,Ft as bo,W as c,o as d,y as e,_ as f,v as g,T as h,z as i,H as j,G as k,Q as l,r as m,w as n,X as o,j as p,ss as q,ts as r,Z as s,x as t,c as u,J as v,L as w,D as x,I as y,d as z};
@@ -0,0 +1,6 @@
1
+ /*
2
+ * This file is part of Plum.
3
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
4
+ */
5
+
6
+ import{A as t,o as _,p as r}from"./C4Z3p6jE.js";import{d as T}from"./BIDsfWFz.js";function n(s){return{...s,date:new Date(s.createdAt).toLocaleString()}}async function R({page:s=1,limit:e=_}={}){const a=new URLSearchParams({page:s,limit:e}),o=await fetch(`${t}/reports?${a}`),{reports:c,total:E,passCount:i,failCount:l,trend:L}=await o.json();return{reports:c.map(n),total:E,passCount:i,failCount:l,trend:L.map(n)}}function A(s){return`/reports/${s}`}async function S(s){const e=await fetch(`${t}/reports/${s}`);if(!e.ok)throw new Error("Report not found");return e.json()}async function u(s){const e=await fetch(`${t}/reports/${s}/recordings`);if(!e.ok)throw new Error("Failed to fetch recordings");return e.json()}async function N(s,e){const a=await fetch(`${t}/reports/${s}/recordings/${e}/events`);if(!a.ok)throw new Error("Failed to fetch recording events");const{events:o}=await a.json();return o}async function I(s,e){await T(`${t}/reports/${s}/export?format=${e}`,{fallbackName:`report-${s}.${e}`})}async function f(s){const e=await fetch(`${t}/reports/${s}`,{method:"DELETE"});if(!e.ok)throw new Error("Failed to delete report");return e.json()}async function h(s){const e=await fetch(`${t}/reports/bulk`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:s})});if(!e.ok)throw new Error("Failed to delete reports");return e.json()}const D="Reports",w="Passed",$="Failed",P="Reports — Plum",O="Reports",m="passing",B="Recent",C="← older · newer →",g="No reports yet. Run a test to generate one.",b="Select all on this page",y="Select",U="Screenshots have been replaced by full session replay. Reports created before this change no longer have screenshots — steps and logs are still available.",G="Dismiss",k="Delete report",F=s=>s===1?"Delete report?":`Delete ${s} reports?`,v=s=>s===1?"This will permanently remove the report and its data file.":`This will permanently remove ${s} reports and their data files.`,M=s=>`${s} ${r(s,"run")} recorded`,W=s=>`${s} passed`,H=s=>`${s} failed`,j=(s,e,a)=>`${s} · ${e} · ${a}`,V=s=>`Delete (${s})`,Y="Report — Plum",K="Could not load report.",x="passed",q="failed",z="skipped",J="duration",Q="Run Logs",X="Failed and was automatically retried before the final result",Z="Watch replay",ss="Replay",es=s=>`${s} runners`,ts=s=>`${s} cases`,as=s=>`${s} attempts`,os=s=>`Case ${s}`,ns="Could not load this recording.",rs="Inspect element",cs=[{id:"csv",label:"CSV",hint:"Download report"},{id:"json",label:"JSON",hint:"Structured summary"}],Es="Dismiss",is="Restart replay",ls="Steps",Ls="Inspector",_s="Click an element in the replay to inspect it.",Ts="Attributes",ds="Size",ps=s=>s===0?"Main tab":`Tab/Window ${s+1}`,Rs="Live Run — Plum",As="View past reports →",Ss="Live",us="Cancel run",Ns="All tests passed",Is="Some tests failed",fs="View Report Now",hs="Awaiting stream...",Ds="No stream...",ws="Runner",$s="Running…",Ps="Finished",Os="(waiting for output…)",ms="Unknown runner",Bs=s=>`Worker ${s}`,Cs=s=>`${s} ${r(s,"worker")}`,gs=s=>`Redirecting in ${s}s…`,bs="Waiting for a runner",ys="This run starts as soon as every runner it needs is free.",Us="Run not found",Gs="This run has finished or was never started. Check the reports list for its results.",ks="Run skipped",Fs=s=>s>0?`Position ${s} in the queue`:"Next up";export{N as $,hs as A,Ds as B,us as C,G as D,ws as E,$s as F,Ps as G,O as H,w as I,$ as J,es as K,P as L,Ns as M,g as N,Is as O,m as P,bs as Q,B as R,b as S,C as T,ls as U,As as V,Os as W,Ls as X,ds as Y,_s as Z,Ts as _,f as a,rs as a0,ps as a1,is as a2,ns as a3,S as a4,u as a5,Y as a6,K as a7,cs as a8,I as a9,x as aa,J as ab,ms as ac,ts as ad,X as ae,as as af,Z as ag,ss as ah,q as ai,z as aj,Q as ak,os as al,Es as am,h as b,F as c,v as d,U as e,R as f,H as g,y as h,k as i,A as j,V as k,Rs as l,D as m,Us as n,Gs as o,W as p,ys as q,M as r,Fs as s,j as t,ks as u,Ss as v,Cs as w,fs as x,gs as y,Bs as z};
@@ -3,4 +3,4 @@
3
3
  * Licensed under the MIT License. See LICENSE file in the project root for details.
4
4
  */
5
5
 
6
- import{s as e}from"./BIjh3jiU.js";const r=()=>{const s=e;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},b={subscribe(s){return r().page.subscribe(s)}};export{b as p};
6
+ import{s as e}from"./BX-5iVGy.js";const r=()=>{const s=e;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},b={subscribe(s){return r().page.subscribe(s)}};export{b as p};
@@ -3,5 +3,5 @@
3
3
  * Licensed under the MIT License. See LICENSE file in the project root for details.
4
4
  */
5
5
 
6
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.D2F-i1I5.js","../chunks/6VDMVB5U.js","../chunks/BIf7lHIm.js","../chunks/CtgCYzu5.js","../chunks/D_thT6pZ.js","../chunks/BTV7EXZb.js","../chunks/BIjh3jiU.js","../chunks/Dlymnwnf.js","../chunks/C4Z3p6jE.js","../chunks/CXQhSK1T.js","../chunks/kFFd6Oo5.js","../chunks/htkwR9b-.js","../chunks/B2lVGNml.js","../chunks/pNZogwkM.js","../chunks/DiexacSB.js","../chunks/BdBJfKUi.js","../chunks/gCgJ3Cwu.js","../chunks/BWGoOYU0.js","../chunks/D72giPTu.js","../chunks/CUPWZLIN.js","../assets/Modal.BZpm0HP8.css","../assets/ConfirmModal.Dd3uP-Sk.css","../chunks/DeiVAbyn.js","../assets/Badge.D1SV0Gv7.css","../chunks/BDb8hZHu.js","../chunks/BtTNggoY.js","../chunks/DDx3no2z.js","../assets/0.BEqlRAtD.css","../nodes/1.JIF2GfHq.js","../nodes/2.Bno00fr8.js","../chunks/BnXsGCy3.js","../chunks/CNpD-yNH.js","../assets/EmptyState.DUDM4P19.css","../assets/2.C1TbMUws.css","../nodes/3.B6KwaCsM.js","../chunks/BCh31ecr.js","../chunks/3MBVX4Yb.js","../assets/BackLink.DRrgBGDC.css","../assets/3.Be5c3USL.css","../nodes/4.BX70m3v6.js","../chunks/iL4SCrvY.js","../chunks/Dlnxgs49.js","../assets/4.BR3wgXcZ.css","../nodes/5.UIFh06yr.js","../chunks/prk8PJfA.js","../assets/Pagination.DZmi2Po-.css","../assets/5.ClS4XkkN.css","../nodes/6.DZ1OV24V.js","../chunks/Bfc47y5P.js","../chunks/tsOANt55.js","../chunks/zXSLr47H.js","../assets/ExportMenu.DsJQ1Qua.css","../assets/6.DdQVxyZK.css","../nodes/7.B_XntBZ1.js","../chunks/qvxlSGpD.js","../assets/Button.C1zsJAUG.css","../assets/7.CBHi6pzT.css","../nodes/8.CVHgJw-E.js","../assets/8.DOC8fPSI.css","../nodes/9.DDDQPmMj.js","../assets/9._h2o67kg.css","../nodes/10.A0AHLfOt.js","../chunks/r_d1Iu0W.js","../assets/10.DC0wD6w_.css","../nodes/11.CVSPxlqY.js","../assets/11.BWAH0Beh.css","../nodes/12.CnAR0AQb.js","../assets/12.Dm1nSEgE.css"])))=>i.map(i=>d[i]);
7
- var W=r=>{throw TypeError(r)};var z=(r,t,s)=>t.has(r)||W("Cannot "+s);var u=(r,t,s)=>(z(r,t,"read from private field"),s?s.call(r):t.get(r)),w=(r,t,s)=>t.has(r)?W("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(r):t.set(r,s),D=(r,t,s,a)=>(z(r,t,"write to private field"),a?a.call(r,s):t.set(r,s),s);import{s as V,O as K,g as E,ar as Q,ad as X,W as M,h as G,_ as $,Z as tt,a0 as et,a6 as rt,a7 as st,a8 as ot,p as at,af as nt,ag as it,o as ct,z as ut,f as T,j as lt,c as _t,as as I,d as mt,k as dt,t as ft,V as x}from"../chunks/BIf7lHIm.js";import{f as ht,m as vt,u as Et,a as b,c as S,t as Y,b as gt,s as yt}from"../chunks/6VDMVB5U.js";import{i as C}from"../chunks/D_thT6pZ.js";import{p as j,a as Pt}from"../chunks/D72giPTu.js";import{b as B}from"../chunks/BCh31ecr.js";const pt="modulepreload",Rt=function(r,t){return new URL(r,t).href},N={},l=function(t,s,a){let n=Promise.resolve();if(s&&s.length>0){const o=document.getElementsByTagName("link"),e=document.querySelector("meta[property=csp-nonce]"),d=(e==null?void 0:e.nonce)||(e==null?void 0:e.getAttribute("nonce"));n=Promise.allSettled(s.map(_=>{if(_=Rt(_,a),_ in N)return;N[_]=!0;const y=_.endsWith(".css"),k=y?'[rel="stylesheet"]':"";if(!!a)for(let P=o.length-1;P>=0;P--){const i=o[P];if(i.href===_&&(!y||i.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${_}"]${k}`))return;const h=document.createElement("link");if(h.rel=y?"stylesheet":pt,y||(h.as="script"),h.crossOrigin="",h.href=_,d&&h.setAttribute("nonce",d),document.head.appendChild(h),y)return new Promise((P,i)=>{h.addEventListener("load",P),h.addEventListener("error",()=>i(new Error(`Unable to preload CSS for ${_}`)))})}))}function c(o){const e=new Event("vite:preloadError",{cancelable:!0});if(e.payload=o,window.dispatchEvent(e),!e.defaultPrevented)throw o}return n.then(o=>{for(const e of o||[])e.status==="rejected"&&c(e.reason);return t().catch(c)})},Bt={};function bt(r){return class extends Ot{constructor(t){super({component:r,...t})}}}var g,m;class Ot{constructor(t){w(this,g);w(this,m);var c;var s=new Map,a=(o,e)=>{var d=M(e);return s.set(o,d),d};const n=new Proxy({...t.props||{},$$events:{}},{get(o,e){return E(s.get(e)??a(e,Reflect.get(o,e)))},has(o,e){return e===K?!0:(E(s.get(e)??a(e,Reflect.get(o,e))),Reflect.has(o,e))},set(o,e,d){return V(s.get(e)??a(e,d),d),Reflect.set(o,e,d)}});D(this,m,(t.hydrate?ht:vt)(t.component,{target:t.target,anchor:t.anchor,props:n,context:t.context,intro:t.intro??!1,recover:t.recover})),(!((c=t==null?void 0:t.props)!=null&&c.$$host)||t.sync===!1)&&Q(),D(this,g,n.$$events);for(const o of Object.keys(u(this,m)))o==="$set"||o==="$destroy"||o==="$on"||X(this,o,{get(){return u(this,m)[o]},set(e){u(this,m)[o]=e},enumerable:!0});u(this,m).$set=o=>{Object.assign(n,o)},u(this,m).$destroy=()=>{Et(u(this,m))}}$set(t){u(this,m).$set(t)}$on(t,s){u(this,g)[t]=u(this,g)[t]||[];const a=(...n)=>s.call(this,...n);return u(this,g)[t].push(a),()=>{u(this,g)[t]=u(this,g)[t].filter(n=>n!==a)}}$destroy(){u(this,m).$destroy()}}g=new WeakMap,m=new WeakMap;function q(r,t,s){G&&$();var a=r,n,c;tt(()=>{n!==(n=t())&&(c&&(st(c),c=null),n&&(c=rt(()=>s(a,n))))},et),G&&(a=ot)}var At=Y('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),Lt=Y("<!> <!>",1);function Tt(r,t){at(t,!0);let s=j(t,"components",23,()=>[]),a=j(t,"data_0",3,null),n=j(t,"data_1",3,null);nt(()=>t.stores.page.set(t.page)),it(()=>{t.stores,t.page,t.constructors,s(),t.form,a(),n(),t.stores.page.notify()});let c=I(!1),o=I(!1),e=I(null);ct(()=>{const i=t.stores.page.subscribe(()=>{E(c)&&(V(o,!0),ut().then(()=>{V(e,Pt(document.title||"untitled page"))}))});return V(c,!0),i});const d=x(()=>t.constructors[1]);var _=Lt(),y=T(_);{var k=i=>{var v=S();const O=x(()=>t.constructors[0]);var A=T(v);q(A,()=>E(O),(p,R)=>{B(R(p,{get data(){return a()},get form(){return t.form},children:(f,wt)=>{var U=S(),Z=T(U);q(Z,()=>E(d),(H,J)=>{B(J(H,{get data(){return n()},get form(){return t.form}}),L=>s()[1]=L,()=>{var L;return(L=s())==null?void 0:L[1]})}),b(f,U)},$$slots:{default:!0}}),f=>s()[0]=f,()=>{var f;return(f=s())==null?void 0:f[0]})}),b(i,v)},F=i=>{var v=S();const O=x(()=>t.constructors[0]);var A=T(v);q(A,()=>E(O),(p,R)=>{B(R(p,{get data(){return a()},get form(){return t.form}}),f=>s()[0]=f,()=>{var f;return(f=s())==null?void 0:f[0]})}),b(i,v)};C(y,i=>{t.constructors[1]?i(k):i(F,!1)})}var h=lt(y,2);{var P=i=>{var v=At(),O=mt(v);{var A=p=>{var R=gt();ft(()=>yt(R,E(e))),b(p,R)};C(O,p=>{E(o)&&p(A)})}dt(v),b(i,v)};C(h,i=>{E(c)&&i(P)})}b(r,_),_t()}const qt=bt(Tt),Ft=[()=>l(()=>import("../nodes/0.D2F-i1I5.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]),import.meta.url),()=>l(()=>import("../nodes/1.JIF2GfHq.js"),__vite__mapDeps([28,1,2,3,6]),import.meta.url),()=>l(()=>import("../nodes/2.Bno00fr8.js"),__vite__mapDeps([29,1,2,3,4,5,8,30,11,12,9,31,18,32,33]),import.meta.url),()=>l(()=>import("../nodes/3.B6KwaCsM.js"),__vite__mapDeps([34,1,2,3,4,5,35,6,7,11,8,12,9,16,13,14,18,36,37,22,23,38]),import.meta.url),()=>l(()=>import("../nodes/4.BX70m3v6.js"),__vite__mapDeps([39,1,2,3,4,8,30,6,9,26,40,41,42]),import.meta.url),()=>l(()=>import("../nodes/5.UIFh06yr.js"),__vite__mapDeps([43,1,2,3,4,5,8,13,14,11,12,9,22,18,23,44,45,17,19,20,21,31,32,46]),import.meta.url),()=>l(()=>import("../nodes/6.DZ1OV24V.js"),__vite__mapDeps([47,1,2,3,4,5,8,48,49,7,6,13,14,12,24,22,18,23,36,37,50,35,51,25,52]),import.meta.url),()=>l(()=>import("../nodes/7.B_XntBZ1.js"),__vite__mapDeps([53,1,2,3,4,5,8,30,54,18,49,55,48,10,9,11,12,22,23,19,20,17,21,24,31,32,56]),import.meta.url),()=>l(()=>import("../nodes/8.CVHgJw-E.js"),__vite__mapDeps([57,1,2,3,4,5,8,30,54,18,49,55,35,6,7,10,9,15,14,26,11,12,40,24,17,19,20,21,22,23,58]),import.meta.url),()=>l(()=>import("../nodes/9.DDDQPmMj.js"),__vite__mapDeps([59,1,2,3,4,8,30,6,26,9,40,41,60]),import.meta.url),()=>l(()=>import("../nodes/10.A0AHLfOt.js"),__vite__mapDeps([61,1,2,3,4,5,8,30,54,18,49,55,15,9,14,50,35,51,62,11,12,44,45,31,32,17,19,20,21,24,63]),import.meta.url),()=>l(()=>import("../nodes/11.CVSPxlqY.js"),__vite__mapDeps([64,1,2,3,4,5,8,30,54,18,49,55,7,6,15,9,14,11,12,19,20,24,31,32,62,65]),import.meta.url),()=>l(()=>import("../nodes/12.CnAR0AQb.js"),__vite__mapDeps([66,1,2,3,4,5,8,30,54,18,49,55,48,7,6,15,9,14,50,35,51,62,31,32,17,19,20,21,24,44,45,67]),import.meta.url)],Ut=[],Wt={"/":[2],"/live/[id]":[3],"/login":[4],"/reports":[5],"/reports/[id]":[6],"/scheduled-tests":[7],"/settings":[8],"/setup":[9],"/test-repository":[10],"/test-repository/runs/[id]":[11],"/test-repository/suites/[id]":[12]},Vt={handleError:({error:r})=>{console.error(r)},reroute:()=>{},transport:{}},kt=Object.fromEntries(Object.entries(Vt.transport).map(([r,t])=>[r,t.decode])),zt=!1,Gt=(r,t)=>kt[r](t);export{Gt as decode,kt as decoders,Wt as dictionary,zt as hash,Vt as hooks,Bt as matchers,Ft as nodes,qt as root,Ut as server_loads};
6
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.coxCxRRE.js","../chunks/6VDMVB5U.js","../chunks/BIf7lHIm.js","../chunks/CtgCYzu5.js","../chunks/D_thT6pZ.js","../chunks/BTV7EXZb.js","../chunks/BX-5iVGy.js","../chunks/QwDXcLXz.js","../chunks/C4Z3p6jE.js","../chunks/CXQhSK1T.js","../chunks/kFFd6Oo5.js","../chunks/htkwR9b-.js","../chunks/B2lVGNml.js","../chunks/Dn1b1Jgc.js","../chunks/BIDsfWFz.js","../chunks/B74j8LrV.js","../chunks/gCgJ3Cwu.js","../chunks/BWGoOYU0.js","../chunks/D72giPTu.js","../chunks/CUPWZLIN.js","../assets/Modal.BZpm0HP8.css","../assets/ConfirmModal.Dd3uP-Sk.css","../chunks/DeiVAbyn.js","../assets/Badge.D1SV0Gv7.css","../chunks/BDb8hZHu.js","../chunks/DDx3no2z.js","../assets/0.DbhNvxzA.css","../nodes/1.C-Zryp-y.js","../nodes/2.Bno00fr8.js","../chunks/BnXsGCy3.js","../chunks/CNpD-yNH.js","../assets/EmptyState.DUDM4P19.css","../assets/2.C1TbMUws.css","../nodes/3.HmZmGlze.js","../chunks/BCh31ecr.js","../chunks/3MBVX4Yb.js","../assets/BackLink.DRrgBGDC.css","../assets/3.B3djLY18.css","../nodes/4.ahxFrDUH.js","../chunks/iL4SCrvY.js","../chunks/Dlnxgs49.js","../assets/4.BR3wgXcZ.css","../nodes/5.BXasF8ka.js","../chunks/prk8PJfA.js","../assets/Pagination.DZmi2Po-.css","../assets/5.ClS4XkkN.css","../nodes/6.DYiAtU_m.js","../chunks/Bfc47y5P.js","../chunks/tsOANt55.js","../chunks/zXSLr47H.js","../assets/ExportMenu.DsJQ1Qua.css","../assets/6.BofiCOMr.css","../nodes/7.B_XntBZ1.js","../chunks/qvxlSGpD.js","../assets/Button.C1zsJAUG.css","../assets/7.CBHi6pzT.css","../nodes/8.iy5VcxjU.js","../assets/8.DOC8fPSI.css","../nodes/9.Bcqk4p04.js","../assets/9._h2o67kg.css","../nodes/10.CXqf0Rbs.js","../chunks/DFZtPGTY.js","../assets/10.D2ehp3UL.css","../nodes/11.PLIMGzrY.js","../assets/11.BWAH0Beh.css","../nodes/12.BGCTaTPG.js","../assets/12.Dm1nSEgE.css"])))=>i.map(i=>d[i]);
7
+ var W=r=>{throw TypeError(r)};var z=(r,t,s)=>t.has(r)||W("Cannot "+s);var u=(r,t,s)=>(z(r,t,"read from private field"),s?s.call(r):t.get(r)),w=(r,t,s)=>t.has(r)?W("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(r):t.set(r,s),D=(r,t,s,a)=>(z(r,t,"write to private field"),a?a.call(r,s):t.set(r,s),s);import{s as V,O as K,g as E,ar as Q,ad as X,W as M,h as G,_ as $,Z as tt,a0 as et,a6 as rt,a7 as st,a8 as ot,p as at,af as nt,ag as it,o as ct,z as ut,f as T,j as lt,c as _t,as as I,d as mt,k as dt,t as ft,V as x}from"../chunks/BIf7lHIm.js";import{f as ht,m as vt,u as Et,a as b,c as S,t as Y,b as gt,s as yt}from"../chunks/6VDMVB5U.js";import{i as C}from"../chunks/D_thT6pZ.js";import{p as j,a as Pt}from"../chunks/D72giPTu.js";import{b as B}from"../chunks/BCh31ecr.js";const pt="modulepreload",Rt=function(r,t){return new URL(r,t).href},N={},l=function(t,s,a){let n=Promise.resolve();if(s&&s.length>0){const o=document.getElementsByTagName("link"),e=document.querySelector("meta[property=csp-nonce]"),d=(e==null?void 0:e.nonce)||(e==null?void 0:e.getAttribute("nonce"));n=Promise.allSettled(s.map(_=>{if(_=Rt(_,a),_ in N)return;N[_]=!0;const y=_.endsWith(".css"),k=y?'[rel="stylesheet"]':"";if(!!a)for(let P=o.length-1;P>=0;P--){const i=o[P];if(i.href===_&&(!y||i.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${_}"]${k}`))return;const h=document.createElement("link");if(h.rel=y?"stylesheet":pt,y||(h.as="script"),h.crossOrigin="",h.href=_,d&&h.setAttribute("nonce",d),document.head.appendChild(h),y)return new Promise((P,i)=>{h.addEventListener("load",P),h.addEventListener("error",()=>i(new Error(`Unable to preload CSS for ${_}`)))})}))}function c(o){const e=new Event("vite:preloadError",{cancelable:!0});if(e.payload=o,window.dispatchEvent(e),!e.defaultPrevented)throw o}return n.then(o=>{for(const e of o||[])e.status==="rejected"&&c(e.reason);return t().catch(c)})},Bt={};function bt(r){return class extends Ot{constructor(t){super({component:r,...t})}}}var g,m;class Ot{constructor(t){w(this,g);w(this,m);var c;var s=new Map,a=(o,e)=>{var d=M(e);return s.set(o,d),d};const n=new Proxy({...t.props||{},$$events:{}},{get(o,e){return E(s.get(e)??a(e,Reflect.get(o,e)))},has(o,e){return e===K?!0:(E(s.get(e)??a(e,Reflect.get(o,e))),Reflect.has(o,e))},set(o,e,d){return V(s.get(e)??a(e,d),d),Reflect.set(o,e,d)}});D(this,m,(t.hydrate?ht:vt)(t.component,{target:t.target,anchor:t.anchor,props:n,context:t.context,intro:t.intro??!1,recover:t.recover})),(!((c=t==null?void 0:t.props)!=null&&c.$$host)||t.sync===!1)&&Q(),D(this,g,n.$$events);for(const o of Object.keys(u(this,m)))o==="$set"||o==="$destroy"||o==="$on"||X(this,o,{get(){return u(this,m)[o]},set(e){u(this,m)[o]=e},enumerable:!0});u(this,m).$set=o=>{Object.assign(n,o)},u(this,m).$destroy=()=>{Et(u(this,m))}}$set(t){u(this,m).$set(t)}$on(t,s){u(this,g)[t]=u(this,g)[t]||[];const a=(...n)=>s.call(this,...n);return u(this,g)[t].push(a),()=>{u(this,g)[t]=u(this,g)[t].filter(n=>n!==a)}}$destroy(){u(this,m).$destroy()}}g=new WeakMap,m=new WeakMap;function q(r,t,s){G&&$();var a=r,n,c;tt(()=>{n!==(n=t())&&(c&&(st(c),c=null),n&&(c=rt(()=>s(a,n))))},et),G&&(a=ot)}var At=Y('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),Lt=Y("<!> <!>",1);function Tt(r,t){at(t,!0);let s=j(t,"components",23,()=>[]),a=j(t,"data_0",3,null),n=j(t,"data_1",3,null);nt(()=>t.stores.page.set(t.page)),it(()=>{t.stores,t.page,t.constructors,s(),t.form,a(),n(),t.stores.page.notify()});let c=I(!1),o=I(!1),e=I(null);ct(()=>{const i=t.stores.page.subscribe(()=>{E(c)&&(V(o,!0),ut().then(()=>{V(e,Pt(document.title||"untitled page"))}))});return V(c,!0),i});const d=x(()=>t.constructors[1]);var _=Lt(),y=T(_);{var k=i=>{var v=S();const O=x(()=>t.constructors[0]);var A=T(v);q(A,()=>E(O),(p,R)=>{B(R(p,{get data(){return a()},get form(){return t.form},children:(f,wt)=>{var U=S(),Z=T(U);q(Z,()=>E(d),(H,J)=>{B(J(H,{get data(){return n()},get form(){return t.form}}),L=>s()[1]=L,()=>{var L;return(L=s())==null?void 0:L[1]})}),b(f,U)},$$slots:{default:!0}}),f=>s()[0]=f,()=>{var f;return(f=s())==null?void 0:f[0]})}),b(i,v)},F=i=>{var v=S();const O=x(()=>t.constructors[0]);var A=T(v);q(A,()=>E(O),(p,R)=>{B(R(p,{get data(){return a()},get form(){return t.form}}),f=>s()[0]=f,()=>{var f;return(f=s())==null?void 0:f[0]})}),b(i,v)};C(y,i=>{t.constructors[1]?i(k):i(F,!1)})}var h=lt(y,2);{var P=i=>{var v=At(),O=mt(v);{var A=p=>{var R=gt();ft(()=>yt(R,E(e))),b(p,R)};C(O,p=>{E(o)&&p(A)})}dt(v),b(i,v)};C(h,i=>{E(c)&&i(P)})}b(r,_),_t()}const qt=bt(Tt),Ft=[()=>l(()=>import("../nodes/0.coxCxRRE.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]),import.meta.url),()=>l(()=>import("../nodes/1.C-Zryp-y.js"),__vite__mapDeps([27,1,2,3,6]),import.meta.url),()=>l(()=>import("../nodes/2.Bno00fr8.js"),__vite__mapDeps([28,1,2,3,4,5,8,29,11,12,9,30,18,31,32]),import.meta.url),()=>l(()=>import("../nodes/3.HmZmGlze.js"),__vite__mapDeps([33,1,2,3,4,5,34,6,7,11,8,12,9,16,13,14,18,35,36,22,23,37]),import.meta.url),()=>l(()=>import("../nodes/4.ahxFrDUH.js"),__vite__mapDeps([38,1,2,3,4,8,29,6,9,25,39,40,41]),import.meta.url),()=>l(()=>import("../nodes/5.BXasF8ka.js"),__vite__mapDeps([42,1,2,3,4,5,8,13,14,11,12,9,22,18,23,43,44,17,19,20,21,30,31,45]),import.meta.url),()=>l(()=>import("../nodes/6.DYiAtU_m.js"),__vite__mapDeps([46,1,2,3,4,5,8,47,48,7,6,13,14,12,24,22,18,23,35,36,49,34,50,51]),import.meta.url),()=>l(()=>import("../nodes/7.B_XntBZ1.js"),__vite__mapDeps([52,1,2,3,4,5,8,29,53,18,48,54,47,10,9,11,12,22,23,19,20,17,21,24,30,31,55]),import.meta.url),()=>l(()=>import("../nodes/8.iy5VcxjU.js"),__vite__mapDeps([56,1,2,3,4,5,8,29,53,18,48,54,34,6,7,10,9,15,14,25,11,12,39,24,17,19,20,21,22,23,57]),import.meta.url),()=>l(()=>import("../nodes/9.Bcqk4p04.js"),__vite__mapDeps([58,1,2,3,4,8,29,6,25,9,39,40,59]),import.meta.url),()=>l(()=>import("../nodes/10.CXqf0Rbs.js"),__vite__mapDeps([60,1,2,3,4,5,8,29,53,18,48,54,15,9,14,49,34,50,61,11,12,43,44,30,31,17,19,20,21,24,62]),import.meta.url),()=>l(()=>import("../nodes/11.PLIMGzrY.js"),__vite__mapDeps([63,1,2,3,4,5,8,29,53,18,48,54,7,6,15,9,14,11,12,19,20,24,30,31,61,64]),import.meta.url),()=>l(()=>import("../nodes/12.BGCTaTPG.js"),__vite__mapDeps([65,1,2,3,4,5,8,29,53,18,48,54,47,7,6,15,9,14,49,34,50,61,30,31,17,19,20,21,24,43,44,66]),import.meta.url)],Ut=[],Wt={"/":[2],"/live/[id]":[3],"/login":[4],"/reports":[5],"/reports/[id]":[6],"/scheduled-tests":[7],"/settings":[8],"/setup":[9],"/test-repository":[10],"/test-repository/runs/[id]":[11],"/test-repository/suites/[id]":[12]},Vt={handleError:({error:r})=>{console.error(r)},reroute:()=>{},transport:{}},kt=Object.fromEntries(Object.entries(Vt.transport).map(([r,t])=>[r,t.decode])),zt=!1,Gt=(r,t)=>kt[r](t);export{Gt as decode,kt as decoders,Wt as dictionary,zt as hash,Vt as hooks,Bt as matchers,Ft as nodes,qt as root,Ut as server_loads};
@@ -3,4 +3,4 @@
3
3
  * Licensed under the MIT License. See LICENSE file in the project root for details.
4
4
  */
5
5
 
6
- import{a as t}from"../chunks/BIjh3jiU.js";export{t as start};
6
+ import{a as t}from"../chunks/BX-5iVGy.js";export{t as start};