agentworkshop 0.7.23 → 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 (344) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/0jKrzLuM.js +19 -0
  3. package/.output/public/_nuxt/2jaJHWIJ.js +1 -0
  4. package/.output/public/_nuxt/{Cor9siSf.js → 6PZPfFcO.js} +1 -1
  5. package/.output/public/_nuxt/B7gZokg82.js +209 -0
  6. package/.output/public/_nuxt/B8kt898d.js +1 -0
  7. package/.output/public/_nuxt/{B-xskWta.js → BCJFMBQ6.js} +1 -1
  8. package/.output/public/_nuxt/BFGpEo8S.js +1 -0
  9. package/.output/public/_nuxt/BG4zduPf.js +14 -0
  10. package/.output/public/_nuxt/{DNxVTfhe.js → BGhOrgle.js} +1 -1
  11. package/.output/public/_nuxt/{n3vMFfrv.js → BHcpzI2n.js} +3 -3
  12. package/.output/public/_nuxt/{CEHmSufQ.js → BTLEvDxM.js} +1 -1
  13. package/.output/public/_nuxt/{CYBq3kS7.js → BWyR3awA.js} +1 -1
  14. package/.output/public/_nuxt/Bc89zKq2.js +1 -0
  15. package/.output/public/_nuxt/BetmGSO4.js +1 -0
  16. package/.output/public/_nuxt/{DAR70Lf5.js → BgCrZKv_2.js} +1 -1
  17. package/.output/public/_nuxt/BowTbasd.js +1 -0
  18. package/.output/public/_nuxt/BvtknqSC2.js +1 -0
  19. package/.output/public/_nuxt/CJviSvm-.js +1 -0
  20. package/.output/public/_nuxt/CTfqWGdy.js +1 -0
  21. package/.output/public/_nuxt/Cb3SnTM8.js +1 -0
  22. package/.output/public/_nuxt/Chc5pfAA.js +1 -0
  23. package/.output/public/_nuxt/CmHzfVc5.js +3 -0
  24. package/.output/public/_nuxt/Cn3J3NXR.js +23 -0
  25. package/.output/public/_nuxt/CobSUzQv.js +2 -0
  26. package/.output/public/_nuxt/{kZV5TQvh2.js → CucID8qg2.js} +1 -1
  27. package/.output/public/_nuxt/{CfVAr2nf.js → Cz9gD2Yo.js} +1 -1
  28. package/.output/public/_nuxt/{E88a-JCG.js → DGAOugLt.js} +1 -1
  29. package/.output/public/_nuxt/DHbTyoAV.js +1 -0
  30. package/.output/public/_nuxt/{BxtpDtzC.js → DNQF_TXX.js} +1 -1
  31. package/.output/public/_nuxt/DfLUN8kY.js +1 -0
  32. package/.output/public/_nuxt/DjU9Dx5Y.js +1 -0
  33. package/.output/public/_nuxt/DnziMlcX.js +1 -0
  34. package/.output/public/_nuxt/{BBwMH_hG.js → DoAlYsiF.js} +1 -1
  35. package/.output/public/_nuxt/{DA4lxCWC2.js → DosOJEmZ2.js} +2 -2
  36. package/.output/public/_nuxt/{DWcEk1ur2.js → DvgKXPgu2.js} +1 -1
  37. package/.output/public/_nuxt/{ed5qX-x5.js → Q_SJDSgx.js} +1 -1
  38. package/.output/public/_nuxt/{TownView.zu2rU5nS.css → TownView.CtskuMXS.css} +1 -1
  39. package/.output/public/_nuxt/XY2z78rj.js +1 -0
  40. package/.output/public/_nuxt/_id_.DdbYeLqn.css +1 -0
  41. package/.output/public/_nuxt/bFnZa2yd.js +1 -0
  42. package/.output/public/_nuxt/builds/latest.json +1 -1
  43. package/.output/public/_nuxt/builds/meta/f7a8e33d-5422-45ac-895d-27168f97e3ad.json +1 -0
  44. package/.output/public/_nuxt/daq.DGV9QS8d.css +1 -0
  45. package/.output/public/_nuxt/entry.BN02X8iR.css +1 -0
  46. package/.output/public/_nuxt/monitor.B--1dPzs.css +1 -0
  47. package/.output/public/_nuxt/permissions.B1pjGChZ.css +1 -0
  48. package/.output/public/_nuxt/plugins.DpCuwaJt.css +1 -0
  49. package/.output/public/_nuxt/rkVgzg62.js +1 -0
  50. package/.output/public/_nuxt/settings.W6qrYAui.css +1 -0
  51. package/.output/public/_nuxt/teams.BBXVkyKq.css +1 -0
  52. package/.output/public/_nuxt/tokens.xRb1fSPU.css +1 -0
  53. package/.output/public/_nuxt/users.DuAt_Zwf.css +1 -0
  54. package/.output/public/_nuxt/workshop.BJg84pOK.css +1 -0
  55. package/.output/public/assets/game/character/yangyang-walk.glb +0 -0
  56. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  57. package/.output/server/chunks/_/nitro.mjs +1073 -925
  58. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  59. package/.output/server/chunks/build/{OmpTerminalPanel-Ban3yJZ4.mjs → OmpTerminalPanel-Cw_Vw9oO.mjs} +3 -3
  60. package/.output/server/chunks/build/{OmpTerminalPanel-Ban3yJZ4.mjs.map → OmpTerminalPanel-Cw_Vw9oO.mjs.map} +1 -1
  61. package/.output/server/chunks/build/{TownView-DxeQe1Bl.mjs → TownView-ftIylqiD.mjs} +178 -151
  62. package/.output/server/chunks/build/{TownView-DxeQe1Bl.mjs.map → TownView-ftIylqiD.mjs.map} +1 -1
  63. package/.output/server/chunks/build/{_id_-DQDqj-cZ.mjs → _id_-3Axz2-gV.mjs} +35 -35
  64. package/.output/server/chunks/build/{_id_-DQDqj-cZ.mjs.map → _id_-3Axz2-gV.mjs.map} +1 -1
  65. package/.output/server/chunks/build/{_id_-DY6v6sqB.mjs → _id_-CahfkmEt.mjs} +5 -5
  66. package/.output/server/chunks/build/{_id_-DY6v6sqB.mjs.map → _id_-CahfkmEt.mjs.map} +1 -1
  67. package/.output/server/chunks/build/{_wsId_-C2O5zZsI.mjs → _wsId_-BymlQhzS.mjs} +13 -15
  68. package/.output/server/chunks/build/{_wsId_-C2O5zZsI.mjs.map → _wsId_-BymlQhzS.mjs.map} +1 -1
  69. package/.output/server/chunks/build/{agents--6bzGtES.mjs → agents-DuMiSWKp.mjs} +7 -9
  70. package/.output/server/chunks/build/agents-DuMiSWKp.mjs.map +1 -0
  71. package/.output/server/chunks/build/button-DEcZFcqN.mjs +1 -1
  72. package/.output/server/chunks/build/{card-CCPQoKlh.mjs → card-Dipvaykh.mjs} +4 -4
  73. package/.output/server/chunks/build/{card-CCPQoKlh.mjs.map → card-Dipvaykh.mjs.map} +1 -1
  74. package/.output/server/chunks/build/{channel-templates-C1Bb-U75.mjs → channel-templates-BStqJ-of.mjs} +5 -7
  75. package/.output/server/chunks/build/channel-templates-BStqJ-of.mjs.map +1 -0
  76. package/.output/server/chunks/build/{checkbox-Dv1kjaUZ.mjs → checkbox-C1gABOca.mjs} +5 -5
  77. package/.output/server/chunks/build/{checkbox-Dv1kjaUZ.mjs.map → checkbox-C1gABOca.mjs.map} +1 -1
  78. package/.output/server/chunks/build/{daq-B-3xCp_2.mjs → daq-ChYCABz1.mjs} +312 -426
  79. package/.output/server/chunks/build/daq-ChYCABz1.mjs.map +1 -0
  80. package/.output/server/chunks/build/{dcw-BL2dhuz7.mjs → dcw-CcQNGggh.mjs} +3 -3
  81. package/.output/server/chunks/build/{dcw-BL2dhuz7.mjs.map → dcw-CcQNGggh.mjs.map} +1 -1
  82. package/.output/server/chunks/build/{default-DdV642BY.mjs → default-95-zOTPt.mjs} +3 -4
  83. package/.output/server/chunks/build/{default-DdV642BY.mjs.map → default-95-zOTPt.mjs.map} +1 -1
  84. package/.output/server/chunks/build/dropdown-vhn1NPFs.mjs +1 -1
  85. package/.output/server/chunks/build/{input-number-CZ3ZrCsy.mjs → input-number-Bd55elNN.mjs} +3 -3
  86. package/.output/server/chunks/build/{input-number-CZ3ZrCsy.mjs.map → input-number-Bd55elNN.mjs.map} +1 -1
  87. package/.output/server/chunks/build/{input-DxDqeyQW.mjs → input-sf_BT6o6.mjs} +553 -5
  88. package/.output/server/chunks/build/input-sf_BT6o6.mjs.map +1 -0
  89. package/.output/server/chunks/build/{logs-Dto_umFY.mjs → logs-D-2UyGtE.mjs} +3 -3
  90. package/.output/server/chunks/build/{logs-Dto_umFY.mjs.map → logs-D-2UyGtE.mjs.map} +1 -1
  91. package/.output/server/chunks/build/menu-WCrlpYVh.mjs +2 -2
  92. package/.output/server/chunks/build/modal-yvUquPj5.mjs +2 -2
  93. package/.output/server/chunks/build/{monitor-miqq9xHB.mjs → monitor-mfG5jBtz.mjs} +70 -192
  94. package/.output/server/chunks/build/monitor-mfG5jBtz.mjs.map +1 -0
  95. package/.output/server/chunks/build/{pages-D9tOoJsf.mjs → pages-Dfosfchr.mjs} +5 -6
  96. package/.output/server/chunks/build/pages-Dfosfchr.mjs.map +1 -0
  97. package/.output/server/chunks/build/{permissions-CxEgXic0.mjs → permissions-B-hhZuzm.mjs} +288 -194
  98. package/.output/server/chunks/build/permissions-B-hhZuzm.mjs.map +1 -0
  99. package/.output/server/chunks/build/{plugins-wLIKHcIE.mjs → plugins-DZR0T4Mh.mjs} +17 -17
  100. package/.output/server/chunks/build/{plugins-wLIKHcIE.mjs.map → plugins-DZR0T4Mh.mjs.map} +1 -1
  101. package/.output/server/chunks/build/popconfirm-CRaHcz5O.mjs +1 -1
  102. package/.output/server/chunks/build/{segmented-ChmQZwz6.mjs → segmented-LPPREMtZ.mjs} +336 -5
  103. package/.output/server/chunks/build/{segmented-ChmQZwz6.mjs.map → segmented-LPPREMtZ.mjs.map} +1 -1
  104. package/.output/server/chunks/build/{settings-BPBll_7K.mjs → settings-BajN9TQW.mjs} +254 -27
  105. package/.output/server/chunks/build/settings-BajN9TQW.mjs.map +1 -0
  106. package/.output/server/chunks/build/space-CCBYAkXt.mjs +1 -1
  107. package/.output/server/chunks/build/switch-CelRXpcy.mjs +1 -1
  108. package/.output/server/chunks/build/{table-BtksyDlQ.mjs → table-Bf1r2JjE.mjs} +5 -5
  109. package/.output/server/chunks/build/{table-BtksyDlQ.mjs.map → table-Bf1r2JjE.mjs.map} +1 -1
  110. package/.output/server/chunks/build/{tabs-DQv-_-R6.mjs → tabs-BM3tAh_J.mjs} +2 -2
  111. package/.output/server/chunks/build/{tabs-DQv-_-R6.mjs.map → tabs-BM3tAh_J.mjs.map} +1 -1
  112. package/.output/server/chunks/build/{tag-A0tZ2Ouq.mjs → tag-NO9jEqKy.mjs} +3 -3
  113. package/.output/server/chunks/build/{tag-A0tZ2Ouq.mjs.map → tag-NO9jEqKy.mjs.map} +1 -1
  114. package/.output/server/chunks/build/{teams-DD8ZXTKL.mjs → teams-t2SkRlJP.mjs} +349 -51
  115. package/.output/server/chunks/build/teams-t2SkRlJP.mjs.map +1 -0
  116. package/.output/server/chunks/build/{tokens-Dxnuw96_.mjs → tokens-DiCojbN8.mjs} +296 -200
  117. package/.output/server/chunks/build/tokens-DiCojbN8.mjs.map +1 -0
  118. package/.output/server/chunks/build/{town-Dsh0jlwZ.mjs → town-C7QM8DYK.mjs} +5 -5
  119. package/.output/server/chunks/build/{town-Dsh0jlwZ.mjs.map → town-C7QM8DYK.mjs.map} +1 -1
  120. package/.output/server/chunks/build/{useDaqStream-DkRL3tEW.mjs → useDaqStream-BeA2X8KR.mjs} +26 -11
  121. package/.output/server/chunks/build/useDaqStream-BeA2X8KR.mjs.map +1 -0
  122. package/.output/server/chunks/build/{useDcwStream-DyB2ufQI.mjs → useDcwStream-BJW_MitY.mjs} +14 -6
  123. package/.output/server/chunks/build/useDcwStream-BJW_MitY.mjs.map +1 -0
  124. package/.output/server/chunks/build/{useDeviceTwins-ZbT86L9O.mjs → useDeviceTwins-Dwz_EY_i.mjs} +2 -2
  125. package/.output/server/chunks/build/{useDeviceTwins-ZbT86L9O.mjs.map → useDeviceTwins-Dwz_EY_i.mjs.map} +1 -1
  126. package/.output/server/chunks/build/{useOpsLog-8HCYFb6n.mjs → useOpsLog-Dm8QEb1I.mjs} +2 -2
  127. package/.output/server/chunks/build/{useOpsLog-8HCYFb6n.mjs.map → useOpsLog-Dm8QEb1I.mjs.map} +1 -1
  128. package/.output/server/chunks/build/{useWorkshopApi-D2gq06N2.mjs → useWorkshopApi-B-L3MmIX.mjs} +9 -2
  129. package/.output/server/chunks/build/{useWorkshopApi-D2gq06N2.mjs.map → useWorkshopApi-B-L3MmIX.mjs.map} +1 -1
  130. package/.output/server/chunks/build/{users-D6RNylrW.mjs → users-B9SAdEtH.mjs} +12 -13
  131. package/.output/server/chunks/build/users-B9SAdEtH.mjs.map +1 -0
  132. package/.output/server/chunks/build/{workshop-CTcYDq2i.mjs → workshop-81xhz368.mjs} +21 -22
  133. package/.output/server/chunks/build/workshop-81xhz368.mjs.map +1 -0
  134. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +14 -2
  135. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
  136. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
  137. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +40 -0
  138. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs.map +1 -0
  139. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +21 -9
  140. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs.map +1 -1
  141. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +33 -0
  142. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs.map +1 -0
  143. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +1 -1
  144. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +15 -1
  145. package/.output/server/chunks/routes/api/workshop/channels.post.mjs.map +1 -1
  146. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +1 -1
  147. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +1 -1
  148. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +1 -1
  149. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +1 -1
  150. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -1
  151. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +1 -1
  152. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +1 -1
  153. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +1 -1
  154. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +1 -1
  155. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +1 -1
  156. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +1 -1
  157. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +1 -1
  158. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
  159. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
  160. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
  161. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -1
  162. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
  163. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +1 -1
  164. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +1 -1
  165. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +1 -1
  166. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
  167. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
  168. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
  169. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -1
  170. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
  171. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +1 -1
  172. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
  173. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
  174. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
  175. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +1 -1
  176. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +1 -1
  177. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +1 -1
  178. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
  179. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +1 -1
  180. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
  181. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +1 -1
  182. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
  183. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
  184. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
  185. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
  186. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
  187. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +1 -1
  188. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +1 -1
  189. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
  190. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
  191. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
  192. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
  193. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
  194. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +1 -1
  195. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -1
  196. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
  197. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
  198. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
  199. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
  200. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -1
  201. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -1
  202. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +1 -1
  203. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  204. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
  205. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
  206. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
  207. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  208. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
  209. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +1 -1
  210. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
  211. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +1 -1
  212. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -1
  213. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -1
  214. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  215. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  216. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  217. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  218. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
  219. package/.output/server/chunks/routes/renderer.mjs +3 -3
  220. package/.output/server/chunks/virtual/entry.mjs +381 -438
  221. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  222. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  223. package/.output/server/package.json +1 -1
  224. package/app/app.vue +7 -0
  225. package/app/assets/css/main.css +12 -1
  226. package/app/components/workshop/DaqNodeRow.vue +398 -0
  227. package/app/components/workshop/town/ModelPreview3D.vue +26 -4
  228. package/app/components/workshop/town/TownScene3D.ts +60 -12
  229. package/app/components/workshop/town/TownView.vue +4 -3
  230. package/app/composables/workshop/useCharacterAssets.ts +1 -0
  231. package/app/composables/workshop/useDaqStream.ts +24 -5
  232. package/app/composables/workshop/useDcwStream.ts +13 -4
  233. package/app/composables/workshop/useWorkshopApi.ts +294 -259
  234. package/app/pages/daq/[id].vue +27 -3
  235. package/app/pages/daq/index.vue +8 -355
  236. package/app/pages/monitor.vue +56 -68
  237. package/app/pages/permissions/index.vue +86 -82
  238. package/app/pages/plugins/index.vue +12 -7
  239. package/app/pages/settings.vue +253 -2
  240. package/app/pages/tokens.vue +94 -96
  241. package/app/pages/users.vue +10 -18
  242. package/app/pages/workshop/index.vue +34 -5
  243. package/app/pages/workshop/teams.vue +212 -2
  244. package/i18n/dicts/_en.json +361 -1
  245. package/i18n/dicts/plugins.json +10 -0
  246. package/i18n/dicts/settings.json +1 -0
  247. package/i18n/dicts/teamPlugins.json +10 -0
  248. package/i18n/locales/en.ts +1861 -1901
  249. package/i18n/locales/zh-CN.ts +1789 -1830
  250. package/package.json +149 -148
  251. package/public/assets/game/character/yangyang-walk.glb +0 -0
  252. package/scripts/_dbg-cpu-profile.mjs +53 -0
  253. package/scripts/_dbg-logs-ui-e2e.py +3 -2
  254. package/scripts/_dbg-render-perf.mjs +142 -0
  255. package/scripts/_dbg-render-regression.mjs +130 -0
  256. package/scripts/_dbg-ui-survey.py +52 -0
  257. package/scripts/i18n-merge.mjs +152 -30
  258. package/scripts/production-closed-loop-e2e.mjs +254 -0
  259. package/scripts/team-plugins-api-smoke.mjs +149 -0
  260. package/scripts/three-system-e2e.mjs +448 -0
  261. package/server/api/plugins/[name]/[...path].ts +46 -31
  262. package/server/api/workshop/channels/[id]/plugins/index.get.ts +35 -0
  263. package/server/api/workshop/channels/[id]/plugins/index.put.ts +39 -0
  264. package/server/api/workshop/channels.post.ts +17 -0
  265. package/server/data/dcw-lines.json +14 -0
  266. package/server/data/dcw-products.json +14 -0
  267. package/server/data/dcw-recipes.json +23 -1
  268. package/server/data/dcw-rollback.json +585 -10
  269. package/server/data/dcw-runs.json +27 -27
  270. package/server/data/dcw-writes.json +96 -0
  271. package/server/data/dcws.json +394 -366
  272. package/server/data/scene-layouts.json +66 -0
  273. package/server/plugins/aw-plugins.ts +35 -27
  274. package/server/plugins-builtin/diag-bridge/index.mjs +556 -0
  275. package/server/plugins-builtin/rag-bridge/index.mjs +364 -0
  276. package/server/services/workshop/agents/host-tool-bridge.ts +659 -642
  277. package/server/services/workshop/agents/omp-agent.ts +1178 -1178
  278. package/server/services/workshop/agents/plugin-tools.ts +10 -1
  279. package/server/services/workshop/db/channel-plugins.repo.ts +65 -0
  280. package/server/services/workshop/plugins/host.mjs +52 -4
  281. package/server/services/workshop/runtime/manager.ts +2976 -2968
  282. package/shared/config/schema.json +4 -0
  283. package/.output/public/_nuxt/BJbhwS5o.js +0 -1
  284. package/.output/public/_nuxt/BUcmySDa2.js +0 -209
  285. package/.output/public/_nuxt/BWC4HQHQ.js +0 -1
  286. package/.output/public/_nuxt/BbZAzXjZ2.js +0 -1
  287. package/.output/public/_nuxt/BgOhoDTI.js +0 -1
  288. package/.output/public/_nuxt/Bo8t5fkJ.js +0 -1
  289. package/.output/public/_nuxt/BuiGDfMB.js +0 -1
  290. package/.output/public/_nuxt/BxPPAkGA.js +0 -3
  291. package/.output/public/_nuxt/C53drffV.js +0 -1
  292. package/.output/public/_nuxt/CcwJ2mrD2.js +0 -1
  293. package/.output/public/_nuxt/Cr9DkD1d.js +0 -1
  294. package/.output/public/_nuxt/DTYBfjRY.js +0 -1
  295. package/.output/public/_nuxt/DVoWWlUW.js +0 -1
  296. package/.output/public/_nuxt/Dc32T41C.js +0 -1
  297. package/.output/public/_nuxt/Dhqra7NB.js +0 -1
  298. package/.output/public/_nuxt/DlRO_q5L.js +0 -1
  299. package/.output/public/_nuxt/DsUUYP292.js +0 -1
  300. package/.output/public/_nuxt/Dsdy4Ua-.js +0 -1
  301. package/.output/public/_nuxt/DtzZqC0z.js +0 -1
  302. package/.output/public/_nuxt/Ko9mMsJj.js +0 -14
  303. package/.output/public/_nuxt/RzXYI9FM.js +0 -23
  304. package/.output/public/_nuxt/UtviM1bg.js +0 -1
  305. package/.output/public/_nuxt/_id_.C-YXjn8Q.css +0 -1
  306. package/.output/public/_nuxt/bAFueD6a.js +0 -1
  307. package/.output/public/_nuxt/builds/meta/1adc96e0-8bbd-4a79-ac7e-b6952556fef8.json +0 -1
  308. package/.output/public/_nuxt/daq.3OKj58HH.css +0 -1
  309. package/.output/public/_nuxt/dbi5bHkY.js +0 -2
  310. package/.output/public/_nuxt/eHYnGew0.js +0 -19
  311. package/.output/public/_nuxt/entry.OR_psZHp.css +0 -1
  312. package/.output/public/_nuxt/jyQyulh-.js +0 -1
  313. package/.output/public/_nuxt/monitor.CmwpEUCI.css +0 -1
  314. package/.output/public/_nuxt/permissions.DTRtZeTw.css +0 -1
  315. package/.output/public/_nuxt/plugins.BcSEwwGb.css +0 -1
  316. package/.output/public/_nuxt/settings.BqMF2nfj.css +0 -1
  317. package/.output/public/_nuxt/teams.DN0pAGGu.css +0 -1
  318. package/.output/public/_nuxt/tokens.BVXU1jOK.css +0 -1
  319. package/.output/public/_nuxt/users.D8lcLE62.css +0 -1
  320. package/.output/public/_nuxt/workshop.CbymC2LY.css +0 -1
  321. package/.output/public/_nuxt/zVkqCZ78.js +0 -1
  322. package/.output/server/chunks/build/Col-biaNnEPf.mjs +0 -338
  323. package/.output/server/chunks/build/Col-biaNnEPf.mjs.map +0 -1
  324. package/.output/server/chunks/build/agents--6bzGtES.mjs.map +0 -1
  325. package/.output/server/chunks/build/channel-templates-C1Bb-U75.mjs.map +0 -1
  326. package/.output/server/chunks/build/daq-B-3xCp_2.mjs.map +0 -1
  327. package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs +0 -554
  328. package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs.map +0 -1
  329. package/.output/server/chunks/build/input-DxDqeyQW.mjs.map +0 -1
  330. package/.output/server/chunks/build/monitor-miqq9xHB.mjs.map +0 -1
  331. package/.output/server/chunks/build/pages-D9tOoJsf.mjs.map +0 -1
  332. package/.output/server/chunks/build/permissions-CxEgXic0.mjs.map +0 -1
  333. package/.output/server/chunks/build/settings-BPBll_7K.mjs.map +0 -1
  334. package/.output/server/chunks/build/teams-DD8ZXTKL.mjs.map +0 -1
  335. package/.output/server/chunks/build/tokens-Dxnuw96_.mjs.map +0 -1
  336. package/.output/server/chunks/build/useDaqStream-DkRL3tEW.mjs.map +0 -1
  337. package/.output/server/chunks/build/useDcwStream-DyB2ufQI.mjs.map +0 -1
  338. package/.output/server/chunks/build/useSiteConfig-DJe_KMVr.mjs +0 -27
  339. package/.output/server/chunks/build/useSiteConfig-DJe_KMVr.mjs.map +0 -1
  340. package/.output/server/chunks/build/users-D6RNylrW.mjs.map +0 -1
  341. package/.output/server/chunks/build/workshop-CTcYDq2i.mjs.map +0 -1
  342. /package/.output/public/_nuxt/{CNs_Ozdc.js → CNs_Ozdc2.js} +0 -0
  343. /package/.output/public/_nuxt/{Cno6kYiO.js → Cno6kYiO2.js} +0 -0
  344. /package/.output/public/_nuxt/{ORt9oDIy2.js → ORt9oDIy.js} +0 -0
