@huanban/rulego-editor-core 1.4.2 → 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-DFhXz0vB.js → editor-core-styles-CwjFPfAo.js} +967 -510
  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 +2856 -2086
  86. package/dist/index.d.ts +33 -10
  87. package/dist/index.esm.js +1182 -810
  88. package/dist/index.umd.js +2850 -2080
  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 +1 -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 +4 -0
  145. package/dist/standalone/variable-completion-dropdown.d.ts +18 -0
  146. package/dist/types/component.d.ts +22 -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-Cls7lcgT.js +0 -11302
  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 L } from "./vendor-logicflow-core-runtime-Cp6IBEjB.js";
2
- import { l as T } from "./vendor-logicflow-shared-C7YynLDn.js";
3
- const I = 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 I = 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(e) {
39
+ function B(e) {
40
40
  const t = {};
41
- return Object.entries(I).forEach(([a, r]) => {
41
+ return Object.entries(q).forEach(([a, r]) => {
42
42
  t[`${e}-${a}`] = r;
43
43
  }), t;
44
44
  }
45
- const k = 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
- }), O = 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
- }), D = `:root {
70
- ${Object.keys(k).map((e) => ` ${O[e]}: ${k[e]};`).join(`
71
- `)}
72
- }`, $ = R("--hb"), h = {
45
+ const F = B("--hb"), _ = {
73
46
  /* ==================== 默认亮色 ==================== */
74
47
  default: {
75
48
  label: "经典",
@@ -116,45 +89,6 @@ ${Object.keys(k).map((e) => ` ${O[e]}: ${k[e]};`).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: "自然",
@@ -340,7 +274,7 @@ ${Object.keys(k).map((e) => ` ${O[e]}: ${k[e]};`).join(`
340
274
  }
341
275
  }
342
276
  };
343
- function _(e) {
277
+ function f(e) {
344
278
  return {
345
279
  "--hb-bg-root": e.root,
346
280
  "--hb-bg-toolbar": e.toolbar,
@@ -387,9 +321,52 @@ function _(e) {
387
321
  "--hb-edge-hover-stroke": e.primary
388
322
  };
389
323
  }
390
- const v = /* @__PURE__ */ new Set(["dark", "tech", "vscode"]);
391
- function j(e) {
392
- const t = h[e], a = (t == null ? void 0 : t.vars) || {}, r = v.has(e), i = a["--hb-color-primary"] || "#409eff", d = a["--hb-text-muted"] || "#909399", l = a["--hb-bg-toolbar"] || "#ffffff";
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";
393
370
  return {
394
371
  "--hb-canvas-grid-color": a["--hb-canvas-grid-color"] || (r ? "rgba(148,163,184,0.22)" : "rgba(100,116,139,0.16)"),
395
372
  "--hb-canvas-grid-size": a["--hb-canvas-grid-size"] || "20px",
@@ -401,10 +378,11 @@ function j(e) {
401
378
  "--hb-node-border": a["--hb-node-border"] || a["--hb-border-color"] || "#dcdfe6",
402
379
  "--hb-node-shadow-offset": a["--hb-node-shadow-offset"] || "2px",
403
380
  "--hb-node-shadow-color": a["--hb-node-shadow-color"] || (r ? "rgba(0,0,0,0.34)" : "rgba(15,23,42,0.14)"),
404
- "--hb-node-icon-bg": a["--hb-node-icon-bg"] || (r ? "rgba(255,255,255,0.08)" : "rgba(15,23,42,0.06)"),
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)"),
405
383
  "--hb-node-icon-divider": a["--hb-node-icon-divider"] || (r ? "rgba(255,255,255,0.16)" : "rgba(15,23,42,0.10)"),
406
384
  "--hb-node-text": a["--hb-node-text"] || a["--hb-text-primary"] || "#333333",
407
- "--hb-port-fill": a["--hb-port-fill"] || l,
385
+ "--hb-port-fill": a["--hb-port-fill"] || p,
408
386
  "--hb-port-stroke": a["--hb-port-stroke"] || d,
409
387
  "--hb-port-radius": a["--hb-port-radius"] || (e === "modern" || e === "apple" ? "50%" : "3px"),
410
388
  "--hb-port-hover-fill": a["--hb-port-hover-fill"] || i,
@@ -412,15 +390,15 @@ function j(e) {
412
390
  "--hb-edge-stroke": a["--hb-edge-stroke"] || d,
413
391
  "--hb-edge-hover-stroke": a["--hb-edge-hover-stroke"] || i,
414
392
  "--hb-edge-selected-stroke": a["--hb-edge-selected-stroke"] || i,
415
- "--hb-edge-label-bg": a["--hb-edge-label-bg"] || l,
393
+ "--hb-edge-label-bg": a["--hb-edge-label-bg"] || p,
416
394
  "--hb-edge-label-color": a["--hb-edge-label-color"] || a["--hb-text-secondary"] || d
417
395
  };
418
396
  }
419
397
  function o(e, t, a) {
420
398
  return e[t] || a;
421
399
  }
422
- function q(e) {
423
- const t = u(e), a = h[t], r = { ...a == null ? void 0 : a.vars, ...j(t) }, i = o(r, "--hb-color-primary", "#409eff"), d = o(r, "--hb-color-danger", "#f56c6c"), l = o(r, "--hb-color-warning", "#e6a23c"), f = o(r, "--hb-color-success", "#67c23a"), p = o(r, "--hb-text-muted", "#909399"), b = o(r, "--hb-text-primary", "#333333"), g = o(r, "--hb-text-secondary", "#606266"), n = o(r, "--hb-bg-toolbar", "#ffffff");
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");
424
402
  return {
425
403
  "--rg-bg-primary": o(r, "--hb-bg-root", n),
426
404
  "--rg-bg-secondary": o(r, "--hb-bg-section", n),
@@ -429,8 +407,8 @@ function q(e) {
429
407
  "--rg-bg-active": o(r, "--hb-bg-active", n),
430
408
  "--rg-bg-overlay": o(r, "--hb-overlay", "rgba(0,0,0,0.3)"),
431
409
  "--rg-text-primary": b,
432
- "--rg-text-secondary": g,
433
- "--rg-text-tertiary": p,
410
+ "--rg-text-secondary": x,
411
+ "--rg-text-tertiary": h,
434
412
  "--rg-text-inverse": "#ffffff",
435
413
  "--rg-text-link": i,
436
414
  "--rg-text-link-hover": i,
@@ -452,7 +430,7 @@ function q(e) {
452
430
  "--rg-canvas-grid-color": o(r, "--hb-canvas-grid-color", "#e8eaee"),
453
431
  "--rg-canvas-grid-size": o(r, "--hb-canvas-grid-size", "20px"),
454
432
  "--rg-node-filter-bg": o(r, "--hb-bg-tag", n),
455
- "--rg-node-filter-border": l,
433
+ "--rg-node-filter-border": p,
456
434
  "--rg-node-filter-text": b,
457
435
  "--rg-node-transform-bg": o(r, "--hb-color-primary-bg", n),
458
436
  "--rg-node-transform-border": i,
@@ -461,7 +439,7 @@ function q(e) {
461
439
  "--rg-node-action-border": d,
462
440
  "--rg-node-action-text": b,
463
441
  "--rg-node-external-bg": o(r, "--hb-bg-tag", n),
464
- "--rg-node-external-border": l,
442
+ "--rg-node-external-border": p,
465
443
  "--rg-node-external-text": b,
466
444
  "--rg-node-flow-bg": o(r, "--hb-color-primary-bg", n),
467
445
  "--rg-node-flow-border": i,
@@ -474,16 +452,20 @@ function q(e) {
474
452
  "--rg-node-shadow-hover": o(r, "--hb-shadow-lg", "0 8px 28px rgba(0,0,0,0.15)"),
475
453
  "--rg-node-shadow-selected": o(r, "--hb-node-selected-shadow", `0 0 0 2px ${i}`),
476
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),
477
459
  "--rg-node-selected-filter": o(r, "--hb-node-selected-filter", "none"),
478
460
  "--rg-node-width": "120px",
479
461
  "--rg-node-min-height": "30px",
480
462
  "--rg-node-font-size": o(r, "--hb-font-size-base", "13px"),
481
- "--rg-edge-color": o(r, "--hb-edge-stroke", p),
463
+ "--rg-edge-color": o(r, "--hb-edge-stroke", h),
482
464
  "--rg-edge-color-hover": o(r, "--hb-edge-hover-stroke", i),
483
465
  "--rg-edge-color-selected": o(r, "--hb-edge-selected-stroke", i),
484
466
  "--rg-edge-width": "2px",
485
467
  "--rg-edge-label-bg": o(r, "--hb-edge-label-bg", n),
486
- "--rg-edge-label-color": o(r, "--hb-edge-label-color", g),
468
+ "--rg-edge-label-color": o(r, "--hb-edge-label-color", x),
487
469
  "--rg-edge-label-font-size": "11px",
488
470
  "--rg-toolbar-bg": n,
489
471
  "--rg-toolbar-border": o(r, "--hb-border-color", "#dcdfe6"),
@@ -491,7 +473,7 @@ function q(e) {
491
473
  "--rg-toolbar-btn-bg": "transparent",
492
474
  "--rg-toolbar-btn-bg-hover": o(r, "--hb-bg-hover", n),
493
475
  "--rg-toolbar-btn-bg-active": o(r, "--hb-bg-active", n),
494
- "--rg-toolbar-btn-color": g,
476
+ "--rg-toolbar-btn-color": x,
495
477
  "--rg-toolbar-btn-color-hover": i,
496
478
  "--rg-toolbar-btn-radius": o(r, "--hb-radius-sm", "6px"),
497
479
  "--rg-sidebar-bg": o(r, "--hb-bg-sidebar", n),
@@ -508,7 +490,7 @@ function q(e) {
508
490
  "--rg-input-border": o(r, "--hb-border-color", "#dcdfe6"),
509
491
  "--rg-input-border-focus": i,
510
492
  "--rg-input-text": b,
511
- "--rg-input-placeholder": p,
493
+ "--rg-input-placeholder": h,
512
494
  "--rg-input-shadow-focus": `0 0 0 3px ${i}33`,
513
495
  "--rg-btn-primary-bg": i,
514
496
  "--rg-btn-primary-bg-hover": i,
@@ -520,15 +502,15 @@ function q(e) {
520
502
  "--rg-btn-danger-bg": d,
521
503
  "--rg-btn-danger-bg-hover": d,
522
504
  "--rg-btn-danger-text": "#ffffff",
523
- "--rg-color-success": f,
524
- "--rg-color-warning": l,
505
+ "--rg-color-success": g,
506
+ "--rg-color-warning": p,
525
507
  "--rg-color-error": d,
526
508
  "--rg-color-info": i,
527
509
  // editor-ui 历史变量别名。保留别名可让纯 DOM UI 与 Core/standalone
528
510
  // 使用同一套主题,不再只在 light/dark 两套固定样式之间切换。
529
511
  "--rg-primary-color": i,
530
- "--rg-success-color": f,
531
- "--rg-warning-color": l,
512
+ "--rg-success-color": g,
513
+ "--rg-warning-color": p,
532
514
  "--rg-danger-color": d,
533
515
  "--rg-text-color": b,
534
516
  "--rg-border-color": o(r, "--hb-border-color", "#dcdfe6"),
@@ -536,86 +518,118 @@ function q(e) {
536
518
  "--rg-active-bg": o(r, "--hb-bg-active", n),
537
519
  "--rg-badge-bg": o(r, "--hb-bg-tag", n),
538
520
  "--rg-switch-off-bg": o(r, "--hb-text-disabled", "#c0c4cc"),
539
- "--rg-console-bg": x(t) ? "#10131a" : "#1f2937",
540
- "--rg-console-text": x(t) ? "#e5edf7" : "#f8fafc",
521
+ "--rg-console-bg": o(r, "--hb-bg-section", n),
522
+ "--rg-console-text": b,
541
523
  "--rg-transition-fast": o(r, "--hb-duration-fast", "100ms"),
542
524
  "--rg-transition-normal": o(r, "--hb-duration", "160ms"),
543
- "--rg-transition-slow": o(r, "--hb-duration-slow", "240ms")
525
+ "--rg-transition-slow": o(r, "--hb-duration-slow", "240ms"),
526
+ ...N(t)
544
527
  };
545
528
  }
546
- function x(e) {
547
- return v.has(u(e));
529
+ function M(e) {
530
+ return m.has(v(e));
548
531
  }
549
- function C(e) {
550
- const t = u(e), a = h[t], r = {
551
- ...$,
532
+ function T(e) {
533
+ const t = v(e), a = _[t], r = {
534
+ ...F,
552
535
  ...(a == null ? void 0 : a.vars) || {},
553
- ...j(t)
554
- }, i = q(t), d = o(r, "--hb-color-primary", "#409eff"), l = o(r, "--hb-color-success", "#67c23a"), f = o(r, "--hb-color-warning", "#e6a23c"), p = o(r, "--hb-color-danger", "#f56c6c"), b = o(r, "--hb-text-primary", "#303133"), g = o(r, "--hb-text-secondary", "#606266"), n = o(r, "--hb-text-muted", "#909399"), M = o(r, "--hb-text-disabled", "#c0c4cc"), s = o(r, "--hb-bg-toolbar", "#ffffff"), c = o(r, "--hb-bg-section", "#f8fafc"), m = o(r, "--hb-border-color", "#dcdfe6"), w = o(r, "--hb-border-light", "#ebeef5"), E = o(r, "--hb-radius-md", "8px"), y = o(r, "--hb-shadow-md", "0 4px 12px rgba(0,0,0,0.12)"), S = x(t) ? "#10131a" : "#f6f8fa";
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
+ ]));
555
559
  return {
556
560
  ...r,
557
561
  ...i,
558
- "--hb-bg-panel": s,
559
- "--hb-bg-muted": c,
560
- "--hb-border": m,
561
- "--hb-success": l,
562
- "--hb-warning": f,
563
- "--hb-danger": p,
564
- "--hb-warning-soft": o(r, "--hb-bg-tag", c),
565
- "--rge-bg": o(r, "--hb-bg-root", s),
566
- "--rge-surface": s,
567
- "--rge-surface-muted": c,
568
- "--rge-panel-bg": c,
569
- "--rge-toolbar-bg": s,
570
- "--rge-border": m,
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,
571
582
  "--rge-border-light": w,
572
583
  "--rge-text": b,
573
- "--rge-text-secondary": g,
584
+ "--rge-text-secondary": x,
574
585
  "--rge-text-muted": n,
575
- "--rge-text-disabled": M,
586
+ "--rge-text-disabled": O,
576
587
  "--rge-primary": d,
577
- "--rge-primary-soft": o(r, "--hb-color-primary-bg", c),
578
- "--rge-success": l,
579
- "--rge-warning": f,
580
- "--rge-danger": p,
581
- "--rge-danger-soft": `color-mix(in srgb, ${p} 10%, transparent)`,
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})`,
582
595
  "--rge-shadow-dropdown": y,
583
- "--rge-code-bg": S,
584
- "--rge-code-inline-bg": x(t) ? "rgba(255,255,255,0.08)" : "rgba(15,23,42,0.08)",
585
- "--huanban-rg-bg": o(r, "--hb-bg-root", s),
586
- "--huanban-rg-surface": c,
587
- "--huanban-rg-card": s,
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,
588
602
  "--huanban-rg-text": b,
589
- "--huanban-rg-text-secondary": g,
603
+ "--huanban-rg-text-secondary": x,
590
604
  "--huanban-rg-text-muted": n,
591
- "--huanban-rg-border": m,
605
+ "--huanban-rg-border": u,
592
606
  "--huanban-rg-border-soft": w,
593
607
  "--huanban-rg-primary": d,
594
- "--huanban-rg-danger": p,
595
- "--huanban-rg-success": l,
596
- "--huanban-rg-warning": f,
597
- "--huanban-rg-row-bg": s,
598
- "--huanban-rg-row-hover": o(r, "--hb-bg-hover", c),
599
- "--huanban-rg-input-bg": o(r, "--hb-bg-input", s),
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),
600
614
  "--huanban-rg-icon-bg": d,
601
615
  "--huanban-rg-shadow": y,
602
- "--huanban-rg-radius": E
616
+ "--huanban-rg-radius": I
603
617
  };
604
618
  }
605
- function X(e) {
606
- const t = u(e), a = h[t];
619
+ function Z(e) {
620
+ const t = v(e), a = _[t];
607
621
  return {
608
622
  name: t,
609
623
  label: (a == null ? void 0 : a.labelEn) || t,
610
- isDark: v.has(t),
611
- variables: C(t)
624
+ isDark: m.has(t),
625
+ variables: T(t)
612
626
  };
613
627
  }
614
- Object.assign(h, {
628
+ Object.assign(_, {
615
629
  colorful: {
616
630
  label: "彩色",
617
631
  labelEn: "Colorful",
618
- vars: _({
632
+ vars: f({
619
633
  root: "#f8fafc",
620
634
  toolbar: "#ffffff",
621
635
  sidebar: "#ffffff",
@@ -646,7 +660,7 @@ Object.assign(h, {
646
660
  "ant-blue": {
647
661
  label: "蚂蚁蓝",
648
662
  labelEn: "Ant Blue",
649
- vars: _({
663
+ vars: f({
650
664
  root: "#f0f7ff",
651
665
  toolbar: "#ffffff",
652
666
  sidebar: "#f7fbff",
@@ -680,7 +694,7 @@ Object.assign(h, {
680
694
  material: {
681
695
  label: "Material",
682
696
  labelEn: "Material",
683
- vars: _({
697
+ vars: f({
684
698
  root: "#f8fbff",
685
699
  toolbar: "#ffffff",
686
700
  sidebar: "#ffffff",
@@ -714,7 +728,7 @@ Object.assign(h, {
714
728
  tailwind: {
715
729
  label: "Tailwind",
716
730
  labelEn: "Tailwind",
717
- vars: _({
731
+ vars: f({
718
732
  root: "#f8fafc",
719
733
  toolbar: "#ffffff",
720
734
  sidebar: "#ffffff",
@@ -748,7 +762,7 @@ Object.assign(h, {
748
762
  github: {
749
763
  label: "GitHub",
750
764
  labelEn: "GitHub",
751
- vars: _({
765
+ vars: f({
752
766
  root: "#f6f8fa",
753
767
  toolbar: "#ffffff",
754
768
  sidebar: "#ffffff",
@@ -782,7 +796,7 @@ Object.assign(h, {
782
796
  vscode: {
783
797
  label: "VS Code",
784
798
  labelEn: "VS Code",
785
- vars: _({
799
+ vars: f({
786
800
  root: "#1e1e1e",
787
801
  toolbar: "#252526",
788
802
  sidebar: "#252526",
@@ -816,7 +830,7 @@ Object.assign(h, {
816
830
  apple: {
817
831
  label: "苹果",
818
832
  labelEn: "Apple",
819
- vars: _({
833
+ vars: f({
820
834
  root: "#f5f5f7",
821
835
  toolbar: "#ffffff",
822
836
  sidebar: "#fbfbfd",
@@ -848,7 +862,9 @@ Object.assign(h, {
848
862
  })
849
863
  }
850
864
  });
851
- const F = {
865
+ const P = {
866
+ // 暗夜主题已下线;保留兼容映射,避免旧配置渲染成不可读的暗色界面。
867
+ dark: "default",
852
868
  light: "default",
853
869
  classic: "default",
854
870
  blue: "tech",
@@ -861,15 +877,15 @@ const F = {
861
877
  "visual-studio-code": "vscode",
862
878
  mac: "apple",
863
879
  macos: "apple"
864
- };
865
- function u(e) {
880
+ }, E = "auto";
881
+ function v(e) {
866
882
  const t = String(e || "").trim().toLowerCase();
867
- return t ? Object.prototype.hasOwnProperty.call(h, t) ? t : F[t] || "default" : "default";
883
+ return t ? t === E ? E : Object.prototype.hasOwnProperty.call(_, t) ? t : P[t] || "default" : "default";
868
884
  }
869
- function Y() {
885
+ function H() {
870
886
  let e = "";
871
- for (const t of Object.keys(h)) {
872
- 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(C(t)).map(([i, d]) => ` ${i}: ${d};`).join(`
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(`
873
889
  `);
874
890
  e += `${a} {
875
891
  ${r}
@@ -879,26 +895,385 @@ ${r}
879
895
  }
880
896
  return e;
881
897
  }
882
- function V(e) {
898
+ function rr(e) {
883
899
  const t = e.toLowerCase().includes("en");
884
- return Object.entries(h).map(([a, r]) => ({
900
+ return Object.entries(_).map(([a, r]) => ({
885
901
  id: a,
886
902
  label: t ? r.labelEn : r.label
887
903
  }));
888
904
  }
889
- let z = !1;
890
- function N() {
891
- if (z) return;
892
- z = !0;
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;
893
1267
  const e = document.createElement("style");
894
1268
  e.id = "huanban_rulego_editor_styles", e.textContent = `
895
1269
  /* ========== LogicFlow 内置样式 ========== */
896
- ${L}
897
- ${T}
1270
+ ${A}
1271
+ ${Y}
898
1272
 
899
1273
  /* ========== 主题 CSS 变量 ========== */
900
- ${D}
901
- ${Y()}
1274
+ ${G}
1275
+ ${H()}
1276
+ ${K}
902
1277
 
903
1278
 
904
1279
  /* ========== 编辑器根容器 ========== */
@@ -915,6 +1290,37 @@ ${Y()}
915
1290
  --hb-ai-drawer-max-width: min(860px, 72vw);
916
1291
  --hb-ai-drawer-resize-handle-width: 24px;
917
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; }
918
1324
 
919
1325
  @media (prefers-reduced-motion: reduce) {
920
1326
  .huanban_rulego_editor_root,
@@ -954,10 +1360,10 @@ ${Y()}
954
1360
  transition: opacity 0.18s ease, transform 0.18s ease;
955
1361
  }
956
1362
  .huanban_rulego_editor_toast.is_error {
957
- 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);
958
1364
  }
959
1365
  .huanban_rulego_editor_toast.is_info {
960
- 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);
961
1367
  }
962
1368
  .huanban_rulego_editor_toast.is_hiding {
963
1369
  opacity: 0; transform: translateY(8px);
@@ -975,7 +1381,7 @@ ${Y()}
975
1381
  .hb_editor_tour_highlight {
976
1382
  position: absolute; border: 2px solid var(--hb-color-primary, #409eff);
977
1383
  border-radius: 6px; box-sizing: border-box;
978
- 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);
979
1385
  pointer-events: none;
980
1386
  }
981
1387
  .hb_editor_tour_panel {
@@ -1018,7 +1424,7 @@ ${Y()}
1018
1424
  }
1019
1425
  .hb_editor_tour_previous:disabled { opacity: 0.45; cursor: not-allowed; }
1020
1426
  .hb_editor_tour_next {
1021
- 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);
1022
1428
  }
1023
1429
 
1024
1430
  @media (max-width: 520px) {
@@ -1030,7 +1436,8 @@ ${Y()}
1030
1436
  display: flex; align-items: center; gap: var(--hb-space-xs, 6px);
1031
1437
  padding: 4px 10px; background: var(--hb-bg-toolbar, #fff);
1032
1438
  border-bottom: 1px solid var(--hb-border-strong, #ddd); flex-shrink: 0; flex-wrap: nowrap;
1033
- overflow-x: auto;
1439
+ overflow-x: auto; overflow-y: visible;
1440
+ position: relative;
1034
1441
  }
1035
1442
  .huanban_rulego_editor_toolbar h1 {
1036
1443
  font-size: var(--hb-font-size-lg, 14px); font-weight: var(--hb-weight-semibold, 600);
@@ -1216,6 +1623,15 @@ ${Y()}
1216
1623
  line-height: 20px; overflow: hidden; text-align: center;
1217
1624
  white-space: nowrap; text-overflow: ellipsis; user-select: none;
1218
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
+ }
1219
1635
 
1220
1636
  .huanban_rulego_editor_node_icon_area {
1221
1637
  position: absolute; top: 0; bottom: 0; left: 0; width: 30px;
@@ -1251,6 +1667,7 @@ ${Y()}
1251
1667
  transition: background var(--hb-duration-fast, 100ms) ease, border-color var(--hb-duration-fast, 100ms) ease, transform var(--hb-duration-fast, 100ms) ease;
1252
1668
  }
1253
1669
  .huanban_rulego_editor_port_output { left: auto; right: -6px; }
1670
+ [data-sidebar-label-lines="2"] .huanban_rulego_editor_port { top: calc(50% - 5px); }
1254
1671
  .huanban_rulego_editor_port:hover {
1255
1672
  background: var(--hb-port-hover-fill, var(--hb-color-primary, #409eff));
1256
1673
  border-color: var(--hb-port-hover-stroke, var(--hb-color-primary, #409eff));
@@ -1261,6 +1678,13 @@ ${Y()}
1261
1678
  .huanban_rulego_editor_canvas {
1262
1679
  flex: 1 1 auto; min-width: 0; position: relative; overflow: hidden; background: var(--hb-bg-canvas, #fff);
1263
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; }
1264
1688
  .hb-node-connection-status,
1265
1689
  .lf-edge .lf-line-text {
1266
1690
  transition: opacity 0.15s ease;
@@ -1332,7 +1756,7 @@ ${Y()}
1332
1756
  .hb_edge_label_quick_editor button.is_primary {
1333
1757
  border-color: var(--hb-color-primary, #409eff);
1334
1758
  background: var(--hb-color-primary, #409eff);
1335
- color: #fff;
1759
+ color: var(--rg-btn-primary-text);
1336
1760
  }
1337
1761
  .hb_edge_label_quick_close {
1338
1762
  width: 26px;
@@ -1369,13 +1793,11 @@ ${Y()}
1369
1793
  display: flex;
1370
1794
  align-items: center;
1371
1795
  gap: 4px;
1372
- padding: 0;
1796
+ padding: 4px 0;
1373
1797
  max-width: calc(100% - 24px);
1374
- flex-wrap: nowrap;
1375
- overflow-x: auto;
1376
- overflow-y: visible;
1798
+ flex-wrap: wrap;
1799
+ overflow: visible;
1377
1800
  pointer-events: auto;
1378
- scrollbar-width: none;
1379
1801
  }
1380
1802
  .huanban_rulego_editor_canvas_toolbar::-webkit-scrollbar {
1381
1803
  display: none;
@@ -1384,13 +1806,13 @@ ${Y()}
1384
1806
  width: 1px;
1385
1807
  height: 18px;
1386
1808
  margin: 0 2px;
1387
- background: rgba(148, 163, 184, 0.38);
1809
+ background: var(--hb-border-color, #dcdfe6);
1388
1810
  flex: 0 0 1px;
1389
1811
  }
1390
1812
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn {
1391
- --hb-tool-color: #4b5563;
1392
- --hb-tool-border: rgba(148, 163, 184, 0.42);
1393
- --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);
1394
1816
  width: 26px;
1395
1817
  height: 26px;
1396
1818
  min-width: 26px;
@@ -1403,7 +1825,7 @@ ${Y()}
1403
1825
  justify-content: center;
1404
1826
  padding: 0;
1405
1827
  cursor: pointer;
1406
- box-shadow: 0 1px 3px rgba(18, 26, 42, 0.10);
1828
+ box-shadow: var(--hb-shadow-sm);
1407
1829
  transition: background 0.14s ease, border-color 0.14s ease, color 0.14s ease, box-shadow 0.14s ease, transform 0.14s ease;
1408
1830
  position: relative;
1409
1831
  }
@@ -1418,8 +1840,10 @@ ${Y()}
1418
1840
  max-width: 180px;
1419
1841
  padding: 4px 7px;
1420
1842
  border-radius: 4px;
1421
- background: rgba(17, 24, 39, 0.94);
1422
- 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);
1423
1847
  font-size: 11px;
1424
1848
  line-height: 1.3;
1425
1849
  white-space: nowrap;
@@ -1441,7 +1865,7 @@ ${Y()}
1441
1865
  border: 2px solid var(--hb-bg-canvas, #fff);
1442
1866
  border-radius: 999px;
1443
1867
  background: var(--hb-color-danger, #f56c6c);
1444
- 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);
1445
1869
  }
1446
1870
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn svg {
1447
1871
  width: 12px !important;
@@ -1456,10 +1880,10 @@ ${Y()}
1456
1880
  height: 13px !important;
1457
1881
  }
1458
1882
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn:hover {
1459
- background: var(--hb-tool-color);
1883
+ background: var(--hb-bg-hover);
1460
1884
  border-color: var(--hb-tool-color);
1461
- color: #fff;
1462
- box-shadow: 0 5px 12px rgba(18, 26, 42, 0.15);
1885
+ color: var(--hb-tool-color);
1886
+ box-shadow: var(--hb-shadow-md);
1463
1887
  transform: translateY(-1px);
1464
1888
  }
1465
1889
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn.tb_active,
@@ -1472,8 +1896,8 @@ ${Y()}
1472
1896
  }
1473
1897
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn.tb_active:hover,
1474
1898
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn[aria-pressed="true"]:hover {
1475
- background: var(--hb-tool-color);
1476
- color: #fff;
1899
+ background: var(--hb-bg-active);
1900
+ color: var(--hb-tool-color);
1477
1901
  }
1478
1902
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn:active {
1479
1903
  transform: translateY(0);
@@ -1481,30 +1905,16 @@ ${Y()}
1481
1905
  }
1482
1906
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn:disabled,
1483
1907
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_btn[aria-disabled="true"] {
1484
- color: #b8bec8;
1485
- border-color: rgba(224, 228, 236, 0.95);
1486
- 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);
1487
1911
  cursor: not-allowed;
1488
1912
  box-shadow: none;
1489
1913
  transform: none;
1490
1914
  }
1491
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_info { --hb-tool-color: #2563eb; --hb-tool-border: rgba(37, 99, 235, 0.34); }
1492
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_ai { --hb-tool-color: #7c3aed; --hb-tool-border: rgba(124, 58, 237, 0.36); }
1493
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_monitor { --hb-tool-color: #0891b2; --hb-tool-border: rgba(8, 145, 178, 0.34); }
1494
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_clear_debug { --hb-tool-color: #d97706; --hb-tool-border: rgba(217, 119, 6, 0.34); }
1495
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_run { --hb-tool-color: #16a34a; --hb-tool-border: rgba(22, 163, 74, 0.34); }
1496
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_layout { --hb-tool-color: #4f46e5; --hb-tool-border: rgba(79, 70, 229, 0.34); }
1497
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_selection { --hb-tool-color: #0284c7; --hb-tool-border: rgba(2, 132, 199, 0.34); }
1498
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_zoom_out { --hb-tool-color: #334155; --hb-tool-border: rgba(51, 65, 85, 0.30); }
1499
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_zoom_in { --hb-tool-color: #334155; --hb-tool-border: rgba(51, 65, 85, 0.30); }
1500
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_fit { --hb-tool-color: #0f766e; --hb-tool-border: rgba(15, 118, 110, 0.34); }
1501
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_undo { --hb-tool-color: #64748b; --hb-tool-border: rgba(100, 116, 139, 0.30); }
1502
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_redo { --hb-tool-color: #64748b; --hb-tool-border: rgba(100, 116, 139, 0.30); }
1503
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_minimap { --hb-tool-color: #0f766e; --hb-tool-border: rgba(15, 118, 110, 0.34); }
1504
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_components { --hb-tool-color: #2563eb; --hb-tool-border: rgba(37, 99, 235, 0.34); }
1505
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_search { --hb-tool-color: #d97706; --hb-tool-border: rgba(217, 119, 6, 0.34); }
1506
- .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_theme { --hb-tool-color: #9333ea; --hb-tool-border: rgba(147, 51, 234, 0.34); }
1507
- .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); }
1508
1918
 
1509
1919
  /* ========== 侧边栏折叠按钮 ========== */
1510
1920
  .huanban_rulego_editor_sidebar_toggle {
@@ -1557,10 +1967,10 @@ ${Y()}
1557
1967
  }
1558
1968
  /* 运行记录按钮 */
1559
1969
  .huanban_rulego_editor_toolbar .tb_history {
1560
- color: #2980b9; border-color: #2980b9;
1970
+ color: var(--hb-color-primary); border-color: var(--hb-color-primary);
1561
1971
  }
1562
1972
  .huanban_rulego_editor_toolbar .tb_history:hover {
1563
- background: #eaf2f8; color: #1a5276;
1973
+ background: var(--hb-bg-hover); color: var(--hb-color-primary);
1564
1974
  }
1565
1975
 
1566
1976
  /* ========== 空状态 ========== */
@@ -1602,8 +2012,8 @@ ${Y()}
1602
2012
  to { transform: translateX(100%); }
1603
2013
  }
1604
2014
  @keyframes hb-ai-avatar-pulse {
1605
- 0%, 100% { box-shadow: 0 0 0 0 rgba(64,158,255,0.26); }
1606
- 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; }
1607
2017
  }
1608
2018
  @keyframes hb-ai-status-pulse {
1609
2019
  0%, 100% { opacity: 0.42; transform: scale(0.82); }
@@ -1654,7 +2064,7 @@ ${Y()}
1654
2064
  background: var(--hb-bg-hover, #f5f5f5);
1655
2065
  }
1656
2066
  .huanban_rulego_editor_drawer_header .drawer_header_actions .btn_primary {
1657
- 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);
1658
2068
  }
1659
2069
  .huanban_rulego_editor_drawer_header .drawer_header_actions .btn_primary:hover {
1660
2070
  opacity: 0.88;
@@ -1665,7 +2075,7 @@ ${Y()}
1665
2075
  border-radius: 4px; transition: all 0.2s ease;
1666
2076
  }
1667
2077
  .huanban_rulego_editor_drawer_header .close_btn:hover {
1668
- color: #fff; background: #e74c3c;
2078
+ color: var(--rg-btn-danger-text); background: var(--hb-color-danger);
1669
2079
  }
1670
2080
  .huanban_rulego_editor_drawer_body {
1671
2081
  flex: 1; overflow-y: auto; padding: 16px;
@@ -1695,7 +2105,7 @@ ${Y()}
1695
2105
  cursor: pointer; font-size: 13px; display: flex; align-items: center; gap: 6px;
1696
2106
  }
1697
2107
  .huanban_rulego_editor_drawer_footer .btn_primary {
1698
- 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);
1699
2109
  }
1700
2110
  .huanban_rulego_editor_drawer_footer .btn_primary:hover { opacity: 0.85; }
1701
2111
  .huanban_rulego_editor_drawer_footer .btn_cancel {
@@ -1744,14 +2154,14 @@ ${Y()}
1744
2154
  background: var(--hb-bg-hover, #f5f7fa);
1745
2155
  }
1746
2156
  .huanban_unsaved_guard_actions .btn_danger {
1747
- background: #fff; color: var(--hb-color-danger, #f56c6c);
1748
- 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);
1749
2159
  }
1750
2160
  .huanban_unsaved_guard_actions .btn_danger:hover {
1751
- color: #fff; background: var(--hb-color-danger, #f56c6c);
2161
+ color: var(--rg-btn-danger-text); background: var(--hb-color-danger, #f56c6c);
1752
2162
  }
1753
2163
  .huanban_unsaved_guard_actions .btn_primary {
1754
- color: #fff; background: var(--hb-color-primary, #409eff);
2164
+ color: var(--rg-btn-primary-text); background: var(--hb-color-primary, #409eff);
1755
2165
  border: 1px solid var(--hb-color-primary, #409eff);
1756
2166
  }
1757
2167
  .huanban_unsaved_guard_actions .btn_primary:hover {
@@ -1783,7 +2193,7 @@ ${Y()}
1783
2193
  .huanban_form_item textarea:focus,
1784
2194
  .huanban_form_item select:focus {
1785
2195
  border-color: var(--hb-color-primary, #409eff);
1786
- 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);
1787
2197
  }
1788
2198
  .huanban_form_item textarea { resize: vertical; min-height: 60px; }
1789
2199
  .huanban_form_item .desc_text {
@@ -1815,7 +2225,7 @@ ${Y()}
1815
2225
  .hb_segmented_option input { position: absolute; opacity: 0; pointer-events: none; }
1816
2226
  .hb_segmented_option span { display: block; width: 100%; padding: 7px 12px; text-align: center; }
1817
2227
  .hb_segmented_option.active {
1818
- color: #fff !important; background: var(--hb-color-primary, #409eff);
2228
+ color: var(--rg-btn-primary-text) !important; background: var(--hb-color-primary, #409eff);
1819
2229
  }
1820
2230
  .hb_ref_mode,
1821
2231
  .hb_provider_mode {
@@ -1848,12 +2258,12 @@ ${Y()}
1848
2258
  border-color: var(--hb-color-primary, #409eff); color: var(--hb-color-primary, #409eff);
1849
2259
  }
1850
2260
  .hb_datetime_toggle.active {
1851
- 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);
1852
2262
  }
1853
2263
  .hb_datetime_format {
1854
2264
  font-size: 11px; line-height: 1.4; color: var(--hb-text-muted, #999);
1855
2265
  }
1856
- /* === 多选标签选择器 (模拟 el-select multiple) === */
2266
+ /* Multi-value option control. */
1857
2267
  .multi_select_wrap {
1858
2268
  position: relative; width: 100%;
1859
2269
  }
@@ -1867,12 +2277,12 @@ ${Y()}
1867
2277
  }
1868
2278
  .multi_select_box:hover,
1869
2279
  .multi_select_box.active { border-color: var(--hb-color-primary, #409eff); }
1870
- .multi_select_box.is_error { border-color: #f56c6c; }
1871
- .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); }
1872
2282
  /* 下拉箭头 */
1873
2283
  .multi_select_arrow {
1874
2284
  position: absolute; right: 8px; top: 50%; transform: translateY(-50%);
1875
- font-size: 12px; color: #c0c4cc; transition: transform 0.3s;
2285
+ font-size: 12px; color: var(--hb-text-muted); transition: transform 0.3s;
1876
2286
  pointer-events: none;
1877
2287
  }
1878
2288
  .multi_select_box.active .multi_select_arrow { transform: translateY(-50%) rotate(180deg); }
@@ -1880,48 +2290,48 @@ ${Y()}
1880
2290
  .ms_tag {
1881
2291
  display: inline-flex; align-items: center; gap: 2px;
1882
2292
  padding: 0 6px; height: 22px; line-height: 22px;
1883
- background: #f0f2f5; border-radius: 3px;
1884
- 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;
1885
2295
  max-width: 200px; overflow: hidden; text-overflow: ellipsis;
1886
2296
  }
1887
2297
  .ms_tag_close {
1888
2298
  display: inline-flex; align-items: center; justify-content: center;
1889
2299
  width: 14px; height: 14px; border-radius: 50%; margin-left: 2px;
1890
- font-size: 10px; color: #909399; cursor: pointer; flex-shrink: 0;
2300
+ font-size: 10px; color: var(--hb-text-muted); cursor: pointer; flex-shrink: 0;
1891
2301
  transition: all 0.15s;
1892
2302
  }
1893
- .ms_tag_close:hover { background: #909399; color: #fff; }
2303
+ .ms_tag_close:hover { background: var(--hb-bg-active); color: var(--hb-text-primary); }
1894
2304
  /* 输入过滤 */
1895
2305
  .ms_filter_input {
1896
2306
  border: none; outline: none; background: none;
1897
- 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;
1898
2308
  padding: 0; margin: 0;
1899
2309
  }
1900
2310
  /* 占位文本 */
1901
2311
  .ms_placeholder {
1902
- color: #c0c4cc; font-size: 13px; pointer-events: none;
2312
+ color: var(--hb-text-muted); font-size: 13px; pointer-events: none;
1903
2313
  position: absolute; left: 8px; top: 50%; transform: translateY(-50%);
1904
2314
  }
1905
2315
  /* 下拉面板 */
1906
2316
  .ms_dropdown {
1907
2317
  position: absolute; left: 0; top: calc(100% + 4px); width: 100%;
1908
2318
  max-height: 200px; overflow-y: auto;
1909
- background: #fff; border: 1px solid #e4e7ed;
1910
- 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);
1911
2321
  z-index: 10003; display: none;
1912
2322
  }
1913
2323
  .ms_dropdown.show { display: block; }
1914
2324
  .ms_dropdown_item {
1915
- padding: 8px 12px; font-size: 13px; color: #606266;
2325
+ padding: 8px 12px; font-size: 13px; color: var(--hb-text-secondary);
1916
2326
  cursor: pointer; transition: background 0.15s;
1917
2327
  }
1918
- .ms_dropdown_item:hover { background: #f5f7fa; }
2328
+ .ms_dropdown_item:hover { background: var(--hb-bg-hover); }
1919
2329
  .ms_dropdown_item.selected { color: var(--hb-color-primary, #409eff); font-weight: 500; }
1920
2330
  /* 已被其他边占用的选项: 灰色 + 禁止光标 */
1921
- .ms_dropdown_item.disabled { color: #c0c4cc; cursor: not-allowed; background: #f5f7fa; }
1922
- .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); }
1923
2333
  .ms_dropdown_empty {
1924
- 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;
1925
2335
  }
1926
2336
  .hb_option_picker_inline {
1927
2337
  display: flex; align-items: stretch; gap: 8px; width: 100%;
@@ -1938,7 +2348,7 @@ ${Y()}
1938
2348
  .hb_option_picker_display:focus,
1939
2349
  .hb_option_picker_trigger:focus {
1940
2350
  outline: none; border-color: var(--hb-color-primary, #409eff);
1941
- 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);
1942
2352
  }
1943
2353
  .hb_option_picker_trigger {
1944
2354
  margin-top: 6px; height: 30px; padding: 0 10px;
@@ -1984,7 +2394,7 @@ ${Y()}
1984
2394
  }
1985
2395
  .hb_option_picker_search input:focus {
1986
2396
  outline: none; border-color: var(--hb-color-primary, #409eff);
1987
- 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);
1988
2398
  }
1989
2399
  .hb_option_picker_list {
1990
2400
  flex: 1; overflow: auto; padding: 8px; min-height: 180px;
@@ -1999,11 +2409,11 @@ ${Y()}
1999
2409
  }
2000
2410
  .hb_option_picker_item:hover { background: var(--hb-bg-hover, #f5f7fa); }
2001
2411
  .hb_option_picker_item.selected {
2002
- 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);
2003
2413
  color: var(--hb-color-primary, #409eff);
2004
2414
  }
2005
2415
  .hb_option_picker_item.disabled {
2006
- color: #c0c4cc; cursor: not-allowed; background: #f8fafc;
2416
+ color: var(--hb-text-disabled); cursor: not-allowed; background: var(--hb-bg-section);
2007
2417
  }
2008
2418
  .hb_option_picker_label,
2009
2419
  .hb_option_picker_value,
@@ -2039,7 +2449,7 @@ ${Y()}
2039
2449
  }
2040
2450
  /* 验证提示 */
2041
2451
  .ms_error_tip {
2042
- font-size: 12px; color: #f56c6c; margin-top: 4px; display: none;
2452
+ font-size: 12px; color: var(--hb-color-danger); margin-top: 4px; display: none;
2043
2453
  }
2044
2454
  .ms_error_tip.show { display: block; }
2045
2455
 
@@ -2065,7 +2475,7 @@ ${Y()}
2065
2475
  }
2066
2476
  .pair_item input[type="text"]:focus {
2067
2477
  border-color: var(--hb-color-primary, #409eff);
2068
- 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);
2069
2479
  }
2070
2480
  .btn_del {
2071
2481
  width: 26px; height: 26px; border: 1px solid var(--hb-border-color, #dcdfe6);
@@ -2075,7 +2485,7 @@ ${Y()}
2075
2485
  transition: all 0.2s;
2076
2486
  }
2077
2487
  .btn_del:hover {
2078
- background: #fef0f0; border-color: #f56c6c; color: #f56c6c;
2488
+ background: var(--hb-danger-soft); border-color: var(--hb-color-danger); color: var(--hb-color-danger);
2079
2489
  }
2080
2490
  .btn_add_pair {
2081
2491
  display: inline-flex; align-items: center; gap: 4px;
@@ -2086,7 +2496,7 @@ ${Y()}
2086
2496
  }
2087
2497
  .btn_add_pair:hover {
2088
2498
  border-color: var(--hb-color-primary, #409eff);
2089
- background: rgba(64, 158, 255, 0.06);
2499
+ background: var(--hb-bg-hover);
2090
2500
  }
2091
2501
  .hb_simple_array_editor { display: flex; flex-direction: column; gap: 7px; }
2092
2502
  .hb_array_tags { display: flex; flex-wrap: wrap; gap: 6px; min-width: 0; }
@@ -2121,7 +2531,7 @@ ${Y()}
2121
2531
  }
2122
2532
  .hb_nested_array_item input[type="text"]:focus {
2123
2533
  border-color: var(--hb-color-primary, #409eff);
2124
- 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);
2125
2535
  }
2126
2536
  .hb_nested_array_add {
2127
2537
  align-self: flex-start; margin-top: 0; padding: 4px 10px;
@@ -2131,7 +2541,7 @@ ${Y()}
2131
2541
  .huanban_rulego_editor_drawer_header .tag {
2132
2542
  display: inline-block; padding: 2px 8px; margin-left: 6px;
2133
2543
  font-size: 11px; font-weight: 400; color: var(--hb-color-primary, #409eff);
2134
- background: rgba(64, 158, 255, 0.1); border-radius: 3px;
2544
+ background: var(--hb-info-soft); border-radius: 3px;
2135
2545
  vertical-align: middle;
2136
2546
  }
2137
2547
 
@@ -2154,8 +2564,8 @@ ${Y()}
2154
2564
  /* === 校验错误提示 === */
2155
2565
  .validate_error_tip {
2156
2566
  display: none; padding: 8px 12px; margin-top: 10px;
2157
- background: #fef0f0; border: 1px solid #fbc4c4;
2158
- 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);
2159
2569
  font-size: 12px; line-height: 1.5;
2160
2570
  animation: hb_fadeIn 0.2s ease;
2161
2571
  }
@@ -2170,7 +2580,7 @@ ${Y()}
2170
2580
  padding: 2px 0;
2171
2581
  }
2172
2582
  .validate_error_tip .error_list li::before {
2173
- content: '• '; color: #e74c3c;
2583
+ content: '• '; color: var(--hb-color-danger);
2174
2584
  }
2175
2585
  .huanban_rulego_editor_drawer input[readonly] {
2176
2586
  border-style: dashed;
@@ -2204,7 +2614,7 @@ ${Y()}
2204
2614
  padding: 4px 8px; line-height: 1; border-radius: 4px; transition: all 0.2s ease;
2205
2615
  }
2206
2616
  .huanban_modal_header .close_btn:hover {
2207
- color: #fff; background: #e74c3c;
2617
+ color: var(--rg-btn-danger-text); background: var(--hb-color-danger);
2208
2618
  }
2209
2619
  .huanban_modal_search {
2210
2620
  padding: 12px 20px;
@@ -2235,13 +2645,13 @@ ${Y()}
2235
2645
  display: none; border: none; background: none; cursor: pointer; color: var(--hb-text-muted, #999);
2236
2646
  padding: 4px; border-radius: var(--hb-radius-sm, 4px); transition: all 0.2s; line-height: 1;
2237
2647
  }
2238
- .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); }
2239
2649
  .huanban_modal_item:hover .item_delete_btn { display: inline-flex; }
2240
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; }
2241
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; }
2242
- .badge_sub_chain { display: inline-block; padding: 1px 6px; font-size: 11px; background: #f0f0f0; color: #8c8c8c; border-radius: 3px; margin-left: 4px; }
2243
- .badge_disabled { display: inline-block; padding: 1px 6px; font-size: 11px; background: #fef0f0; color: #f56c6c; border-radius: 3px; margin-left: 4px; }
2244
- .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; }
2245
2655
  .huanban_modal_empty { text-align: center; padding: 40px 0; color: var(--hb-text-disabled, #c0c4cc); font-size: 14px; }
2246
2656
  .hb_diff_modal {
2247
2657
  width: min(1120px, 94vw);
@@ -2298,16 +2708,16 @@ ${Y()}
2298
2708
  }
2299
2709
  .hb_diff_notice {
2300
2710
  margin: 10px 16px 0;
2301
- border-color: rgba(230, 162, 60, 0.28);
2302
- 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);
2303
2713
  color: var(--hb-color-warning, #e6a23c);
2304
2714
  }
2305
2715
  .hb_diff_validation_error {
2306
2716
  margin: 10px 16px 0;
2307
2717
  padding: 10px 12px;
2308
- border: 1px solid rgba(245, 108, 108, 0.24);
2718
+ border: 1px solid color-mix(in srgb, var(--hb-color-danger) 24%, transparent);
2309
2719
  border-radius: 8px;
2310
- background: rgba(245, 108, 108, 0.08);
2720
+ background: var(--hb-danger-soft);
2311
2721
  color: var(--hb-color-danger, #f56c6c);
2312
2722
  font-size: 12px;
2313
2723
  line-height: 1.5;
@@ -2344,8 +2754,8 @@ ${Y()}
2344
2754
  overflow: auto;
2345
2755
  border: 1px solid var(--hb-border-light, #ebeef5);
2346
2756
  border-radius: 8px;
2347
- background: #0f172a;
2348
- color: #dbeafe;
2757
+ background: var(--hb-code-bg);
2758
+ color: var(--hb-code-text);
2349
2759
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
2350
2760
  font-size: 12px;
2351
2761
  line-height: 1.5;
@@ -2358,7 +2768,7 @@ ${Y()}
2358
2768
  .hb_diff_line_no,
2359
2769
  .hb_diff_line_mark {
2360
2770
  padding: 0 8px;
2361
- color: rgba(226, 232, 240, 0.5);
2771
+ color: var(--hb-code-gutter-text);
2362
2772
  text-align: right;
2363
2773
  user-select: none;
2364
2774
  }
@@ -2375,19 +2785,19 @@ ${Y()}
2375
2785
  }
2376
2786
  .hb_diff_line_meta,
2377
2787
  .hb_diff_line_hunk {
2378
- color: #93c5fd;
2379
- background: rgba(59, 130, 246, 0.16);
2788
+ color: var(--hb-color-primary);
2789
+ background: var(--hb-info-soft);
2380
2790
  }
2381
2791
  .hb_diff_line_added {
2382
- color: #bbf7d0;
2383
- background: rgba(22, 101, 52, 0.42);
2792
+ color: var(--hb-color-success);
2793
+ background: var(--hb-success-soft);
2384
2794
  }
2385
2795
  .hb_diff_line_removed {
2386
- color: #fecaca;
2387
- background: rgba(127, 29, 29, 0.48);
2796
+ color: var(--hb-color-danger);
2797
+ background: var(--hb-danger-soft);
2388
2798
  }
2389
2799
  .hb_diff_line_context {
2390
- color: #e2e8f0;
2800
+ color: var(--hb-code-text);
2391
2801
  }
2392
2802
  .hb_diff_delta {
2393
2803
  margin: 12px 16px 0;
@@ -2480,16 +2890,16 @@ ${Y()}
2480
2890
  font-size: 11px;
2481
2891
  font-weight: 700;
2482
2892
  }
2483
- .hb_diff_added { background: rgba(103, 194, 58, 0.12); color: var(--hb-color-success, #67c23a); }
2484
- .hb_diff_removed { background: rgba(245, 108, 108, 0.12); color: var(--hb-color-danger, #f56c6c); }
2485
- .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); }
2486
2896
  .hb_diff_empty {
2487
2897
  padding: 32px !important;
2488
2898
  color: var(--hb-text-muted, #909399) !important;
2489
2899
  text-align: center;
2490
2900
  }
2491
2901
 
2492
- /* === 官方风格设置弹窗 === */
2902
+ /* === Instance settings === */
2493
2903
  .huanban_settings_dialog {
2494
2904
  position: fixed; z-index: var(--hb-z-modal, 10021); top: 10px; left: 50%;
2495
2905
  transform: translateX(-50%);
@@ -2521,7 +2931,7 @@ ${Y()}
2521
2931
  background: transparent; color: var(--hb-text-muted, #909399);
2522
2932
  cursor: pointer; font-size: 20px; line-height: 1;
2523
2933
  }
2524
- .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); }
2525
2935
  .huanban_settings_body { flex: 1; display: grid; grid-template-columns: 168px minmax(0, 1fr); min-height: 0; }
2526
2936
  .huanban_settings_tabs {
2527
2937
  padding: 10px 8px; border-right: 1px solid var(--hb-border-light, #ebeef5);
@@ -2542,6 +2952,42 @@ ${Y()}
2542
2952
  min-width: 0; overflow: auto; padding: 16px;
2543
2953
  background: var(--hb-bg-main, #fff);
2544
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
+ }
2545
2991
  .huanban_settings_card {
2546
2992
  max-width: 720px; border: 1px solid var(--hb-border-light, #ebeef5);
2547
2993
  border-radius: 8px; background: var(--hb-bg-modal, #fff);
@@ -2579,7 +3025,7 @@ ${Y()}
2579
3025
  background: var(--hb-bg-input, #fff); color: var(--hb-text-primary, #303133);
2580
3026
  outline: none; font-size: 13px;
2581
3027
  }
2582
- .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); }
2583
3029
  .huanban_settings_checkbox {
2584
3030
  display: flex; align-items: center; gap: 8px; margin-top: 12px;
2585
3031
  min-height: 28px;
@@ -2663,7 +3109,7 @@ ${Y()}
2663
3109
  }
2664
3110
  .huanban_login_dialog input:focus {
2665
3111
  border-color: var(--hb-color-primary, #409eff);
2666
- 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);
2667
3113
  }
2668
3114
  .huanban_login_actions {
2669
3115
  justify-content: flex-end;
@@ -2694,7 +3140,7 @@ ${Y()}
2694
3140
  }
2695
3141
  .huanban_login_inline input:focus {
2696
3142
  border-color: var(--hb-color-primary, #409eff);
2697
- 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);
2698
3144
  }
2699
3145
  .huanban_login_host_entry {
2700
3146
  display: flex;
@@ -2793,7 +3239,7 @@ ${Y()}
2793
3239
  }
2794
3240
  .huanban_chain_selector_tabs button {
2795
3241
  flex: 1; height: 30px; border: 1px solid var(--hb-border-color, #dcdfe6);
2796
- background: #fff; color: var(--hb-text-secondary, #606266);
3242
+ background: var(--hb-bg-input); color: var(--hb-text-secondary, #606266);
2797
3243
  border-radius: 4px; cursor: pointer; font-size: 12px;
2798
3244
  }
2799
3245
  .huanban_chain_selector_tabs button.active {
@@ -2826,7 +3272,7 @@ ${Y()}
2826
3272
  .route_settings_modal .modal_title svg { color: var(--hb-color-primary, #409eff); }
2827
3273
  .route_settings_modal .modal_node_badge {
2828
3274
  display: inline-block; padding: 2px 10px; font-size: 11px; font-weight: 400;
2829
- 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);
2830
3276
  border-radius: 12px; max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
2831
3277
  }
2832
3278
  .route_settings_modal .modal_close_btn {
@@ -2834,7 +3280,7 @@ ${Y()}
2834
3280
  color: var(--hb-text-muted, #999); padding: 4px 8px; line-height: 1;
2835
3281
  border-radius: 4px; transition: all 0.2s ease;
2836
3282
  }
2837
- .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); }
2838
3284
  .route_settings_modal .modal_body {
2839
3285
  flex: 1; overflow-y: auto; padding: 16px 20px; min-height: 200px;
2840
3286
  }
@@ -2850,7 +3296,7 @@ ${Y()}
2850
3296
  .route_settings_modal .modal_footer .btn_cancel:hover { background: var(--hb-bg-hover, #f5f5f5); }
2851
3297
  .route_settings_modal .modal_footer .btn_primary {
2852
3298
  padding: 7px 18px; border: 1px solid var(--hb-color-primary, #409eff); border-radius: var(--hb-radius-sm, 4px);
2853
- 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;
2854
3300
  transition: all 0.15s;
2855
3301
  }
2856
3302
  .route_settings_modal .modal_footer .btn_primary:hover { opacity: 0.85; }
@@ -2885,7 +3331,7 @@ ${Y()}
2885
3331
  background: transparent; color: var(--hb-color-primary, #409eff); cursor: pointer; font-size: 12px;
2886
3332
  transition: all 0.2s;
2887
3333
  }
2888
- .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; }
2889
3335
 
2890
3336
  /* 路由条目行 */
2891
3337
  .route_list { display: flex; flex-direction: column; gap: 10px; }
@@ -2907,7 +3353,7 @@ ${Y()}
2907
3353
  color: var(--hb-text-muted, #c0c4cc); padding: 2px 4px; border-radius: 4px;
2908
3354
  transition: all 0.15s; display: flex; align-items: center;
2909
3355
  }
2910
- .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); }
2911
3357
  .route_row_body { padding: 12px; }
2912
3358
 
2913
3359
  /* 路由表单控件 */
@@ -2923,7 +3369,7 @@ ${Y()}
2923
3369
  color: var(--hb-text-primary, #333); background: var(--hb-bg-input, #fff);
2924
3370
  box-sizing: border-box; outline: none; transition: border-color 0.2s;
2925
3371
  }
2926
- .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); }
2927
3373
  .route_select {
2928
3374
  width: 100%; padding: 7px 10px; border: 1px solid var(--hb-border-color, #dcdfe6);
2929
3375
  border-radius: var(--hb-radius-sm, 4px); font-size: 13px;
@@ -2953,12 +3399,12 @@ ${Y()}
2953
3399
  .route_settings_trigger {
2954
3400
  display: inline-flex; align-items: center; gap: 6px;
2955
3401
  padding: 6px 14px; border: 1px solid var(--hb-color-primary, #409eff);
2956
- 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);
2957
3403
  color: var(--hb-color-primary, #409eff); cursor: pointer; font-size: 13px;
2958
3404
  transition: all 0.2s; margin-top: 6px;
2959
3405
  }
2960
3406
  .route_settings_trigger:hover {
2961
- 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);
2962
3408
  }
2963
3409
  .route_settings_trigger svg { width: 14px; height: 14px; }
2964
3410
 
@@ -2971,7 +3417,7 @@ ${Y()}
2971
3417
  padding: 6px 14px; font-size: 13px; border-radius: var(--hb-radius-sm, 4px);
2972
3418
  cursor: pointer; transition: all 0.15s; border: none;
2973
3419
  }
2974
- .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); }
2975
3421
  .btn_primary:hover { opacity: 0.85; }
2976
3422
 
2977
3423
  /* 路由列表表格 */
@@ -3040,7 +3486,7 @@ ${Y()}
3040
3486
  border-radius: 4px; transition: all 0.15s;
3041
3487
  }
3042
3488
  .route_action_btn:hover { background: var(--hb-bg-hover, #f0f2f5); color: var(--hb-color-primary, #409eff); }
3043
- .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); }
3044
3490
 
3045
3491
  /* === 路由编辑表单弹窗 (二层弹窗) === */
3046
3492
  .route_form_modal {
@@ -3091,7 +3537,7 @@ ${Y()}
3091
3537
  }
3092
3538
  .route_switch_slider::before {
3093
3539
  content: ''; position: absolute; width: 18px; height: 18px;
3094
- left: 2px; bottom: 2px; background: #fff; border-radius: 50%;
3540
+ left: 2px; bottom: 2px; background: var(--rg-text-inverse); border-radius: 50%;
3095
3541
  transition: transform 0.3s;
3096
3542
  }
3097
3543
  .route_switch input:checked + .route_switch_slider { background: var(--hb-color-success, #13ce66); }
@@ -3106,13 +3552,13 @@ ${Y()}
3106
3552
  font-family: 'Menlo', 'Monaco', 'Consolas', monospace;
3107
3553
  transition: border-color 0.2s;
3108
3554
  }
3109
- .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); }
3110
3556
  .route_schema_textarea { min-height: 200px; }
3111
3557
  .route_schema_value { display: none; }
3112
3558
  .route_schema_editor_wrap {
3113
3559
  border: 1px solid var(--hb-border-color, #dcdfe6);
3114
3560
  border-radius: var(--hb-radius-sm, 4px);
3115
- overflow: hidden; background: #1f2430;
3561
+ overflow: hidden; background: var(--hb-code-bg);
3116
3562
  }
3117
3563
  .route_schema_code_editor { min-height: 300px; }
3118
3564
  .route_schema_fullscreen {
@@ -3148,7 +3594,7 @@ ${Y()}
3148
3594
  background: var(--hb-bg-input, #fff); font-size: 12px;
3149
3595
  }
3150
3596
  .route_cron_weekdays input:checked + span {
3151
- color: #fff; border-color: var(--hb-color-primary, #409eff);
3597
+ color: var(--rg-btn-primary-text); border-color: var(--hb-color-primary, #409eff);
3152
3598
  background: var(--hb-color-primary, #409eff);
3153
3599
  }
3154
3600
  .route_cron_preview {
@@ -3193,7 +3639,7 @@ ${Y()}
3193
3639
 
3194
3640
  /* 输入框错误状态 */
3195
3641
  .route_input_error { border-color: var(--hb-color-danger, #f56c6c) !important; }
3196
- .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; }
3197
3643
  .route_error_tip {
3198
3644
  min-height: 16px; margin-top: 4px;
3199
3645
  color: var(--hb-color-danger, #f56c6c); font-size: 12px; line-height: 16px;
@@ -3263,16 +3709,16 @@ ${Y()}
3263
3709
  .hb_point_table th { position: sticky; top: 0; z-index: 1; background: var(--hb-bg-section, #f8f9fb); color: var(--hb-text-secondary, #606266); }
3264
3710
  .hb_point_table .hb_point_check { width: 30px; text-align: center; }
3265
3711
  .hb_point_table .hb_point_actions { width: 78px; text-align: center; white-space: nowrap; }
3266
- .hb_point_table tr.is-duplicate { background: rgba(245, 108, 108, .08); }
3712
+ .hb_point_table tr.is-duplicate { background: var(--hb-danger-soft); }
3267
3713
  .hb_point_table .rge-form-input { min-width: 90px; padding: 4px 6px; }
3268
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; }
3269
- .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); }
3270
3716
  .hb_point_table .hb_point_detail_row > td { padding: 10px; background: var(--hb-bg-section, #f8f9fb); text-align: left; }
3271
3717
  .hb_point_detail_grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px; }
3272
3718
  .hb_point_detail_field { display: flex; flex-direction: column; gap: 5px; min-width: 0; color: var(--hb-text-secondary, #606266); font-size: 12px; }
3273
3719
  .hb_point_detail_field small { color: var(--hb-text-secondary, #909399); line-height: 1.4; }
3274
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; }
3275
- .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); }
3276
3722
  .hb_point_empty { padding: 20px; text-align: center; color: var(--hb-text-muted, #909399); font-size: 12px; }
3277
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; }
3278
3724
  .hb_point_pagination { display: flex; align-items: center; justify-content: flex-end; gap: 8px; color: var(--hb-text-secondary, #606266); font-size: 12px; }
@@ -3339,7 +3785,7 @@ ${Y()}
3339
3785
  .hb_struct_child select:focus,
3340
3786
  .hb_struct_child textarea:focus {
3341
3787
  border-color: var(--hb-color-primary, #409eff);
3342
- 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);
3343
3789
  }
3344
3790
  .hb_struct_switch {
3345
3791
  display: flex;
@@ -3389,7 +3835,7 @@ ${Y()}
3389
3835
  padding: 0 10px;
3390
3836
  border: 1px solid var(--hb-border-color, #dcdfe6);
3391
3837
  border-radius: var(--hb-radius-sm, 4px);
3392
- background: #fff;
3838
+ background: var(--hb-bg-input);
3393
3839
  color: var(--hb-text-secondary, #606266);
3394
3840
  cursor: pointer;
3395
3841
  font-size: 12px;
@@ -3429,9 +3875,9 @@ ${Y()}
3429
3875
  align-items: center;
3430
3876
  height: 20px;
3431
3877
  padding: 0 6px;
3432
- border: 1px solid rgba(16, 24, 40, 0.14);
3878
+ border: 1px solid var(--hb-border-color);
3433
3879
  border-radius: 5px;
3434
- background: #fff;
3880
+ background: var(--hb-bg-panel);
3435
3881
  color: var(--hb-color-primary, #409eff);
3436
3882
  font-size: 10px;
3437
3883
  font-weight: 700;
@@ -3489,7 +3935,7 @@ ${Y()}
3489
3935
  .hb_expr_condition select:focus,
3490
3936
  .hb_expr_code:focus {
3491
3937
  border-color: var(--hb-color-primary, #409eff);
3492
- 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);
3493
3939
  }
3494
3940
  .hb_expr_delete {
3495
3941
  width: 26px;
@@ -3497,7 +3943,7 @@ ${Y()}
3497
3943
  margin-top: 4px;
3498
3944
  border: 1px solid var(--hb-border-color, #dcdfe6);
3499
3945
  border-radius: var(--hb-radius-sm, 4px);
3500
- background: #fff;
3946
+ background: var(--hb-bg-input);
3501
3947
  color: var(--hb-text-muted, #909399);
3502
3948
  cursor: pointer;
3503
3949
  }
@@ -3505,7 +3951,7 @@ ${Y()}
3505
3951
  .hb_expr_group_actions button.danger:hover {
3506
3952
  border-color: var(--hb-color-danger, #f56c6c);
3507
3953
  color: var(--hb-color-danger, #f56c6c);
3508
- background: #fef0f0;
3954
+ background: var(--hb-danger-soft);
3509
3955
  }
3510
3956
  .hb_expr_delete.invisible {
3511
3957
  visibility: hidden;
@@ -3523,7 +3969,7 @@ ${Y()}
3523
3969
  padding: 0 10px;
3524
3970
  border: 1px solid var(--hb-border-color, #dcdfe6);
3525
3971
  border-radius: var(--hb-radius-sm, 4px);
3526
- background: #fff;
3972
+ background: var(--hb-bg-input);
3527
3973
  color: var(--hb-text-secondary, #606266);
3528
3974
  cursor: pointer;
3529
3975
  font-size: 12px;
@@ -3592,7 +4038,7 @@ ${Y()}
3592
4038
  .hb_switch_case:focus,
3593
4039
  .hb_switch_then:focus {
3594
4040
  border-color: var(--hb-color-primary, #409eff);
3595
- 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);
3596
4042
  }
3597
4043
  .hb_switch_delete {
3598
4044
  width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center;
@@ -3699,11 +4145,11 @@ ${Y()}
3699
4145
  }
3700
4146
  .hb_rule_chain_action button {
3701
4147
  padding: 5px 12px; border: 1px solid var(--hb-color-primary, #409eff);
3702
- 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;
3703
4149
  }
3704
4150
  .hb_selected_badge {
3705
4151
  display: inline-flex; align-items: center; justify-content: center;
3706
- 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;
3707
4153
  }
3708
4154
  .hb_rule_chain_empty { padding: 80px 0; text-align: center; color: var(--hb-text-muted, #909399); }
3709
4155
  .hb_rule_chain_modal_footer,
@@ -3783,7 +4229,7 @@ ${Y()}
3783
4229
  background: var(--hb-color-primary-bg, #ecf5ff); font-size: 12px;
3784
4230
  }
3785
4231
  .hb_builtin_tool_card.disabled .hb_builtin_tool_action {
3786
- color: #67c23a; background: #f0f9eb;
4232
+ color: var(--hb-color-success); background: var(--hb-success-soft);
3787
4233
  }
3788
4234
  .hb_builtin_tool_empty {
3789
4235
  grid-column: 1 / -1; display: flex; align-items: center; justify-content: center;
@@ -3794,7 +4240,7 @@ ${Y()}
3794
4240
  }
3795
4241
  .hb_builtin_tool_pagination button {
3796
4242
  height: 28px; padding: 0 10px; border: 1px solid var(--hb-border-color, #dcdfe6);
3797
- 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;
3798
4244
  }
3799
4245
  .hb_builtin_tool_pagination button:disabled {
3800
4246
  cursor: not-allowed; color: var(--hb-text-muted, #909399); background: var(--hb-bg-section, #fafbfc);
@@ -3877,7 +4323,7 @@ ${Y()}
3877
4323
  }
3878
4324
  .hb_tool_rulechain_picker button {
3879
4325
  height: 32px; padding: 0 12px; border: 1px solid var(--hb-color-primary, #409eff);
3880
- 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);
3881
4327
  cursor: pointer; white-space: nowrap;
3882
4328
  }
3883
4329
  .hb_tool_rulechain_picker button:hover {
@@ -3888,8 +4334,8 @@ ${Y()}
3888
4334
  border-radius: 11px; background: var(--hb-bg-section, #f5f7fa); color: var(--hb-text-secondary, #606266);
3889
4335
  font-size: 12px;
3890
4336
  }
3891
- .hb_tool_type_builtin { background: #f0f9eb; color: #67c23a; }
3892
- .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); }
3893
4339
  .hb_tools_actions { display: flex; justify-content: center; gap: 6px; padding: 4px !important; white-space: nowrap; }
3894
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; }
3895
4341
  .hb_tools_actions button.danger { color: var(--hb-color-danger, #f56c6c); }
@@ -3923,7 +4369,7 @@ ${Y()}
3923
4369
  }
3924
4370
  .hb_schema_mode button {
3925
4371
  height: 26px; padding: 0 12px; border: 1px solid var(--hb-border-color, #dcdfe6);
3926
- 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);
3927
4373
  cursor: pointer; font-size: 12px;
3928
4374
  }
3929
4375
  .hb_schema_mode button.active {
@@ -3960,7 +4406,7 @@ ${Y()}
3960
4406
  .hb_schema_table input[type="checkbox"] { width: 16px; height: 16px; }
3961
4407
  .hb_schema_table button {
3962
4408
  padding: 3px 8px; border: 1px solid var(--hb-border-color, #dcdfe6);
3963
- 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;
3964
4410
  }
3965
4411
  .hb_schema_drag_handle {
3966
4412
  width: 24px;
@@ -4300,20 +4746,24 @@ ${Y()}
4300
4746
  border: 1px solid var(--hb-border-light, #eee);
4301
4747
  padding: 3px 4px;
4302
4748
  gap: 2px;
4303
- transform: translate(-50%, -100%);
4749
+ transform: translate(-50%, var(--hb-operate-shift-y, -100%));
4304
4750
  animation: hb_operateIn 0.15s ease-out;
4305
4751
  }
4306
4752
  @keyframes hb_operateIn {
4307
- from { opacity: 0; transform: translate(-50%, -100%) scale(0.9) translateY(4px); }
4308
- 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); }
4309
4755
  }
4310
4756
  /* 底部小三角指示器 */
4311
4757
  .huanban_node_operate::after {
4312
- 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%);
4313
4759
  width: 0; height: 0;
4314
4760
  border-left: 5px solid transparent; border-right: 5px solid transparent;
4315
4761
  border-top: 5px solid var(--hb-bg-modal, #fff);
4316
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
+ }
4317
4767
  .huanban_node_operate .oper-btn {
4318
4768
  background: none; border: none; cursor: pointer;
4319
4769
  width: 28px; height: 28px;
@@ -4359,12 +4809,12 @@ ${Y()}
4359
4809
  }
4360
4810
  /* 删除按钮特殊 hover */
4361
4811
  .huanban_node_operate .oper-btn.del-btn:hover {
4362
- background: #fef0f0;
4812
+ background: var(--hb-danger-soft);
4363
4813
  color: var(--hb-color-danger, #f56c6c);
4364
4814
  }
4365
4815
  .huanban_node_operate .oper-btn.run-single-btn:hover {
4366
- background: #fdf6ec;
4367
- color: #e6a23c;
4816
+ background: var(--hb-warning-soft);
4817
+ color: var(--hb-color-warning);
4368
4818
  }
4369
4819
  /* 操作栏分隔线 */
4370
4820
  .huanban_node_operate .oper-sep {
@@ -4397,7 +4847,7 @@ ${Y()}
4397
4847
  background: var(--hb-bg-hover, #f0f2f5);
4398
4848
  }
4399
4849
  .huanban_context_menu .ctx_item.ctx_danger:hover {
4400
- background: #fef0f0; color: var(--hb-color-danger, #f56c6c);
4850
+ background: var(--hb-danger-soft); color: var(--hb-color-danger, #f56c6c);
4401
4851
  }
4402
4852
  .huanban_context_menu .ctx_item.is_disabled,
4403
4853
  .huanban_context_menu .ctx_item:disabled {
@@ -4533,7 +4983,7 @@ ${Y()}
4533
4983
  }
4534
4984
  .debug_view_btn_error:hover,
4535
4985
  .debug_view_btn_error:focus-visible {
4536
- background: #fef0f0;
4986
+ background: var(--hb-danger-soft);
4537
4987
  border-color: var(--hb-color-danger, #f56c6c);
4538
4988
  }
4539
4989
  .debug_tag_in {
@@ -4548,40 +4998,40 @@ ${Y()}
4548
4998
  color: var(--hb-color-danger, #f56c6c); font-size: 12px; cursor: pointer;
4549
4999
  }
4550
5000
  .debug_tag_err:hover { text-decoration: underline; }
4551
- /* 终端视图 — 保留深色终端风格,与主题解耦 */
5001
+ /* Terminal content shares the editor's readable code palette. */
4552
5002
  .debug_terminal {
4553
- 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;
4554
5004
  font-size: 12px; line-height: 1.6; padding: 12px 16px;
4555
5005
  max-height: 450px; overflow-y: auto; margin: 0; white-space: pre-wrap;
4556
5006
  word-break: break-all; border-radius: 0;
4557
5007
  }
4558
- .debug_terminal .t_time { color: #89b4fa; }
4559
- .debug_terminal .t_in { color: #89dceb; font-weight: 700; }
4560
- .debug_terminal .t_out { color: #a6e3a1; font-weight: 700; }
4561
- .debug_terminal .t_err { color: #f38ba8; }
4562
- .debug_terminal .t_rel { color: #fab387; font-weight: 600; }
4563
- .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; }
4564
5014
  .debug_terminal .t_node {
4565
- color: #cba6f7;
5015
+ color: var(--hb-code-keyword);
4566
5016
  font-weight: 600;
4567
5017
  }
4568
5018
  .debug_terminal .t_node_clickable {
4569
5019
  cursor: pointer;
4570
5020
  }
4571
5021
  .debug_terminal .t_node_clickable:hover {
4572
- color: #f5c2e7;
5022
+ color: var(--hb-code-type);
4573
5023
  text-decoration: underline;
4574
5024
  }
4575
5025
  .debug_terminal .t_node_subchain {
4576
- color: #6c7086;
5026
+ color: var(--hb-code-comment);
4577
5027
  cursor: default;
4578
5028
  }
4579
5029
  .debug_terminal .t_duration {
4580
5030
  display: inline-block;
4581
5031
  padding: 0 4px;
4582
5032
  border-radius: 3px;
4583
- background: #313244;
4584
- color: #f9e2af;
5033
+ background: var(--hb-bg-tag);
5034
+ color: var(--hb-code-number);
4585
5035
  font-size: 11px;
4586
5036
  font-weight: 600;
4587
5037
  }
@@ -4643,7 +5093,7 @@ ${Y()}
4643
5093
  }
4644
5094
  .debug_detail_editor {
4645
5095
  min-height: 400px;
4646
- background: #0d1117;
5096
+ background: var(--hb-code-bg);
4647
5097
  }
4648
5098
  .debug_detail_footer {
4649
5099
  display: flex;
@@ -4673,8 +5123,8 @@ ${Y()}
4673
5123
  height: 400px;
4674
5124
  overflow: auto;
4675
5125
  padding: 12px;
4676
- color: #c9d1d9;
4677
- background: #0d1117;
5126
+ color: var(--hb-code-text);
5127
+ background: var(--hb-code-bg);
4678
5128
  white-space: pre-wrap;
4679
5129
  word-break: break-word;
4680
5130
  font-family: 'Menlo','Monaco','Consolas',monospace;
@@ -4693,9 +5143,9 @@ ${Y()}
4693
5143
  background: var(--hb-bg-modal, #fff); cursor: pointer; font-size: 12px; transition: all 0.15s;
4694
5144
  }
4695
5145
  .live_connect_btn { color: var(--hb-color-success, #67c23a); border-color: var(--hb-color-success, #67c23a); }
4696
- .live_connect_btn:hover { background: #f0f9eb; }
5146
+ .live_connect_btn:hover { background: var(--hb-success-soft); }
4697
5147
  .live_disconnect_btn { color: var(--hb-color-danger, #f56c6c); border-color: var(--hb-color-danger, #f56c6c); }
4698
- .live_disconnect_btn:hover { background: #fef0f0; }
5148
+ .live_disconnect_btn:hover { background: var(--hb-danger-soft); }
4699
5149
  .live_clear_btn { color: var(--hb-text-muted, #909399); }
4700
5150
  .live_clear_btn:hover { background: var(--hb-color-primary-bg, #ecf5ff); }
4701
5151
  .live_count { font-size: 12px; color: var(--hb-text-muted, #999); margin-left: auto; }
@@ -4703,7 +5153,7 @@ ${Y()}
4703
5153
 
4704
5154
  /* ========== 代码编辑器工具按钮 ========== */
4705
5155
  .code_tool_btn:hover {
4706
- 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;
4707
5157
  }
4708
5158
  /* 代码编辑器全屏模式 */
4709
5159
  .code_editor_fullscreen {
@@ -4743,33 +5193,36 @@ ${Y()}
4743
5193
  overflow: visible;
4744
5194
  }
4745
5195
  .huanban_rulego_editor_toolbar .tb_ai {
4746
- color: #7c3aed;
4747
- border-color: rgba(124, 58, 237, 0.36);
4748
- 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);
4749
5199
  }
4750
5200
  .huanban_rulego_editor_toolbar .tb_ai .hb_toolbar_ai_icon {
4751
5201
  display: inline-block !important;
4752
5202
  visibility: visible !important;
4753
5203
  opacity: 1 !important;
4754
5204
  color: currentColor;
4755
- 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));
4756
5206
  }
4757
5207
  .huanban_rulego_editor_toolbar .tb_ai:hover .hb_toolbar_ai_icon {
4758
5208
  color: currentColor;
4759
5209
  }
4760
5210
  .huanban_rulego_editor_toolbar .tb_ai:hover {
4761
- color: #fff;
4762
- border-color: #7c3aed;
4763
- background: #7c3aed;
5211
+ color: var(--rg-btn-primary-text);
5212
+ border-color: var(--hb-color-primary);
5213
+ background: var(--hb-color-primary);
4764
5214
  }
4765
- .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) {
4766
5216
  display: none;
4767
5217
  }
4768
5218
  .huanban_rulego_editor_toolbar.huanban_toolbar_icon_only .tb_btn {
4769
5219
  width: 30px;
4770
5220
  min-width: 30px;
4771
- padding-left: 0;
4772
- padding-right: 0;
5221
+ height: 28px;
5222
+ flex: 0 0 30px;
5223
+ justify-content: center;
5224
+ gap: 0;
5225
+ padding: 0;
4773
5226
  }
4774
5227
  .huanban_rulego_editor_toolbar .tb_btn:hover {
4775
5228
  background: var(--hb-bg-section, #f0f2f5);
@@ -4777,8 +5230,8 @@ ${Y()}
4777
5230
  /* 工具栏按钮激活状态 (如小地图开启时) */
4778
5231
  .huanban_rulego_editor_toolbar .tb_btn.tb_active {
4779
5232
  background: var(--hb-color-primary, #3685f2);
4780
- color: #fff;
4781
- 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);
4782
5235
  }
4783
5236
 
4784
5237
  /* ========== MiniMap 小地图容器 ========== */
@@ -4790,16 +5243,16 @@ ${Y()}
4790
5243
  top: auto !important;
4791
5244
  z-index: 50;
4792
5245
  border-radius: var(--hb-radius-md, 6px);
4793
- box-shadow: 0 4px 16px rgba(0,0,0,0.25);
4794
- border: 1px solid rgba(255,255,255,0.1);
5246
+ box-shadow: var(--hb-shadow-md);
5247
+ border: 1px solid var(--hb-border-color);
4795
5248
  overflow: hidden;
4796
- background: rgba(30, 30, 40, 0.85);
5249
+ background: var(--hb-bg-panel);
4797
5250
  }
4798
5251
  .lf-mini-map-header {
4799
- background: rgba(20, 20, 30, 0.9);
4800
- 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);
4801
5254
  font-size: 12px;
4802
- color: rgba(255,255,255,0.7);
5255
+ color: var(--hb-text-secondary);
4803
5256
  }
4804
5257
  .lf-mini-map-close {
4805
5258
  cursor: pointer;
@@ -4811,7 +5264,7 @@ ${Y()}
4811
5264
  color: var(--hb-color-success, #27ae60); border-color: var(--hb-color-success, #27ae60);
4812
5265
  }
4813
5266
  .huanban_rulego_editor_toolbar .tb_save:hover {
4814
- background: #e8faf0; color: #1d8348;
5267
+ background: var(--hb-success-soft); color: var(--hb-color-success);
4815
5268
  }
4816
5269
  .huanban_rulego_editor_toolbar .tb_deploy.tb_undeploy {
4817
5270
  color: var(--hb-color-danger, #f56c6c);
@@ -4819,14 +5272,14 @@ ${Y()}
4819
5272
  background: var(--hb-color-danger-bg, #fef0f0);
4820
5273
  }
4821
5274
  .huanban_rulego_editor_toolbar .tb_deploy.tb_undeploy:hover {
4822
- color: #fff;
5275
+ color: var(--rg-btn-danger-text);
4823
5276
  border-color: var(--hb-color-danger, #f56c6c);
4824
5277
  background: var(--hb-color-danger, #f56c6c);
4825
5278
  }
4826
5279
  .huanban_rulego_editor_toolbar .tb_save.tb_dirty {
4827
5280
  color: var(--hb-color-danger, #f56c6c);
4828
5281
  border-color: var(--hb-color-danger, #f56c6c);
4829
- background: rgba(245, 108, 108, 0.10);
5282
+ background: var(--hb-danger-soft);
4830
5283
  animation: hb_save_dirty_pulse 1.4s ease-in-out infinite;
4831
5284
  }
4832
5285
  .huanban_rulego_editor_toolbar .tb_save.tb_dirty::after {
@@ -4839,35 +5292,35 @@ ${Y()}
4839
5292
  border-radius: 50%;
4840
5293
  background: var(--hb-color-danger, #f56c6c);
4841
5294
  border: 2px solid var(--hb-bg-toolbar, #fff);
4842
- 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);
4843
5296
  }
4844
5297
  .huanban_rulego_editor_toolbar .tb_diff {
4845
5298
  position: relative;
4846
- color: #2563eb;
4847
- border-color: rgba(37, 99, 235, 0.38);
4848
- 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);
4849
5302
  }
4850
5303
  .huanban_rulego_editor_toolbar .tb_diff:disabled,
4851
5304
  .huanban_rulego_editor_toolbar .tb_diff[aria-disabled="true"] {
4852
5305
  opacity: 0.72;
4853
- color: #64748b;
4854
- border-color: rgba(100, 116, 139, 0.28);
4855
- 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);
4856
5309
  }
4857
5310
  .huanban_rulego_editor_toolbar .tb_diff.tb_dirty {
4858
- color: #fff;
4859
- border-color: #2563eb;
4860
- background: #2563eb;
4861
- 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);
4862
5315
  }
4863
5316
  .huanban_rulego_editor_toolbar .tb_diff.tb_dirty:hover {
4864
- color: #fff;
4865
- background: #1d4ed8;
4866
- 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);
4867
5320
  }
4868
5321
  @keyframes hb_save_dirty_pulse {
4869
- 0%, 100% { box-shadow: 0 0 0 0 rgba(245, 108, 108, 0); }
4870
- 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); }
4871
5324
  }
4872
5325
  .huanban_rulego_editor_toolbar .tb_saving {
4873
5326
  opacity: 0.7; pointer-events: none;
@@ -4876,13 +5329,13 @@ ${Y()}
4876
5329
  color: var(--hb-color-warning, #e67e22); border-color: var(--hb-color-warning, #e67e22);
4877
5330
  }
4878
5331
  .huanban_rulego_editor_toolbar .tb_run:hover {
4879
- background: #fef5e7; color: #d35400;
5332
+ background: var(--hb-warning-soft); color: var(--hb-color-warning);
4880
5333
  }
4881
5334
  .huanban_rulego_editor_toolbar .tb_component {
4882
- color: #8e44ad; border-color: #8e44ad;
5335
+ color: var(--hb-color-primary); border-color: var(--hb-color-primary);
4883
5336
  }
4884
5337
  .huanban_rulego_editor_toolbar .tb_component:hover {
4885
- background: #f5eef8; color: #6c3483;
5338
+ background: var(--hb-bg-hover); color: var(--hb-color-primary);
4886
5339
  }
4887
5340
 
4888
5341
  /* ========== LogicFlow Control 面板: 已迁移到 huanban_rulego_editor_canvas_toolbar,避免两组控制项混排 ========== */
@@ -4912,8 +5365,8 @@ ${Y()}
4912
5365
  }
4913
5366
  /* 图标项样式 */
4914
5367
  .lf-control-item {
4915
- --hb-control-color: #475569;
4916
- --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);
4917
5370
  display: flex !important;
4918
5371
  align-items: center !important;
4919
5372
  justify-content: center !important;
@@ -4928,7 +5381,7 @@ ${Y()}
4928
5381
  line-height: 28px !important;
4929
5382
  border: 1px solid var(--hb-control-border) !important;
4930
5383
  border-radius: 50% !important;
4931
- background: rgba(255,255,255,0.96) !important;
5384
+ background: var(--hb-bg-toolbar) !important;
4932
5385
  cursor: pointer !important;
4933
5386
  color: var(--hb-control-color) !important;
4934
5387
  box-shadow: 0 1px 3px rgba(18, 26, 42, 0.10) !important;
@@ -4937,15 +5390,15 @@ ${Y()}
4937
5390
  .lf-control-item:hover {
4938
5391
  background: var(--hb-control-color) !important;
4939
5392
  border-color: var(--hb-control-color) !important;
4940
- color: #fff !important;
5393
+ color: var(--rg-text-inverse) !important;
4941
5394
  box-shadow: 0 5px 12px rgba(18, 26, 42, 0.15) !important;
4942
5395
  transform: translateY(-1px);
4943
5396
  }
4944
5397
  .lf-control-item:active { transform: translateY(0) scale(0.96); }
4945
5398
  .lf-control-item.disabled { opacity: 0.4; cursor: not-allowed !important; }
4946
- .lf-control-item:has(.hb-ctrl-minimap) { --hb-control-color: #0f766e; --hb-control-border: rgba(15, 118, 110, 0.34); }
4947
- .lf-control-item:has(.hb-ctrl-components) { --hb-control-color: #2563eb; --hb-control-border: rgba(37, 99, 235, 0.34); }
4948
- .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); }
4949
5402
  /* 图标尺寸 */
4950
5403
  .lf-control-item i {
4951
5404
  display: block !important;
@@ -4955,15 +5408,18 @@ ${Y()}
4955
5408
  }
4956
5409
  /* 自定义图标 — 小地图(地图框 + 标记点) */
4957
5410
  .hb-ctrl-minimap {
4958
- 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;
4959
5413
  }
4960
5414
  /* 自定义图标 — 组件管理(四宫格) */
4961
5415
  .hb-ctrl-components {
4962
- 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;
4963
5418
  }
4964
5419
  /* 自定义图标 — 搜索(放大镜) */
4965
5420
  .hb-ctrl-search {
4966
- 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;
4967
5423
  }
4968
5424
 
4969
5425
  /* ========== 部署状态指示灯 ========== */
@@ -4974,21 +5430,21 @@ ${Y()}
4974
5430
  border-radius: 50%;
4975
5431
  margin-right: 6px;
4976
5432
  vertical-align: middle;
4977
- background: #bbb;
4978
- 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);
4979
5435
  transition: background 0.3s, box-shadow 0.3s;
4980
5436
  }
4981
5437
  .hb_deploy_dot.dot_success {
4982
- background: #67c23a;
4983
- 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);
4984
5440
  }
4985
5441
  .hb_deploy_dot.dot_warning {
4986
- background: #e6a23c;
4987
- 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);
4988
5444
  }
4989
5445
  .hb_deploy_dot.dot_danger {
4990
- background: #f56c6c;
4991
- 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);
4992
5448
  }
4993
5449
 
4994
5450
  /* ========== 节点搜索浮动栏 ========== */
@@ -5111,7 +5567,7 @@ ${Y()}
5111
5567
  height: 52px;
5112
5568
  border-radius: 999px;
5113
5569
  background: var(--hb-border-strong, #d8dde8);
5114
- 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);
5115
5571
  transform: translate(-50%, -50%);
5116
5572
  opacity: 0.48;
5117
5573
  transition: opacity 0.14s ease, background 0.14s ease, box-shadow 0.14s ease;
@@ -5136,7 +5592,7 @@ ${Y()}
5136
5592
  .huanban_ai_assistant_resize_handle:focus-visible::before,
5137
5593
  .huanban_ai_assistant_host.is_resizing .huanban_ai_assistant_resize_handle::before {
5138
5594
  background: var(--hb-color-primary, #409eff);
5139
- 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);
5140
5596
  opacity: 1;
5141
5597
  }
5142
5598
  .huanban_ai_assistant_resize_handle:hover::after,
@@ -5232,7 +5688,7 @@ ${Y()}
5232
5688
  }
5233
5689
  .run_mode_switch button {
5234
5690
  height: 30px; padding: 0 12px; border: 1px solid var(--hb-border-color, #dcdfe6);
5235
- 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);
5236
5692
  cursor: pointer; font-size: 12px;
5237
5693
  }
5238
5694
  .run_mode_switch button.active {
@@ -5335,9 +5791,9 @@ ${Y()}
5335
5791
  .run_ai_compact_warning {
5336
5792
  margin: 6px 14px 0;
5337
5793
  padding: 7px 9px;
5338
- border: 1px solid rgba(230, 162, 60, .34);
5794
+ border: 1px solid color-mix(in srgb, var(--hb-color-warning) 34%, transparent);
5339
5795
  border-radius: 6px;
5340
- background: rgba(230, 162, 60, .08);
5796
+ background: var(--hb-warning-soft);
5341
5797
  color: var(--hb-color-warning, #b88230);
5342
5798
  font-size: 12px;
5343
5799
  line-height: 1.45;
@@ -5539,7 +5995,7 @@ ${Y()}
5539
5995
  cursor: text;
5540
5996
  }
5541
5997
  .hb_md_preview[contenteditable="true"]:focus {
5542
- 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);
5543
5999
  }
5544
6000
  .hb_md_editor[data-md-mode="split"] .hb_md_body {
5545
6001
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
@@ -5663,18 +6119,18 @@ ${Y()}
5663
6119
  }
5664
6120
  .run_ai_model_catalog_status[data-status="loading"] {
5665
6121
  color: var(--hb-color-primary, #409eff);
5666
- background: rgba(64, 158, 255, 0.06);
5667
- 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);
5668
6124
  }
5669
6125
  .run_ai_model_catalog_status[data-status="success"] {
5670
6126
  color: var(--hb-color-success, #67c23a);
5671
- background: rgba(103, 194, 58, 0.08);
5672
- 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);
5673
6129
  }
5674
6130
  .run_ai_model_catalog_status[data-status="error"] {
5675
6131
  color: var(--hb-color-danger, #f56c6c);
5676
- background: rgba(245, 108, 108, 0.08);
5677
- 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);
5678
6134
  }
5679
6135
  .run_ai_model_global_note {
5680
6136
  display: inline-block;
@@ -5817,15 +6273,15 @@ ${Y()}
5817
6273
  }
5818
6274
  .run_ai_model_probe_status[data-status="loading"] {
5819
6275
  color: var(--hb-color-primary, #409eff);
5820
- background: rgba(64, 158, 255, 0.06);
6276
+ background: var(--hb-info-soft);
5821
6277
  }
5822
6278
  .run_ai_model_probe_status[data-status="success"] {
5823
6279
  color: var(--hb-color-success, #67c23a);
5824
- background: rgba(103, 194, 58, 0.08);
6280
+ background: var(--hb-success-soft);
5825
6281
  }
5826
6282
  .run_ai_model_probe_status[data-status="error"] {
5827
6283
  color: var(--hb-color-danger, #f56c6c);
5828
- background: rgba(245, 108, 108, 0.08);
6284
+ background: var(--hb-danger-soft);
5829
6285
  }
5830
6286
  .run_ai_model_diagnostics {
5831
6287
  border-bottom: 1px solid var(--hb-border-light, #ebeef5);
@@ -5917,9 +6373,9 @@ ${Y()}
5917
6373
  align-items: center;
5918
6374
  gap: 5px;
5919
6375
  padding: 3px 8px;
5920
- border: 1px solid rgba(64, 158, 255, 0.22);
6376
+ border: 1px solid color-mix(in srgb, var(--hb-color-primary) 22%, transparent);
5921
6377
  border-radius: 999px;
5922
- background: rgba(64, 158, 255, 0.06);
6378
+ background: var(--hb-info-soft);
5923
6379
  color: var(--hb-color-primary, #409eff);
5924
6380
  cursor: pointer;
5925
6381
  font-size: 11px;
@@ -5981,9 +6437,9 @@ ${Y()}
5981
6437
  .run_ai_model_profile {
5982
6438
  margin: 10px 10px 0;
5983
6439
  padding: 9px 10px;
5984
- border: 1px solid rgba(64, 158, 255, 0.16);
6440
+ border: 1px solid color-mix(in srgb, var(--hb-color-primary) 16%, transparent);
5985
6441
  border-radius: 6px;
5986
- background: rgba(64, 158, 255, 0.045);
6442
+ background: var(--hb-info-soft);
5987
6443
  }
5988
6444
  .run_ai_model_profile_empty {
5989
6445
  display: block;
@@ -6019,7 +6475,7 @@ ${Y()}
6019
6475
  .run_ai_model_profile_badges span {
6020
6476
  max-width: 100%;
6021
6477
  padding: 2px 7px;
6022
- border: 1px solid rgba(64, 158, 255, 0.18);
6478
+ border: 1px solid color-mix(in srgb, var(--hb-color-primary) 18%, transparent);
6023
6479
  border-radius: 999px;
6024
6480
  background: var(--hb-bg-modal, #fff);
6025
6481
  color: var(--hb-color-primary, #409eff);
@@ -6090,9 +6546,9 @@ ${Y()}
6090
6546
  }
6091
6547
  .run_ai_param_policy_backend {
6092
6548
  padding: 6px 8px;
6093
- border: 1px solid rgba(230, 162, 60, .34);
6549
+ border: 1px solid color-mix(in srgb, var(--hb-color-warning) 34%, transparent);
6094
6550
  border-radius: 6px;
6095
- background: rgba(230, 162, 60, .08);
6551
+ background: var(--hb-warning-soft);
6096
6552
  }
6097
6553
  .run_ai_param_field > span {
6098
6554
  min-width: 0;
@@ -6119,19 +6575,19 @@ ${Y()}
6119
6575
  line-height: 16px;
6120
6576
  }
6121
6577
  .run_ai_param_field.run_ai_param_editable em {
6122
- background: rgba(103, 194, 58, 0.1);
6578
+ background: var(--hb-success-soft);
6123
6579
  color: var(--hb-color-success, #67c23a);
6124
6580
  }
6125
6581
  .run_ai_param_field.run_ai_param_omitted em {
6126
- background: rgba(144, 147, 153, 0.12);
6582
+ background: var(--hb-bg-tag);
6127
6583
  color: var(--hb-text-muted, #909399);
6128
6584
  }
6129
6585
  .run_ai_param_field.run_ai_param_fixed em {
6130
- background: rgba(64, 158, 255, 0.1);
6586
+ background: var(--hb-info-soft);
6131
6587
  color: var(--hb-color-primary, #409eff);
6132
6588
  }
6133
6589
  .run_ai_param_field.run_ai_param_unsupported em {
6134
- background: rgba(144, 147, 153, 0.12);
6590
+ background: var(--hb-bg-tag);
6135
6591
  color: var(--hb-text-muted, #909399);
6136
6592
  }
6137
6593
  .run_ai_param_field > small {
@@ -6303,7 +6759,7 @@ ${Y()}
6303
6759
  .btn_cancel.success {
6304
6760
  color: var(--hb-color-success, #67c23a);
6305
6761
  border-color: var(--hb-color-success-light, #d1edc4);
6306
- background: rgba(103, 194, 58, 0.08);
6762
+ background: var(--hb-success-soft);
6307
6763
  }
6308
6764
  .run_ai_skills_meta {
6309
6765
  min-height: 24px;
@@ -6630,7 +7086,7 @@ ${Y()}
6630
7086
  }
6631
7087
  .run_chat_message.assistant.streaming .run_chat_avatar {
6632
7088
  position: relative;
6633
- 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);
6634
7090
  animation: hb-ai-avatar-pulse 1.5s ease-in-out infinite;
6635
7091
  }
6636
7092
  .run_chat_message.user .run_chat_avatar {
@@ -6638,11 +7094,11 @@ ${Y()}
6638
7094
  }
6639
7095
  .run_chat_bubble {
6640
7096
  max-width: min(760px, 86%); border: 1px solid var(--hb-border-light, #ebeef5);
6641
- border-radius: 8px; padding: 10px 12px; background: #fff;
7097
+ border-radius: 8px; padding: 10px 12px; background: var(--hb-bg-panel);
6642
7098
  color: var(--hb-text-primary, #303133); box-shadow: 0 1px 2px rgba(0,0,0,0.03);
6643
7099
  }
6644
7100
  .run_chat_message.user .run_chat_bubble {
6645
- 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);
6646
7102
  }
6647
7103
  .run_chat_bubble_header {
6648
7104
  display: flex; align-items: center; gap: 8px;
@@ -6691,7 +7147,7 @@ ${Y()}
6691
7147
  .run_chat_content.markdown-body code,
6692
7148
  .run_chat_reasoning_markdown.markdown-body code {
6693
7149
  font-family: Menlo, Monaco, Consolas, monospace; font-size: 0.92em;
6694
- 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;
6695
7151
  }
6696
7152
  .run_chat_content.markdown-body a,
6697
7153
  .run_chat_reasoning_markdown.markdown-body a {
@@ -6788,7 +7244,7 @@ ${Y()}
6788
7244
  }
6789
7245
  .run_chat_message.streaming .run_chat_bubble {
6790
7246
  border-color: var(--hb-color-primary, #409eff);
6791
- 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);
6792
7248
  }
6793
7249
  .run_chat_thinking_indicator {
6794
7250
  display: inline-flex; align-items: center; gap: 6px;
@@ -6886,7 +7342,7 @@ ${Y()}
6886
7342
  }
6887
7343
  .run_chat_popconfirm_confirm {
6888
7344
  border: 1px solid var(--hb-color-danger, #f56c6c); background: var(--hb-color-danger, #f56c6c);
6889
- color: #fff;
7345
+ color: var(--rg-btn-danger-text);
6890
7346
  }
6891
7347
  .run_chat_reasoning {
6892
7348
  margin: 8px 0; padding: 8px 10px; border-radius: 6px;
@@ -6898,11 +7354,11 @@ ${Y()}
6898
7354
  }
6899
7355
  .run_chat_reasoning.error {
6900
7356
  border: 1px solid var(--hb-color-danger-light, #fbc4c4);
6901
- background: rgba(245, 108, 108, 0.06);
7357
+ background: var(--hb-danger-soft);
6902
7358
  }
6903
7359
  .run_chat_reasoning.cancel {
6904
7360
  border: 1px solid var(--hb-color-warning-light, #faecd8);
6905
- background: rgba(230, 162, 60, 0.08);
7361
+ background: var(--hb-warning-soft);
6906
7362
  }
6907
7363
  .run_chat_reasoning_header,
6908
7364
  .run_chat_sub_summary,
@@ -6959,7 +7415,7 @@ ${Y()}
6959
7415
  .run_chat_thinking_state.success {
6960
7416
  border-color: var(--hb-color-success-light, #d1edc4);
6961
7417
  color: var(--hb-color-success, #67c23a);
6962
- background: rgba(103, 194, 58, 0.1);
7418
+ background: var(--hb-success-soft);
6963
7419
  }
6964
7420
  .run_chat_reasoning_state.error,
6965
7421
  .run_chat_thinking_state.error,
@@ -6967,7 +7423,7 @@ ${Y()}
6967
7423
  .run_chat_thinking_state.cancel {
6968
7424
  border-color: var(--hb-color-danger-light, #fbc4c4);
6969
7425
  color: var(--hb-color-danger, #f56c6c);
6970
- background: rgba(245, 108, 108, 0.1);
7426
+ background: var(--hb-danger-soft);
6971
7427
  }
6972
7428
  .run_chat_progress {
6973
7429
  width: 60px; height: 4px; border-radius: 999px; overflow: hidden;
@@ -6975,7 +7431,7 @@ ${Y()}
6975
7431
  }
6976
7432
  .run_chat_progress_fill {
6977
7433
  display: block; height: 100%; border-radius: inherit;
6978
- 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));
6979
7435
  transition: width 0.3s ease;
6980
7436
  }
6981
7437
  .run_chat_progress_text {
@@ -7025,11 +7481,11 @@ ${Y()}
7025
7481
  }
7026
7482
  .run_chat_tool_item.error {
7027
7483
  border-color: var(--hb-color-danger-light, #fbc4c4);
7028
- background: rgba(245, 108, 108, 0.08);
7484
+ background: var(--hb-danger-soft);
7029
7485
  }
7030
7486
  .run_chat_tool_item.cancel {
7031
7487
  border-color: var(--hb-color-danger-light, #fbc4c4);
7032
- background: rgba(245, 108, 108, 0.06);
7488
+ background: var(--hb-danger-soft);
7033
7489
  }
7034
7490
  .run_chat_tool_header {
7035
7491
  display: block; background: var(--hb-bg-section, #fafafa);
@@ -7060,12 +7516,12 @@ ${Y()}
7060
7516
  }
7061
7517
  .run_chat_tool_status.success {
7062
7518
  color: var(--hb-color-success, #67c23a); border-color: var(--hb-color-success-light, #d1edc4);
7063
- background: rgba(103, 194, 58, 0.1);
7519
+ background: var(--hb-success-soft);
7064
7520
  }
7065
7521
  .run_chat_tool_status.error,
7066
7522
  .run_chat_tool_status.cancel {
7067
7523
  color: var(--hb-color-danger, #f56c6c); border-color: var(--hb-color-danger-light, #fbc4c4);
7068
- background: rgba(245, 108, 108, 0.1);
7524
+ background: var(--hb-danger-soft);
7069
7525
  }
7070
7526
  .run_chat_tool_details {
7071
7527
  padding: 8px 10px; border-top: 1px solid var(--hb-border-light, #ebeef5);
@@ -7084,12 +7540,12 @@ ${Y()}
7084
7540
  border-radius: 4px; padding: 8px;
7085
7541
  }
7086
7542
  .run_chat_tool_result pre {
7087
- background: rgba(103, 194, 58, 0.1);
7543
+ background: var(--hb-success-soft);
7088
7544
  border: 1px solid var(--hb-color-success-light, #d1edc4);
7089
7545
  border-radius: 4px; padding: 8px;
7090
7546
  }
7091
7547
  .run_chat_tool_error pre {
7092
- background: rgba(245, 108, 108, 0.1);
7548
+ background: var(--hb-danger-soft);
7093
7549
  border: 1px solid var(--hb-color-danger-light, #fbc4c4);
7094
7550
  color: var(--hb-color-danger, #f56c6c);
7095
7551
  border-radius: 4px; padding: 8px;
@@ -7168,7 +7624,7 @@ ${Y()}
7168
7624
  .run_chat_rule_chain_btn.primary {
7169
7625
  border-color: var(--hb-color-primary, #409eff);
7170
7626
  background: var(--hb-color-primary, #409eff);
7171
- color: #fff;
7627
+ color: var(--rg-btn-primary-text);
7172
7628
  }
7173
7629
  .run_chat_footer {
7174
7630
  padding: 10px 12px; border-top: 1px solid var(--hb-border-light, #ebeef5);
@@ -7187,7 +7643,7 @@ ${Y()}
7187
7643
  }
7188
7644
  .run_chat_input_wrapper:focus-within {
7189
7645
  border-color: var(--hb-color-primary, #409eff);
7190
- 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);
7191
7647
  }
7192
7648
  .run_chat_input {
7193
7649
  flex: 1 1 auto;
@@ -7223,7 +7679,7 @@ ${Y()}
7223
7679
  border: 1px solid var(--hb-color-danger, #f56c6c);
7224
7680
  border-radius: 999px;
7225
7681
  background: var(--hb-color-danger, #f56c6c);
7226
- color: #fff;
7682
+ color: var(--rg-btn-primary-text);
7227
7683
  cursor: pointer;
7228
7684
  }
7229
7685
  .run_chat_send_btn.primary {
@@ -7394,7 +7850,7 @@ ${Y()}
7394
7850
  .btn_run_execute {
7395
7851
  display: flex; align-items: center; gap: 6px;
7396
7852
  padding: 8px 18px; border: none; border-radius: var(--hb-radius-sm, 4px);
7397
- 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;
7398
7854
  transition: all 0.2s;
7399
7855
  }
7400
7856
  .btn_run_execute:hover { opacity: 0.85; }
@@ -7407,7 +7863,7 @@ ${Y()}
7407
7863
  .btn_run_notify:hover { background: var(--hb-bg-hover, #f5f5f5); }
7408
7864
  .btn_cancel.danger {
7409
7865
  color: var(--hb-color-danger, #f56c6c);
7410
- border-color: rgba(245, 108, 108, 0.35);
7866
+ border-color: color-mix(in srgb, var(--hb-color-danger) 35%, transparent);
7411
7867
  }
7412
7868
  .run_node_scope {
7413
7869
  display: grid;
@@ -7494,7 +7950,7 @@ ${Y()}
7494
7950
  }
7495
7951
  .run_body_mode_switch button {
7496
7952
  border: 1px solid var(--hb-border-color, #dcdfe6);
7497
- background: #fff;
7953
+ background: var(--hb-bg-input);
7498
7954
  color: var(--hb-text-secondary, #606266);
7499
7955
  border-radius: 4px;
7500
7956
  padding: 4px 10px;
@@ -7504,7 +7960,7 @@ ${Y()}
7504
7960
  .run_body_mode_switch button.active {
7505
7961
  border-color: var(--hb-color-primary, #409eff);
7506
7962
  background: var(--hb-color-primary, #409eff);
7507
- color: #fff;
7963
+ color: var(--rg-btn-primary-text);
7508
7964
  }
7509
7965
  .run_dynamic_form {
7510
7966
  display: flex;
@@ -7541,18 +7997,18 @@ ${Y()}
7541
7997
  }
7542
7998
  .run_dynamic_array textarea.invalid {
7543
7999
  border-color: var(--hb-color-danger, #f56c6c);
7544
- 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);
7545
8001
  }
7546
8002
  .run_warning {
7547
- padding: 8px 10px; border: 1px solid #f5dab1; background: #fdf6ec;
7548
- 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;
7549
8005
  }
7550
8006
  .run_replay_notice {
7551
8007
  display: flex;
7552
8008
  align-items: flex-start;
7553
8009
  gap: 8px;
7554
8010
  padding: 8px 10px;
7555
- border: 1px solid rgba(64, 158, 255, 0.25);
8011
+ border: 1px solid color-mix(in srgb, var(--hb-color-primary) 25%, transparent);
7556
8012
  background: var(--hb-color-primary-bg, #ecf5ff);
7557
8013
  color: var(--hb-color-primary, #409eff);
7558
8014
  border-radius: 4px;
@@ -7604,7 +8060,7 @@ ${Y()}
7604
8060
  .run_history_pagination select,
7605
8061
  .run_history_page_size_custom input {
7606
8062
  height: 28px; border: 1px solid var(--hb-border-color, #dcdfe6); border-radius: 4px;
7607
- 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);
7608
8064
  }
7609
8065
  .run_history_page_size_custom {
7610
8066
  display: inline-flex;
@@ -7624,7 +8080,7 @@ ${Y()}
7624
8080
  .run_history_item {
7625
8081
  display: grid; grid-template-columns: 150px 88px minmax(0,1fr) 90px; gap: 8px; align-items: center;
7626
8082
  width: 100%; text-align: left; border: 1px solid var(--hb-border-light, #ebeef5);
7627
- background: #fff; border-radius: 4px; padding: 8px 10px; cursor: default;
8083
+ background: var(--hb-bg-panel); border-radius: 4px; padding: 8px 10px; cursor: default;
7628
8084
  color: var(--hb-text-primary, #303133);
7629
8085
  }
7630
8086
  .run_history_item.remote {
@@ -7665,7 +8121,7 @@ ${Y()}
7665
8121
  }
7666
8122
  .run_history_action:focus-visible,
7667
8123
  .run_history_msg_action:focus-visible {
7668
- outline: 2px solid rgba(64, 158, 255, 0.35);
8124
+ outline: 2px solid color-mix(in srgb, var(--hb-color-primary) 35%, transparent);
7669
8125
  outline-offset: 2px;
7670
8126
  border-radius: 3px;
7671
8127
  }
@@ -7685,7 +8141,7 @@ ${Y()}
7685
8141
  }
7686
8142
  .run_history_log_item {
7687
8143
  border: 1px solid var(--hb-border-light, #ebeef5); border-radius: 6px; overflow: hidden;
7688
- background: #fff;
8144
+ background: var(--hb-bg-panel);
7689
8145
  }
7690
8146
  .run_history_log_title {
7691
8147
  display: grid; grid-template-columns: minmax(100px, 1fr) 90px 72px 60px 64px; gap: 8px; align-items: center;
@@ -7765,7 +8221,7 @@ ${Y()}
7765
8221
  overflow: hidden;
7766
8222
  border: 1px solid var(--hb-border-color, #dcdfe6);
7767
8223
  border-radius: 10px;
7768
- background: #fff;
8224
+ background: var(--hb-bg-modal);
7769
8225
  box-shadow: 0 24px 70px rgba(15, 23, 42, 0.28);
7770
8226
  color: var(--hb-text-primary, #303133);
7771
8227
  }
@@ -7792,7 +8248,7 @@ ${Y()}
7792
8248
  margin-left: auto;
7793
8249
  border: 1px solid var(--hb-border-color, #dcdfe6);
7794
8250
  border-radius: 6px;
7795
- background: #fff;
8251
+ background: var(--hb-bg-input);
7796
8252
  color: var(--hb-text-secondary, #606266);
7797
8253
  cursor: pointer;
7798
8254
  font-size: 18px;
@@ -7822,7 +8278,7 @@ ${Y()}
7822
8278
  padding: 8px 14px;
7823
8279
  border-bottom: 1px solid var(--hb-border-light, #ebeef5);
7824
8280
  color: var(--hb-text-secondary, #606266);
7825
- background: #fff;
8281
+ background: var(--hb-bg-panel);
7826
8282
  font-size: 12px;
7827
8283
  }
7828
8284
  .huanban_json_viewer_textarea {
@@ -7834,8 +8290,8 @@ ${Y()}
7834
8290
  border: 0;
7835
8291
  outline: none;
7836
8292
  padding: 14px 16px;
7837
- background: #0f172a;
7838
- color: #dbeafe;
8293
+ background: var(--hb-code-bg);
8294
+ color: var(--hb-code-text);
7839
8295
  font-size: 12px;
7840
8296
  line-height: 18px;
7841
8297
  font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;
@@ -7861,8 +8317,8 @@ ${Y()}
7861
8317
  line-height: 1.5;
7862
8318
  }
7863
8319
  .run_integration_content code {
7864
- display: block; padding: 6px 8px; border-radius: 4px; background: #f6f8fa;
7865
- 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;
7866
8322
  white-space: pre-wrap; word-break: break-all;
7867
8323
  }
7868
8324
  /* 输入区 Tab */
@@ -7962,7 +8418,7 @@ ${Y()}
7962
8418
  height: 22px;
7963
8419
  border-radius: var(--hb-radius-sm, 4px);
7964
8420
  background: var(--hb-color-primary, #409eff);
7965
- color: #fff;
8421
+ color: var(--rg-btn-primary-text);
7966
8422
  font-size: 11px;
7967
8423
  font-weight: 700;
7968
8424
  letter-spacing: 0;
@@ -7998,7 +8454,7 @@ ${Y()}
7998
8454
  }
7999
8455
  .code_textarea:focus { border-color: var(--hb-color-primary, #409eff); }
8000
8456
  .code_output {
8001
- background: #1e1e2e; color: #cdd6f4;
8457
+ background: var(--hb-code-bg); color: var(--hb-code-text);
8002
8458
  font-family: 'Menlo','Monaco','Consolas',monospace;
8003
8459
  font-size: 12px; line-height: 1.6; padding: 12px 16px; margin: 0;
8004
8460
  border-radius: var(--hb-radius-sm, 4px); white-space: pre-wrap; word-break: break-all;
@@ -8007,19 +8463,20 @@ ${Y()}
8007
8463
  .code_output.full_editor {
8008
8464
  flex: 1 1 auto; min-height: 100%; max-height: none; box-sizing: border-box;
8009
8465
  }
8010
- .code_output .t_out { color: #a6e3a1; font-weight: 700; }
8011
- .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; }
8012
8468
 
8013
8469
  /* ========== 只读拓扑诊断 ========== */
8014
8470
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_diagnostics {
8015
- --hb-tool-color: #b45309;
8016
- --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);
8017
8473
  position: relative;
8018
8474
  }
8019
8475
  .huanban_rulego_editor_canvas_toolbar .hb_canvas_tool_count {
8020
8476
  position: absolute;
8021
8477
  top: -5px;
8022
8478
  right: -5px;
8479
+ z-index: 2;
8023
8480
  min-width: 14px;
8024
8481
  height: 14px;
8025
8482
  padding: 0 3px;
@@ -8030,7 +8487,7 @@ ${Y()}
8030
8487
  border: 1px solid var(--hb-bg-toolbar, #fff);
8031
8488
  border-radius: 7px;
8032
8489
  background: var(--hb-color-danger, #ef4444);
8033
- color: #fff;
8490
+ color: var(--rg-btn-danger-text);
8034
8491
  font-size: 9px;
8035
8492
  font-weight: 700;
8036
8493
  line-height: 1;
@@ -8139,18 +8596,18 @@ ${Y()}
8139
8596
  align-items: center;
8140
8597
  justify-content: center;
8141
8598
  border-radius: 50%;
8142
- background: #fff7ed;
8143
- color: #b45309;
8599
+ background: var(--hb-warning-soft);
8600
+ color: var(--hb-color-warning);
8144
8601
  font-size: 11px;
8145
8602
  font-weight: 700;
8146
8603
  }
8147
8604
  .hb_diagnostic_error .hb_diagnostic_icon {
8148
- background: #fef2f2;
8149
- color: #dc2626;
8605
+ background: var(--hb-danger-soft);
8606
+ color: var(--hb-color-danger);
8150
8607
  }
8151
8608
  .hb_diagnostic_info .hb_diagnostic_icon {
8152
- background: #eff6ff;
8153
- color: #2563eb;
8609
+ background: var(--hb-info-soft);
8610
+ color: var(--hb-color-primary);
8154
8611
  }
8155
8612
  .hb_diagnostic_content {
8156
8613
  min-width: 0;
@@ -8175,7 +8632,7 @@ ${Y()}
8175
8632
  }
8176
8633
  .hb_diagnostic_marker .lf-node-content,
8177
8634
  .hb_diagnostic_marker .lf-edge {
8178
- 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));
8179
8636
  }
8180
8637
 
8181
8638
  /* ========== 共享命令、节点选择与文档浮层 ========== */
@@ -8617,15 +9074,15 @@ ${Y()}
8617
9074
  overflow: auto;
8618
9075
  border: 1px solid var(--hb-border-light, #e5e7eb);
8619
9076
  border-radius: 5px;
8620
- background: #111827;
8621
- color: #e5e7eb;
9077
+ background: var(--hb-code-bg);
9078
+ color: var(--hb-code-text);
8622
9079
  font: 12px/1.6 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
8623
9080
  }
8624
9081
  .hb_docs_article code {
8625
9082
  padding: 1px 4px;
8626
9083
  border-radius: 3px;
8627
9084
  background: var(--hb-bg-section, #f3f4f6);
8628
- color: #b42318;
9085
+ color: var(--hb-code-keyword);
8629
9086
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
8630
9087
  }
8631
9088
  .hb_docs_article pre code { padding: 0; background: transparent; color: inherit; }
@@ -8702,7 +9159,7 @@ ${Y()}
8702
9159
  /* ========== 通用 btn_primary / btn_cancel ========== */
8703
9160
  .btn_primary {
8704
9161
  padding: 8px 20px; border: 1px solid var(--hb-color-primary, #409eff); border-radius: var(--hb-radius-sm, 4px);
8705
- 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;
8706
9163
  }
8707
9164
  .btn_primary:hover { opacity: 0.85; }
8708
9165
  .btn_cancel {
@@ -8725,7 +9182,7 @@ ${Y()}
8725
9182
  /* --- 侧边栏节点块: 大圆角 + 轻柔阴影 --- */
8726
9183
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_node_block {
8727
9184
  border-radius: var(--hb-node-radius, 10px);
8728
- border-color: rgba(0,0,0,0.1);
9185
+ border-color: var(--hb-border-color);
8729
9186
  transition: box-shadow 0.15s, transform 0.12s;
8730
9187
  }
8731
9188
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_node_block:hover {
@@ -8782,47 +9239,47 @@ ${Y()}
8782
9239
 
8783
9240
  /* --- 侧边栏分组头: 圆润 --- */
8784
9241
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_group_header {
8785
- border-bottom: 1px solid rgba(0,0,0,0.04);
9242
+ border-bottom: 1px solid var(--hb-border-light);
8786
9243
  font-size: 11px;
8787
9244
  font-weight: 700;
8788
9245
  text-transform: uppercase;
8789
9246
  letter-spacing: 0.04em;
8790
9247
  }
8791
9248
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_group_header:hover {
8792
- background: rgba(59,130,246,0.04);
9249
+ background: var(--hb-bg-hover);
8793
9250
  }
8794
9251
 
8795
9252
  /* --- 侧边栏搜索框: 圆润边框 --- */
8796
9253
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_sidebar_search input {
8797
- border: 1px solid rgba(0,0,0,0.08);
9254
+ border: 1px solid var(--hb-border-color);
8798
9255
  border-radius: var(--hb-radius-sm, 7px);
8799
9256
  padding: 6px 10px;
8800
9257
  transition: border-color 0.15s, box-shadow 0.15s;
8801
9258
  }
8802
9259
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_sidebar_search input:focus {
8803
9260
  border-color: var(--hb-color-primary, #3b82f6);
8804
- 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);
8805
9262
  }
8806
9263
 
8807
9264
  /* --- 工具栏按钮: 圆润 + hover 微调 --- */
8808
9265
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_toolbar {
8809
- border-bottom-color: rgba(0,0,0,0.06);
9266
+ border-bottom-color: var(--hb-border-light);
8810
9267
  }
8811
9268
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_toolbar button {
8812
- border-color: rgba(0,0,0,0.08);
9269
+ border-color: var(--hb-border-color);
8813
9270
  border-radius: var(--hb-radius-sm, 7px);
8814
9271
  font-weight: 600;
8815
9272
  transition: all 0.12s;
8816
9273
  }
8817
9274
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_toolbar button:hover {
8818
- background: rgba(59,130,246,0.06);
8819
- 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);
8820
9277
  color: var(--hb-color-primary, #3b82f6);
8821
9278
  }
8822
9279
 
8823
9280
  /* --- 底部状态栏: 极淡边框 --- */
8824
9281
  .huanban_rulego_editor_root[data-theme="modern"] .huanban_rulego_editor_status {
8825
- border-top-color: rgba(0,0,0,0.06);
9282
+ border-top-color: var(--hb-border-light);
8826
9283
  background: var(--hb-bg-root, #f8fafc);
8827
9284
  }
8828
9285
 
@@ -9063,18 +9520,18 @@ ${Y()}
9063
9520
  grid-template-columns: minmax(0, 1fr);
9064
9521
  }
9065
9522
  }
9066
- `, document.head.appendChild(e);
9523
+ `, e.textContent += J, document.head.appendChild(e);
9067
9524
  }
9068
9525
  export {
9069
- k as E,
9070
- h as T,
9071
- V as a,
9072
- X as b,
9073
- R as c,
9074
- D as d,
9075
- O as e,
9076
- C as f,
9077
- q as g,
9078
- N as i,
9079
- u 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
9080
9537
  };