@huanban/rulego-editor-core 1.4.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/README.md +20 -8
  2. package/dist/ai/ai-chat-options.d.ts +12 -0
  3. package/dist/api/AIAssistantAPI.d.ts +29 -0
  4. package/dist/api/AIManager.d.ts +7 -1
  5. package/dist/api/ApiProvider.d.ts +17 -4
  6. package/dist/api/DebugSocketClient.d.ts +2 -0
  7. package/dist/api/GlobalConfigAPI.d.ts +35 -0
  8. package/dist/api/IoTPointTemplateAPI.d.ts +32 -0
  9. package/dist/api/MarketplaceAPI.d.ts +39 -0
  10. package/dist/api/RuleChainAPI.d.ts +23 -4
  11. package/dist/api/RuleChainVersionsAPI.d.ts +28 -0
  12. package/dist/api/SkillsAPI.d.ts +31 -0
  13. package/dist/api/UserAPI.d.ts +39 -0
  14. package/dist/api/extended-api-shared.d.ts +25 -0
  15. package/dist/api/index.d.ts +19 -2
  16. package/dist/api/public-api.test-d.d.ts +87 -0
  17. package/dist/api/response-utils.d.ts +1 -0
  18. package/dist/api/types.d.ts +86 -14
  19. package/dist/chunks/editor-core-api-BQiYFuIO.js +1157 -0
  20. package/dist/chunks/editor-core-canvas-nodes-BE9eN51s.js +6921 -0
  21. package/dist/chunks/editor-core-code-editor-DFm5Owtv.js +660 -0
  22. package/dist/chunks/{editor-core-default-components-BjF65lar.js → editor-core-default-components-BsNP8ma1.js} +98 -98
  23. package/dist/chunks/editor-core-dialogs-D9YHvzys.js +12009 -0
  24. package/dist/chunks/{editor-core-locales-i6o28vm2.js → editor-core-locales-CsqTh7Wh.js} +1723 -11
  25. package/dist/chunks/{editor-core-node-patches-BJTT3TuX.js → editor-core-node-patches-Dbi8XYxu.js} +633 -184
  26. package/dist/chunks/{editor-core-node-views-BOaPVdmN.js → editor-core-node-views-C8FQYC3E.js} +39 -29
  27. package/dist/chunks/editor-core-property-drawers-Bqmp9B_J.js +9562 -0
  28. package/dist/chunks/editor-core-settings-DcGCJSc7.js +4161 -0
  29. package/dist/chunks/editor-core-standalone-C7pzm8ZB.js +10013 -0
  30. package/dist/chunks/{editor-core-styles-C1TbLgCK.js → editor-core-styles-CwjFPfAo.js} +1203 -507
  31. package/dist/chunks/vendor-highlight-acC2fLd8.js +5868 -0
  32. package/dist/chunks/vendor-logicflow-core-runtime-DpsWXOGl.js +4 -0
  33. package/dist/chunks/vendor-logicflow-shared-C_kIdBKO.js +4 -0
  34. package/dist/core/ActionRegistry.d.ts +4 -2
  35. package/dist/core/DataAdapter.d.ts +17 -1
  36. package/dist/core/DialogProvider.d.ts +33 -0
  37. package/dist/core/EditorCore.d.ts +16 -3
  38. package/dist/core/FieldCapabilityRegistry.d.ts +4 -1
  39. package/dist/core/FieldChangeRegistry.d.ts +3 -1
  40. package/dist/core/I18nManager.d.ts +1 -1
  41. package/dist/core/IdentityProvider.d.ts +32 -0
  42. package/dist/core/OptionSourceRegistry.d.ts +4 -1
  43. package/dist/core/PropertyControlRegistry.d.ts +29 -0
  44. package/dist/core/ThemeManager.d.ts +7 -0
  45. package/dist/core/anchored-popover.d.ts +16 -0
  46. package/dist/core/assistant-dsl.d.ts +18 -0
  47. package/dist/core/business-log-config.d.ts +18 -0
  48. package/dist/core/clean-snapshot.d.ts +14 -0
  49. package/dist/core/component-localization.d.ts +17 -0
  50. package/dist/core/component-palette.d.ts +3 -0
  51. package/dist/core/connection-status.d.ts +11 -0
  52. package/dist/core/dialog-styles.d.ts +1 -0
  53. package/dist/core/editor-capabilities.d.ts +82 -1
  54. package/dist/core/editor-edge-anchors.d.ts +16 -0
  55. package/dist/core/endpoint-protocol.d.ts +15 -0
  56. package/dist/core/expression-preview.d.ts +6 -0
  57. package/dist/core/field-protocol.d.ts +19 -4
  58. package/dist/core/global-config.d.ts +47 -0
  59. package/dist/core/global-search.d.ts +31 -0
  60. package/dist/core/group-protocol.d.ts +56 -0
  61. package/dist/core/identity-provider-default.d.ts +32 -0
  62. package/dist/core/index.d.ts +31 -5
  63. package/dist/core/keymap.d.ts +10 -0
  64. package/dist/core/payload-kv.d.ts +7 -0
  65. package/dist/core/rule-chain-versions.d.ts +143 -0
  66. package/dist/core/run-analysis.d.ts +126 -0
  67. package/dist/core/runtime-field-dictionary.d.ts +3 -0
  68. package/dist/core/save-conflict.d.ts +1 -0
  69. package/dist/core/server-status.d.ts +1 -0
  70. package/dist/core/toolbar-icons.d.ts +1 -1
  71. package/dist/core/variable-completion.d.ts +13 -0
  72. package/dist/core/websocket-auth.d.ts +2 -0
  73. package/dist/defaults/analysis-locales.d.ts +241 -0
  74. package/dist/defaults/component-locale-categories.d.ts +14 -0
  75. package/dist/defaults/component-locale-data.d.ts +4 -0
  76. package/dist/defaults/component-locale-en-US.d.ts +10 -0
  77. package/dist/defaults/component-locale-summaries.d.ts +15 -0
  78. package/dist/defaults/component-locale-zh-CN.d.ts +10 -0
  79. package/dist/defaults/editor-shell-locales.d.ts +290 -0
  80. package/dist/defaults/example-chain.d.ts +2 -0
  81. package/dist/defaults/field-interaction-locales.d.ts +19 -0
  82. package/dist/defaults/global-config-locales.d.ts +166 -0
  83. package/dist/defaults/official-component-fallbacks.d.ts +2 -1
  84. package/dist/defaults/point-template-locales.d.ts +64 -0
  85. package/dist/index.cjs +2897 -2115
  86. package/dist/index.d.ts +33 -10
  87. package/dist/index.esm.js +1184 -809
  88. package/dist/index.umd.js +2874 -2092
  89. package/dist/nodes/UnknownNodeModel.d.ts +12 -1
  90. package/dist/standalone/HuanbanRulegoEditor.d.ts +145 -13
  91. package/dist/standalone/auth-fetch.d.ts +1 -0
  92. package/dist/standalone/auth-ui-defaults.d.ts +15 -0
  93. package/dist/standalone/code-editor.d.ts +7 -5
  94. package/dist/standalone/connection-status-binding.d.ts +3 -2
  95. package/dist/standalone/custom-nodes.d.ts +13 -0
  96. package/dist/standalone/drawer-locale.d.ts +12 -0
  97. package/dist/standalone/drawer-unsaved-guard.d.ts +6 -1
  98. package/dist/standalone/dynamic-field-browse.d.ts +25 -0
  99. package/dist/standalone/edge-label-quick-editor.d.ts +2 -1
  100. package/dist/standalone/editor-actions.d.ts +1 -0
  101. package/dist/standalone/editor-canvas-anchors.d.ts +19 -0
  102. package/dist/standalone/editor-canvas-shortcuts.d.ts +1 -0
  103. package/dist/standalone/editor-chain-info.d.ts +1 -0
  104. package/dist/standalone/editor-debug-data.d.ts +18 -0
  105. package/dist/standalone/editor-debug-ws.d.ts +2 -0
  106. package/dist/standalone/editor-delete.d.ts +5 -3
  107. package/dist/standalone/editor-dialog-provider.d.ts +3 -0
  108. package/dist/standalone/editor-dialogs.d.ts +25 -2
  109. package/dist/standalone/editor-global-config.d.ts +44 -0
  110. package/dist/standalone/editor-group-interactions.d.ts +1 -0
  111. package/dist/standalone/editor-host-region-styles.d.ts +1 -0
  112. package/dist/standalone/editor-host-regions.d.ts +53 -0
  113. package/dist/standalone/editor-login.d.ts +15 -0
  114. package/dist/standalone/editor-overlays.d.ts +5 -0
  115. package/dist/standalone/editor-property-drawers.d.ts +3 -1
  116. package/dist/standalone/editor-run-analysis.d.ts +81 -0
  117. package/dist/standalone/editor-run-compare.d.ts +20 -0
  118. package/dist/standalone/editor-run-waterfall.d.ts +11 -0
  119. package/dist/standalone/editor-toast.d.ts +1 -1
  120. package/dist/standalone/editor-toolbar-presentation.d.ts +12 -0
  121. package/dist/standalone/editor-toolbar.d.ts +5 -1
  122. package/dist/standalone/editor-ui-configuration.d.ts +55 -0
  123. package/dist/standalone/editor-ui-settings.d.ts +26 -0
  124. package/dist/standalone/editor-user-menu.d.ts +8 -0
  125. package/dist/standalone/editor-version-history.d.ts +82 -0
  126. package/dist/standalone/editor-workspace-shell.d.ts +47 -0
  127. package/dist/standalone/editor-workspace-styles.d.ts +1 -0
  128. package/dist/standalone/field-expression-preview.d.ts +12 -0
  129. package/dist/standalone/group-node.d.ts +19 -3
  130. package/dist/standalone/icon-utils.d.ts +7 -0
  131. package/dist/standalone/index.d.ts +17 -5
  132. package/dist/standalone/keyboard-events.d.ts +3 -0
  133. package/dist/standalone/multi-select-popover.d.ts +16 -0
  134. package/dist/standalone/node-copy.d.ts +1 -0
  135. package/dist/standalone/node-definitions.d.ts +4 -0
  136. package/dist/standalone/node-renderer-utils.d.ts +21 -0
  137. package/dist/standalone/node-theme.d.ts +2 -1
  138. package/dist/standalone/point-template-actions.d.ts +43 -0
  139. package/dist/standalone/property-field-draft.d.ts +5 -0
  140. package/dist/standalone/question-list-editor.d.ts +35 -0
  141. package/dist/standalone/shared-node-manager.d.ts +14 -0
  142. package/dist/standalone/single-select-popover.d.ts +6 -0
  143. package/dist/standalone/theme-scope.d.ts +15 -0
  144. package/dist/standalone/themes.d.ts +8 -0
  145. package/dist/standalone/variable-completion-dropdown.d.ts +18 -0
  146. package/dist/types/component.d.ts +24 -1
  147. package/dist/types/editor.d.ts +41 -0
  148. package/dist/utils/relation-utils.d.ts +19 -1
  149. package/dist/version.d.ts +2 -2
  150. package/package.json +3 -3
  151. package/vite-chunks.mjs +66 -0
  152. package/dist/chunks/editor-core-code-editor-CRki2wA_.js +0 -512
  153. package/dist/chunks/editor-core-dialogs-BMWb0WRN.js +0 -17228
  154. package/dist/chunks/editor-core-property-drawers-BPh-jj1b.js +0 -7998
  155. package/dist/chunks/editor-core-standalone-CJDytHO9.js +0 -11269
  156. package/dist/chunks/vendor-logicflow-core-runtime-Cp6IBEjB.js +0 -217
  157. package/dist/chunks/vendor-logicflow-shared-C7YynLDn.js +0 -4
