agentix-cli 0.22.0 → 0.25.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 (187) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +102 -103
  3. package/agentx.example.json +9 -3
  4. package/dist/App-6Y7B3YQH.js +8 -0
  5. package/dist/App-6Y7B3YQH.js.map +1 -0
  6. package/dist/ChatApp-KIEUJ2DS.js +7 -0
  7. package/dist/ChatApp-KIEUJ2DS.js.map +1 -0
  8. package/dist/{agent-Y4U4R3ZZ.js → agent-QGZIAZMY.js} +2 -2
  9. package/dist/architect-SEPWMWS4.js +2 -0
  10. package/dist/{board-dashboard-2CPBWFOB.js → board-dashboard-CQ5F4GPD.js} +3756 -1010
  11. package/dist/board-dashboard-CQ5F4GPD.js.map +1 -0
  12. package/dist/builtin-FRKAQMFS.js +2 -0
  13. package/dist/chunk-2WVX3LEC.js +2 -0
  14. package/dist/chunk-2WVX3LEC.js.map +1 -0
  15. package/dist/chunk-3WQFCIB6.js +24 -0
  16. package/dist/chunk-3WQFCIB6.js.map +1 -0
  17. package/dist/chunk-53GCFZPR.js +116 -0
  18. package/dist/chunk-53GCFZPR.js.map +1 -0
  19. package/dist/{chunk-IKBHHTIT.js → chunk-5U35WAZF.js} +2 -2
  20. package/dist/chunk-67Q4DCPS.js +54 -0
  21. package/dist/chunk-67Q4DCPS.js.map +1 -0
  22. package/dist/chunk-76Z4VHDX.js +8 -0
  23. package/dist/chunk-76Z4VHDX.js.map +1 -0
  24. package/dist/{chunk-7P5QRX5W.js → chunk-BFXONUUN.js} +2 -2
  25. package/dist/{chunk-P3TJHGO5.js → chunk-FDMWOPEL.js} +2 -2
  26. package/dist/chunk-FDWOECJY.js +54 -0
  27. package/dist/chunk-FDWOECJY.js.map +1 -0
  28. package/dist/chunk-G57RZCXM.js +5 -0
  29. package/dist/chunk-G57RZCXM.js.map +1 -0
  30. package/dist/{chunk-NOF4HSGK.js → chunk-H5D7ATXS.js} +2 -2
  31. package/dist/chunk-HA3XI7Z2.js +155 -0
  32. package/dist/chunk-HA3XI7Z2.js.map +1 -0
  33. package/dist/chunk-HR4JSRZS.js +3 -0
  34. package/dist/{chunk-A6BKSZQA.js.map → chunk-HR4JSRZS.js.map} +1 -1
  35. package/dist/chunk-I3SIXTJO.js +44 -0
  36. package/dist/chunk-I3SIXTJO.js.map +1 -0
  37. package/dist/chunk-ISEBLHWX.js +118 -0
  38. package/dist/chunk-ISEBLHWX.js.map +1 -0
  39. package/dist/{chunk-4ITQP3XL.js → chunk-JP5IEXR7.js} +2 -2
  40. package/dist/chunk-JXWAGMI2.js +13 -0
  41. package/dist/chunk-JXWAGMI2.js.map +1 -0
  42. package/dist/chunk-KUCCW2VG.js +431 -0
  43. package/dist/chunk-KUCCW2VG.js.map +1 -0
  44. package/dist/chunk-LDHPMJ7M.js +257 -0
  45. package/dist/chunk-LDHPMJ7M.js.map +1 -0
  46. package/dist/{chunk-WHP4I44J.js → chunk-LNXCJWOU.js} +29 -30
  47. package/dist/chunk-LNXCJWOU.js.map +1 -0
  48. package/dist/chunk-M4AMWP3H.js +178 -0
  49. package/dist/chunk-M4AMWP3H.js.map +1 -0
  50. package/dist/chunk-NGSIRE4X.js +126 -0
  51. package/dist/chunk-NGSIRE4X.js.map +1 -0
  52. package/dist/{chunk-CNNLREHD.js → chunk-P4VWIVKN.js} +268 -410
  53. package/dist/chunk-P4VWIVKN.js.map +1 -0
  54. package/dist/chunk-Q6YO7LYE.js +47 -0
  55. package/dist/chunk-Q6YO7LYE.js.map +1 -0
  56. package/dist/chunk-TMKLHTCG.js +971 -0
  57. package/dist/chunk-TMKLHTCG.js.map +1 -0
  58. package/dist/chunk-TRJTTBE2.js +7 -0
  59. package/dist/chunk-TRJTTBE2.js.map +1 -0
  60. package/dist/chunk-U2CKL755.js +4 -0
  61. package/dist/chunk-U2CKL755.js.map +1 -0
  62. package/dist/chunk-UCQ2N3KO.js +9 -0
  63. package/dist/chunk-UCQ2N3KO.js.map +1 -0
  64. package/dist/chunk-W4YR2RO2.js +2 -0
  65. package/dist/chunk-W4YR2RO2.js.map +1 -0
  66. package/dist/cli.js +1 -1
  67. package/dist/cli.js.map +1 -1
  68. package/dist/client-GGVVLOOF.js +2 -0
  69. package/dist/{compaction-BTUJJ3LJ.js → compaction-NWEMOSHA.js} +3 -3
  70. package/dist/config-7FSZFRTQ.js +2 -0
  71. package/dist/config-mutator-POCOYYJ4.js +2 -0
  72. package/dist/{context-planner-I7ID7XF3.js → context-planner-45GEWKGL.js} +2 -2
  73. package/dist/doctor-DHLBEKA4.js +2 -0
  74. package/dist/heal-HZ3EQD52.js +2 -0
  75. package/dist/index.d.ts +1244 -225
  76. package/dist/index.js +12 -12
  77. package/dist/index.js.map +1 -1
  78. package/dist/memory-extract-AENFVVO5.js +2 -0
  79. package/dist/processes-UIC4XXA6.js +2 -0
  80. package/dist/program-WVAVJFND.js +2 -0
  81. package/dist/projects-api-KRME2YKZ.js +2 -0
  82. package/dist/projects-api-KRME2YKZ.js.map +1 -0
  83. package/dist/projects-mutate-3NHVG437.js +7 -0
  84. package/dist/projects-mutate-3NHVG437.js.map +1 -0
  85. package/dist/providers-L27BJ5A6.js +2 -0
  86. package/dist/registry-T36ZIAWV.js +2 -0
  87. package/dist/rotation-memo-B3EXXSEH.js +13 -0
  88. package/dist/rotation-memo-B3EXXSEH.js.map +1 -0
  89. package/dist/scheduler-GH7TIKYS.js +2 -0
  90. package/dist/surface-usage-PRL6Z4U3.js +2 -0
  91. package/dist/wiki-M6YNRFC4.js +2 -0
  92. package/dist/workflows/templates/branching.yaml +75 -0
  93. package/dist/workflows/templates/extract.yaml +59 -0
  94. package/dist/workflows/templates/linear.yaml +37 -0
  95. package/dist/workflows/templates/retry.yaml +61 -0
  96. package/dist/workspace-setup-TBQAHYHJ.js +2 -0
  97. package/package.json +11 -3
  98. package/dist/board-dashboard-2CPBWFOB.js.map +0 -1
  99. package/dist/chunk-2HXSJYAJ.js +0 -15
  100. package/dist/chunk-2HXSJYAJ.js.map +0 -1
  101. package/dist/chunk-5F3J55LG.js +0 -2
  102. package/dist/chunk-5F3J55LG.js.map +0 -1
  103. package/dist/chunk-A6BKSZQA.js +0 -3
  104. package/dist/chunk-ABVZHJUO.js +0 -7
  105. package/dist/chunk-ABVZHJUO.js.map +0 -1
  106. package/dist/chunk-BHSPAP4U.js +0 -44
  107. package/dist/chunk-BHSPAP4U.js.map +0 -1
  108. package/dist/chunk-CDNWCYF7.js +0 -2
  109. package/dist/chunk-CDNWCYF7.js.map +0 -1
  110. package/dist/chunk-CNNLREHD.js.map +0 -1
  111. package/dist/chunk-CO4YCIIA.js +0 -13
  112. package/dist/chunk-CO4YCIIA.js.map +0 -1
  113. package/dist/chunk-EW27SCCC.js +0 -2
  114. package/dist/chunk-EW27SCCC.js.map +0 -1
  115. package/dist/chunk-GOLZ6NEL.js +0 -111
  116. package/dist/chunk-GOLZ6NEL.js.map +0 -1
  117. package/dist/chunk-JGXE2YNV.js +0 -46
  118. package/dist/chunk-JGXE2YNV.js.map +0 -1
  119. package/dist/chunk-KX626FN4.js +0 -6
  120. package/dist/chunk-KX626FN4.js.map +0 -1
  121. package/dist/chunk-MTRWXRFF.js +0 -380
  122. package/dist/chunk-MTRWXRFF.js.map +0 -1
  123. package/dist/chunk-N67JZAXU.js +0 -2
  124. package/dist/chunk-N67JZAXU.js.map +0 -1
  125. package/dist/chunk-OPKQNLGX.js +0 -450
  126. package/dist/chunk-OPKQNLGX.js.map +0 -1
  127. package/dist/chunk-OZOQKPJV.js +0 -102
  128. package/dist/chunk-OZOQKPJV.js.map +0 -1
  129. package/dist/chunk-VYLZ7UYM.js +0 -118
  130. package/dist/chunk-VYLZ7UYM.js.map +0 -1
  131. package/dist/chunk-WHP4I44J.js.map +0 -1
  132. package/dist/chunk-WJXU5F4Z.js +0 -53
  133. package/dist/chunk-WJXU5F4Z.js.map +0 -1
  134. package/dist/chunk-X5D5AV5N.js +0 -833
  135. package/dist/chunk-X5D5AV5N.js.map +0 -1
  136. package/dist/config-BLOKGMER.js +0 -2
  137. package/dist/config-mutator-RG7QY2EL.js +0 -2
  138. package/dist/doctor-ZTECTUHX.js +0 -2
  139. package/dist/editor-chat-RVLCKKB7.js +0 -137
  140. package/dist/editor-chat-RVLCKKB7.js.map +0 -1
  141. package/dist/heal-YEQYWX2L.js +0 -2
  142. package/dist/inbox-BIN2S5XN.js +0 -2
  143. package/dist/memory-extract-KRCHD3OP.js +0 -2
  144. package/dist/processes-RJ6RDP32.js +0 -2
  145. package/dist/program-GZOJIWTB.js +0 -2
  146. package/dist/providers-WVCMIW67.js +0 -2
  147. package/dist/registry-QZIUSQ5J.js +0 -2
  148. package/dist/rotation-memo-GMTZPMNE.js +0 -13
  149. package/dist/rotation-memo-GMTZPMNE.js.map +0 -1
  150. package/dist/scheduler-B2BQPV4M.js +0 -2
  151. package/dist/slack-6P7ZJ32Y.js +0 -3
  152. package/dist/slack-6P7ZJ32Y.js.map +0 -1
  153. package/dist/store-BAPDZHXE.js +0 -2
  154. package/dist/task-store-RHISEU6V.js +0 -2
  155. package/dist/telegram-PIYDRM46.js +0 -3
  156. package/dist/telegram-PIYDRM46.js.map +0 -1
  157. package/dist/types-ZRLHHCGB.js +0 -2
  158. package/dist/web/workflow-editor.global.js +0 -1452
  159. package/dist/web/workflow-editor.global.js.map +0 -1
  160. package/dist/whatsapp-PFRDMUMT.js +0 -3
  161. package/dist/whatsapp-PFRDMUMT.js.map +0 -1
  162. package/dist/wiki-53W5NLZV.js +0 -2
  163. package/dist/workspace-setup-DQCZX2NE.js +0 -2
  164. /package/dist/{agent-Y4U4R3ZZ.js.map → agent-QGZIAZMY.js.map} +0 -0
  165. /package/dist/{config-BLOKGMER.js.map → architect-SEPWMWS4.js.map} +0 -0
  166. /package/dist/{config-mutator-RG7QY2EL.js.map → builtin-FRKAQMFS.js.map} +0 -0
  167. /package/dist/{chunk-IKBHHTIT.js.map → chunk-5U35WAZF.js.map} +0 -0
  168. /package/dist/{chunk-7P5QRX5W.js.map → chunk-BFXONUUN.js.map} +0 -0
  169. /package/dist/{chunk-P3TJHGO5.js.map → chunk-FDMWOPEL.js.map} +0 -0
  170. /package/dist/{chunk-NOF4HSGK.js.map → chunk-H5D7ATXS.js.map} +0 -0
  171. /package/dist/{chunk-4ITQP3XL.js.map → chunk-JP5IEXR7.js.map} +0 -0
  172. /package/dist/{doctor-ZTECTUHX.js.map → client-GGVVLOOF.js.map} +0 -0
  173. /package/dist/{compaction-BTUJJ3LJ.js.map → compaction-NWEMOSHA.js.map} +0 -0
  174. /package/dist/{heal-YEQYWX2L.js.map → config-7FSZFRTQ.js.map} +0 -0
  175. /package/dist/{inbox-BIN2S5XN.js.map → config-mutator-POCOYYJ4.js.map} +0 -0
  176. /package/dist/{context-planner-I7ID7XF3.js.map → context-planner-45GEWKGL.js.map} +0 -0
  177. /package/dist/{memory-extract-KRCHD3OP.js.map → doctor-DHLBEKA4.js.map} +0 -0
  178. /package/dist/{processes-RJ6RDP32.js.map → heal-HZ3EQD52.js.map} +0 -0
  179. /package/dist/{program-GZOJIWTB.js.map → memory-extract-AENFVVO5.js.map} +0 -0
  180. /package/dist/{providers-WVCMIW67.js.map → processes-UIC4XXA6.js.map} +0 -0
  181. /package/dist/{registry-QZIUSQ5J.js.map → program-WVAVJFND.js.map} +0 -0
  182. /package/dist/{scheduler-B2BQPV4M.js.map → providers-L27BJ5A6.js.map} +0 -0
  183. /package/dist/{store-BAPDZHXE.js.map → registry-T36ZIAWV.js.map} +0 -0
  184. /package/dist/{task-store-RHISEU6V.js.map → scheduler-GH7TIKYS.js.map} +0 -0
  185. /package/dist/{types-ZRLHHCGB.js.map → surface-usage-PRL6Z4U3.js.map} +0 -0
  186. /package/dist/{wiki-53W5NLZV.js.map → wiki-M6YNRFC4.js.map} +0 -0
  187. /package/dist/{workspace-setup-DQCZX2NE.js.map → workspace-setup-TBQAHYHJ.js.map} +0 -0
