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
package/README.md CHANGED
@@ -69,6 +69,7 @@ Full documentation is available at:
69
69
  | [Initializing the Project](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/initializing-the-project-ilfc8LUyO7) | What `plum init` generates, config files explained |
70
70
  | [Writing Tests](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/writing-tests-XeHJQdtH49) | Feature files, page objects, step definitions, best practices |
71
71
  | [Running Tests Locally](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/running-tests-locally-GGhFcqaAQ8) | `plum run-test` flags, parallel runs, debugging tips |
72
+ | [Reports & Session Replay](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/reports-session-replay-EfhxJXaaDD) | The report page, session replay, step rail, inspector, export |
72
73
  | [Retrying Flaky Tests](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/retrying-flaky-tests-NXwRF5SXru) | Auto-retry failed scenarios, global setting, report badges |
73
74
  | [Setting Up the Server](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/setting-up-the-server-vj0Ab1kJVs) | Production server setup, reverse proxy (Nginx/Caddy), Docker |
74
75
  | [Setting Up Nodes](https://outline.silverlunah.com/s/12bf21d1-02ba-49e9-b0df-908976407afd/doc/setting-up-nodes-dtmekJGJia) | Nodes, systemd service, managing nodes |
@@ -79,28 +80,28 @@ Full documentation is available at:
79
80
 
80
81
  ## Command Reference
81
82
 
82
- | Command | Description |
83
- | ----------------------------- | --------------------------------------------------------------------------------------------- |
84
- | `plum init` | Initialize a new project in the current folder |
85
- | `plum server start` | Start the full UI stack via Docker |
86
- | `plum server restart` | Rebuild Docker images and restart the server without prompts |
87
- | `plum server stop` | Stop the server (data preserved) |
88
- | `plum server reconfig` | Re-enter server settings without starting |
89
- | `plum update` | Update Plum, then restart every registered server and node on this machine (asks before each) |
90
- | `plum node start [name]` | Register a node with the server and start it on this machine |
91
- | `plum node list` | List this machine's nodes and their status |
92
- | `plum node restart [name]` | Stop, refresh dependencies, and restart a node |
93
- | `plum node stop [name]` | Stop a node |
94
- | `plum node delete <name>` | Stop the node, delete its local config, and unregister it from the server |
95
- | `plum node reconfig [name]` | Re-enter a node's settings and re-register, without starting it |
96
- | `plum run-test` | Run all tests locally without Docker |
97
- | `plum run-test @tag` | Run tests matching a tag |
98
- | `plum run-test --parallel N` | Run tests across N parallel workers |
99
- | `plum run-test --browser <b>` | Run in `chromium` (default) or `firefox` |
100
- | `plum run-test --help` | Show usage for `run-test` |
101
- | `plum create-step` | Interactively scaffold a new step definition |
102
- | `plum create-test` | Interactively scaffold a full feature (`.feature` + Page + Steps) |
103
- | `plum manage-nodes` | Open the interactive node management menu |
83
+ | Command | Description |
84
+ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
85
+ | `plum init` | Initialize a new project in the current folder |
86
+ | `plum server start` | Start the full UI stack via Docker |
87
+ | `plum server restart` | Rebuild Docker images and restart the server without prompts |
88
+ | `plum server stop` | Stop the server (data preserved) |
89
+ | `plum server reconfig` | Re-enter server settings without starting |
90
+ | `plum update` | Update Plum if a newer version is published, then restart every registered server and node (asks before each); no-ops when already on the latest |
91
+ | `plum node start [name]` | Register a node with the server and start it on this machine |
92
+ | `plum node list` | List this machine's nodes and their status |
93
+ | `plum node restart [name]` | Stop, refresh dependencies, and restart a node |
94
+ | `plum node stop [name]` | Stop a node |
95
+ | `plum node delete <name>` | Stop the node, delete its local config, and unregister it from the server |
96
+ | `plum node reconfig [name]` | Re-enter a node's settings and re-register, without starting it |
97
+ | `plum run-test` | Run all tests locally without Docker |
98
+ | `plum run-test @tag` | Run tests matching a tag |
99
+ | `plum run-test --parallel N` | Run tests across N parallel workers |
100
+ | `plum run-test --browser <b>` | Run in `chromium` (default) or `firefox` |
101
+ | `plum run-test --help` | Show usage for `run-test` |
102
+ | `plum create-step` | Interactively scaffold a new step definition |
103
+ | `plum create-test` | Interactively scaffold a full feature (`.feature` + Page + Steps) |
104
+ | `plum manage-nodes` | Open the interactive node management menu |
104
105
 
105
106
  ---
106
107
 
@@ -277,8 +277,8 @@ async function addNode() {
277
277
  const port = await clack.text({
278
278
  message:
279
279
  'Port this node will listen on — any process already using it will be stopped on start',
280
- placeholder: '3002',
281
- defaultValue: '3002'
280
+ placeholder: '9001',
281
+ defaultValue: '9001'
282
282
  });
283
283
  if (cancelled(port)) return;
284
284
 
package/bin/plum.js CHANGED
@@ -532,7 +532,7 @@ async function serverRestart() {
532
532
  const NPM_INSTALL_RETRIES = 3;
533
533
  const NPM_INSTALL_RETRY_DELAY_MS = 5000;
534
534
 
535
- function npmInstallLatestWithRetry() {
535
+ async function npmInstallLatestWithRetry() {
536
536
  for (let attempt = 1; attempt <= NPM_INSTALL_RETRIES; attempt++) {
537
537
  try {
538
538
  execSync('npm install -g plum-e2e@latest', { stdio: 'inherit' });
@@ -542,7 +542,7 @@ function npmInstallLatestWithRetry() {
542
542
  clack.log.warn(
543
543
  `npm install failed (attempt ${attempt}/${NPM_INSTALL_RETRIES}) — this is often a transient registry propagation delay right after a new release. Retrying in ${NPM_INSTALL_RETRY_DELAY_MS / 1000}s…`
544
544
  );
545
- execSync(`sleep ${NPM_INSTALL_RETRY_DELAY_MS / 1000}`);
545
+ await new Promise((r) => setTimeout(r, NPM_INSTALL_RETRY_DELAY_MS));
546
546
  }
547
547
  }
548
548
  }
@@ -553,12 +553,31 @@ function readPlumVersion() {
553
553
  return JSON.parse(fs.readFileSync(path.join(plumRoot, 'package.json'), 'utf8')).version;
554
554
  }
555
555
 
556
+ /** Latest version published to npm, or null when the registry can't be reached. */
557
+ function fetchLatestPublishedVersion() {
558
+ try {
559
+ return execSync('npm view plum-e2e version', {
560
+ encoding: 'utf8',
561
+ stdio: ['ignore', 'pipe', 'ignore']
562
+ }).trim();
563
+ } catch {
564
+ return null;
565
+ }
566
+ }
567
+
556
568
  async function serverUpdate() {
557
569
  clack.intro(pc.bgMagenta(pc.white(' 🟣 Plum — Update ')));
558
570
 
559
571
  const fromVersion = readPlumVersion();
560
- clack.log.step(`Fetching latest Plum version… (currently ${fromVersion})`);
561
- if (!npmInstallLatestWithRetry()) {
572
+ clack.log.step(`Checking for a newer Plum release… (you have ${fromVersion})`);
573
+
574
+ const latest = fetchLatestPublishedVersion();
575
+ if (latest && latest === fromVersion) {
576
+ clack.outro(pc.green(`Already on the latest version (${fromVersion}). Nothing to do.`));
577
+ return;
578
+ }
579
+
580
+ if (!(await npmInstallLatestWithRetry())) {
562
581
  clack.log.error(
563
582
  `Failed to install the latest version after ${NPM_INSTALL_RETRIES} attempts. Try again shortly, or run "npm install -g plum-e2e@latest" manually to see the full error.`
564
583
  );
@@ -714,8 +733,8 @@ async function configureNode({ force, name: nameArg }) {
714
733
 
715
734
  let mode = getFlag(args, '--mode') ?? saved.mode ?? 'local';
716
735
  let primary = getFlag(args, '--primary') ?? process.env.PRIMARY_URL ?? saved.primary ?? '';
717
- // Not 3001 that's the primary's default; a co-located node must not collide.
718
- let port = getFlag(args, '--port') ?? saved.port ?? '3002';
736
+ // Away from 3001 (primary) and 3002 (frontend) so a co-located node doesn't collide.
737
+ let port = getFlag(args, '--port') ?? saved.port ?? '9001';
719
738
  let browser = getFlag(args, '--browser') ?? saved.browser ?? 'chromium';
720
739
  let token = getFlag(args, '--token') ?? process.env.NODE_TOKEN ?? saved.token ?? generateToken();
721
740
  let url = getFlag(args, '--url') ?? saved.url ?? '';
@@ -1231,6 +1250,7 @@ switch (command) {
1231
1250
  '- **Test Cases** — Document steps (Action / Test Data / Expected Output), set priority, and assign a Cucumber `@tag` to link automation.',
1232
1251
  '- **Test Runs** — Build a run from any combination of cases, execute them one by one (pass/fail/blocked/skip), and track history.',
1233
1252
  '- **Auto-linking** — When a build completes, Plum matches Cucumber scenario tags against `automatedTag` values on your test cases and marks them as automated.',
1253
+ '- **Export / import** — Export test cases (whole repository or one suite) as CSV or JSON from the Suites tab. The JSON re-imports from **Settings → Test Cases** — a case whose ID already exists is skipped; anything else is imported with a fresh ID.',
1234
1254
  '',
1235
1255
  'To link a test case to automation, set its **Automated tag** (e.g. `test-login-1`) to match the `@tag` on the Cucumber scenario.',
1236
1256
  '',
@@ -1541,7 +1561,7 @@ switch (command) {
1541
1561
  console.log(
1542
1562
  ' http://host.docker.internal:<port>; production: pass a domain)'
1543
1563
  );
1544
- console.log(' --port <n> Local HTTP port the node listens on (default: 3002)');
1564
+ console.log(' --port <n> Local HTTP port the node listens on (default: 9001)');
1545
1565
  console.log(' --token <secret> Auth token (auto-generated + saved if omitted)');
1546
1566
  console.log(' --browser <name> chromium | firefox (default: chromium)');
1547
1567
  console.log(' node list List this machine’s nodes and their status');
@@ -276,7 +276,7 @@
276
276
  "_format.js"
277
277
  ],
278
278
  "css": [
279
- "_app/immutable/assets/_layout.B4TT3qNx.css",
279
+ "_app/immutable/assets/_layout.DWCC-fI9.css",
280
280
  "_app/immutable/assets/Modal.BuaCfdLj.css",
281
281
  "_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css",
282
282
  "_app/immutable/assets/Badge.D1SV0Gv7.css"
@@ -323,7 +323,7 @@
323
323
  "_attributes.js"
324
324
  ],
325
325
  "css": [
326
- "_app/immutable/assets/_page.Be5c3USL.css"
326
+ "_app/immutable/assets/_page.B3djLY18.css"
327
327
  ]
328
328
  },
329
329
  "src/routes/login/+page.svelte": {
@@ -382,7 +382,7 @@
382
382
  "_BackLink.js"
383
383
  ],
384
384
  "css": [
385
- "_app/immutable/assets/_page.4bPj83tb.css",
385
+ "_app/immutable/assets/_page.D1jbMcpb.css",
386
386
  "_app/immutable/assets/Badge.D1SV0Gv7.css",
387
387
  "_app/immutable/assets/ExportMenu.DsJQ1Qua.css"
388
388
  ]
@@ -474,7 +474,7 @@
474
474
  "_Button.js"
475
475
  ],
476
476
  "css": [
477
- "_app/immutable/assets/_page.BwgtEi_a.css",
477
+ "_app/immutable/assets/_page.BNh9zY8Y.css",
478
478
  "_app/immutable/assets/ExportMenu.DsJQ1Qua.css",
479
479
  "_app/immutable/assets/Pagination.DZmi2Po-.css"
480
480
  ]
@@ -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}
@@ -641,7 +641,7 @@ const options = {
641
641
  <div class="error">
642
642
  <span class="status">` + status + '</span>\n <div class="message">\n <h1>' + message + "</h1>\n </div>\n </div>\n </body>\n</html>\n"
643
643
  },
644
- version_hash: "gzrsz9"
644
+ version_hash: "18v2hel"
645
645
  };
646
646
  async function get_hooks() {
647
647
  let handle;
@@ -13,8 +13,6 @@ import "../../chunks/format.js";
13
13
  /* empty css */
14
14
  /* empty css */
15
15
  /* empty css */
16
- import "html-to-image";
17
- import "fix-webm-duration";
18
16
  function _layout($$payload, $$props) {
19
17
  push();
20
18
  {
@@ -28,7 +28,7 @@ function LiveReplayer($$payload, $$props) {
28
28
  } catch {
29
29
  }
30
30
  });
31
- $$payload.out += `<div class="live-viewport svelte-1wgcx8r"><div class="live-stage svelte-1wgcx8r"><div class="live-mount svelte-1wgcx8r"></div></div></div>`;
31
+ $$payload.out += `<div class="live-viewport svelte-9tul2m"><div class="live-stage svelte-9tul2m"><div class="live-mount svelte-9tul2m"></div></div></div>`;
32
32
  bind_props($$props, { events });
33
33
  pop();
34
34
  }
@@ -13,8 +13,6 @@ import "clsx";
13
13
  import { B as BackLink } from "../../../../chunks/BackLink.js";
14
14
  /* empty css */
15
15
  import "rrweb-player";
16
- import "html-to-image";
17
- import "fix-webm-duration";
18
16
  function _page($$payload, $$props) {
19
17
  push();
20
18
  var $$store_subs;