@@ -1,6 +1,6 @@
1
- import { l as s } from "./vendor-logicflow-core-runtime-Cp6IBEjB.js";
2
- import { l as h } from "./vendor-logicflow-shared-C7YynLDn.js";
3
- const c = Object.freeze({
1
+ import { l as A } from "./vendor-logicflow-core-runtime-DpsWXOGl.js";
2
+ import { l as Y } from "./vendor-logicflow-shared-C_kIdBKO.js";
3
+ const q = Object.freeze({
4
4
  "font-family": 'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif',
5
5
  "font-mono": 'ui-monospace, "SFMono-Regular", "Cascadia Code", Menlo, Monaco, Consolas, monospace',
6
6
  "font-size-xs": "11px",
@@ -36,40 +36,13 @@ const c = Object.freeze({
36
36
  "ease-out": "cubic-bezier(0.25, 1, 0.5, 1)",
37
37
  "ease-expo": "cubic-bezier(0.16, 1, 0.3, 1)"
38
38
  });
39
- function _(r) {
40
- const o = {};
41
- return Object.entries(c).forEach(([t, a]) => {
42
- o[`${r}-${t}`] = a;
43
- }), o;
39
+ function B(e) {
40
+ const t = {};
41
+ return Object.entries(q).forEach(([a, r]) => {
42
+ t[`${e}-${a}`] = r;
43
+ }), t;
44
44
  }
45
- const n = Object.freeze({
46
- chrome: 10,
47
- localOverlay: 190,
48
- floating: 1e4,
49
- drawerBackdrop: 10010,
50
- drawer: 10011,
51
- modalBackdrop: 10020,
52
- modal: 10021,
53
- attachment: 10030,
54
- optionPicker: 10040,
55
- confirmation: 10050,
56
- notification: 10060
57
- }), f = Object.freeze({
58
- chrome: "--hb-z-chrome",
59
- localOverlay: "--hb-z-local-overlay",
60
- floating: "--hb-z-floating",
61
- drawerBackdrop: "--hb-z-drawer-backdrop",
62
- drawer: "--hb-z-drawer",
63
- modalBackdrop: "--hb-z-modal-backdrop",
64
- modal: "--hb-z-modal",
65
- attachment: "--hb-z-attachment",
66
- optionPicker: "--hb-z-option-picker",
67
- confirmation: "--hb-z-confirmation",
68
- notification: "--hb-z-notification"
69
- }), x = `:root {
70
- ${Object.keys(n).map((r) => ` ${f[r]}: ${n[r]};`).join(`
71
- `)}
72
- }`, g = _("--hb"), i = {
45
+ const F = B("--hb"), _ = {
73
46
  /* ==================== 默认亮色 ==================== */
74
47
  default: {
75
48
  label: "经典",
@@ -116,45 +89,6 @@ ${Object.keys(n).map((r) => ` ${f[r]}: ${n[r]};`).join(`
116
89
  "--hb-overlay": "rgba(0,0,0,0.3)"
117
90
  }
118
91
  },
119
- /* ==================== 暗夜模式 ==================== */
120
- dark: {
121
- label: "暗夜",
122
- labelEn: "Dark",
123
- vars: {
124
- "--hb-bg-root": "#1a1a2e",
125
- "--hb-bg-toolbar": "#16213e",
126
- "--hb-bg-sidebar": "#1a1a2e",
127
- "--hb-bg-canvas": "#0f3460",
128
- "--hb-bg-drawer": "#16213e",
129
- "--hb-bg-modal": "#16213e",
130
- "--hb-bg-hover": "#1a3a5c",
131
- "--hb-bg-active": "#1a3a5c",
132
- "--hb-bg-section": "#0f3460",
133
- "--hb-bg-input": "#1a1a2e",
134
- "--hb-bg-tag": "#0f3460",
135
- "--hb-text-primary": "#e0e0e0",
136
- "--hb-text-secondary": "#b0b0b0",
137
- "--hb-text-muted": "#808080",
138
- "--hb-text-disabled": "#555555",
139
- "--hb-color-primary": "#5dade2",
140
- "--hb-color-primary-light": "#1a3a5c",
141
- "--hb-color-primary-bg": "#162d50",
142
- "--hb-color-success": "#2ecc71",
143
- "--hb-color-warning": "#f39c12",
144
- "--hb-color-danger": "#e74c3c",
145
- "--hb-color-title": "#e74c3c",
146
- "--hb-border-color": "#2c3e50",
147
- "--hb-border-light": "#1e2d3d",
148
- "--hb-border-strong": "#34495e",
149
- "--hb-radius-sm": "4px",
150
- "--hb-radius-md": "6px",
151
- "--hb-radius-lg": "8px",
152
- "--hb-shadow-sm": "0 1px 4px rgba(0,0,0,0.3)",
153
- "--hb-shadow-md": "0 4px 12px rgba(0,0,0,0.4)",
154
- "--hb-shadow-lg": "0 8px 32px rgba(0,0,0,0.5)",
155
- "--hb-overlay": "rgba(0,0,0,0.6)"
156
- }
157
- },
158
92
  /* ==================== 自然绿 ==================== */
159
93
  nature: {
160
94
  label: "自然",
@@ -273,7 +207,7 @@ ${Object.keys(n).map((r) => ` ${f[r]}: ${n[r]};`).join(`
273
207
  }
274
208
  },
275
209
  /* ==================== 现代风格 ==================== */
276
- /* 参考 RuleChainEditor.vue 的视觉设计: 大圆角节点、蓝色选中发光、柔和阴影 */
210
+ /* 现代主题:大圆角节点、清晰选中态和柔和阴影 */
277
211
  modern: {
278
212
  label: "现代",
279
213
  labelEn: "Modern",
@@ -295,7 +229,7 @@ ${Object.keys(n).map((r) => ` ${f[r]}: ${n[r]};`).join(`
295
229
  "--hb-text-secondary": "#64748b",
296
230
  "--hb-text-muted": "#94a3b8",
297
231
  "--hb-text-disabled": "#cbd5e1",
298
- // 主题色 — 蓝色系 (参考 #3b82f6)
232
+ // 主题色 — 清晰的蓝色操作色
299
233
  "--hb-color-primary": "#3b82f6",
300
234
  "--hb-color-primary-light": "#bfdbfe",
301
235
  "--hb-color-primary-bg": "#eff6ff",
@@ -340,58 +274,362 @@ ${Object.keys(n).map((r) => ` ${f[r]}: ${n[r]};`).join(`
340
274
  }
341
275
  }
342
276
  };
343
- function e(r) {
277
+ function f(e) {
344
278
  return {
345
- "--hb-bg-root": r.root,
346
- "--hb-bg-toolbar": r.toolbar,
347
- "--hb-bg-sidebar": r.sidebar,
348
- "--hb-bg-canvas": r.canvas,
349
- "--hb-bg-drawer": r.toolbar,
350
- "--hb-bg-modal": r.toolbar,
351
- "--hb-bg-hover": r.hover,
352
- "--hb-bg-active": r.active,
353
- "--hb-bg-section": r.section,
354
- "--hb-bg-input": r.input,
355
- "--hb-bg-tag": r.tag,
356
- "--hb-text-primary": r.text,
357
- "--hb-text-secondary": r.secondary,
358
- "--hb-text-muted": r.muted,
359
- "--hb-text-disabled": r.disabled,
360
- "--hb-color-primary": r.primary,
361
- "--hb-color-primary-light": r.primaryLight,
362
- "--hb-color-primary-bg": r.primaryBg,
363
- "--hb-color-success": r.success,
364
- "--hb-color-warning": r.warning,
365
- "--hb-color-danger": r.danger,
366
- "--hb-color-title": r.title,
367
- "--hb-border-color": r.border,
368
- "--hb-border-light": r.borderLight,
369
- "--hb-border-strong": r.borderStrong,
370
- "--hb-radius-sm": r.radiusSm || "6px",
371
- "--hb-radius-md": r.radiusMd || "8px",
372
- "--hb-radius-lg": r.radiusLg || "10px",
373
- "--hb-shadow-sm": `0 1px 4px ${r.shadowColor}`,
374
- "--hb-shadow-md": `0 4px 12px ${r.shadowColor}`,
375
- "--hb-shadow-lg": `0 8px 28px ${r.shadowColor}`,
376
- "--hb-overlay": r.overlay,
377
- "--hb-node-selected-stroke": r.primary,
378
- "--hb-node-selected-shadow": `0 0 8px ${r.shadowColor}`,
279
+ "--hb-bg-root": e.root,
280
+ "--hb-bg-toolbar": e.toolbar,
281
+ "--hb-bg-sidebar": e.sidebar,
282
+ "--hb-bg-canvas": e.canvas,
283
+ "--hb-bg-drawer": e.toolbar,
284
+ "--hb-bg-modal": e.toolbar,
285
+ "--hb-bg-hover": e.hover,
286
+ "--hb-bg-active": e.active,
287
+ "--hb-bg-section": e.section,
288
+ "--hb-bg-input": e.input,
289
+ "--hb-bg-tag": e.tag,
290
+ "--hb-text-primary": e.text,
291
+ "--hb-text-secondary": e.secondary,
292
+ "--hb-text-muted": e.muted,
293
+ "--hb-text-disabled": e.disabled,
294
+ "--hb-color-primary": e.primary,
295
+ "--hb-color-primary-light": e.primaryLight,
296
+ "--hb-color-primary-bg": e.primaryBg,
297
+ "--hb-color-success": e.success,
298
+ "--hb-color-warning": e.warning,
299
+ "--hb-color-danger": e.danger,
300
+ "--hb-color-title": e.title,
301
+ "--hb-border-color": e.border,
302
+ "--hb-border-light": e.borderLight,
303
+ "--hb-border-strong": e.borderStrong,
304
+ "--hb-radius-sm": e.radiusSm || "6px",
305
+ "--hb-radius-md": e.radiusMd || "8px",
306
+ "--hb-radius-lg": e.radiusLg || "10px",
307
+ "--hb-shadow-sm": `0 1px 4px ${e.shadowColor}`,
308
+ "--hb-shadow-md": `0 4px 12px ${e.shadowColor}`,
309
+ "--hb-shadow-lg": `0 8px 28px ${e.shadowColor}`,
310
+ "--hb-overlay": e.overlay,
311
+ "--hb-node-selected-stroke": e.primary,
312
+ "--hb-node-selected-shadow": `0 0 8px ${e.shadowColor}`,
379
313
  "--hb-node-hover-brightness": "0.96",
380
- "--hb-node-radius": r.radiusMd || "8px",
314
+ "--hb-node-radius": e.radiusMd || "8px",
381
315
  "--hb-node-shadow-offset": "2px",
382
- "--hb-port-fill": r.input,
383
- "--hb-port-stroke": r.muted,
384
- "--hb-port-hover-fill": r.primary,
385
- "--hb-port-hover-stroke": r.primary,
386
- "--hb-edge-stroke": r.muted,
387
- "--hb-edge-hover-stroke": r.primary
316
+ "--hb-port-fill": e.input,
317
+ "--hb-port-stroke": e.muted,
318
+ "--hb-port-hover-fill": e.primary,
319
+ "--hb-port-hover-stroke": e.primary,
320
+ "--hb-edge-stroke": e.muted,
321
+ "--hb-edge-hover-stroke": e.primary
322
+ };
323
+ }
324
+ const m = /* @__PURE__ */ new Set(["tech", "vscode"]), C = {
325
+ default: [68, 84, 0],
326
+ nature: [40, 86, -10],
327
+ elegant: [46, 88, 8],
328
+ tech: [34, 25, -5],
329
+ modern: [72, 93, 0],
330
+ colorful: [82, 82, 4],
331
+ "ant-blue": [70, 89, -3],
332
+ material: [58, 87, 3],
333
+ tailwind: [76, 91, -6],
334
+ github: [36, 93, 0],
335
+ vscode: [25, 27, 5],
336
+ apple: [48, 92, -2]
337
+ }, V = {
338
+ endpoint: 166,
339
+ common: 208,
340
+ filter: 44,
341
+ transform: 192,
342
+ action: 354,
343
+ external: 272,
344
+ flow: 218,
345
+ ai: 280,
346
+ ci: 24,
347
+ iot: 146,
348
+ stats: 178,
349
+ knowledge: 258,
350
+ storage: 184,
351
+ discovery: 158,
352
+ image: 326,
353
+ audio: 232,
354
+ file: 32,
355
+ custom: 314,
356
+ other: 218,
357
+ start: 205,
358
+ end: 355,
359
+ comment: 50
360
+ };
361
+ function N(e) {
362
+ const [t, a, r] = C[e] || C.default;
363
+ return Object.fromEntries(Object.entries(V).flatMap(([i, d]) => [
364
+ [`--rg-node-${i}-bg`, `hsl(${(d + r + 360) % 360}, ${t}%, ${a}%)`],
365
+ [`--rg-node-${i}-stroke`, `hsl(${(d + r + 360) % 360}, ${t}%, ${m.has(e) ? 68 : 42}%)`]
366
+ ]));
367
+ }
368
+ function L(e) {
369
+ const t = _[e], a = (t == null ? void 0 : t.vars) || {}, r = m.has(e), i = a["--hb-color-primary"] || "#409eff", d = a["--hb-text-muted"] || "#909399", p = a["--hb-bg-toolbar"] || "#ffffff";
370
+ return {
371
+ "--hb-canvas-grid-color": a["--hb-canvas-grid-color"] || (r ? "rgba(148,163,184,0.22)" : "rgba(100,116,139,0.16)"),
372
+ "--hb-canvas-grid-size": a["--hb-canvas-grid-size"] || "20px",
373
+ "--hb-node-selected-stroke": a["--hb-node-selected-stroke"] || i,
374
+ "--hb-node-selected-shadow": a["--hb-node-selected-shadow"] || `0 0 0 2px ${i}, 0 4px 16px ${r ? "rgba(0,0,0,0.38)" : "rgba(15,23,42,0.16)"}`,
375
+ "--hb-node-selected-filter": a["--hb-node-selected-filter"] || `drop-shadow(0 0 5px ${r ? i : `${i}55`})`,
376
+ "--hb-node-hover-brightness": a["--hb-node-hover-brightness"] || (r ? "1.08" : "0.98"),
377
+ "--hb-node-radius": a["--hb-node-radius"] || a["--hb-radius-md"] || "8px",
378
+ "--hb-node-border": a["--hb-node-border"] || a["--hb-border-color"] || "#dcdfe6",
379
+ "--hb-node-shadow-offset": a["--hb-node-shadow-offset"] || "2px",
380
+ "--hb-node-shadow-color": a["--hb-node-shadow-color"] || (r ? "rgba(0,0,0,0.34)" : "rgba(15,23,42,0.14)"),
381
+ // Classic glyphs are white; their inset must remain legible on pale category surfaces.
382
+ "--hb-node-icon-bg": a["--hb-node-icon-bg"] || (e === "default" ? "rgba(15,23,42,0.50)" : r ? "rgba(255,255,255,0.08)" : "rgba(15,23,42,0.06)"),
383
+ "--hb-node-icon-divider": a["--hb-node-icon-divider"] || (r ? "rgba(255,255,255,0.16)" : "rgba(15,23,42,0.10)"),
384
+ "--hb-node-text": a["--hb-node-text"] || a["--hb-text-primary"] || "#333333",
385
+ "--hb-port-fill": a["--hb-port-fill"] || p,
386
+ "--hb-port-stroke": a["--hb-port-stroke"] || d,
387
+ "--hb-port-radius": a["--hb-port-radius"] || (e === "modern" || e === "apple" ? "50%" : "3px"),
388
+ "--hb-port-hover-fill": a["--hb-port-hover-fill"] || i,
389
+ "--hb-port-hover-stroke": a["--hb-port-hover-stroke"] || i,
390
+ "--hb-edge-stroke": a["--hb-edge-stroke"] || d,
391
+ "--hb-edge-hover-stroke": a["--hb-edge-hover-stroke"] || i,
392
+ "--hb-edge-selected-stroke": a["--hb-edge-selected-stroke"] || i,
393
+ "--hb-edge-label-bg": a["--hb-edge-label-bg"] || p,
394
+ "--hb-edge-label-color": a["--hb-edge-label-color"] || a["--hb-text-secondary"] || d
395
+ };
396
+ }
397
+ function o(e, t, a) {
398
+ return e[t] || a;
399
+ }
400
+ function X(e) {
401
+ const t = v(e), a = _[t], r = { ...a == null ? void 0 : a.vars, ...L(t) }, i = o(r, "--hb-color-primary", "#409eff"), d = o(r, "--hb-color-danger", "#f56c6c"), p = o(r, "--hb-color-warning", "#e6a23c"), g = o(r, "--hb-color-success", "#67c23a"), h = o(r, "--hb-text-muted", "#909399"), b = o(r, "--hb-text-primary", "#333333"), x = o(r, "--hb-text-secondary", "#606266"), n = o(r, "--hb-bg-toolbar", "#ffffff");
402
+ return {
403
+ "--rg-bg-primary": o(r, "--hb-bg-root", n),
404
+ "--rg-bg-secondary": o(r, "--hb-bg-section", n),
405
+ "--rg-bg-tertiary": o(r, "--hb-bg-tag", n),
406
+ "--rg-bg-hover": o(r, "--hb-bg-hover", n),
407
+ "--rg-bg-active": o(r, "--hb-bg-active", n),
408
+ "--rg-bg-overlay": o(r, "--hb-overlay", "rgba(0,0,0,0.3)"),
409
+ "--rg-text-primary": b,
410
+ "--rg-text-secondary": x,
411
+ "--rg-text-tertiary": h,
412
+ "--rg-text-inverse": "#ffffff",
413
+ "--rg-text-link": i,
414
+ "--rg-text-link-hover": i,
415
+ "--rg-border-primary": o(r, "--hb-border-color", "#dcdfe6"),
416
+ "--rg-border-secondary": o(r, "--hb-border-strong", "#cbd5e1"),
417
+ "--rg-border-focus": i,
418
+ "--rg-border-error": d,
419
+ "--rg-border-radius": o(r, "--hb-radius-md", "8px"),
420
+ "--rg-border-radius-sm": o(r, "--hb-radius-sm", "4px"),
421
+ "--rg-border-radius-lg": o(r, "--hb-radius-lg", "12px"),
422
+ "--rg-border-radius-xl": o(r, "--hb-radius-lg", "12px"),
423
+ "--rg-shadow-sm": o(r, "--hb-shadow-sm", "0 1px 4px rgba(0,0,0,0.08)"),
424
+ "--rg-shadow-md": o(r, "--hb-shadow-md", "0 4px 12px rgba(0,0,0,0.12)"),
425
+ "--rg-shadow-lg": o(r, "--hb-shadow-lg", "0 8px 28px rgba(0,0,0,0.15)"),
426
+ "--rg-shadow-xl": o(r, "--hb-shadow-lg", "0 8px 28px rgba(0,0,0,0.15)"),
427
+ "--rg-shadow-focus": `0 0 0 3px ${i}44`,
428
+ "--rg-shadow-inset": "inset 0 2px 4px rgba(0,0,0,0.04)",
429
+ "--rg-canvas-bg": o(r, "--hb-bg-canvas", n),
430
+ "--rg-canvas-grid-color": o(r, "--hb-canvas-grid-color", "#e8eaee"),
431
+ "--rg-canvas-grid-size": o(r, "--hb-canvas-grid-size", "20px"),
432
+ "--rg-node-filter-bg": o(r, "--hb-bg-tag", n),
433
+ "--rg-node-filter-border": p,
434
+ "--rg-node-filter-text": b,
435
+ "--rg-node-transform-bg": o(r, "--hb-color-primary-bg", n),
436
+ "--rg-node-transform-border": i,
437
+ "--rg-node-transform-text": b,
438
+ "--rg-node-action-bg": o(r, "--hb-color-primary-bg", n),
439
+ "--rg-node-action-border": d,
440
+ "--rg-node-action-text": b,
441
+ "--rg-node-external-bg": o(r, "--hb-bg-tag", n),
442
+ "--rg-node-external-border": p,
443
+ "--rg-node-external-text": b,
444
+ "--rg-node-flow-bg": o(r, "--hb-color-primary-bg", n),
445
+ "--rg-node-flow-border": i,
446
+ "--rg-node-flow-text": b,
447
+ "--rg-node-start-bg": i,
448
+ "--rg-node-start-border": i,
449
+ "--rg-node-start-text": "#ffffff",
450
+ "--rg-node-border": o(r, "--hb-border-color", "#dcdfe6"),
451
+ "--rg-node-shadow": o(r, "--hb-shadow-md", "0 4px 12px rgba(0,0,0,0.12)"),
452
+ "--rg-node-shadow-hover": o(r, "--hb-shadow-lg", "0 8px 28px rgba(0,0,0,0.15)"),
453
+ "--rg-node-shadow-selected": o(r, "--hb-node-selected-shadow", `0 0 0 2px ${i}`),
454
+ "--rg-node-shadow-color": o(r, "--hb-node-shadow-color", "rgba(0,0,0,0.14)"),
455
+ "--rg-node-icon-bg": o(r, "--hb-node-icon-bg", "rgba(15,23,42,0.06)"),
456
+ "--rg-node-icon-divider": o(r, "--hb-node-icon-divider", "rgba(15,23,42,0.10)"),
457
+ "--rg-node-text": b,
458
+ "--rg-node-selected-stroke": o(r, "--hb-node-selected-stroke", i),
459
+ "--rg-node-selected-filter": o(r, "--hb-node-selected-filter", "none"),
460
+ "--rg-node-width": "120px",
461
+ "--rg-node-min-height": "30px",
462
+ "--rg-node-font-size": o(r, "--hb-font-size-base", "13px"),
463
+ "--rg-edge-color": o(r, "--hb-edge-stroke", h),
464
+ "--rg-edge-color-hover": o(r, "--hb-edge-hover-stroke", i),
465
+ "--rg-edge-color-selected": o(r, "--hb-edge-selected-stroke", i),
466
+ "--rg-edge-width": "2px",
467
+ "--rg-edge-label-bg": o(r, "--hb-edge-label-bg", n),
468
+ "--rg-edge-label-color": o(r, "--hb-edge-label-color", x),
469
+ "--rg-edge-label-font-size": "11px",
470
+ "--rg-toolbar-bg": n,
471
+ "--rg-toolbar-border": o(r, "--hb-border-color", "#dcdfe6"),
472
+ "--rg-toolbar-shadow": o(r, "--hb-shadow-sm", "0 2px 8px rgba(0,0,0,0.06)"),
473
+ "--rg-toolbar-btn-bg": "transparent",
474
+ "--rg-toolbar-btn-bg-hover": o(r, "--hb-bg-hover", n),
475
+ "--rg-toolbar-btn-bg-active": o(r, "--hb-bg-active", n),
476
+ "--rg-toolbar-btn-color": x,
477
+ "--rg-toolbar-btn-color-hover": i,
478
+ "--rg-toolbar-btn-radius": o(r, "--hb-radius-sm", "6px"),
479
+ "--rg-sidebar-bg": o(r, "--hb-bg-sidebar", n),
480
+ "--rg-sidebar-border": o(r, "--hb-border-color", "#dcdfe6"),
481
+ "--rg-sidebar-width": "200px",
482
+ "--rg-sidebar-item-bg-hover": o(r, "--hb-bg-hover", n),
483
+ "--rg-sidebar-item-bg-active": o(r, "--hb-bg-active", n),
484
+ "--rg-sidebar-group-header-bg": o(r, "--hb-bg-section", n),
485
+ "--rg-panel-bg": o(r, "--hb-bg-drawer", n),
486
+ "--rg-panel-border": o(r, "--hb-border-color", "#dcdfe6"),
487
+ "--rg-panel-width": "320px",
488
+ "--rg-panel-shadow": o(r, "--hb-shadow-md", "0 4px 12px rgba(0,0,0,0.12)"),
489
+ "--rg-input-bg": o(r, "--hb-bg-input", n),
490
+ "--rg-input-border": o(r, "--hb-border-color", "#dcdfe6"),
491
+ "--rg-input-border-focus": i,
492
+ "--rg-input-text": b,
493
+ "--rg-input-placeholder": h,
494
+ "--rg-input-shadow-focus": `0 0 0 3px ${i}33`,
495
+ "--rg-btn-primary-bg": i,
496
+ "--rg-btn-primary-bg-hover": i,
497
+ "--rg-btn-primary-text": "#ffffff",
498
+ "--rg-btn-primary-shadow": o(r, "--hb-shadow-sm", "0 2px 6px rgba(0,0,0,0.10)"),
499
+ "--rg-btn-secondary-bg": n,
500
+ "--rg-btn-secondary-bg-hover": o(r, "--hb-bg-hover", n),
501
+ "--rg-btn-secondary-text": b,
502
+ "--rg-btn-danger-bg": d,
503
+ "--rg-btn-danger-bg-hover": d,
504
+ "--rg-btn-danger-text": "#ffffff",
505
+ "--rg-color-success": g,
506
+ "--rg-color-warning": p,
507
+ "--rg-color-error": d,
508
+ "--rg-color-info": i,
509
+ // editor-ui 历史变量别名。保留别名可让纯 DOM UI 与 Core/standalone
510
+ // 使用同一套主题,不再只在 light/dark 两套固定样式之间切换。
511
+ "--rg-primary-color": i,
512
+ "--rg-success-color": g,
513
+ "--rg-warning-color": p,
514
+ "--rg-danger-color": d,
515
+ "--rg-text-color": b,
516
+ "--rg-border-color": o(r, "--hb-border-color", "#dcdfe6"),
517
+ "--rg-hover-bg": o(r, "--hb-bg-hover", n),
518
+ "--rg-active-bg": o(r, "--hb-bg-active", n),
519
+ "--rg-badge-bg": o(r, "--hb-bg-tag", n),
520
+ "--rg-switch-off-bg": o(r, "--hb-text-disabled", "#c0c4cc"),
521
+ "--rg-console-bg": o(r, "--hb-bg-section", n),
522
+ "--rg-console-text": b,
523
+ "--rg-transition-fast": o(r, "--hb-duration-fast", "100ms"),
524
+ "--rg-transition-normal": o(r, "--hb-duration", "160ms"),
525
+ "--rg-transition-slow": o(r, "--hb-duration-slow", "240ms"),
526
+ ...N(t)
527
+ };
528
+ }
529
+ function M(e) {
530
+ return m.has(v(e));
531
+ }
532
+ function T(e) {
533
+ const t = v(e), a = _[t], r = {
534
+ ...F,
535
+ ...(a == null ? void 0 : a.vars) || {},
536
+ ...L(t)
537
+ }, i = X(t), d = o(r, "--hb-color-primary", "#409eff"), p = o(r, "--hb-color-success", "#67c23a"), g = o(r, "--hb-color-warning", "#e6a23c"), h = o(r, "--hb-color-danger", "#f56c6c"), b = o(r, "--hb-text-primary", "#303133"), x = o(r, "--hb-text-secondary", "#606266"), n = o(r, "--hb-text-muted", "#909399"), O = o(r, "--hb-text-disabled", "#c0c4cc"), l = o(r, "--hb-bg-toolbar", "#ffffff"), s = o(r, "--hb-bg-section", "#f8fafc"), u = o(r, "--hb-border-color", "#dcdfe6"), w = o(r, "--hb-border-light", "#ebeef5"), I = o(r, "--hb-radius-md", "8px"), y = o(r, "--hb-shadow-md", "0 4px 12px rgba(0,0,0,0.12)"), k = s, c = M(t), R = {
538
+ bg: k,
539
+ text: b,
540
+ "gutter-bg": s,
541
+ "gutter-text": c ? "#a5adb8" : "#626d79",
542
+ "active-line": o(r, "--hb-bg-hover", l),
543
+ selection: `color-mix(in srgb, ${d} 24%, transparent)`,
544
+ caret: b,
545
+ keyword: c ? "#d8a8ed" : "#873784",
546
+ string: c ? "#a5d6ad" : "#146b3a",
547
+ number: c ? "#f5b979" : "#99400e",
548
+ type: c ? "#79cbd9" : "#09647a",
549
+ variable: b,
550
+ comment: c ? "#a5adb8" : "#626d79",
551
+ operator: c ? "#a5c9ed" : "#254f7c",
552
+ function: c ? "#f1d78a" : "#775b05",
553
+ bracket: x,
554
+ "tooltip-bg": l
555
+ }, D = Object.fromEntries(Object.entries(R).flatMap(([z, j]) => [
556
+ [`--hb-code-${z}`, j],
557
+ [`--rge-code-${z}`, j]
558
+ ]));
559
+ return {
560
+ ...r,
561
+ ...i,
562
+ "--hb-bg-panel": l,
563
+ "--hb-panel-bg": l,
564
+ "--hb-panel-border": u,
565
+ "--hb-bg-main": o(r, "--hb-bg-root", l),
566
+ "--hb-primary": d,
567
+ "--hb-bg-muted": s,
568
+ "--hb-border": u,
569
+ "--hb-success": p,
570
+ "--hb-warning": g,
571
+ "--hb-danger": h,
572
+ "--hb-warning-soft": o(r, "--hb-bg-tag", s),
573
+ "--hb-success-soft": `color-mix(in srgb, ${p} 12%, ${l})`,
574
+ "--hb-danger-soft": `color-mix(in srgb, ${h} 12%, ${l})`,
575
+ "--hb-info-soft": o(r, "--hb-color-primary-bg", s),
576
+ "--rge-bg": o(r, "--hb-bg-root", l),
577
+ "--rge-surface": l,
578
+ "--rge-surface-muted": s,
579
+ "--rge-panel-bg": s,
580
+ "--rge-toolbar-bg": l,
581
+ "--rge-border": u,
582
+ "--rge-border-light": w,
583
+ "--rge-text": b,
584
+ "--rge-text-secondary": x,
585
+ "--rge-text-muted": n,
586
+ "--rge-text-disabled": O,
587
+ "--rge-primary": d,
588
+ "--rge-primary-soft": o(r, "--hb-color-primary-bg", s),
589
+ "--rge-success": p,
590
+ "--rge-warning": g,
591
+ "--rge-danger": h,
592
+ "--rge-danger-soft": `color-mix(in srgb, ${h} 10%, transparent)`,
593
+ "--rge-success-soft": `color-mix(in srgb, ${p} 12%, ${l})`,
594
+ "--rge-warning-soft": `color-mix(in srgb, ${g} 12%, ${l})`,
595
+ "--rge-shadow-dropdown": y,
596
+ "--rge-code-bg": k,
597
+ "--rge-code-inline-bg": M(t) ? "rgba(255,255,255,0.08)" : "rgba(15,23,42,0.08)",
598
+ ...D,
599
+ "--huanban-rg-bg": o(r, "--hb-bg-root", l),
600
+ "--huanban-rg-surface": s,
601
+ "--huanban-rg-card": l,
602
+ "--huanban-rg-text": b,
603
+ "--huanban-rg-text-secondary": x,
604
+ "--huanban-rg-text-muted": n,
605
+ "--huanban-rg-border": u,
606
+ "--huanban-rg-border-soft": w,
607
+ "--huanban-rg-primary": d,
608
+ "--huanban-rg-danger": h,
609
+ "--huanban-rg-success": p,
610
+ "--huanban-rg-warning": g,
611
+ "--huanban-rg-row-bg": l,
612
+ "--huanban-rg-row-hover": o(r, "--hb-bg-hover", s),
613
+ "--huanban-rg-input-bg": o(r, "--hb-bg-input", l),
614
+ "--huanban-rg-icon-bg": d,
615
+ "--huanban-rg-shadow": y,
616
+ "--huanban-rg-radius": I
388
617
  };
389
618
  }
390
- Object.assign(i, {
619
+ function Z(e) {
620
+ const t = v(e), a = _[t];
621
+ return {
622
+ name: t,
623
+ label: (a == null ? void 0 : a.labelEn) || t,
624
+ isDark: m.has(t),
625
+ variables: T(t)
626
+ };
627
+ }
628
+ Object.assign(_, {
391
629
  colorful: {
392
630
  label: "彩色",
393
631
  labelEn: "Colorful",
394
- vars: e({
632
+ vars: f({
395
633
  root: "#f8fafc",
396
634
  toolbar: "#ffffff",
397
635
  sidebar: "#ffffff",
@@ -422,7 +660,7 @@ Object.assign(i, {
422
660
  "ant-blue": {
423
661
  label: "蚂蚁蓝",
424
662
  labelEn: "Ant Blue",
425
- vars: e({
663
+ vars: f({
426
664
  root: "#f0f7ff",
427
665
  toolbar: "#ffffff",
428
666
  sidebar: "#f7fbff",
@@ -456,7 +694,7 @@ Object.assign(i, {
456
694
  material: {
457
695
  label: "Material",
458
696
  labelEn: "Material",
459
- vars: e({
697
+ vars: f({
460
698
  root: "#f8fbff",
461
699
  toolbar: "#ffffff",
462
700
  sidebar: "#ffffff",
@@ -490,7 +728,7 @@ Object.assign(i, {
490
728
  tailwind: {
491
729
  label: "Tailwind",
492
730
  labelEn: "Tailwind",
493
- vars: e({
731
+ vars: f({
494
732
  root: "#f8fafc",
495
733
  toolbar: "#ffffff",
496
734
  sidebar: "#ffffff",
@@ -524,7 +762,7 @@ Object.assign(i, {
524
762
  github: {
525
763
  label: "GitHub",
526
764
  labelEn: "GitHub",
527
- vars: e({
765
+ vars: f({
528
766
  root: "#f6f8fa",
529
767
  toolbar: "#ffffff",
530
768
  sidebar: "#ffffff",
@@ -558,7 +796,7 @@ Object.assign(i, {
558
796
  vscode: {
559
797
  label: "VS Code",
560
798
  labelEn: "VS Code",
561
- vars: e({
799
+ vars: f({
562
800
  root: "#1e1e1e",
563
801
  toolbar: "#252526",
564
802
  sidebar: "#252526",
@@ -592,7 +830,7 @@ Object.assign(i, {
592
830
  apple: {
593
831
  label: "苹果",
594
832
  labelEn: "Apple",
595
- vars: e({
833
+ vars: f({
596
834
  root: "#f5f5f7",
597
835
  toolbar: "#ffffff",
598
836
  sidebar: "#fbfbfd",
@@ -624,7 +862,9 @@ Object.assign(i, {
624
862
  })
625
863
  }
626
864
  });
627
- const u = {
865
+ const P = {
866
+ // 暗夜主题已下线;保留兼容映射,避免旧配置渲染成不可读的暗色界面。
867
+ dark: "default",
628
868
  light: "default",
629
869
  classic: "default",
630
870
  blue: "tech",
@@ -637,44 +877,403 @@ const u = {
637
877
  "visual-studio-code": "vscode",
638
878
  mac: "apple",
639
879
  macos: "apple"
640
- };
641
- function w(r) {
642
- const o = String(r || "").trim().toLowerCase();
643
- return o ? Object.prototype.hasOwnProperty.call(i, o) ? o : u[o] || "default" : "default";
644
- }
645
- function m() {
646
- let r = "";
647
- for (const [o, t] of Object.entries(i)) {
648
- const a = o === "default" ? '.huanban_rulego_editor_root, .huanban_rulego_editor_root[data-theme="default"]' : `.huanban_rulego_editor_root[data-theme="${o}"]`, l = Object.entries({ ...g, ...t.vars }).map(([b, p]) => ` ${b}: ${p};`).join(`
880
+ }, E = "auto";
881
+ function v(e) {
882
+ const t = String(e || "").trim().toLowerCase();
883
+ return t ? t === E ? E : Object.prototype.hasOwnProperty.call(_, t) ? t : P[t] || "default" : "default";
884
+ }
885
+ function H() {
886
+ let e = "";
887
+ for (const t of Object.keys(_)) {
888
+ const a = t === "default" ? '.huanban_rulego_editor_root, .huanban_rulego_editor_root[data-theme="default"]' : `.huanban_rulego_editor_root[data-theme="${t}"]`, r = Object.entries(T(t)).map(([i, d]) => ` ${i}: ${d};`).join(`
649
889
  `);
650
- r += `${a} {
651
- ${l}
890
+ e += `${a} {
891
+ ${r}
652
892
  }
653
893
 
654
894
  `;
655
895
  }
656
- return r;
896
+ return e;
657
897
  }
658
- function k(r) {
659
- const o = r.toLowerCase().includes("en");
660
- return Object.entries(i).map(([t, a]) => ({
661
- id: t,
662
- label: o ? a.labelEn : a.label
898
+ function rr(e) {
899
+ const t = e.toLowerCase().includes("en");
900
+ return Object.entries(_).map(([a, r]) => ({
901
+ id: a,
902
+ label: t ? r.labelEn : r.label
663
903
  }));
664
904
  }
665
- let d = !1;
666
- function z() {
667
- if (d) return;
668
- d = !0;
669
- const r = document.createElement("style");
670
- r.id = "huanban_rulego_editor_styles", r.textContent = `
905
+ const S = Object.freeze({
906
+ chrome: 10,
907
+ localOverlay: 190,
908
+ floating: 1e4,
909
+ drawerBackdrop: 10010,
910
+ drawer: 10011,
911
+ modalBackdrop: 10020,
912
+ modal: 10021,
913
+ attachment: 10030,
914
+ optionPicker: 10040,
915
+ confirmation: 10050,
916
+ notification: 10060
917
+ }), U = Object.freeze({
918
+ chrome: "--hb-z-chrome",
919
+ localOverlay: "--hb-z-local-overlay",
920
+ floating: "--hb-z-floating",
921
+ drawerBackdrop: "--hb-z-drawer-backdrop",
922
+ drawer: "--hb-z-drawer",
923
+ modalBackdrop: "--hb-z-modal-backdrop",
924
+ modal: "--hb-z-modal",
925
+ attachment: "--hb-z-attachment",
926
+ optionPicker: "--hb-z-option-picker",
927
+ confirmation: "--hb-z-confirmation",
928
+ notification: "--hb-z-notification"
929
+ }), G = `:root {
930
+ ${Object.keys(S).map((e) => ` ${U[e]}: ${S[e]};`).join(`
931
+ `)}
932
+ }`, K = `
933
+ .hb_workspace_tabs { display:flex; flex:none; min-width:0; min-height:34px; border-bottom:1px solid var(--hb-border-color); background:var(--hb-bg-toolbar); }
934
+ .hb_workspace_tabs[hidden], .hb_workspace_nav[hidden], .hb_workspace_palette[hidden], .hb_workspace_resources[hidden] { display:none!important; }
935
+ .hb_workspace_tab_list { display:flex; flex:1; min-width:0; overflow-x:auto; scrollbar-width:thin; }
936
+ .hb_workspace_tab { display:flex; align-items:center; flex:none; min-width:100px; max-width:220px; border-right:1px solid var(--hb-border-color); border-top:2px solid transparent; }
937
+ .hb_workspace_tab.is_active { background:var(--hb-bg-canvas,var(--hb-bg-panel)); border-top-color:var(--hb-color-primary); }
938
+ .hb_workspace_tabs button, .hb_workspace_nav button, .hb_workspace_resource_tools button { display:inline-flex; align-items:center; justify-content:center; gap:6px; height:32px; min-width:28px; padding:0 7px; border:0; color:var(--hb-text-secondary); background:transparent; cursor:pointer; font:inherit; }
939
+ .hb_workspace_tab > [role=tab] { min-width:0; flex:1; justify-content:flex-start; }
940
+ .hb_workspace_tab.is_active > [role=tab] { color:var(--hb-text-primary); }
941
+ .hb_workspace_tab_title { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
942
+ .hb_workspace_tab .hb_control_icon { flex:none; }
943
+ .hb_workspace_tab_close { flex:none; opacity:.7; }
944
+ .hb_workspace_dirty { flex:none; width:6px; height:6px; border-radius:50%; background:var(--hb-color-primary); }
945
+ .hb_workspace_tab_tools { display:flex; flex:none; border-left:1px solid var(--hb-border-color); }
946
+ .hb_workspace_nav { display:flex; flex:none; min-height:34px; border-bottom:1px solid var(--hb-border-color); }
947
+ .hb_workspace_nav button { flex:1 1 auto; min-width:0; padding:0 5px; gap:4px; font-size:12px; border-bottom:2px solid transparent; }
948
+ .hb_workspace_nav button > span:not(.hb_control_icon) { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
949
+ .hb_workspace_nav button[aria-selected=true] { color:var(--hb-color-primary); border-bottom-color:var(--hb-color-primary); }
950
+ .hb_workspace_palette, .hb_workspace_resources { display:flex; flex:1; flex-direction:column; min-height:0; overflow:hidden; }
951
+ .hb_workspace_resource_tools { display:flex; align-items:center; gap:3px; padding:6px; flex:none; border-bottom:1px solid var(--hb-border-color); }
952
+ .hb_workspace_resource_tools input { width:0; min-width:0; flex:1; height:28px; padding:0 7px; border:1px solid var(--hb-border-color); border-radius:4px; background:var(--hb-bg-input,var(--hb-bg-panel)); color:var(--hb-text-primary); font:inherit; font-size:12px; }
953
+ .hb_workspace_resource_list { flex:1; min-height:0; overflow:auto; }
954
+ .hb_workspace_resource_list summary { display:flex; align-items:center; gap:6px; min-height:30px; padding:3px 8px; cursor:pointer; color:var(--hb-text-secondary); font-size:11px; font-weight:600; }
955
+ .hb_workspace_resource_list summary::before { content:'\\25B8'; flex:none; }
956
+ .hb_workspace_resource_list details[open] > summary::before { content:'\\25BE'; }
957
+ .hb_workspace_resource_list summary > span { flex:1; overflow-wrap:anywhere; }
958
+ .hb_workspace_resource_list summary small { font-weight:400; }
959
+ .hb_workspace_resource { display:flex; gap:7px; align-items:center; width:100%; min-height:42px; padding:5px 10px; border:0; border-left:2px solid transparent; background:transparent; color:var(--hb-text-primary); cursor:pointer; font:inherit; text-align:left; }
960
+ .hb_workspace_resource > span:not(.hb_control_icon) { flex:1; min-width:0; display:flex; flex-direction:column; }
961
+ .hb_workspace_resource strong { font-size:12px; line-height:17px; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
962
+ .hb_workspace_resource small { color:var(--hb-text-secondary); font-size:10px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
963
+ .hb_workspace_resource.is_active { border-left-color:var(--hb-color-primary); background:var(--hb-bg-active,var(--hb-bg-hover)); }
964
+ .hb_workspace_tabs button:hover, .hb_workspace_nav button:hover, .hb_workspace_resource:hover, .hb_workspace_menu button:hover { background:var(--hb-bg-hover); }
965
+ .hb_workspace_tabs button:focus-visible, .hb_workspace_nav button:focus-visible, .hb_workspace_resource:focus-visible, .hb_workspace_menu button:focus-visible { outline:2px solid var(--hb-color-primary); outline-offset:-2px; }
966
+ .hb_workspace_lifecycle { width:6px; height:6px; border-radius:50%; background:var(--hb-text-secondary); flex:none; }
967
+ .hb_workspace_lifecycle.is_running { background:var(--hb-color-success,#2b8a57); }
968
+ .hb_workspace_resource_footer { display:flex; flex:none; flex-wrap:wrap; gap:6px; align-items:center; justify-content:space-between; padding:6px 8px; border-top:1px solid var(--hb-border-color); color:var(--hb-text-secondary); font-size:11px; }
969
+ .hb_workspace_resource_footer button { border:0; background:transparent; color:var(--hb-color-primary); cursor:pointer; font:inherit; }
970
+ .hb_workspace_resource_footer p { width:100%; margin:0; color:var(--hb-color-danger,#b42318); overflow-wrap:anywhere; }
971
+ .hb_workspace_empty { color:var(--hb-text-secondary); padding:12px; font-size:12px; }
972
+ .hb_workspace_menu { position:absolute; z-index:var(--hb-z-context-menu,10000); display:flex; flex-direction:column; padding:4px; min-width:180px; max-width:min(320px,calc(100% - 8px)); max-height:calc(100% - 8px); overflow:auto; border:1px solid var(--hb-border-color); border-radius:6px; background:var(--hb-bg-modal); box-shadow:0 8px 24px #0002; }
973
+ .hb_workspace_menu button { display:flex; flex:none; align-items:center; gap:8px; padding:7px 9px; border:0; border-radius:3px; background:transparent; color:var(--hb-text-primary); font:inherit; font-size:12px; cursor:pointer; text-align:left; }
974
+ .hb_workspace_menu button span:not(.hb_control_icon) { min-width:0; overflow-wrap:anywhere; }
975
+ .huanban_rulego_editor_sidebar.collapsed .hb_workspace_nav, .huanban_rulego_editor_sidebar.collapsed .hb_workspace_palette, .huanban_rulego_editor_sidebar.collapsed .hb_workspace_resources { display:none!important; }
976
+ @media(max-width:600px) { .hb_workspace_tab { min-width:88px; max-width:160px; } }
977
+ `, J = `/* Shared control geometry for complete editors and framework form components. */
978
+ :is(.huanban_form_item, .huanban_settings_field, .hb_ui_field, .route_form_item,
979
+ .hb_tool_config_field, .hb_struct_child, .hb_expr_condition, .shared_node_form,
980
+ .rge-form-section, .rge-form-group, .rge-struct-child, .rulego-property-panel,
981
+ .run_ai_settings_grid, .run_ai_model_mode, .run_ai_model_history_controls, .run_ai_custom_param_row, .huanban_login_inline) {
982
+ min-width: 0;
983
+ --hb-control-height: 34px;
984
+ --hb-control-radius: 5px;
985
+ }
986
+
987
+ :is(.huanban_form_item, .huanban_settings_field, .hb_ui_field, .route_form_item,
988
+ .hb_tool_config_field, .hb_struct_child, .hb_expr_condition, .shared_node_form,
989
+ .rulego-property-panel, .run_ai_settings_grid, .run_ai_model_mode, .run_ai_model_history_controls,
990
+ .run_ai_custom_param_row, .huanban_login_inline) :is(input:not([type]), input[type="text"], input[type="number"],
991
+ input[type="password"], input[type="url"], input[type="email"], input[type="search"],
992
+ input[type="date"], input[type="time"], input[type="month"], input[type="datetime-local"], select, textarea):not(.ms_filter_input, .cm-content, .rge-code-textarea, .rge-json-textarea, .hb_expr_code, .hb_switch_case, .hb_tool_json_area),
993
+ :is(.rge-form-input, .rge-form-select, .rge-form-textarea):not([type="checkbox"]):not([type="radio"]) {
994
+ box-sizing: border-box;
995
+ width: 100%;
996
+ min-width: 0;
997
+ max-width: 100%;
998
+ padding: 7px 10px;
999
+ border: 1px solid var(--hb-border-color, var(--rge-border, #d6dce5));
1000
+ border-radius: var(--hb-control-radius, 5px);
1001
+ background-color: var(--hb-bg-input, var(--rge-surface, #fff));
1002
+ color: var(--hb-text-primary, var(--rge-text, #253041));
1003
+ font-family: inherit;
1004
+ font-size: 13px;
1005
+ font-weight: 400;
1006
+ line-height: 18px;
1007
+ letter-spacing: 0;
1008
+ outline: none;
1009
+ transition: border-color .14s ease, box-shadow .14s ease;
1010
+ }
1011
+
1012
+ :is(.huanban_form_item, .huanban_settings_field, .hb_ui_field, .route_form_item,
1013
+ .hb_tool_config_field, .hb_struct_child, .hb_expr_condition, .shared_node_form,
1014
+ .rulego-property-panel, .run_ai_settings_grid, .run_ai_model_mode, .run_ai_model_history_controls,
1015
+ .run_ai_custom_param_row, .huanban_login_inline) :is(input:not([type]), input[type="text"], input[type="number"],
1016
+ input[type="password"], input[type="url"], input[type="email"], input[type="search"],
1017
+ input[type="date"], input[type="time"], input[type="month"], input[type="datetime-local"],
1018
+ select:not([multiple])):not(.ms_filter_input),
1019
+ :is(input.rge-form-input, select.rge-form-input, select.rge-form-select):not([multiple]):not([type="checkbox"]):not([type="radio"]) {
1020
+ height: var(--hb-control-height, 34px);
1021
+ }
1022
+
1023
+ :is(.huanban_form_item, .huanban_settings_field, .hb_ui_field, .route_form_item,
1024
+ .hb_tool_config_field, .hb_struct_child, .shared_node_form, .rulego-property-panel,
1025
+ .run_ai_settings_grid, .run_ai_model_mode, .run_ai_model_history_controls, .run_ai_custom_param_row, .huanban_login_inline)
1026
+ :is(input, select, textarea):not(.ms_filter_input):not([type="hidden"]):hover:not(:disabled):not([readonly]),
1027
+ :is(.rge-form-input, .rge-form-select, .rge-form-textarea):hover:not(:disabled):not([readonly]) {
1028
+ border-color: color-mix(in srgb, var(--hb-color-primary, var(--rge-primary, #3885c9)) 40%, var(--hb-border-color, #d6dce5));
1029
+ }
1030
+
1031
+ :is(.huanban_form_item, .huanban_settings_field, .hb_ui_field, .route_form_item,
1032
+ .hb_tool_config_field, .hb_struct_child, .hb_expr_condition, .shared_node_form,
1033
+ .rulego-property-panel, .run_ai_settings_grid, .run_ai_model_mode, .run_ai_model_history_controls,
1034
+ .run_ai_custom_param_row, .huanban_login_inline) :is(input, select, textarea):not(.ms_filter_input):focus-visible,
1035
+ :is(.rge-form-input, .rge-form-select, .rge-form-textarea):focus-visible {
1036
+ border-color: var(--hb-color-primary, var(--rge-primary, #3885c9));
1037
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--hb-color-primary, var(--rge-primary, #3885c9)) 14%, transparent);
1038
+ }
1039
+
1040
+ :is(.huanban_form_item, .huanban_settings_field, .hb_ui_field, .route_form_item,
1041
+ .hb_tool_config_field, .hb_struct_child, .shared_node_form, .rulego-property-panel,
1042
+ .run_ai_settings_grid, .run_ai_model_mode, .run_ai_model_history_controls, .run_ai_custom_param_row, .huanban_login_inline)
1043
+ :is(input, select, textarea):disabled,
1044
+ :is(.rge-form-input, .rge-form-select, .rge-form-textarea):disabled {
1045
+ background-color: var(--hb-bg-disabled, var(--hb-bg-section, #f4f6f8));
1046
+ color: var(--hb-text-muted, var(--rge-text-muted, #727d8e));
1047
+ border-color: var(--hb-border-light, var(--rge-border-light, #e5e9ef));
1048
+ cursor: not-allowed;
1049
+ opacity: 1;
1050
+ box-shadow: none;
1051
+ }
1052
+
1053
+ :is(.huanban_form_item, .huanban_settings_field, .hb_ui_field, .route_form_item,
1054
+ .hb_tool_config_field, .hb_struct_child, .shared_node_form) input[readonly],
1055
+ input.rge-form-input[readonly] {
1056
+ background-color: var(--hb-bg-section, var(--rge-surface-muted, #f4f6f8));
1057
+ color: var(--hb-text-secondary, var(--rge-text-secondary, #556274));
1058
+ cursor: text;
1059
+ opacity: 1;
1060
+ }
1061
+
1062
+ :is(.huanban_form_item, .huanban_settings_field, .hb_ui_field, .route_form_item,
1063
+ .hb_tool_config_field, .hb_struct_child, .shared_node_form) :is(input, textarea)::placeholder,
1064
+ :is(.rge-form-input, .rge-form-textarea)::placeholder {
1065
+ color: var(--hb-text-muted, var(--rge-text-muted, #788495));
1066
+ opacity: .85;
1067
+ }
1068
+
1069
+ :is(.huanban_rulego_editor_root, .huanban_rulego_editor_drawer, .huanban_modal,
1070
+ .huanban_settings_dialog, .huanban_run_dialog, .route_form_modal, .route_settings_modal,
1071
+ .hb_tools_modal, .hb_rule_chain_modal, .hb_field_attachment_overlay) select:not([multiple]),
1072
+ select.rge-form-select:not([multiple]), select.rge-form-input:not([multiple]) {
1073
+ appearance: auto;
1074
+ padding-inline-end: 24px;
1075
+ text-overflow: ellipsis;
1076
+ cursor: pointer;
1077
+ color-scheme: light;
1078
+ }
1079
+ :is([data-theme="tech"], [data-rg-theme="tech"]) select:not([multiple]),
1080
+ :is([data-theme="tech"], [data-rg-theme="tech"]) select[multiple] { color-scheme: dark; }
1081
+ :is(.huanban_form_item, .hb_struct_child) select[multiple],
1082
+ select.rge-form-select[multiple], select.rge-form-input[multiple] {
1083
+ min-height: 108px;
1084
+ height: auto;
1085
+ padding: 4px;
1086
+ overflow: auto;
1087
+ }
1088
+ :is(.huanban_form_item, .hb_struct_child) select[multiple] option,
1089
+ select.rge-form-select[multiple] option { padding: 5px 7px; }
1090
+ :is(.huanban_form_item, .hb_tool_config_field, .hb_struct_child) textarea:not(.cm-content),
1091
+ textarea.rge-form-textarea { min-height: 76px; resize: vertical; }
1092
+
1093
+ .huanban_form_item { margin-bottom: 15px; }
1094
+ .huanban_form_item > label, .hb_struct_child > label, .rge-form-label {
1095
+ margin-bottom: 6px;
1096
+ font-size: 12px;
1097
+ font-weight: 500;
1098
+ line-height: 18px;
1099
+ overflow-wrap: anywhere;
1100
+ }
1101
+ .huanban_form_item .desc_text, .huanban_form_item .hb_input_mention_hint, .rge-form-help {
1102
+ margin-top: 5px;
1103
+ font-size: 12px;
1104
+ line-height: 1.5;
1105
+ color: var(--hb-text-muted, var(--rge-text-muted, #788495));
1106
+ overflow-wrap: anywhere;
1107
+ }
1108
+ .huanban_form_item .pair_item, .huanban_form_item .hb_option_picker_inline { min-width: 0; gap: 8px; }
1109
+ .huanban_form_item .pair_item > input { flex: 1 1 0; min-width: 0; }
1110
+ .huanban_form_item .pair_item > button, .hb_option_picker_inline > button { flex: 0 0 auto; }
1111
+ .hb_segmented { max-width: 100%; }
1112
+ .hb_segmented_option { flex: 1 1 0; min-width: 0; }
1113
+ .hb_segmented_option span { box-sizing: border-box; padding: 7px 10px; overflow-wrap: anywhere; }
1114
+ .run_ai_model_mode { grid-template-columns: repeat(2, minmax(0, 1fr)); }
1115
+ .run_ai_provider_select_wrap .run_ai_provider_picker_btn { height: 34px; margin: 0; }
1116
+ .run_ai_settings_grid > label, .run_ai_settings_grid > label > span { min-width: 0; overflow-wrap: anywhere; }
1117
+ .huanban_rulego_editor_drawer_header .drawer_header_actions { flex-shrink: 0; gap: 6px; }
1118
+ .huanban_rulego_editor_drawer_body { scrollbar-width: thin; overscroll-behavior: contain; }
1119
+ .huanban_form_item input[type="checkbox"]:not(.debug_switch) {
1120
+ accent-color: var(--hb-color-primary, #3885c9);
1121
+ width: 16px;
1122
+ height: 16px;
1123
+ margin: 0;
1124
+ vertical-align: middle;
1125
+ }
1126
+ .huanban_form_item input.debug_switch {
1127
+ appearance: none;
1128
+ position: relative;
1129
+ flex: none;
1130
+ box-sizing: border-box;
1131
+ width: 32px;
1132
+ height: 18px;
1133
+ margin: 0;
1134
+ padding: 0;
1135
+ border: 1px solid var(--hb-border-color);
1136
+ border-radius: 9px;
1137
+ background: var(--hb-bg-section);
1138
+ }
1139
+ .huanban_form_item input.debug_switch::after {
1140
+ content: '';
1141
+ position: absolute;
1142
+ width: 12px;
1143
+ height: 12px;
1144
+ left: 2px;
1145
+ top: 2px;
1146
+ border-radius: 50%;
1147
+ background: var(--hb-text-muted);
1148
+ }
1149
+ .huanban_form_item input.debug_switch:checked { background: var(--hb-color-primary); border-color: var(--hb-color-primary); }
1150
+ .huanban_form_item input.debug_switch:checked::after { left: 16px; background: var(--rg-btn-primary-text, #fff); }
1151
+
1152
+ .huanban_form_item .multi_select_box {
1153
+ box-sizing: border-box;
1154
+ min-height: var(--hb-control-height, 34px);
1155
+ gap: 4px;
1156
+ padding: 4px 28px 4px 7px;
1157
+ border-radius: var(--hb-control-radius, 5px);
1158
+ }
1159
+ .huanban_form_item .multi_select_box.is_success { border-color: var(--hb-border-color, #d6dce5); }
1160
+ .huanban_form_item .multi_select_box:focus-within, .huanban_form_item .multi_select_box.active {
1161
+ border-color: var(--hb-color-primary, #3885c9);
1162
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--hb-color-primary, #3885c9) 14%, transparent);
1163
+ }
1164
+ .huanban_form_item .multi_select_box.is_error { border-color: var(--hb-color-danger, #cf4d5c); }
1165
+ .huanban_form_item .multi_select_box input.ms_filter_input {
1166
+ flex: 1 1 48px;
1167
+ box-sizing: border-box;
1168
+ width: 48px;
1169
+ min-width: 24px;
1170
+ max-width: 100%;
1171
+ height: 24px;
1172
+ min-height: 0;
1173
+ margin: 0;
1174
+ padding: 0 2px;
1175
+ border: 0;
1176
+ border-radius: 0;
1177
+ background: transparent;
1178
+ box-shadow: none;
1179
+ outline: none;
1180
+ font: inherit;
1181
+ color: inherit;
1182
+ }
1183
+ .multi_select_box:has(input:disabled) { background: var(--hb-bg-section); cursor: not-allowed; }
1184
+ .multi_select_box:has(input:disabled) .ms_tag_close { display: none; }
1185
+ .ms_placeholder { max-width: calc(100% - 36px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
1186
+ .ms_placeholder[hidden] { display: none !important; }
1187
+ .ms_tag { max-width: min(240px, 100%); border: 1px solid var(--hb-border-light); color: var(--hb-text-secondary); }
1188
+ .ms_tag_label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
1189
+ .multi_select_box button.ms_tag_close { box-sizing: border-box; width: 16px; height: 16px; min-height: 0; padding: 0; margin: 0 0 0 2px; border: 0; background: transparent; line-height: 1; }
1190
+ .multi_select_arrow, .rge-search-select-arrow { font-size: 10px; color: var(--hb-text-muted, var(--rge-text-muted)); }
1191
+ .ms_dropdown {
1192
+ box-sizing: border-box;
1193
+ padding: 4px;
1194
+ border-radius: 6px;
1195
+ border: 1px solid var(--hb-border-color, #d6dce5);
1196
+ background: var(--hb-bg-modal, #fff);
1197
+ color: var(--hb-text-primary, #253041);
1198
+ box-shadow: var(--hb-shadow-md, 0 8px 24px #23334b24);
1199
+ overscroll-behavior: contain;
1200
+ scrollbar-width: thin;
1201
+ font-family: var(--hb-font-family, system-ui, sans-serif);
1202
+ line-height: 1.4;
1203
+ }
1204
+ .ms_dropdown_item {
1205
+ position: relative;
1206
+ padding: 7px 28px 7px 9px;
1207
+ border-radius: 4px;
1208
+ overflow-wrap: anywhere;
1209
+ color: var(--hb-text-primary);
1210
+ }
1211
+ .ms_dropdown_item.selected { background: var(--hb-bg-active); color: var(--hb-color-primary); }
1212
+ .ms_dropdown_item.selected::after { content: '\\2713'; position: absolute; right: 9px; top: 7px; }
1213
+ .ms_dropdown_item.is_active { outline: 1px solid var(--hb-color-primary); outline-offset: -1px; background: var(--hb-bg-hover); }
1214
+ .ms_dropdown_item.disabled { opacity: .6; background: transparent; }
1215
+ .ms_option_value { color: var(--hb-text-muted); font-size: 11px; }
1216
+ .hb_single_select_box { position: relative; min-width: 0; width: 100%; flex: 1 1 auto; }
1217
+ .hb_single_select_box input[data-select-filterable][data-select-allow-create] { padding-inline-end: 30px; }
1218
+ .hb_single_select_box input::-webkit-calendar-picker-indicator { opacity: 0; pointer-events: none; }
1219
+ .hb_single_select_box::after {
1220
+ content: '';
1221
+ position: absolute;
1222
+ right: 13px;
1223
+ top: 12px;
1224
+ width: 6px;
1225
+ height: 6px;
1226
+ border: solid var(--hb-text-muted);
1227
+ border-width: 0 1.5px 1.5px 0;
1228
+ transform: rotate(45deg);
1229
+ pointer-events: none;
1230
+ }
1231
+ .hb_single_select_popover .ms_dropdown_empty { padding: 12px 9px; color: var(--hb-text-muted); }
1232
+
1233
+ .rge-search-select-trigger.rge-form-select { min-height: 34px; padding: 6px 10px; line-height: 20px; }
1234
+ .rge-search-select-popover {
1235
+ box-sizing: border-box;
1236
+ display: flex;
1237
+ flex-direction: column;
1238
+ min-height: 0;
1239
+ padding: 6px;
1240
+ border-radius: 6px;
1241
+ overscroll-behavior: contain;
1242
+ }
1243
+ .rge-search-select-popover .rge-search-select-input {
1244
+ flex: none;
1245
+ height: 32px;
1246
+ margin-bottom: 5px;
1247
+ font: inherit;
1248
+ font-size: 13px;
1249
+ }
1250
+ .rge-search-select-popover .rge-search-select-list { min-height: 0; flex: 1 1 auto; gap: 2px; overscroll-behavior: contain; }
1251
+ .rge-search-select-popover .rge-search-select-option { flex: none; border-radius: 4px; padding: 6px 8px; }
1252
+ .rge-search-select-popover .rge-search-select-label { white-space: normal; overflow-wrap: anywhere; line-height: 1.4; }
1253
+ .rge-search-select-popover .rge-search-select-footer { flex: none; margin-top: 5px; padding-top: 5px; }
1254
+ .rge-search-select-popover .rge-search-select-count { border-radius: 4px; }
1255
+
1256
+ @media (max-width: 600px) {
1257
+ .huanban_form_item .pair_item { flex-wrap: wrap; }
1258
+ .huanban_form_item .pair_item > input { flex-basis: 40%; }
1259
+ .hb_expr_condition { min-width: 0; }
1260
+ .rge-search-select-popover .rge-search-select-desc { overflow-wrap: anywhere; word-break: normal; }
1261
+ }
1262
+ `;
1263
+ let $ = !1;
1264
+ function or() {
1265
+ if ($) return;
1266
+ $ = !0;
1267
+ const e = document.createElement("style");
1268
+ e.id = "huanban_rulego_editor_styles", e.textContent = `
671
1269
  /* ========== LogicFlow 内置样式 ========== */
672
- ${s}
673
- ${h}
1270
+ ${A}
1271
+ ${Y}
674
1272
 
675
1273
  /* ========== 主题 CSS 变量 ========== */
676
- ${x}
677
- ${m()}
1274
+ ${G}
1275
+ ${H()}
1276
+ ${K}
678
1277
 
679
1278
 
680
1279
  /* ========== 编辑器根容器 ========== */
@@ -691,6 +1290,37 @@ ${m()}
691
1290
  --hb-ai-drawer-max-width: min(860px, 72vw);
692
1291
  --hb-ai-drawer-resize-handle-width: 24px;
693
1292
  }
1293
+ /* Owned portal content must honor hidden outside the editor root. */
1294
+ .huanban_rulego_editor_root [hidden],
1295
+ .huanban_rulego_editor_drawer [hidden],
1296
+ .huanban_modal [hidden],
1297
+ .huanban_settings_dialog [hidden],
1298
+ .huanban_login_modal [hidden],
1299
+ .huanban_run_dialog [hidden],
1300
+ .huanban_chain_selector_drawer [hidden],
1301
+ .huanban_json_viewer_overlay [hidden],
1302
+ .huanban_unsaved_guard_modal [hidden],
1303
+ .huanban_trace_dialog_overlay [hidden],
1304
+ .hb_config_modal [hidden],
1305
+ .hb_analysis_modal_wrapper [hidden],
1306
+ .hb_dynamic_browse_overlay [hidden],
1307
+ .hb_option_picker_modal [hidden],
1308
+ .hb_point_template_dialog [hidden],
1309
+ .hb_rule_chain_modal [hidden],
1310
+ .hb_tools_modal [hidden],
1311
+ .hb_field_attachment_overlay [hidden],
1312
+ .debug_detail_dialog [hidden],
1313
+ .run_chat_code_fullscreen_overlay [hidden] { display: none !important; }
1314
+ .hb_editor_header {
1315
+ display: flex; align-items: center; gap: 10px; flex: none;
1316
+ padding: 8px 12px; border-bottom: 1px solid var(--hb-border-color);
1317
+ background: var(--hb-bg-toolbar); color: var(--hb-text-primary); min-width: 0;
1318
+ }
1319
+ .hb_editor_header > img { width: 28px; height: 28px; object-fit: contain; flex: none; }
1320
+ .hb_editor_header > div { min-width: 0; }
1321
+ .hb_editor_header h1 { margin: 0; font-size: 14px; line-height: 1.4; letter-spacing: 0; overflow-wrap: anywhere; }
1322
+ .hb_editor_header p { margin: 2px 0 0; font-size: 12px; line-height: 1.4; color: var(--hb-text-secondary); overflow-wrap: anywhere; }
1323
+ .huanban_rulego_editor_canvas_toolbar .tb_group { display: inline-flex; align-items: center; gap: 4px; flex: none; }
694
1324
 
695
1325
  @media (prefers-reduced-motion: reduce) {
696
1326
  .huanban_rulego_editor_root,
@@ -730,10 +1360,10 @@ ${m()}
730
1360
  transition: opacity 0.18s ease, transform 0.18s ease;
731
1361
  }
732
1362
  .huanban_rulego_editor_toast.is_error {
733
- background: #fef0f0; border: 1px solid #fde2e2; color: #b42318;
1363
+ background: var(--hb-danger-soft); border: 1px solid var(--hb-color-danger); color: var(--hb-text-primary);
734
1364
  }
735
1365
  .huanban_rulego_editor_toast.is_info {
736
- background: #ecf5ff; border: 1px solid #d9ecff; color: #1d4ed8;
1366
+ background: var(--hb-info-soft); border: 1px solid var(--hb-color-primary); color: var(--hb-text-primary);
737
1367
  }
738
1368
  .huanban_rulego_editor_toast.is_hiding {
739
1369
  opacity: 0; transform: translateY(8px);
@@ -751,7 +1381,7 @@ ${m()}
751
1381
  .hb_editor_tour_highlight {
752
1382
  position: absolute; border: 2px solid var(--hb-color-primary, #409eff);
753
1383
  border-radius: 6px; box-sizing: border-box;
754
- box-shadow: 0 0 0 3px rgba(64, 158, 255, 0.2);
1384
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--hb-color-primary) 20%, transparent);
755
1385
  pointer-events: none;
756
1386
  }
757
1387
  .hb_editor_tour_panel {
@@ -794,7 +1424,7 @@ ${m()}
794
1424
  }
795
1425
  .hb_editor_tour_previous:disabled { opacity: 0.45; cursor: not-allowed; }
796
1426
  .hb_editor_tour_next {
797
- background: var(--hb-color-primary, #409eff); border-color: var(--hb-color-primary, #409eff) !important; color: #fff;
1427
+ background: var(--hb-color-primary, #409eff); border-color: var(--hb-color-primary, #409eff) !important; color: var(--rg-btn-primary-text);
798
1428
  }
799
1429
 
800
1430
  @media (max-width: 520px) {
@@ -806,7 +1436,8 @@ ${m()}
806
1436
  display: flex; align-items: center; gap: var(--hb-space-xs, 6px);
807
1437
  padding: 4px 10px; background: var(--hb-bg-toolbar, #fff);
808
1438
  border-bottom: 1px solid var(--hb-border-strong, #ddd); flex-shrink: 0; flex-wrap: nowrap;
809
- overflow-x: auto;
1439
+ overflow-x: auto; overflow-y: visible;
1440
+ position: relative;
810
1441
  }
811
1442
  .huanban_rulego_editor_toolbar h1 {
812
1443
  font-size: var(--hb-font-size-lg, 14px); font-weight: var(--hb-weight-semibold, 600);
@@ -971,12 +1602,15 @@ ${m()}
971
1602
  /* Node-RED 节点块 */
972
1603
  .huanban_rulego_editor_node_block {
973
1604
  cursor: move; margin: 6px auto; height: 25px;
974
- border-radius: 5px; border: 1px solid #999;
1605
+ border-radius: var(--hb-node-radius, 5px); border: 1px solid var(--hb-node-border, var(--hb-border-color, #999));
975
1606
  width: 90%; position: relative; user-select: none;
976
- transition: box-shadow 0.15s;
1607
+ box-shadow: var(--hb-shadow-sm, 0 1px 4px rgba(0,0,0,0.08));
1608
+ transition: box-shadow var(--hb-duration, 160ms) var(--hb-ease-out, ease-out), transform var(--hb-duration-fast, 100ms) var(--hb-ease-out, ease-out), border-color var(--hb-duration, 160ms) var(--hb-ease-out, ease-out);
977
1609
  }
978
1610
  .huanban_rulego_editor_node_block:hover {
979
- box-shadow: 0 1px 4px rgba(0,0,0,0.15);
1611
+ box-shadow: var(--hb-shadow-md, 0 4px 12px rgba(0,0,0,0.12));
1612
+ border-color: var(--hb-color-primary, #409eff);
1613
+ transform: translateY(-1px);
980
1614
  }
981
1615
  .huanban_rulego_editor_node_block:focus-visible {
982
1616
  outline: 2px solid var(--hb-color-primary, #409eff);
@@ -989,12 +1623,21 @@ ${m()}
989
1623
  line-height: 20px; overflow: hidden; text-align: center;
990
1624
  white-space: nowrap; text-overflow: ellipsis; user-select: none;
991
1625
  }
1626
+ [data-sidebar-label-lines="2"] .huanban_rulego_editor_node_block {
1627
+ height: 44px; box-sizing: border-box; display: flex; align-items: center;
1628
+ }
1629
+ [data-sidebar-label-lines="2"] .huanban_rulego_editor_node_label {
1630
+ flex: 1; min-width: 0; margin: 3px 6px 3px 34px;
1631
+ line-height: 18px; max-height: 36px; white-space: normal;
1632
+ overflow-wrap: anywhere; word-break: break-word;
1633
+ display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
1634
+ }
992
1635
 
993
1636
  .huanban_rulego_editor_node_icon_area {
994
1637
  position: absolute; top: 0; bottom: 0; left: 0; width: 30px;
995
- border-right: 1px solid rgba(0,0,0,0.05);
996
- background-color: rgba(0,0,0,0.05);
997
- border-radius: 5px 0 0 5px;
1638
+ border-right: 1px solid var(--hb-node-icon-divider, rgba(0,0,0,0.05));
1639
+ background-color: var(--hb-node-icon-bg, rgba(0,0,0,0.05));
1640
+ border-radius: var(--hb-node-radius, 5px) 0 0 var(--hb-node-radius, 5px);
998
1641
  display: flex; align-items: center; justify-content: center;
999
1642
  }
1000
1643
  /* 分类标题和组件图标 */
@@ -1018,16 +1661,30 @@ ${m()}
1018
1661
  /* 端口小方块 */
1019
1662
  .huanban_rulego_editor_port {
1020
1663
  position: absolute; top: 8px; left: -5px;
1021
- background: #d9d9d9; border-radius: 3px;
1022
- width: 10px; height: 10px; border: 1px solid #999;
1664
+ background: var(--hb-port-fill, #d9d9d9); border-radius: var(--hb-port-radius, 3px);
1665
+ width: 10px; height: 10px; border: 1px solid var(--hb-port-stroke, #999);
1023
1666
  box-sizing: border-box;
1667
+ transition: background var(--hb-duration-fast, 100ms) ease, border-color var(--hb-duration-fast, 100ms) ease, transform var(--hb-duration-fast, 100ms) ease;
1024
1668
  }
1025
1669
  .huanban_rulego_editor_port_output { left: auto; right: -6px; }
1670
+ [data-sidebar-label-lines="2"] .huanban_rulego_editor_port { top: calc(50% - 5px); }
1671
+ .huanban_rulego_editor_port:hover {
1672
+ background: var(--hb-port-hover-fill, var(--hb-color-primary, #409eff));
1673
+ border-color: var(--hb-port-hover-stroke, var(--hb-color-primary, #409eff));
1674
+ transform: scale(1.2);
1675
+ }
1026
1676
 
1027
1677
  /* ========== 画布 ========== */
1028
1678
  .huanban_rulego_editor_canvas {
1029
1679
  flex: 1 1 auto; min-width: 0; position: relative; overflow: hidden; background: var(--hb-bg-canvas, #fff);
1030
1680
  }
1681
+ .huanban_rulego_editor_root .lf-graph { background: var(--rg-canvas-bg, #fff); }
1682
+ /* Ensure node SVG groups do not clip badges/icons at node edges */
1683
+ .lf-red-node,
1684
+ .lf-agent-node,
1685
+ .lf-agent-orchestration-node { overflow: visible; }
1686
+ .huanban_rulego_editor_canvas svg { overflow: visible; }
1687
+ .huanban_rulego_editor_canvas svg g[data-node-id] { overflow: visible; }
1031
1688
  .hb-node-connection-status,
1032
1689
  .lf-edge .lf-line-text {
1033
1690
  transition: opacity 0.15s ease;
@@ -1099,7 +1756,7 @@ ${m()}
1099
1756
  .hb_edge_label_quick_editor button.is_primary {
1100
1757
  border-color: var(--hb-color-primary, #409eff);
1101
1758
  background: var(--hb-color-primary, #409eff);
1102
- color: #fff;
1759
+ color: var(--rg-btn-primary-text);
1103
1760
  }
1104
1761
  .hb_edge_label_quick_close {
1105
1762
  width: 26px;
@@ -1136,13 +1793,11 @@ ${m()}
1136
1793
  display: flex;
1137
1794
  align-items: center;
1138
1795
  gap: 4px;
1139
- padding: 0;
1796
+ padding: 4px 0;
1140
1797
  max-width: calc(100% - 24px);
1141
- flex-wrap: nowrap;
1142
- overflow-x: auto;
1143
- overflow-y: visible;
1798
+ flex-wrap: wrap;
1799
+ overflow: visible;
1144
1800
  pointer-events: auto;
1145
- scrollbar-width: none;
1146
1801
  }
1147
1802
  .huanban_rulego_editor_canvas_toolbar::-webkit-scrollbar {
1148
1803
  display: none;
@@ -1151,13 +1806,13 @@ ${m()}
1151
1806
  width: 1px;
1152
1807
  height: 18px;
1153
1808
  margin: 0 2px;
1154
- background: rgba(148, 163, 184, 0.38);
1809
+ background: var(--hb-border-color, #dcdfe6);
1155
1810
  flex: 0 0 1px;
1156
1811
  }
1157
1812
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn {
1158
- --hb-tool-color: #4b5563;
1159
- --hb-tool-border: rgba(148, 163, 184, 0.42);
1160
- --hb-tool-bg: rgba(255, 255, 255, 0.96);
1813
+ --hb-tool-color: var(--hb-text-secondary, #4b5563);
1814
+ --hb-tool-border: var(--hb-border-color, #dcdfe6);
1815
+ --hb-tool-bg: var(--hb-bg-toolbar, #ffffff);
1161
1816
  width: 26px;
1162
1817
  height: 26px;
1163
1818
  min-width: 26px;
@@ -1170,7 +1825,7 @@ ${m()}
1170
1825
  justify-content: center;
1171
1826
  padding: 0;
1172
1827
  cursor: pointer;
1173
- box-shadow: 0 1px 3px rgba(18, 26, 42, 0.10);
1828
+ box-shadow: var(--hb-shadow-sm);
1174
1829
  transition: background 0.14s ease, border-color 0.14s ease, color 0.14s ease, box-shadow 0.14s ease, transform 0.14s ease;
1175
1830
  position: relative;
1176
1831
  }
@@ -1185,8 +1840,10 @@ ${m()}
1185
1840
  max-width: 180px;
1186
1841
  padding: 4px 7px;
1187
1842
  border-radius: 4px;
1188
- background: rgba(17, 24, 39, 0.94);
1189
- color: #fff;
1843
+ background: var(--hb-bg-modal, #fff);
1844
+ color: var(--hb-text-primary, #303133);
1845
+ border: 1px solid var(--hb-border-color);
1846
+ box-shadow: var(--hb-shadow-sm);
1190
1847
  font-size: 11px;
1191
1848
  line-height: 1.3;
1192
1849
  white-space: nowrap;
@@ -1208,7 +1865,7 @@ ${m()}
1208
1865
  border: 2px solid var(--hb-bg-canvas, #fff);
1209
1866
  border-radius: 999px;
1210
1867
  background: var(--hb-color-danger, #f56c6c);
1211
- box-shadow: 0 0 0 2px rgba(245,108,108,0.16);
1868
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-danger) 16%, transparent);
1212
1869
  }
1213
1870
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn svg {
1214
1871
  width: 12px !important;
@@ -1223,10 +1880,10 @@ ${m()}
1223
1880
  height: 13px !important;
1224
1881
  }
1225
1882
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn:hover {
1226
- background: var(--hb-tool-color);
1883
+ background: var(--hb-bg-hover);
1227
1884
  border-color: var(--hb-tool-color);
1228
- color: #fff;
1229
- box-shadow: 0 5px 12px rgba(18, 26, 42, 0.15);
1885
+ color: var(--hb-tool-color);
1886
+ box-shadow: var(--hb-shadow-md);
1230
1887
  transform: translateY(-1px);
1231
1888
  }
1232
1889
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn.tb_active,
@@ -1239,8 +1896,8 @@ ${m()}
1239
1896
  }
1240
1897
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn.tb_active:hover,
1241
1898
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn[aria-pressed="true"]:hover {
1242
- background: var(--hb-tool-color);
1243
- color: #fff;
1899
+ background: var(--hb-bg-active);
1900
+ color: var(--hb-tool-color);
1244
1901
  }
1245
1902
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn:active {
1246
1903
  transform: translateY(0);
@@ -1248,30 +1905,16 @@ ${m()}
1248
1905
  }
1249
1906
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn:disabled,
1250
1907
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn[aria-disabled="true"] {
1251
- color: #b8bec8;
1252
- border-color: rgba(224, 228, 236, 0.95);
1253
- background: rgba(250, 251, 253, 0.9);
1908
+ color: var(--hb-text-disabled);
1909
+ border-color: var(--hb-border-light);
1910
+ background: var(--hb-bg-section);
1254
1911
  cursor: not-allowed;
1255
1912
  box-shadow: none;
1256
1913
  transform: none;
1257
1914
  }
1258
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_info { --hb-tool-color: #2563eb; --hb-tool-border: rgba(37, 99, 235, 0.34); }
1259
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_ai { --hb-tool-color: #7c3aed; --hb-tool-border: rgba(124, 58, 237, 0.36); }
1260
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_monitor { --hb-tool-color: #0891b2; --hb-tool-border: rgba(8, 145, 178, 0.34); }
1261
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_clear_debug { --hb-tool-color: #d97706; --hb-tool-border: rgba(217, 119, 6, 0.34); }
1262
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_run { --hb-tool-color: #16a34a; --hb-tool-border: rgba(22, 163, 74, 0.34); }
1263
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_layout { --hb-tool-color: #4f46e5; --hb-tool-border: rgba(79, 70, 229, 0.34); }
1264
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_selection { --hb-tool-color: #0284c7; --hb-tool-border: rgba(2, 132, 199, 0.34); }
1265
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_zoom_out { --hb-tool-color: #334155; --hb-tool-border: rgba(51, 65, 85, 0.30); }
1266
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_zoom_in { --hb-tool-color: #334155; --hb-tool-border: rgba(51, 65, 85, 0.30); }
1267
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_fit { --hb-tool-color: #0f766e; --hb-tool-border: rgba(15, 118, 110, 0.34); }
1268
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_undo { --hb-tool-color: #64748b; --hb-tool-border: rgba(100, 116, 139, 0.30); }
1269
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_redo { --hb-tool-color: #64748b; --hb-tool-border: rgba(100, 116, 139, 0.30); }
1270
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_minimap { --hb-tool-color: #0f766e; --hb-tool-border: rgba(15, 118, 110, 0.34); }
1271
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_components { --hb-tool-color: #2563eb; --hb-tool-border: rgba(37, 99, 235, 0.34); }
1272
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_search { --hb-tool-color: #d97706; --hb-tool-border: rgba(217, 119, 6, 0.34); }
1273
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_theme { --hb-tool-color: #9333ea; --hb-tool-border: rgba(147, 51, 234, 0.34); }
1274
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_fullscreen { --hb-tool-color: #475569; --hb-tool-border: rgba(71, 85, 105, 0.34); }
1915
+ .huanban_rulego_editor_canvas_toolbar :is(.hb_canvas_tool_info,.hb_canvas_tool_ai,.hb_canvas_tool_monitor,.hb_canvas_tool_layout,.hb_canvas_tool_selection,.hb_canvas_tool_components,.hb_canvas_tool_theme) { --hb-tool-color: var(--hb-color-primary); }
1916
+ .huanban_rulego_editor_canvas_toolbar :is(.hb_canvas_tool_clear_debug,.hb_canvas_tool_search,.hb_canvas_tool_diagnostics) { --hb-tool-color: var(--hb-color-warning); }
1917
+ .huanban_rulego_editor_canvas_toolbar :is(.hb_canvas_tool_run,.hb_canvas_tool_fit,.hb_canvas_tool_minimap) { --hb-tool-color: var(--hb-color-success); }
1275
1918
 
1276
1919
  /* ========== 侧边栏折叠按钮 ========== */
1277
1920
  .huanban_rulego_editor_sidebar_toggle {
@@ -1324,10 +1967,10 @@ ${m()}
1324
1967
  }
1325
1968
  /* 运行记录按钮 */
1326
1969
  .huanban_rulego_editor_toolbar .tb_history {
1327
- color: #2980b9; border-color: #2980b9;
1970
+ color: var(--hb-color-primary); border-color: var(--hb-color-primary);
1328
1971
  }
1329
1972
  .huanban_rulego_editor_toolbar .tb_history:hover {
1330
- background: #eaf2f8; color: #1a5276;
1973
+ background: var(--hb-bg-hover); color: var(--hb-color-primary);
1331
1974
  }
1332
1975
 
1333
1976
  /* ========== 空状态 ========== */
@@ -1337,11 +1980,14 @@ ${m()}
1337
1980
 
1338
1981
  /* ========== Node-RED 风格画布样式 ========== */
1339
1982
  .custom-anchor {
1340
- stroke: #999; stroke-width: 1; fill: #d9d9d9;
1983
+ stroke: var(--hb-port-stroke, #999); stroke-width: 1.25; fill: var(--hb-port-fill, #d9d9d9);
1341
1984
  cursor: crosshair; rx: 3; ry: 3;
1985
+ transition: fill var(--hb-duration-fast, 100ms) ease, stroke var(--hb-duration-fast, 100ms) ease, transform var(--hb-duration-fast, 100ms) ease;
1342
1986
  }
1343
1987
  .custom-anchor:hover {
1344
- fill: #ff7f0e; stroke: #ff7f0e;
1988
+ fill: var(--hb-port-hover-fill, var(--hb-color-primary, #ff7f0e));
1989
+ stroke: var(--hb-port-hover-stroke, var(--hb-color-primary, #ff7f0e));
1990
+ transform: scale(1.15);
1345
1991
  }
1346
1992
  .node-red-start {
1347
1993
  cursor: pointer; pointer-events: all;
@@ -1366,8 +2012,8 @@ ${m()}
1366
2012
  to { transform: translateX(100%); }
1367
2013
  }
1368
2014
  @keyframes hb-ai-avatar-pulse {
1369
- 0%, 100% { box-shadow: 0 0 0 0 rgba(64,158,255,0.26); }
1370
- 50% { box-shadow: 0 0 0 6px rgba(64,158,255,0); }
2015
+ 0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--hb-color-primary) 26%, transparent); }
2016
+ 50% { box-shadow: 0 0 0 6px transparent; }
1371
2017
  }
1372
2018
  @keyframes hb-ai-status-pulse {
1373
2019
  0%, 100% { opacity: 0.42; transform: scale(0.82); }
@@ -1418,7 +2064,7 @@ ${m()}
1418
2064
  background: var(--hb-bg-hover, #f5f5f5);
1419
2065
  }
1420
2066
  .huanban_rulego_editor_drawer_header .drawer_header_actions .btn_primary {
1421
- border: 1px solid var(--hb-color-primary, #409eff); background: var(--hb-color-primary, #409eff); color: #fff;
2067
+ border: 1px solid var(--hb-color-primary, #409eff); background: var(--hb-color-primary, #409eff); color: var(--rg-btn-primary-text);
1422
2068
  }
1423
2069
  .huanban_rulego_editor_drawer_header .drawer_header_actions .btn_primary:hover {
1424
2070
  opacity: 0.88;
@@ -1429,7 +2075,7 @@ ${m()}
1429
2075
  border-radius: 4px; transition: all 0.2s ease;
1430
2076
  }
1431
2077
  .huanban_rulego_editor_drawer_header .close_btn:hover {
1432
- color: #fff; background: #e74c3c;
2078
+ color: var(--rg-btn-danger-text); background: var(--hb-color-danger);
1433
2079
  }
1434
2080
  .huanban_rulego_editor_drawer_body {
1435
2081
  flex: 1; overflow-y: auto; padding: 16px;
@@ -1459,7 +2105,7 @@ ${m()}
1459
2105
  cursor: pointer; font-size: 13px; display: flex; align-items: center; gap: 6px;
1460
2106
  }
1461
2107
  .huanban_rulego_editor_drawer_footer .btn_primary {
1462
- background: var(--hb-color-primary, #409eff); color: #fff; border-color: var(--hb-color-primary, #409eff);
2108
+ background: var(--hb-color-primary, #409eff); color: var(--rg-btn-primary-text); border-color: var(--hb-color-primary, #409eff);
1463
2109
  }
1464
2110
  .huanban_rulego_editor_drawer_footer .btn_primary:hover { opacity: 0.85; }
1465
2111
  .huanban_rulego_editor_drawer_footer .btn_cancel {
@@ -1508,14 +2154,14 @@ ${m()}
1508
2154
  background: var(--hb-bg-hover, #f5f7fa);
1509
2155
  }
1510
2156
  .huanban_unsaved_guard_actions .btn_danger {
1511
- background: #fff; color: var(--hb-color-danger, #f56c6c);
1512
- border: 1px solid rgba(245, 108, 108, .45);
2157
+ background: var(--hb-bg-input); color: var(--hb-color-danger, #f56c6c);
2158
+ border: 1px solid color-mix(in srgb, var(--hb-color-danger) 45%, transparent);
1513
2159
  }
1514
2160
  .huanban_unsaved_guard_actions .btn_danger:hover {
1515
- color: #fff; background: var(--hb-color-danger, #f56c6c);
2161
+ color: var(--rg-btn-danger-text); background: var(--hb-color-danger, #f56c6c);
1516
2162
  }
1517
2163
  .huanban_unsaved_guard_actions .btn_primary {
1518
- color: #fff; background: var(--hb-color-primary, #409eff);
2164
+ color: var(--rg-btn-primary-text); background: var(--hb-color-primary, #409eff);
1519
2165
  border: 1px solid var(--hb-color-primary, #409eff);
1520
2166
  }
1521
2167
  .huanban_unsaved_guard_actions .btn_primary:hover {
@@ -1547,7 +2193,7 @@ ${m()}
1547
2193
  .huanban_form_item textarea:focus,
1548
2194
  .huanban_form_item select:focus {
1549
2195
  border-color: var(--hb-color-primary, #409eff);
1550
- box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.15);
2196
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 15%, transparent);
1551
2197
  }
1552
2198
  .huanban_form_item textarea { resize: vertical; min-height: 60px; }
1553
2199
  .huanban_form_item .desc_text {
@@ -1579,7 +2225,7 @@ ${m()}
1579
2225
  .hb_segmented_option input { position: absolute; opacity: 0; pointer-events: none; }
1580
2226
  .hb_segmented_option span { display: block; width: 100%; padding: 7px 12px; text-align: center; }
1581
2227
  .hb_segmented_option.active {
1582
- color: #fff !important; background: var(--hb-color-primary, #409eff);
2228
+ color: var(--rg-btn-primary-text) !important; background: var(--hb-color-primary, #409eff);
1583
2229
  }
1584
2230
  .hb_ref_mode,
1585
2231
  .hb_provider_mode {
@@ -1612,12 +2258,12 @@ ${m()}
1612
2258
  border-color: var(--hb-color-primary, #409eff); color: var(--hb-color-primary, #409eff);
1613
2259
  }
1614
2260
  .hb_datetime_toggle.active {
1615
- background: var(--hb-color-primary, #409eff); border-color: var(--hb-color-primary, #409eff); color: #fff;
2261
+ background: var(--hb-color-primary, #409eff); border-color: var(--hb-color-primary, #409eff); color: var(--rg-btn-primary-text);
1616
2262
  }
1617
2263
  .hb_datetime_format {
1618
2264
  font-size: 11px; line-height: 1.4; color: var(--hb-text-muted, #999);
1619
2265
  }
1620
- /* === 多选标签选择器 (模拟 el-select multiple) === */
2266
+ /* Multi-value option control. */
1621
2267
  .multi_select_wrap {
1622
2268
  position: relative; width: 100%;
1623
2269
  }
@@ -1631,12 +2277,12 @@ ${m()}
1631
2277
  }
1632
2278
  .multi_select_box:hover,
1633
2279
  .multi_select_box.active { border-color: var(--hb-color-primary, #409eff); }
1634
- .multi_select_box.is_error { border-color: #f56c6c; }
1635
- .multi_select_box.is_success { border-color: #67c23a; }
2280
+ .multi_select_box.is_error { border-color: var(--hb-color-danger); }
2281
+ .multi_select_box.is_success { border-color: var(--hb-color-success); }
1636
2282
  /* 下拉箭头 */
1637
2283
  .multi_select_arrow {
1638
2284
  position: absolute; right: 8px; top: 50%; transform: translateY(-50%);
1639
- font-size: 12px; color: #c0c4cc; transition: transform 0.3s;
2285
+ font-size: 12px; color: var(--hb-text-muted); transition: transform 0.3s;
1640
2286
  pointer-events: none;
1641
2287
  }
1642
2288
  .multi_select_box.active .multi_select_arrow { transform: translateY(-50%) rotate(180deg); }
@@ -1644,48 +2290,48 @@ ${m()}
1644
2290
  .ms_tag {
1645
2291
  display: inline-flex; align-items: center; gap: 2px;
1646
2292
  padding: 0 6px; height: 22px; line-height: 22px;
1647
- background: #f0f2f5; border-radius: 3px;
1648
- font-size: 12px; color: #606266; white-space: nowrap;
2293
+ background: var(--hb-bg-tag); border-radius: 3px;
2294
+ font-size: 12px; color: var(--hb-text-secondary); white-space: nowrap;
1649
2295
  max-width: 200px; overflow: hidden; text-overflow: ellipsis;
1650
2296
  }
1651
2297
  .ms_tag_close {
1652
2298
  display: inline-flex; align-items: center; justify-content: center;
1653
2299
  width: 14px; height: 14px; border-radius: 50%; margin-left: 2px;
1654
- font-size: 10px; color: #909399; cursor: pointer; flex-shrink: 0;
2300
+ font-size: 10px; color: var(--hb-text-muted); cursor: pointer; flex-shrink: 0;
1655
2301
  transition: all 0.15s;
1656
2302
  }
1657
- .ms_tag_close:hover { background: #909399; color: #fff; }
2303
+ .ms_tag_close:hover { background: var(--hb-bg-active); color: var(--hb-text-primary); }
1658
2304
  /* 输入过滤 */
1659
2305
  .ms_filter_input {
1660
2306
  border: none; outline: none; background: none;
1661
- font-size: 13px; color: #333; flex: 1; min-width: 40px; height: 22px;
2307
+ font-size: 13px; color: var(--hb-text-primary); flex: 1; min-width: 40px; height: 22px;
1662
2308
  padding: 0; margin: 0;
1663
2309
  }
1664
2310
  /* 占位文本 */
1665
2311
  .ms_placeholder {
1666
- color: #c0c4cc; font-size: 13px; pointer-events: none;
2312
+ color: var(--hb-text-muted); font-size: 13px; pointer-events: none;
1667
2313
  position: absolute; left: 8px; top: 50%; transform: translateY(-50%);
1668
2314
  }
1669
2315
  /* 下拉面板 */
1670
2316
  .ms_dropdown {
1671
2317
  position: absolute; left: 0; top: calc(100% + 4px); width: 100%;
1672
2318
  max-height: 200px; overflow-y: auto;
1673
- background: #fff; border: 1px solid #e4e7ed;
1674
- border-radius: 4px; box-shadow: 0 2px 12px rgba(0,0,0,0.1);
2319
+ background: var(--hb-bg-modal); border: 1px solid var(--hb-border-color);
2320
+ border-radius: 4px; box-shadow: var(--hb-shadow-md);
1675
2321
  z-index: 10003; display: none;
1676
2322
  }
1677
2323
  .ms_dropdown.show { display: block; }
1678
2324
  .ms_dropdown_item {
1679
- padding: 8px 12px; font-size: 13px; color: #606266;
2325
+ padding: 8px 12px; font-size: 13px; color: var(--hb-text-secondary);
1680
2326
  cursor: pointer; transition: background 0.15s;
1681
2327
  }
1682
- .ms_dropdown_item:hover { background: #f5f7fa; }
2328
+ .ms_dropdown_item:hover { background: var(--hb-bg-hover); }
1683
2329
  .ms_dropdown_item.selected { color: var(--hb-color-primary, #409eff); font-weight: 500; }
1684
2330
  /* 已被其他边占用的选项: 灰色 + 禁止光标 */
1685
- .ms_dropdown_item.disabled { color: #c0c4cc; cursor: not-allowed; background: #f5f7fa; }
1686
- .ms_dropdown_item.disabled:hover { background: #f5f7fa; }
2331
+ .ms_dropdown_item.disabled { color: var(--hb-text-disabled); cursor: not-allowed; background: var(--hb-bg-section); }
2332
+ .ms_dropdown_item.disabled:hover { background: var(--hb-bg-section); }
1687
2333
  .ms_dropdown_empty {
1688
- padding: 10px 12px; font-size: 12px; color: #999; text-align: center;
2334
+ padding: 10px 12px; font-size: 12px; color: var(--hb-text-muted); text-align: center;
1689
2335
  }
1690
2336
  .hb_option_picker_inline {
1691
2337
  display: flex; align-items: stretch; gap: 8px; width: 100%;
@@ -1702,7 +2348,7 @@ ${m()}
1702
2348
  .hb_option_picker_display:focus,
1703
2349
  .hb_option_picker_trigger:focus {
1704
2350
  outline: none; border-color: var(--hb-color-primary, #409eff);
1705
- box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.12);
2351
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 12%, transparent);
1706
2352
  }
1707
2353
  .hb_option_picker_trigger {
1708
2354
  margin-top: 6px; height: 30px; padding: 0 10px;
@@ -1748,7 +2394,7 @@ ${m()}
1748
2394
  }
1749
2395
  .hb_option_picker_search input:focus {
1750
2396
  outline: none; border-color: var(--hb-color-primary, #409eff);
1751
- box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.12);
2397
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 12%, transparent);
1752
2398
  }
1753
2399
  .hb_option_picker_list {
1754
2400
  flex: 1; overflow: auto; padding: 8px; min-height: 180px;
@@ -1763,11 +2409,11 @@ ${m()}
1763
2409
  }
1764
2410
  .hb_option_picker_item:hover { background: var(--hb-bg-hover, #f5f7fa); }
1765
2411
  .hb_option_picker_item.selected {
1766
- border-color: rgba(64, 158, 255, 0.36); background: rgba(64, 158, 255, 0.08);
2412
+ border-color: color-mix(in srgb, var(--hb-color-primary) 36%, transparent); background: var(--hb-bg-active);
1767
2413
  color: var(--hb-color-primary, #409eff);
1768
2414
  }
1769
2415
  .hb_option_picker_item.disabled {
1770
- color: #c0c4cc; cursor: not-allowed; background: #f8fafc;
2416
+ color: var(--hb-text-disabled); cursor: not-allowed; background: var(--hb-bg-section);
1771
2417
  }
1772
2418
  .hb_option_picker_label,
1773
2419
  .hb_option_picker_value,
@@ -1803,7 +2449,7 @@ ${m()}
1803
2449
  }
1804
2450
  /* 验证提示 */
1805
2451
  .ms_error_tip {
1806
- font-size: 12px; color: #f56c6c; margin-top: 4px; display: none;
2452
+ font-size: 12px; color: var(--hb-color-danger); margin-top: 4px; display: none;
1807
2453
  }
1808
2454
  .ms_error_tip.show { display: block; }
1809
2455
 
@@ -1829,7 +2475,7 @@ ${m()}
1829
2475
  }
1830
2476
  .pair_item input[type="text"]:focus {
1831
2477
  border-color: var(--hb-color-primary, #409eff);
1832
- box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.12);
2478
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 12%, transparent);
1833
2479
  }
1834
2480
  .btn_del {
1835
2481
  width: 26px; height: 26px; border: 1px solid var(--hb-border-color, #dcdfe6);
@@ -1839,7 +2485,7 @@ ${m()}
1839
2485
  transition: all 0.2s;
1840
2486
  }
1841
2487
  .btn_del:hover {
1842
- background: #fef0f0; border-color: #f56c6c; color: #f56c6c;
2488
+ background: var(--hb-danger-soft); border-color: var(--hb-color-danger); color: var(--hb-color-danger);
1843
2489
  }
1844
2490
  .btn_add_pair {
1845
2491
  display: inline-flex; align-items: center; gap: 4px;
@@ -1850,7 +2496,7 @@ ${m()}
1850
2496
  }
1851
2497
  .btn_add_pair:hover {
1852
2498
  border-color: var(--hb-color-primary, #409eff);
1853
- background: rgba(64, 158, 255, 0.06);
2499
+ background: var(--hb-bg-hover);
1854
2500
  }
1855
2501
  .hb_simple_array_editor { display: flex; flex-direction: column; gap: 7px; }
1856
2502
  .hb_array_tags { display: flex; flex-wrap: wrap; gap: 6px; min-width: 0; }
@@ -1885,7 +2531,7 @@ ${m()}
1885
2531
  }
1886
2532
  .hb_nested_array_item input[type="text"]:focus {
1887
2533
  border-color: var(--hb-color-primary, #409eff);
1888
- box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.12);
2534
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 12%, transparent);
1889
2535
  }
1890
2536
  .hb_nested_array_add {
1891
2537
  align-self: flex-start; margin-top: 0; padding: 4px 10px;
@@ -1895,7 +2541,7 @@ ${m()}
1895
2541
  .huanban_rulego_editor_drawer_header .tag {
1896
2542
  display: inline-block; padding: 2px 8px; margin-left: 6px;
1897
2543
  font-size: 11px; font-weight: 400; color: var(--hb-color-primary, #409eff);
1898
- background: rgba(64, 158, 255, 0.1); border-radius: 3px;
2544
+ background: var(--hb-info-soft); border-radius: 3px;
1899
2545
  vertical-align: middle;
1900
2546
  }
1901
2547
 
@@ -1918,8 +2564,8 @@ ${m()}
1918
2564
  /* === 校验错误提示 === */
1919
2565
  .validate_error_tip {
1920
2566
  display: none; padding: 8px 12px; margin-top: 10px;
1921
- background: #fef0f0; border: 1px solid #fbc4c4;
1922
- border-radius: var(--hb-radius-sm, 4px); color: #f56c6c;
2567
+ background: var(--hb-danger-soft); border: 1px solid color-mix(in srgb, var(--hb-color-danger) 40%, transparent);
2568
+ border-radius: var(--hb-radius-sm, 4px); color: var(--hb-color-danger);
1923
2569
  font-size: 12px; line-height: 1.5;
1924
2570
  animation: hb_fadeIn 0.2s ease;
1925
2571
  }
@@ -1934,7 +2580,7 @@ ${m()}
1934
2580
  padding: 2px 0;
1935
2581
  }
1936
2582
  .validate_error_tip .error_list li::before {
1937
- content: '• '; color: #e74c3c;
2583
+ content: '• '; color: var(--hb-color-danger);
1938
2584
  }
1939
2585
  .huanban_rulego_editor_drawer input[readonly] {
1940
2586
  border-style: dashed;
@@ -1968,7 +2614,7 @@ ${m()}
1968
2614
  padding: 4px 8px; line-height: 1; border-radius: 4px; transition: all 0.2s ease;
1969
2615
  }
1970
2616
  .huanban_modal_header .close_btn:hover {
1971
- color: #fff; background: #e74c3c;
2617
+ color: var(--rg-btn-danger-text); background: var(--hb-color-danger);
1972
2618
  }
1973
2619
  .huanban_modal_search {
1974
2620
  padding: 12px 20px;
@@ -1999,13 +2645,13 @@ ${m()}
1999
2645
  display: none; border: none; background: none; cursor: pointer; color: var(--hb-text-muted, #999);
2000
2646
  padding: 4px; border-radius: var(--hb-radius-sm, 4px); transition: all 0.2s; line-height: 1;
2001
2647
  }
2002
- .item_delete_btn:hover { color: var(--hb-color-danger, #f56c6c); background: #fef0f0; }
2648
+ .item_delete_btn:hover { color: var(--hb-color-danger, #f56c6c); background: var(--hb-danger-soft); }
2003
2649
  .huanban_modal_item:hover .item_delete_btn { display: inline-flex; }
2004
2650
  .badge_root { display: inline-block; padding: 1px 6px; font-size: 11px; background: var(--hb-color-primary-bg, #e6f7ff); color: var(--hb-color-primary, #1890ff); border-radius: 3px; margin-left: 6px; }
2005
2651
  .badge_debug { display: inline-block; padding: 1px 6px; font-size: 11px; background: var(--hb-bg-tag, #fff7e6); color: var(--hb-color-warning, #fa8c16); border-radius: 3px; margin-left: 4px; }
2006
- .badge_sub_chain { display: inline-block; padding: 1px 6px; font-size: 11px; background: #f0f0f0; color: #8c8c8c; border-radius: 3px; margin-left: 4px; }
2007
- .badge_disabled { display: inline-block; padding: 1px 6px; font-size: 11px; background: #fef0f0; color: #f56c6c; border-radius: 3px; margin-left: 4px; }
2008
- .badge_endpoint { display: inline-block; padding: 1px 6px; font-size: 10px; color: #fff; border-radius: 8px; margin-left: 4px; font-weight: 500; letter-spacing: 0.5px; }
2652
+ .badge_sub_chain { display: inline-block; padding: 1px 6px; font-size: 11px; background: var(--hb-bg-tag); color: var(--hb-text-muted); border-radius: 3px; margin-left: 4px; }
2653
+ .badge_disabled { display: inline-block; padding: 1px 6px; font-size: 11px; background: var(--hb-danger-soft); color: var(--hb-color-danger); border-radius: 3px; margin-left: 4px; }
2654
+ .badge_endpoint { display: inline-block; padding: 1px 6px; font-size: 10px; color: var(--rg-text-inverse); border-radius: 8px; margin-left: 4px; font-weight: 500; letter-spacing: 0.5px; }
2009
2655
  .huanban_modal_empty { text-align: center; padding: 40px 0; color: var(--hb-text-disabled, #c0c4cc); font-size: 14px; }
2010
2656
  .hb_diff_modal {
2011
2657
  width: min(1120px, 94vw);
@@ -2062,16 +2708,16 @@ ${m()}
2062
2708
  }
2063
2709
  .hb_diff_notice {
2064
2710
  margin: 10px 16px 0;
2065
- border-color: rgba(230, 162, 60, 0.28);
2066
- background: rgba(230, 162, 60, 0.08);
2711
+ border-color: color-mix(in srgb, var(--hb-color-warning) 28%, transparent);
2712
+ background: var(--hb-warning-soft);
2067
2713
  color: var(--hb-color-warning, #e6a23c);
2068
2714
  }
2069
2715
  .hb_diff_validation_error {
2070
2716
  margin: 10px 16px 0;
2071
2717
  padding: 10px 12px;
2072
- border: 1px solid rgba(245, 108, 108, 0.24);
2718
+ border: 1px solid color-mix(in srgb, var(--hb-color-danger) 24%, transparent);
2073
2719
  border-radius: 8px;
2074
- background: rgba(245, 108, 108, 0.08);
2720
+ background: var(--hb-danger-soft);
2075
2721
  color: var(--hb-color-danger, #f56c6c);
2076
2722
  font-size: 12px;
2077
2723
  line-height: 1.5;
@@ -2108,8 +2754,8 @@ ${m()}
2108
2754
  overflow: auto;
2109
2755
  border: 1px solid var(--hb-border-light, #ebeef5);
2110
2756
  border-radius: 8px;
2111
- background: #0f172a;
2112
- color: #dbeafe;
2757
+ background: var(--hb-code-bg);
2758
+ color: var(--hb-code-text);
2113
2759
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
2114
2760
  font-size: 12px;
2115
2761
  line-height: 1.5;
@@ -2122,7 +2768,7 @@ ${m()}
2122
2768
  .hb_diff_line_no,
2123
2769
  .hb_diff_line_mark {
2124
2770
  padding: 0 8px;
2125
- color: rgba(226, 232, 240, 0.5);
2771
+ color: var(--hb-code-gutter-text);
2126
2772
  text-align: right;
2127
2773
  user-select: none;
2128
2774
  }
@@ -2139,19 +2785,19 @@ ${m()}
2139
2785
  }
2140
2786
  .hb_diff_line_meta,
2141
2787
  .hb_diff_line_hunk {
2142
- color: #93c5fd;
2143
- background: rgba(59, 130, 246, 0.16);
2788
+ color: var(--hb-color-primary);
2789
+ background: var(--hb-info-soft);
2144
2790
  }
2145
2791
  .hb_diff_line_added {
2146
- color: #bbf7d0;
2147
- background: rgba(22, 101, 52, 0.42);
2792
+ color: var(--hb-color-success);
2793
+ background: var(--hb-success-soft);
2148
2794
  }
2149
2795
  .hb_diff_line_removed {
2150
- color: #fecaca;
2151
- background: rgba(127, 29, 29, 0.48);
2796
+ color: var(--hb-color-danger);
2797
+ background: var(--hb-danger-soft);
2152
2798
  }
2153
2799
  .hb_diff_line_context {
2154
- color: #e2e8f0;
2800
+ color: var(--hb-code-text);
2155
2801
  }
2156
2802
  .hb_diff_delta {
2157
2803
  margin: 12px 16px 0;
@@ -2244,16 +2890,16 @@ ${m()}
2244
2890
  font-size: 11px;
2245
2891
  font-weight: 700;
2246
2892
  }
2247
- .hb_diff_added { background: rgba(103, 194, 58, 0.12); color: var(--hb-color-success, #67c23a); }
2248
- .hb_diff_removed { background: rgba(245, 108, 108, 0.12); color: var(--hb-color-danger, #f56c6c); }
2249
- .hb_diff_changed { background: rgba(64, 158, 255, 0.12); color: var(--hb-color-primary, #409eff); }
2893
+ .hb_diff_added { background: var(--hb-success-soft); color: var(--hb-color-success, #67c23a); }
2894
+ .hb_diff_removed { background: var(--hb-danger-soft); color: var(--hb-color-danger, #f56c6c); }
2895
+ .hb_diff_changed { background: var(--hb-info-soft); color: var(--hb-color-primary, #409eff); }
2250
2896
  .hb_diff_empty {
2251
2897
  padding: 32px !important;
2252
2898
  color: var(--hb-text-muted, #909399) !important;
2253
2899
  text-align: center;
2254
2900
  }
2255
2901
 
2256
- /* === 官方风格设置弹窗 === */
2902
+ /* === Instance settings === */
2257
2903
  .huanban_settings_dialog {
2258
2904
  position: fixed; z-index: var(--hb-z-modal, 10021); top: 10px; left: 50%;
2259
2905
  transform: translateX(-50%);
@@ -2285,7 +2931,7 @@ ${m()}
2285
2931
  background: transparent; color: var(--hb-text-muted, #909399);
2286
2932
  cursor: pointer; font-size: 20px; line-height: 1;
2287
2933
  }
2288
- .huanban_settings_header .close_btn:hover { color: #fff; background: var(--hb-color-danger, #f56c6c); }
2934
+ .huanban_settings_header .close_btn:hover { color: var(--rg-btn-danger-text); background: var(--hb-color-danger, #f56c6c); }
2289
2935
  .huanban_settings_body { flex: 1; display: grid; grid-template-columns: 168px minmax(0, 1fr); min-height: 0; }
2290
2936
  .huanban_settings_tabs {
2291
2937
  padding: 10px 8px; border-right: 1px solid var(--hb-border-light, #ebeef5);
@@ -2306,6 +2952,42 @@ ${m()}
2306
2952
  min-width: 0; overflow: auto; padding: 16px;
2307
2953
  background: var(--hb-bg-main, #fff);
2308
2954
  }
2955
+ .hb_ui_settings { min-width: 0; font-size: 12px; color: var(--hb-text-primary); }
2956
+ .hb_ui_settings_heading { display: flex; align-items: center; gap: 12px; min-height: 36px; margin-bottom: 8px; }
2957
+ .hb_ui_settings_heading h3 { margin: 0; font-size: 14px; font-weight: 600; }
2958
+ .hb_ui_settings_heading [data-ui-state] { flex: 1; min-width: 0; color: var(--hb-text-muted); overflow-wrap: anywhere; }
2959
+ .hb_ui_settings_actions { display: flex; align-items: center; gap: 4px; margin-left: auto; }
2960
+ .hb_ui_settings_actions button { display: grid; place-items: center; width: 30px; height: 30px; padding: 0; flex-shrink: 0; border: 1px solid var(--hb-border-light); border-radius: 4px; background: var(--hb-bg-toolbar); color: var(--hb-text-secondary); cursor: pointer; }
2961
+ .hb_ui_settings_actions button:hover { background: var(--hb-bg-hover); color: var(--hb-color-primary); }
2962
+ .hb_ui_settings_actions button:disabled { opacity: .5; cursor: not-allowed; }
2963
+ .hb_ui_section { margin: 0; padding: 10px 0; border-top: 1px solid var(--hb-border-light); }
2964
+ .hb_ui_section > summary { color: var(--hb-text-primary); cursor: pointer; font-size: 12px; font-weight: 600; }
2965
+ .hb_ui_setting_grid { display: flex; flex-wrap: wrap; gap: 6px; padding-top: 9px; }
2966
+ .hb_ui_setting_grid:empty { display: none; }
2967
+ .hb_ui_toggle { display: inline-grid; position: relative; flex: 0 0 36px; width: 36px; height: 36px; cursor: pointer; }
2968
+ .hb_ui_toggle input[type=checkbox] { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
2969
+ .hb_ui_toggle_icon { --hb-ui-toggle-color: var(--hb-color-primary); display: grid; place-items: center; box-sizing: border-box; width: 36px; height: 36px; border: 1px solid var(--hb-border-light); border-radius: 5px; background: var(--hb-bg-section); color: var(--hb-text-muted); }
2970
+ .hb_ui_toggle_icon[data-ui-tone=success] { --hb-ui-toggle-color: var(--hb-color-success); }
2971
+ .hb_ui_toggle_icon[data-ui-tone=warning] { --hb-ui-toggle-color: var(--hb-color-warning); }
2972
+ .hb_ui_toggle_icon[data-ui-tone=danger] { --hb-ui-toggle-color: var(--hb-color-danger); }
2973
+ .hb_ui_toggle_icon svg { width: 17px; height: 17px; }
2974
+ .hb_ui_toggle input:checked + .hb_ui_toggle_icon { border-color: color-mix(in srgb, var(--hb-ui-toggle-color) 35%, var(--hb-border-light)); background: color-mix(in srgb, var(--hb-ui-toggle-color) 12%, var(--hb-bg-toolbar)); color: var(--hb-ui-toggle-color); box-shadow: inset 0 -2px 0 var(--hb-ui-toggle-color); }
2975
+ .hb_ui_toggle input:not(:checked) + .hb_ui_toggle_icon svg { filter: grayscale(1); }
2976
+ .hb_ui_toggle input:not(:disabled):hover + .hb_ui_toggle_icon { border-color: var(--hb-ui-toggle-color); }
2977
+ .hb_ui_toggle input:disabled { cursor: not-allowed; }
2978
+ .hb_ui_toggle input:disabled + .hb_ui_toggle_icon { opacity: .55; }
2979
+ .hb_ui_toggle input:focus-visible + .hb_ui_toggle_icon { outline: 2px solid var(--hb-color-primary); outline-offset: 2px; }
2980
+ .hb_ui_settings [hidden] { display: none !important; }
2981
+ .hb_ui_settings :is(input, select, button, summary):focus-visible { outline: 2px solid var(--hb-color-primary); outline-offset: 2px; }
2982
+ .hb_ui_fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; }
2983
+ .hb_ui_field { display: grid; grid-template-columns: minmax(0, 1fr); gap: 6px; padding: 8px 0; min-width: 0; }
2984
+ .hb_ui_field :is(input, select) { min-width: 0; width: 100%; box-sizing: border-box; height: 30px; border: 1px solid var(--hb-border-color); border-radius: 4px; background: var(--hb-bg-input); color: var(--hb-text-primary); padding: 4px 8px; font: inherit; }
2985
+ .hb_ui_settings_reopen { position: absolute; bottom: 12px; left: 12px; z-index: 25; width: 32px; height: 32px; display: grid; place-items: center; border: 1px solid var(--hb-border-light); border-radius: 4px; background: var(--hb-bg-toolbar); color: var(--hb-text-primary); box-shadow: var(--hb-shadow-sm); cursor: pointer; }
2986
+ @media (max-width: 540px) {
2987
+ .hb_ui_fields { grid-template-columns: minmax(0, 1fr); }
2988
+ .hb_ui_settings_heading { flex-wrap: wrap; gap: 6px; }
2989
+ .hb_ui_settings_heading [data-ui-state] { font-size: 11px; }
2990
+ }
2309
2991
  .huanban_settings_card {
2310
2992
  max-width: 720px; border: 1px solid var(--hb-border-light, #ebeef5);
2311
2993
  border-radius: 8px; background: var(--hb-bg-modal, #fff);
@@ -2343,7 +3025,7 @@ ${m()}
2343
3025
  background: var(--hb-bg-input, #fff); color: var(--hb-text-primary, #303133);
2344
3026
  outline: none; font-size: 13px;
2345
3027
  }
2346
- .huanban_settings_field input:focus { border-color: var(--hb-color-primary, #409eff); box-shadow: 0 0 0 2px rgba(64,158,255,0.12); }
3028
+ .huanban_settings_field input:focus { border-color: var(--hb-color-primary, #409eff); box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 12%, transparent); }
2347
3029
  .huanban_settings_checkbox {
2348
3030
  display: flex; align-items: center; gap: 8px; margin-top: 12px;
2349
3031
  min-height: 28px;
@@ -2427,7 +3109,7 @@ ${m()}
2427
3109
  }
2428
3110
  .huanban_login_dialog input:focus {
2429
3111
  border-color: var(--hb-color-primary, #409eff);
2430
- box-shadow: 0 0 0 2px rgba(64,158,255,0.12);
3112
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 12%, transparent);
2431
3113
  }
2432
3114
  .huanban_login_actions {
2433
3115
  justify-content: flex-end;
@@ -2458,7 +3140,7 @@ ${m()}
2458
3140
  }
2459
3141
  .huanban_login_inline input:focus {
2460
3142
  border-color: var(--hb-color-primary, #409eff);
2461
- box-shadow: 0 0 0 2px rgba(64,158,255,0.12);
3143
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 12%, transparent);
2462
3144
  }
2463
3145
  .huanban_login_host_entry {
2464
3146
  display: flex;
@@ -2557,7 +3239,7 @@ ${m()}
2557
3239
  }
2558
3240
  .huanban_chain_selector_tabs button {
2559
3241
  flex: 1; height: 30px; border: 1px solid var(--hb-border-color, #dcdfe6);
2560
- background: #fff; color: var(--hb-text-secondary, #606266);
3242
+ background: var(--hb-bg-input); color: var(--hb-text-secondary, #606266);
2561
3243
  border-radius: 4px; cursor: pointer; font-size: 12px;
2562
3244
  }
2563
3245
  .huanban_chain_selector_tabs button.active {
@@ -2590,7 +3272,7 @@ ${m()}
2590
3272
  .route_settings_modal .modal_title svg { color: var(--hb-color-primary, #409eff); }
2591
3273
  .route_settings_modal .modal_node_badge {
2592
3274
  display: inline-block; padding: 2px 10px; font-size: 11px; font-weight: 400;
2593
- background: rgba(64, 158, 255, 0.1); color: var(--hb-color-primary, #409eff);
3275
+ background: var(--hb-info-soft); color: var(--hb-color-primary, #409eff);
2594
3276
  border-radius: 12px; max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
2595
3277
  }
2596
3278
  .route_settings_modal .modal_close_btn {
@@ -2598,7 +3280,7 @@ ${m()}
2598
3280
  color: var(--hb-text-muted, #999); padding: 4px 8px; line-height: 1;
2599
3281
  border-radius: 4px; transition: all 0.2s ease;
2600
3282
  }
2601
- .route_settings_modal .modal_close_btn:hover { color: #fff; background: #e74c3c; }
3283
+ .route_settings_modal .modal_close_btn:hover { color: var(--rg-btn-danger-text); background: var(--hb-color-danger); }
2602
3284
  .route_settings_modal .modal_body {
2603
3285
  flex: 1; overflow-y: auto; padding: 16px 20px; min-height: 200px;
2604
3286
  }
@@ -2614,7 +3296,7 @@ ${m()}
2614
3296
  .route_settings_modal .modal_footer .btn_cancel:hover { background: var(--hb-bg-hover, #f5f5f5); }
2615
3297
  .route_settings_modal .modal_footer .btn_primary {
2616
3298
  padding: 7px 18px; border: 1px solid var(--hb-color-primary, #409eff); border-radius: var(--hb-radius-sm, 4px);
2617
- background: var(--hb-color-primary, #409eff); color: #fff; cursor: pointer; font-size: 13px;
3299
+ background: var(--hb-color-primary, #409eff); color: var(--rg-btn-primary-text); cursor: pointer; font-size: 13px;
2618
3300
  transition: all 0.15s;
2619
3301
  }
2620
3302
  .route_settings_modal .modal_footer .btn_primary:hover { opacity: 0.85; }
@@ -2649,7 +3331,7 @@ ${m()}
2649
3331
  background: transparent; color: var(--hb-color-primary, #409eff); cursor: pointer; font-size: 12px;
2650
3332
  transition: all 0.2s;
2651
3333
  }
2652
- .route_add_btn:hover { background: rgba(64, 158, 255, 0.06); border-style: solid; }
3334
+ .route_add_btn:hover { background: var(--hb-bg-hover); border-style: solid; }
2653
3335
 
2654
3336
  /* 路由条目行 */
2655
3337
  .route_list { display: flex; flex-direction: column; gap: 10px; }
@@ -2671,7 +3353,7 @@ ${m()}
2671
3353
  color: var(--hb-text-muted, #c0c4cc); padding: 2px 4px; border-radius: 4px;
2672
3354
  transition: all 0.15s; display: flex; align-items: center;
2673
3355
  }
2674
- .route_del_btn:hover { color: var(--hb-color-danger, #f56c6c); background: #fef0f0; }
3356
+ .route_del_btn:hover { color: var(--hb-color-danger, #f56c6c); background: var(--hb-danger-soft); }
2675
3357
  .route_row_body { padding: 12px; }
2676
3358
 
2677
3359
  /* 路由表单控件 */
@@ -2687,7 +3369,7 @@ ${m()}
2687
3369
  color: var(--hb-text-primary, #333); background: var(--hb-bg-input, #fff);
2688
3370
  box-sizing: border-box; outline: none; transition: border-color 0.2s;
2689
3371
  }
2690
- .route_input:focus { border-color: var(--hb-color-primary, #409eff); box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.12); }
3372
+ .route_input:focus { border-color: var(--hb-color-primary, #409eff); box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 12%, transparent); }
2691
3373
  .route_select {
2692
3374
  width: 100%; padding: 7px 10px; border: 1px solid var(--hb-border-color, #dcdfe6);
2693
3375
  border-radius: var(--hb-radius-sm, 4px); font-size: 13px;
@@ -2717,12 +3399,12 @@ ${m()}
2717
3399
  .route_settings_trigger {
2718
3400
  display: inline-flex; align-items: center; gap: 6px;
2719
3401
  padding: 6px 14px; border: 1px solid var(--hb-color-primary, #409eff);
2720
- border-radius: var(--hb-radius-sm, 4px); background: rgba(64, 158, 255, 0.06);
3402
+ border-radius: var(--hb-radius-sm, 4px); background: var(--hb-info-soft);
2721
3403
  color: var(--hb-color-primary, #409eff); cursor: pointer; font-size: 13px;
2722
3404
  transition: all 0.2s; margin-top: 6px;
2723
3405
  }
2724
3406
  .route_settings_trigger:hover {
2725
- background: rgba(64, 158, 255, 0.12); border-color: var(--hb-color-primary, #3375d9);
3407
+ background: var(--hb-bg-hover); border-color: var(--hb-color-primary, #3375d9);
2726
3408
  }
2727
3409
  .route_settings_trigger svg { width: 14px; height: 14px; }
2728
3410
 
@@ -2735,7 +3417,7 @@ ${m()}
2735
3417
  padding: 6px 14px; font-size: 13px; border-radius: var(--hb-radius-sm, 4px);
2736
3418
  cursor: pointer; transition: all 0.15s; border: none;
2737
3419
  }
2738
- .btn_primary { background: var(--hb-color-primary, #409eff); color: #fff; }
3420
+ .btn_primary { background: var(--hb-color-primary, #409eff); color: var(--rg-btn-primary-text); }
2739
3421
  .btn_primary:hover { opacity: 0.85; }
2740
3422
 
2741
3423
  /* 路由列表表格 */
@@ -2804,7 +3486,7 @@ ${m()}
2804
3486
  border-radius: 4px; transition: all 0.15s;
2805
3487
  }
2806
3488
  .route_action_btn:hover { background: var(--hb-bg-hover, #f0f2f5); color: var(--hb-color-primary, #409eff); }
2807
- .route_action_btn.danger:hover { background: #fef0f0; color: var(--hb-color-danger, #f56c6c); }
3489
+ .route_action_btn.danger:hover { background: var(--hb-danger-soft); color: var(--hb-color-danger, #f56c6c); }
2808
3490
 
2809
3491
  /* === 路由编辑表单弹窗 (二层弹窗) === */
2810
3492
  .route_form_modal {
@@ -2855,7 +3537,7 @@ ${m()}
2855
3537
  }
2856
3538
  .route_switch_slider::before {
2857
3539
  content: ''; position: absolute; width: 18px; height: 18px;
2858
- left: 2px; bottom: 2px; background: #fff; border-radius: 50%;
3540
+ left: 2px; bottom: 2px; background: var(--rg-text-inverse); border-radius: 50%;
2859
3541
  transition: transform 0.3s;
2860
3542
  }
2861
3543
  .route_switch input:checked + .route_switch_slider { background: var(--hb-color-success, #13ce66); }
@@ -2870,13 +3552,13 @@ ${m()}
2870
3552
  font-family: 'Menlo', 'Monaco', 'Consolas', monospace;
2871
3553
  transition: border-color 0.2s;
2872
3554
  }
2873
- .route_textarea:focus { border-color: var(--hb-color-primary, #409eff); box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.12); }
3555
+ .route_textarea:focus { border-color: var(--hb-color-primary, #409eff); box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 12%, transparent); }
2874
3556
  .route_schema_textarea { min-height: 200px; }
2875
3557
  .route_schema_value { display: none; }
2876
3558
  .route_schema_editor_wrap {
2877
3559
  border: 1px solid var(--hb-border-color, #dcdfe6);
2878
3560
  border-radius: var(--hb-radius-sm, 4px);
2879
- overflow: hidden; background: #1f2430;
3561
+ overflow: hidden; background: var(--hb-code-bg);
2880
3562
  }
2881
3563
  .route_schema_code_editor { min-height: 300px; }
2882
3564
  .route_schema_fullscreen {
@@ -2912,7 +3594,7 @@ ${m()}
2912
3594
  background: var(--hb-bg-input, #fff); font-size: 12px;
2913
3595
  }
2914
3596
  .route_cron_weekdays input:checked + span {
2915
- color: #fff; border-color: var(--hb-color-primary, #409eff);
3597
+ color: var(--rg-btn-primary-text); border-color: var(--hb-color-primary, #409eff);
2916
3598
  background: var(--hb-color-primary, #409eff);
2917
3599
  }
2918
3600
  .route_cron_preview {
@@ -2957,7 +3639,7 @@ ${m()}
2957
3639
 
2958
3640
  /* 输入框错误状态 */
2959
3641
  .route_input_error { border-color: var(--hb-color-danger, #f56c6c) !important; }
2960
- .route_input_error:focus { box-shadow: 0 0 0 2px rgba(245, 108, 108, 0.15) !important; }
3642
+ .route_input_error:focus { box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-danger) 15%, transparent) !important; }
2961
3643
  .route_error_tip {
2962
3644
  min-height: 16px; margin-top: 4px;
2963
3645
  color: var(--hb-color-danger, #f56c6c); font-size: 12px; line-height: 16px;
@@ -3027,16 +3709,16 @@ ${m()}
3027
3709
  .hb_point_table th { position: sticky; top: 0; z-index: 1; background: var(--hb-bg-section, #f8f9fb); color: var(--hb-text-secondary, #606266); }
3028
3710
  .hb_point_table .hb_point_check { width: 30px; text-align: center; }
3029
3711
  .hb_point_table .hb_point_actions { width: 78px; text-align: center; white-space: nowrap; }
3030
- .hb_point_table tr.is-duplicate { background: rgba(245, 108, 108, .08); }
3712
+ .hb_point_table tr.is-duplicate { background: var(--hb-danger-soft); }
3031
3713
  .hb_point_table .rge-form-input { min-width: 90px; padding: 4px 6px; }
3032
3714
  .hb_point_table .btn_edit { width: 24px; height: 24px; margin-right: 4px; padding: 0; border: 0; border-radius: 4px; background: transparent; color: var(--hb-color-primary, #409eff); font-size: 15px; line-height: 24px; cursor: pointer; }
3033
- .hb_point_table .btn_edit:hover, .hb_point_table .btn_edit[aria-expanded="true"] { background: rgba(64, 158, 255, .12); }
3715
+ .hb_point_table .btn_edit:hover, .hb_point_table .btn_edit[aria-expanded="true"] { background: var(--hb-bg-active); }
3034
3716
  .hb_point_table .hb_point_detail_row > td { padding: 10px; background: var(--hb-bg-section, #f8f9fb); text-align: left; }
3035
3717
  .hb_point_detail_grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px; }
3036
3718
  .hb_point_detail_field { display: flex; flex-direction: column; gap: 5px; min-width: 0; color: var(--hb-text-secondary, #606266); font-size: 12px; }
3037
3719
  .hb_point_detail_field small { color: var(--hb-text-secondary, #909399); line-height: 1.4; }
3038
3720
  .hb_point_table td .rge-form-input { width: 100%; box-sizing: border-box; padding: 5px 6px; border: 1px solid var(--hb-border-color, #dcdfe6); border-radius: 4px; background: var(--hb-bg-input, #fff); color: var(--hb-text-primary, #333); outline: none; }
3039
- .hb_point_table td .rge-form-input:focus { border-color: var(--hb-color-primary, #409eff); box-shadow: 0 0 0 2px rgba(64, 158, 255, .12); }
3721
+ .hb_point_table td .rge-form-input:focus { border-color: var(--hb-color-primary, #409eff); box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 12%, transparent); }
3040
3722
  .hb_point_empty { padding: 20px; text-align: center; color: var(--hb-text-muted, #909399); font-size: 12px; }
3041
3723
  .hb_point_table_error { flex: 1 0 100%; padding: 6px 8px; border: 1px solid var(--hb-danger-border, #fde2e2); border-radius: 4px; background: var(--hb-danger-bg, #fef0f0); color: var(--hb-danger, #b42318); font-size: 12px; line-height: 1.4; }
3042
3724
  .hb_point_pagination { display: flex; align-items: center; justify-content: flex-end; gap: 8px; color: var(--hb-text-secondary, #606266); font-size: 12px; }
@@ -3103,7 +3785,7 @@ ${m()}
3103
3785
  .hb_struct_child select:focus,
3104
3786
  .hb_struct_child textarea:focus {
3105
3787
  border-color: var(--hb-color-primary, #409eff);
3106
- box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.1);
3788
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 10%, transparent);
3107
3789
  }
3108
3790
  .hb_struct_switch {
3109
3791
  display: flex;
@@ -3153,7 +3835,7 @@ ${m()}
3153
3835
  padding: 0 10px;
3154
3836
  border: 1px solid var(--hb-border-color, #dcdfe6);
3155
3837
  border-radius: var(--hb-radius-sm, 4px);
3156
- background: #fff;
3838
+ background: var(--hb-bg-input);
3157
3839
  color: var(--hb-text-secondary, #606266);
3158
3840
  cursor: pointer;
3159
3841
  font-size: 12px;
@@ -3193,9 +3875,9 @@ ${m()}
3193
3875
  align-items: center;
3194
3876
  height: 20px;
3195
3877
  padding: 0 6px;
3196
- border: 1px solid rgba(16, 24, 40, 0.14);
3878
+ border: 1px solid var(--hb-border-color);
3197
3879
  border-radius: 5px;
3198
- background: #fff;
3880
+ background: var(--hb-bg-panel);
3199
3881
  color: var(--hb-color-primary, #409eff);
3200
3882
  font-size: 10px;
3201
3883
  font-weight: 700;
@@ -3253,7 +3935,7 @@ ${m()}
3253
3935
  .hb_expr_condition select:focus,
3254
3936
  .hb_expr_code:focus {
3255
3937
  border-color: var(--hb-color-primary, #409eff);
3256
- box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.1);
3938
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 10%, transparent);
3257
3939
  }
3258
3940
  .hb_expr_delete {
3259
3941
  width: 26px;
@@ -3261,7 +3943,7 @@ ${m()}
3261
3943
  margin-top: 4px;
3262
3944
  border: 1px solid var(--hb-border-color, #dcdfe6);
3263
3945
  border-radius: var(--hb-radius-sm, 4px);
3264
- background: #fff;
3946
+ background: var(--hb-bg-input);
3265
3947
  color: var(--hb-text-muted, #909399);
3266
3948
  cursor: pointer;
3267
3949
  }
@@ -3269,7 +3951,7 @@ ${m()}
3269
3951
  .hb_expr_group_actions button.danger:hover {
3270
3952
  border-color: var(--hb-color-danger, #f56c6c);
3271
3953
  color: var(--hb-color-danger, #f56c6c);
3272
- background: #fef0f0;
3954
+ background: var(--hb-danger-soft);
3273
3955
  }
3274
3956
  .hb_expr_delete.invisible {
3275
3957
  visibility: hidden;
@@ -3287,7 +3969,7 @@ ${m()}
3287
3969
  padding: 0 10px;
3288
3970
  border: 1px solid var(--hb-border-color, #dcdfe6);
3289
3971
  border-radius: var(--hb-radius-sm, 4px);
3290
- background: #fff;
3972
+ background: var(--hb-bg-input);
3291
3973
  color: var(--hb-text-secondary, #606266);
3292
3974
  cursor: pointer;
3293
3975
  font-size: 12px;
@@ -3356,7 +4038,7 @@ ${m()}
3356
4038
  .hb_switch_case:focus,
3357
4039
  .hb_switch_then:focus {
3358
4040
  border-color: var(--hb-color-primary, #409eff);
3359
- box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.1);
4041
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 10%, transparent);
3360
4042
  }
3361
4043
  .hb_switch_delete {
3362
4044
  width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center;
@@ -3463,11 +4145,11 @@ ${m()}
3463
4145
  }
3464
4146
  .hb_rule_chain_action button {
3465
4147
  padding: 5px 12px; border: 1px solid var(--hb-color-primary, #409eff);
3466
- color: var(--hb-color-primary, #409eff); background: #fff; border-radius: var(--hb-radius-sm, 4px); cursor: pointer;
4148
+ color: var(--hb-color-primary, #409eff); background: var(--hb-bg-input); border-radius: var(--hb-radius-sm, 4px); cursor: pointer;
3467
4149
  }
3468
4150
  .hb_selected_badge {
3469
4151
  display: inline-flex; align-items: center; justify-content: center;
3470
- padding: 3px 8px; border-radius: 3px; color: #67c23a; background: #f0f9eb; font-size: 12px;
4152
+ padding: 3px 8px; border-radius: 3px; color: var(--hb-color-success); background: var(--hb-success-soft); font-size: 12px;
3471
4153
  }
3472
4154
  .hb_rule_chain_empty { padding: 80px 0; text-align: center; color: var(--hb-text-muted, #909399); }
3473
4155
  .hb_rule_chain_modal_footer,
@@ -3547,7 +4229,7 @@ ${m()}
3547
4229
  background: var(--hb-color-primary-bg, #ecf5ff); font-size: 12px;
3548
4230
  }
3549
4231
  .hb_builtin_tool_card.disabled .hb_builtin_tool_action {
3550
- color: #67c23a; background: #f0f9eb;
4232
+ color: var(--hb-color-success); background: var(--hb-success-soft);
3551
4233
  }
3552
4234
  .hb_builtin_tool_empty {
3553
4235
  grid-column: 1 / -1; display: flex; align-items: center; justify-content: center;
@@ -3558,7 +4240,7 @@ ${m()}
3558
4240
  }
3559
4241
  .hb_builtin_tool_pagination button {
3560
4242
  height: 28px; padding: 0 10px; border: 1px solid var(--hb-border-color, #dcdfe6);
3561
- border-radius: var(--hb-radius-sm, 4px); background: #fff; cursor: pointer;
4243
+ border-radius: var(--hb-radius-sm, 4px); background: var(--hb-bg-input); cursor: pointer;
3562
4244
  }
3563
4245
  .hb_builtin_tool_pagination button:disabled {
3564
4246
  cursor: not-allowed; color: var(--hb-text-muted, #909399); background: var(--hb-bg-section, #fafbfc);
@@ -3641,7 +4323,7 @@ ${m()}
3641
4323
  }
3642
4324
  .hb_tool_rulechain_picker button {
3643
4325
  height: 32px; padding: 0 12px; border: 1px solid var(--hb-color-primary, #409eff);
3644
- border-radius: var(--hb-radius-sm, 4px); background: #fff; color: var(--hb-color-primary, #409eff);
4326
+ border-radius: var(--hb-radius-sm, 4px); background: var(--hb-bg-input); color: var(--hb-color-primary, #409eff);
3645
4327
  cursor: pointer; white-space: nowrap;
3646
4328
  }
3647
4329
  .hb_tool_rulechain_picker button:hover {
@@ -3652,8 +4334,8 @@ ${m()}
3652
4334
  border-radius: 11px; background: var(--hb-bg-section, #f5f7fa); color: var(--hb-text-secondary, #606266);
3653
4335
  font-size: 12px;
3654
4336
  }
3655
- .hb_tool_type_builtin { background: #f0f9eb; color: #67c23a; }
3656
- .hb_tool_type_rulechain { background: #ecf5ff; color: #409eff; }
4337
+ .hb_tool_type_builtin { background: var(--hb-success-soft); color: var(--hb-color-success); }
4338
+ .hb_tool_type_rulechain { background: var(--hb-info-soft); color: var(--hb-color-primary); }
3657
4339
  .hb_tools_actions { display: flex; justify-content: center; gap: 6px; padding: 4px !important; white-space: nowrap; }
3658
4340
  .hb_tools_actions .hb_tool_action_button { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0; line-height: 1; }
3659
4341
  .hb_tools_actions button.danger { color: var(--hb-color-danger, #f56c6c); }
@@ -3687,7 +4369,7 @@ ${m()}
3687
4369
  }
3688
4370
  .hb_schema_mode button {
3689
4371
  height: 26px; padding: 0 12px; border: 1px solid var(--hb-border-color, #dcdfe6);
3690
- border-radius: var(--hb-radius-sm, 4px); background: #fff; color: var(--hb-text-secondary, #606266);
4372
+ border-radius: var(--hb-radius-sm, 4px); background: var(--hb-bg-input); color: var(--hb-text-secondary, #606266);
3691
4373
  cursor: pointer; font-size: 12px;
3692
4374
  }
3693
4375
  .hb_schema_mode button.active {
@@ -3724,7 +4406,7 @@ ${m()}
3724
4406
  .hb_schema_table input[type="checkbox"] { width: 16px; height: 16px; }
3725
4407
  .hb_schema_table button {
3726
4408
  padding: 3px 8px; border: 1px solid var(--hb-border-color, #dcdfe6);
3727
- border-radius: var(--hb-radius-sm, 4px); background: #fff; cursor: pointer; font-size: 12px;
4409
+ border-radius: var(--hb-radius-sm, 4px); background: var(--hb-bg-input); cursor: pointer; font-size: 12px;
3728
4410
  }
3729
4411
  .hb_schema_drag_handle {
3730
4412
  width: 24px;
@@ -4064,20 +4746,24 @@ ${m()}
4064
4746
  border: 1px solid var(--hb-border-light, #eee);
4065
4747
  padding: 3px 4px;
4066
4748
  gap: 2px;
4067
- transform: translate(-50%, -100%);
4749
+ transform: translate(-50%, var(--hb-operate-shift-y, -100%));
4068
4750
  animation: hb_operateIn 0.15s ease-out;
4069
4751
  }
4070
4752
  @keyframes hb_operateIn {
4071
- from { opacity: 0; transform: translate(-50%, -100%) scale(0.9) translateY(4px); }
4072
- to { opacity: 1; transform: translate(-50%, -100%) scale(1) translateY(0); }
4753
+ from { opacity: 0; transform: translate(-50%, var(--hb-operate-shift-y, -100%)) scale(0.9) translateY(4px); }
4754
+ to { opacity: 1; transform: translate(-50%, var(--hb-operate-shift-y, -100%)) scale(1) translateY(0); }
4073
4755
  }
4074
4756
  /* 底部小三角指示器 */
4075
4757
  .huanban_node_operate::after {
4076
- content: ''; position: absolute; bottom: -5px; left: 50%; transform: translateX(-50%);
4758
+ content: ''; position: absolute; bottom: -5px; left: var(--hb-operate-arrow-x, 50%); transform: translateX(-50%);
4077
4759
  width: 0; height: 0;
4078
4760
  border-left: 5px solid transparent; border-right: 5px solid transparent;
4079
4761
  border-top: 5px solid var(--hb-bg-modal, #fff);
4080
4762
  }
4763
+ .huanban_node_operate[data-placement="bottom"]::after {
4764
+ top: -5px; bottom: auto; border-top: 0;
4765
+ border-bottom: 5px solid var(--hb-bg-modal, #fff);
4766
+ }
4081
4767
  .huanban_node_operate .oper-btn {
4082
4768
  background: none; border: none; cursor: pointer;
4083
4769
  width: 28px; height: 28px;
@@ -4123,12 +4809,12 @@ ${m()}
4123
4809
  }
4124
4810
  /* 删除按钮特殊 hover */
4125
4811
  .huanban_node_operate .oper-btn.del-btn:hover {
4126
- background: #fef0f0;
4812
+ background: var(--hb-danger-soft);
4127
4813
  color: var(--hb-color-danger, #f56c6c);
4128
4814
  }
4129
4815
  .huanban_node_operate .oper-btn.run-single-btn:hover {
4130
- background: #fdf6ec;
4131
- color: #e6a23c;
4816
+ background: var(--hb-warning-soft);
4817
+ color: var(--hb-color-warning);
4132
4818
  }
4133
4819
  /* 操作栏分隔线 */
4134
4820
  .huanban_node_operate .oper-sep {
@@ -4161,7 +4847,7 @@ ${m()}
4161
4847
  background: var(--hb-bg-hover, #f0f2f5);
4162
4848
  }
4163
4849
  .huanban_context_menu .ctx_item.ctx_danger:hover {
4164
- background: #fef0f0; color: var(--hb-color-danger, #f56c6c);
4850
+ background: var(--hb-danger-soft); color: var(--hb-color-danger, #f56c6c);
4165
4851
  }
4166
4852
  .huanban_context_menu .ctx_item.is_disabled,
4167
4853
  .huanban_context_menu .ctx_item:disabled {
@@ -4297,7 +4983,7 @@ ${m()}
4297
4983
  }
4298
4984
  .debug_view_btn_error:hover,
4299
4985
  .debug_view_btn_error:focus-visible {
4300
- background: #fef0f0;
4986
+ background: var(--hb-danger-soft);
4301
4987
  border-color: var(--hb-color-danger, #f56c6c);
4302
4988
  }
4303
4989
  .debug_tag_in {
@@ -4312,40 +4998,40 @@ ${m()}
4312
4998
  color: var(--hb-color-danger, #f56c6c); font-size: 12px; cursor: pointer;
4313
4999
  }
4314
5000
  .debug_tag_err:hover { text-decoration: underline; }
4315
- /* 终端视图 — 保留深色终端风格,与主题解耦 */
5001
+ /* Terminal content shares the editor's readable code palette. */
4316
5002
  .debug_terminal {
4317
- background: #1e1e2e; color: #cdd6f4; font-family: 'Menlo','Monaco','Consolas',monospace;
5003
+ background: var(--hb-code-bg); color: var(--hb-code-text); font-family: 'Menlo','Monaco','Consolas',monospace;
4318
5004
  font-size: 12px; line-height: 1.6; padding: 12px 16px;
4319
5005
  max-height: 450px; overflow-y: auto; margin: 0; white-space: pre-wrap;
4320
5006
  word-break: break-all; border-radius: 0;
4321
5007
  }
4322
- .debug_terminal .t_time { color: #89b4fa; }
4323
- .debug_terminal .t_in { color: #89dceb; font-weight: 700; }
4324
- .debug_terminal .t_out { color: #a6e3a1; font-weight: 700; }
4325
- .debug_terminal .t_err { color: #f38ba8; }
4326
- .debug_terminal .t_rel { color: #fab387; font-weight: 600; }
4327
- .debug_terminal .t_meta { color: #6c7086; font-style: italic; }
5008
+ .debug_terminal .t_time { color: var(--hb-code-number); }
5009
+ .debug_terminal .t_in { color: var(--hb-code-type); font-weight: 700; }
5010
+ .debug_terminal .t_out { color: var(--hb-code-string); font-weight: 700; }
5011
+ .debug_terminal .t_err { color: var(--hb-color-danger); }
5012
+ .debug_terminal .t_rel { color: var(--hb-code-function); font-weight: 600; }
5013
+ .debug_terminal .t_meta { color: var(--hb-code-comment); font-style: italic; }
4328
5014
  .debug_terminal .t_node {
4329
- color: #cba6f7;
5015
+ color: var(--hb-code-keyword);
4330
5016
  font-weight: 600;
4331
5017
  }
4332
5018
  .debug_terminal .t_node_clickable {
4333
5019
  cursor: pointer;
4334
5020
  }
4335
5021
  .debug_terminal .t_node_clickable:hover {
4336
- color: #f5c2e7;
5022
+ color: var(--hb-code-type);
4337
5023
  text-decoration: underline;
4338
5024
  }
4339
5025
  .debug_terminal .t_node_subchain {
4340
- color: #6c7086;
5026
+ color: var(--hb-code-comment);
4341
5027
  cursor: default;
4342
5028
  }
4343
5029
  .debug_terminal .t_duration {
4344
5030
  display: inline-block;
4345
5031
  padding: 0 4px;
4346
5032
  border-radius: 3px;
4347
- background: #313244;
4348
- color: #f9e2af;
5033
+ background: var(--hb-bg-tag);
5034
+ color: var(--hb-code-number);
4349
5035
  font-size: 11px;
4350
5036
  font-weight: 600;
4351
5037
  }
@@ -4407,7 +5093,7 @@ ${m()}
4407
5093
  }
4408
5094
  .debug_detail_editor {
4409
5095
  min-height: 400px;
4410
- background: #0d1117;
5096
+ background: var(--hb-code-bg);
4411
5097
  }
4412
5098
  .debug_detail_footer {
4413
5099
  display: flex;
@@ -4437,8 +5123,8 @@ ${m()}
4437
5123
  height: 400px;
4438
5124
  overflow: auto;
4439
5125
  padding: 12px;
4440
- color: #c9d1d9;
4441
- background: #0d1117;
5126
+ color: var(--hb-code-text);
5127
+ background: var(--hb-code-bg);
4442
5128
  white-space: pre-wrap;
4443
5129
  word-break: break-word;
4444
5130
  font-family: 'Menlo','Monaco','Consolas',monospace;
@@ -4457,9 +5143,9 @@ ${m()}
4457
5143
  background: var(--hb-bg-modal, #fff); cursor: pointer; font-size: 12px; transition: all 0.15s;
4458
5144
  }
4459
5145
  .live_connect_btn { color: var(--hb-color-success, #67c23a); border-color: var(--hb-color-success, #67c23a); }
4460
- .live_connect_btn:hover { background: #f0f9eb; }
5146
+ .live_connect_btn:hover { background: var(--hb-success-soft); }
4461
5147
  .live_disconnect_btn { color: var(--hb-color-danger, #f56c6c); border-color: var(--hb-color-danger, #f56c6c); }
4462
- .live_disconnect_btn:hover { background: #fef0f0; }
5148
+ .live_disconnect_btn:hover { background: var(--hb-danger-soft); }
4463
5149
  .live_clear_btn { color: var(--hb-text-muted, #909399); }
4464
5150
  .live_clear_btn:hover { background: var(--hb-color-primary-bg, #ecf5ff); }
4465
5151
  .live_count { font-size: 12px; color: var(--hb-text-muted, #999); margin-left: auto; }
@@ -4467,7 +5153,7 @@ ${m()}
4467
5153
 
4468
5154
  /* ========== 代码编辑器工具按钮 ========== */
4469
5155
  .code_tool_btn:hover {
4470
- background: #21262d !important; color: #c9d1d9 !important; border-color: #58a6ff !important;
5156
+ background: var(--hb-bg-hover) !important; color: var(--hb-text-primary) !important; border-color: var(--hb-color-primary) !important;
4471
5157
  }
4472
5158
  /* 代码编辑器全屏模式 */
4473
5159
  .code_editor_fullscreen {
@@ -4507,33 +5193,36 @@ ${m()}
4507
5193
  overflow: visible;
4508
5194
  }
4509
5195
  .huanban_rulego_editor_toolbar .tb_ai {
4510
- color: #7c3aed;
4511
- border-color: rgba(124, 58, 237, 0.36);
4512
- background: rgba(124, 58, 237, 0.06);
5196
+ color: var(--hb-color-primary);
5197
+ border-color: color-mix(in srgb, var(--hb-color-primary) 36%, transparent);
5198
+ background: var(--hb-info-soft);
4513
5199
  }
4514
5200
  .huanban_rulego_editor_toolbar .tb_ai .hb_toolbar_ai_icon {
4515
5201
  display: inline-block !important;
4516
5202
  visibility: visible !important;
4517
5203
  opacity: 1 !important;
4518
5204
  color: currentColor;
4519
- filter: drop-shadow(0 0 3px rgba(124, 58, 237, 0.2));
5205
+ filter: drop-shadow(0 0 3px color-mix(in srgb, var(--hb-color-primary) 20%, transparent));
4520
5206
  }
4521
5207
  .huanban_rulego_editor_toolbar .tb_ai:hover .hb_toolbar_ai_icon {
4522
5208
  color: currentColor;
4523
5209
  }
4524
5210
  .huanban_rulego_editor_toolbar .tb_ai:hover {
4525
- color: #fff;
4526
- border-color: #7c3aed;
4527
- background: #7c3aed;
5211
+ color: var(--rg-btn-primary-text);
5212
+ border-color: var(--hb-color-primary);
5213
+ background: var(--hb-color-primary);
4528
5214
  }
4529
- .huanban_rulego_editor_toolbar.huanban_toolbar_icon_only .tb_btn > span {
5215
+ .huanban_rulego_editor_toolbar.huanban_toolbar_icon_only .tb_btn > span:not(.hb_control_icon) {
4530
5216
  display: none;
4531
5217
  }
4532
5218
  .huanban_rulego_editor_toolbar.huanban_toolbar_icon_only .tb_btn {
4533
5219
  width: 30px;
4534
5220
  min-width: 30px;
4535
- padding-left: 0;
4536
- padding-right: 0;
5221
+ height: 28px;
5222
+ flex: 0 0 30px;
5223
+ justify-content: center;
5224
+ gap: 0;
5225
+ padding: 0;
4537
5226
  }
4538
5227
  .huanban_rulego_editor_toolbar .tb_btn:hover {
4539
5228
  background: var(--hb-bg-section, #f0f2f5);
@@ -4541,8 +5230,8 @@ ${m()}
4541
5230
  /* 工具栏按钮激活状态 (如小地图开启时) */
4542
5231
  .huanban_rulego_editor_toolbar .tb_btn.tb_active {
4543
5232
  background: var(--hb-color-primary, #3685f2);
4544
- color: #fff;
4545
- box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.72);
5233
+ color: var(--rg-btn-primary-text);
5234
+ box-shadow: inset 0 2px 0 color-mix(in srgb, var(--rg-text-inverse) 72%, transparent);
4546
5235
  }
4547
5236
 
4548
5237
  /* ========== MiniMap 小地图容器 ========== */
@@ -4554,16 +5243,16 @@ ${m()}
4554
5243
  top: auto !important;
4555
5244
  z-index: 50;
4556
5245
  border-radius: var(--hb-radius-md, 6px);
4557
- box-shadow: 0 4px 16px rgba(0,0,0,0.25);
4558
- border: 1px solid rgba(255,255,255,0.1);
5246
+ box-shadow: var(--hb-shadow-md);
5247
+ border: 1px solid var(--hb-border-color);
4559
5248
  overflow: hidden;
4560
- background: rgba(30, 30, 40, 0.85);
5249
+ background: var(--hb-bg-panel);
4561
5250
  }
4562
5251
  .lf-mini-map-header {
4563
- background: rgba(20, 20, 30, 0.9);
4564
- border-bottom: 1px solid rgba(255,255,255,0.1);
5252
+ background: var(--hb-bg-section);
5253
+ border-bottom: 1px solid var(--hb-border-color);
4565
5254
  font-size: 12px;
4566
- color: rgba(255,255,255,0.7);
5255
+ color: var(--hb-text-secondary);
4567
5256
  }
4568
5257
  .lf-mini-map-close {
4569
5258
  cursor: pointer;
@@ -4575,7 +5264,7 @@ ${m()}
4575
5264
  color: var(--hb-color-success, #27ae60); border-color: var(--hb-color-success, #27ae60);
4576
5265
  }
4577
5266
  .huanban_rulego_editor_toolbar .tb_save:hover {
4578
- background: #e8faf0; color: #1d8348;
5267
+ background: var(--hb-success-soft); color: var(--hb-color-success);
4579
5268
  }
4580
5269
  .huanban_rulego_editor_toolbar .tb_deploy.tb_undeploy {
4581
5270
  color: var(--hb-color-danger, #f56c6c);
@@ -4583,14 +5272,14 @@ ${m()}
4583
5272
  background: var(--hb-color-danger-bg, #fef0f0);
4584
5273
  }
4585
5274
  .huanban_rulego_editor_toolbar .tb_deploy.tb_undeploy:hover {
4586
- color: #fff;
5275
+ color: var(--rg-btn-danger-text);
4587
5276
  border-color: var(--hb-color-danger, #f56c6c);
4588
5277
  background: var(--hb-color-danger, #f56c6c);
4589
5278
  }
4590
5279
  .huanban_rulego_editor_toolbar .tb_save.tb_dirty {
4591
5280
  color: var(--hb-color-danger, #f56c6c);
4592
5281
  border-color: var(--hb-color-danger, #f56c6c);
4593
- background: rgba(245, 108, 108, 0.10);
5282
+ background: var(--hb-danger-soft);
4594
5283
  animation: hb_save_dirty_pulse 1.4s ease-in-out infinite;
4595
5284
  }
4596
5285
  .huanban_rulego_editor_toolbar .tb_save.tb_dirty::after {
@@ -4603,35 +5292,35 @@ ${m()}
4603
5292
  border-radius: 50%;
4604
5293
  background: var(--hb-color-danger, #f56c6c);
4605
5294
  border: 2px solid var(--hb-bg-toolbar, #fff);
4606
- box-shadow: 0 0 0 3px rgba(245, 108, 108, 0.18);
5295
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--hb-color-danger) 18%, transparent);
4607
5296
  }
4608
5297
  .huanban_rulego_editor_toolbar .tb_diff {
4609
5298
  position: relative;
4610
- color: #2563eb;
4611
- border-color: rgba(37, 99, 235, 0.38);
4612
- background: rgba(37, 99, 235, 0.04);
5299
+ color: var(--hb-color-primary);
5300
+ border-color: color-mix(in srgb, var(--hb-color-primary) 38%, transparent);
5301
+ background: var(--hb-info-soft);
4613
5302
  }
4614
5303
  .huanban_rulego_editor_toolbar .tb_diff:disabled,
4615
5304
  .huanban_rulego_editor_toolbar .tb_diff[aria-disabled="true"] {
4616
5305
  opacity: 0.72;
4617
- color: #64748b;
4618
- border-color: rgba(100, 116, 139, 0.28);
4619
- background: rgba(248, 250, 252, 0.92);
5306
+ color: var(--hb-text-disabled);
5307
+ border-color: var(--hb-border-light);
5308
+ background: var(--hb-bg-section);
4620
5309
  }
4621
5310
  .huanban_rulego_editor_toolbar .tb_diff.tb_dirty {
4622
- color: #fff;
4623
- border-color: #2563eb;
4624
- background: #2563eb;
4625
- box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.14);
5311
+ color: var(--rg-btn-primary-text);
5312
+ border-color: var(--hb-color-primary);
5313
+ background: var(--hb-color-primary);
5314
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 14%, transparent);
4626
5315
  }
4627
5316
  .huanban_rulego_editor_toolbar .tb_diff.tb_dirty:hover {
4628
- color: #fff;
4629
- background: #1d4ed8;
4630
- border-color: #1d4ed8;
5317
+ color: var(--rg-btn-primary-text);
5318
+ background: var(--rg-btn-primary-bg-hover);
5319
+ border-color: var(--rg-btn-primary-bg-hover);
4631
5320
  }
4632
5321
  @keyframes hb_save_dirty_pulse {
4633
- 0%, 100% { box-shadow: 0 0 0 0 rgba(245, 108, 108, 0); }
4634
- 50% { box-shadow: 0 0 0 4px rgba(245, 108, 108, 0.16); }
5322
+ 0%, 100% { box-shadow: 0 0 0 0 transparent; }
5323
+ 50% { box-shadow: 0 0 0 4px color-mix(in srgb, var(--hb-color-danger) 16%, transparent); }
4635
5324
  }
4636
5325
  .huanban_rulego_editor_toolbar .tb_saving {
4637
5326
  opacity: 0.7; pointer-events: none;
@@ -4640,13 +5329,13 @@ ${m()}
4640
5329
  color: var(--hb-color-warning, #e67e22); border-color: var(--hb-color-warning, #e67e22);
4641
5330
  }
4642
5331
  .huanban_rulego_editor_toolbar .tb_run:hover {
4643
- background: #fef5e7; color: #d35400;
5332
+ background: var(--hb-warning-soft); color: var(--hb-color-warning);
4644
5333
  }
4645
5334
  .huanban_rulego_editor_toolbar .tb_component {
4646
- color: #8e44ad; border-color: #8e44ad;
5335
+ color: var(--hb-color-primary); border-color: var(--hb-color-primary);
4647
5336
  }
4648
5337
  .huanban_rulego_editor_toolbar .tb_component:hover {
4649
- background: #f5eef8; color: #6c3483;
5338
+ background: var(--hb-bg-hover); color: var(--hb-color-primary);
4650
5339
  }
4651
5340
 
4652
5341
  /* ========== LogicFlow Control 面板: 已迁移到 huanban_rulego_editor_canvas_toolbar,避免两组控制项混排 ========== */
@@ -4676,8 +5365,8 @@ ${m()}
4676
5365
  }
4677
5366
  /* 图标项样式 */
4678
5367
  .lf-control-item {
4679
- --hb-control-color: #475569;
4680
- --hb-control-border: rgba(71, 85, 105, 0.32);
5368
+ --hb-control-color: var(--hb-text-secondary);
5369
+ --hb-control-border: color-mix(in srgb, var(--hb-text-secondary) 32%, transparent);
4681
5370
  display: flex !important;
4682
5371
  align-items: center !important;
4683
5372
  justify-content: center !important;
@@ -4692,7 +5381,7 @@ ${m()}
4692
5381
  line-height: 28px !important;
4693
5382
  border: 1px solid var(--hb-control-border) !important;
4694
5383
  border-radius: 50% !important;
4695
- background: rgba(255,255,255,0.96) !important;
5384
+ background: var(--hb-bg-toolbar) !important;
4696
5385
  cursor: pointer !important;
4697
5386
  color: var(--hb-control-color) !important;
4698
5387
  box-shadow: 0 1px 3px rgba(18, 26, 42, 0.10) !important;
@@ -4701,15 +5390,15 @@ ${m()}
4701
5390
  .lf-control-item:hover {
4702
5391
  background: var(--hb-control-color) !important;
4703
5392
  border-color: var(--hb-control-color) !important;
4704
- color: #fff !important;
5393
+ color: var(--rg-text-inverse) !important;
4705
5394
  box-shadow: 0 5px 12px rgba(18, 26, 42, 0.15) !important;
4706
5395
  transform: translateY(-1px);
4707
5396
  }
4708
5397
  .lf-control-item:active { transform: translateY(0) scale(0.96); }
4709
5398
  .lf-control-item.disabled { opacity: 0.4; cursor: not-allowed !important; }
4710
- .lf-control-item:has(.hb-ctrl-minimap) { --hb-control-color: #0f766e; --hb-control-border: rgba(15, 118, 110, 0.34); }
4711
- .lf-control-item:has(.hb-ctrl-components) { --hb-control-color: #2563eb; --hb-control-border: rgba(37, 99, 235, 0.34); }
4712
- .lf-control-item:has(.hb-ctrl-search) { --hb-control-color: #d97706; --hb-control-border: rgba(217, 119, 6, 0.34); }
5399
+ .lf-control-item:has(.hb-ctrl-minimap) { --hb-control-color: var(--hb-color-success); --hb-control-border: color-mix(in srgb, var(--hb-color-success) 34%, transparent); }
5400
+ .lf-control-item:has(.hb-ctrl-components) { --hb-control-color: var(--hb-color-primary); --hb-control-border: color-mix(in srgb, var(--hb-color-primary) 34%, transparent); }
5401
+ .lf-control-item:has(.hb-ctrl-search) { --hb-control-color: var(--hb-color-warning); --hb-control-border: color-mix(in srgb, var(--hb-color-warning) 34%, transparent); }
4713
5402
  /* 图标尺寸 */
4714
5403
  .lf-control-item i {
4715
5404
  display: block !important;
@@ -4719,15 +5408,18 @@ ${m()}
4719
5408
  }
4720
5409
  /* 自定义图标 — 小地图(地图框 + 标记点) */
4721
5410
  .hb-ctrl-minimap {
4722
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23555' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='18' height='18' rx='2'/%3E%3Crect x='13' y='13' width='7' height='7' rx='1' opacity='0.4'/%3E%3Ccircle cx='8.5' cy='8.5' r='1.5' fill='%23555'/%3E%3C/svg%3E") no-repeat center/contain !important;
5411
+ background: currentColor !important;
5412
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='18' height='18' rx='2'/%3E%3Crect x='13' y='13' width='7' height='7' rx='1' opacity='0.4'/%3E%3Ccircle cx='8.5' cy='8.5' r='1.5' fill='currentColor'/%3E%3C/svg%3E") no-repeat center/contain !important;
4723
5413
  }
4724
5414
  /* 自定义图标 — 组件管理(四宫格) */
4725
5415
  .hb-ctrl-components {
4726
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23555' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7' rx='1'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1'/%3E%3Crect x='14' y='14' width='7' height='7' rx='1'/%3E%3C/svg%3E") no-repeat center/contain !important;
5416
+ background: currentColor !important;
5417
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7' rx='1'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1'/%3E%3Crect x='14' y='14' width='7' height='7' rx='1'/%3E%3C/svg%3E") no-repeat center/contain !important;
4727
5418
  }
4728
5419
  /* 自定义图标 — 搜索(放大镜) */
4729
5420
  .hb-ctrl-search {
4730
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23555' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E") no-repeat center/contain !important;
5421
+ background: currentColor !important;
5422
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E") no-repeat center/contain !important;
4731
5423
  }
4732
5424
 
4733
5425
  /* ========== 部署状态指示灯 ========== */
@@ -4738,21 +5430,21 @@ ${m()}
4738
5430
  border-radius: 50%;
4739
5431
  margin-right: 6px;
4740
5432
  vertical-align: middle;
4741
- background: #bbb;
4742
- box-shadow: 0 0 0 2px rgba(187,187,187,0.25);
5433
+ background: var(--hb-text-disabled);
5434
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-text-disabled) 25%, transparent);
4743
5435
  transition: background 0.3s, box-shadow 0.3s;
4744
5436
  }
4745
5437
  .hb_deploy_dot.dot_success {
4746
- background: #67c23a;
4747
- box-shadow: 0 0 0 2px rgba(103,194,58,0.3);
5438
+ background: var(--hb-color-success);
5439
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-success) 30%, transparent);
4748
5440
  }
4749
5441
  .hb_deploy_dot.dot_warning {
4750
- background: #e6a23c;
4751
- box-shadow: 0 0 0 2px rgba(230,162,60,0.3);
5442
+ background: var(--hb-color-warning);
5443
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-warning) 30%, transparent);
4752
5444
  }
4753
5445
  .hb_deploy_dot.dot_danger {
4754
- background: #f56c6c;
4755
- box-shadow: 0 0 0 2px rgba(245,108,108,0.3);
5446
+ background: var(--hb-color-danger);
5447
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-danger) 30%, transparent);
4756
5448
  }
4757
5449
 
4758
5450
  /* ========== 节点搜索浮动栏 ========== */
@@ -4875,7 +5567,7 @@ ${m()}
4875
5567
  height: 52px;
4876
5568
  border-radius: 999px;
4877
5569
  background: var(--hb-border-strong, #d8dde8);
4878
- box-shadow: 0 0 0 1px rgba(255,255,255,0.78);
5570
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--hb-bg-panel) 78%, transparent);
4879
5571
  transform: translate(-50%, -50%);
4880
5572
  opacity: 0.48;
4881
5573
  transition: opacity 0.14s ease, background 0.14s ease, box-shadow 0.14s ease;
@@ -4900,7 +5592,7 @@ ${m()}
4900
5592
  .huanban_ai_assistant_resize_handle:focus-visible::before,
4901
5593
  .huanban_ai_assistant_host.is_resizing .huanban_ai_assistant_resize_handle::before {
4902
5594
  background: var(--hb-color-primary, #409eff);
4903
- box-shadow: 0 0 0 3px rgba(64, 158, 255, 0.16);
5595
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--hb-color-primary) 16%, transparent);
4904
5596
  opacity: 1;
4905
5597
  }
4906
5598
  .huanban_ai_assistant_resize_handle:hover::after,
@@ -4996,7 +5688,7 @@ ${m()}
4996
5688
  }
4997
5689
  .run_mode_switch button {
4998
5690
  height: 30px; padding: 0 12px; border: 1px solid var(--hb-border-color, #dcdfe6);
4999
- border-radius: 4px; background: #fff; color: var(--hb-text-secondary, #606266);
5691
+ border-radius: 4px; background: var(--hb-bg-input); color: var(--hb-text-secondary, #606266);
5000
5692
  cursor: pointer; font-size: 12px;
5001
5693
  }
5002
5694
  .run_mode_switch button.active {
@@ -5099,9 +5791,9 @@ ${m()}
5099
5791
  .run_ai_compact_warning {
5100
5792
  margin: 6px 14px 0;
5101
5793
  padding: 7px 9px;
5102
- border: 1px solid rgba(230, 162, 60, .34);
5794
+ border: 1px solid color-mix(in srgb, var(--hb-color-warning) 34%, transparent);
5103
5795
  border-radius: 6px;
5104
- background: rgba(230, 162, 60, .08);
5796
+ background: var(--hb-warning-soft);
5105
5797
  color: var(--hb-color-warning, #b88230);
5106
5798
  font-size: 12px;
5107
5799
  line-height: 1.45;
@@ -5303,7 +5995,7 @@ ${m()}
5303
5995
  cursor: text;
5304
5996
  }
5305
5997
  .hb_md_preview[contenteditable="true"]:focus {
5306
- box-shadow: inset 0 0 0 2px rgba(64, 158, 255, 0.14);
5998
+ box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 14%, transparent);
5307
5999
  }
5308
6000
  .hb_md_editor[data-md-mode="split"] .hb_md_body {
5309
6001
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
@@ -5427,18 +6119,18 @@ ${m()}
5427
6119
  }
5428
6120
  .run_ai_model_catalog_status[data-status="loading"] {
5429
6121
  color: var(--hb-color-primary, #409eff);
5430
- background: rgba(64, 158, 255, 0.06);
5431
- border-color: rgba(64, 158, 255, 0.18);
6122
+ background: var(--hb-info-soft);
6123
+ border-color: color-mix(in srgb, var(--hb-color-primary) 18%, transparent);
5432
6124
  }
5433
6125
  .run_ai_model_catalog_status[data-status="success"] {
5434
6126
  color: var(--hb-color-success, #67c23a);
5435
- background: rgba(103, 194, 58, 0.08);
5436
- border-color: rgba(103, 194, 58, 0.2);
6127
+ background: var(--hb-success-soft);
6128
+ border-color: color-mix(in srgb, var(--hb-color-success) 20%, transparent);
5437
6129
  }
5438
6130
  .run_ai_model_catalog_status[data-status="error"] {
5439
6131
  color: var(--hb-color-danger, #f56c6c);
5440
- background: rgba(245, 108, 108, 0.08);
5441
- border-color: rgba(245, 108, 108, 0.2);
6132
+ background: var(--hb-danger-soft);
6133
+ border-color: color-mix(in srgb, var(--hb-color-danger) 20%, transparent);
5442
6134
  }
5443
6135
  .run_ai_model_global_note {
5444
6136
  display: inline-block;
@@ -5581,15 +6273,15 @@ ${m()}
5581
6273
  }
5582
6274
  .run_ai_model_probe_status[data-status="loading"] {
5583
6275
  color: var(--hb-color-primary, #409eff);
5584
- background: rgba(64, 158, 255, 0.06);
6276
+ background: var(--hb-info-soft);
5585
6277
  }
5586
6278
  .run_ai_model_probe_status[data-status="success"] {
5587
6279
  color: var(--hb-color-success, #67c23a);
5588
- background: rgba(103, 194, 58, 0.08);
6280
+ background: var(--hb-success-soft);
5589
6281
  }
5590
6282
  .run_ai_model_probe_status[data-status="error"] {
5591
6283
  color: var(--hb-color-danger, #f56c6c);
5592
- background: rgba(245, 108, 108, 0.08);
6284
+ background: var(--hb-danger-soft);
5593
6285
  }
5594
6286
  .run_ai_model_diagnostics {
5595
6287
  border-bottom: 1px solid var(--hb-border-light, #ebeef5);
@@ -5681,9 +6373,9 @@ ${m()}
5681
6373
  align-items: center;
5682
6374
  gap: 5px;
5683
6375
  padding: 3px 8px;
5684
- border: 1px solid rgba(64, 158, 255, 0.22);
6376
+ border: 1px solid color-mix(in srgb, var(--hb-color-primary) 22%, transparent);
5685
6377
  border-radius: 999px;
5686
- background: rgba(64, 158, 255, 0.06);
6378
+ background: var(--hb-info-soft);
5687
6379
  color: var(--hb-color-primary, #409eff);
5688
6380
  cursor: pointer;
5689
6381
  font-size: 11px;
@@ -5745,9 +6437,9 @@ ${m()}
5745
6437
  .run_ai_model_profile {
5746
6438
  margin: 10px 10px 0;
5747
6439
  padding: 9px 10px;
5748
- border: 1px solid rgba(64, 158, 255, 0.16);
6440
+ border: 1px solid color-mix(in srgb, var(--hb-color-primary) 16%, transparent);
5749
6441
  border-radius: 6px;
5750
- background: rgba(64, 158, 255, 0.045);
6442
+ background: var(--hb-info-soft);
5751
6443
  }
5752
6444
  .run_ai_model_profile_empty {
5753
6445
  display: block;
@@ -5783,7 +6475,7 @@ ${m()}
5783
6475
  .run_ai_model_profile_badges span {
5784
6476
  max-width: 100%;
5785
6477
  padding: 2px 7px;
5786
- border: 1px solid rgba(64, 158, 255, 0.18);
6478
+ border: 1px solid color-mix(in srgb, var(--hb-color-primary) 18%, transparent);
5787
6479
  border-radius: 999px;
5788
6480
  background: var(--hb-bg-modal, #fff);
5789
6481
  color: var(--hb-color-primary, #409eff);
@@ -5854,9 +6546,9 @@ ${m()}
5854
6546
  }
5855
6547
  .run_ai_param_policy_backend {
5856
6548
  padding: 6px 8px;
5857
- border: 1px solid rgba(230, 162, 60, .34);
6549
+ border: 1px solid color-mix(in srgb, var(--hb-color-warning) 34%, transparent);
5858
6550
  border-radius: 6px;
5859
- background: rgba(230, 162, 60, .08);
6551
+ background: var(--hb-warning-soft);
5860
6552
  }
5861
6553
  .run_ai_param_field > span {
5862
6554
  min-width: 0;
@@ -5883,19 +6575,19 @@ ${m()}
5883
6575
  line-height: 16px;
5884
6576
  }
5885
6577
  .run_ai_param_field.run_ai_param_editable em {
5886
- background: rgba(103, 194, 58, 0.1);
6578
+ background: var(--hb-success-soft);
5887
6579
  color: var(--hb-color-success, #67c23a);
5888
6580
  }
5889
6581
  .run_ai_param_field.run_ai_param_omitted em {
5890
- background: rgba(144, 147, 153, 0.12);
6582
+ background: var(--hb-bg-tag);
5891
6583
  color: var(--hb-text-muted, #909399);
5892
6584
  }
5893
6585
  .run_ai_param_field.run_ai_param_fixed em {
5894
- background: rgba(64, 158, 255, 0.1);
6586
+ background: var(--hb-info-soft);
5895
6587
  color: var(--hb-color-primary, #409eff);
5896
6588
  }
5897
6589
  .run_ai_param_field.run_ai_param_unsupported em {
5898
- background: rgba(144, 147, 153, 0.12);
6590
+ background: var(--hb-bg-tag);
5899
6591
  color: var(--hb-text-muted, #909399);
5900
6592
  }
5901
6593
  .run_ai_param_field > small {
@@ -6067,7 +6759,7 @@ ${m()}
6067
6759
  .btn_cancel.success {
6068
6760
  color: var(--hb-color-success, #67c23a);
6069
6761
  border-color: var(--hb-color-success-light, #d1edc4);
6070
- background: rgba(103, 194, 58, 0.08);
6762
+ background: var(--hb-success-soft);
6071
6763
  }
6072
6764
  .run_ai_skills_meta {
6073
6765
  min-height: 24px;
@@ -6394,7 +7086,7 @@ ${m()}
6394
7086
  }
6395
7087
  .run_chat_message.assistant.streaming .run_chat_avatar {
6396
7088
  position: relative;
6397
- box-shadow: 0 0 0 0 rgba(64,158,255,0.22);
7089
+ box-shadow: 0 0 0 0 color-mix(in srgb, var(--hb-color-primary) 22%, transparent);
6398
7090
  animation: hb-ai-avatar-pulse 1.5s ease-in-out infinite;
6399
7091
  }
6400
7092
  .run_chat_message.user .run_chat_avatar {
@@ -6402,11 +7094,11 @@ ${m()}
6402
7094
  }
6403
7095
  .run_chat_bubble {
6404
7096
  max-width: min(760px, 86%); border: 1px solid var(--hb-border-light, #ebeef5);
6405
- border-radius: 8px; padding: 10px 12px; background: #fff;
7097
+ border-radius: 8px; padding: 10px 12px; background: var(--hb-bg-panel);
6406
7098
  color: var(--hb-text-primary, #303133); box-shadow: 0 1px 2px rgba(0,0,0,0.03);
6407
7099
  }
6408
7100
  .run_chat_message.user .run_chat_bubble {
6409
- background: var(--hb-color-primary-bg, #ecf5ff); border-color: #d9ecff;
7101
+ background: var(--hb-color-primary-bg, #ecf5ff); border-color: var(--hb-color-primary-light);
6410
7102
  }
6411
7103
  .run_chat_bubble_header {
6412
7104
  display: flex; align-items: center; gap: 8px;
@@ -6455,7 +7147,7 @@ ${m()}
6455
7147
  .run_chat_content.markdown-body code,
6456
7148
  .run_chat_reasoning_markdown.markdown-body code {
6457
7149
  font-family: Menlo, Monaco, Consolas, monospace; font-size: 0.92em;
6458
- padding: 1px 4px; background: rgba(175, 184, 193, 0.2); border-radius: 3px;
7150
+ padding: 1px 4px; background: var(--hb-code-bg); border-radius: 3px;
6459
7151
  }
6460
7152
  .run_chat_content.markdown-body a,
6461
7153
  .run_chat_reasoning_markdown.markdown-body a {
@@ -6552,7 +7244,7 @@ ${m()}
6552
7244
  }
6553
7245
  .run_chat_message.streaming .run_chat_bubble {
6554
7246
  border-color: var(--hb-color-primary, #409eff);
6555
- box-shadow: 0 0 0 1px rgba(64,158,255,0.10), 0 8px 20px rgba(64,158,255,0.10);
7247
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--hb-color-primary) 10%, transparent), 0 8px 20px color-mix(in srgb, var(--hb-color-primary) 10%, transparent);
6556
7248
  }
6557
7249
  .run_chat_thinking_indicator {
6558
7250
  display: inline-flex; align-items: center; gap: 6px;
@@ -6650,7 +7342,7 @@ ${m()}
6650
7342
  }
6651
7343
  .run_chat_popconfirm_confirm {
6652
7344
  border: 1px solid var(--hb-color-danger, #f56c6c); background: var(--hb-color-danger, #f56c6c);
6653
- color: #fff;
7345
+ color: var(--rg-btn-danger-text);
6654
7346
  }
6655
7347
  .run_chat_reasoning {
6656
7348
  margin: 8px 0; padding: 8px 10px; border-radius: 6px;
@@ -6662,11 +7354,11 @@ ${m()}
6662
7354
  }
6663
7355
  .run_chat_reasoning.error {
6664
7356
  border: 1px solid var(--hb-color-danger-light, #fbc4c4);
6665
- background: rgba(245, 108, 108, 0.06);
7357
+ background: var(--hb-danger-soft);
6666
7358
  }
6667
7359
  .run_chat_reasoning.cancel {
6668
7360
  border: 1px solid var(--hb-color-warning-light, #faecd8);
6669
- background: rgba(230, 162, 60, 0.08);
7361
+ background: var(--hb-warning-soft);
6670
7362
  }
6671
7363
  .run_chat_reasoning_header,
6672
7364
  .run_chat_sub_summary,
@@ -6723,7 +7415,7 @@ ${m()}
6723
7415
  .run_chat_thinking_state.success {
6724
7416
  border-color: var(--hb-color-success-light, #d1edc4);
6725
7417
  color: var(--hb-color-success, #67c23a);
6726
- background: rgba(103, 194, 58, 0.1);
7418
+ background: var(--hb-success-soft);
6727
7419
  }
6728
7420
  .run_chat_reasoning_state.error,
6729
7421
  .run_chat_thinking_state.error,
@@ -6731,7 +7423,7 @@ ${m()}
6731
7423
  .run_chat_thinking_state.cancel {
6732
7424
  border-color: var(--hb-color-danger-light, #fbc4c4);
6733
7425
  color: var(--hb-color-danger, #f56c6c);
6734
- background: rgba(245, 108, 108, 0.1);
7426
+ background: var(--hb-danger-soft);
6735
7427
  }
6736
7428
  .run_chat_progress {
6737
7429
  width: 60px; height: 4px; border-radius: 999px; overflow: hidden;
@@ -6739,7 +7431,7 @@ ${m()}
6739
7431
  }
6740
7432
  .run_chat_progress_fill {
6741
7433
  display: block; height: 100%; border-radius: inherit;
6742
- background: linear-gradient(90deg, var(--hb-color-primary, #409eff), #79bbff);
7434
+ background: linear-gradient(90deg, var(--hb-color-primary, #409eff), var(--hb-color-primary-light));
6743
7435
  transition: width 0.3s ease;
6744
7436
  }
6745
7437
  .run_chat_progress_text {
@@ -6789,11 +7481,11 @@ ${m()}
6789
7481
  }
6790
7482
  .run_chat_tool_item.error {
6791
7483
  border-color: var(--hb-color-danger-light, #fbc4c4);
6792
- background: rgba(245, 108, 108, 0.08);
7484
+ background: var(--hb-danger-soft);
6793
7485
  }
6794
7486
  .run_chat_tool_item.cancel {
6795
7487
  border-color: var(--hb-color-danger-light, #fbc4c4);
6796
- background: rgba(245, 108, 108, 0.06);
7488
+ background: var(--hb-danger-soft);
6797
7489
  }
6798
7490
  .run_chat_tool_header {
6799
7491
  display: block; background: var(--hb-bg-section, #fafafa);
@@ -6824,12 +7516,12 @@ ${m()}
6824
7516
  }
6825
7517
  .run_chat_tool_status.success {
6826
7518
  color: var(--hb-color-success, #67c23a); border-color: var(--hb-color-success-light, #d1edc4);
6827
- background: rgba(103, 194, 58, 0.1);
7519
+ background: var(--hb-success-soft);
6828
7520
  }
6829
7521
  .run_chat_tool_status.error,
6830
7522
  .run_chat_tool_status.cancel {
6831
7523
  color: var(--hb-color-danger, #f56c6c); border-color: var(--hb-color-danger-light, #fbc4c4);
6832
- background: rgba(245, 108, 108, 0.1);
7524
+ background: var(--hb-danger-soft);
6833
7525
  }
6834
7526
  .run_chat_tool_details {
6835
7527
  padding: 8px 10px; border-top: 1px solid var(--hb-border-light, #ebeef5);
@@ -6848,12 +7540,12 @@ ${m()}
6848
7540
  border-radius: 4px; padding: 8px;
6849
7541
  }
6850
7542
  .run_chat_tool_result pre {
6851
- background: rgba(103, 194, 58, 0.1);
7543
+ background: var(--hb-success-soft);
6852
7544
  border: 1px solid var(--hb-color-success-light, #d1edc4);
6853
7545
  border-radius: 4px; padding: 8px;
6854
7546
  }
6855
7547
  .run_chat_tool_error pre {
6856
- background: rgba(245, 108, 108, 0.1);
7548
+ background: var(--hb-danger-soft);
6857
7549
  border: 1px solid var(--hb-color-danger-light, #fbc4c4);
6858
7550
  color: var(--hb-color-danger, #f56c6c);
6859
7551
  border-radius: 4px; padding: 8px;
@@ -6932,7 +7624,7 @@ ${m()}
6932
7624
  .run_chat_rule_chain_btn.primary {
6933
7625
  border-color: var(--hb-color-primary, #409eff);
6934
7626
  background: var(--hb-color-primary, #409eff);
6935
- color: #fff;
7627
+ color: var(--rg-btn-primary-text);
6936
7628
  }
6937
7629
  .run_chat_footer {
6938
7630
  padding: 10px 12px; border-top: 1px solid var(--hb-border-light, #ebeef5);
@@ -6951,7 +7643,7 @@ ${m()}
6951
7643
  }
6952
7644
  .run_chat_input_wrapper:focus-within {
6953
7645
  border-color: var(--hb-color-primary, #409eff);
6954
- box-shadow: 0 0 0 2px rgba(64,158,255,0.12);
7646
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 12%, transparent);
6955
7647
  }
6956
7648
  .run_chat_input {
6957
7649
  flex: 1 1 auto;
@@ -6987,7 +7679,7 @@ ${m()}
6987
7679
  border: 1px solid var(--hb-color-danger, #f56c6c);
6988
7680
  border-radius: 999px;
6989
7681
  background: var(--hb-color-danger, #f56c6c);
6990
- color: #fff;
7682
+ color: var(--rg-btn-primary-text);
6991
7683
  cursor: pointer;
6992
7684
  }
6993
7685
  .run_chat_send_btn.primary {
@@ -7158,7 +7850,7 @@ ${m()}
7158
7850
  .btn_run_execute {
7159
7851
  display: flex; align-items: center; gap: 6px;
7160
7852
  padding: 8px 18px; border: none; border-radius: var(--hb-radius-sm, 4px);
7161
- background: var(--hb-color-primary, #409eff); color: #fff; cursor: pointer; font-size: 13px; font-weight: 500;
7853
+ background: var(--hb-color-primary, #409eff); color: var(--rg-btn-primary-text); cursor: pointer; font-size: 13px; font-weight: 500;
7162
7854
  transition: all 0.2s;
7163
7855
  }
7164
7856
  .btn_run_execute:hover { opacity: 0.85; }
@@ -7171,7 +7863,7 @@ ${m()}
7171
7863
  .btn_run_notify:hover { background: var(--hb-bg-hover, #f5f5f5); }
7172
7864
  .btn_cancel.danger {
7173
7865
  color: var(--hb-color-danger, #f56c6c);
7174
- border-color: rgba(245, 108, 108, 0.35);
7866
+ border-color: color-mix(in srgb, var(--hb-color-danger) 35%, transparent);
7175
7867
  }
7176
7868
  .run_node_scope {
7177
7869
  display: grid;
@@ -7258,7 +7950,7 @@ ${m()}
7258
7950
  }
7259
7951
  .run_body_mode_switch button {
7260
7952
  border: 1px solid var(--hb-border-color, #dcdfe6);
7261
- background: #fff;
7953
+ background: var(--hb-bg-input);
7262
7954
  color: var(--hb-text-secondary, #606266);
7263
7955
  border-radius: 4px;
7264
7956
  padding: 4px 10px;
@@ -7268,7 +7960,7 @@ ${m()}
7268
7960
  .run_body_mode_switch button.active {
7269
7961
  border-color: var(--hb-color-primary, #409eff);
7270
7962
  background: var(--hb-color-primary, #409eff);
7271
- color: #fff;
7963
+ color: var(--rg-btn-primary-text);
7272
7964
  }
7273
7965
  .run_dynamic_form {
7274
7966
  display: flex;
@@ -7305,18 +7997,18 @@ ${m()}
7305
7997
  }
7306
7998
  .run_dynamic_array textarea.invalid {
7307
7999
  border-color: var(--hb-color-danger, #f56c6c);
7308
- box-shadow: 0 0 0 1px rgba(245, 108, 108, 0.16);
8000
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--hb-color-danger) 16%, transparent);
7309
8001
  }
7310
8002
  .run_warning {
7311
- padding: 8px 10px; border: 1px solid #f5dab1; background: #fdf6ec;
7312
- color: #b88230; border-radius: 4px; font-size: 12px; line-height: 1.5;
8003
+ padding: 8px 10px; border: 1px solid color-mix(in srgb, var(--hb-color-warning) 40%, transparent); background: var(--hb-warning-soft);
8004
+ color: var(--hb-color-warning); border-radius: 4px; font-size: 12px; line-height: 1.5;
7313
8005
  }
7314
8006
  .run_replay_notice {
7315
8007
  display: flex;
7316
8008
  align-items: flex-start;
7317
8009
  gap: 8px;
7318
8010
  padding: 8px 10px;
7319
- border: 1px solid rgba(64, 158, 255, 0.25);
8011
+ border: 1px solid color-mix(in srgb, var(--hb-color-primary) 25%, transparent);
7320
8012
  background: var(--hb-color-primary-bg, #ecf5ff);
7321
8013
  color: var(--hb-color-primary, #409eff);
7322
8014
  border-radius: 4px;
@@ -7368,7 +8060,7 @@ ${m()}
7368
8060
  .run_history_pagination select,
7369
8061
  .run_history_page_size_custom input {
7370
8062
  height: 28px; border: 1px solid var(--hb-border-color, #dcdfe6); border-radius: 4px;
7371
- padding: 0 6px; font-size: 12px; color: var(--hb-text-primary, #303133); background: #fff;
8063
+ padding: 0 6px; font-size: 12px; color: var(--hb-text-primary, #303133); background: var(--hb-bg-input);
7372
8064
  }
7373
8065
  .run_history_page_size_custom {
7374
8066
  display: inline-flex;
@@ -7388,7 +8080,7 @@ ${m()}
7388
8080
  .run_history_item {
7389
8081
  display: grid; grid-template-columns: 150px 88px minmax(0,1fr) 90px; gap: 8px; align-items: center;
7390
8082
  width: 100%; text-align: left; border: 1px solid var(--hb-border-light, #ebeef5);
7391
- background: #fff; border-radius: 4px; padding: 8px 10px; cursor: default;
8083
+ background: var(--hb-bg-panel); border-radius: 4px; padding: 8px 10px; cursor: default;
7392
8084
  color: var(--hb-text-primary, #303133);
7393
8085
  }
7394
8086
  .run_history_item.remote {
@@ -7429,7 +8121,7 @@ ${m()}
7429
8121
  }
7430
8122
  .run_history_action:focus-visible,
7431
8123
  .run_history_msg_action:focus-visible {
7432
- outline: 2px solid rgba(64, 158, 255, 0.35);
8124
+ outline: 2px solid color-mix(in srgb, var(--hb-color-primary) 35%, transparent);
7433
8125
  outline-offset: 2px;
7434
8126
  border-radius: 3px;
7435
8127
  }
@@ -7449,7 +8141,7 @@ ${m()}
7449
8141
  }
7450
8142
  .run_history_log_item {
7451
8143
  border: 1px solid var(--hb-border-light, #ebeef5); border-radius: 6px; overflow: hidden;
7452
- background: #fff;
8144
+ background: var(--hb-bg-panel);
7453
8145
  }
7454
8146
  .run_history_log_title {
7455
8147
  display: grid; grid-template-columns: minmax(100px, 1fr) 90px 72px 60px 64px; gap: 8px; align-items: center;
@@ -7529,7 +8221,7 @@ ${m()}
7529
8221
  overflow: hidden;
7530
8222
  border: 1px solid var(--hb-border-color, #dcdfe6);
7531
8223
  border-radius: 10px;
7532
- background: #fff;
8224
+ background: var(--hb-bg-modal);
7533
8225
  box-shadow: 0 24px 70px rgba(15, 23, 42, 0.28);
7534
8226
  color: var(--hb-text-primary, #303133);
7535
8227
  }
@@ -7556,7 +8248,7 @@ ${m()}
7556
8248
  margin-left: auto;
7557
8249
  border: 1px solid var(--hb-border-color, #dcdfe6);
7558
8250
  border-radius: 6px;
7559
- background: #fff;
8251
+ background: var(--hb-bg-input);
7560
8252
  color: var(--hb-text-secondary, #606266);
7561
8253
  cursor: pointer;
7562
8254
  font-size: 18px;
@@ -7586,7 +8278,7 @@ ${m()}
7586
8278
  padding: 8px 14px;
7587
8279
  border-bottom: 1px solid var(--hb-border-light, #ebeef5);
7588
8280
  color: var(--hb-text-secondary, #606266);
7589
- background: #fff;
8281
+ background: var(--hb-bg-panel);
7590
8282
  font-size: 12px;
7591
8283
  }
7592
8284
  .huanban_json_viewer_textarea {
@@ -7598,8 +8290,8 @@ ${m()}
7598
8290
  border: 0;
7599
8291
  outline: none;
7600
8292
  padding: 14px 16px;
7601
- background: #0f172a;
7602
- color: #dbeafe;
8293
+ background: var(--hb-code-bg);
8294
+ color: var(--hb-code-text);
7603
8295
  font-size: 12px;
7604
8296
  line-height: 18px;
7605
8297
  font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;
@@ -7625,8 +8317,8 @@ ${m()}
7625
8317
  line-height: 1.5;
7626
8318
  }
7627
8319
  .run_integration_content code {
7628
- display: block; padding: 6px 8px; border-radius: 4px; background: #f6f8fa;
7629
- color: #1f2937; font-family: Menlo, Monaco, Consolas, monospace; font-size: 12px;
8320
+ display: block; padding: 6px 8px; border-radius: 4px; background: var(--hb-code-bg);
8321
+ color: var(--hb-code-text); font-family: Menlo, Monaco, Consolas, monospace; font-size: 12px;
7630
8322
  white-space: pre-wrap; word-break: break-all;
7631
8323
  }
7632
8324
  /* 输入区 Tab */
@@ -7726,7 +8418,7 @@ ${m()}
7726
8418
  height: 22px;
7727
8419
  border-radius: var(--hb-radius-sm, 4px);
7728
8420
  background: var(--hb-color-primary, #409eff);
7729
- color: #fff;
8421
+ color: var(--rg-btn-primary-text);
7730
8422
  font-size: 11px;
7731
8423
  font-weight: 700;
7732
8424
  letter-spacing: 0;
@@ -7762,7 +8454,7 @@ ${m()}
7762
8454
  }
7763
8455
  .code_textarea:focus { border-color: var(--hb-color-primary, #409eff); }
7764
8456
  .code_output {
7765
- background: #1e1e2e; color: #cdd6f4;
8457
+ background: var(--hb-code-bg); color: var(--hb-code-text);
7766
8458
  font-family: 'Menlo','Monaco','Consolas',monospace;
7767
8459
  font-size: 12px; line-height: 1.6; padding: 12px 16px; margin: 0;
7768
8460
  border-radius: var(--hb-radius-sm, 4px); white-space: pre-wrap; word-break: break-all;
@@ -7771,19 +8463,20 @@ ${m()}
7771
8463
  .code_output.full_editor {
7772
8464
  flex: 1 1 auto; min-height: 100%; max-height: none; box-sizing: border-box;
7773
8465
  }
7774
- .code_output .t_out { color: #a6e3a1; font-weight: 700; }
7775
- .code_output .t_err { color: #f38ba8; font-weight: 700; }
8466
+ .code_output .t_out { color: var(--hb-code-string); font-weight: 700; }
8467
+ .code_output .t_err { color: var(--hb-color-danger); font-weight: 700; }
7776
8468
 
7777
8469
  /* ========== 只读拓扑诊断 ========== */
7778
8470
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_diagnostics {
7779
- --hb-tool-color: #b45309;
7780
- --hb-tool-border: rgba(180, 83, 9, 0.34);
8471
+ --hb-tool-color: var(--hb-color-warning);
8472
+ --hb-tool-border: color-mix(in srgb, var(--hb-color-warning) 34%, transparent);
7781
8473
  position: relative;
7782
8474
  }
7783
8475
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_count {
7784
8476
  position: absolute;
7785
8477
  top: -5px;
7786
8478
  right: -5px;
8479
+ z-index: 2;
7787
8480
  min-width: 14px;
7788
8481
  height: 14px;
7789
8482
  padding: 0 3px;
@@ -7794,7 +8487,7 @@ ${m()}
7794
8487
  border: 1px solid var(--hb-bg-toolbar, #fff);
7795
8488
  border-radius: 7px;
7796
8489
  background: var(--hb-color-danger, #ef4444);
7797
- color: #fff;
8490
+ color: var(--rg-btn-danger-text);
7798
8491
  font-size: 9px;
7799
8492
  font-weight: 700;
7800
8493
  line-height: 1;
@@ -7903,18 +8596,18 @@ ${m()}
7903
8596
  align-items: center;
7904
8597
  justify-content: center;
7905
8598
  border-radius: 50%;
7906
- background: #fff7ed;
7907
- color: #b45309;
8599
+ background: var(--hb-warning-soft);
8600
+ color: var(--hb-color-warning);
7908
8601
  font-size: 11px;
7909
8602
  font-weight: 700;
7910
8603
  }
7911
8604
  .hb_diagnostic_error .hb_diagnostic_icon {
7912
- background: #fef2f2;
7913
- color: #dc2626;
8605
+ background: var(--hb-danger-soft);
8606
+ color: var(--hb-color-danger);
7914
8607
  }
7915
8608
  .hb_diagnostic_info .hb_diagnostic_icon {
7916
- background: #eff6ff;
7917
- color: #2563eb;
8609
+ background: var(--hb-info-soft);
8610
+ color: var(--hb-color-primary);
7918
8611
  }
7919
8612
  .hb_diagnostic_content {
7920
8613
  min-width: 0;
@@ -7939,7 +8632,7 @@ ${m()}
7939
8632
  }
7940
8633
  .hb_diagnostic_marker .lf-node-content,
7941
8634
  .hb_diagnostic_marker .lf-edge {
7942
- filter: drop-shadow(0 0 3px rgba(245, 158, 11, 0.9));
8635
+ filter: drop-shadow(0 0 3px color-mix(in srgb, var(--hb-color-warning) 90%, transparent));
7943
8636
  }
7944
8637
 
7945
8638
  /* ========== 共享命令、节点选择与文档浮层 ========== */
@@ -8381,15 +9074,15 @@ ${m()}
8381
9074
  overflow: auto;
8382
9075
  border: 1px solid var(--hb-border-light, #e5e7eb);
8383
9076
  border-radius: 5px;
8384
- background: #111827;
8385
- color: #e5e7eb;
9077
+ background: var(--hb-code-bg);
9078
+ color: var(--hb-code-text);
8386
9079
  font: 12px/1.6 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
8387
9080
  }
8388
9081
  .hb_docs_article code {
8389
9082
  padding: 1px 4px;
8390
9083
  border-radius: 3px;
8391
9084
  background: var(--hb-bg-section, #f3f4f6);
8392
- color: #b42318;
9085
+ color: var(--hb-code-keyword);
8393
9086
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
8394
9087
  }
8395
9088
  .hb_docs_article pre code { padding: 0; background: transparent; color: inherit; }
@@ -8466,7 +9159,7 @@ ${m()}
8466
9159
  /* ========== 通用 btn_primary / btn_cancel ========== */
8467
9160
  .btn_primary {
8468
9161
  padding: 8px 20px; border: 1px solid var(--hb-color-primary, #409eff); border-radius: var(--hb-radius-sm, 4px);
8469
- background: var(--hb-color-primary, #409eff); color: #fff; cursor: pointer; font-size: 13px; transition: opacity 0.2s;
9162
+ background: var(--hb-color-primary, #409eff); color: var(--rg-btn-primary-text); cursor: pointer; font-size: 13px; transition: opacity 0.2s;
8470
9163
  }
8471
9164
  .btn_primary:hover { opacity: 0.85; }
8472
9165
  .btn_cancel {
@@ -8478,7 +9171,7 @@ ${m()}
8478
9171
 
8479
9172
  /* ========================================================================
8480
9173
  现代主题 (data-theme="modern") — 节点 & 画布视觉增强
8481
- 参考 RuleChainEditor.vue 的节点设计风格:
9174
+ 设计重点:
8482
9175
  - 节点更大圆角 (10px)
8483
9176
  - 选中蓝色发光 (#3b82f6 glow)
8484
9177
  - 端口从方块变为圆形, hover 放大变蓝
@@ -8489,7 +9182,7 @@ ${m()}
8489
9182
  /* --- 侧边栏节点块: 大圆角 + 轻柔阴影 --- */
8490
9183
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_node_block {
8491
9184
  border-radius: var(--hb-node-radius, 10px);
8492
- border-color: rgba(0,0,0,0.1);
9185
+ border-color: var(--hb-border-color);
8493
9186
  transition: box-shadow 0.15s, transform 0.12s;
8494
9187
  }
8495
9188
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_node_block:hover {
@@ -8546,47 +9239,47 @@ ${m()}
8546
9239
 
8547
9240
  /* --- 侧边栏分组头: 圆润 --- */
8548
9241
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_group_header {
8549
- border-bottom: 1px solid rgba(0,0,0,0.04);
9242
+ border-bottom: 1px solid var(--hb-border-light);
8550
9243
  font-size: 11px;
8551
9244
  font-weight: 700;
8552
9245
  text-transform: uppercase;
8553
9246
  letter-spacing: 0.04em;
8554
9247
  }
8555
9248
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_group_header:hover {
8556
- background: rgba(59,130,246,0.04);
9249
+ background: var(--hb-bg-hover);
8557
9250
  }
8558
9251
 
8559
9252
  /* --- 侧边栏搜索框: 圆润边框 --- */
8560
9253
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_sidebar_search input {
8561
- border: 1px solid rgba(0,0,0,0.08);
9254
+ border: 1px solid var(--hb-border-color);
8562
9255
  border-radius: var(--hb-radius-sm, 7px);
8563
9256
  padding: 6px 10px;
8564
9257
  transition: border-color 0.15s, box-shadow 0.15s;
8565
9258
  }
8566
9259
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_sidebar_search input:focus {
8567
9260
  border-color: var(--hb-color-primary, #3b82f6);
8568
- box-shadow: 0 0 0 2px rgba(59,130,246,0.12);
9261
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--hb-color-primary) 12%, transparent);
8569
9262
  }
8570
9263
 
8571
9264
  /* --- 工具栏按钮: 圆润 + hover 微调 --- */
8572
9265
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_toolbar {
8573
- border-bottom-color: rgba(0,0,0,0.06);
9266
+ border-bottom-color: var(--hb-border-light);
8574
9267
  }
8575
9268
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_toolbar button {
8576
- border-color: rgba(0,0,0,0.08);
9269
+ border-color: var(--hb-border-color);
8577
9270
  border-radius: var(--hb-radius-sm, 7px);
8578
9271
  font-weight: 600;
8579
9272
  transition: all 0.12s;
8580
9273
  }
8581
9274
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_toolbar button:hover {
8582
- background: rgba(59,130,246,0.06);
8583
- border-color: rgba(59,130,246,0.15);
9275
+ background: var(--hb-bg-hover);
9276
+ border-color: color-mix(in srgb, var(--hb-color-primary) 15%, transparent);
8584
9277
  color: var(--hb-color-primary, #3b82f6);
8585
9278
  }
8586
9279
 
8587
9280
  /* --- 底部状态栏: 极淡边框 --- */
8588
9281
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_status {
8589
- border-top-color: rgba(0,0,0,0.06);
9282
+ border-top-color: var(--hb-border-light);
8590
9283
  background: var(--hb-bg-root, #f8fafc);
8591
9284
  }
8592
9285
 
@@ -8827,15 +9520,18 @@ ${m()}
8827
9520
  grid-template-columns: minmax(0, 1fr);
8828
9521
  }
8829
9522
  }
8830
- `, document.head.appendChild(r);
9523
+ `, e.textContent += J, document.head.appendChild(e);
8831
9524
  }
8832
9525
  export {
8833
- n as E,
8834
- i as T,
8835
- x as a,
8836
- f as b,
8837
- _ as c,
8838
- k as g,
8839
- z as i,
8840
- w as n
9526
+ S as E,
9527
+ _ as T,
9528
+ Z as a,
9529
+ T as b,
9530
+ B as c,
9531
+ rr as d,
9532
+ G as e,
9533
+ U as f,
9534
+ X as g,
9535
+ or as i,
9536
+ v as n
8841
9537
  };