agentworkshop 0.7.24 → 0.7.27

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 (243) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/2jaJHWIJ.js +1 -0
  3. package/.output/public/_nuxt/B7gZokg82.js +209 -0
  4. package/.output/public/_nuxt/{Dfe8vXdG.js → B8kt898d.js} +1 -1
  5. package/.output/public/_nuxt/{BvNJUu3s.js → BFGpEo8S.js} +1 -1
  6. package/.output/public/_nuxt/{BAfp6tmu.js → BG4zduPf.js} +5 -5
  7. package/.output/public/_nuxt/{BMb80_tm.js → BGhOrgle.js} +1 -1
  8. package/.output/public/_nuxt/{Bc-_IsBP.js → BHcpzI2n.js} +1 -1
  9. package/.output/public/_nuxt/{Djir5rSD.js → BTLEvDxM.js} +1 -1
  10. package/.output/public/_nuxt/{b50gYVZl.js → BWyR3awA.js} +1 -1
  11. package/.output/public/_nuxt/Bc89zKq2.js +1 -0
  12. package/.output/public/_nuxt/{CxY6LfeN.js → BetmGSO4.js} +1 -1
  13. package/.output/public/_nuxt/{DAR70Lf52.js → BgCrZKv_2.js} +1 -1
  14. package/.output/public/_nuxt/{DUToq-k_.js → BowTbasd.js} +1 -1
  15. package/.output/public/_nuxt/{D6HDb-vN2.js → BvtknqSC2.js} +1 -1
  16. package/.output/public/_nuxt/{CLZWFhZC.js → CTfqWGdy.js} +1 -1
  17. package/.output/public/_nuxt/Chc5pfAA.js +1 -0
  18. package/.output/public/_nuxt/CobSUzQv.js +2 -0
  19. package/.output/public/_nuxt/{kZV5TQvh2.js → CucID8qg2.js} +1 -1
  20. package/.output/public/_nuxt/{CAGL7TNK.js → DHbTyoAV.js} +1 -1
  21. package/.output/public/_nuxt/{DSa2O56y.js → DfLUN8kY.js} +1 -1
  22. package/.output/public/_nuxt/{Coik560n.js → DjU9Dx5Y.js} +1 -1
  23. package/.output/public/_nuxt/DnziMlcX.js +1 -0
  24. package/.output/public/_nuxt/{Ct68Z0232.js → DosOJEmZ2.js} +1 -1
  25. package/.output/public/_nuxt/{CDLv-n51.js → Q_SJDSgx.js} +1 -1
  26. package/.output/public/_nuxt/{TownView.zu2rU5nS.css → TownView.CtskuMXS.css} +1 -1
  27. package/.output/public/_nuxt/{CuVGPuP1.js → XY2z78rj.js} +1 -1
  28. package/.output/public/_nuxt/_id_.DdbYeLqn.css +1 -0
  29. package/.output/public/_nuxt/{C1CSiSBN.js → bFnZa2yd.js} +1 -1
  30. package/.output/public/_nuxt/builds/latest.json +1 -1
  31. package/.output/public/_nuxt/builds/meta/f7a8e33d-5422-45ac-895d-27168f97e3ad.json +1 -0
  32. package/.output/public/_nuxt/daq.DGV9QS8d.css +1 -0
  33. package/.output/public/_nuxt/{entry.AZM1Culo.css → entry.BN02X8iR.css} +1 -1
  34. package/.output/public/_nuxt/{X6IraCTB.js → rkVgzg62.js} +1 -1
  35. package/.output/public/_nuxt/settings.W6qrYAui.css +1 -0
  36. package/.output/public/_nuxt/teams.BBXVkyKq.css +1 -0
  37. package/.output/public/assets/game/character/yangyang-walk.glb +0 -0
  38. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  39. package/.output/server/chunks/_/nitro.mjs +1013 -844
  40. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  41. package/.output/server/chunks/build/{TownView-DxeQe1Bl.mjs → TownView-ftIylqiD.mjs} +178 -151
  42. package/.output/server/chunks/build/{TownView-DxeQe1Bl.mjs.map → TownView-ftIylqiD.mjs.map} +1 -1
  43. package/.output/server/chunks/build/{_id_-DQDqj-cZ.mjs → _id_-3Axz2-gV.mjs} +35 -35
  44. package/.output/server/chunks/build/{_id_-DQDqj-cZ.mjs.map → _id_-3Axz2-gV.mjs.map} +1 -1
  45. package/.output/server/chunks/build/{_id_-DY6v6sqB.mjs → _id_-CahfkmEt.mjs} +5 -5
  46. package/.output/server/chunks/build/{_id_-DY6v6sqB.mjs.map → _id_-CahfkmEt.mjs.map} +1 -1
  47. package/.output/server/chunks/build/{_wsId_-D38Vx6Ky.mjs → _wsId_-BymlQhzS.mjs} +7 -7
  48. package/.output/server/chunks/build/{_wsId_-D38Vx6Ky.mjs.map → _wsId_-BymlQhzS.mjs.map} +1 -1
  49. package/.output/server/chunks/build/{agents-GnmUGZir.mjs → agents-DuMiSWKp.mjs} +4 -4
  50. package/.output/server/chunks/build/{agents-GnmUGZir.mjs.map → agents-DuMiSWKp.mjs.map} +1 -1
  51. package/.output/server/chunks/build/{channel-templates-B4z6v8Z5.mjs → channel-templates-BStqJ-of.mjs} +2 -2
  52. package/.output/server/chunks/build/{channel-templates-B4z6v8Z5.mjs.map → channel-templates-BStqJ-of.mjs.map} +1 -1
  53. package/.output/server/chunks/build/{checkbox-dzcpU_Cd.mjs → checkbox-C1gABOca.mjs} +4 -4
  54. package/.output/server/chunks/build/{checkbox-dzcpU_Cd.mjs.map → checkbox-C1gABOca.mjs.map} +1 -1
  55. package/.output/server/chunks/build/{daq-B-3xCp_2.mjs → daq-ChYCABz1.mjs} +312 -426
  56. package/.output/server/chunks/build/daq-ChYCABz1.mjs.map +1 -0
  57. package/.output/server/chunks/build/{dcw-BL2dhuz7.mjs → dcw-CcQNGggh.mjs} +3 -3
  58. package/.output/server/chunks/build/{dcw-BL2dhuz7.mjs.map → dcw-CcQNGggh.mjs.map} +1 -1
  59. package/.output/server/chunks/build/{default-CLf5m0NE.mjs → default-95-zOTPt.mjs} +2 -2
  60. package/.output/server/chunks/build/{default-CLf5m0NE.mjs.map → default-95-zOTPt.mjs.map} +1 -1
  61. package/.output/server/chunks/build/{logs-Dto_umFY.mjs → logs-D-2UyGtE.mjs} +3 -3
  62. package/.output/server/chunks/build/{logs-Dto_umFY.mjs.map → logs-D-2UyGtE.mjs.map} +1 -1
  63. package/.output/server/chunks/build/{monitor-Cp4V-H2n.mjs → monitor-mfG5jBtz.mjs} +3 -3
  64. package/.output/server/chunks/build/{monitor-Cp4V-H2n.mjs.map → monitor-mfG5jBtz.mjs.map} +1 -1
  65. package/.output/server/chunks/build/{pages-Dc2H1QFu.mjs → pages-Dfosfchr.mjs} +4 -4
  66. package/.output/server/chunks/build/{pages-Dc2H1QFu.mjs.map → pages-Dfosfchr.mjs.map} +1 -1
  67. package/.output/server/chunks/build/{permissions-BTRW2CVd.mjs → permissions-B-hhZuzm.mjs} +3 -3
  68. package/.output/server/chunks/build/{permissions-BTRW2CVd.mjs.map → permissions-B-hhZuzm.mjs.map} +1 -1
  69. package/.output/server/chunks/build/{settings-UfGyDgM7.mjs → settings-BajN9TQW.mjs} +249 -20
  70. package/.output/server/chunks/build/settings-BajN9TQW.mjs.map +1 -0
  71. package/.output/server/chunks/build/{table-Cswq-l2r.mjs → table-Bf1r2JjE.mjs} +2 -2
  72. package/.output/server/chunks/build/{table-Cswq-l2r.mjs.map → table-Bf1r2JjE.mjs.map} +1 -1
  73. package/.output/server/chunks/build/{teams-Cbg27MWW.mjs → teams-t2SkRlJP.mjs} +346 -46
  74. package/.output/server/chunks/build/teams-t2SkRlJP.mjs.map +1 -0
  75. package/.output/server/chunks/build/{tokens-Bmm6rDfj.mjs → tokens-DiCojbN8.mjs} +3 -3
  76. package/.output/server/chunks/build/{tokens-Bmm6rDfj.mjs.map → tokens-DiCojbN8.mjs.map} +1 -1
  77. package/.output/server/chunks/build/{town-Dsh0jlwZ.mjs → town-C7QM8DYK.mjs} +5 -5
  78. package/.output/server/chunks/build/{town-Dsh0jlwZ.mjs.map → town-C7QM8DYK.mjs.map} +1 -1
  79. package/.output/server/chunks/build/{useDaqStream-DkRL3tEW.mjs → useDaqStream-BeA2X8KR.mjs} +26 -11
  80. package/.output/server/chunks/build/useDaqStream-BeA2X8KR.mjs.map +1 -0
  81. package/.output/server/chunks/build/{useDcwStream-DyB2ufQI.mjs → useDcwStream-BJW_MitY.mjs} +14 -6
  82. package/.output/server/chunks/build/useDcwStream-BJW_MitY.mjs.map +1 -0
  83. package/.output/server/chunks/build/{useDeviceTwins-ZbT86L9O.mjs → useDeviceTwins-Dwz_EY_i.mjs} +2 -2
  84. package/.output/server/chunks/build/{useDeviceTwins-ZbT86L9O.mjs.map → useDeviceTwins-Dwz_EY_i.mjs.map} +1 -1
  85. package/.output/server/chunks/build/{useOpsLog-8HCYFb6n.mjs → useOpsLog-Dm8QEb1I.mjs} +2 -2
  86. package/.output/server/chunks/build/{useOpsLog-8HCYFb6n.mjs.map → useOpsLog-Dm8QEb1I.mjs.map} +1 -1
  87. package/.output/server/chunks/build/{useWorkshopApi-D2gq06N2.mjs → useWorkshopApi-B-L3MmIX.mjs} +9 -2
  88. package/.output/server/chunks/build/{useWorkshopApi-D2gq06N2.mjs.map → useWorkshopApi-B-L3MmIX.mjs.map} +1 -1
  89. package/.output/server/chunks/build/{users-B50HHrfi.mjs → users-B9SAdEtH.mjs} +3 -3
  90. package/.output/server/chunks/build/{users-B50HHrfi.mjs.map → users-B9SAdEtH.mjs.map} +1 -1
  91. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +14 -2
  92. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
  93. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
  94. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +40 -0
  95. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs.map +1 -0
  96. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +21 -9
  97. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs.map +1 -1
  98. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +33 -0
  99. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs.map +1 -0
  100. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +1 -1
  101. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +15 -1
  102. package/.output/server/chunks/routes/api/workshop/channels.post.mjs.map +1 -1
  103. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +1 -1
  104. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +1 -1
  105. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +1 -1
  106. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +1 -1
  107. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -1
  108. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +1 -1
  109. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +1 -1
  110. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +1 -1
  111. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +1 -1
  112. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +1 -1
  113. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +1 -1
  114. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +1 -1
  115. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
  116. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
  117. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
  118. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -1
  119. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
  120. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +1 -1
  121. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +1 -1
  122. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +1 -1
  123. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
  124. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
  125. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
  126. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -1
  127. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
  128. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +1 -1
  129. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
  130. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
  131. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
  132. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +1 -1
  133. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +1 -1
  134. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +1 -1
  135. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
  136. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +1 -1
  137. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
  138. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +1 -1
  139. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
  140. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
  141. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
  142. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
  143. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
  144. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +1 -1
  145. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +1 -1
  146. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
  147. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
  148. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
  149. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
  150. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
  151. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +1 -1
  152. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -1
  153. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
  154. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
  155. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
  156. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
  157. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -1
  158. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -1
  159. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +1 -1
  160. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  161. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
  162. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
  163. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
  164. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  165. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
  166. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +1 -1
  167. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
  168. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +1 -1
  169. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -1
  170. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -1
  171. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  172. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  173. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  174. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  175. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
  176. package/.output/server/chunks/routes/renderer.mjs +2 -2
  177. package/.output/server/chunks/virtual/entry.mjs +352 -433
  178. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  179. package/.output/server/package.json +1 -1
  180. package/app/components/workshop/DaqNodeRow.vue +398 -0
  181. package/app/components/workshop/town/ModelPreview3D.vue +26 -4
  182. package/app/components/workshop/town/TownScene3D.ts +60 -12
  183. package/app/components/workshop/town/TownView.vue +4 -3
  184. package/app/composables/workshop/useCharacterAssets.ts +1 -0
  185. package/app/composables/workshop/useDaqStream.ts +24 -5
  186. package/app/composables/workshop/useDcwStream.ts +13 -4
  187. package/app/composables/workshop/useWorkshopApi.ts +294 -259
  188. package/app/pages/daq/[id].vue +27 -3
  189. package/app/pages/daq/index.vue +8 -355
  190. package/app/pages/settings.vue +253 -2
  191. package/app/pages/workshop/teams.vue +212 -2
  192. package/i18n/dicts/_en.json +361 -1
  193. package/i18n/dicts/plugins.json +10 -0
  194. package/i18n/dicts/settings.json +1 -0
  195. package/i18n/dicts/teamPlugins.json +10 -0
  196. package/i18n/locales/en.ts +1860 -1900
  197. package/i18n/locales/zh-CN.ts +1788 -1829
  198. package/package.json +149 -148
  199. package/public/assets/game/character/yangyang-walk.glb +0 -0
  200. package/scripts/_dbg-cpu-profile.mjs +53 -0
  201. package/scripts/_dbg-render-perf.mjs +142 -0
  202. package/scripts/_dbg-render-regression.mjs +130 -0
  203. package/scripts/i18n-merge.mjs +152 -30
  204. package/scripts/production-closed-loop-e2e.mjs +254 -0
  205. package/scripts/team-plugins-api-smoke.mjs +149 -0
  206. package/scripts/three-system-e2e.mjs +448 -0
  207. package/server/api/plugins/[name]/[...path].ts +46 -31
  208. package/server/api/workshop/channels/[id]/plugins/index.get.ts +35 -0
  209. package/server/api/workshop/channels/[id]/plugins/index.put.ts +39 -0
  210. package/server/api/workshop/channels.post.ts +17 -0
  211. package/server/data/dcw-lines.json +7 -0
  212. package/server/data/dcw-products.json +7 -0
  213. package/server/data/dcw-recipes.json +1 -1
  214. package/server/data/dcw-rollback.json +523 -11
  215. package/server/data/dcw-writes.json +72 -0
  216. package/server/data/dcws.json +368 -368
  217. package/server/data/scene-layouts.json +66 -0
  218. package/server/plugins/aw-plugins.ts +35 -27
  219. package/server/plugins-builtin/diag-bridge/index.mjs +556 -0
  220. package/server/plugins-builtin/rag-bridge/index.mjs +364 -0
  221. package/server/services/workshop/agents/host-tool-bridge.ts +659 -642
  222. package/server/services/workshop/agents/omp-agent.ts +1178 -1178
  223. package/server/services/workshop/agents/plugin-tools.ts +10 -1
  224. package/server/services/workshop/db/channel-plugins.repo.ts +65 -0
  225. package/server/services/workshop/plugins/host.mjs +52 -4
  226. package/server/services/workshop/runtime/manager.ts +2976 -2968
  227. package/shared/config/schema.json +4 -0
  228. package/.output/public/_nuxt/BUcmySDa2.js +0 -209
  229. package/.output/public/_nuxt/CYzpZzB_.js +0 -1
  230. package/.output/public/_nuxt/CjXIpPMR.js +0 -1
  231. package/.output/public/_nuxt/DKHcFE1i.js +0 -1
  232. package/.output/public/_nuxt/DjtE7AYt.js +0 -1
  233. package/.output/public/_nuxt/JOwsShod.js +0 -2
  234. package/.output/public/_nuxt/_id_.C-YXjn8Q.css +0 -1
  235. package/.output/public/_nuxt/builds/meta/024de5f7-6a10-4f53-82ab-bc65f3ec9e35.json +0 -1
  236. package/.output/public/_nuxt/daq.3OKj58HH.css +0 -1
  237. package/.output/public/_nuxt/settings.BqMF2nfj.css +0 -1
  238. package/.output/public/_nuxt/teams.DN0pAGGu.css +0 -1
  239. package/.output/server/chunks/build/daq-B-3xCp_2.mjs.map +0 -1
  240. package/.output/server/chunks/build/settings-UfGyDgM7.mjs.map +0 -1
  241. package/.output/server/chunks/build/teams-Cbg27MWW.mjs.map +0 -1
  242. package/.output/server/chunks/build/useDaqStream-DkRL3tEW.mjs.map +0 -1
  243. package/.output/server/chunks/build/useDcwStream-DyB2ufQI.mjs.map +0 -1
@@ -1 +1 @@
1
- import{K as e}from"./rqZ-1SoP.js";import{C as t,H as n,Ht as r,St as i,Wt as a,a as o,b as s,et as c,f as l,g as u,h as d,lt as f,m as p,mt as m,nt as h,p as g,t as _,x as v}from"./BSCpFtzG.js";import{d as ee}from"./-6OnbLFb.js";import{n as y}from"./B5S_UyaC.js";import{n as b}from"./BeIfu4N3.js";import{t as te}from"./VLI2Zy4t.js";import{t as ne}from"./BMb80_tm.js";import{r as x}from"./D-Ca4BGY.js";import{t as re}from"./Cn3J3NXR.js";import{t as S}from"./BCJFMBQ6.js";import{t as C}from"./DoAlYsiF.js";import{t as w}from"./Cb3SnTM8.js";import{t as T}from"./6PZPfFcO.js";import{t as ie}from"./ORt9oDIy.js";import{t as ae}from"./C9f8QMp12.js";import{t as E}from"./BcrN7QEl2.js";import{t as D}from"./G0qIw7Gq2.js";import{t as O}from"./CNs_Ozdc2.js";var oe={class:`page`},se={key:0,class:`auth-gate`},ce={class:`sub`},le={class:`aw-page-head`},ue={class:`sub`},de={class:`font-medium`},fe={key:1,class:`tok-cell`},pe=[`title`],me={class:`once-banner`},he={class:`raw-row`},ge={class:`raw`},_e=[`title`],ve=[`title`],ye={class:`once-meta`},k=_(t({__name:`tokens`,setup(t){let{t:_}=b();O({layout:`default`});let k=E(),A=m([]),j=m(!1),M=m(!1),N=m(``),P=m(!1),F=m(``),I=m(``),L=m(!1),R=m(``),z=m(``),B=m(!1),V=async()=>{if(k.isLoggedIn){j.value=!0;try{A.value=await k.listTokens()}catch(e){x.error(e instanceof Error?e.message:_(`tokens.k19jvk54013`))}finally{j.value=!1}}};c(()=>k.isLoggedIn,e=>{e?V():A.value=[]},{immediate:!0});let H=async()=>{P.value=!0;try{let e=await k.createToken(N.value);F.value=e.token,I.value=N.value,M.value=!1,N.value=``,await V()}catch(e){x.error(D(e))}finally{P.value=!1}},U=async()=>{if(!z.value.trim()){x.warning(_(`tokens.k169z26g014`));return}B.value=!0;try{await k.renameToken(R.value,z.value),L.value=!1,await V(),x.success(_(`tokens.k3n9aij015`))}catch(e){x.error(D(e))}finally{B.value=!1}},be=e=>{let t=e.id;if(!t)return;let n=t===k.user?.tokenId;(async()=>{try{if(await k.revokeToken(t),x.success(_(`tokens.k3n64kh016`)),n)return;await V()}catch(e){x.error(D(e))}})()},W=m(!1),G=m(!1),xe=l(()=>{let e=F.value;return e?`${e.slice(0,6)}${`•`.repeat(Math.max(12,e.length-10))}${e.slice(-4)}`:``}),Se=()=>{W.value=!W.value},K=async e=>{try{return await navigator.clipboard.writeText(e),!0}catch{try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}},Ce=async()=>{await K(F.value)?(G.value=!0,setTimeout(()=>{G.value=!1},1600)):x.error(_(`tokens.kjtcn2h017`))},q=()=>{F.value=``,W.value=!1,G.value=!1},J=m({}),Y=m(``),X=m(``),Z=e=>e in J.value,we=e=>Z(e.id)?J.value[e.id]:e.preview??`ut-${`•`.repeat(14)}`,Q=async e=>{if(Z(e.id)){Reflect.deleteProperty(J.value,e.id);return}if(!e.hasPlain){x.warning(_(`tokens.kkpgzo8018`));return}Y.value=e.id;try{let t=await k.revealToken(e.id);t&&(J.value[e.id]=t)}catch(e){x.error(e instanceof Error?e.message:_(`tokens.k1gj9ls019`))}finally{Y.value=``}},Te=async e=>{let t=J.value[e.id]??null;if(!t){if(!e.hasPlain){x.warning(_(`tokens.kr5ovor020`));return}Y.value=e.id;try{t=await k.revealToken(e.id)}catch(e){x.error(e instanceof Error?e.message:_(`tokens.kubtby5021`));return}finally{Y.value=``}}t&&await K(t)?(X.value=e.id,setTimeout(()=>{X.value=``},1600)):x.error(_(`tokens.kgkfcr0022`))},$=e=>e?e.replace(`T`,` `).slice(0,19):`-`,Ee=e=>{R.value=e.id??``,z.value=e.label??``,L.value=!0},De=[{title:_(`tokens.k41416002`),key:`label`,dataIndex:`label`},{title:`Token`,key:`token`,width:360},{title:_(`tokens.k1bg95gk023`),key:`createdAt`,dataIndex:`createdAt`,width:170},{title:_(`tokens.k1euotul024`),key:`lastUsedAt`,dataIndex:`lastUsedAt`,width:200},{title:_(`tokens.k40aa6025`),key:`action`,width:170}];return y({title:()=>_(`titles.tokens`)}),(t,c)=>{let l=te,m=T,_=S,y=ie,b=w,x=ne,E=ae,D=re,O=C;return n(),u(`div`,oe,[i(k).isLoggedIn?(n(),u(o,{key:1},[g(`div`,le,[g(`div`,null,[c[6]||=g(`p`,{class:`aw-kicker`},` agentworkshop / api tokens `,-1),c[7]||=g(`h1`,null,`API Token`,-1),g(`p`,ue,a(i(k).user?.name)+` · `+a(t.$t(`tokens.k1upppaw026`)),1)]),v(y,{class:`head-actions`},{default:h(()=>[i(k).user?.tokenId?(n(),p(_,{key:0,color:`green`},{default:h(()=>[s(a(t.$t(`tokens.khcxmsc006`)),1)]),_:1})):d(``,!0),v(l,{type:`primary`,onClick:c[1]||=e=>M.value=!0},{default:h(()=>[c[8]||=g(`span`,{class:`i-tabler-plus`},null,-1),s(` `+a(t.$t(`chips.issue`)),1)]),_:1})]),_:1})]),v(m,{bordered:!1,class:`table-card`},{default:h(()=>[v(E,{spinning:i(j)},{default:h(()=>[v(x,{columns:De,"data-source":i(A),pagination:!1,"row-key":`id`},{bodyCell:h(({column:e,record:f})=>[e.key===`label`?(n(),p(y,{key:0},{default:h(()=>[c[9]||=g(`span`,{class:`i-tabler-key text-primary`},null,-1),g(`span`,de,a(f.label||t.$t(`tokens.kj3mklm028`)),1),f.id===i(k).user?.tokenId?(n(),p(_,{key:0,color:`green`},{default:h(()=>[s(a(t.$t(`tokens.k1defr98007`)),1)]),_:1})):d(``,!0)]),_:2},1024)):e.key===`token`?(n(),u(`div`,fe,[g(`code`,{class:r([`tok-val`,{revealed:Z(f.id)}]),title:Z(f.id)?`已显示明文,点击眼睛遮回`:`掩码预览`},a(we(f)),11,pe),f.hasPlain?(n(),p(l,{key:0,type:`text`,size:`small`,class:`tok-op`,loading:i(Y)===f.id,title:Z(f.id)?`遮回`:`查看明文`,onClick:e=>Q(f)},{default:h(()=>[g(`span`,{class:r(Z(f.id)?`i-tabler-eye-off`:`i-tabler-eye`)},null,2)]),_:2},1032,[`loading`,`title`,`onClick`])):d(``,!0),f.hasPlain?(n(),p(l,{key:1,type:`text`,size:`small`,class:r([`tok-op`,{ok:i(X)===f.id}]),title:i(X)===f.id?`已复制`:`复制明文`,onClick:e=>Te(f)},{default:h(()=>[g(`span`,{class:r(i(X)===f.id?`i-tabler-check`:`i-tabler-copy`)},null,2)]),_:2},1032,[`class`,`title`,`onClick`])):d(``,!0)])):e.key===`createdAt`?(n(),u(o,{key:2},[s(a($(f.createdAt)),1)],64)):e.key===`lastUsedAt`?(n(),u(o,{key:3},[s(a($(f.lastUsedAt)),1)],64)):e.key===`action`?(n(),p(y,{key:4},{default:h(()=>[v(l,{type:`link`,size:`small`,onClick:e=>Ee(f)},{default:h(()=>[c[10]||=g(`span`,{class:`i-tabler-edit`},null,-1),s(` `+a(t.$t(`tokens.k3vrpcs009`)),1)]),_:1},8,[`onClick`]),v(b,{title:f.id===i(k).user?.tokenId?`吊销当前会话 token 将退出登录`:`吊销后立即失效`,"ok-text":`吊销`,"cancel-text":`取消`,onConfirm:e=>be(f)},{default:h(()=>[v(l,{type:`text`,size:`small`,class:`tok-revoke`},{default:h(()=>[c[11]||=g(`span`,{class:`i-tabler-trash`},null,-1),s(` `+a(t.$t(`tokens.k3xmrz010`)),1)]),_:1})]),_:1},8,[`title`,`onConfirm`])]),_:2},1024)):d(``,!0)]),_:1},8,[`data-source`])]),_:1},8,[`spinning`])]),_:1}),v(O,{open:i(M),"onUpdate:open":c[3]||=e=>f(M)?M.value=e:null,title:t.$t(`chips.issueTitle`),"confirm-loading":i(P),"ok-text":`创建`,"cancel-text":`取消`,onOk:H},{default:h(()=>[v(D,{value:i(N),"onUpdate:value":c[2]||=e=>f(N)?N.value=e:null,placeholder:t.$t(`tokens.k1hlqknl001`),onKeydown:e(H,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`open`,`title`,`confirm-loading`]),v(O,{open:i(F)!==``,title:`Token 已创建`,footer:null,"mask-closable":!1,onCancel:q,onAfterClose:q},{default:h(()=>[g(`div`,me,[c[12]||=g(`span`,{class:`i-tabler-circle-check`},null,-1),g(`span`,null,a(t.$t(`tokens.k12149oy011`)),1)]),g(`div`,he,[g(`code`,ge,a(i(W)?i(F):i(xe)),1),g(`button`,{class:`raw-op`,title:i(W)?`隐藏明文`:`显示明文`,onClick:Se},[g(`span`,{class:r(i(W)?`i-tabler-eye-off`:`i-tabler-eye`)},null,2)],8,_e),g(`button`,{class:r([`raw-op`,{ok:i(G)}]),title:i(G)?`已复制`:`复制`,onClick:Ce},[g(`span`,{class:r(i(G)?`i-tabler-check`:`i-tabler-copy`)},null,2)],10,ve)]),g(`div`,ye,[g(`span`,null,a(t.$t(`tokens.k3p0p44027`))+a(i(I)||t.$t(`tokens.kj3mklm028`)),1),c[13]||=g(`span`,null,`用法:Authorization: Bearer <token>`,-1)]),v(l,{type:`primary`,block:``,onClick:q},{default:h(()=>[s(a(t.$t(`tokens.k1s5f5zd012`)),1)]),_:1})]),_:1},8,[`open`]),v(O,{open:i(L),"onUpdate:open":c[5]||=e=>f(L)?L.value=e:null,title:`重命名 Token`,"confirm-loading":i(B),"ok-text":`保存`,"cancel-text":`取消`,onOk:U},{default:h(()=>[v(D,{value:i(z),"onUpdate:value":c[4]||=e=>f(z)?z.value=e:null,placeholder:t.$t(`tokens.k41416002`),onKeydown:e(U,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`open`,`confirm-loading`])],64)):(n(),u(`div`,se,[v(m,{class:`auth-card`},{default:h(()=>[g(`h2`,null,a(t.$t(`tokens.k1k6z0r8003`)),1),g(`p`,ce,a(t.$t(`tokens.k1gjnree004`)),1),v(l,{type:`primary`,block:``,onClick:c[0]||=e=>(`navigateTo`in t?t.navigateTo:i(ee))(`/workshop`)},{default:h(()=>[s(a(t.$t(`tokens.k1bhhheq005`)),1)]),_:1})]),_:1})]))])}}}),[[`__scopeId`,`data-v-759f0cd9`]]);export{k as default};
1
+ import{K as e}from"./rqZ-1SoP.js";import{C as t,H as n,Ht as r,St as i,Wt as a,a as o,b as s,et as c,f as l,g as u,h as d,lt as f,m as p,mt as m,nt as h,p as g,t as _,x as v}from"./BSCpFtzG.js";import{d as ee}from"./-6OnbLFb.js";import{n as y}from"./B5S_UyaC.js";import{n as b}from"./BeIfu4N3.js";import{t as te}from"./VLI2Zy4t.js";import{t as ne}from"./BGhOrgle.js";import{r as x}from"./D-Ca4BGY.js";import{t as re}from"./Cn3J3NXR.js";import{t as S}from"./BCJFMBQ6.js";import{t as C}from"./DoAlYsiF.js";import{t as w}from"./Cb3SnTM8.js";import{t as T}from"./6PZPfFcO.js";import{t as ie}from"./ORt9oDIy.js";import{t as ae}from"./C9f8QMp12.js";import{t as E}from"./BcrN7QEl2.js";import{t as D}from"./G0qIw7Gq2.js";import{t as O}from"./CNs_Ozdc2.js";var oe={class:`page`},se={key:0,class:`auth-gate`},ce={class:`sub`},le={class:`aw-page-head`},ue={class:`sub`},de={class:`font-medium`},fe={key:1,class:`tok-cell`},pe=[`title`],me={class:`once-banner`},he={class:`raw-row`},ge={class:`raw`},_e=[`title`],ve=[`title`],ye={class:`once-meta`},k=_(t({__name:`tokens`,setup(t){let{t:_}=b();O({layout:`default`});let k=E(),A=m([]),j=m(!1),M=m(!1),N=m(``),P=m(!1),F=m(``),I=m(``),L=m(!1),R=m(``),z=m(``),B=m(!1),V=async()=>{if(k.isLoggedIn){j.value=!0;try{A.value=await k.listTokens()}catch(e){x.error(e instanceof Error?e.message:_(`tokens.k19jvk54013`))}finally{j.value=!1}}};c(()=>k.isLoggedIn,e=>{e?V():A.value=[]},{immediate:!0});let H=async()=>{P.value=!0;try{let e=await k.createToken(N.value);F.value=e.token,I.value=N.value,M.value=!1,N.value=``,await V()}catch(e){x.error(D(e))}finally{P.value=!1}},U=async()=>{if(!z.value.trim()){x.warning(_(`tokens.k169z26g014`));return}B.value=!0;try{await k.renameToken(R.value,z.value),L.value=!1,await V(),x.success(_(`tokens.k3n9aij015`))}catch(e){x.error(D(e))}finally{B.value=!1}},be=e=>{let t=e.id;if(!t)return;let n=t===k.user?.tokenId;(async()=>{try{if(await k.revokeToken(t),x.success(_(`tokens.k3n64kh016`)),n)return;await V()}catch(e){x.error(D(e))}})()},W=m(!1),G=m(!1),xe=l(()=>{let e=F.value;return e?`${e.slice(0,6)}${`•`.repeat(Math.max(12,e.length-10))}${e.slice(-4)}`:``}),Se=()=>{W.value=!W.value},K=async e=>{try{return await navigator.clipboard.writeText(e),!0}catch{try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}},Ce=async()=>{await K(F.value)?(G.value=!0,setTimeout(()=>{G.value=!1},1600)):x.error(_(`tokens.kjtcn2h017`))},q=()=>{F.value=``,W.value=!1,G.value=!1},J=m({}),Y=m(``),X=m(``),Z=e=>e in J.value,we=e=>Z(e.id)?J.value[e.id]:e.preview??`ut-${`•`.repeat(14)}`,Q=async e=>{if(Z(e.id)){Reflect.deleteProperty(J.value,e.id);return}if(!e.hasPlain){x.warning(_(`tokens.kkpgzo8018`));return}Y.value=e.id;try{let t=await k.revealToken(e.id);t&&(J.value[e.id]=t)}catch(e){x.error(e instanceof Error?e.message:_(`tokens.k1gj9ls019`))}finally{Y.value=``}},Te=async e=>{let t=J.value[e.id]??null;if(!t){if(!e.hasPlain){x.warning(_(`tokens.kr5ovor020`));return}Y.value=e.id;try{t=await k.revealToken(e.id)}catch(e){x.error(e instanceof Error?e.message:_(`tokens.kubtby5021`));return}finally{Y.value=``}}t&&await K(t)?(X.value=e.id,setTimeout(()=>{X.value=``},1600)):x.error(_(`tokens.kgkfcr0022`))},$=e=>e?e.replace(`T`,` `).slice(0,19):`-`,Ee=e=>{R.value=e.id??``,z.value=e.label??``,L.value=!0},De=[{title:_(`tokens.k41416002`),key:`label`,dataIndex:`label`},{title:`Token`,key:`token`,width:360},{title:_(`tokens.k1bg95gk023`),key:`createdAt`,dataIndex:`createdAt`,width:170},{title:_(`tokens.k1euotul024`),key:`lastUsedAt`,dataIndex:`lastUsedAt`,width:200},{title:_(`tokens.k40aa6025`),key:`action`,width:170}];return y({title:()=>_(`titles.tokens`)}),(t,c)=>{let l=te,m=T,_=S,y=ie,b=w,x=ne,E=ae,D=re,O=C;return n(),u(`div`,oe,[i(k).isLoggedIn?(n(),u(o,{key:1},[g(`div`,le,[g(`div`,null,[c[6]||=g(`p`,{class:`aw-kicker`},` agentworkshop / api tokens `,-1),c[7]||=g(`h1`,null,`API Token`,-1),g(`p`,ue,a(i(k).user?.name)+` · `+a(t.$t(`tokens.k1upppaw026`)),1)]),v(y,{class:`head-actions`},{default:h(()=>[i(k).user?.tokenId?(n(),p(_,{key:0,color:`green`},{default:h(()=>[s(a(t.$t(`tokens.khcxmsc006`)),1)]),_:1})):d(``,!0),v(l,{type:`primary`,onClick:c[1]||=e=>M.value=!0},{default:h(()=>[c[8]||=g(`span`,{class:`i-tabler-plus`},null,-1),s(` `+a(t.$t(`chips.issue`)),1)]),_:1})]),_:1})]),v(m,{bordered:!1,class:`table-card`},{default:h(()=>[v(E,{spinning:i(j)},{default:h(()=>[v(x,{columns:De,"data-source":i(A),pagination:!1,"row-key":`id`},{bodyCell:h(({column:e,record:f})=>[e.key===`label`?(n(),p(y,{key:0},{default:h(()=>[c[9]||=g(`span`,{class:`i-tabler-key text-primary`},null,-1),g(`span`,de,a(f.label||t.$t(`tokens.kj3mklm028`)),1),f.id===i(k).user?.tokenId?(n(),p(_,{key:0,color:`green`},{default:h(()=>[s(a(t.$t(`tokens.k1defr98007`)),1)]),_:1})):d(``,!0)]),_:2},1024)):e.key===`token`?(n(),u(`div`,fe,[g(`code`,{class:r([`tok-val`,{revealed:Z(f.id)}]),title:Z(f.id)?`已显示明文,点击眼睛遮回`:`掩码预览`},a(we(f)),11,pe),f.hasPlain?(n(),p(l,{key:0,type:`text`,size:`small`,class:`tok-op`,loading:i(Y)===f.id,title:Z(f.id)?`遮回`:`查看明文`,onClick:e=>Q(f)},{default:h(()=>[g(`span`,{class:r(Z(f.id)?`i-tabler-eye-off`:`i-tabler-eye`)},null,2)]),_:2},1032,[`loading`,`title`,`onClick`])):d(``,!0),f.hasPlain?(n(),p(l,{key:1,type:`text`,size:`small`,class:r([`tok-op`,{ok:i(X)===f.id}]),title:i(X)===f.id?`已复制`:`复制明文`,onClick:e=>Te(f)},{default:h(()=>[g(`span`,{class:r(i(X)===f.id?`i-tabler-check`:`i-tabler-copy`)},null,2)]),_:2},1032,[`class`,`title`,`onClick`])):d(``,!0)])):e.key===`createdAt`?(n(),u(o,{key:2},[s(a($(f.createdAt)),1)],64)):e.key===`lastUsedAt`?(n(),u(o,{key:3},[s(a($(f.lastUsedAt)),1)],64)):e.key===`action`?(n(),p(y,{key:4},{default:h(()=>[v(l,{type:`link`,size:`small`,onClick:e=>Ee(f)},{default:h(()=>[c[10]||=g(`span`,{class:`i-tabler-edit`},null,-1),s(` `+a(t.$t(`tokens.k3vrpcs009`)),1)]),_:1},8,[`onClick`]),v(b,{title:f.id===i(k).user?.tokenId?`吊销当前会话 token 将退出登录`:`吊销后立即失效`,"ok-text":`吊销`,"cancel-text":`取消`,onConfirm:e=>be(f)},{default:h(()=>[v(l,{type:`text`,size:`small`,class:`tok-revoke`},{default:h(()=>[c[11]||=g(`span`,{class:`i-tabler-trash`},null,-1),s(` `+a(t.$t(`tokens.k3xmrz010`)),1)]),_:1})]),_:1},8,[`title`,`onConfirm`])]),_:2},1024)):d(``,!0)]),_:1},8,[`data-source`])]),_:1},8,[`spinning`])]),_:1}),v(O,{open:i(M),"onUpdate:open":c[3]||=e=>f(M)?M.value=e:null,title:t.$t(`chips.issueTitle`),"confirm-loading":i(P),"ok-text":`创建`,"cancel-text":`取消`,onOk:H},{default:h(()=>[v(D,{value:i(N),"onUpdate:value":c[2]||=e=>f(N)?N.value=e:null,placeholder:t.$t(`tokens.k1hlqknl001`),onKeydown:e(H,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`open`,`title`,`confirm-loading`]),v(O,{open:i(F)!==``,title:`Token 已创建`,footer:null,"mask-closable":!1,onCancel:q,onAfterClose:q},{default:h(()=>[g(`div`,me,[c[12]||=g(`span`,{class:`i-tabler-circle-check`},null,-1),g(`span`,null,a(t.$t(`tokens.k12149oy011`)),1)]),g(`div`,he,[g(`code`,ge,a(i(W)?i(F):i(xe)),1),g(`button`,{class:`raw-op`,title:i(W)?`隐藏明文`:`显示明文`,onClick:Se},[g(`span`,{class:r(i(W)?`i-tabler-eye-off`:`i-tabler-eye`)},null,2)],8,_e),g(`button`,{class:r([`raw-op`,{ok:i(G)}]),title:i(G)?`已复制`:`复制`,onClick:Ce},[g(`span`,{class:r(i(G)?`i-tabler-check`:`i-tabler-copy`)},null,2)],10,ve)]),g(`div`,ye,[g(`span`,null,a(t.$t(`tokens.k3p0p44027`))+a(i(I)||t.$t(`tokens.kj3mklm028`)),1),c[13]||=g(`span`,null,`用法:Authorization: Bearer <token>`,-1)]),v(l,{type:`primary`,block:``,onClick:q},{default:h(()=>[s(a(t.$t(`tokens.k1s5f5zd012`)),1)]),_:1})]),_:1},8,[`open`]),v(O,{open:i(L),"onUpdate:open":c[5]||=e=>f(L)?L.value=e:null,title:`重命名 Token`,"confirm-loading":i(B),"ok-text":`保存`,"cancel-text":`取消`,onOk:U},{default:h(()=>[v(D,{value:i(z),"onUpdate:value":c[4]||=e=>f(z)?z.value=e:null,placeholder:t.$t(`tokens.k41416002`),onKeydown:e(U,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`open`,`confirm-loading`])],64)):(n(),u(`div`,se,[v(m,{class:`auth-card`},{default:h(()=>[g(`h2`,null,a(t.$t(`tokens.k1k6z0r8003`)),1),g(`p`,ce,a(t.$t(`tokens.k1gjnree004`)),1),v(l,{type:`primary`,block:``,onClick:c[0]||=e=>(`navigateTo`in t?t.navigateTo:i(ee))(`/workshop`)},{default:h(()=>[s(a(t.$t(`tokens.k1bhhheq005`)),1)]),_:1})]),_:1})]))])}}}),[[`__scopeId`,`data-v-759f0cd9`]]);export{k as default};
@@ -1 +1 @@
1
- import{C as e,H as t,St as n,Wt as r,b as i,et as a,f as o,g as s,h as c,lt as l,m as u,mt as d,nt as f,p,t as m,x as h}from"./BSCpFtzG.js";import{s as g}from"./C3tCneTM.js";import{n as _}from"./B5S_UyaC.js";import{n as v}from"./BeIfu4N3.js";import{t as y}from"./VLI2Zy4t.js";import{t as b}from"./BMb80_tm.js";import{t as x}from"./BN_PdN3J.js";import{r as S}from"./D-Ca4BGY.js";import{i as C}from"./Cn3J3NXR.js";import{t as w}from"./BCJFMBQ6.js";import{t as T}from"./Cb3SnTM8.js";import{t as E}from"./6PZPfFcO.js";import{t as D}from"./ORt9oDIy.js";import{t as O}from"./BcrN7QEl2.js";var k={class:`page-wrap`},A={class:`aw-page-head`},j={class:`sub`},M={class:`gate-title`},N={class:`gate-hint`},P=m(e({__name:`users`,setup(e){let{t:m}=v(),P=O(),F=d(!1),I=d([]),L=d(``),R=o(()=>P.authHeaders()),z=async()=>{if(P.isAdmin){F.value=!0;try{let e=await g(`/api/users`,{headers:R.value,query:{pageSize:100,keyword:L.value||void 0}});I.value=e.data?.items??[]}catch(e){S.error(e instanceof Error?e.message:m(`users.k1br33vc006`))}finally{F.value=!1}}};a(()=>P.isLoggedIn,e=>{e&&z()},{immediate:!0});let B={admin:`volcano`,editor:`blue`,user:`default`},V=o(()=>[{title:m(`users.name`),dataIndex:`name`,key:`name`},{title:m(`users.email`),dataIndex:`email`,key:`email`},{title:m(`users.role`),dataIndex:`role`,key:`role`,width:110},{title:m(`common.status`),dataIndex:`status`,key:`status`,width:90},{title:m(`users.created`),dataIndex:`createdAt`,key:`createdAt`,width:150},{title:m(`common.actions`),key:`action`,width:220}]);function H(e){return m(`users.role${e.charAt(0).toUpperCase()}${e.slice(1)}`)}let U=async(e,t)=>{try{await g(`/api/users/${e.id}`,{method:`PUT`,headers:R.value,body:{role:t}}),S.success(m(`users.krkb23h011`,{p0:e.name,p1:t})),z()}catch(e){S.error(e instanceof Error?e.message:m(`users.k1enhqn3007`))}},W=async e=>{let t=e.status===`active`?`disabled`:`active`;try{await g(`/api/users/${e.id}`,{method:`PUT`,headers:R.value,body:{status:t}}),S.success(m(`users.k1u7u12g012`,{p0:e.name,p1:m(t===`active`?`users.k3xhfg009`:`users.k3wsi1010`)})),z()}catch(e){S.error(e instanceof Error?e.message:m(`users.k1enhqn3007`))}},G=async e=>{try{await g(`/api/users/${e.id}`,{method:`DELETE`,headers:R.value}),S.success(m(`users.knh5f2r013`,{p0:e.name})),z()}catch(e){S.error(e instanceof Error?e.message:m(`users.k1bphrb3008`))}},K=e=>e.id===P.user?.id;return _({title:()=>m(`titles.users`)}),(e,a)=>{let o=w,d=C,g=E,_=x,v=y,S=T,O=D,R=b;return t(),s(`div`,k,[p(`div`,A,[p(`div`,null,[a[2]||=p(`p`,{class:`aw-kicker`},` agentworkshop / identity `,-1),p(`h1`,null,[i(r(n(m)(`users.title`))+` `,1),h(o,{color:`volcano`,class:`admin-tag`},{default:f(()=>[...a[1]||=[p(`span`,{class:`i-tabler-shield-check`},null,-1),i(` admin `,-1)]]),_:1})]),p(`p`,j,r(e.$t(`users.k1flpho5002`)),1)]),h(d,{value:n(L),"onUpdate:value":a[0]||=e=>l(L)?L.value=e:null,placeholder:n(m)(`users.search`),style:{width:`240px`},onSearch:z},null,8,[`value`,`placeholder`])]),n(P).isAdmin?(t(),u(g,{key:1,bordered:!1,class:`table-card`},{default:f(()=>[h(R,{"data-source":n(I),columns:n(V),loading:n(F),"row-key":`id`,size:`small`,pagination:!1},{bodyCell:f(({column:n,record:a})=>[n.key===`role`?(t(),u(o,{key:0,color:B[a.role]},{default:f(()=>[i(r(H(a.role)),1)]),_:2},1032,[`color`])):n.key===`status`?(t(),u(o,{key:1,color:a.status===`active`?`green`:`default`},{default:f(()=>[i(r(a.status===`active`?e.$t(`users.k3xhfg009`):e.$t(`users.k3wsi1010`)),1)]),_:2},1032,[`color`])):n.key===`action`?(t(),u(O,{key:2,size:`small`},{default:f(()=>[h(_,{value:a.role,size:`small`,style:{width:`92px`},disabled:K(a),options:[{value:`user`,label:`user`},{value:`editor`,label:`editor`},{value:`admin`,label:`admin`}],onChange:e=>U(a,e)},null,8,[`value`,`disabled`,`onChange`]),h(v,{size:`small`,type:`text`,disabled:K(a),onClick:e=>W(a)},{default:f(()=>[i(r(a.status===`active`?e.$t(`users.k3wsi1010`):e.$t(`users.k3xhfg009`)),1)]),_:2},1032,[`disabled`,`onClick`]),h(S,{title:e.$t(`users.k1jk2os9001`),disabled:K(a),onConfirm:e=>G(a)},{default:f(()=>[h(v,{size:`small`,type:`text`,danger:``,disabled:K(a)},{default:f(()=>[i(r(e.$t(`users.k3xakp005`)),1)]),_:1},8,[`disabled`])]),_:2},1032,[`title`,`disabled`,`onConfirm`])]),_:2},1024)):c(``,!0)]),_:1},8,[`data-source`,`columns`,`loading`])]),_:1})):(t(),u(g,{key:0,bordered:!1,class:`gate-card`},{default:f(()=>[a[3]||=p(`span`,{class:`i-tabler-lock gate-icon`},null,-1),p(`p`,M,r(e.$t(`users.kpdo6rc003`)),1),p(`p`,N,r(e.$t(`users.k1mue9bl004`)),1)]),_:1}))])}}}),[[`__scopeId`,`data-v-4f234dd7`]]);export{P as default};
1
+ import{C as e,H as t,St as n,Wt as r,b as i,et as a,f as o,g as s,h as c,lt as l,m as u,mt as d,nt as f,p,t as m,x as h}from"./BSCpFtzG.js";import{s as g}from"./C3tCneTM.js";import{n as _}from"./B5S_UyaC.js";import{n as v}from"./BeIfu4N3.js";import{t as y}from"./VLI2Zy4t.js";import{t as b}from"./BGhOrgle.js";import{t as x}from"./BN_PdN3J.js";import{r as S}from"./D-Ca4BGY.js";import{i as C}from"./Cn3J3NXR.js";import{t as w}from"./BCJFMBQ6.js";import{t as T}from"./Cb3SnTM8.js";import{t as E}from"./6PZPfFcO.js";import{t as D}from"./ORt9oDIy.js";import{t as O}from"./BcrN7QEl2.js";var k={class:`page-wrap`},A={class:`aw-page-head`},j={class:`sub`},M={class:`gate-title`},N={class:`gate-hint`},P=m(e({__name:`users`,setup(e){let{t:m}=v(),P=O(),F=d(!1),I=d([]),L=d(``),R=o(()=>P.authHeaders()),z=async()=>{if(P.isAdmin){F.value=!0;try{let e=await g(`/api/users`,{headers:R.value,query:{pageSize:100,keyword:L.value||void 0}});I.value=e.data?.items??[]}catch(e){S.error(e instanceof Error?e.message:m(`users.k1br33vc006`))}finally{F.value=!1}}};a(()=>P.isLoggedIn,e=>{e&&z()},{immediate:!0});let B={admin:`volcano`,editor:`blue`,user:`default`},V=o(()=>[{title:m(`users.name`),dataIndex:`name`,key:`name`},{title:m(`users.email`),dataIndex:`email`,key:`email`},{title:m(`users.role`),dataIndex:`role`,key:`role`,width:110},{title:m(`common.status`),dataIndex:`status`,key:`status`,width:90},{title:m(`users.created`),dataIndex:`createdAt`,key:`createdAt`,width:150},{title:m(`common.actions`),key:`action`,width:220}]);function H(e){return m(`users.role${e.charAt(0).toUpperCase()}${e.slice(1)}`)}let U=async(e,t)=>{try{await g(`/api/users/${e.id}`,{method:`PUT`,headers:R.value,body:{role:t}}),S.success(m(`users.krkb23h011`,{p0:e.name,p1:t})),z()}catch(e){S.error(e instanceof Error?e.message:m(`users.k1enhqn3007`))}},W=async e=>{let t=e.status===`active`?`disabled`:`active`;try{await g(`/api/users/${e.id}`,{method:`PUT`,headers:R.value,body:{status:t}}),S.success(m(`users.k1u7u12g012`,{p0:e.name,p1:m(t===`active`?`users.k3xhfg009`:`users.k3wsi1010`)})),z()}catch(e){S.error(e instanceof Error?e.message:m(`users.k1enhqn3007`))}},G=async e=>{try{await g(`/api/users/${e.id}`,{method:`DELETE`,headers:R.value}),S.success(m(`users.knh5f2r013`,{p0:e.name})),z()}catch(e){S.error(e instanceof Error?e.message:m(`users.k1bphrb3008`))}},K=e=>e.id===P.user?.id;return _({title:()=>m(`titles.users`)}),(e,a)=>{let o=w,d=C,g=E,_=x,v=y,S=T,O=D,R=b;return t(),s(`div`,k,[p(`div`,A,[p(`div`,null,[a[2]||=p(`p`,{class:`aw-kicker`},` agentworkshop / identity `,-1),p(`h1`,null,[i(r(n(m)(`users.title`))+` `,1),h(o,{color:`volcano`,class:`admin-tag`},{default:f(()=>[...a[1]||=[p(`span`,{class:`i-tabler-shield-check`},null,-1),i(` admin `,-1)]]),_:1})]),p(`p`,j,r(e.$t(`users.k1flpho5002`)),1)]),h(d,{value:n(L),"onUpdate:value":a[0]||=e=>l(L)?L.value=e:null,placeholder:n(m)(`users.search`),style:{width:`240px`},onSearch:z},null,8,[`value`,`placeholder`])]),n(P).isAdmin?(t(),u(g,{key:1,bordered:!1,class:`table-card`},{default:f(()=>[h(R,{"data-source":n(I),columns:n(V),loading:n(F),"row-key":`id`,size:`small`,pagination:!1},{bodyCell:f(({column:n,record:a})=>[n.key===`role`?(t(),u(o,{key:0,color:B[a.role]},{default:f(()=>[i(r(H(a.role)),1)]),_:2},1032,[`color`])):n.key===`status`?(t(),u(o,{key:1,color:a.status===`active`?`green`:`default`},{default:f(()=>[i(r(a.status===`active`?e.$t(`users.k3xhfg009`):e.$t(`users.k3wsi1010`)),1)]),_:2},1032,[`color`])):n.key===`action`?(t(),u(O,{key:2,size:`small`},{default:f(()=>[h(_,{value:a.role,size:`small`,style:{width:`92px`},disabled:K(a),options:[{value:`user`,label:`user`},{value:`editor`,label:`editor`},{value:`admin`,label:`admin`}],onChange:e=>U(a,e)},null,8,[`value`,`disabled`,`onChange`]),h(v,{size:`small`,type:`text`,disabled:K(a),onClick:e=>W(a)},{default:f(()=>[i(r(a.status===`active`?e.$t(`users.k3wsi1010`):e.$t(`users.k3xhfg009`)),1)]),_:2},1032,[`disabled`,`onClick`]),h(S,{title:e.$t(`users.k1jk2os9001`),disabled:K(a),onConfirm:e=>G(a)},{default:f(()=>[h(v,{size:`small`,type:`text`,danger:``,disabled:K(a)},{default:f(()=>[i(r(e.$t(`users.k3xakp005`)),1)]),_:1},8,[`disabled`])]),_:2},1032,[`title`,`disabled`,`onConfirm`])]),_:2},1024)):c(``,!0)]),_:1},8,[`data-source`,`columns`,`loading`])]),_:1})):(t(),u(g,{key:0,bordered:!1,class:`gate-card`},{default:f(()=>[a[3]||=p(`span`,{class:`i-tabler-lock gate-icon`},null,-1),p(`p`,M,r(e.$t(`users.kpdo6rc003`)),1),p(`p`,N,r(e.$t(`users.k1mue9bl004`)),1)]),_:1}))])}}}),[[`__scopeId`,`data-v-4f234dd7`]]);export{P as default};
@@ -1 +1 @@
1
- import{C as e,F as t,H as n,St as r,Wt as i,b as a,et as o,f as s,g as c,m as l,mt as u,p as d,t as f,z as p}from"./BSCpFtzG.js";import{d as m}from"./-6OnbLFb.js";import{t as h}from"./BcrN7QEl2.js";import{t as g}from"./C4OAdbVK2.js";import{n as _,t as v}from"./arUY5dyq2.js";import{t as y}from"./CNs_Ozdc2.js";import{t as b}from"./JOwsShod.js";var x={class:`town-page`},S={key:0,"data-hud":`town-empty`,class:`pane-empty`},C={class:`pe-title`},w={class:`pe-sub`},T={key:2,"data-hud":`town-loading`,class:`pane-loading`},E=f(e({__name:`town`,setup(e){y({layout:`town`,title:`Digital Twin`});let f=h(),E=_(),D=g(),{subscribe:O,unsubscribe:k}=v(),A=u(!1);p(()=>{if(!f.isLoggedIn){m(`/workshop`);return}A.value=!0,D.load()});let j=s(()=>{let e=[];for(let t of D.workspaces)for(let n of t.channelIds??[])e.includes(n)||e.push(n);return e});o(()=>j.value.join(`,`),()=>{for(let e of j.value)O(e)},{immediate:!0}),t(()=>{for(let e of j.value)k(e)});let M=s(()=>{let e=j.value[0];if(e&&E.channels[e])return e;for(let e of D.workspaces)for(let t of e.channelIds??[])if(E.channels[t])return t;return j.value[0]??void 0}),N=s(()=>j.value.length>0);return(e,t)=>{let o=b;return n(),c(`div`,x,[r(A)&&!r(N)?(n(),c(`div`,S,[t[0]||=d(`span`,{class:`pe-icon i-tabler-map-2`},null,-1),d(`div`,C,i(e.$t(`town.k1wm8wtr001`)),1),d(`div`,w,[a(i(e.$t(`town.k47e4s002`))+` `,1),d(`b`,null,`Agent `+i(e.$t(`town.k3n4mae005`)),1),a(` `+i(e.$t(`town.k17rerba003`)),1)])])):r(M)?(n(),l(o,{key:1,"channel-id":r(M),"all-channels":!0},null,8,[`channel-id`])):(n(),c(`div`,T,i(e.$t(`town.k1uc5mup004`)),1))])}}}),[[`__scopeId`,`data-v-ded306d3`]]);export{E as default};
1
+ import{C as e,F as t,H as n,St as r,Wt as i,b as a,et as o,f as s,g as c,m as l,mt as u,p as d,t as f,z as p}from"./BSCpFtzG.js";import{d as m}from"./-6OnbLFb.js";import{t as h}from"./BcrN7QEl2.js";import{t as g}from"./C4OAdbVK2.js";import{n as _,t as v}from"./arUY5dyq2.js";import{t as y}from"./CNs_Ozdc2.js";import{t as b}from"./CobSUzQv.js";var x={class:`town-page`},S={key:0,"data-hud":`town-empty`,class:`pane-empty`},C={class:`pe-title`},w={class:`pe-sub`},T={key:2,"data-hud":`town-loading`,class:`pane-loading`},E=f(e({__name:`town`,setup(e){y({layout:`town`,title:`Digital Twin`});let f=h(),E=_(),D=g(),{subscribe:O,unsubscribe:k}=v(),A=u(!1);p(()=>{if(!f.isLoggedIn){m(`/workshop`);return}A.value=!0,D.load()});let j=s(()=>{let e=[];for(let t of D.workspaces)for(let n of t.channelIds??[])e.includes(n)||e.push(n);return e});o(()=>j.value.join(`,`),()=>{for(let e of j.value)O(e)},{immediate:!0}),t(()=>{for(let e of j.value)k(e)});let M=s(()=>{let e=j.value[0];if(e&&E.channels[e])return e;for(let e of D.workspaces)for(let t of e.channelIds??[])if(E.channels[t])return t;return j.value[0]??void 0}),N=s(()=>j.value.length>0);return(e,t)=>{let o=b;return n(),c(`div`,x,[r(A)&&!r(N)?(n(),c(`div`,S,[t[0]||=d(`span`,{class:`pe-icon i-tabler-map-2`},null,-1),d(`div`,C,i(e.$t(`town.k1wm8wtr001`)),1),d(`div`,w,[a(i(e.$t(`town.k47e4s002`))+` `,1),d(`b`,null,`Agent `+i(e.$t(`town.k3n4mae005`)),1),a(` `+i(e.$t(`town.k17rerba003`)),1)])])):r(M)?(n(),l(o,{key:1,"channel-id":r(M),"all-channels":!0},null,8,[`channel-id`])):(n(),c(`div`,T,i(e.$t(`town.k1uc5mup004`)),1))])}}}),[[`__scopeId`,`data-v-ded306d3`]]);export{E as default};
@@ -0,0 +1 @@
1
+ import{H as e,U as t,W as n,q as r}from"./rqZ-1SoP.js";import{C as i,F as a,G as o,H as s,Ht as c,St as l,Ut as ee,Wt as u,a as d,b as f,et as p,f as m,ft as h,g,h as _,m as v,mt as y,nt as b,p as x,rt as S,t as C,x as w,z as te}from"./BSCpFtzG.js";import{n as ne}from"./B5S_UyaC.js";import{t as re}from"./D8CqF0yy.js";import{n as ie}from"./BeIfu4N3.js";import{r as T}from"./D-Ca4BGY.js";import{t as ae}from"./C9f8QMp12.js";import{t as E}from"./G0qIw7Gq2.js";import{t as oe}from"./arUY5dyq2.js";import{t as se}from"./CNs_Ozdc2.js";import{t as ce}from"./BgCrZKv_2.js";import{a as le,i as ue,n as de,r as fe,t as pe}from"./bFnZa2yd.js";import{t as me}from"./rkVgzg62.js";import{t as he}from"./B8kt898d.js";import{t as D}from"./CUXCQXjG.js";var O={class:`mono dim`},k={class:`mono ch`},ge=[`title`],_e=[`title`],A={class:`trend-cell`},ve=[`title`],ye=[`y1`,`y2`],be=[`y1`,`y2`],xe=[`points`],j={class:`mono`},Se={class:`mono`},Ce=[`title`],we=[`value`,`title`],Te={value:``},Ee=[`value`],De=[`title`],Oe={key:1,class:`run-pill na`},M={class:`prod-cell`},ke=[`title`],N=[`title`],P={key:1,class:`dim`},F={class:`dev-binds`},I=[`title`],Ae=[`onClick`],je=[`title`],Me={value:``},L=[`value`,`disabled`],Ne={class:`right`},Pe=[`title`],Fe=120,Ie=26,Le=Object.assign(i({__name:`DaqNodeRow`,props:{n:{}},setup(e){let t=e,{t:n}=ie(),r=pe(),i=ce(),a=me();function ee(e){if(!e.lastAt)return!0;let t=e.intervalMs??r.controller.defaultIntervalMs;return Date.now()-Date.parse(e.lastAt)>Math.max(t*4,12e3)}function p(e){return e.enabled?e.lineId?i.lineStateOf(e.lineId).active?!r.controller.running||ee(e)?`offline`:e.state:`idle`:`unassigned`:`disabled`}function h(e){let t=p(e);return t===`ok`||t===`warn`||t===`alarm`}function v(e){if(!e.lineId)return null;let t=i.lineStateOf(e.lineId);return!t.active||!t.recipeId?null:i.recipes.find(e=>e.id===t.recipeId)?.daqWindows?.find(t=>t.nodeId===e.id)??null}function y(e){let t=v(e);return!t||e.value==null?!1:t.min!=null&&e.value<t.min||t.max!=null&&e.value>t.max}function S(e){let t=v(e);return t&&(t.min!=null||t.max!=null)?{min:t.min,max:t.max}:e.warnLow!=null||e.warnHigh!=null?{min:e.warnLow,max:e.warnHigh}:{min:null,max:null}}function C(e){let t=e.filter(Number.isFinite);if(t.length<2)return``;let n=Math.min(...t),r=Math.max(...t)-n||1;return t.map((e,i)=>`${(i/(t.length-1)*Fe).toFixed(1)},${(Ie-(e-n)/r*24-1).toFixed(1)}`).join(` `)}function te(e,t){if(t==null||!Number.isFinite(t))return null;let n=e.filter(Number.isFinite);if(n.length<2)return null;let r=Math.min(...n,t),i=Math.max(...n,t)-r||1;return Number((Ie-(t-r)/i*24-1).toFixed(1))}function ne(e){let t=p(e),i=n(`daq.k44c2n065`);if(t===`offline`)return e.lastError?{key:t,label:i,tip:e.lastError}:{key:t,label:i,tip:r.controller.running?n(`daq.k1staled129`,{p0:Math.round(Math.max((e.intervalMs??r.controller.defaultIntervalMs)*4,12e3)/1e3)}):n(`daq.k1gateoff140`)};let a={ok:n(`daq.k41k5c062`),warn:n(`daq.k49z8v063`),alarm:n(`daq.k3xmid064`),offline:i,idle:n(`daq.k3ozyqz117`),disabled:n(`daq.k1disabl130`),unassigned:n(`daq.k3ootr6053`)};if(t===`idle`)return{key:t,label:a.idle,tip:n(`daq.k1idlehin139`)};if((t===`ok`||t===`warn`||t===`alarm`)&&y(e)){let t=v(e);return{key:`alarm`,label:n(`daq.k1l3pt51104`),tip:n(`daq.k1hrrqa1122`,{p0:t?.min??`-∞`,p1:t?.max??`+∞`,p2:``})}}return{key:t,label:a[t],tip:``}}function ae(e){let t=r.templates.find(t=>t.key===le(e));return t?`${t.name} · ${t.ch}`:e||`-`}let oe=e=>e==null?n(`daq.k9vnp9h124`,{p0:r.controller.defaultIntervalMs}):`${e}ms`,se=e=>e==null?n(`daq.k9vnp9h124`,{p0:r.controller.defaultPublishIntervalMs}):e===0?n(`daq.k41mvv078`):`${e}ms`,ue=e=>r.meta.drivers.find(t=>t.kind===e)?.status===`planned`,de=e=>e.deviceIds??(e.deviceBindingId?[e.deviceBindingId]:[]),fe=e=>a.twins.find(t=>t.id===e)?.name??e,he=m(()=>a.twins.filter(e=>e.kind!==`daq`&&!(e.modelRef??``).startsWith(`daq-`)&&!(e.modelRef??``).startsWith(`dcw-`))),D=m(()=>{let e=t.n,n=S(e),r=e.lineId?i.lineStateOf(e.lineId):null;return{tpl:ae(e.templateRef),pill:ne(e),alarm:y(e),live:h(e),trend:C(e.hist),limMin:te(e.hist,n.min),limMax:te(e.hist,n.max),interval:oe(e.intervalMs),publish:se(e.publishIntervalMs),lineActive:!!r?.active,lineProduct:r?.productName??``,lineRecipe:r?.recipeName??``}});async function Le(){let e=t.n,i=!e.enabled;try{await r.patchNode(e.id,{enabled:i}),e.enabled=i,i||(e.state=`offline`),T.success(n(i?`daq.k1nodestart147`:`daq.k1nodestop146`))}catch(e){T.error(E(e))}}async function Re(e){let n=e.target.value;try{await r.patchNode(t.n.id,{lineId:n});let e=t.n;e.lineId=n}catch(e){T.error(E(e))}}async function ze(e){let n=e.target.value;if(!n)return;let i=t.n;if(!i.deviceIds?.includes(n)){try{await r.setNodeBindings(i.id,[...i.deviceIds??[],n])}catch(e){T.error(E(e))}e.target.value=``}}async function Be(e){let n=t.n;try{await r.setNodeBindings(n.id,(n.deviceIds??[]).filter(t=>t!==e))}catch(e){T.error(E(e))}}return(t,n)=>{let r=re;return s(),g(`tr`,{class:c({"row-recipe-alarm":D.value.alarm})},[x(`td`,null,[x(`span`,O,u(e.n.id.slice(0,8)),1),x(`b`,null,u(e.n.name),1),x(`small`,k,u(D.value.tpl),1)]),x(`td`,null,[x(`span`,{class:c([`st-pill`,[D.value.pill.key]]),title:D.value.pill.tip},u(D.value.pill.label),11,ge)]),x(`td`,{class:c([`mono val`,{stale:!D.value.live,"val-alarm":e.n.state===`alarm`||D.value.alarm}]),title:D.value.live?void 0:D.value.pill.tip},[f(u(e.n.value==null?`--`:e.n.value.toFixed(e.n.decimals))+` `,1),x(`small`,null,u(e.n.unit),1)],10,_e),x(`td`,A,[(s(),g(`svg`,{class:`trend`,viewBox:`0 0 120 26`,preserveAspectRatio:`none`,title:t.$t(`daq.k1trnd002`)},[D.value.limMin==null?_(``,!0):(s(),g(`line`,{key:0,class:`lim`,x1:`0`,y1:D.value.limMin,x2:`120`,y2:D.value.limMin},null,8,ye)),D.value.limMax==null?_(``,!0):(s(),g(`line`,{key:1,class:`lim max`,x1:`0`,y1:D.value.limMax,x2:`120`,y2:D.value.limMax},null,8,be)),x(`polyline`,{class:c([`trace`,{alarm:e.n.state===`alarm`||D.value.alarm}]),points:D.value.trend},null,10,xe)],8,ve))]),x(`td`,j,u(D.value.interval),1),x(`td`,Se,u(D.value.publish),1),x(`td`,null,[x(`span`,{class:c([`drv-tag`,{planned:ue(e.n.driver)}]),title:ue(e.n.driver)?t.$t(`daq.k1plndrv138`):``},u(e.n.driver),11,Ce)]),x(`td`,null,[x(`select`,{class:`line-sel`,value:e.n.lineId,title:t.$t(`daq.k3q23v3010`),onChange:Re},[x(`option`,Te,u(t.$t(`daq.k3ootr6053`)),1),(s(!0),g(d,null,o(l(i).lines,e=>(s(),g(`option`,{key:e.id,value:e.id},u(e.name),9,Ee))),128))],40,we)]),x(`td`,null,[e.n.lineId?(s(),g(`span`,{key:0,class:c([`run-pill`,{on:D.value.lineActive}]),title:t.$t(`daq.k1runtipc131`)},[n[0]||=x(`span`,{class:`rp-dot`},null,-1),f(` `+u(D.value.lineActive?t.$t(`daq.k3vp67i096`):t.$t(`daq.k3ozyqz117`)),1)],10,De)):(s(),g(`span`,Oe,u(t.$t(`daq.k3ootr6053`)),1))]),x(`td`,M,[e.n.lineId&&D.value.lineActive?(s(),g(d,{key:0},[x(`b`,{title:t.$t(`daq.k1prdrtip132`)},u(D.value.lineProduct||`--`),9,ke),x(`small`,{class:`mono`,title:t.$t(`daq.k1prdrtip132`)},u(D.value.lineRecipe||`--`),9,N)],64)):(s(),g(`span`,P,`--`))]),x(`td`,null,[x(`div`,F,[(s(!0),g(d,null,o(de(e.n),e=>(s(),g(`span`,{key:e,class:`dev-bind-chip`,title:t.$t(`daq.k2bindtip137`)},[f(u(fe(e))+` `,1),x(`span`,{class:`dev-unbind`,title:`unbind`,onClick:t=>Be(e)},`✕`,8,Ae)],8,I))),128)),x(`select`,{class:`line-sel dev-add`,value:``,title:t.$t(`daq.k2bindtip137`),onChange:ze},[x(`option`,Me,u(t.$t(`daq.k3own4q056`)),1),(s(!0),g(d,null,o(he.value,t=>(s(),g(`option`,{key:t.id,value:t.id,disabled:(e.n.deviceIds??[]).includes(t.id)},u(fe(t.id)),9,L))),128))],40,je)])]),x(`td`,Ne,[x(`button`,{class:c([`node-toggle`,{off:!e.n.enabled}]),title:e.n.enabled?t.$t(`daq.k1nodestop146`):t.$t(`daq.k1nodestart147`),onClick:Le},[x(`span`,{class:c(e.n.enabled?`i-tabler-player-pause`:`i-tabler-player-play`)},null,2),f(` `+u(e.n.enabled?t.$t(`daq.k1nodestop146`):t.$t(`daq.k1nodestart147`)),1)],10,Pe),w(r,{class:`console-link`,to:`/daq/${e.n.id}`},{default:b(()=>[n[1]||=x(`span`,{class:`i-tabler-dashboard`},null,-1),f(` `+u(t.$t(`daq.k3o3jg2074`)),1)]),_:1},8,[`to`])])],2)}}}),{__name:`WorkshopDaqNodeRow`}),Re={class:`page`},ze={class:`aw-page-head`},Be={class:`sub`},Ve={class:`badges mono`},He=[`title`],Ue=[`title`],We={class:`txt`},Ge={class:`mono`},Ke={key:1,class:`infra-banner`},qe={class:`txt`},Je={key:2,class:`infra-banner`},Ye={class:`txt`},Xe=[`disabled`],Ze={key:3,class:`alarm-bar`},Qe={class:`bar-label`},$e={class:`mono`},et={class:`alarm-scroll`},tt=[`title`],nt={class:`mono dim`},rt={class:`mono`},it={key:0,class:`esc mono`},at=[`onClick`],ot={class:`aw-tile ctrl-card`},st={class:`ctrl-row`},ct={class:`ctrl-left`},lt=[`title`],ut={class:`cycle mono`},dt=[`title`],ft={class:`ctrl-right`},pt={class:`ctrl-metrics mono`},mt=[`title`],ht=[`title`],gt=[`title`],_t=[`title`],vt={class:`line-strip`},yt={class:`strip-label`},bt={class:`mono`},xt={class:`strip-scroll`},St={key:0,class:`lp-run`},Ct={key:1,class:`lp-idle`},wt={class:`lp-idle`},Tt={class:`modal`},Et={class:`m-title`},Dt={class:`seg-row`},Ot={class:`f-grid`},kt={class:`f`},At=[`value`],jt={class:`f`},Mt=[`placeholder`],Nt={key:0,class:`f`},Pt=[`placeholder`],Ft={class:`f-grid`},It={class:`f`},Lt=[`value`],Rt={key:0,class:`f-grid driver-form`},zt={key:0},Bt=[`onUpdate:modelValue`],Vt=[`value`],Ht=[`onUpdate:modelValue`,`type`,`placeholder`],Ut={key:2,class:`hint`},Wt={class:`test-row`},Gt=[`disabled`],Kt={key:1,class:`m-err`},qt={class:`m-actions`},Jt=[`disabled`,`title`],Yt={class:`modal`},Xt={class:`m-title`},Zt={class:`sec-label`},Qt={class:`tpl-table`},$t={class:`mono dim`},en={class:`mono range`},tn={class:`right actions`},nn=[`onClick`],rn=[`onClick`],an={key:0},on={colspan:`3`,class:`empty`},sn={class:`sec-label`},cn={class:`f-grid`},ln={class:`f`},un=[`placeholder`],dn={class:`f`},fn={class:`f`},pn=[`placeholder`],mn={class:`f`},hn=[`placeholder`],gn={class:`f`},_n={class:`f`},vn={class:`f`},yn={class:`f`},bn=[`value`],xn={class:`f`},Sn={class:`hint`},Cn={class:`f`},wn={class:`hint`},Tn={key:0,class:`m-err`},En={class:`m-actions`},Dn=[`disabled`],On={class:`sec-label`},kn={class:`tpl-table`},An={class:`mono dim`},jn={class:`mono range`},Mn={class:`right actions`},Nn=[`onClick`],Pn={class:`aw-tile opt-card`},Fn={class:`opt-count mono`},In={class:`opt-filters`},Ln={value:``},Rn=[`value`],zn={value:``},Bn=[`value`],Vn={key:0,class:`opt-empty`},Hn={class:`opt-list`},Un={class:`opt-line1`},Wn={class:`opt-node`},Gn={class:`mono opt-params`},Kn={class:`mono opt-time`},qn=[`disabled`,`onClick`],Jn=[`onClick`],Yn={class:`opt-line2 mono`},Xn={key:1,class:`opt-open-hint`},Zn={key:2,class:`opt-agg`},Qn={key:3,class:`opt-agg`},$n={key:0,class:`opt-series`},er={class:`opt-spark`,viewBox:`0 0 240 36`,preserveAspectRatio:`none`},tr=[`points`],nr={class:`mono`},rr={key:0,class:`opt-empty`},ir={class:`aw-tile table-card`},ar={class:`tbl-toolbar`},or={class:`filters`},sr={class:`flt`},cr={value:``},lr=[`value`],ur={value:`none`},dr={class:`flt`},fr={value:``},pr=[`value`],mr={value:`none`},hr=[`title`],gr={value:``},_r={value:`on`},vr={value:`off`},yr={class:`flt`},br={value:``},xr={value:`ok`},Sr={value:`warn`},Cr={value:`alarm`},wr={value:`offline`},Tr={class:`flt`},Er={value:``},Dr=[`value`],Or={class:`flt`},kr={value:``},Ar=[`value`],jr=[`title`],Mr={value:``},Nr={value:`live`},Pr={value:`hour`},Fr={value:`day`},Ir={value:`old`},Lr={value:`never`},Rr={class:`flt`},zr=[`placeholder`],Br={class:`count mono`},Vr={class:`ops-panels`},Hr={class:`panel-head`},Ur={class:`panel-body`},Wr={key:0,class:`panel-empty`},Gr={class:`mono dim`},Kr={class:`mono`},qr={key:0,class:`esc mono`},Jr=[`onClick`],Yr={class:`ops-panel event-panel`},Xr={class:`panel-head`},Zr={class:`panel-body`},Qr={key:0,class:`panel-empty`},$r={class:`mono dim t`},ei=[`title`],ti={class:`nodes-table`},ni=[`title`],ri=[`title`],ii={class:`right`},ai={key:0},oi={colspan:`11`},si={class:`pane-empty`,style:{"min-height":`120px`}},ci={class:`pe-sub`},li={key:1},ui={colspan:`11`},di={class:`pane-empty`,style:{"min-height":`90px`}},fi={class:`pe-sub`},pi={key:6,class:`err`},R=C(i({__name:`index`,setup(i){let{t:C}=ie();se({layout:`default`}),ne({title:()=>C(`titles.daq`)});let O=pe(),k=ce(),ge=oe(),_e=m(()=>k.lines.some(e=>k.lineStateOf(e.id).active)),A=he();function ve(e){return{write:C(`logs.kind.write`),manual:C(`logs.kind.manual`),alarm:C(`logs.kind.alarm`),line:C(`logs.kind.line`),recipe:C(`logs.kind.recipe`),rollback:C(`logs.kind.rollback`),daq:C(`logs.kind.daq`),system:C(`logs.kind.system`)}[e]??(e||C(`logs.kind.system`))}function ye(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`:``}async function be(e){try{await O.ackAlarm(e),T.success(C(`daq.k1acked144`))}catch(e){T.error(E(e))}}let xe=null;te(()=>{ge.ensureConnected(),xe=O.ensureWsFeed(),A.ensureLive(),O.load(),O.fetchAlarms(),k.load(),yi.load(),k.loadOptimizations(),D(()=>{O.load(),O.fetchAlarms()},5e3,{bgMs:3e4}),D(()=>{k.load()},15e3,{bgMs:6e4})}),a(()=>{xe?.()});let j=h({lineId:``,deviceId:``,template:``,driver:``,lineRun:``,state:``,time:``,search:``}),Se=m(()=>!!(j.lineId||j.deviceId||j.template||j.driver||j.lineRun||j.state||j.time||j.search.trim()));function Ce(){j.lineId=``,j.deviceId=``,j.template=``,j.driver=``,j.lineRun=``,j.state=``,j.time=``,j.search=``}let we=m(()=>{let e=new Map;for(let t of O.nodes)e.set(t.templateRef,(e.get(t.templateRef)??0)+1);return[...e.entries()].map(([e,t])=>({ref:e,count:t,label:ki(e)}))}),Te=m(()=>{let e=new Map;for(let t of O.nodes)e.set(t.driver,(e.get(t.driver)??0)+1);return[...e.entries()].map(([e,t])=>({kind:e,count:t,label:O.meta.drivers.find(t=>t.kind===e)?.label??e}))});function Ee(e){if(!e.lastAt)return`never`;let t=Date.now()-Date.parse(e.lastAt);return t<=3e5?`live`:t<=36e5?`hour`:t<=864e5?`day`:`old`}function De(e){return!j.time||Ee(e)===j.time}function Oe(e){let t=j.search.trim().toLowerCase();return!t||e.name.toLowerCase().includes(t)||e.id.toLowerCase().includes(t)}let M=y(!1),ke=y(!1),N=y(``),P=y(``),F=y({}),I=y(``),Ae=m(()=>k.recipes.filter(e=>!N.value||e.lineId===N.value));function je(e){return{open:`daq.k1optst001`,judged:`daq.k1optst008`,"judged-keep":`daq.k1optst002`,"rolled-back":`daq.k1optst003`,superseded:`daq.k1optst004`,"superseded-manual":`daq.k1optst005`,"closed-line-stop":`daq.k1optst006`,failed:`daq.k1optst007`}[e]??`daq.k1optst001`}async function Me(){M.value=!M.value,M.value&&(ke.value=!0,await L())}async function L(){await k.loadOptimizations({lineId:N.value||void 0,recipeId:P.value||void 0})}function Ne(){P.value&&!Ae.value.some(e=>e.id===P.value)&&(P.value=``),L()}async function Pe(e){I.value=e;try{let t=await k.optimizationSeries(e);F.value={...F.value,[e]:t}}finally{I.value=``}}function Fe(e,t=240,n=36){let r=e.map(e=>e.value??e.avg??0).filter(Number.isFinite);if(r.length<2)return``;let i=Math.min(...r),a=Math.max(...r)-i||1;return r.map((e,o)=>`${o/(r.length-1)*t},${n-(e-i)/a*n}`).join(` `)}async function Ie(e){await k.rollbackOptimization(e),await L()}function R(e){return e==null?`--`:String(Number(e.toFixed(2)))}let mi=m(()=>{let e=new Map;for(let t of O.nodes)for(let n of t.deviceIds??(t.deviceBindingId?[t.deviceBindingId]:[]))e.set(n,(e.get(n)??0)+1);return yi.twins.filter(t=>e.has(t.id)).map(t=>({id:t.id,name:bi.get(t.id)??t.name,count:e.get(t.id)}))});function hi(e){if(!j.lineRun)return!0;let t=!!e.lineId&&k.lineStateOf(e.lineId).active;return j.lineRun===`on`?t:!t}let z=m(()=>k.lines.find(e=>e.id===j.lineId)??null),B=m(()=>z.value?k.lineStateOf(z.value.id):null);function gi(e){if(!e.lastAt)return!0;let t=e.intervalMs??O.controller.defaultIntervalMs;return Date.now()-Date.parse(e.lastAt)>Math.max(t*4,12e3)}function _i(e){return e.enabled?e.lineId?k.lineStateOf(e.lineId).active?!O.controller.running||gi(e)?`offline`:e.state:`idle`:`unassigned`:`disabled`}let vi=m(()=>O.nodes.filter(e=>{if(j.lineId&&(j.lineId===`none`?e.lineId:(e.lineId??``)!==j.lineId))return!1;let t=e.deviceIds??(e.deviceBindingId?[e.deviceBindingId]:[]);return!(j.deviceId&&(j.deviceId===`none`?t.length>0:!t.includes(j.deviceId))||j.template&&e.templateRef!==j.template||j.driver&&e.driver!==j.driver||!hi(e)||j.state&&_i(e)!==j.state||!De(e)||!Oe(e))})),yi=me(),bi=new Map;p(()=>yi.twins,e=>{for(let t of e)bi.set(t.id,t.name)},{immediate:!0,deep:!0});let V=y(!1),H=y(`mock`),U=y(fe[0]?.key??`temp-tc`),W=y(`modbus-tcp`),G=y(``),xi=y(null),K=y({}),Si=h({kind:`none`,scale:1,offset:0}),q=y(!1),J=y(null),Y=y(!1),Ci=y(``),wi=m(()=>de.find(e=>e.kind===W.value)),Ti=m(()=>wi.value?.configFields??[]),Ei=e=>O.meta.drivers.find(t=>t.kind===e)?.status!==`planned`&&O.meta.driverAvailable?.[e]!==!1;p(W,()=>{let e={};for(let t of Ti.value)t.default!==void 0&&(e[t.key]=t.default);K.value=e,J.value=null},{immediate:!0});async function Di(){q.value=!0,J.value=null;try{J.value=await O.testDriver(W.value,K.value)}catch(e){J.value={ok:!1,message:E(e)}}finally{q.value=!1}}async function Oi(){Y.value=!0,Ci.value=``;try{let e=Si.kind===`linear`?{kind:`linear`,scale:Number(Si.scale),offset:Number(Si.offset)}:void 0;if(H.value===`mock`)await O.createFromTemplate(`daq-${U.value}`,{name:G.value?{name:G.value}.name:void 0,transform:e});else{for(let e of Ti.value)if(e.required&&!K.value[e.key]&&K.value[e.key]!==0)throw Error(C(`daq.kyuadl0125`,{p0:e.label}));let t=O.templates.find(e=>e.key===U.value);await O.createFromTemplate(`daq-${U.value}`,{name:G.value||void 0,driver:W.value,driverConfig:{...K.value},transform:e,intervalMs:xi.value,unit:t?.unit,min:t?.min,max:t?.max,decimals:t?.decimals})}V.value=!1,G.value=``,J.value=null}catch(e){Ci.value=E(e)}finally{Y.value=!1}}function ki(e){let t=O.templates.find(t=>t.key===le(e));return t?`${t.name} · ${t.ch}`:e||`-`}let Ai=y(!1),X=y(null),ji=y(!1),Z=y(``),Q=y(``),$=h({name:``,ch:``,code:``,unit:``,min:0,max:100,base:50,amp:2,decimals:2,icon:`thermo`}),Mi={thermo:C(`daq.k422b8079`),pressure:C(`daq.k3x6ff080`),tension:C(`daq.k3z9xc081`),encoder:C(`daq.k3subk4082`),camera:C(`daq.k47atw083`),gateway:C(`daq.kz7yhbj084`)},Ni=m(()=>O.templates.filter(e=>!e.builtin)),Pi=m(()=>O.templates.filter(e=>e.builtin));function Fi(e,t=!1){$.name=t?C(`daq.k2hbo3c126`,{p0:e.name}):e.name,$.ch=e.ch,$.code=e.code,$.unit=e.unit,$.min=e.min,$.max=e.max,$.base=e.base,$.amp=e.amp,$.decimals=e.decimals,$.icon=e.icon}function Ii(){X.value=null,Z.value=``,Q.value=``,Fi({key:``,name:``,code:``,ch:``,unit:``,base:50,amp:2,min:0,max:100,decimals:2,icon:`thermo`})}function Li(e){X.value=e.key,Z.value=``,Fi(e)}function Ri(e){X.value=null,Z.value=``,Fi(e,!0)}async function zi(){ji.value=!0,Z.value=``;try{let e=e=>{let t=Number(e);return e===``||e==null||!Number.isFinite(t)?void 0:t},t={name:$.name.trim(),ch:$.ch.trim()||void 0,code:$.code.trim()||void 0,unit:$.unit.trim(),min:e($.min),max:e($.max),base:e($.base),amp:e($.amp),decimals:e($.decimals),icon:$.icon};X.value?await O.updateTemplate(X.value,t):await O.createTemplate(t),Ii()}catch(e){Z.value=E(e)}finally{ji.value=!1}}async function Bi(e){if(Q.value!==e.key){Q.value=e.key;return}try{await O.removeTemplate(e.key)}catch(e){Z.value=E(e)}finally{Q.value=``}}let Vi=y(!1);async function Hi(){Vi.value=!0;try{await O.reconnectInfra()}catch{}finally{Vi.value=!1}}return(i,a)=>{let p=re,m=Le,h=ae;return s(),g(`div`,Re,[x(`div`,ze,[x(`div`,null,[a[36]||=x(`p`,{class:`aw-kicker`},` AGENTWORKSHOP / DAQ CONSOLE `,-1),x(`h1`,null,u(i.$t(`daq.k1emg364011`)),1),x(`p`,Be,u(i.$t(`daq.k1wmg2bz012`)),1)]),x(`div`,Ve,[x(`span`,{class:`badge`,title:i.$t(`daq.k1tsdbtip133`)},`TSDB · `+u(l(O).meta.tsdb),9,He),x(`span`,{class:`badge`,title:i.$t(`daq.k1queuet134`)},`QUEUE · `+u(l(O).meta.queue),9,Ue)])]),l(O).loaded&&z.value&&B.value?(s(),g(`div`,{key:0,class:c([`infra-banner`,{good:B.value.active}])},[x(`span`,{class:c(B.value.active?`i-tabler-circle-check`:`i-tabler-info-circle`)},null,2),x(`span`,We,[B.value.active?(s(),g(d,{key:0},[f(u(i.$t(`daq.k3ktxbr085`))+u(z.value.name)+`」`+u(i.$t(`daq.k15lvw0o105`)),1),x(`b`,null,u(B.value.productName),1),a[37]||=f(` · Recipe:`,-1),x(`b`,null,u(B.value.recipeName),1),x(`small`,Ge,u(i.$t(`daq.k400lb086`))+` `+u(B.value.runId?.slice(0,8))+` · `+u(i.$t(`daq.k3zkt2106`))+` `+u(B.value.startedAt?.slice(11,19))+` `+u(i.$t(`daq.k69vag8108`))+` `+u(B.value.taggedSamples)+` `+u(i.$t(`daq.k4118o092`)),1)],64)):(s(),g(d,{key:1},[f(u(i.$t(`daq.k3ktxbr085`))+u(z.value.name)+`」`+u(i.$t(`daq.k12uge2o107`)),1)],64))]),w(p,{class:`pill-btn`,to:`/dcw/${z.value.id}`},{default:b(()=>[f(u(B.value.active?i.$t(`daq.k1ukoy0v093`):i.$t(`daq.k1cg78i8109`)),1)]),_:1},8,[`to`])],2)):l(O).loaded&&!_e.value?(s(),g(`div`,Ke,[a[38]||=x(`span`,{class:`i-tabler-info-circle`},null,-1),x(`span`,qe,[f(u(i.$t(`daq.k19onw5w013`)),1),w(p,{to:`/dcw`},{default:b(()=>[f(u(i.$t(`daq.k1b2tk5c014`)),1)]),_:1}),f(u(i.$t(`daq.k1u9wnlg015`)),1)])])):_(``,!0),l(O).meta.infra?.degraded?(s(),g(`div`,Je,[a[39]||=x(`span`,{class:`i-tabler-alert-triangle`},null,-1),x(`span`,Ye,u(l(O).meta.infra.warning),1),x(`button`,{class:`pill-btn`,disabled:Vi.value,onClick:Hi},u(Vi.value?i.$t(`daq.k1ld43ur094`):i.$t(`daq.kzg9805110`)),9,Xe)])):_(``,!0),l(O).alarms.length?(s(),g(`div`,Ze,[x(`span`,Qe,[a[40]||=x(`span`,{class:`i-tabler-bell-ringing bell`},null,-1),f(` `+u(i.$t(`daq.k1alarm141`))+` `,1),x(`b`,$e,u(l(O).alarms.length),1)]),x(`div`,et,[(s(!0),g(d,null,o(l(O).alarms,e=>(s(),g(`span`,{key:e.id,class:`alarm-item`,title:i.$t(`daq.k1esc143`,{p0:e.escalation})},[x(`b`,null,u(e.nodeName),1),x(`span`,nt,u(e.metric),1),x(`span`,rt,u(e.value)+` `+u(e.rule===`lt-min`?`<`:`>`)+` `+u(e.threshold),1),e.escalation>0?(s(),g(`small`,it,`+`+u(e.escalation),1)):_(``,!0),x(`button`,{class:`mini-btn ack`,onClick:t=>be(e.id)},u(i.$t(`daq.k1ack142`)),9,at)],8,tt))),128))])])):_(``,!0),x(`section`,ot,[x(`div`,st,[x(`div`,ct,[x(`button`,{class:c([`aw-pill`,{running:l(O).controller.running}]),title:i.$t(`daq.k1snap145`),onClick:a[0]||=e=>l(O).controllerAction(l(O).controller.running?`pause`:`resume`)},[x(`span`,{class:c(l(O).controller.running?`i-tabler-player-pause`:`i-tabler-player-play`)},null,2),f(` `+u(l(O).controller.running?i.$t(`daq.kpui00095`):i.$t(`daq.knxpdpt111`)),1)],10,lt),x(`label`,ut,[f(u(i.$t(`daq.k1ifahxj016`))+` `,1),S(x(`input`,{"onUpdate:modelValue":a[1]||=e=>l(O).controller.defaultIntervalMs=e,type:`number`,min:`200`,max:`60000`,step:`100`,onChange:a[2]||=e=>l(O).controllerAction(`config`,l(O).controller.defaultIntervalMs)},null,544),[[n,l(O).controller.defaultIntervalMs,void 0,{number:!0}]]),a[41]||=f(`ms `,-1)]),x(`label`,{class:`cycle mono`,title:i.$t(`daq.k1e8lcoo001`)},[f(u(i.$t(`daq.k1if98n0017`))+` `,1),S(x(`input`,{"onUpdate:modelValue":a[3]||=e=>l(O).controller.defaultPublishIntervalMs=e,type:`number`,min:`0`,max:`60000`,step:`100`,onChange:a[4]||=e=>l(O).controllerAction(`config`,l(O).controller.defaultIntervalMs,l(O).controller.defaultPublishIntervalMs)},null,544),[[n,l(O).controller.defaultPublishIntervalMs,void 0,{number:!0}]]),a[42]||=f(`ms `,-1)],8,dt)]),x(`div`,ft,[x(`span`,pt,[x(`span`,null,u(i.$t(`daq.k45uio067`))+` `+u(l(O).controller.nodesOnline)+`/`+u(l(O).controller.nodesTotal),1),a[43]||=x(`span`,{class:`sep`},`·`,-1),x(`span`,{title:i.$t(`daq.k1yztsu4002`)},u(i.$t(`daq.k3xagp087`))+` `+u(l(O).meta.produced),9,mt),a[44]||=x(`span`,{class:`sep`},`·`,-1),x(`span`,{title:i.$t(`daq.ko09iha003`)},u(i.$t(`daq.k427eu088`))+` `+u(l(O).meta.consumed),9,ht),a[45]||=x(`span`,{class:`sep`},`·`,-1),x(`span`,{class:c({warn:(l(O).meta.dropped??0)>0}),title:i.$t(`daq.k1droptip135`)},u(i.$t(`daq.k3w8go089`))+` `+u(l(O).meta.dropped),11,gt),a[46]||=x(`span`,{class:`sep`},`·`,-1),x(`span`,{title:i.$t(`daq.kj1jbmw004`)},u(i.$t(`daq.k3wusd090`))+` `+u(l(O).meta.samplesStored),9,_t)]),x(`button`,{class:`aw-pill outline add-btn`,onClick:a[5]||=e=>{Ai.value=!0,Ii()}},[a[47]||=x(`span`,{class:`i-tabler-adjustments-horizontal`},null,-1),f(` `+u(i.$t(`daq.k1f5cv0s018`)),1)]),x(`button`,{class:`aw-pill add-btn`,onClick:a[6]||=e=>V.value=!0},[a[48]||=x(`span`,{class:`i-tabler-plus`},null,-1),f(` `+u(i.$t(`daq.k1fn0ukb019`)),1)])])]),x(`div`,vt,[x(`span`,yt,[a[49]||=x(`span`,{class:`i-tabler-route`},null,-1),f(` `+u(i.$t(`daq.k1b2o3b6020`)),1),x(`small`,bt,u(l(k).lines.length),1)]),x(`div`,xt,[(s(!0),g(d,null,o(l(k).lines,e=>(s(),v(p,{key:e.id,class:c([`line-pill`,{on:l(k).lineStateOf(e.id).active}]),style:ee({"--lc":e.color}),to:`/dcw/${e.id}`,title:l(k).lineStateOf(e.id).active?i.$t(`daq.k3v957u120`,{p0:e.name,p1:l(k).lineStateOf(e.id).productName,p2:l(k).lineStateOf(e.id).recipeName}):i.$t(`daq.k1x7jnru121`,{p0:e.name})},{default:b(()=>[a[50]||=x(`span`,{class:`lp-dot`},null,-1),x(`b`,null,u(e.name),1),l(k).lineStateOf(e.id).active?(s(),g(`small`,St,u(l(k).lineStateOf(e.id).recipeName??i.$t(`daq.k3vp67i096`)),1)):(s(),g(`small`,Ct,u(i.$t(`daq.k3zgkk021`)),1))]),_:2},1032,[`class`,`style`,`to`,`title`]))),128)),l(k).lines.length===0?(s(),v(p,{key:0,class:`line-pill`,to:`/dcw`},{default:b(()=>[a[51]||=x(`span`,{class:`lp-dot`},null,-1),x(`b`,null,u(i.$t(`daq.k1el12b1022`)),1),x(`small`,wt,u(i.$t(`daq.k8jxxe8023`)),1)]),_:1})):_(``,!0)])])]),V.value?(s(),g(`div`,{key:4,class:`modal-mask`,onClick:a[14]||=r(e=>V.value=!1,[`self`])},[x(`div`,Tt,[x(`h3`,Et,u(i.$t(`daq.k19rioqa024`)),1),x(`div`,Dt,[x(`button`,{class:c([`seg`,{on:H.value===`mock`}]),onClick:a[7]||=e=>H.value=`mock`},u(i.$t(`daq.k1p5c1un025`)),3),x(`button`,{class:c([`seg`,{on:H.value===`real`}]),onClick:a[8]||=e=>H.value=`real`},u(i.$t(`daq.k1cbcp3o026`)),3)]),x(`div`,Ot,[x(`label`,kt,[x(`span`,null,u(i.$t(`daq.k1fsgerc027`)),1),S(x(`select`,{"onUpdate:modelValue":a[9]||=e=>U.value=e,class:`inp`},[(s(!0),g(d,null,o(l(O).templates,e=>(s(),g(`option`,{key:e.key,value:e.key},u(e.name)+` · `+u(e.ch)+`(`+u(e.min)+`~`+u(e.max)+` `+u(e.unit)+`)`+u(e.builtin?``:i.$t(`daq.kr45rk9097`)),9,At))),128))],512),[[t,U.value]])]),x(`label`,jt,[x(`span`,null,u(i.$t(`daq.k1ce2k1y028`)),1),S(x(`input`,{"onUpdate:modelValue":a[10]||=e=>G.value=e,class:`inp`,placeholder:i.$t(`daq.kgpxzy3005`)},null,8,Mt),[[n,G.value]])]),H.value===`real`?(s(),g(`label`,Nt,[x(`span`,null,u(i.$t(`daq.k13mfsfc029`)),1),S(x(`input`,{"onUpdate:modelValue":a[11]||=e=>xi.value=e,type:`number`,min:`1000`,max:`60000`,step:`500`,class:`inp`,placeholder:i.$t(`daq.k1eg1000a136`)},null,8,Pt),[[n,xi.value,void 0,{number:!0}]])])):_(``,!0)]),H.value===`real`?(s(),g(d,{key:0},[x(`div`,Ft,[x(`label`,It,[x(`span`,null,u(i.$t(`daq.k1kt87rx030`)),1),S(x(`select`,{"onUpdate:modelValue":a[12]||=e=>W.value=e,class:`inp`},[(s(!0),g(d,null,o(l(de).filter(e=>e.status!==`planned`),e=>(s(),g(`option`,{key:e.kind,value:e.kind},u(e.label)+u(Ei(e.kind)?``:i.$t(`daq.kjbqphp098`)),9,Lt))),128))],512),[[t,W.value]])])]),Ti.value.length?(s(),g(`div`,Rt,[(s(!0),g(d,null,o(Ti.value,n=>(s(),g(`label`,{key:n.key,class:`f`},[x(`span`,null,[f(u(n.label),1),n.required?(s(),g(`em`,zt,`*`)):_(``,!0)]),n.type===`select`?S((s(),g(`select`,{key:0,"onUpdate:modelValue":e=>K.value[n.key]=e,class:`inp`},[(s(!0),g(d,null,o(n.options,e=>(s(),g(`option`,{key:e.value,value:e.value},u(e.label),9,Vt))),128))],8,Bt)),[[t,K.value[n.key]]]):S((s(),g(`input`,{key:1,"onUpdate:modelValue":e=>K.value[n.key]=e,type:n.type===`number`?`number`:`text`,placeholder:n.placeholder,class:`inp`},null,8,Ht)),[[e,K.value[n.key]]]),n.hint?(s(),g(`small`,Ut,u(n.hint),1)):_(``,!0)]))),128))])):_(``,!0),x(`div`,Wt,[x(`button`,{class:`pill-btn`,disabled:q.value,onClick:Di},u(q.value?i.$t(`daq.k1fsh720099`):i.$t(`daq.k1fstglk112`)),9,Gt),J.value?(s(),g(`span`,{key:0,class:c([`test-result`,J.value.ok?`ok`:`bad`])},[f(u(J.value.ok?`✓`:`✗`)+` `+u(J.value.message),1),J.value.latencyMs==null?_(``,!0):(s(),g(d,{key:0},[f(`(`+u(J.value.latencyMs)+`ms)`,1)],64))],2)):_(``,!0)])],64)):_(``,!0),Ci.value?(s(),g(`p`,Kt,u(Ci.value),1)):_(``,!0),x(`div`,qt,[x(`button`,{class:`aw-pill outline`,onClick:a[13]||=e=>V.value=!1},u(i.$t(`daq.k3xdnn031`)),1),x(`button`,{class:`aw-pill`,disabled:Y.value||H.value===`real`&&J.value!=null&&!J.value.ok,title:H.value===`real`&&!(J.value&&J.value.ok)?i.$t(`daq.k1needtst137`):``,onClick:Oi},u(Y.value?i.$t(`daq.k1bg4759100`):H.value===`real`?i.$t(`daq.k7pxjxo113`):i.$t(`daq.k1bge46t118`)),9,Jt)])])])):_(``,!0),Ai.value?(s(),g(`div`,{key:5,class:`modal-mask`,onClick:a[25]||=r(e=>Ai.value=!1,[`self`])},[x(`div`,Yt,[x(`h3`,Xt,u(i.$t(`daq.k11mv96s032`)),1),x(`p`,Zt,u(i.$t(`daq.ktji4ky033`)),1),x(`table`,Qt,[x(`tbody`,null,[(s(!0),g(d,null,o(Ni.value,e=>(s(),g(`tr`,{key:e.key},[x(`td`,null,[x(`b`,null,u(e.name),1),x(`small`,$t,u(e.code),1)]),x(`td`,en,u(e.min)+`~`+u(e.max)+` `+u(e.unit)+` · `+u(e.decimals)+` `+u(i.$t(`daq.k48oi091`)),1),x(`td`,tn,[x(`button`,{class:`mini-btn`,onClick:t=>Li(e)},u(i.$t(`daq.k45eb0034`)),9,nn),x(`button`,{class:`mini-btn danger`,onClick:t=>Bi(e)},u(Q.value===e.key?i.$t(`daq.k1hhheu3101`):i.$t(`daq.k3xakp114`)),9,rn)])]))),128)),Ni.value.length?_(``,!0):(s(),g(`tr`,an,[x(`td`,on,u(i.$t(`daq.kztvzbo035`)),1)]))])]),x(`p`,sn,u(X.value?i.$t(`daq.k1iiph0s102`):i.$t(`daq.k1efixrj115`)),1),x(`div`,cn,[x(`label`,ln,[x(`span`,null,[f(u(i.$t(`daq.k3xhia036`)),1),a[52]||=x(`em`,null,`*`,-1)]),S(x(`input`,{"onUpdate:modelValue":a[15]||=e=>l($).name=e,class:`inp`,placeholder:i.$t(`daq.k5opd2t006`)},null,8,un),[[n,l($).name]])]),x(`label`,dn,[x(`span`,null,[f(u(i.$t(`daq.k3x4ef037`)),1),a[53]||=x(`em`,null,`*`,-1)]),S(x(`input`,{"onUpdate:modelValue":a[16]||=e=>l($).unit=e,class:`inp`,placeholder:`如 %RH`},null,512),[[n,l($).unit]])]),x(`label`,fn,[x(`span`,null,u(i.$t(`daq.k1l477m0038`)),1),S(x(`input`,{"onUpdate:modelValue":a[17]||=e=>l($).ch=e,class:`inp`,placeholder:i.$t(`daq.kk8o4tl007`)},null,8,pn),[[n,l($).ch]])]),x(`label`,mn,[x(`span`,null,u(i.$t(`daq.k1ayxrqb039`)),1),S(x(`input`,{"onUpdate:modelValue":a[18]||=e=>l($).code=e,class:`inp`,placeholder:i.$t(`daq.kzn3l7l008`)},null,8,hn),[[n,l($).code]])]),x(`label`,gn,[x(`span`,null,[f(u(i.$t(`daq.k1l9jv5m040`)),1),a[54]||=x(`em`,null,`*`,-1)]),S(x(`input`,{"onUpdate:modelValue":a[19]||=e=>l($).min=e,type:`number`,class:`inp`},null,512),[[n,l($).min,void 0,{number:!0}]])]),x(`label`,_n,[x(`span`,null,[f(u(i.$t(`daq.k1l9jv4p041`)),1),a[55]||=x(`em`,null,`*`,-1)]),S(x(`input`,{"onUpdate:modelValue":a[20]||=e=>l($).max=e,type:`number`,class:`inp`},null,512),[[n,l($).max,void 0,{number:!0}]])]),x(`label`,vn,[x(`span`,null,u(i.$t(`daq.k3mxmcx042`)),1),S(x(`input`,{"onUpdate:modelValue":a[21]||=e=>l($).decimals=e,type:`number`,min:`0`,max:`4`,class:`inp`},null,512),[[n,l($).decimals,void 0,{number:!0}]])]),x(`label`,yn,[x(`span`,null,u(i.$t(`daq.k3xx56043`)),1),S(x(`select`,{"onUpdate:modelValue":a[22]||=e=>l($).icon=e,class:`inp`},[(s(!0),g(d,null,o(l(ue),e=>(s(),g(`option`,{key:e,value:e},u(Mi[e]),9,bn))),128))],512),[[t,l($).icon]])]),x(`label`,xn,[x(`span`,null,u(i.$t(`daq.k1f4eknv044`)),1),S(x(`input`,{"onUpdate:modelValue":a[23]||=e=>l($).base=e,type:`number`,class:`inp`},null,512),[[n,l($).base,void 0,{number:!0}]]),x(`small`,Sn,u(i.$t(`daq.kytd15s045`)),1)]),x(`label`,Cn,[x(`span`,null,u(i.$t(`daq.k1f4ifpo046`)),1),S(x(`input`,{"onUpdate:modelValue":a[24]||=e=>l($).amp=e,type:`number`,class:`inp`},null,512),[[n,l($).amp,void 0,{number:!0}]]),x(`small`,wn,u(i.$t(`daq.ksp2aji047`)),1)])]),Z.value?(s(),g(`p`,Tn,u(Z.value),1)):_(``,!0),x(`div`,En,[x(`button`,{class:`aw-pill outline`,onClick:Ii},u(i.$t(`daq.k48p40048`)),1),x(`button`,{class:`pill-btn`,disabled:ji.value,onClick:zi},u(ji.value?i.$t(`daq.k1b38d59103`):X.value?i.$t(`daq.k1b39281116`):i.$t(`daq.k1b3dtga119`)),9,Dn)]),x(`p`,On,u(i.$t(`daq.k1w8s84s049`)),1),x(`table`,kn,[x(`tbody`,null,[(s(!0),g(d,null,o(Pi.value,e=>(s(),g(`tr`,{key:e.key},[x(`td`,null,[x(`b`,null,u(e.name),1),x(`small`,An,u(e.code),1)]),x(`td`,jn,u(e.min)+`~`+u(e.max)+` `+u(e.unit)+` · `+u(e.decimals)+` `+u(i.$t(`daq.k48oi091`)),1),x(`td`,Mn,[x(`button`,{class:`mini-btn`,onClick:t=>Ri(e)},u(i.$t(`daq.k3y694050`)),9,Nn)])]))),128))])])])])):_(``,!0),x(`section`,Pn,[x(`button`,{class:`opt-head`,onClick:Me},[a[56]||=x(`span`,{class:`i-tabler-flask`},null,-1),x(`b`,null,u(i.$t(`daq.k1optt001`)),1),x(`span`,Fn,u(l(k).optimizations.length),1),x(`span`,{class:c([`opt-chevron`,{open:M.value}])},null,2)]),x(`div`,{class:c([`opt-body`,{open:M.value}])},[ke.value?(s(),g(d,{key:0},[x(`div`,In,[S(x(`select`,{"onUpdate:modelValue":a[26]||=e=>N.value=e,class:`inp-sel`,onChange:Ne},[x(`option`,Ln,u(i.$t(`daq.k1optf001`)),1),(s(!0),g(d,null,o(l(k).lines,e=>(s(),g(`option`,{key:e.id,value:e.id},u(e.name),9,Rn))),128))],544),[[t,N.value]]),S(x(`select`,{"onUpdate:modelValue":a[27]||=e=>P.value=e,class:`inp-sel`,onChange:L},[x(`option`,zn,u(i.$t(`daq.k1optf004`)),1),(s(!0),g(d,null,o(Ae.value,e=>(s(),g(`option`,{key:e.id,value:e.id},u(e.name),9,Bn))),128))],544),[[t,P.value]]),x(`button`,{class:`mini-act`,onClick:L},u(i.$t(`daq.k1optf002`)),1)]),l(k).optimizations.length===0?(s(),g(`p`,Vn,u(i.$t(`daq.k1opte001`)),1)):_(``,!0),x(`ul`,Hn,[(s(!0),g(d,null,o(l(k).optimizations.slice(0,30),e=>(s(),g(`li`,{key:e.id,class:c([`opt-row`,e.status])},[x(`div`,Un,[x(`span`,{class:c([`opt-status`,e.status])},u(i.$t(je(e.status))),3),x(`b`,Wn,u(e.nodeName),1),x(`span`,Gn,u(e.params[0]?.from??`?`)+` → `+u(e.params[0]?.to),1),x(`span`,Kn,u(e.setAt.slice(5,16).replace(`T`,` `)),1),F.value[e.id]?_(``,!0):(s(),g(`button`,{key:0,class:`mini-act`,disabled:I.value===e.id,onClick:t=>Pe(e.id)},u(i.$t(`daq.k1opta001`)),9,qn)),e.status===`open`?(s(),g(`button`,{key:1,class:`mini-act danger`,onClick:t=>Ie(e.id)},u(i.$t(`daq.k1opta002`)),9,Jn)):_(``,!0)]),x(`div`,Yn,[e.judge?(s(),g(`span`,{key:0,class:c([`opt-judge`,e.judge.verdict])},u(e.judge.verdict)+`(`+u(e.judge.by)+`): `+u(e.judge.reason.slice(0,70)),3)):e.status===`open`?(s(),g(`span`,Xn,u(i.$t(`daq.k1opto001`)),1)):_(``,!0),e.aggPending?(s(),g(`span`,Zn,u(i.$t(`daq.k1optw001`)),1)):e.windowAgg&&e.windowAgg.channels.length?(s(),g(`span`,Qn,[(s(!0),g(d,null,o(e.windowAgg.channels,e=>(s(),g(d,{key:e.daqNodeId},[f(u(e.ch)+` `+u(R(e.min))+`~`+u(R(e.max))+`(`+u(i.$t(`daq.k1optw002`))+u(e.breaches<0?`-`:e.breaches)+`) `,1)],64))),128))])):_(``,!0)]),F.value[e.id]?(s(),g(`div`,$n,[(s(!0),g(d,null,o(F.value[e.id].channels,e=>(s(),g(`div`,{key:e.nodeId,class:`opt-ch`},[(s(),g(`svg`,er,[x(`polyline`,{points:Fe(e.points)},null,8,tr)])),x(`span`,nr,u(e.ch)+` `+u(R(e.points.at(-1)?.value??e.points.at(-1)?.avg))+u(e.unit),1)]))),128)),F.value[e.id].channels.length===0?(s(),g(`p`,rr,u(i.$t(`daq.k1opte002`)),1)):_(``,!0)])):_(``,!0)],2))),128))])],64)):_(``,!0)],2)]),w(h,{spinning:!l(O).loaded&&!l(O).error},{default:b(()=>[x(`section`,ir,[x(`div`,ar,[x(`div`,or,[x(`label`,sr,[x(`span`,null,u(i.$t(`daq.k3wj9n051`)),1),S(x(`select`,{"onUpdate:modelValue":a[28]||=e=>l(j).lineId=e,class:`inp-sel`},[x(`option`,cr,u(i.$t(`daq.k1bkl9uj052`)),1),(s(!0),g(d,null,o(l(k).lines,e=>(s(),g(`option`,{key:e.id,value:e.id},u(e.name),9,lr))),128)),x(`option`,ur,u(i.$t(`daq.k3ootr6053`)),1)],512),[[t,l(j).lineId]])]),x(`label`,dr,[x(`span`,null,u(i.$t(`daq.k1i8rtqt054`)),1),S(x(`select`,{"onUpdate:modelValue":a[29]||=e=>l(j).deviceId=e,class:`inp-sel`},[x(`option`,fr,u(i.$t(`daq.k1bkw4m2055`)),1),(s(!0),g(d,null,o(mi.value,e=>(s(),g(`option`,{key:e.id,value:e.id},u(e.name)+`(`+u(e.count)+`) `,9,pr))),128)),x(`option`,mr,u(i.$t(`daq.k3own4q056`)),1)],512),[[t,l(j).deviceId]])]),x(`label`,{class:`flt`,title:i.$t(`daq.khb8mru009`)},[x(`span`,null,u(i.$t(`daq.k1b2tkyv057`)),1),S(x(`select`,{"onUpdate:modelValue":a[30]||=e=>l(j).lineRun=e,class:`inp-sel`},[x(`option`,gr,u(i.$t(`daq.k3x4t1058`)),1),x(`option`,_r,u(i.$t(`daq.k1nxm3p7059`)),1),x(`option`,vr,u(i.$t(`daq.k1ulx34e060`)),1)],512),[[t,l(j).lineRun]])],8,hr),x(`label`,yr,[x(`span`,null,u(i.$t(`daq.k1iwdfef061`)),1),S(x(`select`,{"onUpdate:modelValue":a[31]||=e=>l(j).state=e,class:`inp-sel`},[x(`option`,br,u(i.$t(`daq.k3x4t1058`)),1),x(`option`,xr,u(i.$t(`daq.k41k5c062`)),1),x(`option`,Sr,u(i.$t(`daq.k49z8v063`)),1),x(`option`,Cr,u(i.$t(`daq.k3xmid064`)),1),x(`option`,wr,u(i.$t(`daq.k44c2n065`)),1)],512),[[t,l(j).state]])]),x(`label`,Tr,[x(`span`,null,u(i.$t(`daq.k1flttpl010`)),1),S(x(`select`,{"onUpdate:modelValue":a[32]||=e=>l(j).template=e,class:`inp-sel`},[x(`option`,Er,u(i.$t(`daq.k1flttpl011`)),1),(s(!0),g(d,null,o(we.value,e=>(s(),g(`option`,{key:e.ref,value:e.ref},u(e.label)+`(`+u(e.count)+`) `,9,Dr))),128))],512),[[t,l(j).template]])]),x(`label`,Or,[x(`span`,null,u(i.$t(`daq.k1fltdrv012`)),1),S(x(`select`,{"onUpdate:modelValue":a[33]||=e=>l(j).driver=e,class:`inp-sel`},[x(`option`,kr,u(i.$t(`daq.k1fltdrv013`)),1),(s(!0),g(d,null,o(Te.value,e=>(s(),g(`option`,{key:e.kind,value:e.kind},u(e.label)+`(`+u(e.count)+`) `,9,Ar))),128))],512),[[t,l(j).driver]])]),x(`label`,{class:`flt`,title:i.$t(`daq.k1flttim014`)},[x(`span`,null,u(i.$t(`daq.k1flttim015`)),1),S(x(`select`,{"onUpdate:modelValue":a[34]||=e=>l(j).time=e,class:`inp-sel`},[x(`option`,Mr,u(i.$t(`daq.k1flttim016`)),1),x(`option`,Nr,u(i.$t(`daq.k1timlv017`)),1),x(`option`,Pr,u(i.$t(`daq.k1timhr018`)),1),x(`option`,Fr,u(i.$t(`daq.k1timdy019`)),1),x(`option`,Ir,u(i.$t(`daq.k1timld020`)),1),x(`option`,Lr,u(i.$t(`daq.k1timnv021`)),1)],512),[[t,l(j).time]])],8,jr),x(`label`,Rr,[x(`span`,null,u(i.$t(`daq.k1fltsrc022`)),1),S(x(`input`,{"onUpdate:modelValue":a[35]||=e=>l(j).search=e,class:`inp-sel flt-search`,type:`search`,placeholder:i.$t(`daq.k1fltsph023`)},null,8,zr),[[n,l(j).search]])]),Se.value?(s(),g(`button`,{key:0,class:`mini-btn clear-btn`,onClick:Ce},u(i.$t(`daq.k1fygck2066`)),1)):_(``,!0)]),x(`span`,Br,u(vi.value.length)+` / `+u(l(O).nodes.length)+` `+u(i.$t(`daq.k45uio067`)),1)]),x(`div`,Vr,[x(`div`,{class:c([`ops-panel alarm-panel`,{live:l(O).alarms.length>0}])},[x(`div`,Hr,[a[57]||=x(`span`,{class:`i-tabler-bell-ringing bell`},null,-1),x(`b`,null,u(i.$t(`daq.k1alarm141`)),1),x(`span`,{class:c([`mono cnt`,{hot:l(O).alarms.length>0}])},u(l(O).alarms.length),3)]),x(`div`,Ur,[l(O).alarms.length===0?(s(),g(`p`,Wr,u(i.$t(`daq.k1evt001`)),1)):(s(!0),g(d,{key:1},o(l(O).alarms,e=>(s(),g(`div`,{key:e.id,class:`alarm-row`},[a[58]||=x(`span`,{class:`i-tabler-alert-triangle tri`},null,-1),x(`b`,null,u(e.nodeName),1),x(`span`,Gr,u(e.metric),1),x(`span`,Kr,u(e.value)+` `+u(e.rule===`lt-min`?`<`:`>`)+` `+u(e.threshold),1),e.escalation>0?(s(),g(`small`,qr,`+`+u(e.escalation),1)):_(``,!0),x(`button`,{class:`mini-btn ack`,onClick:t=>be(e.id)},u(i.$t(`daq.k1ack142`)),9,Jr)]))),128))])],2),x(`div`,Yr,[x(`div`,Xr,[a[60]||=x(`span`,{class:`i-tabler-activity`},null,-1),x(`b`,null,u(i.$t(`daq.k1evt002`)),1),w(p,{class:`panel-link`,to:`/logs`},{default:b(()=>[f(u(i.$t(`daq.k1evt003`)),1),a[59]||=x(`span`,{class:`i-tabler-arrow-right`},null,-1)]),_:1})]),x(`div`,Zr,[l(A).recent.length===0?(s(),g(`p`,Qr,u(i.$t(`daq.k1evt004`)),1)):(s(!0),g(d,{key:1},o(l(A).recent,(e,t)=>(s(),g(`div`,{key:`${e.at}:${e.actor}:${e.action}:${t}`,class:`evt-row`},[x(`span`,$r,u(ye(e.at)),1),x(`span`,{class:c([`src-badge`,e.actorKind])},u(e.actorKind===`agent`?`Agent`:e.actorKind===`user`?i.$t(`logs.src.user`):i.$t(`logs.src.system`)),3),x(`span`,{class:c([`kind-chip`,e.kind])},u(ve(e.kind)),3),x(`span`,{class:`txt`,title:e.summary},u(e.summary),9,ei)]))),128))])])]),x(`table`,ti,[x(`thead`,null,[x(`tr`,null,[x(`th`,null,u(i.$t(`daq.k45uio067`)),1),x(`th`,null,u(i.$t(`daq.k42w8s068`)),1),x(`th`,null,u(i.$t(`daq.k3mv305069`)),1),x(`th`,null,u(i.$t(`daq.k1trnd001`)),1),x(`th`,null,u(i.$t(`daq.k1l6g2ga070`)),1),x(`th`,null,u(i.$t(`daq.k3zi0nf071`)),1),x(`th`,null,u(i.$t(`daq.k4a0la072`)),1),x(`th`,null,u(i.$t(`daq.k3wj9n051`)),1),x(`th`,{title:i.$t(`daq.k1runtipc131`)},u(i.$t(`daq.k1b2tkyv057`)),9,ni),x(`th`,{title:i.$t(`daq.k1prdrtip132`)},u(i.$t(`daq.k1prodrc128`)),9,ri),x(`th`,null,u(i.$t(`daq.k1i8rtqt054`)),1),x(`th`,ii,u(i.$t(`daq.k40aa6073`)),1)])]),x(`tbody`,null,[(s(!0),g(d,null,o(vi.value,e=>(s(),v(m,{key:e.id,n:e},null,8,[`n`]))),128)),l(O).loaded&&l(O).nodes.length===0?(s(),g(`tr`,ai,[x(`td`,oi,[x(`div`,si,[x(`p`,ci,u(i.$t(`daq.kvhjyc3075`)),1)])])])):l(O).loaded&&vi.value.length===0?(s(),g(`tr`,li,[x(`td`,ui,[x(`div`,di,[x(`p`,fi,u(i.$t(`daq.k1w20qew076`)),1)])])])):_(``,!0)])])])]),_:1},8,[`spinning`]),l(O).error?(s(),g(`p`,pi,[f(u(l(O).error)+`(`,1),w(p,{to:`/workshop`},{default:b(()=>[f(u(i.$t(`daq.k1bhhheq077`)),1)]),_:1}),a[61]||=f(`) `,-1)])):_(``,!0)])}}}),[[`__scopeId`,`data-v-10e5bd50`]]);export{R as default};
@@ -4,4 +4,4 @@ import{C as e,F as t,O as n,U as r,et as i,f as a,mt as o,tt as s,x as c,z as l}
4
4
  `]:{[`&:hover ${t}-inner`]:{borderColor:e.colorPrimary}},[`${n}:not(${n}-disabled)`]:{[`&:hover ${t}-checked:not(${t}-disabled) ${t}-inner`]:{backgroundColor:e.colorPrimaryHover,borderColor:`transparent`},[`&:hover ${t}-checked:not(${t}-disabled):after`]:{borderColor:e.colorPrimaryHover}}},{[`${t}-checked`]:{[`${t}-inner`]:{backgroundColor:e.colorPrimary,borderColor:e.colorPrimary,"&:after":{opacity:1,transform:`rotate(45deg) scale(1) translate(-50%,-50%)`,transition:`all ${e.motionDurationMid} ${e.motionEaseOutBack} ${e.motionDurationFast}`}},"&:after":{position:`absolute`,top:0,insetInlineStart:0,width:`100%`,height:`100%`,borderRadius:e.borderRadiusSM,visibility:`hidden`,border:`${e.lineWidthBold}px solid ${e.colorPrimary}`,animationName:A,animationDuration:e.motionDurationSlow,animationTimingFunction:`ease-in-out`,animationFillMode:`backwards`,content:`""`,transition:`all ${e.motionDurationSlow}`}},[`
5
5
  ${n}-checked:not(${n}-disabled),
6
6
  ${t}-checked:not(${t}-disabled)
7
- `]:{[`&:hover ${t}-inner`]:{backgroundColor:e.colorPrimaryHover,borderColor:`transparent`},[`&:hover ${t}:after`]:{borderColor:e.colorPrimaryHover}}},{[`${n}-disabled`]:{cursor:`not-allowed`},[`${t}-disabled`]:{[`&, ${t}-input`]:{cursor:`not-allowed`,pointerEvents:`none`},[`${t}-inner`]:{background:e.colorBgContainerDisabled,borderColor:e.colorBorder,"&:after":{borderColor:e.colorTextDisabled}},"&:after":{display:`none`},"& + span":{color:e.colorTextDisabled},[`&${t}-indeterminate ${t}-inner::after`]:{background:e.colorTextDisabled}}}]};function M(e,t){return[j(E(t,{checkboxCls:`.${e}`,checkboxSize:t.controlInteractiveSize}))]}var N=v(`Checkbox`,(e,t)=>{let{prefixCls:n}=t;return[M(n,e)]}),P=()=>({name:String,prefixCls:String,options:g([]),disabled:Boolean,id:String}),F=()=>x(x({},P()),{defaultValue:g(),value:g(),onChange:m(),"onUpdate:value":m()}),I=()=>({prefixCls:String,defaultChecked:h(),checked:h(),disabled:h(),isGroup:h(),value:w.any,name:String,id:String,indeterminate:h(),type:T(`checkbox`),autofocus:h(),onChange:m(),"onUpdate:checked":m(),onClick:m(),skipGroup:h(!1)}),L=()=>x(x({},I()),{indeterminate:h(!1)}),R=Symbol(`CheckboxGroupContext`),z=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},B=e({compatConfig:{MODE:3},name:`ACheckbox`,inheritAttrs:!1,__ANT_CHECKBOX:!0,props:L(),setup(e,r){let{emit:i,attrs:p,slots:m,expose:h}=r,g=O(),v=D.useInject(),{prefixCls:y,direction:C,disabled:w}=S(`checkbox`,e),T=d(),[E,A]=N(y),j=n(R,void 0),M=Symbol(`checkboxUniId`),P=a(()=>j?.disabled.value||w.value);s(()=>{!e.skipGroup&&j&&j.registerValue(M,e.value)}),t(()=>{j&&j.cancelValue(M)}),l(()=>{b(!!(e.checked!==void 0||j||e.value===void 0),`Checkbox`,"`value` is not validate prop, do you mean `checked`?")});let F=e=>{let t=e.target.checked;i(`update:checked`,t),i(`change`,e),g.onFieldChange()},I=o();return h({focus:()=>{var e;(e=I.value)==null||e.focus()},blur:()=>{var e;(e=I.value)==null||e.blur()}}),()=>{let t=_(m.default?.call(m)),{indeterminate:n,skipGroup:r,id:a=g.id.value}=e,o=z(e,[`indeterminate`,`skipGroup`,`id`]),{onMouseenter:s,onMouseleave:l,onInput:d,class:h,style:b}=p,S=z(p,[`onMouseenter`,`onMouseleave`,`onInput`,`class`,`style`]),w=x(x(x(x({},o),{id:a,prefixCls:y.value}),S),{disabled:P.value});j&&!r?(w.onChange=function(){i(`change`,...arguments),j.toggleOption({label:t,value:e.value})},w.name=j.name.value,w.checked=j.mergedValue.value.includes(e.value),w.disabled=P.value||T.value,w.indeterminate=n):w.onChange=F;let D=f({[`${y.value}-wrapper`]:!0,[`${y.value}-rtl`]:C.value===`rtl`,[`${y.value}-wrapper-checked`]:w.checked,[`${y.value}-wrapper-disabled`]:w.disabled,[`${y.value}-wrapper-in-form-item`]:v.isFormItemInput},h,A.value),O=f({[`${y.value}-indeterminate`]:n},A.value);return E(c(`label`,{class:D,style:b,onMouseenter:s,onMouseleave:l},[c(k,u(u({"aria-checked":n?`mixed`:void 0},w),{},{class:O,ref:I}),null),t.length?c(`span`,null,[t]):null]))}}}),V=e({compatConfig:{MODE:3},name:`ACheckboxGroup`,inheritAttrs:!1,props:F(),setup(e,t){let{slots:n,attrs:s,emit:l,expose:d}=t,f=O(),{prefixCls:p,direction:m}=S(`checkbox`,e),h=a(()=>`${p.value}-group`),[g,_]=N(h),v=o((e.value===void 0?e.defaultValue:e.value)||[]);i(()=>e.value,()=>{v.value=e.value||[]});let y=a(()=>e.options.map(e=>typeof e==`string`||typeof e==`number`?{label:e,value:e}:e)),b=o(Symbol()),x=o(new Map),C=e=>{x.value.delete(e),b.value=Symbol()},w=(e,t)=>{x.value.set(e,t),b.value=Symbol()},T=o(new Map);return i(b,()=>{let e=new Map;for(let t of x.value.values())e.set(t,!0);T.value=e}),r(R,{cancelValue:C,registerValue:w,toggleOption:t=>{let n=v.value.indexOf(t.value),r=[...v.value];n===-1?r.push(t.value):r.splice(n,1),e.value===void 0&&(v.value=r);let i=r.filter(e=>T.value.has(e)).sort((e,t)=>y.value.findIndex(t=>t.value===e)-y.value.findIndex(e=>e.value===t));l(`update:value`,i),l(`change`,i),f.onFieldChange()},mergedValue:v,name:a(()=>e.name),disabled:a(()=>e.disabled)}),d({mergedValue:v}),()=>{let{id:t=f.id.value}=e,r=null;return y.value&&y.value.length>0&&(r=y.value.map(t=>c(B,{prefixCls:p.value,key:t.value.toString(),disabled:`disabled`in t?t.disabled:e.disabled,indeterminate:t.indeterminate,value:t.value,checked:v.value.indexOf(t.value)!==-1,onChange:t.onChange,class:`${h.value}-item`},{default:()=>[n.label===void 0?t.label:n.label?.call(n,t)]}))),g(c(`div`,u(u({},s),{},{class:[h.value,{[`${h.value}-rtl`]:m.value===`rtl`},s.class,_.value],id:t}),[r||n.default?.call(n)]))}}});B.Group=V,B.install=function(e){return e.component(B.name,B),e.component(V.name,V),e};var H=B;export{M as n,H as t};
7
+ `]:{[`&:hover ${t}-inner`]:{backgroundColor:e.colorPrimaryHover,borderColor:`transparent`},[`&:hover ${t}:after`]:{borderColor:e.colorPrimaryHover}}},{[`${n}-disabled`]:{cursor:`not-allowed`},[`${t}-disabled`]:{[`&, ${t}-input`]:{cursor:`not-allowed`,pointerEvents:`none`},[`${t}-inner`]:{background:e.colorBgContainerDisabled,borderColor:e.colorBorder,"&:after":{borderColor:e.colorTextDisabled}},"&:after":{display:`none`},"& + span":{color:e.colorTextDisabled},[`&${t}-indeterminate ${t}-inner::after`]:{background:e.colorTextDisabled}}}]};function M(e,t){return[j(E(t,{checkboxCls:`.${e}`,checkboxSize:t.controlInteractiveSize}))]}var N=v(`Checkbox`,(e,t)=>{let{prefixCls:n}=t;return[M(n,e)]}),P=()=>({name:String,prefixCls:String,options:g([]),disabled:Boolean,id:String}),F=()=>x(x({},P()),{defaultValue:g(),value:g(),onChange:m(),"onUpdate:value":m()}),I=()=>({prefixCls:String,defaultChecked:h(),checked:h(),disabled:h(),isGroup:h(),value:w.any,name:String,id:String,indeterminate:h(),type:T(`checkbox`),autofocus:h(),onChange:m(),"onUpdate:checked":m(),onClick:m(),skipGroup:h(!1)}),L=()=>x(x({},I()),{indeterminate:h(!1)}),R=Symbol(`CheckboxGroupContext`),z=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},B=e({compatConfig:{MODE:3},name:`ACheckbox`,inheritAttrs:!1,__ANT_CHECKBOX:!0,props:L(),setup(e,r){let{emit:i,attrs:p,slots:m,expose:h}=r,g=O(),v=D.useInject(),{prefixCls:y,direction:C,disabled:w}=S(`checkbox`,e),T=d(),[E,A]=N(y),j=n(R,void 0),M=Symbol(`checkboxUniId`),P=a(()=>j?.disabled.value||w.value);s(()=>{!e.skipGroup&&j&&j.registerValue(M,e.value)}),t(()=>{j&&j.cancelValue(M)}),l(()=>{b(!!(e.checked!==void 0||j||e.value===void 0),`Checkbox`,"`value` is not validate prop, do you mean `checked`?")});let F=e=>{let t=e.target.checked;i(`update:checked`,t),i(`change`,e),g.onFieldChange()},I=o();return h({focus:()=>{var e;(e=I.value)==null||e.focus()},blur:()=>{var e;(e=I.value)==null||e.blur()}}),()=>{let t=_(m.default?.call(m)),{indeterminate:n,skipGroup:r,id:a=g.id.value}=e,o=z(e,[`indeterminate`,`skipGroup`,`id`]),{onMouseenter:s,onMouseleave:l,onInput:d,class:h,style:b}=p,S=z(p,[`onMouseenter`,`onMouseleave`,`onInput`,`class`,`style`]),w=x(x(x(x({},o),{id:a,prefixCls:y.value}),S),{disabled:P.value});j&&!r?(w.onChange=function(){i(`change`,...arguments),j.toggleOption({label:t,value:e.value})},w.name=j.name.value,w.checked=j.mergedValue.value.includes(e.value),w.disabled=P.value||T.value,w.indeterminate=n):w.onChange=F;let D=f({[`${y.value}-wrapper`]:!0,[`${y.value}-rtl`]:C.value===`rtl`,[`${y.value}-wrapper-checked`]:w.checked,[`${y.value}-wrapper-disabled`]:w.disabled,[`${y.value}-wrapper-in-form-item`]:v.isFormItemInput},h,A.value),O=f({[`${y.value}-indeterminate`]:n},A.value);return E(c(`label`,{class:D,style:b,onMouseenter:s,onMouseleave:l},[c(k,u(u({"aria-checked":n?`mixed`:void 0},w),{},{class:O,ref:I}),null),t.length?c(`span`,null,[t]):null]))}}}),V=e({compatConfig:{MODE:3},name:`ACheckboxGroup`,inheritAttrs:!1,props:F(),setup(e,t){let{slots:n,attrs:s,emit:l,expose:d}=t,f=O(),{prefixCls:p,direction:m}=S(`checkbox`,e),h=a(()=>`${p.value}-group`),[g,_]=N(h),v=o((e.value===void 0?e.defaultValue:e.value)||[]);i(()=>e.value,()=>{v.value=e.value||[]});let y=a(()=>e.options.map(e=>typeof e==`string`||typeof e==`number`?{label:e,value:e}:e)),b=o(Symbol()),x=o(new Map),C=e=>{x.value.delete(e),b.value=Symbol()},w=(e,t)=>{x.value.set(e,t),b.value=Symbol()},T=o(new Map);return i(b,()=>{let e=new Map;for(let t of x.value.values())e.set(t,!0);T.value=e}),r(R,{cancelValue:C,registerValue:w,toggleOption:t=>{let n=v.value.indexOf(t.value),r=[...v.value];n===-1?r.push(t.value):r.splice(n,1),e.value===void 0&&(v.value=r);let i=r.filter(e=>T.value.has(e)).sort((e,t)=>y.value.findIndex(t=>t.value===e)-y.value.findIndex(e=>e.value===t));l(`update:value`,i),l(`change`,i),f.onFieldChange()},mergedValue:v,name:a(()=>e.name),disabled:a(()=>e.disabled)}),d({mergedValue:v}),()=>{let{id:t=f.id.value}=e,r=null;return y.value&&y.value.length>0&&(r=y.value.map(t=>c(B,{prefixCls:p.value,key:t.value.toString(),disabled:`disabled`in t?t.disabled:e.disabled,indeterminate:t.indeterminate,value:t.value,checked:v.value.indexOf(t.value)!==-1,onChange:t.onChange,class:`${h.value}-item`},{default:()=>[n.label===void 0?t.label:n.label?.call(n,t)]}))),g(c(`div`,u(u({},s),{},{class:[h.value,{[`${h.value}-rtl`]:m.value===`rtl`},s.class,_.value],id:t}),[r||n.default?.call(n)]))}}});B.Group=V,B.install=function(e){return e.component(B.name,B),e.component(V.name,V),e};var H=B;export{V as n,M as r,H as t};
@@ -1 +1 @@
1
- import{C as e,G as t,H as n,Ht as ee,St as r,Wt as i,a,b as o,f as s,ft as c,g as l,h as u,lt as d,m as f,mt as p,nt as m,p as h,t as g,x as _}from"./BSCpFtzG.js";import{d as te}from"./-6OnbLFb.js";import{n as v}from"./B5S_UyaC.js";import{n as y}from"./BeIfu4N3.js";import{t as ne}from"./VLI2Zy4t.js";import{n as re,r as b,t as ie}from"./0jKrzLuM.js";import{t as ae}from"./BN_PdN3J.js";import{r as x}from"./D-Ca4BGY.js";import{r as oe,t as se}from"./Cn3J3NXR.js";import{i as ce,n as le,t as ue}from"./BCJFMBQ6.js";import{t as de}from"./DoAlYsiF.js";import{t as fe}from"./Cb3SnTM8.js";import{t as pe}from"./ORt9oDIy.js";import{t as me}from"./C9f8QMp12.js";import{t as he}from"./DoLasgPj2.js";import{t as S}from"./BcrN7QEl2.js";import{t as C}from"./G0qIw7Gq2.js";import{t as w}from"./kZV5TQvh2.js";import{t as T}from"./CNs_Ozdc2.js";var E={class:`page`},D={class:`head`},O={class:`sub`},k={class:`toolbar`},A={key:0,class:`admin-note`},j={class:`grid`},M={class:`card-head`},N={class:`name`},P={class:`owner`},F={key:0,class:`desc`},I={class:`member-line`},L={class:`lead-name`},R={key:0,class:`count`},ge={key:1,class:`count`},_e=[`title`],ve={class:`card-foot`},ye=[`title`],z=g(e({__name:`channel-templates`,setup(e){let{t:g}=y();T({layout:`default`});let z=w(),B=S(),V=p([]),H=p([]),U=p(!1),W=async()=>{U.value=!0;try{let[e,t]=await Promise.all([z.listChannelTemplates(),z.listTemplates()]);V.value=e?.data??[],H.value=t?.data??[]}finally{U.value=!1}};W();let G=p(`all`),K=s(()=>{let e=B.user?.id;switch(G.value){case`mine`:return V.value.filter(t=>t.ownerUserId===e);case`public`:return V.value.filter(e=>e.visibility===`public`);case`builtin`:return V.value.filter(e=>e.isBuiltin);default:return V.value}}),q=e=>!e.isBuiltin&&(e.ownerUserId===B.user?.id||B.isAdmin),J=e=>e.isBuiltin?{text:g(`ctpl.k3x23c021`),color:`default`,icon:`i-tabler-lock`}:e.visibility===`public`?{text:g(`ctpl.k3wv1t022`),color:`green`}:{text:g(`ctpl.k447jj023`),color:`default`},be=e=>`templateId`in e?H.value.find(t=>t.id===e.templateId)?.name??e.templateId.slice(0,8):e.inline.name,Y=p(!1),X=c({name:``,description:``,scenarioPrompt:``,workspace:``,visibility:`private`,leadId:``,memberIds:[]}),Z=()=>{X.name=``,X.description=``,X.scenarioPrompt=``,X.workspace=``,X.visibility=`private`,X.leadId=``,X.memberIds=[],Y.value=!0},xe=async()=>{if(!X.name.trim()){x.warning(g(`ctpl.k1i0ji0y024`));return}let e=X.leadId?H.value.find(e=>e.id===X.leadId):void 0,t=X.memberIds.filter(e=>e!==X.leadId).map(e=>({templateId:e,role:`worker`}));try{await z.createChannelTemplate({name:X.name.trim(),description:X.description||void 0,scenarioPrompt:X.scenarioPrompt||void 0,workspace:X.workspace||void 0,lead:e?{name:e.name,harness:e.harness,config:e.config}:null,members:t,visibility:X.visibility}),x.success(g(`ctpl.kyppebc025`)),Y.value=!1,W()}catch(e){x.error(C(e))}},Se=async(e,t)=>{try{await z.updateChannelTemplate(e.id,{visibility:t?`public`:`private`}),x.success(g(t?`ctpl.kkziya3026`:`ctpl.k1xxabaf027`)),W()}catch(e){x.error(C(e))}},Q=p(null),Ce=async e=>{Q.value=e.id;try{let t=(await z.instantiateChannelTemplate(e.id))?.data;x.success(g(`ctpl.kefkfnl030`,{p0:e.name,p1:t?.agentCount??0}))}catch(e){x.error(C(e))}finally{Q.value=null}},$=async e=>{await z.deleteChannelTemplate(e.id),x.success(g(`ctpl.k1oxfuqj028`)),W()};return v({title:()=>g(`titles.ctpl`)}),(e,s)=>{let c=ne,p=pe,g=ie,v=ue,y=he,x=fe,S=me,C=se,w=b,T=ae,z=oe,W=le,we=ce,Te=re,Ee=de;return n(),l(`div`,E,[h(`div`,D,[h(`div`,null,[h(`h2`,null,`Channel `+i(e.$t(`ctpl.k1f54iqd029`)),1),h(`p`,O,i(e.$t(`ctpl.k18gglgp011`)),1)]),_(p,null,{default:m(()=>[_(c,{onClick:s[0]||=t=>(`navigateTo`in e?e.navigateTo:r(te))(`/workshop`)},{default:m(()=>[o(i(e.$t(`ctpl.krpx6qa012`)),1)]),_:1}),_(c,{type:`primary`,onClick:Z},{default:m(()=>[o(i(e.$t(`ctpl.k1efixrj013`)),1)]),_:1})]),_:1})]),h(`div`,k,[_(g,{value:r(G),"onUpdate:value":s[1]||=e=>d(G)?G.value=e:null,size:`small`,options:[{value:`all`,label:e.$t(`chips.chipAll`,{n:r(V).length})},{value:`mine`,label:e.$t(`chips.mine`)},{value:`public`,label:e.$t(`chips.public`)},{value:`builtin`,label:e.$t(`chips.builtin`)}]},null,8,[`value`,`options`]),r(B).isAdmin?(n(),l(`span`,A,[s[10]||=h(`span`,{class:`i-tabler-shield-check`},null,-1),o(` `+i(e.$t(`ctpl.ka1gpdj014`)),1)])):u(``,!0)]),_(S,{spinning:r(U)},{default:m(()=>[h(`div`,j,[(n(!0),l(a,null,t(r(K),t=>(n(),l(`div`,{key:t.id,class:`card`},[h(`div`,M,[h(`span`,N,i(t.name),1),_(v,{color:J(t).color,class:`vis-tag`},{default:m(()=>[J(t).icon?(n(),l(`span`,{key:0,class:ee(J(t).icon)},null,2)):u(``,!0),o(i(J(t).text),1)]),_:2},1032,[`color`]),!t.isBuiltin&&q(t)?(n(),f(y,{key:0,checked:t.visibility===`public`,size:`small`,"checked-children":`公开`,"un-checked-children":`私有`,onChange:e=>Se(t,e===!0)},null,8,[`checked`,`onChange`])):u(``,!0),h(`span`,P,i(t.ownerName??`-`),1)]),t.description?(n(),l(`p`,F,i(t.description),1)):u(``,!0),h(`div`,I,[s[12]||=h(`span`,{class:`i-tabler-users-group`},null,-1),t.lead||t.members.length>0?(n(),l(a,{key:0},[_(v,{color:`gold`},{default:m(()=>[...s[11]||=[o(` lead `,-1)]]),_:1}),h(`span`,L,i(t.lead?.name??be(t.members.find(e=>e.role===`lead`)??t.members[0])),1),t.members.filter(e=>e.role!==`lead`).length>0?(n(),l(`span`,R,`+ `+i(t.members.filter(e=>e.role!==`lead`).length)+` worker`,1)):u(``,!0)],64)):(n(),l(`span`,ge,i(e.$t(`ctpl.k3rx4ps015`)),1))]),t.scenarioPrompt?(n(),l(`div`,{key:1,class:`scenario`,title:t.scenarioPrompt},i(t.scenarioPrompt.slice(0,90))+i(t.scenarioPrompt.length>90?`…`:``),9,_e)):u(``,!0),h(`div`,ve,[t.workspace?(n(),l(`span`,{key:0,class:`ws`,title:t.workspace},[s[13]||=h(`span`,{class:`i-tabler-folder`},null,-1),o(` `+i(t.workspace),1)],8,ye)):u(``,!0),s[14]||=h(`span`,{class:`spacer`},null,-1),q(t)?(n(),f(x,{key:1,title:e.$t(`ctpl.k117jag9001`),onConfirm:e=>$(t)},{default:m(()=>[_(c,{size:`small`,type:`text`,danger:``},{default:m(()=>[o(i(e.$t(`ctpl.k3xakp016`)),1)]),_:1})]),_:1},8,[`title`,`onConfirm`])):u(``,!0),_(c,{size:`small`,type:`primary`,ghost:``,loading:r(Q)===t.id,title:e.$t(`ctpl.knjomku002`),onClick:e=>Ce(t)},{default:m(()=>[o(i(e.$t(`ctpl.k3mr1fo017`)),1)]),_:1},8,[`loading`,`title`,`onClick`])])]))),128)),r(K).length===0?(n(),l(`div`,{key:0,class:`card placeholder`,onClick:Z},[s[15]||=h(`span`,{class:`i-tabler-layout-grid-add big`},null,-1),h(`span`,null,i(e.$t(`ctpl.k19fglby018`)),1)])):u(``,!0)])]),_:1},8,[`spinning`]),_(Ee,{open:r(Y),"onUpdate:open":s[9]||=e=>d(Y)?Y.value=e:null,title:`新建 Channel 模板`,"ok-text":`创建`,"cancel-text":`取消`,onOk:xe},{default:m(()=>[_(Te,{layout:`vertical`},{default:m(()=>[_(w,{label:e.$t(`ctpl.k1f55q76003`)},{default:m(()=>[_(C,{value:r(X).name,"onUpdate:value":s[2]||=e=>r(X).name=e},null,8,[`value`])]),_:1},8,[`label`]),_(w,{label:e.$t(`ctpl.k40gkk004`)},{default:m(()=>[_(C,{value:r(X).description,"onUpdate:value":s[3]||=e=>r(X).description=e},null,8,[`value`])]),_:1},8,[`label`]),_(w,{label:`Lead 模板(实例化时克隆为 channel lead)`},{default:m(()=>[_(T,{value:r(X).leadId,"onUpdate:value":s[4]||=e=>r(X).leadId=e,"allow-clear":``,placeholder:e.$t(`ctpl.k1ju32o7005`),options:r(H).map(e=>({value:e.id,label:`${e.name}(${e.harness})`}))},null,8,[`value`,`placeholder`,`options`])]),_:1}),_(w,{label:e.$t(`ctpl.k5uq1js006`)},{default:m(()=>[_(T,{value:r(X).memberIds,"onUpdate:value":s[5]||=e=>r(X).memberIds=e,mode:`multiple`,placeholder:e.$t(`ctpl.kqmdkc9007`),options:r(H).filter(e=>e.id!==r(X).leadId).map(e=>({value:e.id,label:`${e.name}(${e.harness})`}))},null,8,[`value`,`placeholder`,`options`])]),_:1},8,[`label`]),_(w,{label:e.$t(`ctpl.k1q87yho008`)},{default:m(()=>[_(z,{value:r(X).scenarioPrompt,"onUpdate:value":s[6]||=e=>r(X).scenarioPrompt=e,rows:3},null,8,[`value`])]),_:1},8,[`label`]),_(w,{label:e.$t(`ctpl.kk4u5cr009`)},{default:m(()=>[_(C,{value:r(X).workspace,"onUpdate:value":s[7]||=e=>r(X).workspace=e,placeholder:`data/workspaces/<channelId>`},null,8,[`value`])]),_:1},8,[`label`]),_(w,{label:e.$t(`ctpl.k3lrqn0010`)},{default:m(()=>[_(we,{value:r(X).visibility,"onUpdate:value":s[8]||=e=>r(X).visibility=e},{default:m(()=>[_(W,{value:`private`},{default:m(()=>[o(i(e.$t(`ctpl.k17jfge3019`)),1)]),_:1}),_(W,{value:`public`},{default:m(()=>[o(i(e.$t(`ctpl.k191u0u5020`)),1)]),_:1})]),_:1},8,[`value`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`open`])])}}}),[[`__scopeId`,`data-v-0c2ddfe8`]]);export{z as default};
1
+ import{C as e,G as t,H as n,Ht as ee,St as r,Wt as i,a,b as o,f as s,ft as c,g as l,h as u,lt as d,m as f,mt as p,nt as m,p as h,t as g,x as _}from"./BSCpFtzG.js";import{d as te}from"./-6OnbLFb.js";import{n as v}from"./B5S_UyaC.js";import{n as y}from"./BeIfu4N3.js";import{t as ne}from"./VLI2Zy4t.js";import{n as re,r as b,t as ie}from"./0jKrzLuM.js";import{t as ae}from"./BN_PdN3J.js";import{r as x}from"./D-Ca4BGY.js";import{r as oe,t as se}from"./Cn3J3NXR.js";import{i as ce,n as le,t as ue}from"./BCJFMBQ6.js";import{t as de}from"./DoAlYsiF.js";import{t as fe}from"./Cb3SnTM8.js";import{t as pe}from"./ORt9oDIy.js";import{t as me}from"./C9f8QMp12.js";import{t as he}from"./DoLasgPj2.js";import{t as S}from"./BcrN7QEl2.js";import{t as C}from"./G0qIw7Gq2.js";import{t as w}from"./CucID8qg2.js";import{t as T}from"./CNs_Ozdc2.js";var E={class:`page`},D={class:`head`},O={class:`sub`},k={class:`toolbar`},A={key:0,class:`admin-note`},j={class:`grid`},M={class:`card-head`},N={class:`name`},P={class:`owner`},F={key:0,class:`desc`},I={class:`member-line`},L={class:`lead-name`},R={key:0,class:`count`},ge={key:1,class:`count`},_e=[`title`],ve={class:`card-foot`},ye=[`title`],z=g(e({__name:`channel-templates`,setup(e){let{t:g}=y();T({layout:`default`});let z=w(),B=S(),V=p([]),H=p([]),U=p(!1),W=async()=>{U.value=!0;try{let[e,t]=await Promise.all([z.listChannelTemplates(),z.listTemplates()]);V.value=e?.data??[],H.value=t?.data??[]}finally{U.value=!1}};W();let G=p(`all`),K=s(()=>{let e=B.user?.id;switch(G.value){case`mine`:return V.value.filter(t=>t.ownerUserId===e);case`public`:return V.value.filter(e=>e.visibility===`public`);case`builtin`:return V.value.filter(e=>e.isBuiltin);default:return V.value}}),q=e=>!e.isBuiltin&&(e.ownerUserId===B.user?.id||B.isAdmin),J=e=>e.isBuiltin?{text:g(`ctpl.k3x23c021`),color:`default`,icon:`i-tabler-lock`}:e.visibility===`public`?{text:g(`ctpl.k3wv1t022`),color:`green`}:{text:g(`ctpl.k447jj023`),color:`default`},be=e=>`templateId`in e?H.value.find(t=>t.id===e.templateId)?.name??e.templateId.slice(0,8):e.inline.name,Y=p(!1),X=c({name:``,description:``,scenarioPrompt:``,workspace:``,visibility:`private`,leadId:``,memberIds:[]}),Z=()=>{X.name=``,X.description=``,X.scenarioPrompt=``,X.workspace=``,X.visibility=`private`,X.leadId=``,X.memberIds=[],Y.value=!0},xe=async()=>{if(!X.name.trim()){x.warning(g(`ctpl.k1i0ji0y024`));return}let e=X.leadId?H.value.find(e=>e.id===X.leadId):void 0,t=X.memberIds.filter(e=>e!==X.leadId).map(e=>({templateId:e,role:`worker`}));try{await z.createChannelTemplate({name:X.name.trim(),description:X.description||void 0,scenarioPrompt:X.scenarioPrompt||void 0,workspace:X.workspace||void 0,lead:e?{name:e.name,harness:e.harness,config:e.config}:null,members:t,visibility:X.visibility}),x.success(g(`ctpl.kyppebc025`)),Y.value=!1,W()}catch(e){x.error(C(e))}},Se=async(e,t)=>{try{await z.updateChannelTemplate(e.id,{visibility:t?`public`:`private`}),x.success(g(t?`ctpl.kkziya3026`:`ctpl.k1xxabaf027`)),W()}catch(e){x.error(C(e))}},Q=p(null),Ce=async e=>{Q.value=e.id;try{let t=(await z.instantiateChannelTemplate(e.id))?.data;x.success(g(`ctpl.kefkfnl030`,{p0:e.name,p1:t?.agentCount??0}))}catch(e){x.error(C(e))}finally{Q.value=null}},$=async e=>{await z.deleteChannelTemplate(e.id),x.success(g(`ctpl.k1oxfuqj028`)),W()};return v({title:()=>g(`titles.ctpl`)}),(e,s)=>{let c=ne,p=pe,g=ie,v=ue,y=he,x=fe,S=me,C=se,w=b,T=ae,z=oe,W=le,we=ce,Te=re,Ee=de;return n(),l(`div`,E,[h(`div`,D,[h(`div`,null,[h(`h2`,null,`Channel `+i(e.$t(`ctpl.k1f54iqd029`)),1),h(`p`,O,i(e.$t(`ctpl.k18gglgp011`)),1)]),_(p,null,{default:m(()=>[_(c,{onClick:s[0]||=t=>(`navigateTo`in e?e.navigateTo:r(te))(`/workshop`)},{default:m(()=>[o(i(e.$t(`ctpl.krpx6qa012`)),1)]),_:1}),_(c,{type:`primary`,onClick:Z},{default:m(()=>[o(i(e.$t(`ctpl.k1efixrj013`)),1)]),_:1})]),_:1})]),h(`div`,k,[_(g,{value:r(G),"onUpdate:value":s[1]||=e=>d(G)?G.value=e:null,size:`small`,options:[{value:`all`,label:e.$t(`chips.chipAll`,{n:r(V).length})},{value:`mine`,label:e.$t(`chips.mine`)},{value:`public`,label:e.$t(`chips.public`)},{value:`builtin`,label:e.$t(`chips.builtin`)}]},null,8,[`value`,`options`]),r(B).isAdmin?(n(),l(`span`,A,[s[10]||=h(`span`,{class:`i-tabler-shield-check`},null,-1),o(` `+i(e.$t(`ctpl.ka1gpdj014`)),1)])):u(``,!0)]),_(S,{spinning:r(U)},{default:m(()=>[h(`div`,j,[(n(!0),l(a,null,t(r(K),t=>(n(),l(`div`,{key:t.id,class:`card`},[h(`div`,M,[h(`span`,N,i(t.name),1),_(v,{color:J(t).color,class:`vis-tag`},{default:m(()=>[J(t).icon?(n(),l(`span`,{key:0,class:ee(J(t).icon)},null,2)):u(``,!0),o(i(J(t).text),1)]),_:2},1032,[`color`]),!t.isBuiltin&&q(t)?(n(),f(y,{key:0,checked:t.visibility===`public`,size:`small`,"checked-children":`公开`,"un-checked-children":`私有`,onChange:e=>Se(t,e===!0)},null,8,[`checked`,`onChange`])):u(``,!0),h(`span`,P,i(t.ownerName??`-`),1)]),t.description?(n(),l(`p`,F,i(t.description),1)):u(``,!0),h(`div`,I,[s[12]||=h(`span`,{class:`i-tabler-users-group`},null,-1),t.lead||t.members.length>0?(n(),l(a,{key:0},[_(v,{color:`gold`},{default:m(()=>[...s[11]||=[o(` lead `,-1)]]),_:1}),h(`span`,L,i(t.lead?.name??be(t.members.find(e=>e.role===`lead`)??t.members[0])),1),t.members.filter(e=>e.role!==`lead`).length>0?(n(),l(`span`,R,`+ `+i(t.members.filter(e=>e.role!==`lead`).length)+` worker`,1)):u(``,!0)],64)):(n(),l(`span`,ge,i(e.$t(`ctpl.k3rx4ps015`)),1))]),t.scenarioPrompt?(n(),l(`div`,{key:1,class:`scenario`,title:t.scenarioPrompt},i(t.scenarioPrompt.slice(0,90))+i(t.scenarioPrompt.length>90?`…`:``),9,_e)):u(``,!0),h(`div`,ve,[t.workspace?(n(),l(`span`,{key:0,class:`ws`,title:t.workspace},[s[13]||=h(`span`,{class:`i-tabler-folder`},null,-1),o(` `+i(t.workspace),1)],8,ye)):u(``,!0),s[14]||=h(`span`,{class:`spacer`},null,-1),q(t)?(n(),f(x,{key:1,title:e.$t(`ctpl.k117jag9001`),onConfirm:e=>$(t)},{default:m(()=>[_(c,{size:`small`,type:`text`,danger:``},{default:m(()=>[o(i(e.$t(`ctpl.k3xakp016`)),1)]),_:1})]),_:1},8,[`title`,`onConfirm`])):u(``,!0),_(c,{size:`small`,type:`primary`,ghost:``,loading:r(Q)===t.id,title:e.$t(`ctpl.knjomku002`),onClick:e=>Ce(t)},{default:m(()=>[o(i(e.$t(`ctpl.k3mr1fo017`)),1)]),_:1},8,[`loading`,`title`,`onClick`])])]))),128)),r(K).length===0?(n(),l(`div`,{key:0,class:`card placeholder`,onClick:Z},[s[15]||=h(`span`,{class:`i-tabler-layout-grid-add big`},null,-1),h(`span`,null,i(e.$t(`ctpl.k19fglby018`)),1)])):u(``,!0)])]),_:1},8,[`spinning`]),_(Ee,{open:r(Y),"onUpdate:open":s[9]||=e=>d(Y)?Y.value=e:null,title:`新建 Channel 模板`,"ok-text":`创建`,"cancel-text":`取消`,onOk:xe},{default:m(()=>[_(Te,{layout:`vertical`},{default:m(()=>[_(w,{label:e.$t(`ctpl.k1f55q76003`)},{default:m(()=>[_(C,{value:r(X).name,"onUpdate:value":s[2]||=e=>r(X).name=e},null,8,[`value`])]),_:1},8,[`label`]),_(w,{label:e.$t(`ctpl.k40gkk004`)},{default:m(()=>[_(C,{value:r(X).description,"onUpdate:value":s[3]||=e=>r(X).description=e},null,8,[`value`])]),_:1},8,[`label`]),_(w,{label:`Lead 模板(实例化时克隆为 channel lead)`},{default:m(()=>[_(T,{value:r(X).leadId,"onUpdate:value":s[4]||=e=>r(X).leadId=e,"allow-clear":``,placeholder:e.$t(`ctpl.k1ju32o7005`),options:r(H).map(e=>({value:e.id,label:`${e.name}(${e.harness})`}))},null,8,[`value`,`placeholder`,`options`])]),_:1}),_(w,{label:e.$t(`ctpl.k5uq1js006`)},{default:m(()=>[_(T,{value:r(X).memberIds,"onUpdate:value":s[5]||=e=>r(X).memberIds=e,mode:`multiple`,placeholder:e.$t(`ctpl.kqmdkc9007`),options:r(H).filter(e=>e.id!==r(X).leadId).map(e=>({value:e.id,label:`${e.name}(${e.harness})`}))},null,8,[`value`,`placeholder`,`options`])]),_:1},8,[`label`]),_(w,{label:e.$t(`ctpl.k1q87yho008`)},{default:m(()=>[_(z,{value:r(X).scenarioPrompt,"onUpdate:value":s[6]||=e=>r(X).scenarioPrompt=e,rows:3},null,8,[`value`])]),_:1},8,[`label`]),_(w,{label:e.$t(`ctpl.kk4u5cr009`)},{default:m(()=>[_(C,{value:r(X).workspace,"onUpdate:value":s[7]||=e=>r(X).workspace=e,placeholder:`data/workspaces/<channelId>`},null,8,[`value`])]),_:1},8,[`label`]),_(w,{label:e.$t(`ctpl.k3lrqn0010`)},{default:m(()=>[_(we,{value:r(X).visibility,"onUpdate:value":s[8]||=e=>r(X).visibility=e},{default:m(()=>[_(W,{value:`private`},{default:m(()=>[o(i(e.$t(`ctpl.k17jfge3019`)),1)]),_:1}),_(W,{value:`public`},{default:m(()=>[o(i(e.$t(`ctpl.k191u0u5020`)),1)]),_:1})]),_:1},8,[`value`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`open`])])}}}),[[`__scopeId`,`data-v-0c2ddfe8`]]);export{z as default};
@@ -1 +1 @@
1
- .model-preview-3d[data-v-b29ffdbe]{border:1px solid var(--hud-line,#263340);background:radial-gradient(120% 90% at 50% 20%,#41c8f41f,#0000 62%),linear-gradient(#0b121b,#0e141d);border-radius:2px;width:100%;min-height:40px;position:relative;overflow:hidden}.mp-loading[data-v-b29ffdbe]{place-items:center;display:grid;position:absolute;inset:0}.mp-spin[data-v-b29ffdbe]{border:2px solid #41c8f440;border-top-color:#41c8f4;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite mp-spin-b29ffdbe}@keyframes mp-spin-b29ffdbe{to{transform:rotate(1turn)}}.mp-failed[data-v-b29ffdbe]{font-family:var(--font-mono);letter-spacing:.12em;color:var(--hud-dim,#7f919e);place-items:center;font-size:9px;display:grid;position:absolute;inset:0}.asset-lib[data-v-effff4e2]{width:184px;font-family:var(--font-body);flex-direction:column;flex:none;gap:8px;padding:0 0 10px;display:flex}.lib-head[data-v-effff4e2]{border-bottom:1px solid #26334073;align-items:center;gap:7px;padding:10px 12px 6px;display:flex}.head-title[data-v-effff4e2]{font-family:var(--font-mono);letter-spacing:.16em;color:var(--hud-text,#d9e4ee);white-space:nowrap;font-size:10px;font-weight:600}.head-hint[data-v-effff4e2]{font-family:var(--font-mono);color:var(--hud-faint,#5b6c7b);white-space:nowrap;margin-left:auto;font-size:8.5px}.upload-box[data-v-effff4e2]{transition:border-color .16s var(--hud-ease,ease), background .16s var(--hud-ease,ease);background:#0b101866;border:1px dashed #263340cc;border-radius:2px;flex-direction:column;gap:7px;margin:8px 10px 0;padding:7px;display:flex}.upload-box.drop[data-v-effff4e2]{border-color:var(--hud-accent,#4da3ff);background:#4da3ff14}.upload-row[data-v-effff4e2]{cursor:pointer;align-items:center;gap:6px;min-height:26px;display:flex}.file-input[data-v-effff4e2]{display:none}.upload-name[data-v-effff4e2]{font-family:var(--font-mono);color:var(--hud-dim,#8496a5);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;font-size:10px;display:inline-flex;overflow:hidden}.upload-ico[data-v-effff4e2]{color:var(--hud-accent,#4da3ff);font-size:13px}.drop-hint[data-v-effff4e2]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-accent,#4da3ff);align-items:center;gap:5px;padding:2px 0 4px;font-size:10px;display:inline-flex}.upload-file-tag[data-v-effff4e2]{font-family:var(--font-mono);color:var(--hud-dim,#8496a5);border:1px solid var(--hud-line,#263340);border-radius:2px;padding:3px 6px;font-size:9.5px}.upload-actions[data-v-effff4e2]{align-items:center;gap:6px;display:flex}.upload-btn[data-v-effff4e2]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-text,#d9e4ee);background:var(--hud-panel-raised,#141b26);border:1px solid var(--hud-line,#263340);cursor:pointer;transition:border-color .14s var(--hud-ease,ease), color .14s var(--hud-ease,ease);border-radius:2px;padding:5px 10px;font-size:10px;font-weight:600}.upload-btn[data-v-effff4e2]:hover:not(:disabled){border-color:var(--hud-accent,#4da3ff);color:var(--hud-accent,#4da3ff)}.upload-btn[data-v-effff4e2]:disabled{opacity:.45;cursor:default}.upload-btn.go[data-v-effff4e2]{color:var(--hud-amber,#f5a742);background:#f5a74214;border-color:#f5a7428c}.upload-btn.go[data-v-effff4e2]:hover:not(:disabled){border-color:var(--hud-amber,#f5a742);color:var(--hud-amber,#f5a742);background:#f5a74229}.mini-err[data-v-effff4e2]{font-family:var(--font-mono);color:var(--hud-danger,#ff6b5c);font-size:9.5px}.mini-err[data-v-effff4e2],.mini-msg[data-v-effff4e2]{font-size:10px}.mini-msg[data-v-effff4e2]{font-family:var(--font-mono);color:var(--hud-dim,#8496a5);padding:0 10px}.lib-grid[data-v-effff4e2]{flex-direction:column;gap:4px;max-height:42vh;padding:6px 10px 2px;display:flex;overflow:hidden auto}.model-card[data-v-effff4e2]{cursor:grab;transition:background .14s var(--hud-ease,ease);background:#141b26a6;border:0;border-radius:2px;flex-direction:column;align-items:stretch;gap:4px;padding:6px;display:flex;position:relative}.model-card[data-v-effff4e2]:hover{background:var(--hud-panel-hover,#1a2432)}.model-card[data-v-effff4e2]:active{cursor:grabbing}.model-card .model-preview-3d[data-v-effff4e2]{margin-bottom:2px}.model-name[data-v-effff4e2]{color:var(--hud-text,#d9e4ee);text-align:left;text-overflow:ellipsis;white-space:nowrap;padding:0 2px;font-size:11px;font-weight:600;overflow:hidden}.model-badge[data-v-effff4e2]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-faint,#5b6c7b);text-align:left;padding:0 2px;font-size:8.5px}.card-actions[data-v-effff4e2]{justify-content:flex-end;gap:4px;display:flex}.card-btn[data-v-effff4e2]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-text,#d9e4ee);border:1px solid var(--hud-line,#263340);cursor:pointer;transition:border-color .14s var(--hud-ease,ease), color .14s var(--hud-ease,ease);background:0 0;border-radius:2px;padding:2px 8px;font-size:10px;font-weight:600}.card-btn[data-v-effff4e2]:hover:not(:disabled){border-color:var(--hud-accent,#4da3ff);color:var(--hud-accent,#4da3ff)}.card-btn.danger[data-v-effff4e2]{color:var(--hud-danger,#ff6b5c)}.card-btn.danger[data-v-effff4e2]:hover:not(:disabled){border-color:var(--hud-danger,#ff6b5c);color:var(--hud-danger,#ff6b5c)}.card-btn[data-v-effff4e2]:disabled{opacity:.45;cursor:default}.model-img[data-v-effff4e2]{-o-object-fit:contain;object-fit:contain;pointer-events:none;width:46px;height:68px}.model-img.glb[data-v-effff4e2]{background:var(--hud-input,#0b1018);border:1px dashed var(--hud-line,#263340);border-radius:2px;justify-content:center;align-items:center;width:100%;height:44px;display:inline-flex}.glb-cube[data-v-effff4e2]{color:var(--hud-faint,#5b6c7b);font-size:24px;line-height:1}.lib-note[data-v-effff4e2]{font-family:var(--font-mono);color:var(--hud-faint,#5b6c7b);align-items:center;gap:7px;padding:8px 2px;font-size:9.5px;display:flex}.loading-dot[data-v-effff4e2]{border:2px solid var(--hud-line,#263340);border-top-color:var(--hud-accent,#4da3ff);border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin-effff4e2}@keyframes spin-effff4e2{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.loading-dot[data-v-effff4e2]{animation:none}}.twin-panel[data-v-2eb2660e]{width:auto;box-shadow:none;background:0 0;border:0;border-radius:0;flex-direction:column;flex:none;gap:8px;padding:0;display:flex}.twin-head[data-v-2eb2660e]{border-bottom:1px solid #26334073;align-items:center;gap:8px;padding:10px 12px 6px;display:flex}.twin-error[data-v-2eb2660e]{color:#ffb4b4;word-break:break-all;background:#ff6b6b1a;border:1px solid #ff6b6b59;border-radius:8px;padding:7px 10px;font-size:11px;line-height:1.5}.twin-kicker[data-v-2eb2660e]{font-family:var(--font-mono);letter-spacing:.16em;color:var(--hud-text,#d9e4ee);font-size:10px;font-weight:600}.twin-count[data-v-2eb2660e]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-dim,#8496a5);margin-left:auto;font-size:10px}.twin-empty[data-v-2eb2660e]{padding:10px}.twin-empty-frame[data-v-2eb2660e]{border:1px dashed var(--hud-line);flex-direction:column;gap:4px;padding:12px 10px;display:flex}.twin-empty-title[data-v-2eb2660e]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-text);font-size:11px}.twin-empty-sub[data-v-2eb2660e]{color:var(--hud-dim);font-size:10px;line-height:1.6}.twin-list[data-v-2eb2660e]{flex-direction:column;gap:4px;max-height:46vh;padding:4px 0 10px;display:flex;overflow:hidden auto}.twin-card[data-v-2eb2660e]{text-align:left;cursor:pointer;background:#141b26a6;border:0;border-radius:2px;flex-direction:column;gap:6px;margin:0 10px;padding:8px 9px;transition:background .16s;display:flex}.twin-card[data-v-2eb2660e]:hover{background:var(--hud-panel-hover)}.twin-card[data-v-2eb2660e]:active{background:var(--hud-panel-raised)}.twin-card:hover .twin-name[data-v-2eb2660e]{color:#e8f1f8}.twin-card.daq[data-v-2eb2660e]{background:#35e0a00f;border:1px solid #35e0a052}.twin-card.daq[data-v-2eb2660e]:hover{background:#35e0a01c;border-color:#35e0a080}.twin-card.daq .twin-code[data-v-2eb2660e],.twin-card.daq .twin-model-tag[data-v-2eb2660e]{color:var(--hud-accent,#35e0a0)}.twin-row[data-v-2eb2660e]{align-items:center;gap:8px;min-width:0;display:flex}.twin-model-tag[data-v-2eb2660e]{min-width:30px;font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-faint);flex:none;font-size:9px;font-weight:600}.twin-idbar[data-v-2eb2660e]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.twin-name[data-v-2eb2660e]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:600;overflow:hidden}.twin-code[data-v-2eb2660e]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-dim);font-size:9px}.twin-del[data-v-2eb2660e]{width:18px;height:18px;font-family:var(--font-mono);color:var(--hud-dim,#8496a5);border:1px solid var(--hud-line,#263340);cursor:pointer;background:0 0;border-radius:2px;flex:none;font-size:9px;line-height:1;transition:border-color .14s,color .14s,background .14s}.twin-del[data-v-2eb2660e]:hover:not(:disabled){border-color:var(--hud-danger,#ff6b5c);color:var(--hud-danger,#ff6b5c)}.twin-del.armed[data-v-2eb2660e]{color:#1a0d0a;background:var(--hud-danger,#ff6b5c);border-color:var(--hud-danger,#ff6b5c);width:auto;padding:0 5px}.twin-del[data-v-2eb2660e]:disabled{opacity:.4;cursor:default}.twin-state[data-v-2eb2660e]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-dim);border:1px solid var(--hud-line);border-radius:2px;flex:none;align-items:center;gap:5px;padding:2px 5px;font-size:8.5px;display:inline-flex}.twin-state.s-alarm[data-v-2eb2660e]{color:var(--hud-danger);border-color:#ff6b5c80}.twin-state.s-running[data-v-2eb2660e]{color:var(--hud-ok);border-color:#7fd4a066}.twin-state-dot[data-v-2eb2660e]{border-radius:50%;width:5px;height:5px}.twin-tele[data-v-2eb2660e]{border-top:1px dashed var(--hud-line);grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 10px;margin:0 0 2px;padding-top:6px;display:grid}.tele-item[data-v-2eb2660e]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-dim);justify-content:space-between;gap:6px;min-width:0;font-size:9.5px;display:flex}.tele-item em[data-v-2eb2660e]{text-overflow:ellipsis;font-style:normal;overflow:hidden}.tele-item b[data-v-2eb2660e]{color:var(--hud-text);font-weight:500}.twin-daq[data-v-2eb2660e]{border-top:1px dashed #35e0a04d;flex-direction:column;gap:2px;margin:0 0 2px;padding-top:6px;display:flex}.daq-item[data-v-2eb2660e]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-accent,#35e0a0);justify-content:space-between;align-items:baseline;gap:6px;min-width:0;font-size:9.5px;display:flex}.daq-item em[data-v-2eb2660e]{text-overflow:ellipsis;white-space:nowrap;opacity:.85;font-style:normal;overflow:hidden}.daq-item b[data-v-2eb2660e]{white-space:nowrap;font-size:10.5px;font-weight:700}.daq-item b i[data-v-2eb2660e]{opacity:.75;margin-left:2px;font-size:8.5px;font-style:normal;font-weight:500}.daq-item.alarm[data-v-2eb2660e]{color:var(--hud-amber,#f6c453)}.twin-dcw[data-v-2eb2660e]{border-top:1px dashed #f0a04c59;flex-direction:column;gap:6px;margin:0 0 2px;padding-top:6px;display:flex}.dcw-item[data-v-2eb2660e]{flex-direction:column;gap:3px;display:flex}.dcw-head[data-v-2eb2660e]{font-family:var(--font-mono);color:var(--hud-dim);justify-content:space-between;align-items:baseline;gap:6px;font-size:9.5px;display:flex}.dcw-head em[data-v-2eb2660e]{text-overflow:ellipsis;white-space:nowrap;font-style:normal;overflow:hidden}.dcw-src[data-v-2eb2660e]{color:var(--hud-amber,#f6c453);border:1px solid #f0a04c80;border-radius:2px;margin-left:4px;padding:0 3px;font-size:8px;font-style:normal}.dcw-set[data-v-2eb2660e]{font-variant-numeric:tabular-nums;color:var(--hud-amber,#f6c453);white-space:nowrap;font-size:12px;font-weight:700}.dcw-set i[data-v-2eb2660e]{opacity:.75;margin-left:2px;font-size:8.5px;font-style:normal;font-weight:500}.dcw-act[data-v-2eb2660e]{font-family:var(--font-mono);color:var(--hud-dim);justify-content:space-between;align-items:baseline;gap:6px;font-size:9px;display:flex}.dcw-act em[data-v-2eb2660e]{letter-spacing:.08em;color:var(--hud-faint);font-size:8px;font-style:normal}.dcw-act b[data-v-2eb2660e]{font-variant-numeric:tabular-nums;color:var(--hud-accent,#35e0a0);white-space:nowrap;font-size:11.5px;font-weight:700}.dcw-act b i[data-v-2eb2660e]{opacity:.75;margin-left:2px;font-size:8.5px;font-style:normal;font-weight:500}.dcw-act-at[data-v-2eb2660e]{color:var(--hud-faint);font-size:8px;font-style:normal}.dcw-win[data-v-2eb2660e]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-faint);letter-spacing:.04em;font-size:8.5px}.dcw-win span[data-v-2eb2660e]{border-bottom:1px dotted var(--hud-line);padding-bottom:1px}.dcw-ctrl[data-v-2eb2660e]{align-items:center;gap:4px;display:flex}.dcw-ctrl .ctrl-input[data-v-2eb2660e]{flex:1;width:auto;min-width:0}.dcw-send[data-v-2eb2660e]{color:var(--hud-amber,#f6c453);border-color:#f0a04c80;flex:none}.dcw-send[data-v-2eb2660e]:hover:not(:disabled){color:var(--hud-amber,#f6c453);border-color:var(--hud-amber,#f6c453);background:#f0a04c1f}.dcw-err[data-v-2eb2660e]{font-family:var(--font-mono);color:var(--hud-danger,#ff6b5c);font-size:8.5px}.ctrl-btn[data-v-2eb2660e]{letter-spacing:.06em;font-size:9px;font-weight:600;font-family:var(--font-mono);color:var(--hud-text);border:1px solid var(--hud-line);cursor:pointer;background:0 0;border-radius:2px;padding:3px 7px;transition:border-color .14s,color .14s,background .14s}.ctrl-btn[data-v-2eb2660e]:hover:not(:disabled){border-color:var(--hud-accent);color:var(--hud-accent)}.ctrl-btn[data-v-2eb2660e]:disabled{opacity:.45;cursor:default}.ctrl-input[data-v-2eb2660e]{width:48px;font-family:var(--font-mono);border:1px solid var(--hud-line);background:var(--hud-input);color:var(--hud-text);font-variant-numeric:tabular-nums;border-radius:2px;padding:3px 6px;font-size:10px}.ctrl-input[data-v-2eb2660e]:focus{border-color:var(--hud-accent);outline:none}.twin-err[data-v-2eb2660e]{color:var(--hud-danger);padding:0 10px 8px;font-size:9.5px}.town-view[data-v-5b974b95]{--hud-bg:#070b13;--hud-panel:#0d1420;--hud-panel-2:#111a2b;--hud-panel-raised:#152034;--hud-panel-hover:#16233a;--hud-line:#1d2a42;--hud-line-soft:#16202f;--hud-line-hi:#2c4568;--hud-input:#0a111d;--hud-text:#e8eef8;--hud-dim:#8fa0b5;--hud-faint:#5f6e84;--hud-accent:#35e0a0;--hud-accent-dim:#1f9e6e;--hud-cyan:#41c8f4;--hud-amber:#f6c453;--hud-ok:#35e0a0;--hud-danger:#ff6b6b;--hud-shadow:0 16px 40px #0000008c;--hud-ease:cubic-bezier(.22, .68, .36, 1);--hud-r-sm:8px;--hud-r-md:10px;--hud-r-lg:12px;background:var(--hud-bg);height:100%;min-height:0;color:var(--hud-text);font-family:var(--font-body);flex-direction:column;font-size:13px;display:flex}.topnav[data-v-5b974b95]{border-bottom:1px solid var(--hud-line-soft);z-index:60;background:linear-gradient(#0c1320,#0a101b);flex:none;align-items:center;gap:14px;height:50px;padding:0 16px;display:flex;position:relative}.topnav[data-v-5b974b95]:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000 4%,#35e0a059 50%,#0000 96%);height:1px;position:absolute;bottom:-1px;left:0;right:0}.brand[data-v-5b974b95]{align-items:center;gap:10px;min-width:230px;display:flex}.brand-glyph[data-v-5b974b95]{flex:none;width:26px;height:26px}.brand-name[data-v-5b974b95]{letter-spacing:.06em;font-size:14.5px;font-weight:800}.brand-name em[data-v-5b974b95]{color:var(--hud-accent);font-style:normal}.brand-sub[data-v-5b974b95]{color:var(--hud-faint);letter-spacing:.18em;margin-top:2px;font-size:10px}.nav-tabs[data-v-5b974b95]{align-items:center;gap:10px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.nav-action[data-v-5b974b95]{border-radius:var(--hud-r-sm);height:32px;color:var(--hud-text);transition:background .15s var(--hud-ease), border-color .15s var(--hud-ease);background:0 0;border:1px solid #27395c;padding:0 14px;font-size:12px;font-weight:600}.nav-action[data-v-5b974b95]:hover{background:#14203a;border-color:#33507c}.save-chip[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.08em;border:1px solid var(--hud-line);color:var(--hud-dim);white-space:nowrap;border-radius:6px;padding:3px 9px;font-size:10px}.save-chip.s-dirty[data-v-5b974b95]{color:var(--hud-amber);border-color:#f6c45366}.save-chip.s-saving[data-v-5b974b95]{color:var(--hud-dim)}.save-chip.s-saved[data-v-5b974b95]{color:var(--hud-accent);border-color:#35e0a066}.save-chip.s-error[data-v-5b974b95]{color:var(--hud-danger);border-color:#ff6b6b66}.nav-right[data-v-5b974b95]{align-items:center;gap:10px;margin-left:auto;display:flex}.nav-chip[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-dim);border:1px solid var(--hud-line);font-variant-numeric:tabular-nums;border-radius:6px;padding:2px 8px;font-size:10.5px}.avatar-chip[data-v-5b974b95]{border:1px solid var(--hud-line-soft);background:#0e1626;border-radius:999px;align-items:center;gap:8px;padding:4px 10px 4px 4px;display:flex}.avatar-chip span[data-v-5b974b95]{color:var(--hud-text);font-size:12px}.avatar-fallback[data-v-5b974b95]{color:#04120c;background:linear-gradient(135deg,#1f9e6e,#41c8f4);border-radius:50%;place-items:center;width:24px;height:24px;font-size:10px;font-weight:700;display:grid}.seg[data-v-5b974b95]{border:1px solid var(--hud-line);border-radius:var(--hud-r-sm);background:#0a111d;padding:2px;display:inline-flex}.seg button[data-v-5b974b95]{color:var(--hud-dim);transition:background .15s var(--hud-ease), color .15s var(--hud-ease);border-radius:6px;padding:4px 16px;font-size:11.5px;font-weight:600}.seg button.on[data-v-5b974b95]{background:var(--hud-accent);color:#04120c;box-shadow:0 0 12px #35e0a059}.app[data-v-5b974b95]{flex:1;grid-template-columns:250px minmax(540px,1fr) 342px;min-height:0;display:grid}.rail[data-v-5b974b95]{background:linear-gradient(#0a101c,#080d16);flex-direction:column;gap:10px;min-height:0;padding:10px;display:flex;overflow:hidden auto}.rail-left[data-v-5b974b95]{border-right:1px solid var(--hud-line-soft)}.rail-right[data-v-5b974b95]{border-left:1px solid var(--hud-line-soft)}.rail[data-v-5b974b95]::-webkit-scrollbar{width:8px}.rail[data-v-5b974b95]::-webkit-scrollbar-thumb{background:#1c2942;border:2px solid #080d16;border-radius:4px}.rail[data-v-5b974b95]::-webkit-scrollbar-track{background:0 0}.ins-enter-active[data-v-5b974b95]{transition:opacity .2s var(--hud-ease), transform .2s var(--hud-ease)}.ins-leave-active[data-v-5b974b95]{transition:opacity .12s}.ins-enter-from[data-v-5b974b95]{opacity:0;transform:translate(12px)}.ins-leave-to[data-v-5b974b95]{opacity:0}.panel[data-v-5b974b95]{border:1px solid var(--hud-line);border-radius:var(--hud-r-lg);background:linear-gradient(#101827,#0d1420);flex:none;padding:12px;position:relative;box-shadow:inset 0 1px #8fb0dc12,0 10px 28px #03070e73}.panel[data-v-5b974b95]:before{content:"";border-radius:var(--hud-r-lg) var(--hud-r-lg) 0 0;pointer-events:none;background:linear-gradient(#78a5dc0e,#0000);height:44px;position:absolute;inset:0 0 auto}.panel-hd[data-v-5b974b95]{align-items:center;gap:8px;margin-bottom:10px;display:flex}.panel-hd h3[data-v-5b974b95]{letter-spacing:.02em;flex:1;margin:0;padding-left:11px;font-size:12.5px;font-weight:700;position:relative}.panel-hd h3[data-v-5b974b95]:before{content:"";background:var(--hud-accent);width:3px;height:12px;box-shadow:0 0 8px color-mix(in srgb, var(--hud-accent) 45%, transparent);border-radius:2px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.panel-tag[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-cyan);background:#41c8f41a;border:1px solid #41c8f440;border-radius:6px;padding:0 6px;font-size:9.5px;line-height:15px}.lib-embed[data-v-5b974b95]{margin:-4px 0 0}.daq-list[data-v-5b974b95],.scene-list[data-v-5b974b95]{flex-direction:column;gap:4px;display:flex}.daq-card[data-v-5b974b95]{border-radius:var(--hud-r-md);background:var(--hud-panel-2);cursor:grab;transition:transform .15s var(--hud-ease), border-color .15s var(--hud-ease), background .15s var(--hud-ease);border:1px solid #1f4a3a8c;align-items:center;gap:10px;margin-bottom:4px;padding:8px 9px;display:flex}.daq-card[data-v-5b974b95]:hover{background:#12291f;border-color:#35e0a080;transform:translateY(-1px)}.daq-card[data-v-5b974b95]:active{cursor:grabbing}.daq-ico[data-v-5b974b95]{width:34px;height:34px;color:var(--hud-accent);background:linear-gradient(160deg,#12291f,#0e1a24);border:1px solid #1f4a3aa6;border-radius:9px;flex:none;place-items:center;display:grid}.daq-svg[data-v-5b974b95]{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.daq-meta[data-v-5b974b95]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.daq-name[data-v-5b974b95]{color:var(--hud-text);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.daq-code[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-faint);font-size:9px}.daq-count[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-accent);background:#35e0a01a;border:1px solid #35e0a047;border-radius:6px;flex:none;padding:0 6px;font-size:9px;line-height:15px}.daq-group[data-v-5b974b95]{flex-direction:column;display:flex}.daq-card.tpl[data-v-5b974b95]{cursor:pointer;-webkit-user-select:none;user-select:none;margin-bottom:0}.daq-card.tpl[data-v-5b974b95]:active{cursor:pointer}.daq-card.tpl[data-v-5b974b95]:focus-visible{outline:1px solid var(--hud-accent);outline-offset:1px}.daq-caret[data-v-5b974b95]{color:var(--hud-faint);transition:transform .15s var(--hud-ease);flex:none;font-size:8px}.daq-card.tpl.open .daq-caret[data-v-5b974b95]{transform:rotate(90deg)}.daq-card.tpl[data-v-5b974b95]:hover{transform:none}.daq-add[data-v-5b974b95]{width:18px;height:18px;color:var(--hud-faint);cursor:pointer;opacity:0;transition:opacity .15s var(--hud-ease), color .15s var(--hud-ease), border-color .15s var(--hud-ease), transform .16s cubic-bezier(.22, 1, .36, 1);background:0 0;border:1px solid #2c4568b3;border-radius:6px;flex:none;place-items:center;font-size:12px;line-height:1;display:grid}.daq-card.tpl:focus-within .daq-add[data-v-5b974b95],.daq-card.tpl:hover .daq-add[data-v-5b974b95]{opacity:1}@media (hover:none){.daq-add[data-v-5b974b95]{opacity:1}}.daq-add[data-v-5b974b95]:hover{color:var(--hud-accent);border-color:#35e0a080}.daq-add[data-v-5b974b95]:active{transform:scale(.9)}.daq-children[data-v-5b974b95]{animation:daq-tree-in-5b974b95 .16s var(--hud-ease);flex-direction:column;gap:2px;margin:2px 0 6px;padding-left:16px;display:flex}@keyframes daq-tree-in-5b974b95{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.daq-node[data-v-5b974b95]{cursor:default;transition:background .15s var(--hud-ease), border-color .15s var(--hud-ease), transform .16s cubic-bezier(.22, 1, .36, 1);border:1px solid #0000;border-radius:7px;align-items:center;gap:8px;padding:5px 8px;display:flex}.daq-node[data-v-5b974b95]:hover{background:#111b2c;border-color:#2c456899}.daq-node[draggable=true][data-v-5b974b95]{cursor:grab}.daq-node[draggable=true][data-v-5b974b95]:active{cursor:grabbing;transform:scale(.98)}.daq-node.placed[data-v-5b974b95]{cursor:pointer}.daq-node.placed[draggable=true][data-v-5b974b95]{cursor:grab}.node-dot[data-v-5b974b95]{background:var(--hud-ok);width:7px;height:7px;box-shadow:0 0 6px color-mix(in srgb, var(--hud-ok) 50%, transparent);border-radius:50%;flex:none}.node-dot.offline[data-v-5b974b95]{border:1px solid var(--hud-faint);box-shadow:none;background:0 0}.node-dot.warn[data-v-5b974b95]{background:var(--hud-amber);box-shadow:0 0 6px color-mix(in srgb, var(--hud-amber) 50%, transparent)}.node-dot.alarm[data-v-5b974b95]{background:var(--hud-danger);box-shadow:0 0 6px color-mix(in srgb, var(--hud-danger) 60%, transparent)}.daq-node .daq-name[data-v-5b974b95]{font-size:11.5px;font-weight:500}.daq-node-sub[data-v-5b974b95]{align-items:baseline;gap:7px;min-width:0;display:flex}.node-val[data-v-5b974b95]{color:var(--hud-cyan);flex:none;font-size:10px}.node-dev[data-v-5b974b95]{color:var(--hud-faint);white-space:nowrap;text-overflow:ellipsis;max-width:104px;font-size:9.5px;overflow:hidden}.daq-empty-hint[data-v-5b974b95]{color:var(--hud-faint);padding:4px 8px 6px 10px;font-size:10px}.scene-row[data-v-5b974b95]{border-radius:var(--hud-r-md);cursor:grab;transition:background .15s var(--hud-ease), border-color .15s var(--hud-ease);border:1px solid #0000;align-items:center;gap:10px;margin-bottom:4px;padding:8px 9px;display:flex}.scene-row[data-v-5b974b95]:hover{background:#111b2c}.scene-row.active[data-v-5b974b95]{background:#35e0a00f;border-color:#35e0a059}.scene-row[data-v-5b974b95]:active{cursor:grabbing}.scene-ico[data-v-5b974b95]{background:color-mix(in srgb, var(--ch,var(--hud-accent)) 16%, #101a2c);border:1px solid color-mix(in srgb, var(--ch,var(--hud-accent)) 45%, transparent);border-radius:8px;flex:none;width:30px;height:30px}.scene-row.active .scene-ico[data-v-5b974b95]{box-shadow:0 0 10px color-mix(in srgb, var(--ch,var(--hud-accent)) 40%, transparent)}.scene-meta-wrap[data-v-5b974b95]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.scene-name[data-v-5b974b95]{color:var(--hud-text);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.scene-meta[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-faint);font-size:9px}.scene-add[data-v-5b974b95],.scene-cur[data-v-5b974b95]{border-radius:6px;flex:none;margin-left:auto;padding:1px 7px;font-size:10px}.scene-cur[data-v-5b974b95]{color:var(--hud-accent);border:1px solid #35e0a066}.scene-add[data-v-5b974b95]{color:var(--hud-dim);border:1px solid var(--hud-line)}.scene-hint[data-v-5b974b95]{color:var(--hud-amber);padding:6px 4px 0;font-size:10px;line-height:1.5}.stage-col[data-v-5b974b95]{flex-direction:column;min-width:0;min-height:0;display:flex}.stage[data-v-5b974b95]{background:#060a11;flex:1;min-height:320px;position:relative;overflow:hidden}.stage[data-v-5b974b95]:fullscreen{border-radius:0}.town-host[data-v-5b974b95]{position:absolute;inset:0}.town-host canvas[data-v-5b974b95]{image-rendering:auto;display:block}.stage-vignette[data-v-5b974b95]{pointer-events:none;z-index:3;background:radial-gradient(120% 90% at 50% 38%,#0000 52%,#02040980 100%),linear-gradient(#080d1852,#0000 18%),repeating-linear-gradient(0deg,#ffffff03 0 1px,#0000 1px 3px);position:absolute;inset:0}.stage-top[data-v-5b974b95]{z-index:6;pointer-events:none;justify-content:space-between;align-items:flex-start;padding:14px 16px;display:flex;position:absolute;top:0;left:0;right:0}.stage-top[data-v-5b974b95]>*{pointer-events:auto}.vp-title[data-v-5b974b95]{border-radius:var(--hud-r-md);-webkit-backdrop-filter:blur(8px);background:#090e18b8;border:1px solid #1c2942;align-items:center;gap:10px;padding:8px 12px;display:flex}.vp-title h2[data-v-5b974b95]{letter-spacing:.02em;margin:0;font-size:15px;font-weight:700}.vp-id[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.04em;color:var(--hud-dim);white-space:nowrap;background:#0a111d99;border:1px solid #223050;border-radius:6px;padding:1px 8px;font-size:10px}.vp-tools[data-v-5b974b95]{align-items:center;gap:8px;display:flex}.vp-tool[data-v-5b974b95]{width:34px;height:34px;color:var(--hud-dim);-webkit-backdrop-filter:blur(8px);transition:color .15s var(--hud-ease), border-color .15s var(--hud-ease), background .15s var(--hud-ease);background:#0d1420d9;border:1px solid #223050;border-radius:50%;place-items:center;font-size:12px;font-weight:600;display:grid}.vp-tool[data-v-5b974b95]:hover{color:var(--hud-text);border-color:#33507c}.vp-tool.on[data-v-5b974b95]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent);box-shadow:0 0 12px #35e0a04d}.vp-svg[data-v-5b974b95]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.leaders[data-v-5b974b95]{z-index:7;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.angle-chip[data-v-5b974b95]{z-index:6;border-radius:var(--hud-r-sm);-webkit-backdrop-filter:blur(8px);color:var(--hud-dim);background:#090e18c7;border:1px solid #1c2942;align-items:center;gap:6px;padding:5px 8px;font-size:11.5px;display:flex;position:absolute;top:64px;left:16px}.angle-chip select[data-v-5b974b95]{color:var(--hud-text);cursor:pointer;background:0 0;border:0;font-size:11.5px;font-weight:600}.angle-chip select option[data-v-5b974b95]{background:#0e1626}.callout-layer[data-v-5b974b95]{z-index:7;pointer-events:none;position:absolute;inset:0;overflow:hidden}.callout[data-v-5b974b95]{opacity:0;pointer-events:none;border-radius:var(--hud-r-md);min-width:150px;box-shadow:var(--hud-shadow);-webkit-backdrop-filter:blur(8px);transition:opacity .22s var(--hud-ease), transform .22s var(--hud-ease), border-color .15s var(--hud-ease);background:linear-gradient(#101a2bf0,#0a101cf0);border:1px solid #41c8f466;padding:9px 12px 8px;position:absolute;transform:translate(-50%,-112%)translateY(5px)}.callout.near[data-v-5b974b95]{opacity:1;pointer-events:auto;transform:translate(-50%,-112%)}.leaders g[data-v-5b974b95]{opacity:0;transition:opacity .22s var(--hud-ease)}.leaders g.near[data-v-5b974b95]{opacity:1}.callout.warn[data-v-5b974b95]{border-color:#f6c45399}.co-label[data-v-5b974b95]{color:var(--hud-dim);white-space:nowrap;align-items:center;gap:6px;font-size:10.5px;display:flex}.co-dot[data-v-5b974b95]{background:var(--hud-cyan);border-radius:50%;flex:none;width:6px;height:6px;box-shadow:0 0 8px #41c8f4e6}.callout.warn .co-dot[data-v-5b974b95]{background:var(--hud-amber);box-shadow:0 0 8px #f6c453e6}.co-val[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:-.01em;color:var(--hud-text);font-variant-numeric:tabular-nums;margin-top:2px;font-size:21px;font-weight:700}.co-val small[data-v-5b974b95]{color:var(--hud-dim);margin-left:3px;font-size:10.5px;font-weight:500}.co-range[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-faint);margin-top:1px;font-size:9.5px}.callout.warn .co-range[data-v-5b974b95]{color:var(--hud-amber)}.kpi-strip[data-v-5b974b95]{z-index:6;pointer-events:none;flex-wrap:wrap;justify-content:center;gap:10px;padding:0 16px;display:flex;position:absolute;bottom:12px;left:0;right:0}.kpi[data-v-5b974b95]{pointer-events:auto;border-radius:var(--hud-r-md);-webkit-backdrop-filter:blur(8px);transition:border-color .2s var(--hud-ease), transform .2s var(--hud-ease), box-shadow .2s var(--hud-ease);background:linear-gradient(#141e30eb,#0c1320e6);border:1px solid #1e2c46;align-items:center;gap:10px;padding:8px 14px;display:flex;box-shadow:inset 0 1px #8fb0dc14,0 8px 20px #03070e66}.kpi[data-v-5b974b95]:hover{border-color:#2c4568;transform:translateY(-1px);box-shadow:inset 0 1px #8fb0dc1a,0 12px 26px #03070e80}.kpi-ico[data-v-5b974b95]{border-radius:8px;flex:none;place-items:center;width:30px;height:30px;font-size:12px;font-weight:700;display:grid}.kpi-ico.c1[data-v-5b974b95]{color:var(--hud-cyan);background:#41c8f41f}.kpi-ico.c2[data-v-5b974b95]{color:var(--hud-accent);background:#35e0a01f}.kpi-ico.c3[data-v-5b974b95]{color:var(--hud-amber);background:#f6c4531f}.kpi-ico.c4[data-v-5b974b95]{color:#a78bfa;background:#a78bfa24}.kpi-ico.c5[data-v-5b974b95]{color:var(--hud-danger);background:#ff6b6b1f}.kpi-svg[data-v-5b974b95]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.kpi-meta[data-v-5b974b95]{line-height:1.25}.kpi-label[data-v-5b974b95]{color:var(--hud-dim);letter-spacing:.08em;text-transform:uppercase;font-size:10px}.kpi-val[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:19px;font-weight:700}.kpi-val small[data-v-5b974b95]{color:var(--hud-faint);margin-left:2px;font-size:10px;font-weight:500}.empty-hint[data-v-5b974b95]{z-index:4;text-align:center;color:var(--hud-dim);pointer-events:none;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}.empty-hint b[data-v-5b974b95]{color:var(--hud-text);margin-bottom:4px;font-size:14px;display:block}.empty-hint span[data-v-5b974b95]{font-size:12px}@media (prefers-reduced-motion:no-preference){.dock[data-v-5b974b95],.rail-left[data-v-5b974b95],.rail-right[data-v-5b974b95]{animation:.52s cubic-bezier(.22,.68,.36,1) backwards hud-boot-5b974b95}.rail-left[data-v-5b974b95]{animation-delay:40ms}.rail-right[data-v-5b974b95]{animation-delay:.15s}.dock[data-v-5b974b95]{animation-delay:.26s}}@keyframes hud-boot-5b974b95{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.dock[data-v-5b974b95]{border-top:1px solid var(--hud-line-soft);background:#080d16;flex:none;grid-template-columns:308px 1fr;gap:10px;padding:10px;display:grid}.dock-card[data-v-5b974b95]{border:1px solid var(--hud-line);border-radius:var(--hud-r-lg);background:linear-gradient(#101827,#0d1420);flex-direction:column;min-height:178px;padding:12px 14px;display:flex}.dock-hd[data-v-5b974b95]{align-items:center;gap:8px;margin-bottom:10px;display:flex}.dock-hd h3[data-v-5b974b95]{flex:none;margin:0;font-size:12.5px;font-weight:700}.dock-count[data-v-5b974b95]{letter-spacing:.08em;color:var(--hud-dim);border:1px solid var(--hud-line-soft);border-radius:6px;flex:none;padding:1px 7px;font-size:9.5px}.dock-mode[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-faint);border:1px solid var(--hud-line);border-radius:6px;margin-left:auto;padding:1px 7px;font-size:9px}.ctl-row[data-v-5b974b95]{align-items:center;gap:10px;margin-bottom:9px;display:flex}.ctl-sec[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--hud-faint);border-top:1px solid var(--hud-line-soft);margin:2px 0 7px;padding-top:7px;font-size:8.5px;font-weight:600}.ctl-sec[data-v-5b974b95]:first-of-type{border-top:0;margin-top:0;padding-top:0}.ctl-name[data-v-5b974b95]{color:var(--hud-dim);flex:none;width:64px;font-size:11.5px}.ctl-val[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-text);text-align:right;font-variant-numeric:tabular-nums;flex:none;width:38px;font-size:11px}.ctl-range[data-v-5b974b95]{appearance:none;background:linear-gradient(90deg, var(--hud-accent-dim) var(--fill,50%), #1d2a42 var(--fill,50%));cursor:pointer;border-radius:2px;flex:1;height:4px}.ctl-range[data-v-5b974b95]::-webkit-slider-thumb{-webkit-appearance:none;border:2.5px solid var(--hud-accent);width:13px;height:13px;-webkit-transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);background:#fff;border-radius:50%;box-shadow:0 1px 4px #00000080}.ctl-range[data-v-5b974b95]:hover::-webkit-slider-thumb{transform:scale(1.18);box-shadow:0 0 0 5px #35e0a01f,0 1px 4px #00000080}.ctl-range[data-v-5b974b95]:active::-webkit-slider-thumb{transform:scale(1.05)}.bp-range[data-v-5b974b95]{accent-color:var(--hud-accent)}.snap-toggle[data-v-5b974b95]{height:22px;color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;border-radius:6px;flex:1;font-size:10.5px;font-weight:600}.snap-toggle.on[data-v-5b974b95]{color:var(--hud-accent);background:#35e0a014;border-color:#35e0a066}.fps-seg[data-v-5b974b95]{flex:1;gap:4px;display:flex}.fps-seg button[data-v-5b974b95]{height:22px;font-family:var(--font-mono);color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;transition:border-color .14s var(--hud-ease), color .14s var(--hud-ease), background .14s var(--hud-ease);border-radius:6px;flex:1;font-size:10.5px;font-weight:600}.fps-seg button[data-v-5b974b95]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.fps-seg button.on[data-v-5b974b95]{color:var(--hud-accent);background:#35e0a014;border-color:#35e0a066}.ctl-btns[data-v-5b974b95]{gap:8px;margin-top:auto;display:flex}.btn[data-v-5b974b95]{border-radius:var(--hud-r-sm);white-space:nowrap;cursor:pointer;height:32px;transition:filter .15s var(--hud-ease), background .15s var(--hud-ease), border-color .15s var(--hud-ease);background:0 0;flex:1;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.btn-primary[data-v-5b974b95]{background:var(--hud-accent-dim);color:#04120c}.btn-primary[data-v-5b974b95]:hover{background:#25b57e}.btn-ghost[data-v-5b974b95]{color:var(--hud-text);border:1px solid #27395c}.btn-ghost[data-v-5b974b95]:hover{background:#14203a;border-color:#33507c}.btn-danger[data-v-5b974b95]{color:#fff;background:#b3273a}.btn-danger[data-v-5b974b95]:hover{background:#d1304a}.btn[data-v-5b974b95]:not(:disabled):active{transform:translateY(1px)}.bind-select[data-v-5b974b95]:disabled,.btn[data-v-5b974b95]:disabled,.nav-action[data-v-5b974b95]:disabled,.obj-input[data-v-5b974b95]:disabled,.obj-mini[data-v-5b974b95]:disabled,.obj-select[data-v-5b974b95]:disabled{opacity:.38;cursor:not-allowed;filter:saturate(.4)}.btn[data-v-5b974b95]:disabled:hover,.nav-action[data-v-5b974b95]:disabled:hover{background:inherit}.trend-legend[data-v-5b974b95]{scrollbar-width:thin;scrollbar-color:#1c2942 transparent;flex-wrap:wrap;flex:auto;align-content:flex-start;gap:5px;min-width:0;max-height:47px;margin-left:6px;transition:max-height .24s cubic-bezier(.22,.68,.36,1);display:flex;overflow-y:auto}.trend-legend.expanded[data-v-5b974b95]{max-height:100px}.trend-legend[data-v-5b974b95]::-webkit-scrollbar{width:6px}.trend-legend[data-v-5b974b95]::-webkit-scrollbar-thumb{background:#1c2942;border-radius:3px}.trend-legend[data-v-5b974b95]::-webkit-scrollbar-track{background:0 0}.lg-chip[data-v-5b974b95]{color:var(--hud-dim);border:1px solid var(--hud-line-soft);cursor:pointer;transition:opacity .15s var(--hud-ease), border-color .15s var(--hud-ease), color .15s var(--hud-ease);background:#0d142099;border-radius:6px;align-items:center;gap:5px;padding:2px 8px;font-size:10.5px;display:flex}.lg-chip[data-v-5b974b95]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.lg-chip.off[data-v-5b974b95]{opacity:.32}.lg-more[data-v-5b974b95]{letter-spacing:.04em;color:var(--hud-faint);border-style:dashed;font-size:10px}.lg-more[data-v-5b974b95]:hover{color:var(--hud-accent);border-color:#35e0a066}.lg-dot[data-v-5b974b95]{border-radius:2px;width:7px;height:7px}.trend-wrap[data-v-5b974b95]{flex:1;min-height:0;position:relative}.trend-cv[data-v-5b974b95]{width:100%;height:100%;position:absolute;inset:0}.trend-empty[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-faint);place-content:center;font-size:10.5px;display:grid;position:absolute;inset:0}.inspector[data-v-5b974b95]{animation:rise-5b974b95 .18s var(--hud-ease)}@keyframes rise-5b974b95{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.ins-chip-row[data-v-5b974b95]{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.ins-chip[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-dim);border:1px solid #26354a;border-radius:6px;padding:1.5px 7px;font-size:9.5px}.ins-chip.accent[data-v-5b974b95]{color:var(--hud-accent);border-color:#35e0a066}.sect-hd[data-v-5b974b95]{color:var(--hud-faint);letter-spacing:.16em;align-items:center;gap:6px;margin:10px 0 7px;font-size:10px;font-weight:700;display:flex}.sect-hd[data-v-5b974b95]:before{content:"";background:var(--hud-accent);opacity:.55;border-radius:1px;width:3px;height:9px}.obj-row[data-v-5b974b95]{align-items:center;gap:8px;margin-bottom:8px;display:flex}.obj-label[data-v-5b974b95]{width:52px;color:var(--hud-dim);flex:none;font-size:10.5px}.obj-input[data-v-5b974b95],.obj-select[data-v-5b974b95]{min-width:0;color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);transition:border-color .15s var(--hud-ease);border-radius:7px;flex:1;padding:5px 8px;font-size:11.5px}.obj-input[data-v-5b974b95]:focus,.obj-select[data-v-5b974b95]:focus{border-color:var(--hud-accent);outline:none}.obj-sep[data-v-5b974b95]{background:var(--hud-line-soft);height:1px;margin:8px 0}.range-status[data-v-5b974b95]{min-width:0;color:var(--hud-faint);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:10px;overflow:hidden}.obj-mini[data-v-5b974b95]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;border-radius:7px;flex:none;padding:4px 10px;font-size:10.5px;font-weight:600}.obj-mini.on[data-v-5b974b95]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.obj-mini.danger[data-v-5b974b95]{color:var(--hud-danger);width:100%;margin-top:4px}.obj-range[data-v-5b974b95]{accent-color:var(--hud-accent);flex:1}.bp-val[data-v-5b974b95]{text-align:right;width:40px;font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;flex:none;font-size:10.5px}.bp-seg[data-v-5b974b95]{gap:4px;display:flex}.seg-btn[data-v-5b974b95]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;transition:border-color .14s var(--hud-ease), color .14s var(--hud-ease), background .14s var(--hud-ease);border-radius:7px;padding:4px 12px;font-size:10.5px;font-weight:600}.seg-btn[data-v-5b974b95]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.seg-btn.on[data-v-5b974b95]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.xz-seg[data-v-5b974b95]{gap:6px;margin-bottom:8px;display:flex}.xz-seg .seg-btn[data-v-5b974b95]{flex:1}.scale-row[data-v-5b974b95]{align-items:center;gap:8px;display:flex}.scale-max[data-v-5b974b95],.scale-min[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-faint);font-size:9px}.scale-range[data-v-5b974b95]{accent-color:var(--hud-accent);flex:1}.scale-val[data-v-5b974b95]{text-align:center;font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;margin-bottom:4px;font-size:11px}.ins-foot[data-v-5b974b95]{gap:8px;margin-top:12px;display:flex}.ins-del[data-v-5b974b95]{color:var(--hud-danger);background:#ff6b6b1a;border:1px solid #ff6b6b66}.ins-del.armed[data-v-5b974b95]{background:var(--hud-danger);color:#fff}.ins-empty[data-v-5b974b95]{color:var(--hud-faint);text-align:center;padding:8px 0 6px;font-size:11px}.health-body[data-v-5b974b95]{align-items:center;gap:14px;display:flex}.donut-wrap[data-v-5b974b95]{flex:none;width:118px;height:118px;position:relative}.donut-wrap canvas[data-v-5b974b95]{width:118px;height:118px}.donut-center[data-v-5b974b95]{text-align:center;place-content:center;display:grid;position:absolute;inset:0}.donut-center b[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-accent);font-size:21px;font-weight:700}.donut-center span[data-v-5b974b95]{color:var(--hud-faint);font-size:9.5px}.health-legend[data-v-5b974b95]{flex-direction:column;flex:1;gap:8px;display:flex}.hl-row[data-v-5b974b95]{align-items:center;gap:7px;font-size:11.5px;display:flex}.hl-dot[data-v-5b974b95]{border-radius:50%;flex:none;width:7px;height:7px}.hl-row .n[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-text);margin-left:auto;font-size:13px;font-weight:700}.event-list[data-v-5b974b95]{flex-direction:column;flex:1;min-height:0;max-height:200px;display:flex;overflow:hidden auto}.event-row[data-v-5b974b95]{transition:background .13s var(--hud-ease);border-radius:7px;align-items:center;gap:7px;padding:4px 6px;display:flex}.event-row[data-v-5b974b95]:hover{background:#35e0a00d}.ev-time[data-v-5b974b95]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-faint);flex:none;font-size:9px}.ev-name[data-v-5b974b95]{text-overflow:ellipsis;white-space:nowrap;max-width:70px;font-family:var(--font-mono);color:var(--hud-text);flex:none;font-size:10px;font-weight:600;overflow:hidden}.ev-text[data-v-5b974b95]{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hud-dim);flex:1;font-size:10.5px;overflow:hidden}.event-empty[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-faint);text-align:center;padding:12px;font-size:9.5px}.rail-empty[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-faint);text-align:center;flex-direction:column;align-items:center;gap:7px;padding:16px 10px 13px;font-size:9.5px;display:flex}.rail-empty .re-ico[data-v-5b974b95]{fill:none;width:19px;height:19px;stroke:var(--hud-faint);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;opacity:.85}.mm-body[data-v-5b974b95]{align-items:stretch;gap:8px;display:flex}.mm-wrap[data-v-5b974b95]{border-radius:var(--hud-r-md);background:#060b13;border:1px solid #223050;flex:1;min-height:148px;position:relative;overflow:hidden}.mini-svg[data-v-5b974b95]{cursor:crosshair;width:100%;height:100%;position:absolute;inset:0}.nav-cv[data-v-5b974b95]{cursor:crosshair;touch-action:none;width:100%;height:100%;position:absolute;inset:0}.alarm-list[data-v-5b974b95]{flex-direction:column;display:flex}.al-row[data-v-5b974b95]{border-radius:var(--hud-r-md);align-items:flex-start;gap:9px;padding:9px 8px;transition:background .15s;display:flex}.al-row[data-v-5b974b95]:hover{background:#101a2c}.al-ico[data-v-5b974b95]{border-radius:8px;flex:none;place-items:center;width:28px;height:28px;display:grid}.al-ico.crit[data-v-5b974b95]{color:var(--hud-danger);background:#ff6b6b1f}.al-ico.warn[data-v-5b974b95]{color:var(--hud-amber);background:#f6c4531f}.al-ico.info[data-v-5b974b95]{color:var(--hud-cyan);background:#41c8f41f}.al-svg[data-v-5b974b95]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.al-body[data-v-5b974b95]{flex:1;min-width:0}.al-txt[data-v-5b974b95]{color:var(--hud-text);font-size:12px;font-weight:500;line-height:1.35}.al-src[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-faint);margin-top:2px;font-size:9.5px}.al-state[data-v-5b974b95]{cursor:pointer;background:0 0;border:1px solid;border-radius:6px;flex:none;margin-top:2px;padding:2px 7px;font-size:9.5px;font-weight:600}.al-state.s0[data-v-5b974b95]{color:var(--hud-danger);background:#ff6b6b1a;border-color:#ff6b6b66}.al-state.s1[data-v-5b974b95]{color:var(--hud-amber);background:#f6c4531a;border-color:#f6c45359}.al-state.s2[data-v-5b974b95]{color:var(--hud-dim);background:#8fa0b514;border-color:#8fa0b54d}.nav-bell-warn[data-v-5b974b95]{color:var(--hud-danger);border-color:#ff6b6b80}.mm-col[data-v-5b974b95]{flex-direction:column;gap:6px;display:flex}.mm-col .vp-tool[data-v-5b974b95]{border-radius:8px;width:30px;height:30px}.mm-meta[data-v-5b974b95]{color:var(--hud-faint);letter-spacing:.08em;text-align:center;margin-top:8px;font-size:9.5px}.rpg-lines.chat-embed[data-v-5b974b95]{border:1px solid var(--hud-line-soft);border-radius:var(--hud-r-md);background:#0f172680;max-height:268px;padding:2px 0 4px}.chat-sect[data-v-5b974b95]{align-items:center;gap:8px;display:flex}.chat-sect .chat-refresh[data-v-5b974b95]{margin-left:auto}.chat-id-row[data-v-5b974b95]{align-items:center;gap:10px;margin-bottom:4px;display:flex}.chat-badge[data-v-5b974b95]{--p-acc:var(--hud-accent);width:34px;height:34px;font-family:var(--font-mono);color:var(--p-acc);background:color-mix(in srgb, var(--p-acc) 10%, transparent);border:1px solid color-mix(in srgb, var(--p-acc) 45%, transparent);border-radius:var(--hud-r-sm);flex:none;place-items:center;font-size:15px;font-weight:700;display:grid}.chat-nameplate[data-v-5b974b95]{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.chat-name[data-v-5b974b95]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:650;overflow:hidden}.chat-meta[data-v-5b974b95]{align-items:center;gap:6px;display:flex}.chat-state[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-dim);border:1px solid var(--hud-line);border-radius:6px;padding:1px 6px;font-size:8.5px}.chat-role[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.12em;border-radius:6px;padding:1px 7px;font-size:8.5px;font-weight:700}.chat-role.r-lead[data-v-5b974b95]{color:var(--hud-amber);background:#f6c4531a;border:1px solid #f6c45373}.chat-role.r-worker[data-v-5b974b95]{color:var(--hud-cyan);background:#41c8f41a;border:1px solid #41c8f466}.chat-state.s-busy[data-v-5b974b95]{color:var(--hud-amber);border-color:#f6c45380}.chat-state.s-stopped[data-v-5b974b95]{color:var(--hud-danger);border-color:#ff6b6b80}.chat-harness[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-faint);font-size:8.5px}.chat-count[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-faint);font-size:8.5px}.chat-refresh[data-v-5b974b95]{width:22px;height:22px;font-family:var(--font-mono);color:var(--hud-dim);border:1px solid var(--hud-line);cursor:pointer;transition:border-color .14s var(--hud-ease), color .14s var(--hud-ease), transform .32s var(--hud-ease);background:0 0;border-radius:6px;flex:none;font-size:11px}.chat-refresh[data-v-5b974b95]:hover{border-color:var(--hud-accent);color:var(--hud-accent)}.chat-refresh[data-v-5b974b95]:active{transform:rotate(180deg)}.rpg-lines[data-v-5b974b95]{flex-direction:column;flex:1;gap:7px;min-height:0;padding:10px 12px 12px;display:flex;overflow:hidden auto}.rpg-divider[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.2em;color:var(--hud-faint);margin:4px 0 2px;font-size:8.5px}.rpg-divider.live[data-v-5b974b95]{color:var(--hud-amber)}.rpg-line[data-v-5b974b95]{align-items:flex-start;gap:8px;display:flex}.rpg-time[data-v-5b974b95]{text-align:right;width:52px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-faint);flex:none;margin-top:5px;font-size:9px}.rpg-bubble[data-v-5b974b95]{background:var(--hud-panel-2);border:1px solid var(--hud-line);border-radius:var(--hud-r-md);flex-direction:column;flex:1;gap:2px;min-width:0;padding:7px 11px;display:flex}.rpg-line.hist[data-v-5b974b95]{opacity:.62}.rpg-line.live .rpg-bubble[data-v-5b974b95]{animation:rise-5b974b95 .26s var(--hud-ease) both;border-color:var(--hud-line-hi);background:#14213a}.rpg-kind[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.14em;color:var(--hud-faint);align-self:flex-start;font-size:8px}.rpg-kind.k-artifact[data-v-5b974b95]{color:var(--hud-accent)}.rpg-kind.k-error[data-v-5b974b95]{color:var(--hud-danger)}.rpg-text[data-v-5b974b95]{color:var(--hud-text);word-break:break-word;text-wrap:pretty;font-size:13px;line-height:1.6}.rpg-line.live .rpg-text[data-v-5b974b95]{color:#edf4fa}.rpg-typing[data-v-5b974b95]{align-items:center;gap:4px;padding:5px 2px;display:flex}.ty-dot[data-v-5b974b95]{background:var(--hud-amber);width:5px;height:5px;animation:ty-bounce-5b974b95 1.15s var(--hud-ease) infinite;border-radius:50%}.ty-dot[data-v-5b974b95]:nth-child(2){animation-delay:.15s}.ty-dot[data-v-5b974b95]:nth-child(3){animation-delay:.3s}.ty-label[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-faint);margin-left:5px;font-size:9px}.rpg-note[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-dim);text-align:center;padding:14px 0;font-size:10px}.boundary-panel[data-v-5b974b95]{z-index:9;border:1px solid var(--hud-line);border-radius:var(--hud-r-lg);width:302px;box-shadow:var(--hud-shadow);-webkit-backdrop-filter:blur(8px);pointer-events:auto;background:linear-gradient(#101827f7,#0d1420f7);flex-direction:column;gap:7px;padding:12px 14px;display:flex;position:absolute;top:84px;left:16px}.bp-title[data-v-5b974b95]{border-bottom:1px solid var(--hud-line);cursor:grab;touch-action:none;align-items:center;gap:8px;padding-bottom:8px;display:flex}.bp-title[data-v-5b974b95]:active{cursor:grabbing}.bp-name[data-v-5b974b95]{color:var(--hud-text);font-size:13px;font-weight:700}.bp-sub[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.12em;color:var(--hud-faint);font-size:8.5px}.bp-tabs[data-v-5b974b95]{gap:4px;margin-left:auto;display:flex}.bp-tab[data-v-5b974b95]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;border-radius:6px;padding:3px 10px;font-size:10px;font-weight:600}.bp-tab.on[data-v-5b974b95]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.bp-row[data-v-5b974b95]{align-items:center;gap:8px;display:flex}.bp-label[data-v-5b974b95]{width:52px;color:var(--hud-dim);flex:none;font-size:10.5px}.bp-range[data-v-5b974b95]{appearance:none;background:linear-gradient(90deg, var(--hud-accent-dim) var(--fill,50%), #1d2a42 var(--fill,50%));cursor:pointer;border-radius:2px;flex:1;height:4px}.bp-range[data-v-5b974b95]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--hud-accent);width:12px;height:12px;-webkit-transition:transform .15s var(--hud-ease);transition:transform .15s var(--hud-ease);background:#fff;border-radius:50%}.bp-range[data-v-5b974b95]:hover::-webkit-slider-thumb{transform:scale(1.15)}.bp-hint[data-v-5b974b95]{color:var(--hud-faint);font-size:10px;line-height:1.6}.bp-actions[data-v-5b974b95]{gap:6px;margin-top:4px;display:flex}.bp-btn[data-v-5b974b95]{color:var(--hud-text);border-radius:var(--hud-r-sm);cursor:pointer;background:0 0;border:1px solid #27395c;flex:1;padding:6px 10px;font-size:11px;font-weight:600}.bp-btn[data-v-5b974b95]:hover{background:#14203a;border-color:#33507c}.bp-btn.save[data-v-5b974b95]{color:#04120c;background:var(--hud-accent-dim);border-color:var(--hud-accent-dim)}.bp-btn.save[data-v-5b974b95]:hover{background:#25b57e}.bp-btn.danger[data-v-5b974b95]{color:var(--hud-danger);border-color:#ff6b6b66}.bp-btn.danger[data-v-5b974b95]:hover{background:#ff6b6b1a}.member-list[data-v-5b974b95]{flex-direction:column;gap:5px;max-height:220px;display:flex;overflow:hidden auto}.member-row[data-v-5b974b95]{background:var(--hud-panel-2);border:1px solid var(--hud-line-soft);border-radius:var(--hud-r-md);align-items:center;gap:8px;padding:6px 8px;display:flex}.member-ava[data-v-5b974b95]{width:24px;height:24px;font-family:var(--font-mono);color:var(--hud-text);background:var(--hud-panel-raised);border:1px solid var(--hud-line);border-radius:7px;flex:none;justify-content:center;align-items:center;font-size:10px;font-weight:700;display:inline-flex}.member-info[data-v-5b974b95]{flex-direction:column;flex:1;min-width:0;display:flex}.member-name[data-v-5b974b95]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.member-role[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-faint);font-size:8.5px}.member-role.r-lead[data-v-5b974b95]{color:var(--hud-amber)}.member-role.r-worker[data-v-5b974b95]{color:var(--hud-cyan)}.member-select[data-v-5b974b95]{min-width:0;color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:6px;flex:1;padding:3px 6px;font-size:10px}.drop-chip[data-v-5b974b95],.error-chip[data-v-5b974b95]{z-index:20;border-radius:var(--hud-r-md);box-shadow:var(--hud-shadow);-webkit-backdrop-filter:blur(8px);text-overflow:ellipsis;white-space:nowrap;background:#0e1626f5;border:1px solid #2a3d63;align-items:center;gap:8px;max-width:70%;padding:8px 14px;font-size:11.5px;display:flex;position:absolute;top:64px;left:50%;overflow:hidden;transform:translate(-50%)}.drop-chip[data-v-5b974b95]{color:var(--hud-accent)}.error-chip[data-v-5b974b95]{color:var(--hud-danger);border-color:#ff6b6b66}.bind-row[data-v-5b974b95]{border:1px solid var(--hud-line-soft);border-radius:var(--hud-r-md);background:#0f1726;align-items:center;gap:8px;margin-bottom:6px;padding:7px 9px;display:flex}.bind-ico[data-v-5b974b95]{width:26px;height:26px;color:var(--hud-accent);background:#0d1a26;border-radius:7px;flex:none;place-items:center;display:grid}.bind-svg[data-v-5b974b95]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.bind-meta[data-v-5b974b95]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.bind-label[data-v-5b974b95]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.bind-val[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-cyan);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.bind-val b[data-v-5b974b95]{font-size:11px;font-weight:700}.bind-spark[data-v-5b974b95]{flex:none;width:56px;height:20px}.bind-x[data-v-5b974b95]{width:22px;height:22px;color:var(--hud-faint);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none}.bind-x[data-v-5b974b95]:hover{color:var(--hud-danger);background:#ff6b6b1f}.bind-add-wrap[data-v-5b974b95]{position:relative}.bind-add[data-v-5b974b95]{width:100%;height:30px;color:var(--hud-dim);border-radius:var(--hud-r-sm);cursor:pointer;background:0 0;border:1px dashed #274064;font-size:11px;transition:border-color .15s,color .15s}.bind-add[data-v-5b974b95]:hover{border-color:var(--hud-accent-dim);color:var(--hud-accent)}.bind-pop[data-v-5b974b95]{z-index:30;overscroll-behavior:contain;border-radius:var(--hud-r-md);max-height:min(46vh,420px);box-shadow:var(--hud-shadow-pop,0 16px 40px #0000008c);background:#0e1626;border:1px solid #27395c;position:absolute;bottom:calc(100% + 4px);left:0;right:0;overflow:hidden auto}.bind-pop[data-v-5b974b95]::-webkit-scrollbar{width:8px}.bind-pop[data-v-5b974b95]::-webkit-scrollbar-thumb{background:#2c4568 padding-box content-box;border:2px solid #0000;border-radius:9999px}.bind-pop[data-v-5b974b95]::-webkit-scrollbar-thumb:hover{background:#3d5a85 padding-box content-box}.bind-pop button[data-v-5b974b95]{width:100%;color:var(--hud-dim);cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:7px 10px;font-size:11.5px;display:flex}.bind-pop button[data-v-5b974b95]:hover{color:var(--hud-text);background:#12203a}.bind-pop .bind-svg[data-v-5b974b95]{color:var(--hud-accent)}.bind-pop button>span[data-v-5b974b95]{white-space:nowrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex;overflow:hidden}.bp-group[data-v-5b974b95]{flex-direction:column;display:flex}.bp-group+.bp-group[data-v-5b974b95]{border-top:1px solid #27395c8c}.bp-tpl[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--hud-faint);padding:6px 10px 3px;font-size:9px}.bp-cur[data-v-5b974b95]{color:var(--hud-faint);white-space:nowrap;text-overflow:ellipsis;max-width:96px;margin-left:auto;font-size:9.5px;font-style:normal;overflow:hidden}.bp-empty[data-v-5b974b95]{color:var(--hud-faint);padding:10px;font-size:10.5px}.dcw-row[data-v-5b974b95]{border:1px solid var(--hud-line);border-radius:var(--hud-r-md);transition:border-color .18s var(--hud-ease), box-shadow .18s var(--hud-ease);background:linear-gradient(#111a2b,#0e1522);flex-direction:column;gap:8px;margin-bottom:7px;padding:9px 10px 10px;display:flex}.dcw-row[data-v-5b974b95]:hover{border-color:var(--hud-line-hi);box-shadow:0 6px 18px #03070e66}.dcw-top[data-v-5b974b95]{align-items:center;gap:8px;display:flex}.dcw-id[data-v-5b974b95]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.dcw-name[data-v-5b974b95]{color:var(--hud-faint);text-overflow:ellipsis;white-space:nowrap;font-size:9.5px;overflow:hidden}.dcw-tag[data-v-5b974b95]{font-style:normal;font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-amber);vertical-align:1px;background:#f6c4531a;border:1px solid #f6c45352;border-radius:4px;margin-left:5px;padding:0 5px;font-size:8.5px;font-weight:700;display:inline-block}.dcw-cur[data-v-5b974b95]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;flex:none;align-items:baseline;gap:3px;display:flex}.dcw-cur b[data-v-5b974b95]{color:var(--hud-cyan);text-shadow:0 0 14px #41c8f447;font-size:16px;font-weight:700}.dcw-cur i[data-v-5b974b95]{color:var(--hud-faint);font-size:9.5px;font-style:normal}.dcw-win[data-v-5b974b95]{border:1px solid var(--hud-line-soft);background:#0a111db8;border-radius:7px;align-items:center;gap:7px;padding:4px 8px;display:flex}.dcw-win em[data-v-5b974b95]{letter-spacing:.14em;color:var(--hud-faint);flex:none;font-size:8.5px;font-style:normal;font-weight:700}.dcw-win-num[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-dim);font-variant-numeric:tabular-nums;flex:none;font-size:9.5px}.dcw-win-track[data-v-5b974b95]{background:#1a2740;border-radius:999px;flex:1;height:4px;position:relative}.dcw-win-track[data-v-5b974b95]:before{content:"";border-radius:inherit;background:linear-gradient(90deg,#5a82af66,#5a82af24);position:absolute;inset:0}.dcw-win-track i[data-v-5b974b95]{border:2px solid var(--hud-cyan);width:9px;height:9px;transition:left .3s var(--hud-ease);background:#dfeef8;border-radius:50%;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 8px #41c8f48c}.dcw-win.recipe em[data-v-5b974b95]{color:var(--hud-amber)}.dcw-win.recipe .dcw-win-track[data-v-5b974b95]:before{background:linear-gradient(90deg,#f6c45380,#f6c45329)}.dcw-win.recipe .dcw-win-track i[data-v-5b974b95]{border-color:var(--hud-amber);box-shadow:0 0 8px #f6c4538c}.dcw-write[data-v-5b974b95]{gap:6px;display:flex}.dcw-write input[data-v-5b974b95]{min-width:0;height:27px;font-family:var(--font-mono);color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);transition:border-color .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border-radius:7px;flex:1;padding:0 9px;font-size:11.5px}.dcw-write input[data-v-5b974b95]::placeholder{color:var(--hud-faint);font-size:10px}.dcw-write input[data-v-5b974b95]:focus{border-color:var(--hud-accent);outline:none;box-shadow:0 0 0 3px #35e0a021}.dcw-send[data-v-5b974b95]{height:27px;font-family:var(--font-mono);letter-spacing:.1em;color:#04120c;background:var(--hud-accent-dim);cursor:pointer;transition:background .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border:0;border-radius:7px;flex:none;padding:0 14px;font-size:10.5px;font-weight:700}.dcw-send[data-v-5b974b95]:hover:not(:disabled){background:var(--hud-accent);box-shadow:0 0 14px #35e0a059}.dcw-send[data-v-5b974b95]:disabled{opacity:.38;cursor:default}.dcw-err[data-v-5b974b95]{color:var(--hud-danger);background:#ff6b6b14;border:1px solid #ff6b6b47;border-radius:6px;padding:4px 8px;font-size:10px;display:block}.bind-select[data-v-5b974b95]:hover,.daq-ctl-cycle input[data-v-5b974b95]:hover,.daq-num[data-v-5b974b95]:hover,.obj-input[data-v-5b974b95]:hover,.obj-select[data-v-5b974b95]:hover{border-color:var(--hud-line-hi)}.bind-select[data-v-5b974b95]:focus,.daq-ctl-cycle input[data-v-5b974b95]:focus,.daq-num[data-v-5b974b95]:focus,.obj-input[data-v-5b974b95]:focus,.obj-select[data-v-5b974b95]:focus{border-color:var(--hud-accent);outline:none;box-shadow:0 0 0 3px #35e0a021}input[type=number][data-v-5b974b95]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-5b974b95]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-5b974b95]{appearance:textfield}.obj-range[data-v-5b974b95],.scale-range[data-v-5b974b95]{appearance:none;cursor:pointer;background:#1a2740;border-radius:999px;outline:none;height:4px}.obj-range[data-v-5b974b95]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--hud-accent);width:13px;height:13px;-webkit-transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);background:#e8f6ef;border-radius:50%;box-shadow:0 0 0 3px #35e0a026,0 2px 6px #03070e80}.scale-range[data-v-5b974b95]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--hud-accent);width:13px;height:13px;-webkit-transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);background:#e8f6ef;border-radius:50%;box-shadow:0 0 0 3px #35e0a026,0 2px 6px #03070e80}.obj-range[data-v-5b974b95]::-webkit-slider-thumb:hover{transform:scale(1.18);box-shadow:0 0 0 5px #35e0a033,0 2px 8px #03070e8c}.scale-range[data-v-5b974b95]::-webkit-slider-thumb:hover{transform:scale(1.18);box-shadow:0 0 0 5px #35e0a033,0 2px 8px #03070e8c}.obj-range[data-v-5b974b95]::-moz-range-thumb{border:2px solid var(--hud-accent);background:#e8f6ef;border-radius:50%;width:13px;height:13px;box-shadow:0 0 0 3px #35e0a026}.scale-range[data-v-5b974b95]::-moz-range-thumb{border:2px solid var(--hud-accent);background:#e8f6ef;border-radius:50%;width:13px;height:13px;box-shadow:0 0 0 3px #35e0a026}.obj-range[data-v-5b974b95]::-moz-range-track{background:#1a2740;border-radius:999px;height:4px}.scale-range[data-v-5b974b95]::-moz-range-track{background:#1a2740;border-radius:999px;height:4px}.bind-row[data-v-5b974b95]{transition:border-color .18s var(--hud-ease), box-shadow .18s var(--hud-ease)}.bind-row[data-v-5b974b95]:hover{border-color:var(--hud-line-hi);box-shadow:0 6px 18px #03070e66}.bind-add[data-v-5b974b95]:hover{background:#35e0a00d;border-style:solid}.daq-bind-bar[data-v-5b974b95]{gap:6px;display:flex}.bind-select[data-v-5b974b95]{min-width:0;height:28px;color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:var(--hud-r-sm);transition:border-color .15s var(--hud-ease), box-shadow .15s var(--hud-ease), color .15s var(--hud-ease);flex:1;padding:0 8px;font-size:10.5px}.bind-select[data-v-5b974b95]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.bind-select[data-v-5b974b95]:focus{border-color:var(--hud-accent);color:var(--hud-text);outline:none;box-shadow:0 0 0 3px #35e0a021}.bind-add-btn[data-v-5b974b95]{color:#04120c;background:var(--hud-accent-dim);border-radius:var(--hud-r-sm);cursor:pointer;height:28px;transition:background .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border:0;flex:none;padding:0 12px;font-size:10.5px;font-weight:600}.bind-add-btn[data-v-5b974b95]:hover:not(:disabled){background:var(--hud-accent);box-shadow:0 0 14px #35e0a059}.bind-add-btn[data-v-5b974b95]:disabled{opacity:.4;cursor:default}.daq-info-row[data-v-5b974b95]{color:var(--hud-dim);justify-content:space-between;gap:8px;padding:3px 0;font-size:11px;display:flex}.daq-info-row b[data-v-5b974b95]{font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;font-weight:600}.daq-info-row b.cy[data-v-5b974b95]{color:var(--hud-cyan);font-size:13px}.daq-ctrl[data-v-5b974b95]{background:var(--hud-panel);border:1px solid var(--hud-line);border-radius:var(--hud-r-sm);justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;padding:8px 10px;display:flex}.daq-ctl-btn[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.05em;color:var(--hud-dim);cursor:pointer;border:1px solid var(--hud-line-hi);border-radius:var(--hud-r-sm);background:0 0;padding:4px 12px;font-size:11px}.daq-ctl-btn.on[data-v-5b974b95]{color:var(--hud-accent);border-color:#35e0a073}.daq-ctl-cycle[data-v-5b974b95]{color:var(--hud-faint);align-items:center;gap:5px;font-size:10.5px;display:inline-flex}.daq-ctl-cycle input[data-v-5b974b95],.daq-num[data-v-5b974b95]{width:64px;font-family:var(--font-mono);color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:6px;padding:2px 6px;font-size:11px}.daq-th-inputs[data-v-5b974b95]{color:var(--hud-faint);align-items:center;gap:4px;font-size:10px;display:inline-flex}.bind-add-btn.warn[data-v-5b974b95]:not(:disabled){color:var(--hud-amber);box-shadow:none;background:#f6c4531f}.bind-add-btn.warn[data-v-5b974b95]:hover:not(:disabled){background:#f6c45333;box-shadow:0 0 14px #f6c45340}.bind-add-btn.danger[data-v-5b974b95]:not(:disabled){color:var(--hud-danger);box-shadow:none;background:#ff6b6b1a}.bind-add-btn.danger[data-v-5b974b95]:hover:not(:disabled){background:#ff6b6b2e;box-shadow:0 0 14px #ff6b6b40}.statusbar[data-v-5b974b95]{border-top:1px solid var(--hud-line-soft);height:30px;color:var(--hud-dim);z-index:60;background:#0a101b;flex:none;align-items:center;gap:18px;padding:0 14px;font-size:11px;display:flex;position:relative}.statusbar b[data-v-5b974b95]{color:var(--hud-accent);font-weight:600}.statusbar .sb-stats[data-v-5b974b95]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:.02em;align-items:center;gap:7px;display:inline-flex}.sb-stats b[data-v-5b974b95]{color:var(--hud-text);font-weight:600}.sb-stats i[data-v-5b974b95]{color:var(--hud-line-hi);font-style:normal}.sb-dot[data-v-5b974b95]{background:var(--hud-accent);width:7px;height:7px;box-shadow:0 0 6px var(--hud-accent);vertical-align:1px;border-radius:50%;margin-right:6px;display:inline-block}.sb-dot.red[data-v-5b974b95]{background:var(--hud-danger);box-shadow:0 0 6px var(--hud-danger)}.sb-dot[data-v-5b974b95]:not(.red){animation:sb-pulse-5b974b95 2.4s var(--hud-ease) infinite}@keyframes sb-pulse-5b974b95{0%,to{opacity:1}50%{opacity:.4}}@media (prefers-reduced-motion:reduce){.sb-dot[data-v-5b974b95]:not(.red){animation:none}}.sb-lat[data-v-5b974b95]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;position:absolute;left:50%;transform:translate(-50%)}.statusbar .copy[data-v-5b974b95]{color:var(--hud-faint);font-family:var(--font-mono);margin-left:auto;font-size:10px}.loading-mask[data-v-5b974b95]{z-index:90;background:var(--hud-bg);flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:fixed;inset:0}.loading-spinner[data-v-5b974b95]{border:2.5px solid var(--hud-line);border-top-color:var(--hud-accent);border-radius:50%;width:30px;height:30px;animation:.9s linear infinite spin-5b974b95}.loading-text[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.24em;color:var(--hud-dim);font-size:11px}@keyframes spin-5b974b95{to{transform:rotate(1turn)}}@keyframes ty-bounce-5b974b95{0%,60%,to{opacity:.5;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.drag-grip[data-v-5b974b95]{cursor:grab;touch-action:none}.drag-grip[data-v-5b974b95]:active{cursor:grabbing}.drag-panel[data-v-5b974b95]{will-change:left, top}.town-view[data-v-5b974b95] ::-webkit-scrollbar{width:8px;height:8px}.town-view[data-v-5b974b95] ::-webkit-scrollbar-track{background:0 0}.town-view[data-v-5b974b95] ::-webkit-scrollbar-thumb{background:#1c2942;border:2px solid #080d16;border-radius:4px}.town-view[data-v-5b974b95] ::-webkit-scrollbar-thumb:hover{background:#2c4568}.al-state[data-v-5b974b95]:active,.bind-add[data-v-5b974b95]:active,.bind-x[data-v-5b974b95]:active,.bp-btn[data-v-5b974b95]:active,.btn[data-v-5b974b95]:active,.lg-chip[data-v-5b974b95]:active,.mini-btn[data-v-5b974b95]:active,.obj-mini[data-v-5b974b95]:active,.snap-toggle[data-v-5b974b95]:active,.vp-tool[data-v-5b974b95]:active{transform:scale(.96)}.al-state[data-v-5b974b95],.bind-add[data-v-5b974b95],.bp-btn[data-v-5b974b95],.btn[data-v-5b974b95],.lg-chip[data-v-5b974b95],.mini-btn[data-v-5b974b95],.obj-mini[data-v-5b974b95],.snap-toggle[data-v-5b974b95],.vp-tool[data-v-5b974b95]{transition-property:filter,background,border-color,color,transform,opacity;transition-duration:.15s;transition-timing-function:var(--hud-ease)}.town-view button[data-v-5b974b95]:focus-visible,.town-view input[data-v-5b974b95]:focus-visible,.town-view select[data-v-5b974b95]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}.vp-title h2[data-v-5b974b95]{color:var(--hud-text)}@keyframes estop-pulse-5b974b95{50%{filter:brightness(1.35)}}.btn-danger.armed[data-v-5b974b95]{animation:1s ease-in-out infinite estop-pulse-5b974b95}@media (prefers-reduced-motion:reduce){.callout[data-v-5b974b95],.inspector[data-v-5b974b95],.btn-danger.armed[data-v-5b974b95],.loading-spinner[data-v-5b974b95],.rpg-line.live .rpg-bubble[data-v-5b974b95],.ty-dot[data-v-5b974b95]{animation:none}}@media (width<=1180px){.app[data-v-5b974b95]{grid-template-columns:0 1fr 0}.rail[data-v-5b974b95]{z-index:70;width:288px;transition:transform .22s var(--hud-ease);box-shadow:var(--hud-shadow);background:#0a101b;position:fixed;top:50px;bottom:30px}.rail-left[data-v-5b974b95]{left:0;transform:translate(-104%)}.rail-right[data-v-5b974b95]{right:0;transform:translate(104%)}.dock[data-v-5b974b95],.stage-dock[data-v-5b974b95]{grid-template-columns:1fr}}.approval-card[data-v-5b974b95]{border-radius:var(--hud-r-md);background:#f6c4530f;border:1px solid #f6c4534d;margin-bottom:7px;padding:8px 9px}.approval-detail[data-v-5b974b95]{color:var(--hud-text);font-size:11px}.approval-ttl[data-v-5b974b95]{font-family:var(--font-mono);letter-spacing:.05em;color:var(--hud-amber);margin-top:5px;font-size:9.5px}.approval-ttl.urgent[data-v-5b974b95]{color:var(--hud-danger)}
1
+ .model-preview-3d[data-v-9d114165]{border:1px solid var(--hud-line,#263340);background:radial-gradient(120% 90% at 50% 20%,#41c8f41f,#0000 62%),linear-gradient(#0b121b,#0e141d);border-radius:2px;width:100%;min-height:40px;position:relative;overflow:hidden}.mp-loading[data-v-9d114165]{place-items:center;display:grid;position:absolute;inset:0}.mp-spin[data-v-9d114165]{border:2px solid #41c8f440;border-top-color:#41c8f4;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite mp-spin-9d114165}@keyframes mp-spin-9d114165{to{transform:rotate(1turn)}}.mp-failed[data-v-9d114165]{font-family:var(--font-mono);letter-spacing:.12em;color:var(--hud-dim,#7f919e);place-items:center;font-size:9px;display:grid;position:absolute;inset:0}.asset-lib[data-v-effff4e2]{width:184px;font-family:var(--font-body);flex-direction:column;flex:none;gap:8px;padding:0 0 10px;display:flex}.lib-head[data-v-effff4e2]{border-bottom:1px solid #26334073;align-items:center;gap:7px;padding:10px 12px 6px;display:flex}.head-title[data-v-effff4e2]{font-family:var(--font-mono);letter-spacing:.16em;color:var(--hud-text,#d9e4ee);white-space:nowrap;font-size:10px;font-weight:600}.head-hint[data-v-effff4e2]{font-family:var(--font-mono);color:var(--hud-faint,#5b6c7b);white-space:nowrap;margin-left:auto;font-size:8.5px}.upload-box[data-v-effff4e2]{transition:border-color .16s var(--hud-ease,ease), background .16s var(--hud-ease,ease);background:#0b101866;border:1px dashed #263340cc;border-radius:2px;flex-direction:column;gap:7px;margin:8px 10px 0;padding:7px;display:flex}.upload-box.drop[data-v-effff4e2]{border-color:var(--hud-accent,#4da3ff);background:#4da3ff14}.upload-row[data-v-effff4e2]{cursor:pointer;align-items:center;gap:6px;min-height:26px;display:flex}.file-input[data-v-effff4e2]{display:none}.upload-name[data-v-effff4e2]{font-family:var(--font-mono);color:var(--hud-dim,#8496a5);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;font-size:10px;display:inline-flex;overflow:hidden}.upload-ico[data-v-effff4e2]{color:var(--hud-accent,#4da3ff);font-size:13px}.drop-hint[data-v-effff4e2]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-accent,#4da3ff);align-items:center;gap:5px;padding:2px 0 4px;font-size:10px;display:inline-flex}.upload-file-tag[data-v-effff4e2]{font-family:var(--font-mono);color:var(--hud-dim,#8496a5);border:1px solid var(--hud-line,#263340);border-radius:2px;padding:3px 6px;font-size:9.5px}.upload-actions[data-v-effff4e2]{align-items:center;gap:6px;display:flex}.upload-btn[data-v-effff4e2]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-text,#d9e4ee);background:var(--hud-panel-raised,#141b26);border:1px solid var(--hud-line,#263340);cursor:pointer;transition:border-color .14s var(--hud-ease,ease), color .14s var(--hud-ease,ease);border-radius:2px;padding:5px 10px;font-size:10px;font-weight:600}.upload-btn[data-v-effff4e2]:hover:not(:disabled){border-color:var(--hud-accent,#4da3ff);color:var(--hud-accent,#4da3ff)}.upload-btn[data-v-effff4e2]:disabled{opacity:.45;cursor:default}.upload-btn.go[data-v-effff4e2]{color:var(--hud-amber,#f5a742);background:#f5a74214;border-color:#f5a7428c}.upload-btn.go[data-v-effff4e2]:hover:not(:disabled){border-color:var(--hud-amber,#f5a742);color:var(--hud-amber,#f5a742);background:#f5a74229}.mini-err[data-v-effff4e2]{font-family:var(--font-mono);color:var(--hud-danger,#ff6b5c);font-size:9.5px}.mini-err[data-v-effff4e2],.mini-msg[data-v-effff4e2]{font-size:10px}.mini-msg[data-v-effff4e2]{font-family:var(--font-mono);color:var(--hud-dim,#8496a5);padding:0 10px}.lib-grid[data-v-effff4e2]{flex-direction:column;gap:4px;max-height:42vh;padding:6px 10px 2px;display:flex;overflow:hidden auto}.model-card[data-v-effff4e2]{cursor:grab;transition:background .14s var(--hud-ease,ease);background:#141b26a6;border:0;border-radius:2px;flex-direction:column;align-items:stretch;gap:4px;padding:6px;display:flex;position:relative}.model-card[data-v-effff4e2]:hover{background:var(--hud-panel-hover,#1a2432)}.model-card[data-v-effff4e2]:active{cursor:grabbing}.model-card .model-preview-3d[data-v-effff4e2]{margin-bottom:2px}.model-name[data-v-effff4e2]{color:var(--hud-text,#d9e4ee);text-align:left;text-overflow:ellipsis;white-space:nowrap;padding:0 2px;font-size:11px;font-weight:600;overflow:hidden}.model-badge[data-v-effff4e2]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-faint,#5b6c7b);text-align:left;padding:0 2px;font-size:8.5px}.card-actions[data-v-effff4e2]{justify-content:flex-end;gap:4px;display:flex}.card-btn[data-v-effff4e2]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-text,#d9e4ee);border:1px solid var(--hud-line,#263340);cursor:pointer;transition:border-color .14s var(--hud-ease,ease), color .14s var(--hud-ease,ease);background:0 0;border-radius:2px;padding:2px 8px;font-size:10px;font-weight:600}.card-btn[data-v-effff4e2]:hover:not(:disabled){border-color:var(--hud-accent,#4da3ff);color:var(--hud-accent,#4da3ff)}.card-btn.danger[data-v-effff4e2]{color:var(--hud-danger,#ff6b5c)}.card-btn.danger[data-v-effff4e2]:hover:not(:disabled){border-color:var(--hud-danger,#ff6b5c);color:var(--hud-danger,#ff6b5c)}.card-btn[data-v-effff4e2]:disabled{opacity:.45;cursor:default}.model-img[data-v-effff4e2]{-o-object-fit:contain;object-fit:contain;pointer-events:none;width:46px;height:68px}.model-img.glb[data-v-effff4e2]{background:var(--hud-input,#0b1018);border:1px dashed var(--hud-line,#263340);border-radius:2px;justify-content:center;align-items:center;width:100%;height:44px;display:inline-flex}.glb-cube[data-v-effff4e2]{color:var(--hud-faint,#5b6c7b);font-size:24px;line-height:1}.lib-note[data-v-effff4e2]{font-family:var(--font-mono);color:var(--hud-faint,#5b6c7b);align-items:center;gap:7px;padding:8px 2px;font-size:9.5px;display:flex}.loading-dot[data-v-effff4e2]{border:2px solid var(--hud-line,#263340);border-top-color:var(--hud-accent,#4da3ff);border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin-effff4e2}@keyframes spin-effff4e2{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.loading-dot[data-v-effff4e2]{animation:none}}.twin-panel[data-v-2eb2660e]{width:auto;box-shadow:none;background:0 0;border:0;border-radius:0;flex-direction:column;flex:none;gap:8px;padding:0;display:flex}.twin-head[data-v-2eb2660e]{border-bottom:1px solid #26334073;align-items:center;gap:8px;padding:10px 12px 6px;display:flex}.twin-error[data-v-2eb2660e]{color:#ffb4b4;word-break:break-all;background:#ff6b6b1a;border:1px solid #ff6b6b59;border-radius:8px;padding:7px 10px;font-size:11px;line-height:1.5}.twin-kicker[data-v-2eb2660e]{font-family:var(--font-mono);letter-spacing:.16em;color:var(--hud-text,#d9e4ee);font-size:10px;font-weight:600}.twin-count[data-v-2eb2660e]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-dim,#8496a5);margin-left:auto;font-size:10px}.twin-empty[data-v-2eb2660e]{padding:10px}.twin-empty-frame[data-v-2eb2660e]{border:1px dashed var(--hud-line);flex-direction:column;gap:4px;padding:12px 10px;display:flex}.twin-empty-title[data-v-2eb2660e]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-text);font-size:11px}.twin-empty-sub[data-v-2eb2660e]{color:var(--hud-dim);font-size:10px;line-height:1.6}.twin-list[data-v-2eb2660e]{flex-direction:column;gap:4px;max-height:46vh;padding:4px 0 10px;display:flex;overflow:hidden auto}.twin-card[data-v-2eb2660e]{text-align:left;cursor:pointer;background:#141b26a6;border:0;border-radius:2px;flex-direction:column;gap:6px;margin:0 10px;padding:8px 9px;transition:background .16s;display:flex}.twin-card[data-v-2eb2660e]:hover{background:var(--hud-panel-hover)}.twin-card[data-v-2eb2660e]:active{background:var(--hud-panel-raised)}.twin-card:hover .twin-name[data-v-2eb2660e]{color:#e8f1f8}.twin-card.daq[data-v-2eb2660e]{background:#35e0a00f;border:1px solid #35e0a052}.twin-card.daq[data-v-2eb2660e]:hover{background:#35e0a01c;border-color:#35e0a080}.twin-card.daq .twin-code[data-v-2eb2660e],.twin-card.daq .twin-model-tag[data-v-2eb2660e]{color:var(--hud-accent,#35e0a0)}.twin-row[data-v-2eb2660e]{align-items:center;gap:8px;min-width:0;display:flex}.twin-model-tag[data-v-2eb2660e]{min-width:30px;font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-faint);flex:none;font-size:9px;font-weight:600}.twin-idbar[data-v-2eb2660e]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.twin-name[data-v-2eb2660e]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:600;overflow:hidden}.twin-code[data-v-2eb2660e]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-dim);font-size:9px}.twin-del[data-v-2eb2660e]{width:18px;height:18px;font-family:var(--font-mono);color:var(--hud-dim,#8496a5);border:1px solid var(--hud-line,#263340);cursor:pointer;background:0 0;border-radius:2px;flex:none;font-size:9px;line-height:1;transition:border-color .14s,color .14s,background .14s}.twin-del[data-v-2eb2660e]:hover:not(:disabled){border-color:var(--hud-danger,#ff6b5c);color:var(--hud-danger,#ff6b5c)}.twin-del.armed[data-v-2eb2660e]{color:#1a0d0a;background:var(--hud-danger,#ff6b5c);border-color:var(--hud-danger,#ff6b5c);width:auto;padding:0 5px}.twin-del[data-v-2eb2660e]:disabled{opacity:.4;cursor:default}.twin-state[data-v-2eb2660e]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-dim);border:1px solid var(--hud-line);border-radius:2px;flex:none;align-items:center;gap:5px;padding:2px 5px;font-size:8.5px;display:inline-flex}.twin-state.s-alarm[data-v-2eb2660e]{color:var(--hud-danger);border-color:#ff6b5c80}.twin-state.s-running[data-v-2eb2660e]{color:var(--hud-ok);border-color:#7fd4a066}.twin-state-dot[data-v-2eb2660e]{border-radius:50%;width:5px;height:5px}.twin-tele[data-v-2eb2660e]{border-top:1px dashed var(--hud-line);grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 10px;margin:0 0 2px;padding-top:6px;display:grid}.tele-item[data-v-2eb2660e]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-dim);justify-content:space-between;gap:6px;min-width:0;font-size:9.5px;display:flex}.tele-item em[data-v-2eb2660e]{text-overflow:ellipsis;font-style:normal;overflow:hidden}.tele-item b[data-v-2eb2660e]{color:var(--hud-text);font-weight:500}.twin-daq[data-v-2eb2660e]{border-top:1px dashed #35e0a04d;flex-direction:column;gap:2px;margin:0 0 2px;padding-top:6px;display:flex}.daq-item[data-v-2eb2660e]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-accent,#35e0a0);justify-content:space-between;align-items:baseline;gap:6px;min-width:0;font-size:9.5px;display:flex}.daq-item em[data-v-2eb2660e]{text-overflow:ellipsis;white-space:nowrap;opacity:.85;font-style:normal;overflow:hidden}.daq-item b[data-v-2eb2660e]{white-space:nowrap;font-size:10.5px;font-weight:700}.daq-item b i[data-v-2eb2660e]{opacity:.75;margin-left:2px;font-size:8.5px;font-style:normal;font-weight:500}.daq-item.alarm[data-v-2eb2660e]{color:var(--hud-amber,#f6c453)}.twin-dcw[data-v-2eb2660e]{border-top:1px dashed #f0a04c59;flex-direction:column;gap:6px;margin:0 0 2px;padding-top:6px;display:flex}.dcw-item[data-v-2eb2660e]{flex-direction:column;gap:3px;display:flex}.dcw-head[data-v-2eb2660e]{font-family:var(--font-mono);color:var(--hud-dim);justify-content:space-between;align-items:baseline;gap:6px;font-size:9.5px;display:flex}.dcw-head em[data-v-2eb2660e]{text-overflow:ellipsis;white-space:nowrap;font-style:normal;overflow:hidden}.dcw-src[data-v-2eb2660e]{color:var(--hud-amber,#f6c453);border:1px solid #f0a04c80;border-radius:2px;margin-left:4px;padding:0 3px;font-size:8px;font-style:normal}.dcw-set[data-v-2eb2660e]{font-variant-numeric:tabular-nums;color:var(--hud-amber,#f6c453);white-space:nowrap;font-size:12px;font-weight:700}.dcw-set i[data-v-2eb2660e]{opacity:.75;margin-left:2px;font-size:8.5px;font-style:normal;font-weight:500}.dcw-act[data-v-2eb2660e]{font-family:var(--font-mono);color:var(--hud-dim);justify-content:space-between;align-items:baseline;gap:6px;font-size:9px;display:flex}.dcw-act em[data-v-2eb2660e]{letter-spacing:.08em;color:var(--hud-faint);font-size:8px;font-style:normal}.dcw-act b[data-v-2eb2660e]{font-variant-numeric:tabular-nums;color:var(--hud-accent,#35e0a0);white-space:nowrap;font-size:11.5px;font-weight:700}.dcw-act b i[data-v-2eb2660e]{opacity:.75;margin-left:2px;font-size:8.5px;font-style:normal;font-weight:500}.dcw-act-at[data-v-2eb2660e]{color:var(--hud-faint);font-size:8px;font-style:normal}.dcw-win[data-v-2eb2660e]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-faint);letter-spacing:.04em;font-size:8.5px}.dcw-win span[data-v-2eb2660e]{border-bottom:1px dotted var(--hud-line);padding-bottom:1px}.dcw-ctrl[data-v-2eb2660e]{align-items:center;gap:4px;display:flex}.dcw-ctrl .ctrl-input[data-v-2eb2660e]{flex:1;width:auto;min-width:0}.dcw-send[data-v-2eb2660e]{color:var(--hud-amber,#f6c453);border-color:#f0a04c80;flex:none}.dcw-send[data-v-2eb2660e]:hover:not(:disabled){color:var(--hud-amber,#f6c453);border-color:var(--hud-amber,#f6c453);background:#f0a04c1f}.dcw-err[data-v-2eb2660e]{font-family:var(--font-mono);color:var(--hud-danger,#ff6b5c);font-size:8.5px}.ctrl-btn[data-v-2eb2660e]{letter-spacing:.06em;font-size:9px;font-weight:600;font-family:var(--font-mono);color:var(--hud-text);border:1px solid var(--hud-line);cursor:pointer;background:0 0;border-radius:2px;padding:3px 7px;transition:border-color .14s,color .14s,background .14s}.ctrl-btn[data-v-2eb2660e]:hover:not(:disabled){border-color:var(--hud-accent);color:var(--hud-accent)}.ctrl-btn[data-v-2eb2660e]:disabled{opacity:.45;cursor:default}.ctrl-input[data-v-2eb2660e]{width:48px;font-family:var(--font-mono);border:1px solid var(--hud-line);background:var(--hud-input);color:var(--hud-text);font-variant-numeric:tabular-nums;border-radius:2px;padding:3px 6px;font-size:10px}.ctrl-input[data-v-2eb2660e]:focus{border-color:var(--hud-accent);outline:none}.twin-err[data-v-2eb2660e]{color:var(--hud-danger);padding:0 10px 8px;font-size:9.5px}.town-view[data-v-1444af6d]{--hud-bg:#070b13;--hud-panel:#0d1420;--hud-panel-2:#111a2b;--hud-panel-raised:#152034;--hud-panel-hover:#16233a;--hud-line:#1d2a42;--hud-line-soft:#16202f;--hud-line-hi:#2c4568;--hud-input:#0a111d;--hud-text:#e8eef8;--hud-dim:#8fa0b5;--hud-faint:#5f6e84;--hud-accent:#35e0a0;--hud-accent-dim:#1f9e6e;--hud-cyan:#41c8f4;--hud-amber:#f6c453;--hud-ok:#35e0a0;--hud-danger:#ff6b6b;--hud-shadow:0 16px 40px #0000008c;--hud-ease:cubic-bezier(.22, .68, .36, 1);--hud-r-sm:8px;--hud-r-md:10px;--hud-r-lg:12px;background:var(--hud-bg);height:100%;min-height:0;color:var(--hud-text);font-family:var(--font-body);flex-direction:column;font-size:13px;display:flex}.topnav[data-v-1444af6d]{border-bottom:1px solid var(--hud-line-soft);z-index:60;background:linear-gradient(#0c1320,#0a101b);flex:none;align-items:center;gap:14px;height:50px;padding:0 16px;display:flex;position:relative}.topnav[data-v-1444af6d]:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000 4%,#35e0a059 50%,#0000 96%);height:1px;position:absolute;bottom:-1px;left:0;right:0}.brand[data-v-1444af6d]{align-items:center;gap:10px;min-width:230px;display:flex}.brand-glyph[data-v-1444af6d]{flex:none;width:26px;height:26px}.brand-name[data-v-1444af6d]{letter-spacing:.06em;font-size:14.5px;font-weight:800}.brand-name em[data-v-1444af6d]{color:var(--hud-accent);font-style:normal}.brand-sub[data-v-1444af6d]{color:var(--hud-faint);letter-spacing:.18em;margin-top:2px;font-size:10px}.nav-tabs[data-v-1444af6d]{align-items:center;gap:10px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.nav-action[data-v-1444af6d]{border-radius:var(--hud-r-sm);height:32px;color:var(--hud-text);transition:background .15s var(--hud-ease), border-color .15s var(--hud-ease);background:0 0;border:1px solid #27395c;padding:0 14px;font-size:12px;font-weight:600}.nav-action[data-v-1444af6d]:hover{background:#14203a;border-color:#33507c}.save-chip[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.08em;border:1px solid var(--hud-line);color:var(--hud-dim);white-space:nowrap;border-radius:6px;padding:3px 9px;font-size:10px}.save-chip.s-dirty[data-v-1444af6d]{color:var(--hud-amber);border-color:#f6c45366}.save-chip.s-saving[data-v-1444af6d]{color:var(--hud-dim)}.save-chip.s-saved[data-v-1444af6d]{color:var(--hud-accent);border-color:#35e0a066}.save-chip.s-error[data-v-1444af6d]{color:var(--hud-danger);border-color:#ff6b6b66}.nav-right[data-v-1444af6d]{align-items:center;gap:10px;margin-left:auto;display:flex}.nav-chip[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-dim);border:1px solid var(--hud-line);font-variant-numeric:tabular-nums;border-radius:6px;padding:2px 8px;font-size:10.5px}.avatar-chip[data-v-1444af6d]{border:1px solid var(--hud-line-soft);background:#0e1626;border-radius:999px;align-items:center;gap:8px;padding:4px 10px 4px 4px;display:flex}.avatar-chip span[data-v-1444af6d]{color:var(--hud-text);font-size:12px}.avatar-fallback[data-v-1444af6d]{color:#04120c;background:linear-gradient(135deg,#1f9e6e,#41c8f4);border-radius:50%;place-items:center;width:24px;height:24px;font-size:10px;font-weight:700;display:grid}.seg[data-v-1444af6d]{border:1px solid var(--hud-line);border-radius:var(--hud-r-sm);background:#0a111d;padding:2px;display:inline-flex}.seg button[data-v-1444af6d]{color:var(--hud-dim);transition:background .15s var(--hud-ease), color .15s var(--hud-ease);border-radius:6px;padding:4px 16px;font-size:11.5px;font-weight:600}.seg button.on[data-v-1444af6d]{background:var(--hud-accent);color:#04120c;box-shadow:0 0 12px #35e0a059}.app[data-v-1444af6d]{flex:1;grid-template-columns:250px minmax(540px,1fr) 342px;min-height:0;display:grid}.rail[data-v-1444af6d]{background:linear-gradient(#0a101c,#080d16);flex-direction:column;gap:10px;min-height:0;padding:10px;display:flex;overflow:hidden auto}.rail-left[data-v-1444af6d]{border-right:1px solid var(--hud-line-soft)}.rail-right[data-v-1444af6d]{border-left:1px solid var(--hud-line-soft)}.rail[data-v-1444af6d]::-webkit-scrollbar{width:8px}.rail[data-v-1444af6d]::-webkit-scrollbar-thumb{background:#1c2942;border:2px solid #080d16;border-radius:4px}.rail[data-v-1444af6d]::-webkit-scrollbar-track{background:0 0}.ins-enter-active[data-v-1444af6d]{transition:opacity .2s var(--hud-ease), transform .2s var(--hud-ease)}.ins-leave-active[data-v-1444af6d]{transition:opacity .12s}.ins-enter-from[data-v-1444af6d]{opacity:0;transform:translate(12px)}.ins-leave-to[data-v-1444af6d]{opacity:0}.panel[data-v-1444af6d]{border:1px solid var(--hud-line);border-radius:var(--hud-r-lg);background:linear-gradient(#101827,#0d1420);flex:none;padding:12px;position:relative;box-shadow:inset 0 1px #8fb0dc12,0 10px 28px #03070e73}.panel[data-v-1444af6d]:before{content:"";border-radius:var(--hud-r-lg) var(--hud-r-lg) 0 0;pointer-events:none;background:linear-gradient(#78a5dc0e,#0000);height:44px;position:absolute;inset:0 0 auto}.panel-hd[data-v-1444af6d]{align-items:center;gap:8px;margin-bottom:10px;display:flex}.panel-hd h3[data-v-1444af6d]{letter-spacing:.02em;flex:1;margin:0;padding-left:11px;font-size:12.5px;font-weight:700;position:relative}.panel-hd h3[data-v-1444af6d]:before{content:"";background:var(--hud-accent);width:3px;height:12px;box-shadow:0 0 8px color-mix(in srgb, var(--hud-accent) 45%, transparent);border-radius:2px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.panel-tag[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-cyan);background:#41c8f41a;border:1px solid #41c8f440;border-radius:6px;padding:0 6px;font-size:9.5px;line-height:15px}.lib-embed[data-v-1444af6d]{margin:-4px 0 0}.daq-list[data-v-1444af6d],.scene-list[data-v-1444af6d]{flex-direction:column;gap:4px;display:flex}.daq-card[data-v-1444af6d]{border-radius:var(--hud-r-md);background:var(--hud-panel-2);cursor:grab;transition:transform .15s var(--hud-ease), border-color .15s var(--hud-ease), background .15s var(--hud-ease);border:1px solid #1f4a3a8c;align-items:center;gap:10px;margin-bottom:4px;padding:8px 9px;display:flex}.daq-card[data-v-1444af6d]:hover{background:#12291f;border-color:#35e0a080;transform:translateY(-1px)}.daq-card[data-v-1444af6d]:active{cursor:grabbing}.daq-ico[data-v-1444af6d]{width:34px;height:34px;color:var(--hud-accent);background:linear-gradient(160deg,#12291f,#0e1a24);border:1px solid #1f4a3aa6;border-radius:9px;flex:none;place-items:center;display:grid}.daq-svg[data-v-1444af6d]{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.daq-meta[data-v-1444af6d]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.daq-name[data-v-1444af6d]{color:var(--hud-text);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.daq-code[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-faint);font-size:9px}.daq-count[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-accent);background:#35e0a01a;border:1px solid #35e0a047;border-radius:6px;flex:none;padding:0 6px;font-size:9px;line-height:15px}.daq-group[data-v-1444af6d]{flex-direction:column;display:flex}.daq-card.tpl[data-v-1444af6d]{cursor:pointer;-webkit-user-select:none;user-select:none;margin-bottom:0}.daq-card.tpl[data-v-1444af6d]:active{cursor:pointer}.daq-card.tpl[data-v-1444af6d]:focus-visible{outline:1px solid var(--hud-accent);outline-offset:1px}.daq-caret[data-v-1444af6d]{color:var(--hud-faint);transition:transform .15s var(--hud-ease);flex:none;font-size:8px}.daq-card.tpl.open .daq-caret[data-v-1444af6d]{transform:rotate(90deg)}.daq-card.tpl[data-v-1444af6d]:hover{transform:none}.daq-add[data-v-1444af6d]{width:18px;height:18px;color:var(--hud-faint);cursor:pointer;opacity:0;transition:opacity .15s var(--hud-ease), color .15s var(--hud-ease), border-color .15s var(--hud-ease), transform .16s cubic-bezier(.22, 1, .36, 1);background:0 0;border:1px solid #2c4568b3;border-radius:6px;flex:none;place-items:center;font-size:12px;line-height:1;display:grid}.daq-card.tpl:focus-within .daq-add[data-v-1444af6d],.daq-card.tpl:hover .daq-add[data-v-1444af6d]{opacity:1}@media (hover:none){.daq-add[data-v-1444af6d]{opacity:1}}.daq-add[data-v-1444af6d]:hover{color:var(--hud-accent);border-color:#35e0a080}.daq-add[data-v-1444af6d]:active{transform:scale(.9)}.daq-children[data-v-1444af6d]{animation:daq-tree-in-1444af6d .16s var(--hud-ease);flex-direction:column;gap:2px;margin:2px 0 6px;padding-left:16px;display:flex}@keyframes daq-tree-in-1444af6d{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.daq-node[data-v-1444af6d]{cursor:default;transition:background .15s var(--hud-ease), border-color .15s var(--hud-ease), transform .16s cubic-bezier(.22, 1, .36, 1);border:1px solid #0000;border-radius:7px;align-items:center;gap:8px;padding:5px 8px;display:flex}.daq-node[data-v-1444af6d]:hover{background:#111b2c;border-color:#2c456899}.daq-node[draggable=true][data-v-1444af6d]{cursor:grab}.daq-node[draggable=true][data-v-1444af6d]:active{cursor:grabbing;transform:scale(.98)}.daq-node.placed[data-v-1444af6d]{cursor:pointer}.daq-node.placed[draggable=true][data-v-1444af6d]{cursor:grab}.node-dot[data-v-1444af6d]{background:var(--hud-ok);width:7px;height:7px;box-shadow:0 0 6px color-mix(in srgb, var(--hud-ok) 50%, transparent);border-radius:50%;flex:none}.node-dot.offline[data-v-1444af6d]{border:1px solid var(--hud-faint);box-shadow:none;background:0 0}.node-dot.warn[data-v-1444af6d]{background:var(--hud-amber);box-shadow:0 0 6px color-mix(in srgb, var(--hud-amber) 50%, transparent)}.node-dot.alarm[data-v-1444af6d]{background:var(--hud-danger);box-shadow:0 0 6px color-mix(in srgb, var(--hud-danger) 60%, transparent)}.daq-node .daq-name[data-v-1444af6d]{font-size:11.5px;font-weight:500}.daq-node-sub[data-v-1444af6d]{align-items:baseline;gap:7px;min-width:0;display:flex}.node-val[data-v-1444af6d]{color:var(--hud-cyan);flex:none;font-size:10px}.node-dev[data-v-1444af6d]{color:var(--hud-faint);white-space:nowrap;text-overflow:ellipsis;max-width:104px;font-size:9.5px;overflow:hidden}.daq-empty-hint[data-v-1444af6d]{color:var(--hud-faint);padding:4px 8px 6px 10px;font-size:10px}.scene-row[data-v-1444af6d]{border-radius:var(--hud-r-md);cursor:grab;transition:background .15s var(--hud-ease), border-color .15s var(--hud-ease);border:1px solid #0000;align-items:center;gap:10px;margin-bottom:4px;padding:8px 9px;display:flex}.scene-row[data-v-1444af6d]:hover{background:#111b2c}.scene-row.active[data-v-1444af6d]{background:#35e0a00f;border-color:#35e0a059}.scene-row[data-v-1444af6d]:active{cursor:grabbing}.scene-ico[data-v-1444af6d]{background:color-mix(in srgb, var(--ch,var(--hud-accent)) 16%, #101a2c);border:1px solid color-mix(in srgb, var(--ch,var(--hud-accent)) 45%, transparent);border-radius:8px;flex:none;width:30px;height:30px}.scene-row.active .scene-ico[data-v-1444af6d]{box-shadow:0 0 10px color-mix(in srgb, var(--ch,var(--hud-accent)) 40%, transparent)}.scene-meta-wrap[data-v-1444af6d]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.scene-name[data-v-1444af6d]{color:var(--hud-text);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.scene-meta[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-faint);font-size:9px}.scene-add[data-v-1444af6d],.scene-cur[data-v-1444af6d]{border-radius:6px;flex:none;margin-left:auto;padding:1px 7px;font-size:10px}.scene-cur[data-v-1444af6d]{color:var(--hud-accent);border:1px solid #35e0a066}.scene-add[data-v-1444af6d]{color:var(--hud-dim);border:1px solid var(--hud-line)}.scene-hint[data-v-1444af6d]{color:var(--hud-amber);padding:6px 4px 0;font-size:10px;line-height:1.5}.stage-col[data-v-1444af6d]{flex-direction:column;min-width:0;min-height:0;display:flex}.stage[data-v-1444af6d]{background:#060a11;flex:1;min-height:320px;position:relative;overflow:hidden}.stage[data-v-1444af6d]:fullscreen{border-radius:0}.town-host[data-v-1444af6d]{position:absolute;inset:0}.town-host canvas[data-v-1444af6d]{image-rendering:auto;display:block}.stage-vignette[data-v-1444af6d]{pointer-events:none;z-index:3;background:radial-gradient(120% 90% at 50% 38%,#0000 52%,#02040980 100%),linear-gradient(#080d1852,#0000 18%),repeating-linear-gradient(0deg,#ffffff03 0 1px,#0000 1px 3px);position:absolute;inset:0}.stage-top[data-v-1444af6d]{z-index:6;pointer-events:none;justify-content:space-between;align-items:flex-start;padding:14px 16px;display:flex;position:absolute;top:0;left:0;right:0}.stage-top[data-v-1444af6d]>*{pointer-events:auto}.vp-title[data-v-1444af6d]{border-radius:var(--hud-r-md);-webkit-backdrop-filter:blur(8px);background:#090e18b8;border:1px solid #1c2942;align-items:center;gap:10px;padding:8px 12px;display:flex}.vp-title h2[data-v-1444af6d]{letter-spacing:.02em;margin:0;font-size:15px;font-weight:700}.vp-id[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.04em;color:var(--hud-dim);white-space:nowrap;background:#0a111d99;border:1px solid #223050;border-radius:6px;padding:1px 8px;font-size:10px}.vp-tools[data-v-1444af6d]{align-items:center;gap:8px;display:flex}.vp-tool[data-v-1444af6d]{width:34px;height:34px;color:var(--hud-dim);-webkit-backdrop-filter:blur(8px);transition:color .15s var(--hud-ease), border-color .15s var(--hud-ease), background .15s var(--hud-ease);background:#0d1420d9;border:1px solid #223050;border-radius:50%;place-items:center;font-size:12px;font-weight:600;display:grid}.vp-tool[data-v-1444af6d]:hover{color:var(--hud-text);border-color:#33507c}.vp-tool.on[data-v-1444af6d]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent);box-shadow:0 0 12px #35e0a04d}.vp-svg[data-v-1444af6d]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.leaders[data-v-1444af6d]{z-index:7;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.angle-chip[data-v-1444af6d]{z-index:6;border-radius:var(--hud-r-sm);-webkit-backdrop-filter:blur(8px);color:var(--hud-dim);background:#090e18c7;border:1px solid #1c2942;align-items:center;gap:6px;padding:5px 8px;font-size:11.5px;display:flex;position:absolute;top:64px;left:16px}.angle-chip select[data-v-1444af6d]{color:var(--hud-text);cursor:pointer;background:0 0;border:0;font-size:11.5px;font-weight:600}.angle-chip select option[data-v-1444af6d]{background:#0e1626}.callout-layer[data-v-1444af6d]{z-index:7;pointer-events:none;position:absolute;inset:0;overflow:hidden}.callout[data-v-1444af6d]{opacity:0;pointer-events:none;border-radius:var(--hud-r-md);min-width:150px;box-shadow:var(--hud-shadow);-webkit-backdrop-filter:blur(8px);transition:opacity .22s var(--hud-ease), transform .22s var(--hud-ease), border-color .15s var(--hud-ease);background:linear-gradient(#101a2bf0,#0a101cf0);border:1px solid #41c8f466;padding:9px 12px 8px;position:absolute;transform:translate(-50%,-112%)translateY(5px)}.callout.near[data-v-1444af6d]{opacity:1;pointer-events:auto;transform:translate(-50%,-112%)}.leaders g[data-v-1444af6d]{opacity:0;transition:opacity .22s var(--hud-ease)}.leaders g.near[data-v-1444af6d]{opacity:1}.callout.warn[data-v-1444af6d]{border-color:#f6c45399}.co-label[data-v-1444af6d]{color:var(--hud-dim);white-space:nowrap;align-items:center;gap:6px;font-size:10.5px;display:flex}.co-dot[data-v-1444af6d]{background:var(--hud-cyan);border-radius:50%;flex:none;width:6px;height:6px;box-shadow:0 0 8px #41c8f4e6}.callout.warn .co-dot[data-v-1444af6d]{background:var(--hud-amber);box-shadow:0 0 8px #f6c453e6}.co-val[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:-.01em;color:var(--hud-text);font-variant-numeric:tabular-nums;margin-top:2px;font-size:21px;font-weight:700}.co-val small[data-v-1444af6d]{color:var(--hud-dim);margin-left:3px;font-size:10.5px;font-weight:500}.co-range[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-faint);margin-top:1px;font-size:9.5px}.callout.warn .co-range[data-v-1444af6d]{color:var(--hud-amber)}.kpi-strip[data-v-1444af6d]{z-index:6;pointer-events:none;flex-wrap:wrap;justify-content:center;gap:10px;padding:0 16px;display:flex;position:absolute;bottom:12px;left:0;right:0}.kpi[data-v-1444af6d]{pointer-events:auto;border-radius:var(--hud-r-md);-webkit-backdrop-filter:blur(8px);transition:border-color .2s var(--hud-ease), transform .2s var(--hud-ease), box-shadow .2s var(--hud-ease);background:linear-gradient(#141e30eb,#0c1320e6);border:1px solid #1e2c46;align-items:center;gap:10px;padding:8px 14px;display:flex;box-shadow:inset 0 1px #8fb0dc14,0 8px 20px #03070e66}.kpi[data-v-1444af6d]:hover{border-color:#2c4568;transform:translateY(-1px);box-shadow:inset 0 1px #8fb0dc1a,0 12px 26px #03070e80}.kpi-ico[data-v-1444af6d]{border-radius:8px;flex:none;place-items:center;width:30px;height:30px;font-size:12px;font-weight:700;display:grid}.kpi-ico.c1[data-v-1444af6d]{color:var(--hud-cyan);background:#41c8f41f}.kpi-ico.c2[data-v-1444af6d]{color:var(--hud-accent);background:#35e0a01f}.kpi-ico.c3[data-v-1444af6d]{color:var(--hud-amber);background:#f6c4531f}.kpi-ico.c4[data-v-1444af6d]{color:#a78bfa;background:#a78bfa24}.kpi-ico.c5[data-v-1444af6d]{color:var(--hud-danger);background:#ff6b6b1f}.kpi-svg[data-v-1444af6d]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.kpi-meta[data-v-1444af6d]{line-height:1.25}.kpi-label[data-v-1444af6d]{color:var(--hud-dim);letter-spacing:.08em;text-transform:uppercase;font-size:10px}.kpi-val[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:19px;font-weight:700}.kpi-val small[data-v-1444af6d]{color:var(--hud-faint);margin-left:2px;font-size:10px;font-weight:500}.empty-hint[data-v-1444af6d]{z-index:4;text-align:center;color:var(--hud-dim);pointer-events:none;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}.empty-hint b[data-v-1444af6d]{color:var(--hud-text);margin-bottom:4px;font-size:14px;display:block}.empty-hint span[data-v-1444af6d]{font-size:12px}@media (prefers-reduced-motion:no-preference){.dock[data-v-1444af6d],.rail-left[data-v-1444af6d],.rail-right[data-v-1444af6d]{animation:.52s cubic-bezier(.22,.68,.36,1) backwards hud-boot-1444af6d}.rail-left[data-v-1444af6d]{animation-delay:40ms}.rail-right[data-v-1444af6d]{animation-delay:.15s}.dock[data-v-1444af6d]{animation-delay:.26s}}@keyframes hud-boot-1444af6d{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.dock[data-v-1444af6d]{border-top:1px solid var(--hud-line-soft);background:#080d16;flex:none;grid-template-columns:308px 1fr;gap:10px;padding:10px;display:grid}.dock-card[data-v-1444af6d]{border:1px solid var(--hud-line);border-radius:var(--hud-r-lg);background:linear-gradient(#101827,#0d1420);flex-direction:column;min-height:178px;padding:12px 14px;display:flex}.dock-hd[data-v-1444af6d]{align-items:center;gap:8px;margin-bottom:10px;display:flex}.dock-hd h3[data-v-1444af6d]{flex:none;margin:0;font-size:12.5px;font-weight:700}.dock-count[data-v-1444af6d]{letter-spacing:.08em;color:var(--hud-dim);border:1px solid var(--hud-line-soft);border-radius:6px;flex:none;padding:1px 7px;font-size:9.5px}.dock-mode[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-faint);border:1px solid var(--hud-line);border-radius:6px;margin-left:auto;padding:1px 7px;font-size:9px}.ctl-row[data-v-1444af6d]{align-items:center;gap:10px;margin-bottom:9px;display:flex}.ctl-sec[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--hud-faint);border-top:1px solid var(--hud-line-soft);margin:2px 0 7px;padding-top:7px;font-size:8.5px;font-weight:600}.ctl-sec[data-v-1444af6d]:first-of-type{border-top:0;margin-top:0;padding-top:0}.ctl-name[data-v-1444af6d]{color:var(--hud-dim);flex:none;width:64px;font-size:11.5px}.ctl-val[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-text);text-align:right;font-variant-numeric:tabular-nums;flex:none;width:38px;font-size:11px}.ctl-range[data-v-1444af6d]{appearance:none;background:linear-gradient(90deg, var(--hud-accent-dim) var(--fill,50%), #1d2a42 var(--fill,50%));cursor:pointer;border-radius:2px;flex:1;height:4px}.ctl-range[data-v-1444af6d]::-webkit-slider-thumb{-webkit-appearance:none;border:2.5px solid var(--hud-accent);width:13px;height:13px;-webkit-transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);background:#fff;border-radius:50%;box-shadow:0 1px 4px #00000080}.ctl-range[data-v-1444af6d]:hover::-webkit-slider-thumb{transform:scale(1.18);box-shadow:0 0 0 5px #35e0a01f,0 1px 4px #00000080}.ctl-range[data-v-1444af6d]:active::-webkit-slider-thumb{transform:scale(1.05)}.bp-range[data-v-1444af6d]{accent-color:var(--hud-accent)}.snap-toggle[data-v-1444af6d]{height:22px;color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;border-radius:6px;flex:1;font-size:10.5px;font-weight:600}.snap-toggle.on[data-v-1444af6d]{color:var(--hud-accent);background:#35e0a014;border-color:#35e0a066}.fps-seg[data-v-1444af6d]{flex:1;gap:4px;display:flex}.fps-seg button[data-v-1444af6d]{height:22px;font-family:var(--font-mono);color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;transition:border-color .14s var(--hud-ease), color .14s var(--hud-ease), background .14s var(--hud-ease);border-radius:6px;flex:1;font-size:10.5px;font-weight:600}.fps-seg button[data-v-1444af6d]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.fps-seg button.on[data-v-1444af6d]{color:var(--hud-accent);background:#35e0a014;border-color:#35e0a066}.ctl-btns[data-v-1444af6d]{gap:8px;margin-top:auto;display:flex}.btn[data-v-1444af6d]{border-radius:var(--hud-r-sm);white-space:nowrap;cursor:pointer;height:32px;transition:filter .15s var(--hud-ease), background .15s var(--hud-ease), border-color .15s var(--hud-ease);background:0 0;flex:1;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.btn-primary[data-v-1444af6d]{background:var(--hud-accent-dim);color:#04120c}.btn-primary[data-v-1444af6d]:hover{background:#25b57e}.btn-ghost[data-v-1444af6d]{color:var(--hud-text);border:1px solid #27395c}.btn-ghost[data-v-1444af6d]:hover{background:#14203a;border-color:#33507c}.btn-danger[data-v-1444af6d]{color:#fff;background:#b3273a}.btn-danger[data-v-1444af6d]:hover{background:#d1304a}.btn[data-v-1444af6d]:not(:disabled):active{transform:translateY(1px)}.bind-select[data-v-1444af6d]:disabled,.btn[data-v-1444af6d]:disabled,.nav-action[data-v-1444af6d]:disabled,.obj-input[data-v-1444af6d]:disabled,.obj-mini[data-v-1444af6d]:disabled,.obj-select[data-v-1444af6d]:disabled{opacity:.38;cursor:not-allowed;filter:saturate(.4)}.btn[data-v-1444af6d]:disabled:hover,.nav-action[data-v-1444af6d]:disabled:hover{background:inherit}.trend-legend[data-v-1444af6d]{scrollbar-width:thin;scrollbar-color:#1c2942 transparent;flex-wrap:wrap;flex:auto;align-content:flex-start;gap:5px;min-width:0;max-height:47px;margin-left:6px;transition:max-height .24s cubic-bezier(.22,.68,.36,1);display:flex;overflow-y:auto}.trend-legend.expanded[data-v-1444af6d]{max-height:100px}.trend-legend[data-v-1444af6d]::-webkit-scrollbar{width:6px}.trend-legend[data-v-1444af6d]::-webkit-scrollbar-thumb{background:#1c2942;border-radius:3px}.trend-legend[data-v-1444af6d]::-webkit-scrollbar-track{background:0 0}.lg-chip[data-v-1444af6d]{color:var(--hud-dim);border:1px solid var(--hud-line-soft);cursor:pointer;transition:opacity .15s var(--hud-ease), border-color .15s var(--hud-ease), color .15s var(--hud-ease);background:#0d142099;border-radius:6px;align-items:center;gap:5px;padding:2px 8px;font-size:10.5px;display:flex}.lg-chip[data-v-1444af6d]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.lg-chip.off[data-v-1444af6d]{opacity:.32}.lg-more[data-v-1444af6d]{letter-spacing:.04em;color:var(--hud-faint);border-style:dashed;font-size:10px}.lg-more[data-v-1444af6d]:hover{color:var(--hud-accent);border-color:#35e0a066}.lg-dot[data-v-1444af6d]{border-radius:2px;width:7px;height:7px}.trend-wrap[data-v-1444af6d]{flex:1;min-height:0;position:relative}.trend-cv[data-v-1444af6d]{width:100%;height:100%;position:absolute;inset:0}.trend-empty[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-faint);place-content:center;font-size:10.5px;display:grid;position:absolute;inset:0}.inspector[data-v-1444af6d]{animation:rise-1444af6d .18s var(--hud-ease)}@keyframes rise-1444af6d{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.ins-chip-row[data-v-1444af6d]{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.ins-chip[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-dim);border:1px solid #26354a;border-radius:6px;padding:1.5px 7px;font-size:9.5px}.ins-chip.accent[data-v-1444af6d]{color:var(--hud-accent);border-color:#35e0a066}.sect-hd[data-v-1444af6d]{color:var(--hud-faint);letter-spacing:.16em;align-items:center;gap:6px;margin:10px 0 7px;font-size:10px;font-weight:700;display:flex}.sect-hd[data-v-1444af6d]:before{content:"";background:var(--hud-accent);opacity:.55;border-radius:1px;width:3px;height:9px}.obj-row[data-v-1444af6d]{align-items:center;gap:8px;margin-bottom:8px;display:flex}.obj-label[data-v-1444af6d]{width:52px;color:var(--hud-dim);flex:none;font-size:10.5px}.obj-input[data-v-1444af6d],.obj-select[data-v-1444af6d]{min-width:0;color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);transition:border-color .15s var(--hud-ease);border-radius:7px;flex:1;padding:5px 8px;font-size:11.5px}.obj-input[data-v-1444af6d]:focus,.obj-select[data-v-1444af6d]:focus{border-color:var(--hud-accent);outline:none}.obj-sep[data-v-1444af6d]{background:var(--hud-line-soft);height:1px;margin:8px 0}.range-status[data-v-1444af6d]{min-width:0;color:var(--hud-faint);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:10px;overflow:hidden}.obj-mini[data-v-1444af6d]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;border-radius:7px;flex:none;padding:4px 10px;font-size:10.5px;font-weight:600}.obj-mini.on[data-v-1444af6d]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.obj-mini.danger[data-v-1444af6d]{color:var(--hud-danger);width:100%;margin-top:4px}.obj-range[data-v-1444af6d]{accent-color:var(--hud-accent);flex:1}.bp-val[data-v-1444af6d]{text-align:right;width:40px;font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;flex:none;font-size:10.5px}.bp-seg[data-v-1444af6d]{gap:4px;display:flex}.seg-btn[data-v-1444af6d]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;transition:border-color .14s var(--hud-ease), color .14s var(--hud-ease), background .14s var(--hud-ease);border-radius:7px;padding:4px 12px;font-size:10.5px;font-weight:600}.seg-btn[data-v-1444af6d]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.seg-btn.on[data-v-1444af6d]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.xz-seg[data-v-1444af6d]{gap:6px;margin-bottom:8px;display:flex}.xz-seg .seg-btn[data-v-1444af6d]{flex:1}.scale-row[data-v-1444af6d]{align-items:center;gap:8px;display:flex}.scale-max[data-v-1444af6d],.scale-min[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-faint);font-size:9px}.scale-range[data-v-1444af6d]{accent-color:var(--hud-accent);flex:1}.scale-val[data-v-1444af6d]{text-align:center;font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;margin-bottom:4px;font-size:11px}.ins-foot[data-v-1444af6d]{gap:8px;margin-top:12px;display:flex}.ins-del[data-v-1444af6d]{color:var(--hud-danger);background:#ff6b6b1a;border:1px solid #ff6b6b66}.ins-del.armed[data-v-1444af6d]{background:var(--hud-danger);color:#fff}.ins-empty[data-v-1444af6d]{color:var(--hud-faint);text-align:center;padding:8px 0 6px;font-size:11px}.health-body[data-v-1444af6d]{align-items:center;gap:14px;display:flex}.donut-wrap[data-v-1444af6d]{flex:none;width:118px;height:118px;position:relative}.donut-wrap canvas[data-v-1444af6d]{width:118px;height:118px}.donut-center[data-v-1444af6d]{text-align:center;place-content:center;display:grid;position:absolute;inset:0}.donut-center b[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-accent);font-size:21px;font-weight:700}.donut-center span[data-v-1444af6d]{color:var(--hud-faint);font-size:9.5px}.health-legend[data-v-1444af6d]{flex-direction:column;flex:1;gap:8px;display:flex}.hl-row[data-v-1444af6d]{align-items:center;gap:7px;font-size:11.5px;display:flex}.hl-dot[data-v-1444af6d]{border-radius:50%;flex:none;width:7px;height:7px}.hl-row .n[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-text);margin-left:auto;font-size:13px;font-weight:700}.event-list[data-v-1444af6d]{flex-direction:column;flex:1;min-height:0;max-height:200px;display:flex;overflow:hidden auto}.event-row[data-v-1444af6d]{transition:background .13s var(--hud-ease);border-radius:7px;align-items:center;gap:7px;padding:4px 6px;display:flex}.event-row[data-v-1444af6d]:hover{background:#35e0a00d}.ev-time[data-v-1444af6d]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-faint);flex:none;font-size:9px}.ev-name[data-v-1444af6d]{text-overflow:ellipsis;white-space:nowrap;max-width:70px;font-family:var(--font-mono);color:var(--hud-text);flex:none;font-size:10px;font-weight:600;overflow:hidden}.ev-text[data-v-1444af6d]{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hud-dim);flex:1;font-size:10.5px;overflow:hidden}.event-empty[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-faint);text-align:center;padding:12px;font-size:9.5px}.rail-empty[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-faint);text-align:center;flex-direction:column;align-items:center;gap:7px;padding:16px 10px 13px;font-size:9.5px;display:flex}.rail-empty .re-ico[data-v-1444af6d]{fill:none;width:19px;height:19px;stroke:var(--hud-faint);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;opacity:.85}.mm-body[data-v-1444af6d]{align-items:stretch;gap:8px;display:flex}.mm-wrap[data-v-1444af6d]{border-radius:var(--hud-r-md);background:#060b13;border:1px solid #223050;flex:1;min-height:148px;position:relative;overflow:hidden}.mini-svg[data-v-1444af6d]{cursor:crosshair;width:100%;height:100%;position:absolute;inset:0}.nav-cv[data-v-1444af6d]{cursor:crosshair;touch-action:none;width:100%;height:100%;position:absolute;inset:0}.alarm-list[data-v-1444af6d]{flex-direction:column;display:flex}.al-row[data-v-1444af6d]{border-radius:var(--hud-r-md);align-items:flex-start;gap:9px;padding:9px 8px;transition:background .15s;display:flex}.al-row[data-v-1444af6d]:hover{background:#101a2c}.al-ico[data-v-1444af6d]{border-radius:8px;flex:none;place-items:center;width:28px;height:28px;display:grid}.al-ico.crit[data-v-1444af6d]{color:var(--hud-danger);background:#ff6b6b1f}.al-ico.warn[data-v-1444af6d]{color:var(--hud-amber);background:#f6c4531f}.al-ico.info[data-v-1444af6d]{color:var(--hud-cyan);background:#41c8f41f}.al-svg[data-v-1444af6d]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.al-body[data-v-1444af6d]{flex:1;min-width:0}.al-txt[data-v-1444af6d]{color:var(--hud-text);font-size:12px;font-weight:500;line-height:1.35}.al-src[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-faint);margin-top:2px;font-size:9.5px}.al-state[data-v-1444af6d]{cursor:pointer;background:0 0;border:1px solid;border-radius:6px;flex:none;margin-top:2px;padding:2px 7px;font-size:9.5px;font-weight:600}.al-state.s0[data-v-1444af6d]{color:var(--hud-danger);background:#ff6b6b1a;border-color:#ff6b6b66}.al-state.s1[data-v-1444af6d]{color:var(--hud-amber);background:#f6c4531a;border-color:#f6c45359}.al-state.s2[data-v-1444af6d]{color:var(--hud-dim);background:#8fa0b514;border-color:#8fa0b54d}.nav-bell-warn[data-v-1444af6d]{color:var(--hud-danger);border-color:#ff6b6b80}.mm-col[data-v-1444af6d]{flex-direction:column;gap:6px;display:flex}.mm-col .vp-tool[data-v-1444af6d]{border-radius:8px;width:30px;height:30px}.mm-meta[data-v-1444af6d]{color:var(--hud-faint);letter-spacing:.08em;text-align:center;margin-top:8px;font-size:9.5px}.rpg-lines.chat-embed[data-v-1444af6d]{border:1px solid var(--hud-line-soft);border-radius:var(--hud-r-md);background:#0f172680;max-height:268px;padding:2px 0 4px}.chat-sect[data-v-1444af6d]{align-items:center;gap:8px;display:flex}.chat-sect .chat-refresh[data-v-1444af6d]{margin-left:auto}.chat-id-row[data-v-1444af6d]{align-items:center;gap:10px;margin-bottom:4px;display:flex}.chat-badge[data-v-1444af6d]{--p-acc:var(--hud-accent);width:34px;height:34px;font-family:var(--font-mono);color:var(--p-acc);background:color-mix(in srgb, var(--p-acc) 10%, transparent);border:1px solid color-mix(in srgb, var(--p-acc) 45%, transparent);border-radius:var(--hud-r-sm);flex:none;place-items:center;font-size:15px;font-weight:700;display:grid}.chat-nameplate[data-v-1444af6d]{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.chat-name[data-v-1444af6d]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:650;overflow:hidden}.chat-meta[data-v-1444af6d]{align-items:center;gap:6px;display:flex}.chat-state[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-dim);border:1px solid var(--hud-line);border-radius:6px;padding:1px 6px;font-size:8.5px}.chat-role[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.12em;border-radius:6px;padding:1px 7px;font-size:8.5px;font-weight:700}.chat-role.r-lead[data-v-1444af6d]{color:var(--hud-amber);background:#f6c4531a;border:1px solid #f6c45373}.chat-role.r-worker[data-v-1444af6d]{color:var(--hud-cyan);background:#41c8f41a;border:1px solid #41c8f466}.chat-state.s-busy[data-v-1444af6d]{color:var(--hud-amber);border-color:#f6c45380}.chat-state.s-stopped[data-v-1444af6d]{color:var(--hud-danger);border-color:#ff6b6b80}.chat-harness[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-faint);font-size:8.5px}.chat-count[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-faint);font-size:8.5px}.chat-refresh[data-v-1444af6d]{width:22px;height:22px;font-family:var(--font-mono);color:var(--hud-dim);border:1px solid var(--hud-line);cursor:pointer;transition:border-color .14s var(--hud-ease), color .14s var(--hud-ease), transform .32s var(--hud-ease);background:0 0;border-radius:6px;flex:none;font-size:11px}.chat-refresh[data-v-1444af6d]:hover{border-color:var(--hud-accent);color:var(--hud-accent)}.chat-refresh[data-v-1444af6d]:active{transform:rotate(180deg)}.rpg-lines[data-v-1444af6d]{flex-direction:column;flex:1;gap:7px;min-height:0;padding:10px 12px 12px;display:flex;overflow:hidden auto}.rpg-divider[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.2em;color:var(--hud-faint);margin:4px 0 2px;font-size:8.5px}.rpg-divider.live[data-v-1444af6d]{color:var(--hud-amber)}.rpg-line[data-v-1444af6d]{align-items:flex-start;gap:8px;display:flex}.rpg-time[data-v-1444af6d]{text-align:right;width:52px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-faint);flex:none;margin-top:5px;font-size:9px}.rpg-bubble[data-v-1444af6d]{background:var(--hud-panel-2);border:1px solid var(--hud-line);border-radius:var(--hud-r-md);flex-direction:column;flex:1;gap:2px;min-width:0;padding:7px 11px;display:flex}.rpg-line.hist[data-v-1444af6d]{opacity:.62}.rpg-line.live .rpg-bubble[data-v-1444af6d]{animation:rise-1444af6d .26s var(--hud-ease) both;border-color:var(--hud-line-hi);background:#14213a}.rpg-kind[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.14em;color:var(--hud-faint);align-self:flex-start;font-size:8px}.rpg-kind.k-artifact[data-v-1444af6d]{color:var(--hud-accent)}.rpg-kind.k-error[data-v-1444af6d]{color:var(--hud-danger)}.rpg-text[data-v-1444af6d]{color:var(--hud-text);word-break:break-word;text-wrap:pretty;font-size:13px;line-height:1.6}.rpg-line.live .rpg-text[data-v-1444af6d]{color:#edf4fa}.rpg-typing[data-v-1444af6d]{align-items:center;gap:4px;padding:5px 2px;display:flex}.ty-dot[data-v-1444af6d]{background:var(--hud-amber);width:5px;height:5px;animation:ty-bounce-1444af6d 1.15s var(--hud-ease) infinite;border-radius:50%}.ty-dot[data-v-1444af6d]:nth-child(2){animation-delay:.15s}.ty-dot[data-v-1444af6d]:nth-child(3){animation-delay:.3s}.ty-label[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-faint);margin-left:5px;font-size:9px}.rpg-note[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-dim);text-align:center;padding:14px 0;font-size:10px}.boundary-panel[data-v-1444af6d]{z-index:9;border:1px solid var(--hud-line);border-radius:var(--hud-r-lg);width:302px;box-shadow:var(--hud-shadow);-webkit-backdrop-filter:blur(8px);pointer-events:auto;background:linear-gradient(#101827f7,#0d1420f7);flex-direction:column;gap:7px;padding:12px 14px;display:flex;position:absolute;top:84px;left:16px}.bp-title[data-v-1444af6d]{border-bottom:1px solid var(--hud-line);cursor:grab;touch-action:none;align-items:center;gap:8px;padding-bottom:8px;display:flex}.bp-title[data-v-1444af6d]:active{cursor:grabbing}.bp-name[data-v-1444af6d]{color:var(--hud-text);font-size:13px;font-weight:700}.bp-sub[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.12em;color:var(--hud-faint);font-size:8.5px}.bp-tabs[data-v-1444af6d]{gap:4px;margin-left:auto;display:flex}.bp-tab[data-v-1444af6d]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;border-radius:6px;padding:3px 10px;font-size:10px;font-weight:600}.bp-tab.on[data-v-1444af6d]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.bp-row[data-v-1444af6d]{align-items:center;gap:8px;display:flex}.bp-label[data-v-1444af6d]{width:52px;color:var(--hud-dim);flex:none;font-size:10.5px}.bp-range[data-v-1444af6d]{appearance:none;background:linear-gradient(90deg, var(--hud-accent-dim) var(--fill,50%), #1d2a42 var(--fill,50%));cursor:pointer;border-radius:2px;flex:1;height:4px}.bp-range[data-v-1444af6d]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--hud-accent);width:12px;height:12px;-webkit-transition:transform .15s var(--hud-ease);transition:transform .15s var(--hud-ease);background:#fff;border-radius:50%}.bp-range[data-v-1444af6d]:hover::-webkit-slider-thumb{transform:scale(1.15)}.bp-hint[data-v-1444af6d]{color:var(--hud-faint);font-size:10px;line-height:1.6}.bp-actions[data-v-1444af6d]{gap:6px;margin-top:4px;display:flex}.bp-btn[data-v-1444af6d]{color:var(--hud-text);border-radius:var(--hud-r-sm);cursor:pointer;background:0 0;border:1px solid #27395c;flex:1;padding:6px 10px;font-size:11px;font-weight:600}.bp-btn[data-v-1444af6d]:hover{background:#14203a;border-color:#33507c}.bp-btn.save[data-v-1444af6d]{color:#04120c;background:var(--hud-accent-dim);border-color:var(--hud-accent-dim)}.bp-btn.save[data-v-1444af6d]:hover{background:#25b57e}.bp-btn.danger[data-v-1444af6d]{color:var(--hud-danger);border-color:#ff6b6b66}.bp-btn.danger[data-v-1444af6d]:hover{background:#ff6b6b1a}.member-list[data-v-1444af6d]{flex-direction:column;gap:5px;max-height:220px;display:flex;overflow:hidden auto}.member-row[data-v-1444af6d]{background:var(--hud-panel-2);border:1px solid var(--hud-line-soft);border-radius:var(--hud-r-md);align-items:center;gap:8px;padding:6px 8px;display:flex}.member-ava[data-v-1444af6d]{width:24px;height:24px;font-family:var(--font-mono);color:var(--hud-text);background:var(--hud-panel-raised);border:1px solid var(--hud-line);border-radius:7px;flex:none;justify-content:center;align-items:center;font-size:10px;font-weight:700;display:inline-flex}.member-info[data-v-1444af6d]{flex-direction:column;flex:1;min-width:0;display:flex}.member-name[data-v-1444af6d]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.member-role[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-faint);font-size:8.5px}.member-role.r-lead[data-v-1444af6d]{color:var(--hud-amber)}.member-role.r-worker[data-v-1444af6d]{color:var(--hud-cyan)}.member-select[data-v-1444af6d]{min-width:0;color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:6px;flex:1;padding:3px 6px;font-size:10px}.drop-chip[data-v-1444af6d],.error-chip[data-v-1444af6d]{z-index:20;border-radius:var(--hud-r-md);box-shadow:var(--hud-shadow);-webkit-backdrop-filter:blur(8px);text-overflow:ellipsis;white-space:nowrap;background:#0e1626f5;border:1px solid #2a3d63;align-items:center;gap:8px;max-width:70%;padding:8px 14px;font-size:11.5px;display:flex;position:absolute;top:64px;left:50%;overflow:hidden;transform:translate(-50%)}.drop-chip[data-v-1444af6d]{color:var(--hud-accent)}.error-chip[data-v-1444af6d]{color:var(--hud-danger);border-color:#ff6b6b66}.bind-row[data-v-1444af6d]{border:1px solid var(--hud-line-soft);border-radius:var(--hud-r-md);background:#0f1726;align-items:center;gap:8px;margin-bottom:6px;padding:7px 9px;display:flex}.bind-ico[data-v-1444af6d]{width:26px;height:26px;color:var(--hud-accent);background:#0d1a26;border-radius:7px;flex:none;place-items:center;display:grid}.bind-svg[data-v-1444af6d]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.bind-meta[data-v-1444af6d]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.bind-label[data-v-1444af6d]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.bind-val[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-cyan);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.bind-val b[data-v-1444af6d]{font-size:11px;font-weight:700}.bind-spark[data-v-1444af6d]{flex:none;width:56px;height:20px}.bind-x[data-v-1444af6d]{width:22px;height:22px;color:var(--hud-faint);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none}.bind-x[data-v-1444af6d]:hover{color:var(--hud-danger);background:#ff6b6b1f}.bind-add-wrap[data-v-1444af6d]{position:relative}.bind-add[data-v-1444af6d]{width:100%;height:30px;color:var(--hud-dim);border-radius:var(--hud-r-sm);cursor:pointer;background:0 0;border:1px dashed #274064;font-size:11px;transition:border-color .15s,color .15s}.bind-add[data-v-1444af6d]:hover{border-color:var(--hud-accent-dim);color:var(--hud-accent)}.bind-pop[data-v-1444af6d]{z-index:30;overscroll-behavior:contain;border-radius:var(--hud-r-md);max-height:min(46vh,420px);box-shadow:var(--hud-shadow-pop,0 16px 40px #0000008c);background:#0e1626;border:1px solid #27395c;position:absolute;bottom:calc(100% + 4px);left:0;right:0;overflow:hidden auto}.bind-pop[data-v-1444af6d]::-webkit-scrollbar{width:8px}.bind-pop[data-v-1444af6d]::-webkit-scrollbar-thumb{background:#2c4568 padding-box content-box;border:2px solid #0000;border-radius:9999px}.bind-pop[data-v-1444af6d]::-webkit-scrollbar-thumb:hover{background:#3d5a85 padding-box content-box}.bind-pop button[data-v-1444af6d]{width:100%;color:var(--hud-dim);cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:7px 10px;font-size:11.5px;display:flex}.bind-pop button[data-v-1444af6d]:hover{color:var(--hud-text);background:#12203a}.bind-pop .bind-svg[data-v-1444af6d]{color:var(--hud-accent)}.bind-pop button>span[data-v-1444af6d]{white-space:nowrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex;overflow:hidden}.bp-group[data-v-1444af6d]{flex-direction:column;display:flex}.bp-group+.bp-group[data-v-1444af6d]{border-top:1px solid #27395c8c}.bp-tpl[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--hud-faint);padding:6px 10px 3px;font-size:9px}.bp-cur[data-v-1444af6d]{color:var(--hud-faint);white-space:nowrap;text-overflow:ellipsis;max-width:96px;margin-left:auto;font-size:9.5px;font-style:normal;overflow:hidden}.bp-empty[data-v-1444af6d]{color:var(--hud-faint);padding:10px;font-size:10.5px}.dcw-row[data-v-1444af6d]{border:1px solid var(--hud-line);border-radius:var(--hud-r-md);transition:border-color .18s var(--hud-ease), box-shadow .18s var(--hud-ease);background:linear-gradient(#111a2b,#0e1522);flex-direction:column;gap:8px;margin-bottom:7px;padding:9px 10px 10px;display:flex}.dcw-row[data-v-1444af6d]:hover{border-color:var(--hud-line-hi);box-shadow:0 6px 18px #03070e66}.dcw-top[data-v-1444af6d]{align-items:center;gap:8px;display:flex}.dcw-id[data-v-1444af6d]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.dcw-name[data-v-1444af6d]{color:var(--hud-faint);text-overflow:ellipsis;white-space:nowrap;font-size:9.5px;overflow:hidden}.dcw-tag[data-v-1444af6d]{font-style:normal;font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-amber);vertical-align:1px;background:#f6c4531a;border:1px solid #f6c45352;border-radius:4px;margin-left:5px;padding:0 5px;font-size:8.5px;font-weight:700;display:inline-block}.dcw-cur[data-v-1444af6d]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;flex:none;align-items:baseline;gap:3px;display:flex}.dcw-cur b[data-v-1444af6d]{color:var(--hud-cyan);text-shadow:0 0 14px #41c8f447;font-size:16px;font-weight:700}.dcw-cur i[data-v-1444af6d]{color:var(--hud-faint);font-size:9.5px;font-style:normal}.dcw-win[data-v-1444af6d]{border:1px solid var(--hud-line-soft);background:#0a111db8;border-radius:7px;align-items:center;gap:7px;padding:4px 8px;display:flex}.dcw-win em[data-v-1444af6d]{letter-spacing:.14em;color:var(--hud-faint);flex:none;font-size:8.5px;font-style:normal;font-weight:700}.dcw-win-num[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-dim);font-variant-numeric:tabular-nums;flex:none;font-size:9.5px}.dcw-win-track[data-v-1444af6d]{background:#1a2740;border-radius:999px;flex:1;height:4px;position:relative}.dcw-win-track[data-v-1444af6d]:before{content:"";border-radius:inherit;background:linear-gradient(90deg,#5a82af66,#5a82af24);position:absolute;inset:0}.dcw-win-track i[data-v-1444af6d]{border:2px solid var(--hud-cyan);width:9px;height:9px;transition:left .3s var(--hud-ease);background:#dfeef8;border-radius:50%;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 8px #41c8f48c}.dcw-win.recipe em[data-v-1444af6d]{color:var(--hud-amber)}.dcw-win.recipe .dcw-win-track[data-v-1444af6d]:before{background:linear-gradient(90deg,#f6c45380,#f6c45329)}.dcw-win.recipe .dcw-win-track i[data-v-1444af6d]{border-color:var(--hud-amber);box-shadow:0 0 8px #f6c4538c}.dcw-write[data-v-1444af6d]{gap:6px;display:flex}.dcw-write input[data-v-1444af6d]{min-width:0;height:27px;font-family:var(--font-mono);color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);transition:border-color .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border-radius:7px;flex:1;padding:0 9px;font-size:11.5px}.dcw-write input[data-v-1444af6d]::placeholder{color:var(--hud-faint);font-size:10px}.dcw-write input[data-v-1444af6d]:focus{border-color:var(--hud-accent);outline:none;box-shadow:0 0 0 3px #35e0a021}.dcw-send[data-v-1444af6d]{height:27px;font-family:var(--font-mono);letter-spacing:.1em;color:#04120c;background:var(--hud-accent-dim);cursor:pointer;transition:background .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border:0;border-radius:7px;flex:none;padding:0 14px;font-size:10.5px;font-weight:700}.dcw-send[data-v-1444af6d]:hover:not(:disabled){background:var(--hud-accent);box-shadow:0 0 14px #35e0a059}.dcw-send[data-v-1444af6d]:disabled{opacity:.38;cursor:default}.dcw-err[data-v-1444af6d]{color:var(--hud-danger);background:#ff6b6b14;border:1px solid #ff6b6b47;border-radius:6px;padding:4px 8px;font-size:10px;display:block}.bind-select[data-v-1444af6d]:hover,.daq-ctl-cycle input[data-v-1444af6d]:hover,.daq-num[data-v-1444af6d]:hover,.obj-input[data-v-1444af6d]:hover,.obj-select[data-v-1444af6d]:hover{border-color:var(--hud-line-hi)}.bind-select[data-v-1444af6d]:focus,.daq-ctl-cycle input[data-v-1444af6d]:focus,.daq-num[data-v-1444af6d]:focus,.obj-input[data-v-1444af6d]:focus,.obj-select[data-v-1444af6d]:focus{border-color:var(--hud-accent);outline:none;box-shadow:0 0 0 3px #35e0a021}input[type=number][data-v-1444af6d]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-1444af6d]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-1444af6d]{appearance:textfield}.obj-range[data-v-1444af6d],.scale-range[data-v-1444af6d]{appearance:none;cursor:pointer;background:#1a2740;border-radius:999px;outline:none;height:4px}.obj-range[data-v-1444af6d]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--hud-accent);width:13px;height:13px;-webkit-transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);background:#e8f6ef;border-radius:50%;box-shadow:0 0 0 3px #35e0a026,0 2px 6px #03070e80}.scale-range[data-v-1444af6d]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--hud-accent);width:13px;height:13px;-webkit-transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);background:#e8f6ef;border-radius:50%;box-shadow:0 0 0 3px #35e0a026,0 2px 6px #03070e80}.obj-range[data-v-1444af6d]::-webkit-slider-thumb:hover{transform:scale(1.18);box-shadow:0 0 0 5px #35e0a033,0 2px 8px #03070e8c}.scale-range[data-v-1444af6d]::-webkit-slider-thumb:hover{transform:scale(1.18);box-shadow:0 0 0 5px #35e0a033,0 2px 8px #03070e8c}.obj-range[data-v-1444af6d]::-moz-range-thumb{border:2px solid var(--hud-accent);background:#e8f6ef;border-radius:50%;width:13px;height:13px;box-shadow:0 0 0 3px #35e0a026}.scale-range[data-v-1444af6d]::-moz-range-thumb{border:2px solid var(--hud-accent);background:#e8f6ef;border-radius:50%;width:13px;height:13px;box-shadow:0 0 0 3px #35e0a026}.obj-range[data-v-1444af6d]::-moz-range-track{background:#1a2740;border-radius:999px;height:4px}.scale-range[data-v-1444af6d]::-moz-range-track{background:#1a2740;border-radius:999px;height:4px}.bind-row[data-v-1444af6d]{transition:border-color .18s var(--hud-ease), box-shadow .18s var(--hud-ease)}.bind-row[data-v-1444af6d]:hover{border-color:var(--hud-line-hi);box-shadow:0 6px 18px #03070e66}.bind-add[data-v-1444af6d]:hover{background:#35e0a00d;border-style:solid}.daq-bind-bar[data-v-1444af6d]{gap:6px;display:flex}.bind-select[data-v-1444af6d]{min-width:0;height:28px;color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:var(--hud-r-sm);transition:border-color .15s var(--hud-ease), box-shadow .15s var(--hud-ease), color .15s var(--hud-ease);flex:1;padding:0 8px;font-size:10.5px}.bind-select[data-v-1444af6d]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.bind-select[data-v-1444af6d]:focus{border-color:var(--hud-accent);color:var(--hud-text);outline:none;box-shadow:0 0 0 3px #35e0a021}.bind-add-btn[data-v-1444af6d]{color:#04120c;background:var(--hud-accent-dim);border-radius:var(--hud-r-sm);cursor:pointer;height:28px;transition:background .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border:0;flex:none;padding:0 12px;font-size:10.5px;font-weight:600}.bind-add-btn[data-v-1444af6d]:hover:not(:disabled){background:var(--hud-accent);box-shadow:0 0 14px #35e0a059}.bind-add-btn[data-v-1444af6d]:disabled{opacity:.4;cursor:default}.daq-info-row[data-v-1444af6d]{color:var(--hud-dim);justify-content:space-between;gap:8px;padding:3px 0;font-size:11px;display:flex}.daq-info-row b[data-v-1444af6d]{font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;font-weight:600}.daq-info-row b.cy[data-v-1444af6d]{color:var(--hud-cyan);font-size:13px}.daq-ctrl[data-v-1444af6d]{background:var(--hud-panel);border:1px solid var(--hud-line);border-radius:var(--hud-r-sm);justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;padding:8px 10px;display:flex}.daq-ctl-btn[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.05em;color:var(--hud-dim);cursor:pointer;border:1px solid var(--hud-line-hi);border-radius:var(--hud-r-sm);background:0 0;padding:4px 12px;font-size:11px}.daq-ctl-btn.on[data-v-1444af6d]{color:var(--hud-accent);border-color:#35e0a073}.daq-ctl-cycle[data-v-1444af6d]{color:var(--hud-faint);align-items:center;gap:5px;font-size:10.5px;display:inline-flex}.daq-ctl-cycle input[data-v-1444af6d],.daq-num[data-v-1444af6d]{width:64px;font-family:var(--font-mono);color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:6px;padding:2px 6px;font-size:11px}.daq-th-inputs[data-v-1444af6d]{color:var(--hud-faint);align-items:center;gap:4px;font-size:10px;display:inline-flex}.bind-add-btn.warn[data-v-1444af6d]:not(:disabled){color:var(--hud-amber);box-shadow:none;background:#f6c4531f}.bind-add-btn.warn[data-v-1444af6d]:hover:not(:disabled){background:#f6c45333;box-shadow:0 0 14px #f6c45340}.bind-add-btn.danger[data-v-1444af6d]:not(:disabled){color:var(--hud-danger);box-shadow:none;background:#ff6b6b1a}.bind-add-btn.danger[data-v-1444af6d]:hover:not(:disabled){background:#ff6b6b2e;box-shadow:0 0 14px #ff6b6b40}.statusbar[data-v-1444af6d]{border-top:1px solid var(--hud-line-soft);height:30px;color:var(--hud-dim);z-index:60;background:#0a101b;flex:none;align-items:center;gap:18px;padding:0 14px;font-size:11px;display:flex;position:relative}.statusbar b[data-v-1444af6d]{color:var(--hud-accent);font-weight:600}.statusbar .sb-stats[data-v-1444af6d]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:.02em;align-items:center;gap:7px;display:inline-flex}.sb-stats b[data-v-1444af6d]{color:var(--hud-text);font-weight:600}.sb-stats i[data-v-1444af6d]{color:var(--hud-line-hi);font-style:normal}.sb-dot[data-v-1444af6d]{background:var(--hud-accent);width:7px;height:7px;box-shadow:0 0 6px var(--hud-accent);vertical-align:1px;border-radius:50%;margin-right:6px;display:inline-block}.sb-dot.red[data-v-1444af6d]{background:var(--hud-danger);box-shadow:0 0 6px var(--hud-danger)}.sb-dot[data-v-1444af6d]:not(.red){animation:sb-pulse-1444af6d 2.4s var(--hud-ease) infinite}@keyframes sb-pulse-1444af6d{0%,to{opacity:1}50%{opacity:.4}}@media (prefers-reduced-motion:reduce){.sb-dot[data-v-1444af6d]:not(.red){animation:none}}.sb-lat[data-v-1444af6d]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;position:absolute;left:50%;transform:translate(-50%)}.statusbar .copy[data-v-1444af6d]{color:var(--hud-faint);font-family:var(--font-mono);margin-left:auto;font-size:10px}.loading-mask[data-v-1444af6d]{z-index:90;background:var(--hud-bg);flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:fixed;inset:0}.loading-spinner[data-v-1444af6d]{border:2.5px solid var(--hud-line);border-top-color:var(--hud-accent);border-radius:50%;width:30px;height:30px;animation:.9s linear infinite spin-1444af6d}.loading-text[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.24em;color:var(--hud-dim);font-size:11px}@keyframes spin-1444af6d{to{transform:rotate(1turn)}}@keyframes ty-bounce-1444af6d{0%,60%,to{opacity:.5;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.drag-grip[data-v-1444af6d]{cursor:grab;touch-action:none}.drag-grip[data-v-1444af6d]:active{cursor:grabbing}.drag-panel[data-v-1444af6d]{will-change:left, top}.town-view[data-v-1444af6d] ::-webkit-scrollbar{width:8px;height:8px}.town-view[data-v-1444af6d] ::-webkit-scrollbar-track{background:0 0}.town-view[data-v-1444af6d] ::-webkit-scrollbar-thumb{background:#1c2942;border:2px solid #080d16;border-radius:4px}.town-view[data-v-1444af6d] ::-webkit-scrollbar-thumb:hover{background:#2c4568}.al-state[data-v-1444af6d]:active,.bind-add[data-v-1444af6d]:active,.bind-x[data-v-1444af6d]:active,.bp-btn[data-v-1444af6d]:active,.btn[data-v-1444af6d]:active,.lg-chip[data-v-1444af6d]:active,.mini-btn[data-v-1444af6d]:active,.obj-mini[data-v-1444af6d]:active,.snap-toggle[data-v-1444af6d]:active,.vp-tool[data-v-1444af6d]:active{transform:scale(.96)}.al-state[data-v-1444af6d],.bind-add[data-v-1444af6d],.bp-btn[data-v-1444af6d],.btn[data-v-1444af6d],.lg-chip[data-v-1444af6d],.mini-btn[data-v-1444af6d],.obj-mini[data-v-1444af6d],.snap-toggle[data-v-1444af6d],.vp-tool[data-v-1444af6d]{transition-property:filter,background,border-color,color,transform,opacity;transition-duration:.15s;transition-timing-function:var(--hud-ease)}.town-view button[data-v-1444af6d]:focus-visible,.town-view input[data-v-1444af6d]:focus-visible,.town-view select[data-v-1444af6d]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}.vp-title h2[data-v-1444af6d]{color:var(--hud-text)}@keyframes estop-pulse-1444af6d{50%{filter:brightness(1.35)}}.btn-danger.armed[data-v-1444af6d]{animation:1s ease-in-out infinite estop-pulse-1444af6d}@media (prefers-reduced-motion:reduce){.callout[data-v-1444af6d],.inspector[data-v-1444af6d],.btn-danger.armed[data-v-1444af6d],.loading-spinner[data-v-1444af6d],.rpg-line.live .rpg-bubble[data-v-1444af6d],.ty-dot[data-v-1444af6d]{animation:none}}@media (width<=1180px){.app[data-v-1444af6d]{grid-template-columns:0 1fr 0}.rail[data-v-1444af6d]{z-index:70;width:288px;transition:transform .22s var(--hud-ease);box-shadow:var(--hud-shadow);background:#0a101b;position:fixed;top:50px;bottom:30px}.rail-left[data-v-1444af6d]{left:0;transform:translate(-104%)}.rail-right[data-v-1444af6d]{right:0;transform:translate(104%)}.dock[data-v-1444af6d],.stage-dock[data-v-1444af6d]{grid-template-columns:1fr}}.approval-card[data-v-1444af6d]{border-radius:var(--hud-r-md);background:#f6c4530f;border:1px solid #f6c4534d;margin-bottom:7px;padding:8px 9px}.approval-detail[data-v-1444af6d]{color:var(--hud-text);font-size:11px}.approval-ttl[data-v-1444af6d]{font-family:var(--font-mono);letter-spacing:.05em;color:var(--hud-amber);margin-top:5px;font-size:9.5px}.approval-ttl.urgent[data-v-1444af6d]{color:var(--hud-danger)}