@@ -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)}
@@ -0,0 +1 @@
1
+ import{q as e}from"./rqZ-1SoP.js";import{C as t,G as n,H as r,Wt as i,a,b as o,et as s,f as c,ft as l,g as u,h as d,m as f,mt as p,nt as m,p as h,t as g,x as _,z as v}from"./BSCpFtzG.js";import{d as y}from"./-6OnbLFb.js";import{s as b}from"./C3tCneTM.js";import{n as x}from"./BeIfu4N3.js";import{t as S}from"./VLI2Zy4t.js";import{n as C,t as ee}from"./BGhOrgle.js";import{r as w}from"./D-Ca4BGY.js";import{i as te}from"./Cn3J3NXR.js";import{i as ne,r as T,t as E}from"./BCJFMBQ6.js";import{t as D}from"./6PZPfFcO.js";import{t as O}from"./Bp5luxkg2.js";import{t as k}from"./BcrN7QEl2.js";import{t as A}from"./G0qIw7Gq2.js";var re={class:`perm-page`},ie={class:`aw-page-head`},ae={class:`pg-sub`},j=[`onClick`],M={key:0,class:`dim`},N={class:`sec`},P={class:`detail`},F={class:`sec`},I={key:0,class:`ch-list`},L={key:1,class:`dim`},R={class:`sec`},z={class:`hint`},B={class:`matrix`},V=[`title`],H=g(t({__name:`index`,setup(t){let{t:g}=x(),H=k(),U=p([]),W=p([]),G=p(!1),K=p(``),q=p(!1),J=p(null),Y=l({}),X=p(!1);function Z(){let e=H.token;return e?{authorization:`Bearer ${e}`}:{}}async function oe(){G.value=!0;try{let e=await b(`/api/workshop/permissions`,{headers:Z()});if(e.code!==0||!e.data)throw Error(`load fail`);U.value=e.data.lines??[],W.value=e.data.users??[]}catch(e){w.error(A(e,g(`permissions.loadFail`)))}finally{G.value=!1}}let se=c(()=>{let e=K.value.trim().toLowerCase();return e?W.value.filter(t=>`${t.name} ${t.email}`.toLowerCase().includes(e)):W.value});function Q(e){J.value=e,ce(e),q.value=!0}function ce(e){for(let e of Object.keys(Y))Reflect.deleteProperty(Y,e);for(let t of U.value){let n=e.grants.find(e=>e.lineId===t.id);Y[t.id]=n?.mode===`readonly`||n?.mode===`operate`?n.mode:`none`}}let $=c(()=>{if(!J.value)return 0;let e=0;for(let t of U.value){let n=J.value.grants.find(e=>e.lineId===t.id),r=n?.mode===`readonly`||n?.mode===`operate`?n.mode:`none`;(Y[t.id]??`none`)!==r&&e++}return e});async function le(){if(J.value){X.value=!0;try{let e=U.value.filter(e=>(Y[e.id]??`none`)!==`none`).map(e=>({lineId:e.id,mode:Y[e.id]})),t=U.value.filter(e=>(Y[e.id]??`none`)===`none`&&J.value.grants.some(t=>t.lineId===e.id)).map(e=>({lineId:e.id,mode:null})),n=await b(`/api/workshop/permissions`,{method:`PUT`,headers:Z(),body:{userId:J.value.id,grants:[...e,...t]}});if(n.code!==0||!n.data)throw Error(`save fail`);J.value.grants=n.data.grants;let r=W.value.find(e=>e.id===J.value?.id);r&&(r.grants=n.data.grants),w.success(g(`permissions.saved`,{n:e.length+t.length}))}catch(e){w.error(A(e,g(`permissions.saveFail`)))}finally{X.value=!1}}}function ue(e){return g(e===`operate`?`permissions.operate`:e===`readonly`?`permissions.readonly`:`permissions.none`)}return s(()=>H.isLoggedIn,e=>{e&&!H.isAdmin&&y(`/`)},{immediate:!0}),v(oe),(t,s)=>{let c=te,l=C,p=E,g=S,v=ee,y=D,b=T,x=ne,w=O;return r(),u(`div`,re,[h(`header`,ie,[h(`div`,null,[s[2]||=h(`p`,{class:`aw-kicker`},` agentworkshop / permissions `,-1),h(`h1`,null,i(t.$t(`permissions.title`)),1),h(`p`,ae,i(t.$t(`permissions.subtitle`)),1)]),_(c,{value:K.value,"onUpdate:value":s[0]||=e=>K.value=e,placeholder:t.$t(`permissions.search`),style:{"max-width":`260px`},"allow-clear":``},null,8,[`value`,`placeholder`])]),_(y,{bordered:!1,class:`table-card`},{default:m(()=>[_(v,{"data-source":se.value,loading:G.value,"row-key":`id`,size:`middle`,pagination:{pageSize:12,showSizeChanger:!1}},{default:m(()=>[_(l,{title:t.$t(`permissions.colUser`),"data-index":`name`},{default:m(({record:t})=>[h(`a`,{onClick:e(e=>Q(t),[`prevent`])},i(t.name),9,j)]),_:1},8,[`title`]),_(l,{title:t.$t(`permissions.colEmail`),"data-index":`email`},null,8,[`title`]),_(l,{title:t.$t(`permissions.colRole`),"data-index":`role`},{default:m(({record:e})=>[_(p,{color:e.role===`admin`?`green`:e.role===`editor`?`blue`:`default`},{default:m(()=>[o(i(e.role),1)]),_:2},1032,[`color`])]),_:1},8,[`title`]),_(l,{title:t.$t(`permissions.colStatus`),"data-index":`status`},{default:m(({record:e})=>[_(p,{color:e.status===`active`?`cyan`:`red`},{default:m(()=>[o(i(e.status===`active`?t.$t(`permissions.active`):e.status),1)]),_:2},1032,[`color`])]),_:1},8,[`title`]),_(l,{title:t.$t(`permissions.colChannels`),"data-index":`channels`},{default:m(({record:e})=>[o(i(e.channels.length),1)]),_:1},8,[`title`]),_(l,{title:t.$t(`permissions.colGrants`),"data-index":`grants`},{default:m(({record:e})=>[(r(!0),u(a,null,n(e.grants,e=>(r(),f(p,{key:e.lineId,style:{"margin-bottom":`2px`}},{default:m(()=>[o(i((U.value.find(t=>t.id===e.lineId)?.name??e.lineId).slice(0,14))+` · `+i(ue(e.mode)),1)]),_:2},1024))),128)),e.grants.length?d(``,!0):(r(),u(`span`,M,`—`))]),_:1},8,[`title`]),_(l,{title:t.$t(`permissions.colOps`),width:90},{default:m(({record:e})=>[_(g,{size:`small`,onClick:t=>Q(e)},{default:m(()=>[o(i(t.$t(`permissions.manage`)),1)]),_:1},8,[`onClick`])]),_:1},8,[`title`])]),_:1},8,[`data-source`,`loading`])]),_:1}),_(w,{open:q.value,"onUpdate:open":s[1]||=e=>q.value=e,title:J.value?`${J.value.name} · ${t.$t(`permissions.detail`)}`:``,width:`560`},{default:m(()=>[J.value?(r(),u(a,{key:0},[h(`h4`,N,i(t.$t(`permissions.secProfile`)),1),h(`dl`,P,[s[3]||=h(`dt`,null,`email`,-1),h(`dd`,null,i(J.value.email),1),s[4]||=h(`dt`,null,`role`,-1),h(`dd`,null,i(J.value.role),1),s[5]||=h(`dt`,null,`status`,-1),h(`dd`,null,i(J.value.status),1),s[6]||=h(`dt`,null,`created`,-1),h(`dd`,null,i(J.value.createdAt),1)]),h(`h4`,F,i(t.$t(`permissions.secChannels`))+`(`+i(J.value.channels.length)+`) `,1),J.value.channels.length?(r(),u(`div`,I,[(r(!0),u(a,null,n(J.value.channels,e=>(r(),u(`code`,{key:e.id},i(e.name||e.id.slice(0,8)),1))),128))])):(r(),u(`p`,L,i(t.$t(`permissions.noChannels`)),1)),h(`h4`,R,[o(i(t.$t(`permissions.secMatrix`))+` `,1),_(g,{type:`primary`,size:`small`,loading:X.value,disabled:$.value===0,style:{"margin-left":`12px`},onClick:le},{default:m(()=>[o(i(t.$t(`permissions.save`,{n:$.value})),1)]),_:1},8,[`loading`,`disabled`])]),h(`p`,z,i(t.$t(`permissions.matrixHint`)),1),h(`div`,B,[(r(!0),u(a,null,n(U.value,e=>(r(),u(`div`,{key:e.id,class:`row`},[h(`span`,{class:`line-name`,title:e.id},i(e.name),9,V),_(x,{value:Y[e.id],"onUpdate:value":t=>Y[e.id]=t,size:`small`},{default:m(()=>[_(b,{value:`none`},{default:m(()=>[o(i(t.$t(`permissions.none`)),1)]),_:1}),_(b,{value:`readonly`},{default:m(()=>[o(i(t.$t(`permissions.readonly`)),1)]),_:1}),_(b,{value:`operate`},{default:m(()=>[o(i(t.$t(`permissions.operate`)),1)]),_:1})]),_:1},8,[`value`,`onUpdate:value`])]))),128))])],64)):d(``,!0)]),_:1},8,[`open`,`title`])])}}}),[[`__scopeId`,`data-v-96694c07`]]);export{H as default};
@@ -0,0 +1 @@
1
+ .page[data-v-3f765e2c]{padding:4px}.back[data-v-3f765e2c]{color:var(--ink-faint);text-decoration:none}.back[data-v-3f765e2c]:hover{color:var(--accent)}.aw-page-head h1[data-v-3f765e2c]{letter-spacing:-.01em;margin:2px 0 4px;font-size:26px;font-weight:400}.mono[data-v-3f765e2c]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.sec[data-v-3f765e2c]{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 10px;font-size:12px;font-weight:600}.mt[data-v-3f765e2c]{margin-top:22px}.err[data-v-3f765e2c]{color:var(--tone-danger-dot);margin-top:14px;font-size:13px}.grid[data-v-3f765e2c]{grid-template-columns:minmax(260px,340px) minmax(320px,1fr) minmax(280px,380px);align-items:start;gap:14px;display:grid}@media (width<=1100px){.grid[data-v-3f765e2c]{grid-template-columns:1fr}}.pad[data-v-3f765e2c],.value-card[data-v-3f765e2c]{padding:16px 18px}.big-val[data-v-3f765e2c]{color:var(--accent);margin:8px 0 10px;font-size:40px;line-height:1.1}.big-val small[data-v-3f765e2c]{color:var(--ink-faint);margin-left:8px;font-size:15px}.live-canvas[data-v-3f765e2c]{border:1px solid var(--line);border-radius:var(--radius-chip);background:var(--paper-deep);width:100%;height:64px}.facts[data-v-3f765e2c]{flex-direction:column;gap:4px;margin:14px 0 0;display:flex}.facts div[data-v-3f765e2c]{justify-content:space-between;font-size:11.5px;display:flex}.facts dt[data-v-3f765e2c]{color:var(--ink-faint)}.facts dd[data-v-3f765e2c]{color:var(--ink);margin:0}.form-grid[data-v-3f765e2c]{flex-direction:column;gap:10px;display:flex}.field[data-v-3f765e2c]{color:var(--ink-faint);flex-direction:column;flex:1;gap:4px;font-size:12px;display:flex}.field.row[data-v-3f765e2c]{flex-direction:row;align-items:center;gap:8px}.field.row small[data-v-3f765e2c]{color:var(--ink-faint)}.field-row[data-v-3f765e2c]{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.input[data-v-3f765e2c]{width:100%;color:var(--ink);background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:6px 9px;font-size:12.5px}.input[data-v-3f765e2c]:disabled{opacity:.45}.grow[data-v-3f765e2c]{flex:auto}.toggle[data-v-3f765e2c]{cursor:pointer;color:var(--tone-neutral-dot);background:var(--tone-neutral-bg);border-radius:var(--radius-chip);border:0;align-self:flex-start;padding:6px 12px;font-size:12px}.toggle.on[data-v-3f765e2c]{color:var(--tone-success-dot);background:var(--tone-success-bg)}.toggle.slim[data-v-3f765e2c]{padding:6px 10px;font-size:11.5px}.bind-row[data-v-3f765e2c]{gap:8px;display:flex}.driver-grid[data-v-3f765e2c]{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.field em[data-v-3f765e2c]{color:var(--tone-danger-dot);margin-left:2px;font-style:normal}.test-row[data-v-3f765e2c]{align-items:center;gap:10px;margin-top:8px;display:flex}.test-out[data-v-3f765e2c]{font-size:11px}.test-out.ok[data-v-3f765e2c]{color:var(--tone-success-dot)}.test-out.bad[data-v-3f765e2c]{color:var(--tone-danger-dot)}.col-hist[data-v-3f765e2c]{min-width:0}.hist-hd[data-v-3f765e2c]{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.hist-ctl[data-v-3f765e2c]{gap:6px;display:flex}.hist-canvas[data-v-3f765e2c]{border:1px solid var(--line);border-radius:var(--radius-chip);background:var(--paper-deep);width:100%;height:130px}.raw-table[data-v-3f765e2c]{border-collapse:collapse;width:100%;margin-top:10px;font-size:11px}.raw-table td[data-v-3f765e2c],.raw-table th[data-v-3f765e2c]{text-align:left;border-bottom:1px solid var(--divider-hair);padding:4px 6px}.raw-table th[data-v-3f765e2c]{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-fainter);font-weight:600}.st-pill[data-v-3f765e2c]{font-family:var(--font-mono);letter-spacing:.04em;border-radius:var(--radius-pill);padding:3px 11px;font-size:11px;display:inline-block}.st-pill.ok[data-v-3f765e2c]{color:var(--tone-success-dot);background:var(--tone-success-bg)}.st-pill.warn[data-v-3f765e2c]{color:var(--tone-warning-dot);background:var(--tone-warning-bg)}.st-pill.alarm[data-v-3f765e2c]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.st-pill.offline[data-v-3f765e2c]{color:var(--tone-neutral-dot);background:var(--tone-neutral-bg)}.frames-tile[data-v-3f765e2c]{margin-top:14px}.frames-n[data-v-3f765e2c]{color:var(--ink-faint);margin-left:8px}.vec-svg[data-v-3f765e2c]{background:var(--tone-neutral-bg);border-radius:6px;width:100%;height:96px;margin-bottom:10px;display:block}.gal[data-v-3f765e2c]{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.gal-item[data-v-3f765e2c]{cursor:zoom-in;margin:0}.gal-item img[data-v-3f765e2c]{aspect-ratio:4/3;-o-object-fit:cover;object-fit:cover;background:var(--tone-neutral-bg);border-radius:6px;width:100%;display:block}.gal-item figcaption[data-v-3f765e2c]{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:11px;overflow:hidden}.frames-empty[data-v-3f765e2c]{color:var(--ink-faint);margin:8px 0;font-size:13px}.gal-full[data-v-3f765e2c]{z-index:60;cursor:zoom-out;background:#000000b8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.gal-full img[data-v-3f765e2c]{border-radius:8px;max-width:92vw;max-height:92vh}
@@ -0,0 +1 @@
1
+ import{ft as e}from"./BSCpFtzG.js";import{t}from"./G0qIw7Gq2.js";import{t as n}from"./36oeS8_R2.js";import{i as r}from"./BgCrZKv_2.js";var i=[`thermo`,`pressure`,`tension`,`encoder`,`camera`,`gateway`],a=[{key:`temp-tc`,name:`温度传感器`,code:`TEMP · TC`,ch:`熔体/箱体温度`,unit:`℃`,base:168,amp:3.2,min:150,max:185,decimals:1,icon:`thermo`,telemetryKey:`temperature`,semantics:`熔体/箱体温度:热工艺核心被控量,热惯性大(变化平缓)。判读:与设定值偏差 ±2℃ 内为稳态;持续单边漂移 = 加热/散热失衡;骤升骤降多为扰动或传感器异常。`},{key:`pressure-tx`,name:`压力变送器`,code:`PRESSURE · TX`,ch:`熔体压力`,unit:`MPa`,base:.82,amp:.05,min:.6,max:1.2,decimals:2,icon:`pressure`,telemetryKey:`pressure`,semantics:`熔体压力:挤出负荷的「血压计」。判读:与温度负相关(温度升→熔体黏度降→压力降);压力突升常见于滤网堵塞或出料受阻。`},{key:`tension-cell`,name:`张力传感器`,code:`TENSION · CELL`,ch:`膜张力`,unit:`kN`,base:21.4,amp:.9,min:18,max:26,decimals:1,icon:`tension`,semantics:`膜张力:成膜质量直接指标。判读:张力波动与速度/温度设定强耦合,评估张力前先确认速度稳定。`},{key:`line-encoder`,name:`速度编码器`,code:`LINE · ENCODER`,ch:`产线速度`,unit:`m/min`,base:318,amp:7,min:280,max:360,decimals:0,icon:`encoder`,semantics:`产线速度:产能直接观测量。判读:实际速度对设定值的跟随滞后反映传动惯量;速度波动会传导至张力与厚度。`},{key:`vision-cam`,name:`视觉检测相机`,code:`VISION · CAM`,ch:`表面缺陷率`,unit:`‰`,base:.42,amp:.09,min:.1,max:.9,decimals:2,icon:`camera`},{key:`power-meter`,name:`电参采集器`,code:`POWER · METER`,ch:`运行功率`,unit:`kW`,base:45.2,amp:2.6,min:38,max:55,decimals:1,icon:`gateway`},{key:`thickness-scan`,name:`测厚扫描仪`,code:`THK · SCAN`,ch:`厚度轮廓`,unit:`mm`,base:.52,amp:.018,min:.4,max:.65,decimals:3,icon:`tension`,signalKind:`vector`,vector:{points:64,min:.4,max:.65},sink:{processors:[{name:`resample`,args:{n:64}},{name:`derive-metric`,args:{name:`avg`,op:`avg`}},{name:`derive-metric`,args:{name:`max`,op:`max`}}]},metrics:[{key:`max`,label:`最大厚度`,unit:`mm`,alarmHigh:.62},{key:`avg`,label:`平均厚度`,unit:`mm`,warnLow:.47,warnHigh:.57}],semantics:`测厚仪横向扫描轮廓:多点厚度分布。判读:平均值漂移=工艺整体偏移;单点尖峰=局部缺陷(夹杂/气泡);max 越硬限=超差,须联动分切剔除。`},{key:`ccd-image`,name:`CCD 视觉相机`,code:`CCD · IMG`,ch:`表面图像`,unit:`灰度`,base:128,amp:0,min:0,max:255,decimals:0,icon:`camera`,signalKind:`image`,sink:{processors:[{name:`thumbnail`,args:{width:256}},{name:`quality-gate`}]},metrics:[{key:`brightness`,label:`平均亮度`,unit:`gray`,alarmLow:30,alarmHigh:230}],semantics:`CCD 图像帧:像素数据入对象存储,Timescale 仅存元数据与派生指标。判读:brightness 过低=曝光不足/镜头遮挡,过高=过曝;缺陷识别算法经插件处理器扩展。`}],o=e=>e.startsWith(`daq-`)?e.slice(4):e,s=[{kind:`mock`,label:`Mock 模拟源`,status:`builtin`,configFields:[]},{kind:`modbus-tcp`,label:`Modbus TCP(PLC/网关)`,status:`real`,configFields:[{key:`host`,label:`设备地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.10`,hint:`PLC 或 Modbus 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`Modbus TCP 标准端口 502`},{key:`unitId`,label:`单元号(unitId)`,type:`number`,default:1,hint:`从站地址,常见 1`},{key:`register`,label:`寄存器地址`,type:`number`,required:!0,placeholder:`40001`,hint:`4xxxx=保持寄存器(地址-40001 为协议偏移);3xxxx=输入寄存器`},{key:`registerType`,label:`寄存器区`,type:`select`,default:`holding`,options:[{value:`holding`,label:`保持寄存器(4x)`},{value:`input`,label:`输入寄存器(3x)`}]},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`scale`,label:`缩放系数`,type:`number`,default:1,hint:`原始值 × scale = 工程量(如 0.1)`},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]}]},{kind:`opcua`,label:`OPC UA(PLC/MES)`,status:`real`,configFields:[{key:`endpoint`,label:`端点(endpoint)`,type:`string`,required:!0,placeholder:`opc.tcp://192.168.1.10:4840`,hint:`OPC UA 服务器地址`},{key:`nodeId`,label:`节点 ID(NodeId)`,type:`string`,required:!0,placeholder:`ns=2;s=Channel1.Device1.Tag1`,hint:`要采集的变量节点`},{key:`securityMode`,label:`安全策略`,type:`select`,default:`None`,options:[{value:`None`,label:`None(无加密,内网常用)`},{value:`Sign`,label:`Sign(签名)`},{value:`SignAndEncrypt`,label:`SignAndEncrypt(签名+加密)`}]},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`},{key:`certificateFile`,label:`客户端证书路径(可选)`,type:`string`,placeholder:`certs/client_cert.pem`,hint:`Sign/SignAndEncrypt 时的 PEM 证书;留空自动生成自签`},{key:`privateKeyFile`,label:`私钥路径(可选)`,type:`string`,placeholder:`certs/client_key.pem`,hint:`与证书配对的 PEM 私钥`}]},{kind:`modbus-rtu`,label:`Modbus RTU over TCP(串口网关)`,status:`real`,configFields:[{key:`host`,label:`网关地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.50`,hint:`串口服务器/RTU 转 TCP 网关 IP(设备本身走 RS-485)`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`网关透传端口(常见 502 / 8899 / 26)`},{key:`unitId`,label:`从站地址(unitId)`,type:`number`,default:1,hint:`RS-485 总线上的从站地址`},{key:`register`,label:`寄存器地址`,type:`number`,required:!0,placeholder:`40001`,hint:`4xxxx=保持寄存器(地址-40001 为协议偏移);3xxxx=输入寄存器`},{key:`registerType`,label:`寄存器区`,type:`select`,default:`holding`,options:[{value:`holding`,label:`保持寄存器(4x)`},{value:`input`,label:`输入寄存器(3x)`}]},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`scale`,label:`缩放系数`,type:`number`,default:1,hint:`原始值 × scale = 工程量(如 0.1)`},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]}]},{kind:`mqtt`,label:`MQTT(网关/边缘采集)`,status:`real`,configFields:[{key:`host`,label:`Broker 地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.20 或 mqtt.example.com`,hint:`MQTT Broker(EMQX/Mosquitto/Aliyun IoT)地址`},{key:`port`,label:`端口`,type:`number`,default:1883,hint:`MQTT TCP 标准端口 1883(TLS 8883)`},{key:`topic`,label:`主题(topic)`,type:`string`,required:!0,placeholder:`factory/line1/temp`,hint:`设备上报数值的主题;支持 +/# 通配`},{key:`jsonPath`,label:`取值路径(可选)`,type:`string`,placeholder:`data.temperature`,hint:`payload 为 JSON 时按路径取数值,如 data.temp;纯数字报文留空`},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`http`,label:`HTTP/REST(轮询)`,status:`real`,configFields:[{key:`url`,label:`接口地址(URL)`,type:`string`,required:!0,placeholder:`http://192.168.1.30/api/sensor`,hint:`返回数值或 JSON 的 HTTP 接口`},{key:`jsonPath`,label:`取值路径(可选)`,type:`string`,placeholder:`data.value`,hint:`响应为 JSON 时按路径取数值,如 data.value;纯文本留空`},{key:`headersJSON`,label:`请求头(可选)`,type:`string`,placeholder:`{"Authorization":"Bearer xxx"}`,hint:`JSON 对象形式的 HTTP 头`}]},{kind:`s7`,label:`S7(西门子 PLC)`,status:`planned`,configFields:[]}],c=60,l=30,u=(e,t)=>r({base:`/api/workshop/daq`,path:e,init:t,retries:(t?.method??`GET`).toUpperCase()===`GET`?2:0}),d=()=>{let r=e([]),i=new Map,o=e([]),s=e({running:!0,defaultIntervalMs:1e3,defaultPublishIntervalMs:0,nodesTotal:0,nodesOnline:0}),d=e({tsdb:`…`,queue:`…`,drivers:[],driverAvailable:{},infra:void 0,produced:0,consumed:0,dropped:0,samplesStored:0}),f=e(a.map(e=>({...e}))),p=e({});function m(){i.clear();for(let e of r)i.set(e.id,e)}function h(e){let t=r.findIndex(t=>t.id===e.id);t>=0?r[t]=Object.assign(r[t],e):(r.push({...e,hist:[]}),i.set(e.id,r[r.length-1]))}let g=[],_=null;function v(){_=null;let e=g;if(g=[],!e.length)return;let t=new Map;for(let n of e){t.set(n.nodeId,n);let e=i.get(n.nodeId);e&&(e.hist.push(n.value),e.hist.length>c&&e.hist.splice(0,e.hist.length-c))}for(let e of t.values()){let t=i.get(e.nodeId);t&&(t.value=e.value,t.state=e.state,t.lastAt=e.at)}}function y(e){g.push(e),_||=setTimeout(v,500)}function b(e){if(e.node){if(e.op===`removed`){let t=r.findIndex(t=>t.id===e.node.id);t>=0&&r.splice(t,1),i.delete(e.node.id),Reflect.deleteProperty(p,e.node.id);return}h(e.node)}}function x(e){f.splice(0,f.length,...e.map(e=>({...e})))}function S(e){if(!e.template)return;let t=f.findIndex(t=>t.key===e.template.key);if(e.op===`removed`){t>=0&&f.splice(t,1);return}t>=0?f[t]={...e.template}:f.push({...e.template})}function C(e){let t=Date.parse(e.at),n=p[e.nodeId]??(p[e.nodeId]=[]);n.some(e=>e.at===t)||(n.unshift({at:t,kind:e.kind,points:e.preview,metrics:e.metrics??{},thumbUrl:e.thumbUrl,contentUrl:e.thumbUrl?e.thumbUrl.replace(`thumb=1`,`thumb=0`):void 0}),n.length>l&&n.splice(l));let r=i.get(e.nodeId);r&&(r.value=e.metrics?.avg??r.value,e.state&&(r.state=e.state),r.lastAt=e.at)}let w=0,T=null;function E(){w++,w===1&&(T=n().subscribe(D));let e=!1;return()=>{e||(e=!0,--w===0&&(T?.(),T=null))}}function D(e){if(e.type===`daq.reading`)y(e.payload);else if(e.type===`daq.frame`)C(e.payload);else if(e.type===`daq.node.changed`)b(e.payload);else if(e.type===`daq.controller`)Object.assign(s,e.payload);else if(e.type===`daq.template.changed`)S(e.payload);else if(e.type===`daq.alarm`){let t=e.payload;o.some(e=>e.id===t.id)||o.unshift(t)}else if(e.type===`daq.alarm.changed`){let t=e.payload;if(t.ackedAt){let e=o.findIndex(e=>e.id===t.id);e>=0&&o.splice(e,1)}}}async function O(){try{let e=await u(``),t=new Map(r.map(e=>[e.id,e])),n=[];for(let r of e.nodes){let e=t.get(r.id);e?(Object.assign(e,r),n.push(e),t.delete(r.id)):n.push({...r,hist:[]})}r.splice(0,r.length,...n),m();for(let e of Object.keys(p))i.has(e)||Reflect.deleteProperty(p,e);Object.assign(s,e.controller),Object.assign(d,e.meta??{}),d.driverAvailable=e.driverAvailable??{},d.infra=e.infra,e.templates?.length&&x(e.templates),K.loaded=!0,K.error=``}catch(e){K.error=t(e)}}async function k(e,t){let n=await u(``,{method:`POST`,body:JSON.stringify({templateRef:e,...t})});return h(n.node),n.node}async function A(e,t){await u(`/${e}`,{method:`PATCH`,body:JSON.stringify(t)})}async function j(e,t,n){await u(`/${e}`,{method:`PATCH`,body:JSON.stringify({posX:t,posZ:n})})}async function M(e){await u(`/${e}`,{method:`DELETE`});let t=r.findIndex(t=>t.id===e);t>=0&&r.splice(t,1),i.delete(e),Reflect.deleteProperty(p,e)}async function N(e,t){h((await u(`/${e}/bind`,{method:`POST`,body:JSON.stringify({deviceId:t})})).node)}async function P(e,t){h((await u(`/${e}/bindings`,{method:`PUT`,body:JSON.stringify({deviceIds:t})})).node)}async function F(e,t){return(await u(`/test-driver`,{method:`POST`,body:JSON.stringify({driver:e,driverConfig:t})})).test}async function I(e){return(await u(`/${e}/test`,{method:`POST`})).test}async function L(){try{let e=await u(`/alarms?scope=open&limit=50`);o.splice(0,o.length,...e.alarms??[])}catch{}}async function R(e){await u(`/alarms/${e}/ack`,{method:`POST`}),await L()}async function z(){let e=await u(`/infra/reconnect`,{method:`POST`});return d.infra=e.infra,await O(),e.infra}async function B(e,t,n){let r=await u(`/controller`,{method:`POST`,body:JSON.stringify({action:e,defaultIntervalMs:t,defaultPublishIntervalMs:n})});Object.assign(s,r.controller)}async function V(e,t={}){let n=new URLSearchParams;return t.fromMs!=null&&n.set(`from`,String(t.fromMs)),t.toMs!=null&&n.set(`to`,String(t.toMs)),t.bucketMs!=null&&n.set(`bucketMs`,String(t.bucketMs)),t.limit!=null&&n.set(`limit`,String(t.limit)),(await u(`/${e}/samples?${n.toString()}`)).points??[]}async function H(e,t={}){let n=new URLSearchParams;t.fromMs!=null&&n.set(`from`,String(t.fromMs)),t.toMs!=null&&n.set(`to`,String(t.toMs)),t.kind&&n.set(`kind`,t.kind),t.limit!=null&&n.set(`limit`,String(t.limit));let r=await u(`/${e}/frames?${n.toString()}`);return p[e]=r.frames??[],p[e]}async function U(e){let t=await u(`/templates`,{method:`POST`,body:JSON.stringify(e)});return S({op:`added`,template:t.template}),t.template}async function W(e,t){let n=await u(`/templates/${e}`,{method:`PATCH`,body:JSON.stringify(t)});return S({op:`updated`,template:n.template}),n.template}async function G(e){await u(`/templates/${e}`,{method:`DELETE`}),S({op:`removed`,template:{key:e}})}let K=e({nodes:r,controller:s,meta:d,templates:f,loaded:!1,error:``,ensureWsFeed:E,load:O,createFromTemplate:k,createTemplate:U,updateTemplate:W,removeTemplate:G,testDriver:F,testNode:I,reconnectInfra:z,patchNode:A,saveTransform:j,removeNode:M,bindNode:N,setNodeBindings:P,controllerAction:B,alarms:o,fetchAlarms:L,ackAlarm:R,nodeById:e=>i.get(e)??r.find(t=>t.id===e),samplesOf:V,fetchFrames:H,frames:p,framesOf:e=>p[e]??[],templateOf:e=>f.find(t=>t.key===e||`daq-${t.key}`===e),ofDevice:e=>e?r.filter(t=>t.deviceBindingId===e):[]});return K},f=`__daqStream`;function p(){let e=globalThis;return e[f]||(e[f]=d()),e[f]}export{o as a,i,s as n,a as r,p as t};
@@ -1 +1 @@
1
- {"id":"1adc96e0-8bbd-4a79-ac7e-b6952556fef8","timestamp":1788751175433}
1
+ {"id":"f7a8e33d-5422-45ac-895d-27168f97e3ad","timestamp":1788887392007}
@@ -0,0 +1 @@
1
+ {"id":"f7a8e33d-5422-45ac-895d-27168f97e3ad","timestamp":1788887392007,"prerendered":[]}
@@ -0,0 +1 @@
1
+ .page[data-v-10e5bd50]{padding:4px}h1[data-v-10e5bd50]{letter-spacing:-.015em;margin:2px 0 4px;font-size:30px;font-weight:400}.sub[data-v-10e5bd50]{opacity:.6;margin:0;font-size:12.5px}.mono[data-v-10e5bd50]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.dim[data-v-10e5bd50]{opacity:.55}.badges[data-v-10e5bd50]{gap:8px;display:flex}.badge[data-v-10e5bd50]{letter-spacing:.05em;color:var(--ink-soft);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:3px 10px;font-size:11px}.ctrl-card[data-v-10e5bd50]{flex-direction:column;gap:11px;margin-bottom:14px;padding:12px 18px 11px;display:flex}.ctrl-row[data-v-10e5bd50]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;display:flex}.ctrl-left[data-v-10e5bd50]{align-items:center;gap:14px;display:flex}.aw-pill.running[data-v-10e5bd50]{background:var(--accent)}.cycle[data-v-10e5bd50]{color:var(--ink-faint);align-items:center;gap:6px;font-size:12px;display:inline-flex}.cycle input[data-v-10e5bd50]{width:84px;color:var(--ink);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:4px 8px}.ctrl-metrics[data-v-10e5bd50]{color:var(--ink-soft);align-items:center;gap:8px;font-size:11.5px;display:flex}.ctrl-metrics .sep[data-v-10e5bd50]{opacity:.4}.ctrl-metrics .warn[data-v-10e5bd50]{color:var(--tone-warning-dot)}.line-strip[data-v-10e5bd50]{border-top:1px solid var(--divider-hair);align-items:center;gap:12px;padding-top:10px;display:flex}.strip-label[data-v-10e5bd50]{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-fainter);flex:none;align-items:center;gap:6px;font-size:10.5px;display:inline-flex}.strip-label small[data-v-10e5bd50]{color:var(--ink-faint);font-size:10px}.strip-scroll[data-v-10e5bd50]{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;flex:auto;gap:8px;min-width:0;padding-bottom:2px;display:flex;overflow-x:auto}.strip-scroll[data-v-10e5bd50]::-webkit-scrollbar{height:4px}.strip-scroll[data-v-10e5bd50]::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:2px}.strip-scroll[data-v-10e5bd50]::-webkit-scrollbar-track{background:0 0}.line-pill[data-v-10e5bd50]{color:var(--ink-soft);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-pill);flex:none;align-items:center;gap:7px;padding:4px 12px;font-size:11.5px;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.line-pill .lp-dot[data-v-10e5bd50]{border:1.5px solid var(--lc,var(--ink-fainter));opacity:.55;border-radius:50%;width:7px;height:7px}.line-pill b[data-v-10e5bd50]{font-weight:600}.line-pill small[data-v-10e5bd50]{color:var(--ink-fainter);font-size:10.5px}.line-pill[data-v-10e5bd50]:hover{border-color:var(--lc,var(--accent));color:var(--ink)}.line-pill.on[data-v-10e5bd50]{color:var(--ink);background:color-mix(in srgb, var(--lc) 10%, transparent);border-color:color-mix(in srgb, var(--lc) 50%, transparent)}.line-pill.on .lp-dot[data-v-10e5bd50]{background:var(--lc);opacity:1;border-color:#0000}.line-pill.on .lp-run[data-v-10e5bd50]{color:color-mix(in srgb, var(--lc) 75%, var(--ink))}@media (prefers-reduced-motion:no-preference){.line-pill.on .lp-dot[data-v-10e5bd50]{box-shadow:0 0 7px color-mix(in srgb, var(--lc) 75%, transparent);animation:1.8s ease-in-out infinite lpPulse-10e5bd50}}@keyframes lpPulse-10e5bd50{0%,to{box-shadow:0 0 3px color-mix(in srgb, var(--lc) 55%, transparent)}50%{box-shadow:0 0 9px color-mix(in srgb, var(--lc) 85%, transparent)}}.table-card[data-v-10e5bd50]{overflow-x:auto}.nodes-table[data-v-10e5bd50]{border-collapse:collapse;width:100%;font-size:12.5px}.nodes-table tbody tr[data-v-10e5bd50]{content-visibility:auto;contain-intrinsic-size:auto 42px}.nodes-table td[data-v-10e5bd50],.nodes-table th[data-v-10e5bd50]{text-align:left;border-bottom:1px solid var(--divider-hair);padding:9px 12px}.nodes-table th[data-v-10e5bd50]{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--line-strong);font-size:11px;font-weight:600}.nodes-table td b[data-v-10e5bd50]{margin-left:8px}.ch[data-v-10e5bd50]{color:var(--ink-faint);margin-top:2px;font-size:10px;display:block}.right[data-v-10e5bd50]{text-align:right}.val[data-v-10e5bd50]{font-size:13px}.val small[data-v-10e5bd50]{color:var(--ink-faint);margin-left:3px}.val.stale[data-v-10e5bd50]{opacity:.45}.val.val-alarm[data-v-10e5bd50]{color:var(--tone-danger-dot);font-weight:700}.ops-panels[data-v-10e5bd50]{grid-template-columns:minmax(320px,5fr) minmax(320px,7fr);gap:10px;margin:0 0 10px;display:grid}@media (width<=1100px){.ops-panels[data-v-10e5bd50]{grid-template-columns:1fr}}.ops-panel[data-v-10e5bd50]{background:var(--surface-glass);border:1px solid var(--glass-line);min-width:0;-webkit-backdrop-filter:blur(var(--aurora-blur)) saturate(1.15);border-radius:10px}.ops-panel.alarm-panel.live[data-v-10e5bd50]{border-color:color-mix(in srgb, var(--tone-danger-dot) 40%, var(--glass-line))}.panel-head[data-v-10e5bd50]{color:var(--ink-soft);border-bottom:1px solid var(--glass-line);align-items:center;gap:7px;padding:8px 12px;font-size:12.5px;display:flex}.panel-head .bell[data-v-10e5bd50]{color:var(--tone-danger-dot)}.panel-head .cnt[data-v-10e5bd50]{color:var(--ink-faint);margin-left:auto;font-size:11px}.panel-head .cnt.hot[data-v-10e5bd50]{color:var(--tone-danger-dot);font-weight:700}.panel-link[data-v-10e5bd50]{color:var(--tone-info-dot);align-items:center;gap:3px;margin-left:auto;font-size:11.5px;text-decoration:none;display:inline-flex}.panel-head .cnt+.panel-link[data-v-10e5bd50]{margin-left:12px}.panel-body[data-v-10e5bd50]{flex-direction:column;gap:5px;max-height:168px;padding:8px 12px;display:flex;overflow-y:auto}.panel-empty[data-v-10e5bd50]{color:var(--ink-faint);margin:4px 0;font-size:12px}.alarm-row[data-v-10e5bd50]{color:var(--tone-danger-dot);background:var(--tone-danger-bg);border:1px solid color-mix(in srgb, var(--tone-danger-dot) 35%, transparent);border-radius:7px;align-items:center;gap:7px;padding:5px 8px;font-size:12px;display:flex}.alarm-row .tri[data-v-10e5bd50]{flex:none}.alarm-row b[data-v-10e5bd50]{color:var(--ink)}.alarm-row .esc[data-v-10e5bd50]{color:var(--tone-danger-dot)}.alarm-row .ack[data-v-10e5bd50]{margin-left:auto}.evt-row[data-v-10e5bd50]{border-radius:6px;align-items:center;gap:7px;padding:4px 6px;font-size:12px;display:flex}.evt-row[data-v-10e5bd50]:hover{background:var(--frost-bg)}.evt-row .t[data-v-10e5bd50]{flex:none;font-size:11px}.evt-row .txt[data-v-10e5bd50]{min-width:0;color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.src-badge[data-v-10e5bd50]{border:1px solid var(--glass-line);color:var(--ink-faint);border-radius:99px;flex:none;padding:1px 6px;font-size:10px}.src-badge.agent[data-v-10e5bd50]{color:var(--tone-info-dot);border-color:color-mix(in srgb, var(--tone-info-dot) 40%, transparent)}.src-badge.user[data-v-10e5bd50]{color:var(--tone-success-dot);border-color:color-mix(in srgb, var(--tone-success-dot) 40%, transparent)}.src-badge.system[data-v-10e5bd50]{color:var(--ink-faint)}.kind-chip[data-v-10e5bd50]{color:var(--ink-soft);background:var(--frost-bg);border-radius:5px;flex:none;padding:1px 6px;font-size:10px}.kind-chip.alarm[data-v-10e5bd50]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.kind-chip.write[data-v-10e5bd50]{color:var(--tone-info-dot)}.kind-chip.rollback[data-v-10e5bd50]{color:var(--tone-warning-dot)}.trend-cell[data-v-10e5bd50]{width:128px}.trend[data-v-10e5bd50]{width:120px;height:26px;display:block}.trend .trace[data-v-10e5bd50]{fill:none;stroke:var(--tone-info-dot);stroke-width:1.4px}.trend .trace.alarm[data-v-10e5bd50]{stroke:var(--tone-danger-dot)}.trend .lim[data-v-10e5bd50]{stroke:color-mix(in srgb, var(--tone-warning-dot) 62%, transparent);stroke-width:1px;stroke-dasharray:3 3}.trend .lim.max[data-v-10e5bd50]{stroke:color-mix(in srgb, var(--tone-danger-dot) 55%, transparent)}.st-pill[data-v-10e5bd50]{font-family:var(--font-mono);letter-spacing:.04em;border-radius:var(--radius-pill);padding:2px 9px;font-size:10.5px;display:inline-block}.st-pill.ok[data-v-10e5bd50]{color:var(--tone-success-dot);background:var(--tone-success-bg)}.st-pill.warn[data-v-10e5bd50]{color:var(--tone-warning-dot);background:var(--tone-warning-bg)}.st-pill.alarm[data-v-10e5bd50]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}tr.row-recipe-alarm[data-v-10e5bd50]{background:color-mix(in srgb, var(--tone-danger-dot,#ff6b6b) 8%, transparent)}tr.row-recipe-alarm td[data-v-10e5bd50]:first-child{box-shadow:inset 3px 0 0 var(--tone-danger-dot,#ff6b6b)}.st-pill.offline[data-v-10e5bd50],.st-pill.disabled[data-v-10e5bd50],.st-pill.idle[data-v-10e5bd50],.st-pill.unassigned[data-v-10e5bd50]{color:var(--tone-neutral-dot);background:var(--tone-neutral-bg)}.drv-tag[data-v-10e5bd50]{font-family:var(--font-mono);border:1px solid var(--line);border-radius:var(--radius-chip);color:var(--ink-soft);padding:2px 7px;font-size:10.5px}.drv-tag.planned[data-v-10e5bd50]{opacity:.55;border-style:dashed}.console-link[data-v-10e5bd50]{color:var(--accent);align-items:center;gap:5px;font-size:12.5px;display:inline-flex}.node-toggle[data-v-10e5bd50]{border:1px solid var(--line);border-radius:var(--radius-chip);color:var(--ink);cursor:pointer;background:0 0;align-items:center;gap:4px;margin-right:12px;padding:2px 9px;font-size:11.5px;transition:border-color .15s,background .15s;display:inline-flex}.node-toggle[data-v-10e5bd50]:hover{border-color:var(--accent);background:var(--hover-tint)}.node-toggle.off[data-v-10e5bd50]{color:var(--ink-soft);opacity:.8;border-style:dashed}.err[data-v-10e5bd50]{color:var(--tone-danger-dot);margin-top:14px;font-size:13px}@media (prefers-reduced-motion:no-preference){.nodes-table tbody tr[data-v-10e5bd50]:hover{background:var(--hover-tint)}}.infra-banner[data-v-10e5bd50]{color:var(--tone-warning-dot);background:var(--tone-warning-bg);border:1px solid color-mix(in srgb, var(--tone-warning-dot) 40%, transparent);border-radius:var(--radius-chip);align-items:center;gap:10px;margin-bottom:14px;padding:10px 14px;display:flex}.infra-banner.good[data-v-10e5bd50]{color:var(--tone-success-dot);background:var(--tone-success-bg);border-color:color-mix(in srgb, var(--tone-success-dot) 40%, transparent)}.infra-banner .txt[data-v-10e5bd50]{flex:auto;font-size:12.5px;line-height:1.5}.infra-banner .txt a[data-v-10e5bd50]{color:var(--accent);text-decoration:underline}.infra-banner .txt b[data-v-10e5bd50]{font-weight:600}.infra-banner .txt small[data-v-10e5bd50]{opacity:.75;margin-left:8px;font-size:10.5px}.infra-banner .pill-btn[data-v-10e5bd50]{flex:none}.alarm-bar[data-v-10e5bd50]{color:var(--tone-danger-dot);background:var(--tone-danger-bg);border:1px solid color-mix(in srgb, var(--tone-danger-dot) 40%, transparent);border-radius:var(--radius-chip);align-items:center;gap:12px;margin-bottom:14px;padding:8px 14px;display:flex}.bar-label[data-v-10e5bd50]{letter-spacing:.05em;text-transform:uppercase;flex:none;align-items:center;gap:6px;font-size:11px;font-weight:600;display:inline-flex}.bar-label .bell[data-v-10e5bd50]{animation:1.6s ease-in-out infinite bellShake-10e5bd50}@media (prefers-reduced-motion:reduce){.bar-label .bell[data-v-10e5bd50]{animation:none}}@keyframes bellShake-10e5bd50{0%,80%,to{transform:rotate(0)}85%{transform:rotate(12deg)}90%{transform:rotate(-10deg)}95%{transform:rotate(6deg)}}.alarm-scroll[data-v-10e5bd50]{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;flex:auto;gap:8px;min-width:0;display:flex;overflow-x:auto}.alarm-item[data-v-10e5bd50]{color:var(--ink-soft);background:var(--paper-deep);border:1px solid color-mix(in srgb, var(--tone-danger-dot) 30%, transparent);border-radius:var(--radius-pill);flex:none;align-items:center;gap:8px;padding:4px 10px;font-size:11.5px;display:inline-flex}.alarm-item b[data-v-10e5bd50]{font-weight:600}.alarm-item .dim[data-v-10e5bd50]{opacity:.6}.alarm-item .esc[data-v-10e5bd50]{color:var(--tone-warning-dot)}.alarm-item .ack[data-v-10e5bd50]{color:var(--paper-raised);background:var(--tone-danger-dot);border-color:#0000;padding:2px 9px}.alarm-item .ack[data-v-10e5bd50]:hover{opacity:.85;color:var(--paper-raised);border-color:#0000}.ctrl-right[data-v-10e5bd50]{align-items:center;gap:12px;display:flex}.add-btn[data-v-10e5bd50]{padding:8px 16px;font-size:13px}.modal-mask[data-v-10e5bd50]{z-index:50;background:var(--scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal[data-v-10e5bd50]{background:var(--surface-glass-strong);width:640px;max-width:94vw;max-height:88vh;-webkit-backdrop-filter:var(--aurora-blur);border:1px solid var(--glass-line);border-radius:var(--radius-panel);box-shadow:var(--glass-edge), var(--shadow-float);padding:22px 24px;overflow-y:auto}.m-title[data-v-10e5bd50]{margin:0 0 14px;font-size:17px}.seg-row[data-v-10e5bd50]{gap:8px;margin-bottom:14px;display:flex}.seg[data-v-10e5bd50]{cursor:pointer;color:var(--ink-faint);background:var(--paper-deep);border:1px solid var(--line);border-radius:var(--radius-chip);flex:1;padding:8px 0;font-size:13px}.seg.on[data-v-10e5bd50]{color:var(--on-accent);background:var(--accent);border-color:var(--accent);font-weight:600}.f-grid[data-v-10e5bd50]{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px;display:grid}.driver-form[data-v-10e5bd50]{grid-template-columns:repeat(3,1fr)}.cal-form[data-v-10e5bd50]{grid-template-columns:2fr 1fr;align-items:end}.f[data-v-10e5bd50]{color:var(--ink-faint);flex-direction:column;gap:4px;font-size:11.5px;display:flex}.f em[data-v-10e5bd50]{color:var(--tone-danger-dot);margin-left:3px;font-style:normal}.inp[data-v-10e5bd50]{width:100%;color:var(--ink);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:6px 9px;font-size:12.5px}.hint[data-v-10e5bd50]{color:var(--ink-fainter);font-size:10px}.test-row[data-v-10e5bd50]{align-items:center;gap:10px;margin:6px 0 4px;display:flex}.test-result[data-v-10e5bd50]{font-family:var(--font-mono);font-size:11px}.test-result.ok[data-v-10e5bd50]{color:var(--tone-success-dot)}.test-result.bad[data-v-10e5bd50]{color:var(--tone-danger-dot)}.m-err[data-v-10e5bd50]{color:var(--tone-danger-dot);margin:8px 0 0;font-size:12px}.m-actions[data-v-10e5bd50]{justify-content:flex-end;gap:10px;margin-top:16px;display:flex}.aw-pill.outline[data-v-10e5bd50]{color:var(--ink);background:var(--paper-raised);border-color:var(--line-strong)}.sec-label[data-v-10e5bd50]{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin:14px 0 6px;font-size:11px;font-weight:600}.tpl-table[data-v-10e5bd50]{border-collapse:collapse;width:100%;font-size:12.5px}.tpl-table td[data-v-10e5bd50]{border-bottom:1px solid var(--divider-hair);padding:7px 8px}.tpl-table td b[data-v-10e5bd50]{margin-right:8px}.tpl-table .range[data-v-10e5bd50]{color:var(--ink-soft);font-size:11.5px}.tpl-table .empty[data-v-10e5bd50]{color:var(--ink-fainter);text-align:center;padding:14px 0;font-size:12px}.tpl-table .actions[data-v-10e5bd50]{white-space:nowrap}.tbl-toolbar[data-v-10e5bd50]{border-bottom:1px solid var(--divider-hair);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:10px;padding:11px 14px;display:flex}.filters[data-v-10e5bd50]{flex-wrap:wrap;align-items:flex-end;gap:9px;display:flex}.flt[data-v-10e5bd50]{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-fainter);flex-direction:column;gap:3px;font-size:10px;display:flex}.inp-sel[data-v-10e5bd50]{min-width:112px;color:var(--ink);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:4px 8px;font-size:11.5px;transition:border-color .15s}.inp-sel[data-v-10e5bd50]:focus{border-color:var(--accent);outline:none}.clear-btn[data-v-10e5bd50]{margin-bottom:1px}.flt-search[data-v-10e5bd50]{width:168px;min-width:0}.flt-search[data-v-10e5bd50]::placeholder{color:var(--ink-fainter)}.count[data-v-10e5bd50]{color:var(--ink-faint);padding-bottom:4px;font-size:11px}.dev-binds[data-v-10e5bd50]{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.dev-bind-chip[data-v-10e5bd50]{color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent);border:1px solid color-mix(in srgb, var(--accent) 30%, transparent);border-radius:var(--radius-chip);align-items:center;gap:4px;padding:1px 7px;font-size:11px;display:inline-flex}.dev-unbind[data-v-10e5bd50]{cursor:pointer;opacity:.55;font-size:10px}.dev-unbind[data-v-10e5bd50]:hover{opacity:1;color:var(--tone-danger-dot)}.dev-add[data-v-10e5bd50]{max-width:130px;font-size:11px}.line-sel[data-v-10e5bd50]{max-width:120px;color:var(--ink-soft);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:3px 6px;font-size:10.5px;transition:border-color .15s}.line-sel[data-v-10e5bd50]:focus{border-color:var(--accent);outline:none}.run-pill[data-v-10e5bd50]{color:var(--ink-fainter);border:1px solid var(--line);border-radius:var(--radius-pill);align-items:center;gap:6px;padding:2px 9px;font-size:10.5px;display:inline-flex}.run-pill .rp-dot[data-v-10e5bd50]{opacity:.7;border:1.5px solid;border-radius:50%;width:6px;height:6px}.run-pill.na[data-v-10e5bd50]{opacity:.75;border-style:dashed}.run-pill.on[data-v-10e5bd50]{color:var(--tone-success-dot);border-color:color-mix(in srgb, var(--tone-success-dot) 40%, transparent);background:var(--tone-success-bg)}.run-pill.on .rp-dot[data-v-10e5bd50]{background:var(--tone-success-dot);opacity:1;border-color:#0000}@media (prefers-reduced-motion:no-preference){.run-pill.on .rp-dot[data-v-10e5bd50]{animation:1.8s ease-in-out infinite rpPulse-10e5bd50}}@keyframes rpPulse-10e5bd50{0%,to{box-shadow:0 0 2px color-mix(in srgb, var(--tone-success-dot) 55%, transparent)}50%{box-shadow:0 0 7px color-mix(in srgb, var(--tone-success-dot) 85%, transparent)}}.prod-cell[data-v-10e5bd50]{max-width:170px}.prod-cell b[data-v-10e5bd50]{text-overflow:ellipsis;white-space:nowrap;font-weight:600;display:block;overflow:hidden}.prod-cell small[data-v-10e5bd50]{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;font-size:10px;display:block;overflow:hidden}.opt-card[data-v-10e5bd50]{padding:0}.opt-head[data-v-10e5bd50]{width:100%;color:var(--ink);cursor:pointer;background:0 0;border:0;align-items:center;gap:9px;padding:12px 16px;font-size:13.5px;display:flex}.opt-head>.i-tabler-flask[data-v-10e5bd50]{color:var(--tone-info-dot);font-size:16px}.opt-count[data-v-10e5bd50]{color:var(--tone-info-dot);background:var(--tone-info-bg);border-radius:999px;padding:1px 8px;font-size:10.5px}.opt-chevron[data-v-10e5bd50]{border-right:1.5px solid var(--ink-faint);border-bottom:1.5px solid var(--ink-faint);width:7px;height:7px;transition:transform var(--transition-base);margin-left:auto;transform:rotate(45deg)}.opt-chevron.open[data-v-10e5bd50]{transform:rotate(225deg)}.opt-body[data-v-10e5bd50]{visibility:hidden;opacity:0;flex-direction:column;gap:10px;max-height:0;padding:0 16px;transition:max-height .26s cubic-bezier(.22,.68,.36,1),opacity .2s,visibility .26s;display:flex;overflow:hidden}.opt-body.open[data-v-10e5bd50]{visibility:visible;opacity:1;max-height:64vh;padding-bottom:14px;overflow-y:auto}.opt-filters[data-v-10e5bd50]{align-items:center;gap:8px;display:flex}.opt-empty[data-v-10e5bd50]{color:var(--ink-fainter);font-size:11.5px}.opt-list[data-v-10e5bd50]{flex-direction:column;gap:7px;margin:0;padding:0;list-style:none;display:flex}.opt-row[data-v-10e5bd50]{background:var(--frost-bg);border:1px solid var(--glass-line);border-radius:10px;flex-direction:column;gap:5px;padding:9px 12px;display:flex}.opt-row.open[data-v-10e5bd50]{border-color:color-mix(in srgb, var(--tone-warning-dot) 36%, var(--glass-line))}.opt-row.rolled-back[data-v-10e5bd50]{border-color:color-mix(in srgb, var(--tone-danger-dot) 30%, var(--glass-line))}.opt-line1[data-v-10e5bd50]{align-items:center;gap:9px;min-width:0;display:flex}.opt-status[data-v-10e5bd50]{font-family:var(--font-mono);color:var(--ink-faint);border:1px solid var(--line-strong);border-radius:5px;flex:none;padding:1px 8px;font-size:9.5px}.opt-status.open[data-v-10e5bd50]{color:var(--tone-warning-dot);border-color:color-mix(in srgb, var(--tone-warning-dot) 45%, transparent)}.opt-status.judged-keep[data-v-10e5bd50]{color:var(--tone-success-dot);border-color:color-mix(in srgb, var(--tone-success-dot) 45%, transparent)}.opt-status.rolled-back[data-v-10e5bd50]{color:var(--tone-danger-dot);border-color:color-mix(in srgb, var(--tone-danger-dot) 45%, transparent)}.opt-node[data-v-10e5bd50]{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.opt-params[data-v-10e5bd50]{color:var(--tone-info-dot);flex:none;font-size:11px}.opt-time[data-v-10e5bd50]{color:var(--ink-fainter);flex:none;margin-left:auto;font-size:10px}.mini-act[data-v-10e5bd50]{color:var(--tone-info-dot);background:var(--tone-info-bg);cursor:pointer;border:0;border-radius:6px;flex:none;padding:2px 9px;font-size:10.5px}.mini-act.danger[data-v-10e5bd50]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.mini-act[data-v-10e5bd50]:disabled{opacity:.5;cursor:default}.opt-line2[data-v-10e5bd50]{color:var(--ink-faint);flex-wrap:wrap;gap:8px;font-size:10.5px;display:flex}.opt-judge.keep[data-v-10e5bd50],.opt-judge.rollback[data-v-10e5bd50],.opt-judge.uncertain[data-v-10e5bd50]{color:var(--ink-soft)}.opt-judge b[data-v-10e5bd50]{font-weight:600}.opt-open-hint[data-v-10e5bd50]{color:var(--tone-warning-dot)}.opt-agg[data-v-10e5bd50]{color:var(--ink-fainter)}.opt-series[data-v-10e5bd50]{flex-wrap:wrap;gap:10px;padding-top:4px;display:flex}.opt-ch[data-v-10e5bd50]{flex:180px;align-items:center;gap:8px;min-width:160px;display:flex}.opt-spark[data-v-10e5bd50]{width:120px;height:30px}.opt-spark polyline[data-v-10e5bd50]{fill:none;stroke:var(--tone-info-dot);stroke-width:1.5px}