@@ -1,30 +1,67 @@
1
- var p=`:root {
2
- --ax-bg: oklch(0.16 0.010 265);
3
- --ax-bg-elev: oklch(0.19 0.012 265);
4
- --ax-surface: oklch(0.21 0.012 265);
5
- --ax-surface-2: oklch(0.24 0.014 265);
6
- --ax-surface-3: oklch(0.27 0.016 265);
7
- --ax-border: oklch(0.29 0.014 265);
8
- --ax-border-2: oklch(0.35 0.016 265);
9
- --ax-text: oklch(0.95 0.005 265);
10
- --ax-text-2: oklch(0.80 0.008 265);
11
- --ax-muted: oklch(0.60 0.010 265);
12
- --ax-accent: oklch(0.78 0.13 165);
13
- --ax-accent-2: oklch(0.55 0.11 165);
14
- --ax-warn: oklch(0.80 0.14 75);
15
- --ax-err: oklch(0.68 0.19 25);
16
- --ax-info: oklch(0.78 0.10 220);
17
- --ax-radius: 6px;
18
- --ax-radius-lg: 8px;
19
- --ax-radius-sm: 5px;
1
+ import{c as s,d as l,e as c,f as p}from"./chunk-LDHPMJ7M.js";var n=`:root {
2
+ /* --- Brand (agentina) --------------------------------------------- */
3
+ --ax-blue: #2979FF;
4
+ --ax-blue-d: #1B5FD9;
5
+ --ax-blue-t: #E7F0FF;
6
+ --ax-blue-e: #A9CBFF;
7
+ --ax-green: #22B573;
8
+ --ax-green-d: #178F58;
9
+ --ax-green-e: #A9E8C9;
10
+ --ax-amber: #FFB300;
11
+ --ax-amber-e: #FFE08A;
12
+ --ax-amber-t: #FFFCF5;
13
+ --ax-red: #F23A3A;
14
+ --ax-red-t: #FEECEC;
15
+ --ax-red-e: #F9C1C1;
16
+
17
+ /* --- Surfaces + text ---------------------------------------------- */
18
+ --ax-bg: #f8f9fa;
19
+ --ax-bg-elev: #f1f3f4;
20
+ --ax-surface: #ffffff;
21
+ --ax-surface-2: #f8f9fa;
22
+ --ax-surface-3: #f1f3f4;
23
+ --ax-border: #e8eaed;
24
+ --ax-border-2: #dadce0;
25
+ --ax-text: #202124;
26
+ --ax-text-2: #5f6368;
27
+ --ax-muted: #9aa0a6;
28
+
29
+ /* --- Semantic ------------------------------------------------------ */
30
+ --ax-accent: var(--ax-blue);
31
+ --ax-accent-2: var(--ax-blue-d);
32
+ --ax-accent-t: var(--ax-blue-t);
33
+ --ax-ok: var(--ax-green);
34
+ --ax-warn: var(--ax-amber);
35
+ --ax-err: var(--ax-red);
36
+ --ax-info: var(--ax-blue);
37
+
38
+ /* --- Shape ---------------------------------------------------------
39
+ The offset shadow is the signature move: a solid, un-blurred drop in a
40
+ darker shade of the element's own colour. It reads as a physical edge
41
+ rather than a glow, and it is what stops flat 2px-bordered boxes from
42
+ looking like a wireframe. */
43
+ --ax-border-w: 2px;
44
+ --ax-radius: 16px;
45
+ --ax-radius-lg: 20px;
46
+ --ax-radius-sm: 12px;
47
+ --ax-radius-pill: 999px;
48
+ --ax-shadow: 0 3px 0 var(--ax-border);
49
+ --ax-shadow-lg: 0 4px 0 var(--ax-border-2);
50
+ --ax-shadow-accent: 0 4px 0 var(--ax-blue-d);
51
+ --ax-shadow-ok: 0 4px 0 var(--ax-green-d);
52
+
53
+ /* --- Spacing ------------------------------------------------------- */
20
54
  --ax-pad: 16px;
21
55
  --ax-pad-sm: 10px;
22
56
  --ax-gap: 12px;
23
- --ax-font: "IBM Plex Sans", -apple-system, "Segoe UI", sans-serif;
24
- --ax-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Consolas, monospace;
25
- --ax-fs: 13px;
26
- --ax-fs-sm: 12px;
27
- --ax-fs-xs: 11px;
57
+
58
+ /* --- Type ---------------------------------------------------------- */
59
+ --ax-font: "Outfit", -apple-system, "Segoe UI", system-ui, sans-serif;
60
+ --ax-mono: "Roboto Mono", ui-monospace, "SF Mono", Consolas, monospace;
61
+ --ax-fs: 14px;
62
+ --ax-fs-sm: 13px;
63
+ --ax-fs-xs: 12px;
64
+
28
65
  /* Legacy aliases so older CSS blocks keep rendering until they're ported. */
29
66
  --bg: var(--ax-bg);
30
67
  --card: var(--ax-surface);
@@ -33,40 +70,48 @@ var p=`:root {
33
70
  --text: var(--ax-text);
34
71
  --muted: var(--ax-muted);
35
72
  --accent: var(--ax-accent);
36
- --green: var(--ax-accent);
37
73
  --yellow: var(--ax-warn);
38
74
  --red: var(--ax-err);
39
75
  --blue: var(--ax-info);
40
76
  --gray: var(--ax-muted);
41
- color-scheme: dark;
42
- }
43
- [data-theme="light"] {
44
- --ax-bg: oklch(0.98 0.002 265);
45
- --ax-bg-elev: oklch(0.96 0.003 265);
46
- --ax-surface: oklch(0.99 0.002 265);
47
- --ax-surface-2: oklch(0.955 0.003 265);
48
- --ax-surface-3: oklch(0.92 0.004 265);
49
- --ax-border: oklch(0.88 0.006 265);
50
- --ax-border-2: oklch(0.78 0.008 265);
51
- --ax-text: oklch(0.22 0.010 265);
52
- --ax-text-2: oklch(0.36 0.010 265);
53
- --ax-muted: oklch(0.54 0.010 265);
54
- --ax-accent: oklch(0.55 0.14 165);
55
77
  color-scheme: light;
56
78
  }
57
- [data-theme="crt"] {
58
- --ax-bg: #05140a;
59
- --ax-bg-elev: #061a0d;
60
- --ax-surface: #08201f;
61
- --ax-surface-2: #0b2922;
62
- --ax-surface-3: #0e3329;
63
- --ax-border: #164a30;
64
- --ax-border-2: #1f6a44;
65
- --ax-text: #b7ffcc;
66
- --ax-text-2: #83e3a8;
67
- --ax-muted: #4f9a73;
68
- --ax-accent: #6dff9e;
69
- --ax-font: "IBM Plex Mono", ui-monospace, monospace;
79
+
80
+ /* Dark is not a tint of light \u2014 the brand colours are lifted toward their
81
+ tints so they keep contrast against a dark ground, and the offset shadow
82
+ goes DARKER than the surface instead of lighter. Same shape language,
83
+ inverted physics. */
84
+ [data-theme="dark"] {
85
+ --ax-blue: #6BA5FF;
86
+ --ax-blue-d: #1B5FD9;
87
+ --ax-blue-t: #16233d;
88
+ --ax-blue-e: #2f4d7a;
89
+ --ax-green: #4ED89B;
90
+ --ax-green-d: #178F58;
91
+ --ax-green-e: #1e4a36;
92
+ --ax-amber: #FFC948;
93
+ --ax-amber-e: #4a3a12;
94
+ --ax-amber-t: #2a2313;
95
+ --ax-red: #FF6B6B;
96
+ --ax-red-t: #3a1c1c;
97
+ --ax-red-e: #6b2f2f;
98
+
99
+ --ax-bg: #14161a;
100
+ --ax-bg-elev: #191c21;
101
+ --ax-surface: #1e2228;
102
+ --ax-surface-2: #23272e;
103
+ --ax-surface-3: #2a2f37;
104
+ --ax-border: #2f353e;
105
+ --ax-border-2: #3d444f;
106
+ --ax-text: #f1f3f4;
107
+ --ax-text-2: #b6bcc4;
108
+ --ax-muted: #858c96;
109
+
110
+ --ax-shadow: 0 3px 0 #0e1013;
111
+ --ax-shadow-lg: 0 4px 0 #0e1013;
112
+ --ax-shadow-accent: 0 4px 0 #14396e;
113
+ --ax-shadow-ok: 0 4px 0 #11402c;
114
+ color-scheme: dark;
70
115
  }
71
116
 
72
117
  /* Base element resets shared across every page. */
@@ -75,16 +120,16 @@ html, body {
75
120
  margin: 0; min-height: 100vh;
76
121
  background: var(--ax-bg); color: var(--ax-text);
77
122
  font-family: var(--ax-font); font-size: var(--ax-fs);
78
- -webkit-font-smoothing: antialiased; font-feature-settings: "ss01", "cv01";
123
+ -webkit-font-smoothing: antialiased;
79
124
  }
80
125
  pre, code, .ax-mono {
81
126
  font-family: var(--ax-mono); font-variant-numeric: tabular-nums;
82
127
  letter-spacing: -0.01em;
83
128
  }
84
- a { color: var(--ax-accent); text-decoration: none; }
85
- a:hover { text-decoration: underline; }
129
+ a { color: var(--ax-accent); text-decoration: none; font-weight: 600; }
130
+ a:hover { color: var(--ax-accent-2); text-decoration: underline; }
86
131
  .ax-muted { color: var(--ax-muted); }
87
- .ax-accent { color: var(--ax-accent); }`;var g=`
132
+ .ax-accent { color: var(--ax-accent); }`;var x=`
88
133
  /* --- Dots --- */
89
134
  .ax-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--ax-muted); }
90
135
  .ax-dot--ok, .ax-dot--live { background: var(--ax-accent); }
@@ -105,8 +150,9 @@ a:hover { text-decoration: underline; }
105
150
  /* --- Badges --- */
106
151
  .ax-badge {
107
152
  display: inline-flex; align-items: center; gap: 4px;
108
- padding: 1px 7px; border-radius: 3px; font-size: var(--ax-fs-xs); line-height: 16px;
109
- border: 1px solid var(--ax-border-2); color: var(--ax-text-2); background: transparent;
153
+ padding: 2px 10px; border-radius: var(--ax-radius-pill); font-size: var(--ax-fs-xs); line-height: 18px;
154
+ border: var(--ax-border-w) solid var(--ax-border-2); color: var(--ax-text-2);
155
+ background: var(--ax-surface); font-weight: 600;
110
156
  }
111
157
  .ax-badge--mono {
112
158
  font-family: var(--ax-mono); letter-spacing: 0.02em;
@@ -136,20 +182,25 @@ a:hover { text-decoration: underline; }
136
182
 
137
183
  /* --- Buttons --- */
138
184
  .ax-btn {
139
- background: transparent; color: var(--ax-text-2);
140
- border: 1px solid var(--ax-border-2); border-radius: var(--ax-radius);
141
- padding: 7px 14px; font: inherit; font-size: var(--ax-fs); cursor: pointer;
142
- transition: border-color 0.1s, color 0.1s, background 0.1s;
143
- line-height: 1.4;
185
+ background: var(--ax-surface); color: var(--ax-text-2);
186
+ border: var(--ax-border-w) solid var(--ax-border-2); border-radius: var(--ax-radius);
187
+ padding: 8px 16px; font: inherit; font-size: var(--ax-fs); font-weight: 600;
188
+ cursor: pointer; line-height: 1.4;
189
+ box-shadow: var(--ax-shadow);
190
+ transition: border-color 0.1s, color 0.1s, background 0.1s, transform 0.06s, box-shadow 0.06s;
144
191
  }
145
192
  .ax-btn:hover:not(:disabled) { color: var(--ax-text); border-color: var(--ax-accent); }
146
- .ax-btn:disabled { opacity: 0.5; cursor: not-allowed; }
193
+ /* The offset shadow collapses on press so the control physically sinks \u2014
194
+ the whole point of an un-blurred drop rather than a glow. */
195
+ .ax-btn:active:not(:disabled) { transform: translateY(2px); box-shadow: 0 1px 0 var(--ax-border); }
196
+ .ax-btn:disabled { opacity: 0.5; cursor: not-allowed; box-shadow: none; }
147
197
 
148
198
  .ax-btn--primary {
149
199
  background: color-mix(in oklch, var(--ax-accent) 15%, var(--ax-surface));
150
200
  color: var(--ax-accent);
151
201
  border-color: color-mix(in oklch, var(--ax-accent) 50%, var(--ax-border-2));
152
- font-weight: 600;
202
+ font-weight: 700;
203
+ box-shadow: var(--ax-shadow-accent);
153
204
  }
154
205
  .ax-btn--primary:hover:not(:disabled) {
155
206
  background: color-mix(in oklch, var(--ax-accent) 25%, var(--ax-surface));
@@ -158,12 +209,14 @@ a:hover { text-decoration: underline; }
158
209
 
159
210
  .ax-btn--ghost {
160
211
  background: transparent; color: var(--ax-muted);
161
- border-color: var(--ax-border);
212
+ border-color: var(--ax-border); box-shadow: none;
162
213
  }
214
+ .ax-btn--ghost:active:not(:disabled) { transform: none; }
163
215
 
164
216
  .ax-btn--danger {
165
217
  color: var(--ax-err);
166
- border-color: color-mix(in oklch, var(--ax-err) 50%, var(--ax-border-2));
218
+ border-color: var(--ax-red-e);
219
+ box-shadow: 0 4px 0 var(--ax-red-e);
167
220
  }
168
221
  .ax-btn--danger:hover:not(:disabled) {
169
222
  background: color-mix(in oklch, var(--ax-err) 12%, var(--ax-surface));
@@ -173,20 +226,21 @@ a:hover { text-decoration: underline; }
173
226
  /* --- Chips (read-only labels used in kanban filters, etc.) --- */
174
227
  .ax-chip {
175
228
  display: inline-block; padding: 0 6px; font-family: var(--ax-mono);
176
- font-size: 10px; line-height: 16px; border-radius: 3px; color: var(--ax-muted);
177
- border: 1px solid var(--ax-border); background: var(--ax-surface);
229
+ font-size: 11px; line-height: 18px; border-radius: var(--ax-radius-pill); color: var(--ax-text-2);
230
+ border: var(--ax-border-w) solid var(--ax-border); background: var(--ax-surface); font-weight: 600;
178
231
  }
179
232
 
180
233
  /* --- Cards --- */
181
234
  .ax-card {
182
- background: var(--ax-surface); border: 1px solid var(--ax-border);
183
- border-radius: var(--ax-radius); padding: var(--ax-pad);
235
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border);
236
+ border-radius: var(--ax-radius-lg); padding: var(--ax-pad);
237
+ box-shadow: var(--ax-shadow);
184
238
  }
185
239
 
186
240
  /* Step cards used by the setup wizard / onboarding-style flows. */
187
241
  .ax-step {
188
- background: var(--ax-surface); border: 1px solid var(--ax-border);
189
- border-radius: 8px; padding: 20px 22px; margin: 14px 0;
242
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border);
243
+ border-radius: var(--ax-radius); padding: 20px 22px; margin: 14px 0;
190
244
  }
191
245
  .ax-step__head {
192
246
  font-size: var(--ax-fs-xs); font-weight: 600; text-transform: uppercase;
@@ -194,7 +248,7 @@ a:hover { text-decoration: underline; }
194
248
  margin: 0 0 14px; display: flex; align-items: center; gap: 10px;
195
249
  }
196
250
  .ax-step__num {
197
- width: 22px; height: 22px; border-radius: 4px;
251
+ width: 22px; height: 22px; border-radius: var(--ax-radius-sm);
198
252
  background: color-mix(in oklch, var(--ax-accent) 15%, var(--ax-surface));
199
253
  border: 1px solid color-mix(in oklch, var(--ax-accent) 45%, var(--ax-border-2));
200
254
  color: var(--ax-accent);
@@ -209,7 +263,7 @@ a:hover { text-decoration: underline; }
209
263
  gap: var(--ax-gap); padding: var(--ax-pad) var(--ax-pad) 0;
210
264
  }
211
265
  .ax-stat {
212
- background: var(--ax-surface); border: 1px solid var(--ax-border);
266
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border);
213
267
  border-radius: var(--ax-radius); padding: 14px 16px;
214
268
  }
215
269
  .ax-stat__label {
@@ -243,8 +297,8 @@ a:hover { text-decoration: underline; }
243
297
  .ax-field input, .ax-field textarea, .ax-field select {
244
298
  width: 100%;
245
299
  background: var(--ax-bg); color: var(--ax-text);
246
- border: 1px solid var(--ax-border-2); border-radius: var(--ax-radius);
247
- padding: 8px 10px; font: inherit; font-size: var(--ax-fs);
300
+ border: var(--ax-border-w) solid var(--ax-border-2); border-radius: var(--ax-radius);
301
+ padding: 11px 14px; font: inherit; font-size: var(--ax-fs);
248
302
  transition: border-color 0.1s ease;
249
303
  }
250
304
  .ax-field input:focus, .ax-field textarea:focus, .ax-field select:focus {
@@ -310,7 +364,7 @@ a:hover { text-decoration: underline; }
310
364
  }
311
365
  .ax-page-head .ax-lead code {
312
366
  font-family: var(--ax-mono); font-size: 11.5px;
313
- background: var(--ax-surface-2); padding: 1px 6px; border-radius: 3px;
367
+ background: var(--ax-surface-2); padding: 1px 6px; border-radius: var(--ax-radius-sm);
314
368
  }
315
369
 
316
370
  /* --- Health strip --- */
@@ -319,7 +373,7 @@ a:hover { text-decoration: underline; }
319
373
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
320
374
  }
321
375
  .ax-health-card {
322
- background: var(--ax-surface); border: 1px solid var(--ax-border);
376
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border);
323
377
  border-radius: var(--ax-radius-sm); padding: 12px 14px;
324
378
  display: flex; align-items: center; gap: 11px;
325
379
  transition: border-color 120ms;
@@ -360,8 +414,8 @@ a:hover { text-decoration: underline; }
360
414
  .ax-wit b { color: var(--ax-text); font-weight: 600; }
361
415
  .ax-wit code {
362
416
  font-family: var(--ax-mono); font-size: 11.5px;
363
- background: var(--ax-bg); padding: 1px 5px; border-radius: 3px;
364
- border: 1px solid var(--ax-border);
417
+ background: var(--ax-bg); padding: 1px 5px; border-radius: var(--ax-radius-sm);
418
+ border: var(--ax-border-w) solid var(--ax-border);
365
419
  }
366
420
  .ax-wit .ax-wit__dismiss {
367
421
  background: transparent; border: 0; color: var(--ax-muted);
@@ -375,7 +429,7 @@ a:hover { text-decoration: underline; }
375
429
  display: flex; align-items: flex-start; gap: 16px; margin-bottom: 18px;
376
430
  }
377
431
  .ax-section-head__icon {
378
- width: 44px; height: 44px; border-radius: 10px;
432
+ width: 44px; height: 44px; border-radius: var(--ax-radius);
379
433
  background: color-mix(in oklch, var(--ax-accent) 10%, var(--ax-surface));
380
434
  border: 1px solid color-mix(in oklch, var(--ax-accent) 25%, var(--ax-border));
381
435
  display: grid; place-items: center; flex-shrink: 0;
@@ -395,7 +449,7 @@ a:hover { text-decoration: underline; }
395
449
  /* --- Row cards (collapsible list items) --- */
396
450
  .ax-stack { display: flex; flex-direction: column; gap: 10px; }
397
451
  .ax-row-card {
398
- background: var(--ax-surface); border: 1px solid var(--ax-border);
452
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border);
399
453
  border-radius: var(--ax-radius-lg); padding: 14px 16px;
400
454
  transition: border-color 160ms, transform 160ms;
401
455
  }
@@ -439,14 +493,14 @@ a:hover { text-decoration: underline; }
439
493
  .ax-trigger-pill {
440
494
  font-family: var(--ax-mono); font-size: 11px;
441
495
  padding: 2px 8px; background: var(--ax-bg);
442
- border: 1px solid var(--ax-border); border-radius: 4px;
496
+ border: var(--ax-border-w) solid var(--ax-border); border-radius: var(--ax-radius-sm);
443
497
  color: var(--ax-text);
444
498
  }
445
499
 
446
500
  /* --- Avatars (coloured initial square) --- */
447
501
  .ax-avatar {
448
- width: 36px; height: 36px; border-radius: 9px; flex-shrink: 0;
449
- background: var(--ax-surface-2); border: 1px solid var(--ax-border-2);
502
+ width: 36px; height: 36px; border-radius: var(--ax-radius); flex-shrink: 0;
503
+ background: var(--ax-surface-2); border: var(--ax-border-w) solid var(--ax-border-2);
450
504
  display: grid; place-items: center;
451
505
  font-weight: 600; font-size: 14px; letter-spacing: -0.01em;
452
506
  color: var(--ax-text);
@@ -481,8 +535,8 @@ a:hover { text-decoration: underline; }
481
535
  .ax-pill {
482
536
  display: inline-flex; align-items: center; gap: 5px;
483
537
  font-size: 11px; padding: 2px 8px; line-height: 16px;
484
- border-radius: 10px; background: var(--ax-surface-2);
485
- color: var(--ax-text-2); border: 1px solid var(--ax-border);
538
+ border-radius: var(--ax-radius); background: var(--ax-surface-2);
539
+ color: var(--ax-text-2); border: var(--ax-border-w) solid var(--ax-border);
486
540
  white-space: nowrap;
487
541
  }
488
542
  .ax-pill .ax-pill__dot {
@@ -510,7 +564,7 @@ a:hover { text-decoration: underline; }
510
564
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px;
511
565
  }
512
566
  .ax-connector {
513
- background: var(--ax-surface); border: 1px solid var(--ax-border);
567
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border);
514
568
  border-radius: var(--ax-radius-lg); padding: 18px 18px 16px;
515
569
  cursor: pointer; position: relative;
516
570
  transition: border-color 160ms, transform 160ms, background 160ms;
@@ -527,10 +581,10 @@ a:hover { text-decoration: underline; }
527
581
  display: flex; align-items: center; gap: 12px; margin-bottom: 10px;
528
582
  }
529
583
  .ax-connector__logo {
530
- width: 40px; height: 40px; border-radius: 10px;
584
+ width: 40px; height: 40px; border-radius: var(--ax-radius);
531
585
  display: grid; place-items: center;
532
586
  font-weight: 700; font-size: 15px; letter-spacing: -0.02em; flex-shrink: 0;
533
- background: var(--ax-surface-2); border: 1px solid var(--ax-border-2);
587
+ background: var(--ax-surface-2); border: var(--ax-border-w) solid var(--ax-border-2);
534
588
  color: var(--ax-text); font-family: var(--ax-mono);
535
589
  }
536
590
  .ax-connector__meta { flex: 1; }
@@ -558,7 +612,7 @@ a:hover { text-decoration: underline; }
558
612
  .ax-tab-count {
559
613
  font-family: var(--ax-mono); font-size: 10px;
560
614
  padding: 1px 6px; background: var(--ax-surface-2);
561
- color: var(--ax-muted); border-radius: 9px; line-height: 14px;
615
+ color: var(--ax-muted); border-radius: var(--ax-radius); line-height: 14px;
562
616
  margin-left: 6px;
563
617
  }
564
618
  .is-active .ax-tab-count {
@@ -585,8 +639,8 @@ a:hover { text-decoration: underline; }
585
639
  .ax-toast {
586
640
  position: fixed; bottom: 24px; right: 24px;
587
641
  background: var(--ax-surface-2);
588
- border: 1px solid var(--ax-accent); color: var(--ax-text);
589
- padding: 10px 16px; border-radius: 6px; font-size: 12.5px;
642
+ border: var(--ax-border-w) solid var(--ax-accent); color: var(--ax-text);
643
+ padding: 10px 16px; border-radius: var(--ax-radius); font-size: 12.5px;
590
644
  display: flex; align-items: center; gap: 10px;
591
645
  box-shadow: 0 10px 30px rgba(0,0,0,0.3);
592
646
  opacity: 0; transform: translateY(10px); pointer-events: none;
@@ -605,12 +659,12 @@ a:hover { text-decoration: underline; }
605
659
  .ax-modal-bd.is-show { display: flex; }
606
660
  .ax-modal {
607
661
  width: min(560px, 94vw); max-height: 86vh; overflow: auto;
608
- background: var(--ax-surface); border: 1px solid var(--ax-border-2);
609
- border-radius: 12px; padding: 0;
662
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border-2);
663
+ border-radius: var(--ax-radius-lg); padding: 0;
610
664
  box-shadow: 0 20px 60px rgba(0,0,0,0.5);
611
665
  }
612
666
  .ax-modal > header {
613
- padding: 18px 22px 10px; border-bottom: 1px solid var(--ax-border);
667
+ padding: 18px 22px 10px; border-bottom: var(--ax-border-w) solid var(--ax-border);
614
668
  display: flex; align-items: center; gap: 10px;
615
669
  }
616
670
  .ax-modal > header h3 {
@@ -624,12 +678,12 @@ a:hover { text-decoration: underline; }
624
678
  .ax-modal__foot {
625
679
  padding: 12px 22px 18px;
626
680
  display: flex; justify-content: flex-end; gap: 8px;
627
- border-top: 1px solid var(--ax-border);
681
+ border-top: var(--ax-border-w) solid var(--ax-border);
628
682
  }
629
683
 
630
684
  /* --- Mesh hero (enable toggle + SVG network viz) --- */
631
685
  .ax-mesh-hero {
632
- background: var(--ax-surface); border: 1px solid var(--ax-border);
686
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border);
633
687
  border-radius: var(--ax-radius-lg); padding: 20px;
634
688
  display: grid; grid-template-columns: 1fr 240px; gap: 24px;
635
689
  align-items: center; margin-bottom: 18px;
@@ -658,13 +712,13 @@ a:hover { text-decoration: underline; }
658
712
  /* Pill-shaped toggle (used for the mesh enable switch + similar binary actions). */
659
713
  .ax-mesh-toggle {
660
714
  display: inline-flex; align-items: center; gap: 10px;
661
- background: var(--ax-bg-elev); border: 1px solid var(--ax-border);
715
+ background: var(--ax-bg-elev); border: var(--ax-border-w) solid var(--ax-border);
662
716
  border-radius: 20px; padding: 4px 14px 4px 5px;
663
717
  cursor: pointer; user-select: none; font-size: 12px;
664
718
  }
665
719
  .ax-mesh-switch {
666
720
  width: 32px; height: 18px; background: var(--ax-surface-3);
667
- border-radius: 9px; position: relative; transition: background 160ms;
721
+ border-radius: var(--ax-radius); position: relative; transition: background 160ms;
668
722
  }
669
723
  .ax-mesh-switch::after {
670
724
  content: ""; position: absolute; top: 2px; left: 2px;
@@ -680,7 +734,7 @@ a:hover { text-decoration: underline; }
680
734
 
681
735
  /* --- Schedule builder: sentence-builder + pill picks + day picker --- */
682
736
  .ax-builder {
683
- background: var(--ax-surface); border: 1px solid var(--ax-border);
737
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border);
684
738
  border-radius: var(--ax-radius-lg); padding: 20px;
685
739
  }
686
740
  .ax-builder h3 {
@@ -698,7 +752,7 @@ a:hover { text-decoration: underline; }
698
752
  }
699
753
  .ax-builder__inp {
700
754
  width: 100%; background: var(--ax-bg); color: var(--ax-text);
701
- border: 1px solid var(--ax-border); border-radius: 5px;
755
+ border: var(--ax-border-w) solid var(--ax-border); border-radius: var(--ax-radius-sm);
702
756
  padding: 8px 11px; font: inherit; font-size: 13px;
703
757
  transition: border-color 120ms, box-shadow 120ms;
704
758
  }
@@ -710,13 +764,13 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
710
764
 
711
765
  .ax-mode-switch {
712
766
  display: inline-flex; background: var(--ax-surface-2);
713
- border: 1px solid var(--ax-border); border-radius: 6px; padding: 3px;
767
+ border: var(--ax-border-w) solid var(--ax-border); border-radius: var(--ax-radius); padding: 3px;
714
768
  margin-bottom: 14px;
715
769
  }
716
770
  .ax-mode-switch button {
717
771
  background: transparent; border: 0; color: var(--ax-muted);
718
772
  padding: 6px 14px; font: inherit; font-size: 12px; cursor: pointer;
719
- border-radius: 4px; font-weight: 500;
773
+ border-radius: var(--ax-radius-sm); font-weight: 500;
720
774
  }
721
775
  .ax-mode-switch button.is-active {
722
776
  background: var(--ax-surface); color: var(--ax-text);
@@ -726,13 +780,13 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
726
780
  display: flex; align-items: center; gap: 8px;
727
781
  font-size: 16px; line-height: 1.9; flex-wrap: wrap;
728
782
  margin-bottom: 14px; padding: 14px 16px;
729
- background: var(--ax-bg-elev); border: 1px solid var(--ax-border);
783
+ background: var(--ax-bg-elev); border: var(--ax-border-w) solid var(--ax-border);
730
784
  border-radius: var(--ax-radius-sm);
731
785
  }
732
786
  .ax-sentence > span { color: var(--ax-text-2); }
733
787
  .ax-pill-pick {
734
- background: var(--ax-surface); border: 1px solid var(--ax-border-2);
735
- color: var(--ax-accent); padding: 3px 10px; border-radius: 6px;
788
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border-2);
789
+ color: var(--ax-accent); padding: 3px 10px; border-radius: var(--ax-radius);
736
790
  font-size: 14px; font-family: inherit; cursor: pointer; font-weight: 500;
737
791
  }
738
792
  .ax-pill-pick:hover { background: var(--ax-surface-2); border-color: var(--ax-accent); }
@@ -740,8 +794,8 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
740
794
 
741
795
  .ax-day-picker { display: flex; gap: 4px; }
742
796
  .ax-day-picker button {
743
- width: 30px; height: 30px; border-radius: 6px;
744
- background: var(--ax-surface); border: 1px solid var(--ax-border);
797
+ width: 30px; height: 30px; border-radius: var(--ax-radius);
798
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border);
745
799
  color: var(--ax-muted); font: inherit; font-size: 11px; font-weight: 500;
746
800
  cursor: pointer;
747
801
  }
@@ -767,44 +821,44 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
767
821
  }
768
822
  .ax-cron-hints code {
769
823
  font-family: var(--ax-mono); color: var(--ax-text);
770
- background: var(--ax-bg); border: 1px solid var(--ax-border);
771
- padding: 1px 6px; border-radius: 3px; margin-right: 6px;
824
+ background: var(--ax-bg); border: var(--ax-border-w) solid var(--ax-border);
825
+ padding: 1px 6px; border-radius: var(--ax-radius-sm); margin-right: 6px;
772
826
  }
773
827
 
774
828
  /* --- JSON tree viewer (Advanced tab) --- */
775
829
  .ax-jv-toolbar {
776
830
  display: flex; align-items: center; gap: 8px;
777
831
  padding: 8px 12px; background: var(--ax-bg-elev);
778
- border: 1px solid var(--ax-border); border-bottom: 0;
832
+ border: var(--ax-border-w) solid var(--ax-border); border-bottom: 0;
779
833
  border-radius: var(--ax-radius) var(--ax-radius) 0 0;
780
834
  }
781
835
  .ax-jv-toolbar .ax-jv-spacer { flex: 1; }
782
836
  .ax-jv-toolbar .ax-jv-seg {
783
837
  display: inline-flex; background: var(--ax-surface);
784
- border: 1px solid var(--ax-border); border-radius: 5px; padding: 2px;
838
+ border: var(--ax-border-w) solid var(--ax-border); border-radius: var(--ax-radius-sm); padding: 2px;
785
839
  }
786
840
  .ax-jv-toolbar .ax-jv-seg button {
787
841
  background: transparent; border: 0; color: var(--ax-muted);
788
842
  padding: 4px 10px; font: inherit; font-size: 11px;
789
- cursor: pointer; border-radius: 4px;
843
+ cursor: pointer; border-radius: var(--ax-radius-sm);
790
844
  }
791
845
  .ax-jv-toolbar .ax-jv-seg button.is-active { background: var(--ax-surface-2); color: var(--ax-text); }
792
846
  .ax-jv-search {
793
- background: var(--ax-surface); border: 1px solid var(--ax-border);
794
- border-radius: 5px; padding: 4px 9px; font: inherit; font-size: 12px;
847
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border);
848
+ border-radius: var(--ax-radius-sm); padding: 4px 9px; font: inherit; font-size: 12px;
795
849
  color: var(--ax-text); width: 180px;
796
850
  }
797
851
  .ax-jv-search:focus { outline: none; border-color: var(--ax-accent); }
798
852
 
799
853
  .ax-jv-viewer {
800
- background: var(--ax-bg-elev); border: 1px solid var(--ax-border);
854
+ background: var(--ax-bg-elev); border: var(--ax-border-w) solid var(--ax-border);
801
855
  border-top: 0; border-radius: 0 0 var(--ax-radius) var(--ax-radius);
802
856
  font-family: var(--ax-mono); font-size: 12.5px; line-height: 1.75;
803
857
  padding: 14px 18px; max-height: 620px; overflow: auto;
804
858
  }
805
859
  .ax-jv-line {
806
860
  display: flex; align-items: flex-start; padding: 1px 0; gap: 0;
807
- position: relative; border-radius: 3px; white-space: nowrap;
861
+ position: relative; border-radius: var(--ax-radius-sm); white-space: nowrap;
808
862
  }
809
863
  .ax-jv-line:hover { background: color-mix(in oklch, var(--ax-accent) 5%, transparent); }
810
864
  .ax-jv-line.is-match { background: color-mix(in oklch, var(--ax-warn) 16%, transparent); }
@@ -901,12 +955,12 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
901
955
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
902
956
  }
903
957
  .ax-stat-inline {
904
- background: var(--ax-surface); border: 1px solid var(--ax-border);
958
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border);
905
959
  border-radius: var(--ax-radius-sm); padding: 10px 12px;
906
960
  display: flex; align-items: center; gap: 11px;
907
961
  }
908
962
  .ax-stat-inline__icon {
909
- width: 26px; height: 26px; border-radius: 6px;
963
+ width: 26px; height: 26px; border-radius: var(--ax-radius);
910
964
  background: color-mix(in oklch, var(--ax-accent) 12%, var(--ax-surface-2));
911
965
  display: grid; place-items: center;
912
966
  color: var(--ax-accent); flex-shrink: 0;
@@ -934,7 +988,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
934
988
  }
935
989
  .ax-rail a {
936
990
  display: flex; align-items: center; gap: 10px;
937
- padding: 9px 11px; border-radius: 6px;
991
+ padding: 9px 11px; border-radius: var(--ax-radius);
938
992
  color: var(--ax-text-2); font-size: 13px; font-weight: 500;
939
993
  cursor: pointer; position: relative;
940
994
  transition: background 120ms, color 120ms;
@@ -953,12 +1007,12 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
953
1007
  .ax-rail a.is-active svg { color: var(--ax-accent); }
954
1008
  .ax-rail a.is-active::before {
955
1009
  content: ""; position: absolute; left: -3px; top: 7px; bottom: 7px;
956
- width: 2px; border-radius: 2px; background: var(--ax-accent);
1010
+ width: 2px; border-radius: var(--ax-radius-sm); background: var(--ax-accent);
957
1011
  }
958
1012
  .ax-rail__count {
959
1013
  margin-left: auto; font-family: var(--ax-mono);
960
1014
  font-size: 10px; padding: 1px 6px; background: var(--ax-surface-2);
961
- color: var(--ax-muted); border-radius: 9px; line-height: 14px;
1015
+ color: var(--ax-muted); border-radius: var(--ax-radius); line-height: 14px;
962
1016
  }
963
1017
  .ax-rail a.is-active .ax-rail__count {
964
1018
  background: color-mix(in oklch, var(--ax-accent) 22%, transparent);
@@ -972,7 +1026,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
972
1026
 
973
1027
  /* Main panel containers (one per section) */
974
1028
  .ax-panel {
975
- background: var(--ax-surface); border: 1px solid var(--ax-border);
1029
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border);
976
1030
  border-radius: var(--ax-radius-lg); padding: 22px;
977
1031
  }
978
1032
  .ax-panel + .ax-panel { margin-top: 12px; }
@@ -1011,12 +1065,12 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1011
1065
  }
1012
1066
  .ax-slider-row .ax-opts {
1013
1067
  display: flex; gap: 4px; background: var(--ax-bg);
1014
- border: 1px solid var(--ax-border); border-radius: 5px; padding: 2px;
1068
+ border: var(--ax-border-w) solid var(--ax-border); border-radius: var(--ax-radius-sm); padding: 2px;
1015
1069
  }
1016
1070
  .ax-slider-row .ax-opts button {
1017
1071
  background: transparent; border: 0; color: var(--ax-muted);
1018
1072
  padding: 5px 11px; font: inherit; font-size: 11.5px;
1019
- cursor: pointer; border-radius: 3px; white-space: nowrap;
1073
+ cursor: pointer; border-radius: var(--ax-radius-sm); white-space: nowrap;
1020
1074
  }
1021
1075
  .ax-slider-row .ax-opts button.is-active {
1022
1076
  background: var(--ax-surface-2); color: var(--ax-text);
@@ -1025,13 +1079,13 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1025
1079
  /* Sub-tabs (Guided/Freeform, CLAUDE.md/SOUL.md/IDENTITY.md) */
1026
1080
  .ax-subtabs {
1027
1081
  display: inline-flex; background: var(--ax-bg);
1028
- border: 1px solid var(--ax-border); border-radius: 6px;
1082
+ border: var(--ax-border-w) solid var(--ax-border); border-radius: var(--ax-radius);
1029
1083
  padding: 3px; margin-bottom: 16px;
1030
1084
  }
1031
1085
  .ax-subtabs button {
1032
1086
  background: transparent; border: 0; color: var(--ax-muted);
1033
1087
  padding: 6px 14px; font: inherit; font-size: 12px;
1034
- cursor: pointer; border-radius: 4px; font-weight: 500;
1088
+ cursor: pointer; border-radius: var(--ax-radius-sm); font-weight: 500;
1035
1089
  }
1036
1090
  .ax-subtabs button.is-active {
1037
1091
  background: var(--ax-surface-2); color: var(--ax-text);
@@ -1040,8 +1094,8 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1040
1094
  /* Trigger-word chips with inline input (for Wake words field) */
1041
1095
  .ax-triggers-edit {
1042
1096
  display: flex; flex-wrap: wrap; gap: 6px;
1043
- background: var(--ax-bg); border: 1px solid var(--ax-border);
1044
- padding: 7px; border-radius: 5px; min-height: 38px;
1097
+ background: var(--ax-bg); border: var(--ax-border-w) solid var(--ax-border);
1098
+ padding: 7px; border-radius: var(--ax-radius-sm); min-height: 38px;
1045
1099
  align-items: center; cursor: text;
1046
1100
  }
1047
1101
  .ax-triggers-edit:focus-within {
@@ -1054,12 +1108,12 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1054
1108
  padding: 3px 4px 3px 9px;
1055
1109
  background: color-mix(in oklch, var(--ax-accent) 16%, var(--ax-surface));
1056
1110
  border: 1px solid color-mix(in oklch, var(--ax-accent) 30%, var(--ax-border));
1057
- border-radius: 4px; color: var(--ax-accent);
1111
+ border-radius: var(--ax-radius-sm); color: var(--ax-accent);
1058
1112
  }
1059
1113
  .ax-trig-pill button {
1060
1114
  background: transparent; border: 0; color: currentColor;
1061
1115
  opacity: 0.6; cursor: pointer; font-size: 13px; line-height: 1;
1062
- padding: 0 2px; border-radius: 3px;
1116
+ padding: 0 2px; border-radius: var(--ax-radius-sm);
1063
1117
  }
1064
1118
  .ax-trig-pill button:hover {
1065
1119
  opacity: 1;
@@ -1080,7 +1134,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1080
1134
  position: absolute; top: 8px; right: 8px; display: flex; gap: 6px;
1081
1135
  }
1082
1136
  .ax-prompt-badges .ax-pbadge {
1083
- font-size: 10px; padding: 3px 7px; border-radius: 3px;
1137
+ font-size: 10px; padding: 3px 7px; border-radius: var(--ax-radius-sm);
1084
1138
  background: var(--ax-surface-2); color: var(--ax-muted);
1085
1139
  font-family: var(--ax-mono); letter-spacing: 0.03em;
1086
1140
  }
@@ -1100,12 +1154,12 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1100
1154
  .ax-search input { width: 100%; padding-left: 30px; }
1101
1155
  .ax-skill-filter {
1102
1156
  display: flex; gap: 4px; background: var(--ax-bg);
1103
- border: 1px solid var(--ax-border); border-radius: 5px; padding: 2px;
1157
+ border: var(--ax-border-w) solid var(--ax-border); border-radius: var(--ax-radius-sm); padding: 2px;
1104
1158
  }
1105
1159
  .ax-skill-filter button {
1106
1160
  background: transparent; border: 0; color: var(--ax-muted);
1107
1161
  padding: 5px 10px; font: inherit; font-size: 11.5px;
1108
- cursor: pointer; border-radius: 3px;
1162
+ cursor: pointer; border-radius: var(--ax-radius-sm);
1109
1163
  }
1110
1164
  .ax-skill-filter button.is-active {
1111
1165
  background: var(--ax-surface-2); color: var(--ax-text);
@@ -1115,7 +1169,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1115
1169
  gap: 10px;
1116
1170
  }
1117
1171
  .ax-skill-card {
1118
- background: var(--ax-bg-elev); border: 1px solid var(--ax-border);
1172
+ background: var(--ax-bg-elev); border: var(--ax-border-w) solid var(--ax-border);
1119
1173
  border-radius: var(--ax-radius-lg); padding: 14px;
1120
1174
  display: flex; flex-direction: column; gap: 8px;
1121
1175
  cursor: pointer; position: relative; overflow: hidden;
@@ -1141,7 +1195,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1141
1195
  }
1142
1196
  .ax-skill-card__top { display: flex; align-items: center; gap: 10px; }
1143
1197
  .ax-skill-card__icon {
1144
- width: 32px; height: 32px; border-radius: 7px;
1198
+ width: 32px; height: 32px; border-radius: var(--ax-radius);
1145
1199
  background: var(--ax-surface-2);
1146
1200
  display: grid; place-items: center; flex-shrink: 0;
1147
1201
  color: var(--ax-accent);
@@ -1180,18 +1234,18 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1180
1234
  .ax-callout b { color: var(--ax-text); }
1181
1235
  .ax-callout code {
1182
1236
  font-family: var(--ax-mono); font-size: 11.5px;
1183
- background: var(--ax-bg); padding: 1px 5px; border-radius: 3px;
1184
- border: 1px solid var(--ax-border);
1237
+ background: var(--ax-bg); padding: 1px 5px; border-radius: var(--ax-radius-sm);
1238
+ border: var(--ax-border-w) solid var(--ax-border);
1185
1239
  }
1186
1240
 
1187
1241
  /* Channel-binding rows (agent-specific view) */
1188
1242
  .ax-chan-row {
1189
- background: var(--ax-bg-elev); border: 1px solid var(--ax-border);
1243
+ background: var(--ax-bg-elev); border: var(--ax-border-w) solid var(--ax-border);
1190
1244
  border-radius: var(--ax-radius-lg); padding: 12px 14px;
1191
1245
  display: flex; align-items: center; gap: 12px; margin-bottom: 8px;
1192
1246
  }
1193
1247
  .ax-chan-row__logo {
1194
- width: 32px; height: 32px; border-radius: 7px;
1248
+ width: 32px; height: 32px; border-radius: var(--ax-radius);
1195
1249
  display: grid; place-items: center;
1196
1250
  font-weight: 700; font-size: 13px; color: white; flex-shrink: 0;
1197
1251
  font-family: var(--ax-mono);
@@ -1207,7 +1261,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1207
1261
  .ax-handover-viz {
1208
1262
  display: flex; align-items: center; justify-content: space-between;
1209
1263
  gap: 14px; padding: 16px 18px;
1210
- background: var(--ax-bg-elev); border: 1px solid var(--ax-border);
1264
+ background: var(--ax-bg-elev); border: var(--ax-border-w) solid var(--ax-border);
1211
1265
  border-radius: var(--ax-radius-lg); margin-bottom: 14px;
1212
1266
  }
1213
1267
  .ax-ho-side {
@@ -1215,7 +1269,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1215
1269
  gap: 6px; flex: 0 0 130px;
1216
1270
  }
1217
1271
  .ax-ho-side__av {
1218
- width: 42px; height: 42px; border-radius: 10px;
1272
+ width: 42px; height: 42px; border-radius: var(--ax-radius);
1219
1273
  display: grid; place-items: center;
1220
1274
  font-weight: 600; font-size: 15px;
1221
1275
  }
@@ -1225,7 +1279,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1225
1279
  color: var(--ax-accent);
1226
1280
  }
1227
1281
  .ax-ho-side--to .ax-ho-side__av {
1228
- background: var(--ax-surface-2); border: 1px solid var(--ax-border-2);
1282
+ background: var(--ax-surface-2); border: var(--ax-border-w) solid var(--ax-border-2);
1229
1283
  color: var(--ax-text);
1230
1284
  }
1231
1285
  .ax-ho-side__nm { font-size: 12px; font-weight: 600; }
@@ -1247,7 +1301,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1247
1301
  .ax-ho-list-row {
1248
1302
  display: flex; align-items: center; gap: 10px;
1249
1303
  padding: 10px 12px;
1250
- background: var(--ax-bg-elev); border: 1px solid var(--ax-border);
1304
+ background: var(--ax-bg-elev); border: var(--ax-border-w) solid var(--ax-border);
1251
1305
  border-radius: var(--ax-radius-sm); margin-bottom: 6px;
1252
1306
  font-size: 12.5px;
1253
1307
  }
@@ -1263,7 +1317,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1263
1317
  gap: 10px; margin-bottom: 18px;
1264
1318
  }
1265
1319
  .ax-activity-cell {
1266
- background: var(--ax-bg-elev); border: 1px solid var(--ax-border);
1320
+ background: var(--ax-bg-elev); border: var(--ax-border-w) solid var(--ax-border);
1267
1321
  border-radius: var(--ax-radius-sm); padding: 14px;
1268
1322
  }
1269
1323
  .ax-activity-cell .ax-v {
@@ -1284,12 +1338,12 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1284
1338
  .ax-session {
1285
1339
  display: flex; align-items: center; gap: 10px;
1286
1340
  padding: 10px 12px;
1287
- background: var(--ax-bg-elev); border: 1px solid var(--ax-border);
1341
+ background: var(--ax-bg-elev); border: var(--ax-border-w) solid var(--ax-border);
1288
1342
  border-radius: var(--ax-radius-sm); margin-bottom: 6px;
1289
1343
  font-size: 12.5px;
1290
1344
  }
1291
1345
  .ax-session__ch {
1292
- width: 24px; height: 24px; border-radius: 5px;
1346
+ width: 24px; height: 24px; border-radius: var(--ax-radius-sm);
1293
1347
  display: grid; place-items: center;
1294
1348
  font-weight: 700; font-size: 10px; color: white;
1295
1349
  flex-shrink: 0; font-family: var(--ax-mono);
@@ -1308,14 +1362,14 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1308
1362
  .ax-log-head {
1309
1363
  display: grid; grid-template-columns: 24px 90px 160px 1fr auto;
1310
1364
  gap: 12px; padding: 8px 10px;
1311
- border-bottom: 1px solid var(--ax-border-2);
1365
+ border-bottom: var(--ax-border-w) solid var(--ax-border-2);
1312
1366
  font-size: 10px; color: var(--ax-muted);
1313
1367
  text-transform: uppercase; letter-spacing: 0.06em; font-family: var(--ax-mono);
1314
1368
  }
1315
1369
  .ax-log-row {
1316
1370
  display: grid; grid-template-columns: 24px 90px 160px 1fr auto;
1317
1371
  gap: 12px; align-items: center; padding: 9px 10px;
1318
- border-bottom: 1px solid var(--ax-border); font-size: 12px;
1372
+ border-bottom: var(--ax-border-w) solid var(--ax-border); font-size: 12px;
1319
1373
  }
1320
1374
  .ax-log-row:hover { background: color-mix(in oklch, var(--ax-accent) 4%, transparent); }
1321
1375
  .ax-log-row .ax-sev {
@@ -1356,7 +1410,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1356
1410
  * the viewport when toggled. Similar to the Live page history-panel. */
1357
1411
  .ax-td-panel {
1358
1412
  position: fixed; top: 0; right: 0; bottom: 0; width: 420px;
1359
- background: var(--ax-bg-elev); border-left: 1px solid var(--ax-border);
1413
+ background: var(--ax-bg-elev); border-left: var(--ax-border-w) solid var(--ax-border);
1360
1414
  z-index: 900;
1361
1415
  display: flex; flex-direction: column;
1362
1416
  box-shadow: -8px 0 24px rgba(0,0,0,0.4);
@@ -1367,7 +1421,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1367
1421
  .ax-td-panel { width: 100vw; }
1368
1422
  }
1369
1423
  .ax-td-head {
1370
- padding: 12px 14px; border-bottom: 1px solid var(--ax-border);
1424
+ padding: 12px 14px; border-bottom: var(--ax-border-w) solid var(--ax-border);
1371
1425
  background: var(--ax-bg-elev);
1372
1426
  display: flex; align-items: center; gap: 10px;
1373
1427
  }
@@ -1383,12 +1437,12 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1383
1437
  }
1384
1438
  .ax-td-head__seg {
1385
1439
  display: inline-flex; background: var(--ax-surface);
1386
- border: 1px solid var(--ax-border); border-radius: 5px; padding: 2px;
1440
+ border: var(--ax-border-w) solid var(--ax-border); border-radius: var(--ax-radius-sm); padding: 2px;
1387
1441
  }
1388
1442
  .ax-td-head__seg button {
1389
1443
  background: transparent; border: 0; color: var(--ax-muted);
1390
1444
  padding: 3px 8px; font: inherit; font-size: 10.5px;
1391
- cursor: pointer; border-radius: 3px; font-family: var(--ax-mono);
1445
+ cursor: pointer; border-radius: var(--ax-radius-sm); font-family: var(--ax-mono);
1392
1446
  }
1393
1447
  .ax-td-head__seg button.is-active {
1394
1448
  background: var(--ax-surface-2); color: var(--ax-text);
@@ -1396,7 +1450,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1396
1450
 
1397
1451
  .ax-td-scenarios {
1398
1452
  padding: 10px 14px; background: var(--ax-bg-elev);
1399
- border-bottom: 1px solid var(--ax-border);
1453
+ border-bottom: var(--ax-border-w) solid var(--ax-border);
1400
1454
  display: flex; gap: 5px; flex-wrap: wrap;
1401
1455
  }
1402
1456
  .ax-td-scenarios__lbl {
@@ -1406,8 +1460,8 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1406
1460
  }
1407
1461
  .ax-td-scenario {
1408
1462
  font-size: 11px; padding: 3px 8px;
1409
- background: var(--ax-surface); border: 1px solid var(--ax-border);
1410
- border-radius: 10px; color: var(--ax-text-2);
1463
+ background: var(--ax-surface); border: var(--ax-border-w) solid var(--ax-border);
1464
+ border-radius: var(--ax-radius); color: var(--ax-text-2);
1411
1465
  cursor: pointer; transition: all 120ms;
1412
1466
  }
1413
1467
  .ax-td-scenario:hover { border-color: var(--ax-accent); color: var(--ax-accent); }
@@ -1423,7 +1477,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1423
1477
  .ax-td-chat__msg-wrap.is-user { align-self: flex-end; align-items: flex-end; }
1424
1478
  .ax-td-chat__msg-wrap.is-bot { align-self: flex-start; }
1425
1479
  .ax-td-chat__bubble {
1426
- padding: 8px 12px; border-radius: 12px;
1480
+ padding: 8px 12px; border-radius: var(--ax-radius-lg);
1427
1481
  font-size: 12.5px; line-height: 1.55; word-wrap: break-word;
1428
1482
  }
1429
1483
  .ax-td-chat__bubble.is-user {
@@ -1432,7 +1486,7 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1432
1486
  }
1433
1487
  .ax-td-chat__bubble.is-bot {
1434
1488
  background: var(--ax-surface-2); color: var(--ax-text);
1435
- border-bottom-left-radius: 3px; border: 1px solid var(--ax-border);
1489
+ border-bottom-left-radius: 3px; border: var(--ax-border-w) solid var(--ax-border);
1436
1490
  }
1437
1491
  .ax-td-chat__meta {
1438
1492
  font-size: 9.5px; color: var(--ax-muted);
@@ -1440,8 +1494,8 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1440
1494
  }
1441
1495
  .ax-td-chat__typing {
1442
1496
  align-self: flex-start; padding: 10px 14px;
1443
- background: var(--ax-surface-2); border: 1px solid var(--ax-border);
1444
- border-radius: 12px; border-bottom-left-radius: 3px;
1497
+ background: var(--ax-surface-2); border: var(--ax-border-w) solid var(--ax-border);
1498
+ border-radius: var(--ax-radius-lg); border-bottom-left-radius: 3px;
1445
1499
  display: inline-flex; gap: 4px;
1446
1500
  }
1447
1501
  .ax-td-chat__typing span {
@@ -1455,24 +1509,45 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1455
1509
  30% { transform: translateY(-5px); opacity: 1; }
1456
1510
  }
1457
1511
  .ax-td-input {
1458
- padding: 10px; border-top: 1px solid var(--ax-border);
1512
+ padding: 10px; border-top: var(--ax-border-w) solid var(--ax-border);
1459
1513
  background: var(--ax-bg-elev); display: flex; gap: 6px;
1460
1514
  }
1461
1515
  .ax-td-input input {
1462
- flex: 1; background: var(--ax-bg); border: 1px solid var(--ax-border);
1463
- border-radius: 6px; padding: 8px 11px;
1516
+ flex: 1; background: var(--ax-bg); border: var(--ax-border-w) solid var(--ax-border);
1517
+ border-radius: var(--ax-radius); padding: 8px 11px;
1464
1518
  color: var(--ax-text); font: inherit; font-size: 12.5px;
1465
1519
  }
1466
1520
  .ax-td-input input:focus { outline: none; border-color: var(--ax-accent); }
1467
1521
  .ax-td-input button {
1468
1522
  background: var(--ax-accent); color: var(--ax-bg); border: 0;
1469
- border-radius: 6px; padding: 0 12px;
1523
+ border-radius: var(--ax-radius); padding: 0 12px;
1470
1524
  cursor: pointer; font-weight: 600;
1471
1525
  }
1472
1526
  .ax-td-input button:hover {
1473
1527
  background: color-mix(in oklch, var(--ax-accent) 88%, white);
1474
1528
  }
1475
1529
 
1530
+ /* Inline task-queue chip on bot messages */
1531
+ .ax-td-task-chip {
1532
+ display: inline-flex; align-items: center; gap: 5px;
1533
+ margin-top: 5px; padding: 3px 8px;
1534
+ background: color-mix(in oklch, var(--ax-accent) 10%, var(--ax-surface));
1535
+ border: 1px solid color-mix(in oklch, var(--ax-accent) 35%, var(--ax-border));
1536
+ border-radius: var(--ax-radius); font-size: 10px; color: var(--ax-accent);
1537
+ font-family: var(--ax-mono); letter-spacing: 0.04em;
1538
+ cursor: default; user-select: none;
1539
+ }
1540
+ .ax-td-task-chip__dot {
1541
+ width: 6px; height: 6px; border-radius: 50%;
1542
+ background: var(--ax-accent); flex-shrink: 0;
1543
+ }
1544
+ .ax-td-task-chip--queued .ax-td-task-chip__dot {
1545
+ background: var(--ax-muted);
1546
+ }
1547
+ .ax-td-task-chip__id {
1548
+ font-family: var(--ax-mono); opacity: 0.7; font-size: 9px;
1549
+ }
1550
+
1476
1551
  /* Section mini-label used throughout detail pages */
1477
1552
  .ax-sec-label-d {
1478
1553
  display: flex; align-items: center; justify-content: space-between;
@@ -1502,270 +1577,53 @@ textarea.ax-builder__inp { min-height: 80px; line-height: 1.5; resize: vertical;
1502
1577
  .ax-log-head, .ax-log-row { grid-template-columns: 8px 80px 1fr auto; }
1503
1578
  .ax-log-head span:nth-child(3), .ax-log-row .ax-who { display: none; }
1504
1579
  .ax-grid-2, .ax-grid-3 { grid-template-columns: 1fr; }
1505
- }`;var m=`<link rel="preconnect" href="https://fonts.googleapis.com">
1506
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
1507
- <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap" rel="stylesheet">
1508
- <script>(function(){try{var t=localStorage.getItem('ax-theme')||'dark';document.documentElement.setAttribute('data-theme',t)}catch(e){}})();</script>`,b=`
1509
- .ax-topbar{display:flex;align-items:center;justify-content:space-between;
1510
- padding:8px 18px;border-bottom:1px solid var(--ax-border);
1511
- background:var(--ax-bg-elev);position:sticky;top:0;z-index:20;gap:10px;flex-wrap:nowrap}
1512
- .ax-topbar__left{display:flex;align-items:center;gap:18px;min-width:0}
1513
- .ax-brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:-0.01em;flex-shrink:0}
1514
- .ax-brand__mark{font-family:var(--ax-mono);font-size:12px;padding:2px 8px;
1515
- border:1px solid var(--ax-border-2);color:var(--ax-accent);border-radius:4px}
1516
- .ax-brand__name{font-size:14px}
1517
- .ax-brand__subtitle{font-size:11px;color:var(--ax-muted);
1518
- border-left:1px solid var(--ax-border);padding-left:12px;margin-left:4px}
1519
- .ax-topbar__tabs{display:flex;gap:2px;min-width:0;overflow-x:auto}
1520
- .ax-topbar__tab{background:transparent;border:none;color:var(--ax-text-2);
1521
- padding:8px 14px;font:inherit;cursor:pointer;font-size:12px;text-decoration:none;
1522
- border-bottom:2px solid transparent;letter-spacing:-0.005em;white-space:nowrap}
1523
- .ax-topbar__tab:hover{color:var(--ax-text)}
1524
- .ax-topbar__tab.is-active{color:var(--ax-text);border-bottom-color:var(--ax-accent)}
1525
- .ax-topbar__right{display:flex;align-items:center;gap:10px;font-size:11px;
1526
- color:var(--ax-muted);flex-shrink:0}
1527
- .ax-topbar__right .ax-mono{color:var(--ax-text-2)}
1528
-
1529
- /* Mesh selector */
1530
- .ax-mesh-sel{position:relative;display:inline-flex;align-items:center;gap:6px;
1531
- padding:4px 10px;border:1px solid var(--ax-border-2);border-radius:4px;
1532
- background:var(--ax-surface);cursor:pointer;font:inherit;font-size:11px;
1533
- color:var(--ax-text-2);white-space:nowrap}
1534
- .ax-mesh-sel:hover{border-color:var(--ax-accent);color:var(--ax-text)}
1535
- .ax-mesh-sel.is-proxy{background:color-mix(in oklch,var(--ax-accent) 14%,var(--ax-surface));
1536
- border-color:color-mix(in oklch,var(--ax-accent) 45%,var(--ax-border-2));color:var(--ax-accent)}
1537
- .ax-mesh-sel .lbl{font-size:9px;letter-spacing:0.06em;text-transform:uppercase;color:var(--ax-muted);margin-right:2px}
1538
- .ax-mesh-sel .name{font-weight:500;color:var(--ax-text)}
1539
- .ax-mesh-sel .chev{font-size:9px;opacity:0.6;margin-left:2px}
1540
- .ax-mesh-menu{position:absolute;top:calc(100% + 4px);right:0;min-width:240px;
1541
- background:var(--ax-surface);border:1px solid var(--ax-border-2);
1542
- border-radius:6px;box-shadow:0 8px 24px rgba(0,0,0,0.4);padding:4px;z-index:30;display:none}
1543
- .ax-mesh-sel.is-open .ax-mesh-menu{display:block}
1544
- .ax-mesh-menu a{display:block;padding:7px 10px;border-radius:4px;text-decoration:none;
1545
- color:var(--ax-text-2);font-size:12px}
1546
- .ax-mesh-menu a:hover{background:var(--ax-surface-2);color:var(--ax-text)}
1547
- .ax-mesh-menu a.is-current{background:color-mix(in oklch,var(--ax-accent) 12%,var(--ax-surface));
1548
- color:var(--ax-accent);border:1px solid color-mix(in oklch,var(--ax-accent) 30%,var(--ax-border-2))}
1549
- .ax-mesh-menu a .row{display:flex;align-items:center;gap:8px}
1550
- .ax-mesh-menu a .row .dot{width:6px;height:6px;border-radius:50%;background:var(--ax-accent)}
1551
- .ax-mesh-menu a.is-offline .row .dot{background:var(--ax-border-2)}
1552
- .ax-mesh-menu a .url{font-family:var(--ax-mono);font-size:10px;color:var(--ax-muted);margin-top:2px}
1553
-
1554
- /* Theme switcher segmented control */
1555
- .ax-theme-switch{display:inline-flex;border:1px solid var(--ax-border-2);
1556
- border-radius:4px;overflow:hidden}
1557
- .ax-theme-switch button{background:transparent;border:none;color:var(--ax-muted);
1558
- padding:3px 9px;font:inherit;font-size:10px;cursor:pointer;letter-spacing:0.04em;
1559
- text-transform:uppercase;font-family:var(--ax-mono);border-right:1px solid var(--ax-border-2)}
1560
- .ax-theme-switch button:last-child{border-right:none}
1561
- .ax-theme-switch button:hover{color:var(--ax-text);background:var(--ax-surface-2,var(--ax-surface))}
1562
- .ax-theme-switch button.is-active{color:var(--ax-accent);
1563
- background:color-mix(in oklch,var(--ax-accent) 12%,var(--ax-surface))}
1564
-
1565
- /* Subheader \u2014 page-specific toolbar below the main topbar. Kanban uses it
1566
- * for the board picker + search + filters; others can use it for context
1567
- * bars if they want. */
1568
- .ax-subheader{display:flex;align-items:center;gap:10px;padding:10px 18px;
1569
- background:var(--ax-bg-elev);border-bottom:1px solid var(--ax-border);
1570
- flex-wrap:wrap}
1571
- .ax-subheader > * {flex-shrink:0}
1572
- .ax-subheader .spacer{flex:1}`,u=`<script>
1573
- (function(){
1574
- function wireTheme(){
1575
- var sw = document.querySelectorAll('[data-theme-opt]');
1576
- if (!sw.length) return;
1577
- var current = document.documentElement.getAttribute('data-theme') || 'dark';
1578
- sw.forEach(function(b){
1579
- if (b.dataset.wired) return; b.dataset.wired = '1';
1580
- if (b.getAttribute('data-theme-opt') === current) b.classList.add('is-active');
1581
- b.addEventListener('click', function(){
1582
- var t = b.getAttribute('data-theme-opt');
1583
- document.documentElement.setAttribute('data-theme', t);
1584
- try { localStorage.setItem('ax-theme', t); } catch (e) {}
1585
- sw.forEach(function(x){ x.classList.toggle('is-active', x === b); });
1586
- });
1587
- });
1588
- }
1589
- function currentPeer(){
1590
- try { return localStorage.getItem('ax-peer') || 'primary'; } catch { return 'primary'; }
1591
- }
1592
- function setCurrentPeer(id){
1593
- try {
1594
- if (id && id !== 'primary') localStorage.setItem('ax-peer', id);
1595
- else localStorage.removeItem('ax-peer');
1596
- } catch {}
1597
- }
1598
- function reflectPeerPill(){
1599
- var sel = document.querySelector('.ax-mesh-sel');
1600
- if (!sel) return;
1601
- var cur = currentPeer();
1602
- sel.classList.toggle('is-proxy', cur !== 'primary');
1603
- // If a proxy is active, update the visible pill label + highlight.
1604
- var picked = null;
1605
- sel.querySelectorAll('.ax-mesh-menu a').forEach(function(a){
1606
- a.classList.toggle('is-current', a.getAttribute('data-peer-id') === cur || (cur === 'primary' && a.getAttribute('data-peer-id') === 'primary'));
1607
- if (a.getAttribute('data-peer-id') === cur) picked = a;
1608
- });
1609
- if (picked) {
1610
- var name = picked.querySelector('span'); // first <span> inside .row
1611
- var visibleName = sel.querySelector('.name');
1612
- if (name && visibleName) visibleName.textContent = name.textContent.replace(/ \xB7 primary/, '');
1613
- }
1614
- }
1615
- function wireMesh(){
1616
- var sel = document.querySelector('.ax-mesh-sel');
1617
- if (!sel || sel.dataset.wired) return; sel.dataset.wired = '1';
1618
- sel.addEventListener('click', function(e){
1619
- var link = e.target.closest('.ax-mesh-menu a[data-peer-action="proxy"]');
1620
- if (link) {
1621
- e.preventDefault();
1622
- setCurrentPeer(link.getAttribute('data-peer-id'));
1623
- reflectPeerPill();
1624
- sel.classList.remove('is-open');
1625
- // Reload so the admin panel re-reads state from the selected peer.
1626
- location.reload();
1627
- return;
1628
- }
1629
- if (e.target.closest('.ax-mesh-menu a')) return; // plain navigate anchor
1630
- sel.classList.toggle('is-open');
1631
- });
1632
- document.addEventListener('click', function(e){
1633
- if (!sel.contains(e.target)) sel.classList.remove('is-open');
1634
- });
1635
- reflectPeerPill();
1636
- }
1637
- function wireHostRewrite(){
1638
- try {
1639
- var h = location.hostname || 'localhost';
1640
- document.querySelectorAll('.ax-topbar__tab[href*="__HOST__"]').forEach(function(a){
1641
- a.href = a.getAttribute('href').replace(/__HOST__/g, h);
1642
- });
1643
- } catch (e) {}
1644
- }
1645
- /**
1646
- * Make the topbar peer selector actually drive page content. When the
1647
- * operator picks a non-primary peer, every /api/admin/* request gets an
1648
- * X-Agentx-Peer header (and every EventSource on that path gets a ?peer=
1649
- * query, since EventSource can't set headers). The dashboard's existing
1650
- * proxy handler picks it up and forwards to the chosen peer.
1651
- *
1652
- * Without this hook, the activity-graph (and other admin pages) silently
1653
- * keep showing only the local node's data even after the operator picks
1654
- * a different peer in the topbar.
1655
- */
1656
- function wirePeerProxy(){
1657
- if (window.__axPeerWired) return; window.__axPeerWired = true;
1658
- var origFetch = window.fetch.bind(window);
1659
- window.fetch = function(input, init){
1660
- try {
1661
- var peer = currentPeer();
1662
- if (peer && peer !== 'primary') {
1663
- var url = typeof input === 'string' ? input : (input && input.url) || '';
1664
- if (url.indexOf('/api/admin/') === 0 || url.indexOf('/api/admin/') > 0) {
1665
- init = init || {};
1666
- init.headers = new Headers(init.headers || {});
1667
- init.headers.set('X-Agentx-Peer', peer);
1668
- }
1669
- }
1670
- } catch (e) {}
1671
- return origFetch(input, init);
1672
- };
1673
- var OrigES = window.EventSource;
1674
- if (OrigES) {
1675
- window.EventSource = function(url, cfg){
1676
- try {
1677
- var peer = currentPeer();
1678
- if (peer && peer !== 'primary' && typeof url === 'string' && url.indexOf('/api/admin/') >= 0) {
1679
- url += (url.indexOf('?') >= 0 ? '&' : '?') + 'peer=' + encodeURIComponent(peer);
1680
- }
1681
- } catch (e) {}
1682
- return new OrigES(url, cfg);
1683
- };
1684
- window.EventSource.prototype = OrigES.prototype;
1685
- window.EventSource.CONNECTING = OrigES.CONNECTING;
1686
- window.EventSource.OPEN = OrigES.OPEN;
1687
- window.EventSource.CLOSED = OrigES.CLOSED;
1688
- }
1689
- }
1690
- function wire(){ wireHostRewrite(); wireTheme(); wireMesh(); wirePeerProxy(); }
1691
- if (document.readyState === 'loading') {
1692
- document.addEventListener('DOMContentLoaded', wire);
1693
- } else { wire(); }
1694
- })();
1695
- </script>`;function h(a){let r=a.peers&&a.peers.length>0?a.peers:[{id:"local",name:"this daemon",dashboardUrl:"",primary:!0}],o=a.currentPeerId||r.find(e=>e.primary)?.id||r[0].id,i=r.find(e=>e.id===o)||r[0],l=r.map(e=>{let d=e.id===o,c=e.primary?' <span style="color:var(--ax-muted);font-size:10px">\xB7 primary</span>':"",s=!!e.tokenScope&&!e.primary,w=s?"#":e.dashboardUrl?`${e.dashboardUrl.replace(/\/+$/,"")}/admin`:"#",k=s?` data-peer-id="${n(e.id)}" data-peer-action="proxy"`:e.primary?' data-peer-id="primary" data-peer-action="proxy"':"",y=s?'<div class="url" style="color:var(--ax-accent)">manage from this dashboard \u2713</div>':e.tokenScope?`<div class="url">${n(e.tokenScope)}</div>`:e.dashboardUrl?'<div class="url" style="color:var(--ax-muted)">(open peer dashboard \u2197)</div>':"";return`<a href="${n(w)}" class="${d?"is-current":""}"${k}>
1696
- <div class="row"><span class="dot"></span><span>${n(e.name)}${c}</span></div>
1697
- ${e.dashboardUrl?`<div class="url">${n(e.dashboardUrl)}</div>`:""}
1698
- ${y}
1699
- </a>`}).join(""),x=`<div class="ax-mesh-sel" aria-haspopup="menu">
1700
- <span class="lbl">managing</span>
1701
- <span class="name">${n(i.name)}</span>
1702
- <span class="chev">\u25BE</span>
1703
- <div class="ax-mesh-menu" role="menu">${l}</div>
1704
- </div>`,f=[{id:"live",label:"Live",href:"/live",external:!1},{id:"boards",label:"Boards",href:"/",external:!1},{id:"workflows",label:"Workflows",href:"/workflows",external:!1},{id:"graph",label:"Activity Graph",href:"/admin/activity-graph",external:!1},{id:"graph",label:"Ledger",href:"/admin/ledger",external:!1},{id:"health",label:"Health",href:"/admin/health",external:!1},{id:"cost",label:"Cost",href:"/admin/cost",external:!1},{id:"wiki",label:"Wiki",href:"/admin/wiki",external:!1},{id:"admin",label:"Settings",href:"/admin",external:!1},{id:"glossary",label:"Glossary",href:"/glossary",external:!1}].map(e=>{let d=e.id===a.activeTab?"ax-topbar__tab is-active":"ax-topbar__tab",c=e.external?' target="_blank" rel="noopener"':"",s=e.external?' <span style="font-size:9px;opacity:0.6">\u2197</span>':"";return`<a href="${e.href}" class="${d}"${c}>${e.label}${s}</a>`}).join("");return`<header class="ax-topbar">
1705
- <div class="ax-topbar__left">
1706
- <div class="ax-brand">
1707
- <span class="ax-brand__mark">AX</span>
1708
- <span class="ax-brand__name">AgentX</span>
1709
- <span class="ax-brand__subtitle">${n(a.subtitle)}</span>
1710
- </div>
1711
- <nav class="ax-topbar__tabs">${f}</nav>
1712
- </div>
1713
- <div class="ax-topbar__right">
1714
- ${a.rightExtras||""}
1715
- ${x}
1716
- <div class="ax-theme-switch" role="tablist" aria-label="Theme">
1717
- <button data-theme-opt="dark">Dark</button>
1718
- <button data-theme-opt="light">Light</button>
1719
- <button data-theme-opt="crt">CRT</button>
1720
- </div>
1721
- </div>
1722
- </header>${a.subheader?`<div class="ax-subheader">${a.subheader}</div>`:""}`}function n(a){return String(a||"").replace(/[&<>"']/g,r=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[r])}function _(a){let r=`${p}
1723
- ${g}
1724
- ${b}${a.css?`
1725
- `+a.css:""}`,o=a.customHeader??(a.activeTab==="custom"?"":h({activeTab:a.activeTab,subtitle:a.subtitle,subheader:a.subheader,peers:a.peers,currentPeerId:a.currentPeerId})),i=a.noMain?a.body:`<main>${a.body}</main>`;return`<!DOCTYPE html>
1580
+ }`;function v(a){let e=`${n}
1581
+ ${x}
1582
+ ${l}${a.css?`
1583
+ `+a.css:""}`,o=a.customHeader??(a.activeTab==="custom"?"":p({activeTab:a.activeTab,subtitle:a.subtitle,subheader:a.subheader,peers:a.peers,currentPeerId:a.currentPeerId})),t=a.noMain?a.body:`<main>${a.body}</main>`;return`<!DOCTYPE html>
1726
1584
  <html lang="en">
1727
1585
  <head>
1728
1586
  <meta charset="utf-8">
1729
1587
  <meta name="viewport" content="width=device-width, initial-scale=1">
1730
- <title>${z(a.title)}</title>
1731
- ${m}
1588
+ <title>${b(a.title)}</title>
1589
+ ${s}
1732
1590
  ${a.headExtras||""}
1733
- <style>${r}</style>
1591
+ <style>${e}</style>
1734
1592
  </head>
1735
1593
  <body>
1736
1594
  ${o}
1737
- ${i}
1738
- ${u}
1595
+ ${t}
1596
+ ${c}
1739
1597
  ${a.scripts||""}
1740
1598
  </body>
1741
- </html>`}function z(a){return String(a||"").replace(/[<>&]/g,r=>({"<":"&lt;",">":"&gt;","&":"&amp;"})[r])}function t(a){return String(a??"").replace(/[&<>"']/g,r=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[r])}function $(a,r={}){let o=["ax-btn",r.primary?"ax-btn--primary":"",r.ghost?"ax-btn--ghost":"",r.danger?"ax-btn--danger":"",r.extraClass||""].filter(Boolean).join(" ");return`<button ${[`type="${r.type||"button"}"`,`class="${o}"`,r.id?`id="${t(r.id)}"`:"",r.disabled?"disabled":"",r.onclick?`onclick="${t(r.onclick)}"`:""].filter(Boolean).join(" ")}>${t(a)}</button>`}function S(a){let r=`<label>${t(a.label)}${a.hint?` <span class="ax-hint">${a.hint}</span>`:""}</label>`,o="",i=[`name="${t(a.name)}"`,a.required?"required":"",a.readonly?"readonly":"",a.placeholder?`placeholder="${t(a.placeholder)}"`:"",a.extraAttrs||""].filter(Boolean).join(" ");if(a.type==="textarea")o=`<textarea ${i} rows="${a.rows||3}">${t(a.value||"")}</textarea>`;else if(a.type==="select"&&a.options){let l=a.options.map(x=>`<option value="${t(x.value)}"${x.selected?" selected":""}>${t(x.label)}</option>`).join("");o=`<select ${i}>${l}</select>`}else o=`<input type="${a.type||"text"}" ${i}`+(a.value!==void 0?` value="${t(a.value)}"`:"")+(a.pattern?` pattern="${t(a.pattern)}"`:"")+" />";return`<div class="ax-field">${r}${o}</div>`}function O(a){return`<div class="ax-row">${a.join("")}</div>`}function T(a,r,o){return`<section class="ax-step">
1742
- <div class="ax-step__head"><span class="ax-step__num">${t(String(a))}</span>${t(r)}</div>
1599
+ </html>`}function b(a){return String(a||"").replace(/[<>&]/g,e=>({"<":"&lt;",">":"&gt;","&":"&amp;"})[e])}function r(a){return String(a??"").replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e])}function m(a,e={}){let o=["ax-btn",e.primary?"ax-btn--primary":"",e.ghost?"ax-btn--ghost":"",e.danger?"ax-btn--danger":"",e.extraClass||""].filter(Boolean).join(" ");return`<button ${[`type="${e.type||"button"}"`,`class="${o}"`,e.id?`id="${r(e.id)}"`:"",e.disabled?"disabled":"",e.onclick?`onclick="${r(e.onclick)}"`:""].filter(Boolean).join(" ")}>${r(a)}</button>`}function u(a){let e=`<label>${r(a.label)}${a.hint?` <span class="ax-hint">${a.hint}</span>`:""}</label>`,o="",t=[`name="${r(a.name)}"`,a.required?"required":"",a.readonly?"readonly":"",a.placeholder?`placeholder="${r(a.placeholder)}"`:"",a.extraAttrs||""].filter(Boolean).join(" ");if(a.type==="textarea")o=`<textarea ${t} rows="${a.rows||3}">${r(a.value||"")}</textarea>`;else if(a.type==="select"&&a.options){let d=a.options.map(i=>`<option value="${r(i.value)}"${i.selected?" selected":""}>${r(i.label)}</option>`).join("");o=`<select ${t}>${d}</select>`}else o=`<input type="${a.type||"text"}" ${t}`+(a.value!==void 0?` value="${r(a.value)}"`:"")+(a.pattern?` pattern="${r(a.pattern)}"`:"")+" />";return`<div class="ax-field">${e}${o}</div>`}function f(a){return`<div class="ax-row">${a.join("")}</div>`}function h(a,e,o){return`<section class="ax-step">
1600
+ <div class="ax-step__head"><span class="ax-step__num">${r(String(a))}</span>${r(e)}</div>
1743
1601
  ${o}
1744
- </section>`}function C(a){return`<div class="ax-page-head">
1745
- ${a.kicker?`<div class="ax-kicker">${t(a.kicker)}</div>`:""}
1746
- <h1>${t(a.title)}</h1>
1602
+ </section>`}function w(a){return`<div class="ax-page-head">
1603
+ ${a.kicker?`<div class="ax-kicker">${r(a.kicker)}</div>`:""}
1604
+ <h1>${r(a.title)}</h1>
1747
1605
  ${a.lead?`<p class="ax-lead">${a.lead}</p>`:""}
1748
- </div>`}function v(a){return`<div class="ax-health-card">
1606
+ </div>`}function g(a){return`<div class="ax-health-card">
1749
1607
  <div class="ax-hc-dot ax-hc-dot--${a.kind||"off"}"></div>
1750
1608
  <div class="ax-hc-txt">
1751
- <div class="ax-hc-num">${t(a.num)}</div>
1752
- <div class="ax-hc-lbl">${t(a.label)}</div>
1609
+ <div class="ax-hc-num">${r(a.num)}</div>
1610
+ <div class="ax-hc-lbl">${r(a.label)}</div>
1753
1611
  </div>
1754
- </div>`}function P(a){return`<div class="ax-health-strip">${a.map(v).join("")}</div>`}function A(a){return`<div class="ax-wit"${a.persistKey?` data-wit="${t(a.persistKey)}"`:""}>
1755
- <span class="ax-wit__icon">${t(a.icon||"?")}</span>
1612
+ </div>`}function k(a){return`<div class="ax-health-strip">${a.map(g).join("")}</div>`}function y(a){return`<div class="ax-wit"${a.persistKey?` data-wit="${r(a.persistKey)}"`:""}>
1613
+ <span class="ax-wit__icon">${r(a.icon||"?")}</span>
1756
1614
  <div>${a.bodyHtml}</div>
1757
1615
  <button class="ax-wit__dismiss" onclick="this.parentElement.style.display='none'">\xD7</button>
1758
- </div>`}function E(a){return`<div class="ax-section-head">
1616
+ </div>`}function _(a){return`<div class="ax-section-head">
1759
1617
  <div class="ax-section-head__icon">${a.icon}</div>
1760
1618
  <div class="ax-section-head__text">
1761
- <h2>${t(a.title)}</h2>
1762
- ${a.lead?`<p class="ax-lead">${t(a.lead)}</p>`:""}
1619
+ <h2>${r(a.title)}</h2>
1620
+ ${a.lead?`<p class="ax-lead">${r(a.lead)}</p>`:""}
1763
1621
  </div>
1764
1622
  ${a.actionHtml||""}
1765
- </div>`}function H(a){return`<div class="ax-sec-label"><h3>${t(a.label)}</h3>${a.rightHtml||""}</div>`}var j=`<div class="ax-toast" id="ax-toast">
1623
+ </div>`}function z(a){return`<div class="ax-sec-label"><h3>${r(a.label)}</h3>${a.rightHtml||""}</div>`}var $=`<div class="ax-toast" id="ax-toast">
1766
1624
  <svg class="ax-toast__icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 6L9 17l-5-5"/></svg>
1767
1625
  <span id="ax-toast-msg">Copied</span>
1768
- </div>`,L=`
1626
+ </div>`,S=`
1769
1627
  let __axToastTimer;
1770
1628
  window.showToast = function(msg) {
1771
1629
  const el = document.getElementById('ax-toast');
@@ -1779,9 +1637,9 @@ ${a.scripts||""}
1779
1637
  window.copyText = function(_btn, text) {
1780
1638
  try { navigator.clipboard.writeText(text); } catch (e) {}
1781
1639
  window.showToast('Copied to clipboard');
1782
- };`,B=`
1640
+ };`,C=`
1783
1641
  window.toggleCard = function(btn) {
1784
1642
  const card = btn.closest('.ax-row-card');
1785
1643
  if (card) card.classList.toggle('is-open');
1786
- };`;export{_ as a,t as b,$ as c,S as d,O as e,T as f,C as g,P as h,A as i,E as j,H as k,j as l,L as m,B as n};
1787
- //# sourceMappingURL=chunk-CNNLREHD.js.map
1644
+ };`;export{v as a,r as b,m as c,u as d,f as e,h as f,w as g,k as h,y as i,_ as j,z as k,$ as l,S as m,C as n};
1645
+ //# sourceMappingURL=chunk-P4VWIVKN.js.map