@dsh-workbench/core 1.1.4 → 1.1.5

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 (32) hide show
  1. package/client.js +945 -341
  2. package/dist/client/client.body.js +945 -341
  3. package/dist/client/index.js +807 -203
  4. package/dist/host/index.js +540 -108
  5. package/dist/types/app/layouts/approval-detail.d.ts +6 -3
  6. package/dist/types/app/layouts/market/add-module-registry-prefs.d.ts +11 -0
  7. package/dist/types/app/layouts/market/market-check.d.ts +3 -1
  8. package/dist/types/app/layouts/rightbar/AskAgentButton.d.ts +6 -0
  9. package/dist/types/app/layouts/rightbar/FailureCard.d.ts +8 -0
  10. package/dist/types/app/layouts/rightbar/MarketView.d.ts +2 -1
  11. package/dist/types/app/layouts/rightbar/SharedSection.d.ts +5 -2
  12. package/dist/types/app/layouts/rightbar/failure-card-text.d.ts +14 -0
  13. package/dist/types/app/layouts/rightbar/market-act.d.ts +2 -5
  14. package/dist/types/app/layouts/rightbar/market-change.d.ts +1 -0
  15. package/dist/types/app/layouts/rightbar/market-hint.d.ts +2 -0
  16. package/dist/types/app/layouts/rightbar/market-install.d.ts +11 -0
  17. package/dist/types/app/layouts/rightbar/market-row-types.d.ts +7 -1
  18. package/dist/types/app/layouts/rightbar/market-rows.d.ts +12 -1
  19. package/dist/types/app/layouts/rightbar/market-section.d.ts +5 -3
  20. package/dist/types/app/layouts/rightbar/market-transient-state.d.ts +3 -8
  21. package/dist/types/app/layouts/rightbar/market-view-text.d.ts +2 -0
  22. package/dist/types/kernel/client/registry.d.ts +1 -0
  23. package/dist/types/kernel/contract/bundle-install.d.ts +1 -1
  24. package/dist/types/modules/panels/model/market-install-error.d.ts +3 -0
  25. package/dist/types/modules/panels/model/market-install-error.test.d.ts +1 -0
  26. package/dist/types/modules/panels/model/market-registry.d.ts +2 -1
  27. package/dist/types/modules/panels/model/market-remove.d.ts +13 -0
  28. package/dist/types/modules/panels/model/market-remove.test.d.ts +1 -0
  29. package/dist/types/modules/panels/model/market-route.d.ts +1 -1
  30. package/dist/types/modules/panels/model/market.d.ts +1 -0
  31. package/package.json +3 -3
  32. package/skills/workbench-module-diy/TOOLS.md +11 -2
package/client.js CHANGED
@@ -730,6 +730,10 @@ window.__ModuleLoader__.load({
730
730
  var STORAGE_KEY_RIGHTBAR_COLUMN = "dsh-workbench.rightbar.column";
731
731
  /** 记住右栏宽度(像素数字的字符串)的 localStorage 键。 */
732
732
  var STORAGE_KEY_RIGHTBAR_WIDTH = "dsh-workbench.rightbar.width";
733
+ /** 记住「添加模块」浮层选过的安装源的 localStorage 键。 */
734
+ var STORAGE_KEY_MARKET_REGISTRY = "dsh-workbench.market.registry";
735
+ /** 记住「添加模块」浮层上次填过的自定义源地址的 localStorage 键。 */
736
+ var STORAGE_KEY_MARKET_REGISTRY_CUSTOM = "dsh-workbench.market.registry.custom";
733
737
  /** dsh i18n 的命名空间:词表都注册在它下面,`ctx.locale.register` / `bind` 按它取。 */
734
738
  var LOCALE_NS = "workbench";
735
739
  //#endregion
@@ -788,13 +792,13 @@ window.__ModuleLoader__.load({
788
792
  //#endregion
789
793
  //#region ../shared/dist/lib/react.js
790
794
  var react$1 = require("react");
791
- var h$67 = react$1.createElement;
792
- var Fragment$23 = react$1.Fragment;
795
+ var h$69 = react$1.createElement;
796
+ var Fragment$22 = react$1.Fragment;
793
797
  var Component = react$1.Component;
794
798
  react$1.createContext;
795
799
  react$1.useContext;
796
- var useState$40 = react$1.useState;
797
- var useEffect$30 = react$1.useEffect;
800
+ var useState$42 = react$1.useState;
801
+ var useEffect$31 = react$1.useEffect;
798
802
  react$1.useLayoutEffect;
799
803
  var useMemo$10 = react$1.useMemo;
800
804
  react$1.useCallback;
@@ -809,7 +813,7 @@ window.__ModuleLoader__.load({
809
813
  * @returns 一个 div。
810
814
  */
811
815
  function ActivityBlock({ head, children }) {
812
- return h$67("div", { className: "wb-activityBlock" }, head === void 0 ? null : h$67("div", { className: "wb-activityBlockHead" }, head), children);
816
+ return h$69("div", { className: "wb-activityBlock" }, head === void 0 ? null : h$69("div", { className: "wb-activityBlockHead" }, head), children);
813
817
  }
814
818
  /**
815
819
  * 一条活动:状态点 + 正文 + 时间,行尾可挂动作;时间一律用它,别自己拼。
@@ -820,7 +824,7 @@ window.__ModuleLoader__.load({
820
824
  * @returns 一行。
821
825
  */
822
826
  function ActivityLine({ dot, text, at, actions }) {
823
- return h$67("div", { className: "wb-activityLine" }, dot, h$67("span", { className: "wb-activityLineText" }, text), at === void 0 ? null : h$67("span", { className: "wb-activityLineAt" }, at), actions === void 0 ? null : h$67("span", { className: "wb-activityLineActions" }, actions));
827
+ return h$69("div", { className: "wb-activityLine" }, dot, h$69("span", { className: "wb-activityLineText" }, text), at === void 0 ? null : h$69("span", { className: "wb-activityLineAt" }, at), actions === void 0 ? null : h$69("span", { className: "wb-activityLineActions" }, actions));
824
828
  }
825
829
  /**
826
830
  * 活动行尾那颗动作:给 `href` 就是外链,否则是图标钮并带上 tooltip。
@@ -834,7 +838,7 @@ window.__ModuleLoader__.load({
834
838
  */
835
839
  function ActivityAction({ label, hint, icon, href, onClick, failed }) {
836
840
  const tip = hint ?? label;
837
- if (href !== void 0) return h$67("a", {
841
+ if (href !== void 0) return h$69("a", {
838
842
  className: "wb-iconButton",
839
843
  href,
840
844
  target: "_blank",
@@ -842,13 +846,13 @@ window.__ModuleLoader__.load({
842
846
  title: tip,
843
847
  "aria-label": label
844
848
  }, icon);
845
- return h$67(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
849
+ return h$69(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
846
850
  side: "bottom",
847
851
  align: "end",
848
852
  gap: 6,
849
853
  portal: true,
850
854
  label: tip
851
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
855
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.Button, {
852
856
  type: "button",
853
857
  variant: "ghost",
854
858
  size: "sm",
@@ -870,10 +874,10 @@ window.__ModuleLoader__.load({
870
874
  */
871
875
  function Note({ tone = "muted", as, role, children }) {
872
876
  const className = tone === "problem" ? "wb-problem" : "wb-note";
873
- return as === "span" ? h$67("span", {
877
+ return as === "span" ? h$69("span", {
874
878
  className,
875
879
  role
876
- }, children) : h$67("p", {
880
+ }, children) : h$69("p", {
877
881
  className,
878
882
  role
879
883
  }, children);
@@ -917,10 +921,10 @@ window.__ModuleLoader__.load({
917
921
  render() {
918
922
  const { reason } = this.state;
919
923
  if (reason === null) return this.props.children;
920
- return h$67(Note, { tone: "problem" }, h$67("span", null, this.props.t("panels.cardBroken", {
924
+ return h$69(Note, { tone: "problem" }, h$69("span", null, this.props.t("panels.cardBroken", {
921
925
  unit: this.props.unit,
922
926
  reason
923
- })), " ", h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
927
+ })), " ", h$69(_deepseek_ai_dsh_client_ui_primitives.Button, {
924
928
  type: "button",
925
929
  variant: "outline",
926
930
  size: "sm",
@@ -970,19 +974,19 @@ window.__ModuleLoader__.load({
970
974
  const owner = (props.units ?? []).find((face) => face.approval?.tools.includes(input.tool) === true);
971
975
  if (owner?.approval !== void 0) {
972
976
  const Render = owner.approval.render;
973
- return h$67(CardBoundary, {
977
+ return h$69(CardBoundary, {
974
978
  unit: owner.unit,
975
979
  resetKey: props.callId ?? "",
976
980
  t
977
- }, h$67(Render, {
981
+ }, h$69(Render, {
978
982
  input,
979
983
  t
980
984
  }));
981
985
  }
982
986
  const shell = props.renderShell?.(input, t);
983
- if (shell !== void 0 && shell !== null) return h$67(Fragment$23, null, shell);
987
+ if (shell !== void 0 && shell !== null) return h$69(Fragment$22, null, shell);
984
988
  if (command === "") return null;
985
- return h$67(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
989
+ return h$69(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
986
990
  code: command,
987
991
  className: "wb-approvalCommand",
988
992
  copyLabel: t("blocker.copy"),
@@ -1000,10 +1004,10 @@ window.__ModuleLoader__.load({
1000
1004
  * @returns 一个 div。
1001
1005
  */
1002
1006
  function ApprovalPlan({ rows, hint, warn, children }) {
1003
- return h$67("div", { className: "wb-approvalPlan" }, hint === void 0 ? null : h$67("p", { className: "wb-approvalHint" }, hint), h$67("dl", { className: "wb-approvalRows" }, rows.map((row, index) => h$67("div", {
1007
+ return h$69("div", { className: "wb-approvalPlan" }, hint === void 0 ? null : h$69("p", { className: "wb-approvalHint" }, hint), h$69("dl", { className: "wb-approvalRows" }, rows.map((row, index) => h$69("div", {
1004
1008
  className: "wb-approvalRow",
1005
1009
  key: String(index)
1006
- }, h$67("dt", { className: "wb-approvalLabel" }, row.label), h$67("dd", { className: "wb-approvalValue" }, row.value)))), children, warn === void 0 ? null : h$67("p", { className: "wb-approvalWarn" }, warn));
1010
+ }, h$69("dt", { className: "wb-approvalLabel" }, row.label), h$69("dd", { className: "wb-approvalValue" }, row.value)))), children, warn === void 0 ? null : h$69("p", { className: "wb-approvalWarn" }, warn));
1007
1011
  }
1008
1012
  //#endregion
1009
1013
  //#region ../shared/dist/components/CardHead.js
@@ -1020,47 +1024,47 @@ window.__ModuleLoader__.load({
1020
1024
  function CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle }) {
1021
1025
  const refreshLabel = refreshing ? t("rightbar.refreshing") : t("rightbar.refresh");
1022
1026
  const platformLabel = platformTitle ?? platform ?? t("rightbar.openPlatform");
1023
- return h$67("header", { className: "wb-cardHead" }, h$67("h2", { className: "wb-cardTitle" }, title), meta === void 0 ? null : h$67("span", { className: "wb-cardMeta" }, meta), platformHref === void 0 ? null : h$67(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1027
+ return h$69("header", { className: "wb-cardHead" }, h$69("h2", { className: "wb-cardTitle" }, title), meta === void 0 ? null : h$69("span", { className: "wb-cardMeta" }, meta), platformHref === void 0 ? null : h$69(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1024
1028
  side: "bottom",
1025
1029
  align: "end",
1026
1030
  gap: 6,
1027
1031
  portal: true,
1028
1032
  label: platformLabel
1029
- }, h$67("a", {
1033
+ }, h$69("a", {
1030
1034
  className: "wb-iconButton wb-cardOpen",
1031
1035
  href: platformHref,
1032
1036
  target: "_blank",
1033
1037
  rel: "noreferrer noopener",
1034
1038
  "aria-label": platform ?? platformLabel
1035
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 14 }))), h$67(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1039
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 14 }))), h$69(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1036
1040
  side: "bottom",
1037
1041
  align: "end",
1038
1042
  gap: 6,
1039
1043
  portal: true,
1040
1044
  label: refreshLabel
1041
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
1045
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.Button, {
1042
1046
  type: "button",
1043
1047
  size: "sm",
1044
1048
  variant: "ghost",
1045
1049
  className: `wb-cardRefresh${refreshing ? " wb-spinning" : ""}`,
1046
1050
  "aria-label": refreshLabel,
1047
1051
  disabled: refreshing,
1048
- icon: h$67(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 14 }),
1052
+ icon: h$69(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 14 }),
1049
1053
  onClick: onRefresh
1050
- })), gear === void 0 || onToggleGear === void 0 ? null : h$67(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1054
+ })), gear === void 0 || onToggleGear === void 0 ? null : h$69(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1051
1055
  side: "bottom",
1052
1056
  align: "end",
1053
1057
  gap: 6,
1054
1058
  portal: true,
1055
1059
  label: gear
1056
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
1060
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.Button, {
1057
1061
  type: "button",
1058
1062
  size: "sm",
1059
1063
  variant: "ghost",
1060
1064
  className: `wb-cardGear${gearOpen === true ? " wb-iconButtonActive" : ""}`,
1061
1065
  "aria-label": gear,
1062
1066
  "aria-expanded": gearOpen === true,
1063
- icon: h$67(_deepseek_ai_dsh_client_ui_primitives.IconSettingsOutlineRegular, { size: 15 }),
1067
+ icon: h$69(_deepseek_ai_dsh_client_ui_primitives.IconSettingsOutlineRegular, { size: 15 }),
1064
1068
  onClick: onToggleGear
1065
1069
  })));
1066
1070
  }
@@ -1077,13 +1081,13 @@ window.__ModuleLoader__.load({
1077
1081
  * @returns 一个 `<section>`。
1078
1082
  */
1079
1083
  function Card({ t, title, refreshing, onRefresh, meta, head, children }) {
1080
- return h$67("section", { className: "wb-card" }, head === void 0 ? h$67(CardHead, {
1084
+ return h$69("section", { className: "wb-card" }, head === void 0 ? h$69(CardHead, {
1081
1085
  t,
1082
1086
  title,
1083
1087
  refreshing,
1084
1088
  onRefresh,
1085
1089
  meta
1086
- }) : head, h$67("div", { className: "wb-cardBody" }, children));
1090
+ }) : head, h$69("div", { className: "wb-cardBody" }, children));
1087
1091
  }
1088
1092
  var CardAnchor_module_default = { anchor: "_anchor_yq4s2_1" };
1089
1093
  //#endregion
@@ -1103,7 +1107,7 @@ window.__ModuleLoader__.load({
1103
1107
  * @returns 带 id 的占位 div。
1104
1108
  */
1105
1109
  function CardAnchor({ unit, children }) {
1106
- return h$67("div", {
1110
+ return h$69("div", {
1107
1111
  id: cardIdOf(unit),
1108
1112
  className: CardAnchor_module_default.anchor
1109
1113
  }, children);
@@ -1117,13 +1121,13 @@ window.__ModuleLoader__.load({
1117
1121
  * @returns 一枚 `StateDot state="ongoing"`,自身不带文字。
1118
1122
  */
1119
1123
  function Spinner({ size = 14, label }) {
1120
- return h$67("span", {
1124
+ return h$69("span", {
1121
1125
  className: "wb-spinner",
1122
1126
  ...label === void 0 ? { "aria-hidden": true } : {
1123
1127
  role: "status",
1124
1128
  "aria-label": label
1125
1129
  }
1126
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1130
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1127
1131
  state: "ongoing",
1128
1132
  size
1129
1133
  }));
@@ -1131,24 +1135,24 @@ window.__ModuleLoader__.load({
1131
1135
  //#endregion
1132
1136
  //#region ../shared/dist/components/ChoiceGroup.js
1133
1137
  function ChoiceMenu(input) {
1134
- const body = input.loading ? h$67("span", {
1138
+ const body = input.loading ? h$69("span", {
1135
1139
  className: "wb-choiceLoading",
1136
1140
  role: "status"
1137
- }, h$67(Spinner, { size: 14 }), h$67("span", { className: "wb-choiceLoadingText" }, input.loadingText ?? "…")) : input.options.length === 0 ? input.emptyText === void 0 ? null : h$67("span", { className: "wb-choiceEmpty" }, input.emptyText) : input.options.map((option) => {
1141
+ }, h$69(Spinner, { size: 14 }), h$69("span", { className: "wb-choiceLoadingText" }, input.loadingText ?? "…")) : input.options.length === 0 ? input.emptyText === void 0 ? null : h$69("span", { className: "wb-choiceEmpty" }, input.emptyText) : input.options.map((option) => {
1138
1142
  const row = input.rowOf(option.value);
1139
- return h$67(Fragment$23, { key: option.value }, h$67("label", { className: `wb-choiceOption${row.checked ? " wb-choiceOptionOn" : ""}` }, h$67("input", {
1143
+ return h$69(Fragment$22, { key: option.value }, h$69("label", { className: `wb-choiceOption${row.checked ? " wb-choiceOptionOn" : ""}` }, h$69("input", {
1140
1144
  className: input.multi ? "wb-checkbox" : "wb-radio",
1141
1145
  type: input.multi ? "checkbox" : "radio",
1142
1146
  name: input.name,
1143
1147
  checked: row.checked,
1144
1148
  disabled: input.disabled,
1145
1149
  onChange: row.onSelect
1146
- }), input.multi ? h$67("span", {
1150
+ }), input.multi ? h$69("span", {
1147
1151
  className: "wb-checkboxBox",
1148
1152
  "aria-hidden": "true"
1149
- }, row.checked ? h$67(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 12 }) : null) : null, h$67("span", { className: "wb-choiceLabel" }, h$67("span", { className: "wb-choiceLabelText" }, option.label), option.description === void 0 ? null : h$67("span", { className: "wb-choiceDescription" }, option.description))));
1153
+ }, row.checked ? h$69(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 12 }) : null) : null, h$69("span", { className: "wb-choiceLabel" }, h$69("span", { className: "wb-choiceLabelText" }, option.label), option.description === void 0 ? null : h$69("span", { className: "wb-choiceDescription" }, option.description))));
1150
1154
  });
1151
- return h$67("div", {
1155
+ return h$69("div", {
1152
1156
  className: "wb-choiceMenu",
1153
1157
  "data-variant": input.variant,
1154
1158
  role: input.multi ? "group" : "radiogroup",
@@ -1182,7 +1186,7 @@ window.__ModuleLoader__.load({
1182
1186
  if (props.multi === true) {
1183
1187
  const values = props.values;
1184
1188
  const onChange = props.onChange;
1185
- return h$67(ChoiceMenu, {
1189
+ return h$69(ChoiceMenu, {
1186
1190
  label: common.label,
1187
1191
  name: common.name,
1188
1192
  options: common.options,
@@ -1202,7 +1206,7 @@ window.__ModuleLoader__.load({
1202
1206
  }
1203
1207
  const value = props.value;
1204
1208
  const onChange = props.onChange;
1205
- return h$67(ChoiceMenu, {
1209
+ return h$69(ChoiceMenu, {
1206
1210
  label: common.label,
1207
1211
  name: common.name,
1208
1212
  options: common.options,
@@ -1255,17 +1259,17 @@ window.__ModuleLoader__.load({
1255
1259
  function FormActions({ actions }) {
1256
1260
  if (actions.length === 0) return null;
1257
1261
  reportExtraPrimaries(actions);
1258
- return h$67("div", { className: "wb-formActions" }, ordered(actions).map((action) => {
1262
+ return h$69("div", { className: "wb-formActions" }, ordered(actions).map((action) => {
1259
1263
  const kind = kindOf(action);
1260
1264
  const busy = action.busy === true;
1261
- return h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
1265
+ return h$69(_deepseek_ai_dsh_client_ui_primitives.Button, {
1262
1266
  key: action.key,
1263
1267
  type: "button",
1264
1268
  size: "sm",
1265
1269
  variant: variantOf(kind),
1266
1270
  className: kind === "danger" ? "wb-formActionDanger" : void 0,
1267
1271
  disabled: busy || action.disabled === true,
1268
- icon: busy ? h$67(Spinner, { size: 12 }) : void 0,
1272
+ icon: busy ? h$69(Spinner, { size: 12 }) : void 0,
1269
1273
  onClick: action.onClick
1270
1274
  }, action.label);
1271
1275
  }));
@@ -1278,7 +1282,7 @@ window.__ModuleLoader__.load({
1278
1282
  * @returns 竖排的 div。
1279
1283
  */
1280
1284
  function Rows({ children }) {
1281
- return h$67("div", { className: "wb-rows" }, children);
1285
+ return h$69("div", { className: "wb-rows" }, children);
1282
1286
  }
1283
1287
  /**
1284
1288
  * 一行键值:左边名字、右边值;要成对说明一项数据就用它,别自己写两栏。
@@ -1287,7 +1291,7 @@ window.__ModuleLoader__.load({
1287
1291
  * @returns 一行两格。
1288
1292
  */
1289
1293
  function Row({ label, value }) {
1290
- return h$67("div", { className: "wb-row" }, h$67("span", { className: "wb-rowKey" }, label), h$67("span", { className: "wb-rowValue" }, value));
1294
+ return h$69("div", { className: "wb-row" }, h$69("span", { className: "wb-rowKey" }, label), h$69("span", { className: "wb-rowValue" }, value));
1291
1295
  }
1292
1296
  //#endregion
1293
1297
  //#region ../shared/dist/components/ConfirmBar.js
@@ -1304,19 +1308,19 @@ window.__ModuleLoader__.load({
1304
1308
  * @returns 一个 `role="group"` 的条;`actions` 空数组时最后那一块不渲染。
1305
1309
  */
1306
1310
  function ConfirmBar({ title, hint, rows, actions, problem, busy, label }) {
1307
- return h$67("div", {
1311
+ return h$69("div", {
1308
1312
  className: "wb-confirmBar",
1309
1313
  role: "group",
1310
1314
  "aria-label": label ?? (typeof title === "string" ? title : void 0),
1311
1315
  "aria-busy": busy
1312
- }, h$67("p", { className: "wb-confirmBarTitle" }, title), hint === void 0 ? null : h$67("p", { className: "wb-confirmBarHint" }, hint), rows === void 0 || rows.length === 0 ? null : h$67(Rows, null, rows.map((row) => h$67(Row, {
1316
+ }, h$69("p", { className: "wb-confirmBarTitle" }, title), hint === void 0 ? null : h$69("p", { className: "wb-confirmBarHint" }, hint), rows === void 0 || rows.length === 0 ? null : h$69(Rows, null, rows.map((row) => h$69(Row, {
1313
1317
  key: row.key,
1314
1318
  label: row.label,
1315
1319
  value: row.value
1316
- }))), problem === void 0 ? null : h$67(Note, {
1320
+ }))), problem === void 0 ? null : h$69(Note, {
1317
1321
  tone: "problem",
1318
1322
  role: "alert"
1319
- }, problem), h$67(FormActions, { actions }));
1323
+ }, problem), h$69(FormActions, { actions }));
1320
1324
  }
1321
1325
  //#endregion
1322
1326
  //#region ../shared/dist/components/Field.js
@@ -1328,7 +1332,7 @@ window.__ModuleLoader__.load({
1328
1332
  * @returns 一个 `<label>`,点标签会聚焦里面的控件。
1329
1333
  */
1330
1334
  function Field({ label, hint, children }) {
1331
- return h$67("label", { className: "wb-field" }, h$67("span", { className: "wb-fieldLabel" }, label), children, hint === void 0 ? null : h$67("span", { className: "wb-fieldHint" }, hint));
1335
+ return h$69("label", { className: "wb-field" }, h$69("span", { className: "wb-fieldLabel" }, label), children, hint === void 0 ? null : h$69("span", { className: "wb-fieldHint" }, hint));
1332
1336
  }
1333
1337
  //#endregion
1334
1338
  //#region ../shared/dist/components/FormRows.js
@@ -1338,7 +1342,7 @@ window.__ModuleLoader__.load({
1338
1342
  * @returns 竖排的 div。
1339
1343
  */
1340
1344
  function FormRows({ children }) {
1341
- return h$67("div", { className: "wb-formRows" }, children);
1345
+ return h$69("div", { className: "wb-formRows" }, children);
1342
1346
  }
1343
1347
  /**
1344
1348
  * 表单一行:左边标签、右边控件,提示与错误占控件下面那一格。
@@ -1351,14 +1355,14 @@ window.__ModuleLoader__.load({
1351
1355
  * @returns 一个 `<div>`:里面的 `<label>` 只包标签文字,不包控件、提示与整行的空白。
1352
1356
  */
1353
1357
  function FormRow({ label, htmlFor, hint, problem, layout = "inline", children }) {
1354
- return h$67("div", {
1358
+ return h$69("div", {
1355
1359
  className: "wb-formRow",
1356
1360
  "data-layout": layout,
1357
1361
  "data-wb-problem": problem === void 0 ? void 0 : ""
1358
- }, h$67("label", {
1362
+ }, h$69("label", {
1359
1363
  className: "wb-formLabel",
1360
1364
  htmlFor
1361
- }, label), h$67("span", { className: "wb-formControl" }, children), problem === void 0 ? hint === void 0 ? null : h$67("span", { className: "wb-formHint" }, hint) : h$67("span", { className: "wb-formProblem" }, problem));
1365
+ }, label), h$69("span", { className: "wb-formControl" }, children), problem === void 0 ? hint === void 0 ? null : h$69("span", { className: "wb-formHint" }, hint) : h$69("span", { className: "wb-formProblem" }, problem));
1362
1366
  }
1363
1367
  //#endregion
1364
1368
  //#region ../shared/dist/components/FormNodes.js
@@ -1505,7 +1509,7 @@ window.__ModuleLoader__.load({
1505
1509
  * @returns `FormRow` 组成的数组;没有可画的格子时给空数组。
1506
1510
  */
1507
1511
  function formRowsOf(args) {
1508
- return args.fields.map((field) => h$67(FormRow, {
1512
+ return args.fields.map((field) => h$69(FormRow, {
1509
1513
  key: field.key,
1510
1514
  label: field.label,
1511
1515
  htmlFor: controlIdOf(field.key),
@@ -1581,13 +1585,13 @@ window.__ModuleLoader__.load({
1581
1585
  */
1582
1586
  function Form(props) {
1583
1587
  const { fields, onSubmit, submit, cancel, extra, busy = false, disabled = false, problem } = props;
1584
- const [done, setDone] = useState$40(false);
1585
- const [reveal, setReveal] = useState$40(0);
1588
+ const [done, setDone] = useState$42(false);
1589
+ const [reveal, setReveal] = useState$42(0);
1586
1590
  const rootRef = useRef$24(null);
1587
1591
  const shown = visibleFieldsOf(fields);
1588
1592
  const problems = formProblemsOf(shown, done);
1589
1593
  reportDuplicateKeys(shown);
1590
- useEffect$30(() => {
1594
+ useEffect$31(() => {
1591
1595
  if (reveal === 0) return;
1592
1596
  const root = rootRef.current;
1593
1597
  if (root !== null) revealFirstProblem(root);
@@ -1602,7 +1606,7 @@ window.__ModuleLoader__.load({
1602
1606
  }
1603
1607
  onSubmit(outcome.values);
1604
1608
  };
1605
- return h$67("form", {
1609
+ return h$69("form", {
1606
1610
  className: "wb-form",
1607
1611
  ref: rootRef,
1608
1612
  noValidate: true,
@@ -1610,15 +1614,15 @@ window.__ModuleLoader__.load({
1610
1614
  event.preventDefault();
1611
1615
  submitForm();
1612
1616
  }
1613
- }, h$67(FormRows, null, formRowsOf({
1617
+ }, h$69(FormRows, null, formRowsOf({
1614
1618
  fields: shown,
1615
1619
  problems,
1616
1620
  showProblem: done,
1617
1621
  busy
1618
- })), problem === void 0 ? null : h$67(Note, {
1622
+ })), problem === void 0 ? null : h$69(Note, {
1619
1623
  tone: "problem",
1620
1624
  role: "alert"
1621
- }, problem), h$67(FormActions, { actions: formActionsOf({
1625
+ }, problem), h$69(FormActions, { actions: formActionsOf({
1622
1626
  extra,
1623
1627
  cancel,
1624
1628
  submit,
@@ -1639,7 +1643,7 @@ window.__ModuleLoader__.load({
1639
1643
  * @returns 一个 `<a>`。
1640
1644
  */
1641
1645
  function Link({ href, children, title, external = true, className }) {
1642
- return h$67("a", {
1646
+ return h$69("a", {
1643
1647
  className: className === void 0 ? "wb-link" : `wb-link ${className}`,
1644
1648
  href,
1645
1649
  ...title === void 0 ? {} : { title },
@@ -1647,7 +1651,7 @@ window.__ModuleLoader__.load({
1647
1651
  target: "_blank",
1648
1652
  rel: "noopener noreferrer"
1649
1653
  } : {}
1650
- }, children, external ? h$67(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 12 }) : null);
1654
+ }, children, external ? h$69(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 12 }) : null);
1651
1655
  }
1652
1656
  //#endregion
1653
1657
  //#region ../shared/dist/contract/long-task.js
@@ -1739,7 +1743,7 @@ window.__ModuleLoader__.load({
1739
1743
  //#endregion
1740
1744
  //#region ../shared/dist/components/LongTaskRow.js
1741
1745
  function RowLink({ href, text }) {
1742
- return h$67(Link, {
1746
+ return h$69(Link, {
1743
1747
  href,
1744
1748
  className: "wb-longTaskLink"
1745
1749
  }, text);
@@ -1759,9 +1763,9 @@ window.__ModuleLoader__.load({
1759
1763
  * @returns 一行长任务。
1760
1764
  */
1761
1765
  function LongTaskRow(props) {
1762
- const [stepsOpen, setStepsOpen] = useState$40(false);
1763
- const [rawOpen, setRawOpen] = useState$40(false);
1764
- const [armed, setArmed] = useState$40(false);
1766
+ const [stepsOpen, setStepsOpen] = useState$42(false);
1767
+ const [rawOpen, setRawOpen] = useState$42(false);
1768
+ const [armed, setArmed] = useState$42(false);
1765
1769
  const failed = props.status === "failed";
1766
1770
  const problem = props.problem ?? "";
1767
1771
  const raw = (props.raw ?? "").trim();
@@ -1769,7 +1773,7 @@ window.__ModuleLoader__.load({
1769
1773
  const stop = props.stop;
1770
1774
  const busy = stop?.busy === true;
1771
1775
  const stopWhy = stop?.failed ?? "";
1772
- useEffect$30(() => {
1776
+ useEffect$31(() => {
1773
1777
  if (!armed) return void 0;
1774
1778
  const timer = setTimeout(() => setArmed(false), LONG_TASK_STOP_ARM_MS);
1775
1779
  return () => clearTimeout(timer);
@@ -1788,14 +1792,14 @@ window.__ModuleLoader__.load({
1788
1792
  setArmed(false);
1789
1793
  stop.onStop();
1790
1794
  };
1791
- return h$67("div", { className: "wb-longTask" }, h$67("p", { className: "wb-longTaskHead" }, h$67(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1795
+ return h$69("div", { className: "wb-longTask" }, h$69("p", { className: "wb-longTaskHead" }, h$69(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1792
1796
  state: longTaskDot(props.status),
1793
1797
  size: 10
1794
- }), h$67("span", { className: "wb-longTaskHeadline" }, props.headline), (props.links ?? []).map((link) => h$67(RowLink, {
1798
+ }), h$69("span", { className: "wb-longTaskHeadline" }, props.headline), (props.links ?? []).map((link) => h$69(RowLink, {
1795
1799
  href: link.href,
1796
1800
  key: `${link.text}@${link.href}`,
1797
1801
  text: link.text
1798
- })), stop === void 0 ? null : h$67("button", {
1802
+ })), stop === void 0 ? null : h$69("button", {
1799
1803
  type: "button",
1800
1804
  className: `wb-longTaskStop${armed ? " wb-longTaskStopArmed" : ""}`,
1801
1805
  "data-stop-state": longTaskStopStage({
@@ -1806,31 +1810,31 @@ window.__ModuleLoader__.load({
1806
1810
  disabled: busy,
1807
1811
  onClick: onStopPress,
1808
1812
  onBlur: () => setArmed(false)
1809
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.IconStopFillRegular, { size: 12 }), armed ? h$67("span", { className: "wb-longTaskStopLabel" }, stop.askLabel) : null)), problem === "" ? null : h$67("p", { className: "wb-longTaskProblem" }, problem), stopWhy === "" ? null : h$67("p", { className: "wb-longTaskStopWhy" }, stopWhy), !failed ? null : h$67(Fragment$23, null, steps.length === 0 || props.stepsTitle === void 0 ? null : h$67(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1813
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.IconStopFillRegular, { size: 12 }), armed ? h$69("span", { className: "wb-longTaskStopLabel" }, stop.askLabel) : null)), problem === "" ? null : h$69("p", { className: "wb-longTaskProblem" }, problem), stopWhy === "" ? null : h$69("p", { className: "wb-longTaskStopWhy" }, stopWhy), !failed ? null : h$69(Fragment$22, null, steps.length === 0 || props.stepsTitle === void 0 ? null : h$69(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1810
1814
  className: "wb-longTaskDump",
1811
- icon: h$67(_deepseek_ai_dsh_client_ui_primitives.IconFlatListOutlineRegular, { size: 14 }),
1815
+ icon: h$69(_deepseek_ai_dsh_client_ui_primitives.IconFlatListOutlineRegular, { size: 14 }),
1812
1816
  title: props.stepsTitle,
1813
1817
  open: stepsOpen,
1814
1818
  expandable: true,
1815
1819
  expandOnRowClick: true,
1816
1820
  previewChevron: true,
1817
1821
  onToggle: () => setStepsOpen(!stepsOpen)
1818
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
1822
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
1819
1823
  code: steps.join("\n"),
1820
1824
  className: "wb-longTaskDump",
1821
1825
  showHeader: props.copyLabel !== void 0,
1822
1826
  copyLabel: props.copyLabel ?? "",
1823
1827
  copiedLabel: props.copiedLabel ?? ""
1824
- })), raw === "" || props.rawTitle === void 0 ? null : h$67(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1828
+ })), raw === "" || props.rawTitle === void 0 ? null : h$69(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1825
1829
  className: "wb-longTaskDump",
1826
- icon: h$67(_deepseek_ai_dsh_client_ui_primitives.IconCodeOutlineRegular, { size: 14 }),
1830
+ icon: h$69(_deepseek_ai_dsh_client_ui_primitives.IconCodeOutlineRegular, { size: 14 }),
1827
1831
  title: props.rawTitle,
1828
1832
  open: rawOpen,
1829
1833
  expandable: true,
1830
1834
  expandOnRowClick: true,
1831
1835
  previewChevron: true,
1832
1836
  onToggle: () => setRawOpen(!rawOpen)
1833
- }, h$67(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
1837
+ }, h$69(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
1834
1838
  code: raw,
1835
1839
  className: "wb-longTaskDump",
1836
1840
  showHeader: props.copyLabel !== void 0,
@@ -1846,13 +1850,13 @@ window.__ModuleLoader__.load({
1846
1850
  * @returns 一叠占位条。
1847
1851
  */
1848
1852
  function SkeletonRows({ rows = 4 }) {
1849
- return h$67("div", {
1853
+ return h$69("div", {
1850
1854
  className: "wb-skeleton",
1851
1855
  "aria-hidden": "true"
1852
- }, Array.from({ length: rows }, (_, index) => h$67("span", {
1856
+ }, Array.from({ length: rows }, (_, index) => h$69("span", {
1853
1857
  key: index,
1854
1858
  className: "wb-skeletonRow"
1855
- }, h$67("span", { className: "wb-skeletonBar wb-skeletonBarTitle" }), h$67("span", { className: "wb-skeletonBar wb-skeletonBarMeta" }))));
1859
+ }, h$69("span", { className: "wb-skeletonBar wb-skeletonBarTitle" }), h$69("span", { className: "wb-skeletonBar wb-skeletonBarMeta" }))));
1856
1860
  }
1857
1861
  /**
1858
1862
  * 居中一屏:要他先选一个 / 正在读 / 读不到时用它占住卡片版面。
@@ -1865,13 +1869,13 @@ window.__ModuleLoader__.load({
1865
1869
  * @returns 一个 `role="status"` 的居中块。
1866
1870
  */
1867
1871
  function CenteredState({ icon, title, hint, detail, action, compact = false }) {
1868
- return h$67("div", {
1872
+ return h$69("div", {
1869
1873
  className: compact ? "wb-centered wb-centeredCompact" : "wb-centered",
1870
1874
  role: "status"
1871
- }, icon === null ? null : h$67("span", {
1875
+ }, icon === null ? null : h$69("span", {
1872
1876
  className: "wb-centeredHero",
1873
1877
  "aria-hidden": "true"
1874
- }, icon), h$67("div", { className: "wb-centeredTitle" }, title), hint === void 0 ? null : h$67("div", { className: "wb-centeredHint" }, hint), detail === void 0 ? null : h$67("div", { className: "wb-centeredDetail" }, detail), action === void 0 ? null : h$67("div", { className: "wb-centeredAction" }, action));
1878
+ }, icon), h$69("div", { className: "wb-centeredTitle" }, title), hint === void 0 ? null : h$69("div", { className: "wb-centeredHint" }, hint), detail === void 0 ? null : h$69("div", { className: "wb-centeredDetail" }, detail), action === void 0 ? null : h$69("div", { className: "wb-centeredAction" }, action));
1875
1879
  }
1876
1880
  /**
1877
1881
  * 就绪但空:它只是 `CenteredState` 的简写,标题就是那句空态文案。
@@ -1881,7 +1885,7 @@ window.__ModuleLoader__.load({
1881
1885
  * @returns 一个居中块。
1882
1886
  */
1883
1887
  function EmptyState({ text, icon = null, compact = false }) {
1884
- return h$67(CenteredState, {
1888
+ return h$69(CenteredState, {
1885
1889
  icon,
1886
1890
  title: text,
1887
1891
  compact
@@ -1899,7 +1903,7 @@ window.__ModuleLoader__.load({
1899
1903
  * @returns 一组按钮。
1900
1904
  */
1901
1905
  function SaveBar({ busy, disabled, labels, onCancel, onSave }) {
1902
- return h$67(FormActions, { actions: [{
1906
+ return h$69(FormActions, { actions: [{
1903
1907
  key: "cancel",
1904
1908
  label: labels.cancel,
1905
1909
  kind: "default",
@@ -1932,7 +1936,7 @@ window.__ModuleLoader__.load({
1932
1936
  * @returns 一颗 `<button>`。
1933
1937
  */
1934
1938
  function selectTriggerNode(args) {
1935
- return h$67("button", {
1939
+ return h$69("button", {
1936
1940
  type: "button",
1937
1941
  id: args.id,
1938
1942
  className: args.className,
@@ -1943,7 +1947,7 @@ window.__ModuleLoader__.load({
1943
1947
  "aria-label": args.ariaLabel,
1944
1948
  title: args.title,
1945
1949
  onClick: args.onOpen
1946
- }, args.iconOnly ? h$67("span", { className: "wb-selectIcon" }, args.icon) : h$67(Fragment$23, null, args.icon === void 0 ? null : h$67("span", { className: "wb-selectIcon" }, args.icon), h$67("span", { className: "wb-selectValue" }, args.value), h$67("span", { className: "wb-selectChevron" }, h$67(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, { size: 14 }))));
1950
+ }, args.iconOnly ? h$69("span", { className: "wb-selectIcon" }, args.icon) : h$69(Fragment$22, null, args.icon === void 0 ? null : h$69("span", { className: "wb-selectIcon" }, args.icon), h$69("span", { className: "wb-selectValue" }, args.value), h$69("span", { className: "wb-selectChevron" }, h$69(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, { size: 14 }))));
1947
1951
  }
1948
1952
  /**
1949
1953
  * 名单还没读到时的触发器:禁用 + `aria-busy` 的按钮,`SelectField` 在 `loading` 那档画它。
@@ -1955,7 +1959,7 @@ window.__ModuleLoader__.load({
1955
1959
  * @returns 一颗禁用且 `aria-busy` 的按钮。
1956
1960
  */
1957
1961
  function selectLoadingNode(args) {
1958
- return h$67("button", {
1962
+ return h$69("button", {
1959
1963
  type: "button",
1960
1964
  id: args.id,
1961
1965
  className: `${args.className} wb-selectLoading`,
@@ -1964,7 +1968,7 @@ window.__ModuleLoader__.load({
1964
1968
  "aria-invalid": args.invalid || void 0,
1965
1969
  "aria-label": args.ariaLabel,
1966
1970
  title: args.loadingText
1967
- }, h$67("span", { className: "wb-selectValue" }, h$67(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, { active: true }, args.loadingText ?? "…")), h$67("span", { className: "wb-selectChevron" }, h$67(Spinner, { size: 14 })));
1971
+ }, h$69("span", { className: "wb-selectValue" }, h$69(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, { active: true }, args.loadingText ?? "…")), h$69("span", { className: "wb-selectChevron" }, h$69(Spinner, { size: 14 })));
1968
1972
  }
1969
1973
  //#endregion
1970
1974
  //#region ../shared/dist/components/TextField.js
@@ -1974,7 +1978,7 @@ window.__ModuleLoader__.load({
1974
1978
  * @returns 输入框元素;`className` 是追加在基础类名之后,而不是替换它。
1975
1979
  */
1976
1980
  function TextField({ invalid = false, className, ...rest }) {
1977
- return h$67("input", {
1981
+ return h$69("input", {
1978
1982
  ...rest,
1979
1983
  className: className === void 0 ? "wb-textField" : `wb-textField ${className}`,
1980
1984
  "aria-invalid": invalid || void 0
@@ -1997,7 +2001,7 @@ window.__ModuleLoader__.load({
1997
2001
  ...option.icon === void 0 ? {} : { icon: option.icon },
1998
2002
  ...option.disabled === true ? { disabled: true } : {}
1999
2003
  };
2000
- const revealed = (node) => h$67("span", {
2004
+ const revealed = (node) => h$69("span", {
2001
2005
  className: "wb-selectReveal",
2002
2006
  "data-wb-select-reveal": ""
2003
2007
  }, node);
@@ -2013,20 +2017,20 @@ window.__ModuleLoader__.load({
2013
2017
  return found instanceof HTMLElement ? found : null;
2014
2018
  }
2015
2019
  function useRevealOnOpen(open, revealId) {
2016
- useEffect$30(() => {
2020
+ useEffect$31(() => {
2017
2021
  if (!open || revealId === void 0) return;
2018
2022
  revealNode()?.scrollIntoView({ block: "nearest" });
2019
2023
  }, [open, revealId]);
2020
2024
  }
2021
2025
  function selectValueNode(current, renderValue, placeholder) {
2022
- if (current === void 0) return h$67("span", { className: "wb-selectPlaceholder" }, placeholder ?? "—");
2026
+ if (current === void 0) return h$69("span", { className: "wb-selectPlaceholder" }, placeholder ?? "—");
2023
2027
  return renderValue === void 0 ? current.label : renderValue(current);
2024
2028
  }
2025
2029
  function searchNode(args) {
2026
- return h$67("span", {
2030
+ return h$69("span", {
2027
2031
  ref: args.boxRef,
2028
2032
  className: args.className
2029
- }, h$67("span", { className: "wb-selectSearchIcon" }, h$67(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 })), h$67(TextField, {
2033
+ }, h$69("span", { className: "wb-selectSearchIcon" }, h$69(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 })), h$69(TextField, {
2030
2034
  id: args.id,
2031
2035
  name: args.name,
2032
2036
  className: "wb-selectSearchInput",
@@ -2041,7 +2045,7 @@ window.__ModuleLoader__.load({
2041
2045
  }));
2042
2046
  }
2043
2047
  function menuNode(args) {
2044
- return h$67(_deepseek_ai_dsh_client_ui_primitives.Menu, {
2048
+ return h$69(_deepseek_ai_dsh_client_ui_primitives.Menu, {
2045
2049
  open: args.open,
2046
2050
  portal: true,
2047
2051
  className: "wb-selectAnchor",
@@ -2058,11 +2062,11 @@ window.__ModuleLoader__.load({
2058
2062
  });
2059
2063
  }
2060
2064
  function framed(label, hint, className, control) {
2061
- const inner = label === void 0 ? hint === void 0 ? control : h$67("span", { className: "wb-select" }, control, h$67("span", { className: "wb-selectHint" }, hint)) : h$67(Field, {
2065
+ const inner = label === void 0 ? hint === void 0 ? control : h$69("span", { className: "wb-select" }, control, h$69("span", { className: "wb-selectHint" }, hint)) : h$69(Field, {
2062
2066
  label,
2063
2067
  hint
2064
2068
  }, control);
2065
- return className === void 0 ? inner : h$67("div", { className }, inner);
2069
+ return className === void 0 ? inner : h$69("div", { className }, inner);
2066
2070
  }
2067
2071
  /** 算候选项用来匹配搜索的文本:有 `searchText` 就用它,否则取字符串标签;标签不是字符串又没给它是空串(这项搜不到)。 */
2068
2072
  function searchTextOf(option) {
@@ -2114,9 +2118,9 @@ window.__ModuleLoader__.load({
2114
2118
  }
2115
2119
  function useSelectState(props) {
2116
2120
  const { options, filter = defaultSelectFilter, emptyText, open: openProp, onOpenChange } = props;
2117
- const [openState, setOpenState] = useState$40(false);
2118
- const [query, setQuery] = useState$40("");
2119
- const [cursor, setCursor] = useState$40(null);
2121
+ const [openState, setOpenState] = useState$42(false);
2122
+ const [query, setQuery] = useState$42("");
2123
+ const [cursor, setCursor] = useState$42(null);
2120
2124
  const boxRef = useRef$24(null);
2121
2125
  const triggerRef = useRef$24(null);
2122
2126
  const wasOpenRef = useRef$24(false);
@@ -2127,11 +2131,11 @@ window.__ModuleLoader__.load({
2127
2131
  if (openProp === void 0) setOpenState(next);
2128
2132
  onOpenChange?.(next);
2129
2133
  };
2130
- useEffect$30(() => {
2134
+ useEffect$31(() => {
2131
2135
  if (!open || props.search === false) return;
2132
2136
  boxRef.current?.querySelector("input")?.focus();
2133
2137
  }, [open, props.search]);
2134
- useEffect$30(() => {
2138
+ useEffect$31(() => {
2135
2139
  if (open) {
2136
2140
  wasOpenRef.current = true;
2137
2141
  return;
@@ -2201,7 +2205,7 @@ window.__ModuleLoader__.load({
2201
2205
  ariaLabel,
2202
2206
  loadingText
2203
2207
  }));
2204
- if (fallback !== void 0 && options.length === 0) return framed(label, hint, className, h$67(TextField, {
2208
+ if (fallback !== void 0 && options.length === 0) return framed(label, hint, className, h$69(TextField, {
2205
2209
  id,
2206
2210
  name,
2207
2211
  className: "wb-selectFallback",
@@ -2284,11 +2288,11 @@ window.__ModuleLoader__.load({
2284
2288
  * @returns 一个 `role="group"` 的 section。
2285
2289
  */
2286
2290
  function SettingsSection({ label, title, action, children }) {
2287
- return h$67("section", {
2291
+ return h$69("section", {
2288
2292
  className: "wb-settings",
2289
2293
  role: "group",
2290
2294
  "aria-label": label
2291
- }, h$67("header", { className: "wb-settingsHead" }, h$67("span", { className: "wb-settingsTitle" }, title), action), children);
2295
+ }, h$69("header", { className: "wb-settingsHead" }, h$69("span", { className: "wb-settingsTitle" }, title), action), children);
2292
2296
  }
2293
2297
  //#endregion
2294
2298
  //#region ../shared/dist/components/Stack.js
@@ -2298,7 +2302,7 @@ window.__ModuleLoader__.load({
2298
2302
  * @returns 竖排的 div。
2299
2303
  */
2300
2304
  function Stack({ children }) {
2301
- return h$67("div", { className: "wb-stack" }, children);
2305
+ return h$69("div", { className: "wb-stack" }, children);
2302
2306
  }
2303
2307
  //#endregion
2304
2308
  //#region ../shared/dist/components/StateBlock.js
@@ -2313,12 +2317,12 @@ window.__ModuleLoader__.load({
2313
2317
  * @returns 一个 div。
2314
2318
  */
2315
2319
  function StateBlock({ title, dot, hint, actions, resolving, children }) {
2316
- return h$67("div", { className: "wb-stateBlock" }, title === void 0 && dot === void 0 ? null : h$67("p", { className: "wb-stateBlockTitle" }, dot, title), resolving === void 0 ? null : h$67("p", { className: "wb-stateBlockResolving" }, resolving), hint === void 0 ? null : h$67("p", { className: "wb-stateBlockHint" }, hint), children, actions === void 0 ? null : h$67("div", { className: "wb-stateBlockActions" }, actions));
2320
+ return h$69("div", { className: "wb-stateBlock" }, title === void 0 && dot === void 0 ? null : h$69("p", { className: "wb-stateBlockTitle" }, dot, title), resolving === void 0 ? null : h$69("p", { className: "wb-stateBlockResolving" }, resolving), hint === void 0 ? null : h$69("p", { className: "wb-stateBlockHint" }, hint), children, actions === void 0 ? null : h$69("div", { className: "wb-stateBlockActions" }, actions));
2317
2321
  }
2318
2322
  //#endregion
2319
2323
  //#region ../shared/dist/components/icons.js
2320
2324
  function Shell({ size, strokeWidth = 1, viewBox = "0 0 16 16", children }) {
2321
- return h$67("svg", {
2325
+ return h$69("svg", {
2322
2326
  width: size,
2323
2327
  height: size,
2324
2328
  viewBox,
@@ -2335,10 +2339,10 @@ window.__ModuleLoader__.load({
2335
2339
  * @returns 一枚 `aria-hidden` 的 svg。
2336
2340
  */
2337
2341
  function IconConversation({ size = 16 }) {
2338
- return h$67(Shell, {
2342
+ return h$69(Shell, {
2339
2343
  size,
2340
2344
  strokeWidth: 1.3
2341
- }, h$67("path", {
2345
+ }, h$69("path", {
2342
2346
  d: "M2.5 7.2c0-2.3 2.1-4.2 4.8-4.2h1.4c2.7 0 4.8 1.9 4.8 4.2s-2.1 4.2-4.8 4.2H7.5l-3.2 2v-2.3c-1.1-.8-1.8-2-1.8-3.9Z",
2343
2347
  stroke: "currentColor",
2344
2348
  strokeLinejoin: "round"
@@ -2353,30 +2357,30 @@ window.__ModuleLoader__.load({
2353
2357
  * @returns 一枚 `aria-hidden` 的 svg。
2354
2358
  */
2355
2359
  function IconBrandMark({ size = 24 }) {
2356
- return h$67(Shell, {
2360
+ return h$69(Shell, {
2357
2361
  size,
2358
2362
  viewBox: "0 0 64 64"
2359
- }, h$67("path", {
2363
+ }, h$69("path", {
2360
2364
  d: BRAND_FRAME,
2361
2365
  fill: "currentColor",
2362
2366
  fillRule: "evenodd"
2363
- }), h$67("rect", {
2367
+ }), h$69("rect", {
2364
2368
  x: 27.5,
2365
2369
  y: 48,
2366
2370
  width: 9,
2367
2371
  height: 4.75,
2368
2372
  fill: "currentColor"
2369
- }), h$67("rect", {
2373
+ }), h$69("rect", {
2370
2374
  x: 19,
2371
2375
  y: 52.75,
2372
2376
  width: 26,
2373
2377
  height: 4.75,
2374
2378
  rx: 2.375,
2375
2379
  fill: "currentColor"
2376
- }), h$67("g", { transform: BRAND_TAIL_TRANSFORM }, h$67("path", {
2380
+ }), h$69("g", { transform: BRAND_TAIL_TRANSFORM }, h$69("path", {
2377
2381
  d: BRAND_TAIL,
2378
2382
  fill: "currentColor"
2379
- }), h$67("circle", {
2383
+ }), h$69("circle", {
2380
2384
  cx: 6.885,
2381
2385
  cy: 13.742,
2382
2386
  r: 1.95,
@@ -2389,30 +2393,30 @@ window.__ModuleLoader__.load({
2389
2393
  * @returns 一枚 `aria-hidden` 的 svg。
2390
2394
  */
2391
2395
  function IconOpencli({ size = 16 }) {
2392
- return h$67(Shell, {
2396
+ return h$69(Shell, {
2393
2397
  size,
2394
2398
  viewBox: "0 0 64 64"
2395
- }, h$67("defs", null, h$67("linearGradient", {
2399
+ }, h$69("defs", null, h$69("linearGradient", {
2396
2400
  id: "opencli-mark",
2397
2401
  x1: "0%",
2398
2402
  y1: "0%",
2399
2403
  x2: "100%",
2400
2404
  y2: "100%"
2401
- }, h$67("stop", {
2405
+ }, h$69("stop", {
2402
2406
  offset: "0%",
2403
2407
  stopColor: "#00e5a0"
2404
- }), h$67("stop", {
2408
+ }), h$69("stop", {
2405
2409
  offset: "50%",
2406
2410
  stopColor: "#00b4d8"
2407
- }), h$67("stop", {
2411
+ }), h$69("stop", {
2408
2412
  offset: "100%",
2409
2413
  stopColor: "#7b61ff"
2410
- }))), h$67("rect", {
2414
+ }))), h$69("rect", {
2411
2415
  width: 64,
2412
2416
  height: 64,
2413
2417
  rx: 14,
2414
2418
  fill: "#0a0a0f"
2415
- }), h$67("text", {
2419
+ }), h$69("text", {
2416
2420
  x: "50%",
2417
2421
  y: "54%",
2418
2422
  dominantBaseline: "middle",
@@ -2429,10 +2433,10 @@ window.__ModuleLoader__.load({
2429
2433
  * @returns 一枚 `aria-hidden` 的 svg。
2430
2434
  */
2431
2435
  function IconNpm({ size = 16 }) {
2432
- return h$67(Shell, {
2436
+ return h$69(Shell, {
2433
2437
  size,
2434
2438
  viewBox: "0 0 1024 1024"
2435
- }, h$67("path", {
2439
+ }, h$69("path", {
2436
2440
  d: "M64 337.76h896v298.72H512v49.792H312.896v-49.824H64z m49.792 248.928h99.552v-149.376h49.76v149.344h49.792v-199.104H113.792z m248.896-199.136v248.928h99.552v-49.792h99.552v-199.136z m99.552 49.792H512v99.584h-49.792z m149.344-49.792v199.136h99.552v-149.376h49.792v149.344h49.792v-149.344h49.792v149.344h49.792v-199.104z",
2437
2441
  fill: "#CB3837"
2438
2442
  }));
@@ -2443,37 +2447,37 @@ window.__ModuleLoader__.load({
2443
2447
  * @returns 一枚 `aria-hidden` 的 svg。
2444
2448
  */
2445
2449
  function IconModuleMark({ size = 16 }) {
2446
- return h$67(Shell, {
2450
+ return h$69(Shell, {
2447
2451
  size,
2448
2452
  viewBox: "0 0 24 24"
2449
- }, h$67("defs", null, h$67("linearGradient", {
2453
+ }, h$69("defs", null, h$69("linearGradient", {
2450
2454
  id: "workbench-module-mark",
2451
2455
  x1: "0%",
2452
2456
  y1: "0%",
2453
2457
  x2: "100%",
2454
2458
  y2: "100%"
2455
- }, h$67("stop", {
2459
+ }, h$69("stop", {
2456
2460
  offset: "0%",
2457
2461
  stopColor: "#3b82f6"
2458
- }), h$67("stop", {
2462
+ }), h$69("stop", {
2459
2463
  offset: "55%",
2460
2464
  stopColor: "#8b5cf6"
2461
- }), h$67("stop", {
2465
+ }), h$69("stop", {
2462
2466
  offset: "100%",
2463
2467
  stopColor: "#14b8a6"
2464
- }))), h$67("rect", {
2468
+ }))), h$69("rect", {
2465
2469
  width: 24,
2466
2470
  height: 24,
2467
2471
  rx: 7,
2468
2472
  fill: "url(#workbench-module-mark)"
2469
- }), h$67("rect", {
2473
+ }), h$69("rect", {
2470
2474
  x: "4.6",
2471
2475
  y: "4.6",
2472
2476
  width: "6.2",
2473
2477
  height: "6.2",
2474
2478
  rx: "1.9",
2475
2479
  fill: "#ffffff"
2476
- }), h$67("rect", {
2480
+ }), h$69("rect", {
2477
2481
  x: "13.2",
2478
2482
  y: "4.6",
2479
2483
  width: "6.2",
@@ -2481,7 +2485,7 @@ window.__ModuleLoader__.load({
2481
2485
  rx: "1.9",
2482
2486
  fill: "#ffffff",
2483
2487
  fillOpacity: .78
2484
- }), h$67("rect", {
2488
+ }), h$69("rect", {
2485
2489
  x: "4.6",
2486
2490
  y: "13.2",
2487
2491
  width: "6.2",
@@ -2489,7 +2493,7 @@ window.__ModuleLoader__.load({
2489
2493
  rx: "1.9",
2490
2494
  fill: "#ffffff",
2491
2495
  fillOpacity: .78
2492
- }), h$67("rect", {
2496
+ }), h$69("rect", {
2493
2497
  x: "13.2",
2494
2498
  y: "13.2",
2495
2499
  width: "6.2",
@@ -2504,7 +2508,7 @@ window.__ModuleLoader__.load({
2504
2508
  * @returns 一枚 `aria-hidden` 的 svg。
2505
2509
  */
2506
2510
  function IconPanelScreen({ size = 16 }) {
2507
- return h$67("svg", {
2511
+ return h$69("svg", {
2508
2512
  width: size,
2509
2513
  height: size,
2510
2514
  viewBox: "0 0 1024 1024",
@@ -2515,7 +2519,7 @@ window.__ModuleLoader__.load({
2515
2519
  display: "block",
2516
2520
  overflow: "hidden"
2517
2521
  }
2518
- }, h$67("path", { d: "M939 112c17.673 0 32 14.327 32 32v554.667c0 17.673-14.327 32-32 32l-394.5-0.001v96c0 3.74-0.642 7.331-1.82 10.668H768.4c17.673 0 32 14.326 32 32 0 17.496-14.042 31.712-31.47 31.995l-0.53 0.004H256.6c-17.673 0-32-14.327-32-32 0-17.496 14.042-31.713 31.47-31.995l0.53-0.005h225.721a31.923 31.923 0 0 1-1.817-10.137l-0.004-0.53v-96H86c-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V144c0-17.673 14.327-32 32-32z m-32 64H118v490.666h789V176zM341.9 432c17.496 0 31.713 14.042 31.996 31.47l0.004 0.53v85.333c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V464c0-17.673 14.327-32 32-32z m170.6-85.333c17.496 0 31.713 14.041 31.996 31.47l0.004 0.53v170.666c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V378.667c0-17.673 14.327-32 32-32z m170.6-85.334c17.496 0 31.713 14.042 31.996 31.471l0.004 0.53v256c0 17.672-14.327 32-32 32-17.496 0-31.713-14.042-31.996-31.471l-0.004-0.53v-256c0-17.673 14.327-32 32-32z" }));
2522
+ }, h$69("path", { d: "M939 112c17.673 0 32 14.327 32 32v554.667c0 17.673-14.327 32-32 32l-394.5-0.001v96c0 3.74-0.642 7.331-1.82 10.668H768.4c17.673 0 32 14.326 32 32 0 17.496-14.042 31.712-31.47 31.995l-0.53 0.004H256.6c-17.673 0-32-14.327-32-32 0-17.496 14.042-31.713 31.47-31.995l0.53-0.005h225.721a31.923 31.923 0 0 1-1.817-10.137l-0.004-0.53v-96H86c-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V144c0-17.673 14.327-32 32-32z m-32 64H118v490.666h789V176zM341.9 432c17.496 0 31.713 14.042 31.996 31.47l0.004 0.53v85.333c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V464c0-17.673 14.327-32 32-32z m170.6-85.333c17.496 0 31.713 14.041 31.996 31.47l0.004 0.53v170.666c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V378.667c0-17.673 14.327-32 32-32z m170.6-85.334c17.496 0 31.713 14.042 31.996 31.471l0.004 0.53v256c0 17.672-14.327 32-32 32-17.496 0-31.713-14.042-31.996-31.471l-0.004-0.53v-256c0-17.673 14.327-32 32-32z" }));
2519
2523
  }
2520
2524
  //#endregion
2521
2525
  //#region ../shared/dist/config/storage.js
@@ -2534,6 +2538,12 @@ window.__ModuleLoader__.load({
2534
2538
  else window.localStorage.setItem(key, value);
2535
2539
  } catch {}
2536
2540
  }
2541
+ //#endregion
2542
+ //#region ../shared/dist/contract/approval.js
2543
+ /**
2544
+ * agent 自己那句"这次想干什么"的参数名:插件命令族必填,审批屏把它画在详情座里,不进标题。
2545
+ */
2546
+ var APPROVAL_NOTE_ARG = "approval_note";
2537
2547
  /**
2538
2548
  * 判一个名字是不是范围查法,不是问这条事实存不存在。
2539
2549
  * @param name 事实名或范围名。
@@ -2757,9 +2767,13 @@ window.__ModuleLoader__.load({
2757
2767
  }
2758
2768
  //#endregion
2759
2769
  //#region ../shared/dist/contract/needs.js
2770
+ var REGISTRY_PATTERN = /^(?:https?|file):\/\//;
2760
2771
  function text(value) {
2761
2772
  return typeof value === "string" ? value.trim() : "";
2762
2773
  }
2774
+ function isRecord(value) {
2775
+ return typeof value === "object" && value !== null && !Array.isArray(value);
2776
+ }
2763
2777
  /**
2764
2778
  * 一条 need 的稳定标识:作者写 `id` 就用它,否则 `kind:name`。
2765
2779
  * @param need 一条 need。
@@ -2768,11 +2782,40 @@ window.__ModuleLoader__.load({
2768
2782
  function needIdOf(need) {
2769
2783
  return need.id === void 0 || need.id.trim() === "" ? `${need.kind}:${need.name}` : need.id;
2770
2784
  }
2785
+ function binInstallProblemsOf(raw, at) {
2786
+ if (raw === void 0) return [];
2787
+ if (!isRecord(raw)) return [`${at}.install 要是对象`];
2788
+ const errors = [];
2789
+ for (const key of Object.keys(raw)) if (![
2790
+ "kind",
2791
+ "line",
2792
+ "platforms",
2793
+ "package",
2794
+ "registryEnv",
2795
+ "registryDefault"
2796
+ ].includes(key)) errors.push(`${at}.install 有不认识的字段 ${key}`);
2797
+ const kind = text(raw["kind"]);
2798
+ if (kind !== "command" && kind !== "npm") errors.push(`${at}.install.kind 只认 command(一条命令)或 npm(一个包,装进隔离运行时)`);
2799
+ if (kind === "command" && text(raw["line"]) === "") errors.push(`${at}.install.line 没写 —— 要一条能直接粘进终端的命令`);
2800
+ if (kind === "npm" && text(raw["package"]) === "") errors.push(`${at}.install.package 没写 —— 这个命令由哪个 npm 包提供`);
2801
+ if (raw["registryDefault"] !== void 0 && !REGISTRY_PATTERN.test(text(raw["registryDefault"]))) errors.push(`${at}.install.registryDefault 要是 http(s):// 或 file:// 的源地址`);
2802
+ if (raw["platforms"] !== void 0) {
2803
+ if (!Array.isArray(raw["platforms"]) || raw["platforms"].length === 0) errors.push(`${at}.install.platforms 要是非空数组`);
2804
+ else if (raw["platforms"].some((one) => ![
2805
+ "darwin",
2806
+ "linux",
2807
+ "win32"
2808
+ ].includes(text(one)))) errors.push(`${at}.install.platforms 只认 darwin / linux / win32`);
2809
+ }
2810
+ return errors;
2811
+ }
2771
2812
  function perKindProblemsOf(kind, raw, at) {
2772
2813
  const errors = [];
2773
2814
  if (kind === "bin" || kind === "lib" || kind === "env") {
2774
2815
  if (text(raw["name"]) === "") errors.push(`${at}.name 没写`);
2775
2816
  }
2817
+ if (kind === "bin") errors.push(...binInstallProblemsOf(raw["install"], at));
2818
+ if (raw["docs"] !== void 0 && text(raw["docs"]) === "") errors.push(`${at}.docs 是空串`);
2776
2819
  if (kind === "extension") {
2777
2820
  if (text(raw["runtime"]) === "") errors.push(`${at}.runtime 没写 —— 扩展属于哪个运行时(如 opencli)`);
2778
2821
  if (text(raw["name"]) === "") errors.push(`${at}.name 没写`);
@@ -3106,6 +3149,40 @@ window.__ModuleLoader__.load({
3106
3149
  "panels.market.confirmNo": "Cancel",
3107
3150
  "panels.market.noMarketSource": "The index has no newer version of this module (refresh the index and retry)",
3108
3151
  "panels.market.failed": "Failed: {reason}",
3152
+ "panels.market.askAgent": "Ask the agent",
3153
+ "panels.market.askAgentCopied": "Copied",
3154
+ "panels.market.askAgentText": "This workbench module cannot be used: \"{name}\" (unit {unit}) — {reason}. Work out what is missing and how to add it, then confirm it works.",
3155
+ "panels.market.failure.permission": "Didn't install: no write access",
3156
+ "panels.market.failure.diskFull": "Didn't install: the disk is full",
3157
+ "panels.market.failure.sandbox": "Didn't install: the system blocked it",
3158
+ "panels.market.failure.unknown": "Didn't install: cause not recognised",
3159
+ "panels.market.failure.factOwner": "{path} belongs to {owner}, and this account ({me}) cannot write to it. Hand it back to yourself (asks for your login password).",
3160
+ "panels.market.failure.factMode": "{path} is mode {mode}, so this account cannot write to it.",
3161
+ "panels.market.failure.factSpace": "The disk holding {path} is full.",
3162
+ "panels.market.failure.factStuck": "This command ran in a restricted environment and cannot write to {path}.",
3163
+ "panels.market.failure.nowhere": "(the directory was not identified)",
3164
+ "panels.market.failure.copyFix": "Copy the fix command",
3165
+ "panels.market.failure.copied": "Copied",
3166
+ "panels.market.failure.copiedHint": "Paste it in a terminal, run it, then click Check again.",
3167
+ "panels.market.failure.askAgent": "Copy for the agent",
3168
+ "panels.market.failure.askAgentText": "Installing this module could not write: `{command}` exited {code} at {path}. Work out whether the sandbox or file permissions blocked it, then install again somewhere writable.",
3169
+ "panels.market.failure.askAgentHint": "Paste it into the chat and let the agent carry on.",
3170
+ "panels.market.failure.recheck": "Check again",
3171
+ "panels.market.failure.showOutput": "Show install output",
3172
+ "panels.market.failure.hideOutput": "Hide install output",
3173
+ "panels.market.failure.term.commandLine": "command on line {line}",
3174
+ "panels.market.failure.term.signal": "killed by {signal}",
3175
+ "panels.market.failure.term.exitCode": "exit code {exitCode}",
3176
+ "panels.market.failure.term.noExitCode": "no exit code",
3177
+ "panels.market.failure.term.running": "running",
3178
+ "panels.market.failure.term.failed": "failed",
3179
+ "panels.market.failure.term.done": "done",
3180
+ "panels.market.failure.term.copy": "Copy",
3181
+ "panels.market.failure.term.copied": "Copied",
3182
+ "panels.market.failure.term.noOutput": "No output",
3183
+ "panels.market.failure.term.collapse": "Collapse",
3184
+ "panels.market.failure.term.expandAria": "Show the remaining {hidden} lines",
3185
+ "panels.market.failure.term.expand": "Show {hidden} lines",
3109
3186
  "panels.market.needEnv": "Set {env} in the terminal that started the workbench first",
3110
3187
  "panels.market.needCommands": "Missing commands: {commands}",
3111
3188
  "panels.market.needBinary": "Install the {command} command first",
@@ -3145,6 +3222,9 @@ window.__ModuleLoader__.load({
3145
3222
  "panels.market.checkingNow": "Checking…",
3146
3223
  "panels.market.checkFailed": "The last check failed. Check your connection and retry.",
3147
3224
  "panels.market.checkedAt": "Last checked: {time}",
3225
+ "panels.market.latestPartial": "Could not check {n} modules",
3226
+ "panels.market.latestNoRegistry": "No source configured — the latest version was not checked",
3227
+ "panels.market.latestProbeFailed": "Could not reach the source — try again later",
3148
3228
  "panels.market.justNow": "just now",
3149
3229
  "panels.market.minutesAgo": "{n} min ago",
3150
3230
  "panels.market.hoursAgo": "{n} h ago",
@@ -3609,6 +3689,9 @@ window.__ModuleLoader__.load({
3609
3689
  "approval.record.noSwitch": "it will not switch you back (the leftbar footer shows the state)",
3610
3690
  "approval.longTask.what": "Task to stop",
3611
3691
  "approval.longTask.signal": "stopping only sends an interrupt signal — wrapping up the run is up to the module",
3692
+ "approval.plugin.name": "Plugin",
3693
+ "approval.plugin.command": "Command",
3694
+ "approval.plugin.note": "Agent says",
3612
3695
  "approval.publish.module": "Module",
3613
3696
  "approval.publish.target": "Target",
3614
3697
  "approval.publish.version": "Version",
@@ -3806,6 +3889,40 @@ window.__ModuleLoader__.load({
3806
3889
  "panels.market.confirmNo": "取消",
3807
3890
  "panels.market.noMarketSource": "索引里没有这个模块的新版本(刷新一次索引再试)",
3808
3891
  "panels.market.failed": "没成功:{reason}",
3892
+ "panels.market.askAgent": "问 agent",
3893
+ "panels.market.askAgentCopied": "已复制",
3894
+ "panels.market.askAgentText": "工作台里「{name}」(单元 {unit})用不了:{reason}。帮我查清缺什么、怎么补,补完确认真能用。",
3895
+ "panels.market.failure.permission": "没装上:没有写入权限",
3896
+ "panels.market.failure.diskFull": "没装上:磁盘满了",
3897
+ "panels.market.failure.sandbox": "没装上:被系统拦住了",
3898
+ "panels.market.failure.unknown": "没装上:原因没认出来",
3899
+ "panels.market.failure.factOwner": "{path} 属于 {owner},当前账号({me})写不进去。把它还给自己就行(会要开机密码)。",
3900
+ "panels.market.failure.factMode": "{path} 的权限是 {mode},当前账号没有写权限。",
3901
+ "panels.market.failure.factSpace": "{path} 所在的磁盘满了。",
3902
+ "panels.market.failure.factStuck": "这条命令跑在受限环境里,写不进 {path}。",
3903
+ "panels.market.failure.nowhere": "(没认出是哪个目录)",
3904
+ "panels.market.failure.copyFix": "复制修复命令",
3905
+ "panels.market.failure.copied": "已复制",
3906
+ "panels.market.failure.copiedHint": "粘到终端跑一次,回来点「再检测」。",
3907
+ "panels.market.failure.askAgent": "复制给 agent",
3908
+ "panels.market.failure.askAgentText": "装这个模块时写不进去:`{command}` 退出码 {code},卡在 {path}。帮我看看是被沙箱拦的还是权限问题,换一条能写进去的路再装。",
3909
+ "panels.market.failure.askAgentHint": "粘到对话里,让 agent 接着弄。",
3910
+ "panels.market.failure.recheck": "再检测",
3911
+ "panels.market.failure.showOutput": "查看安装输出",
3912
+ "panels.market.failure.hideOutput": "收起安装输出",
3913
+ "panels.market.failure.term.commandLine": "第 {line} 行的命令",
3914
+ "panels.market.failure.term.signal": "被 {signal} 终止",
3915
+ "panels.market.failure.term.exitCode": "退出码 {exitCode}",
3916
+ "panels.market.failure.term.noExitCode": "没有退出码",
3917
+ "panels.market.failure.term.running": "在跑",
3918
+ "panels.market.failure.term.failed": "没跑通",
3919
+ "panels.market.failure.term.done": "跑完了",
3920
+ "panels.market.failure.term.copy": "复制",
3921
+ "panels.market.failure.term.copied": "已复制",
3922
+ "panels.market.failure.term.noOutput": "没有输出",
3923
+ "panels.market.failure.term.collapse": "收起",
3924
+ "panels.market.failure.term.expandAria": "展开剩下的 {hidden} 行",
3925
+ "panels.market.failure.term.expand": "展开 {hidden} 行",
3809
3926
  "panels.market.needEnv": "先在启动工作台的终端里设 {env}",
3810
3927
  "panels.market.needCommands": "缺这几条命令:{commands}",
3811
3928
  "panels.market.needBinary": "先装 {command} 命令",
@@ -3845,6 +3962,9 @@ window.__ModuleLoader__.load({
3845
3962
  "panels.market.checkingNow": "正在检查…",
3846
3963
  "panels.market.checkFailed": "最近一次没查到,检查网络后重试",
3847
3964
  "panels.market.checkedAt": "最近检查:{time}",
3965
+ "panels.market.latestPartial": "{n} 个模块没查成",
3966
+ "panels.market.latestNoRegistry": "没配来源,未检查新版",
3967
+ "panels.market.latestProbeFailed": "问不到源,稍后重试",
3848
3968
  "panels.market.justNow": "刚刚",
3849
3969
  "panels.market.minutesAgo": "{n} 分钟前",
3850
3970
  "panels.market.hoursAgo": "{n} 小时前",
@@ -4309,6 +4429,9 @@ window.__ModuleLoader__.load({
4309
4429
  "approval.record.noSwitch": "录完不会替你切回来(左栏底部会亮一条状态)",
4310
4430
  "approval.longTask.what": "要停的那次任务",
4311
4431
  "approval.longTask.signal": "停了只是让工作台发出中断信号 —— 这次任务怎么收尾由模块自己负责",
4432
+ "approval.plugin.name": "插件",
4433
+ "approval.plugin.command": "命令",
4434
+ "approval.plugin.note": "agent 说",
4312
4435
  "approval.publish.module": "模块",
4313
4436
  "approval.publish.target": "目标",
4314
4437
  "approval.publish.version": "版本",
@@ -4832,14 +4955,14 @@ window.__ModuleLoader__.load({
4832
4955
  epoch$1 += 1;
4833
4956
  }
4834
4957
  var current$1 = null;
4835
- var listeners$7 = /* @__PURE__ */ new Set();
4958
+ var listeners$8 = /* @__PURE__ */ new Set();
4836
4959
  function capabilityValue() {
4837
4960
  return current$1;
4838
4961
  }
4839
4962
  function subscribeCapabilities(listener) {
4840
- listeners$7.add(listener);
4963
+ listeners$8.add(listener);
4841
4964
  return () => {
4842
- listeners$7.delete(listener);
4965
+ listeners$8.delete(listener);
4843
4966
  };
4844
4967
  }
4845
4968
  function setCapabilities(next, rechecked = false) {
@@ -4852,7 +4975,7 @@ window.__ModuleLoader__.load({
4852
4975
  });
4853
4976
  if (next === current$1) return;
4854
4977
  current$1 = next;
4855
- for (const listener of [...listeners$7]) listener();
4978
+ for (const listener of [...listeners$8]) listener();
4856
4979
  }
4857
4980
  function beginProbe() {
4858
4981
  probing += 1;
@@ -5007,7 +5130,7 @@ window.__ModuleLoader__.load({
5007
5130
  //#endregion
5008
5131
  //#region src/app/layouts/panel-hint.ts
5009
5132
  var hints = /* @__PURE__ */ new Map();
5010
- var listeners$6 = /* @__PURE__ */ new Set();
5133
+ var listeners$7 = /* @__PURE__ */ new Set();
5011
5134
  function sameHint(left, right) {
5012
5135
  if (left === null || right === null) return left === right;
5013
5136
  if (left.labelKey !== right.labelKey || left.tone !== right.tone) return false;
@@ -5019,15 +5142,15 @@ window.__ModuleLoader__.load({
5019
5142
  if (sameHint(hints.get(id) ?? null, hint)) return;
5020
5143
  if (hint === null) hints.delete(id);
5021
5144
  else hints.set(id, hint);
5022
- for (const listener of [...listeners$6]) listener();
5145
+ for (const listener of [...listeners$7]) listener();
5023
5146
  }
5024
5147
  function panelHintOf(id) {
5025
5148
  return id === null ? null : hints.get(id) ?? null;
5026
5149
  }
5027
5150
  function subscribePanelHints(listener) {
5028
- listeners$6.add(listener);
5151
+ listeners$7.add(listener);
5029
5152
  return () => {
5030
- listeners$6.delete(listener);
5153
+ listeners$7.delete(listener);
5031
5154
  };
5032
5155
  }
5033
5156
  function usePanelHint(id) {
@@ -5195,6 +5318,26 @@ window.__ModuleLoader__.load({
5195
5318
  if (installed === void 0) return null;
5196
5319
  return new Set(installed.map((item) => item.unit));
5197
5320
  }
5321
+ function latestUnavailableNote(unavailable) {
5322
+ if (unavailable === "no-registry") return {
5323
+ key: "panels.market.latestNoRegistry",
5324
+ params: {}
5325
+ };
5326
+ if (unavailable === "probe-failed") return {
5327
+ key: "panels.market.latestProbeFailed",
5328
+ params: {}
5329
+ };
5330
+ }
5331
+ function latestCheckSummary(modules) {
5332
+ let checked = 0;
5333
+ let unknown = 0;
5334
+ for (const module of modules ?? []) if (module.latest !== void 0) checked += 1;
5335
+ else if (module.latestUnavailable === "no-registry" || module.latestUnavailable === "probe-failed") unknown += 1;
5336
+ return {
5337
+ checked,
5338
+ unknown
5339
+ };
5340
+ }
5198
5341
  function installedRows(modules, manifests, listed, names, defaults = /* @__PURE__ */ new Set(), changed = {}) {
5199
5342
  const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.titleKey]));
5200
5343
  const rows = [];
@@ -5208,16 +5351,17 @@ window.__ModuleLoader__.load({
5208
5351
  const pending = !loaded && refused.length === 0;
5209
5352
  const titleKey = titles.get(module.unit);
5210
5353
  const remembered = titleKey === void 0 ? names?.get(module.unit) : void 0;
5354
+ const note = refused.length > 0 ? {
5355
+ key: "panels.market.moduleRefused",
5356
+ params: {}
5357
+ } : latestUnavailableNote(module.latestUnavailable);
5211
5358
  rows.push({
5212
5359
  id: module.unit,
5213
5360
  titleKey: titleKey ?? module.unit,
5214
5361
  ...remembered === void 0 ? {} : { label: remembered },
5215
5362
  state: outdated ? "outdated" : refused.length > 0 ? "unusable" : pending ? "inactive" : "installed",
5216
5363
  ...pending ? { hint: "panels.market.moduleRestartHint" } : blocked === void 0 ? {} : { hint: updateBlockHintOf(blocked) },
5217
- ...refused.length === 0 ? {} : { note: {
5218
- key: "panels.market.moduleRefused",
5219
- params: {}
5220
- } },
5364
+ ...note === void 0 ? {} : { note },
5221
5365
  ...module.local === true ? { local: true } : {},
5222
5366
  pkg: module.pkg,
5223
5367
  canInstall: false,
@@ -5244,6 +5388,13 @@ window.__ModuleLoader__.load({
5244
5388
  function marketSwitchLocked(row) {
5245
5389
  return SWITCH_LOCKED.has(row.state);
5246
5390
  }
5391
+ function marketAsksAgent(row) {
5392
+ if (row.workbench === true || row.plugin === true) return false;
5393
+ if (row.state === "installed" || row.state === "inactive" || row.state === "outdated") return false;
5394
+ if (row.state === "checking" || row.state === "pending-restart") return false;
5395
+ if (row.state === "pending-followup") return false;
5396
+ return !marketActions$1(row).includes("install");
5397
+ }
5247
5398
  function marketActions$1(row) {
5248
5399
  if (row.workbench === true) {
5249
5400
  if (row.followUp !== void 0 && row.state === "pending-followup") return row.followUp.hard ? ["migrate-workbench"] : ["migrate-workbench", "dismiss-followup"];
@@ -5366,6 +5517,18 @@ window.__ModuleLoader__.load({
5366
5517
  rows: rest
5367
5518
  }]];
5368
5519
  }
5520
+ function checkingRows(rows, scope) {
5521
+ return rows.map((row) => {
5522
+ if (row.state !== "unknown" && row.state !== "unchecked") return row;
5523
+ if (!scope.all && !scope.units.has(row.id)) return row;
5524
+ return {
5525
+ ...row,
5526
+ state: "checking",
5527
+ hint: void 0,
5528
+ note: void 0
5529
+ };
5530
+ });
5531
+ }
5369
5532
  function marketRows(manifests, capabilities, updates = {}, defaults = /* @__PURE__ */ new Set(), changed = {}) {
5370
5533
  const rows = [];
5371
5534
  for (const manifest of manifests) {
@@ -5494,8 +5657,9 @@ window.__ModuleLoader__.load({
5494
5657
  function isProblem(row) {
5495
5658
  return row.broken === true || row.state === "broken" || row.state === "unusable" || row.note?.key === "panels.market.moduleRefused";
5496
5659
  }
5497
- function isRestart(row) {
5498
- return row.state === "inactive" || row.state === "pending-restart";
5660
+ function isRestart(row, installing) {
5661
+ if (row.state === "pending-restart") return true;
5662
+ return !installing && row.state === "inactive";
5499
5663
  }
5500
5664
  function isUnknown(row, rosterRead) {
5501
5665
  return row.state === "unchecked" || rosterRead && row.state === "unknown";
@@ -5505,9 +5669,10 @@ window.__ModuleLoader__.load({
5505
5669
  return installed.some((module) => !loaded.has(module.unit) && refusalReasons(module.refused, module.clientRefused).length === 0);
5506
5670
  }
5507
5671
  function marketHintOf(input) {
5508
- const busy = input.busy ?? /* @__PURE__ */ new Set();
5509
- const marketable = marketCatalog(input.manifests, input.installable).filter((manifest) => !busy.has(manifest.id));
5510
- const installed = (input.installed ?? []).filter((module) => !busy.has(module.unit));
5672
+ const installing = input.installing === true;
5673
+ const held = /* @__PURE__ */ new Set([...input.busy ?? [], ...input.applied ?? []]);
5674
+ const marketable = marketCatalog(input.manifests, input.installable).filter((manifest) => !held.has(manifest.id));
5675
+ const installed = (input.installed ?? []).filter((module) => !held.has(module.unit));
5511
5676
  const catalog = marketRows(marketable, input.capabilities, marketUpdatesOf(input.modules));
5512
5677
  const listed = new Set(catalog.map((row) => row.id));
5513
5678
  const self = workbenchRow(input.workbench);
@@ -5518,10 +5683,10 @@ window.__ModuleLoader__.load({
5518
5683
  ...self === void 0 ? [] : [self]
5519
5684
  ];
5520
5685
  const problem = rows.some(isProblem);
5521
- const restart = rows.some(isRestart) || awaitsRestart(input.manifests, installed);
5686
+ const restart = rows.some((row) => isRestart(row, installing)) || !installing && awaitsRestart(input.manifests, installed);
5522
5687
  const followUp = rows.some((row) => row.state === "pending-followup");
5523
5688
  const rosterRead = input.modules !== null;
5524
- const unknown = rows.some((row) => isUnknown(row, rosterRead));
5689
+ const unknown = !installing && rows.some((row) => isUnknown(row, rosterRead));
5525
5690
  const updates = marketHasUpdates(rows, sharedRows(marketable, input.capabilities));
5526
5691
  const more = [];
5527
5692
  if (problem) {
@@ -5650,10 +5815,10 @@ window.__ModuleLoader__.load({
5650
5815
  }
5651
5816
  //#endregion
5652
5817
  //#region src/app/layouts/rightbar/market-busy.ts
5653
- var listeners$5 = /* @__PURE__ */ new Set();
5818
+ var listeners$6 = /* @__PURE__ */ new Set();
5654
5819
  var published = /* @__PURE__ */ new Map();
5655
5820
  var live$2 = /* @__PURE__ */ new Set();
5656
- var timer$2;
5821
+ var timer$3;
5657
5822
  var MARKET_BUSY_MS = WORKBENCH_SWAP_MS;
5658
5823
  function marketBusyIds() {
5659
5824
  return live$2;
@@ -5663,12 +5828,12 @@ window.__ModuleLoader__.load({
5663
5828
  const next = /* @__PURE__ */ new Map();
5664
5829
  for (const id of new Set(ids)) next.set(id, published.get(id) ?? now);
5665
5830
  published = next;
5666
- refresh(now);
5831
+ refresh$1(now);
5667
5832
  }
5668
5833
  function subscribeMarketBusy(listener) {
5669
- listeners$5.add(listener);
5834
+ listeners$6.add(listener);
5670
5835
  return () => {
5671
- listeners$5.delete(listener);
5836
+ listeners$6.delete(listener);
5672
5837
  };
5673
5838
  }
5674
5839
  function useMarketBusy() {
@@ -5684,29 +5849,100 @@ window.__ModuleLoader__.load({
5684
5849
  for (const id of left) if (!right.has(id)) return false;
5685
5850
  return true;
5686
5851
  }
5687
- function schedule$1(now) {
5688
- if (timer$2 !== void 0) clearTimeout(timer$2);
5689
- timer$2 = void 0;
5852
+ function schedule$2(now) {
5853
+ if (timer$3 !== void 0) clearTimeout(timer$3);
5854
+ timer$3 = void 0;
5690
5855
  let soonest = Number.POSITIVE_INFINITY;
5691
5856
  for (const at of published.values()) soonest = Math.min(soonest, at);
5692
5857
  if (soonest === Number.POSITIVE_INFINITY) return;
5693
- timer$2 = setTimeout(() => refresh(Date.now()), Math.max(0, soonest + MARKET_BUSY_MS - now) + 1);
5858
+ timer$3 = setTimeout(() => refresh$1(Date.now()), Math.max(0, soonest + MARKET_BUSY_MS - now) + 1);
5694
5859
  }
5695
- function refresh(now) {
5860
+ function refresh$1(now) {
5696
5861
  for (const [id, at] of published) if (now - at >= MARKET_BUSY_MS) published.delete(id);
5697
5862
  const next = new Set(published.keys());
5698
5863
  if (!sameSet(live$2, next)) {
5699
5864
  live$2 = next;
5865
+ for (const listener of [...listeners$6]) listener();
5866
+ }
5867
+ schedule$2(now);
5868
+ }
5869
+ //#endregion
5870
+ //#region src/app/layouts/rightbar/market-install.ts
5871
+ var NO_UNITS$2 = /* @__PURE__ */ new Set();
5872
+ var IDLE$1 = {
5873
+ installing: false,
5874
+ applied: NO_UNITS$2
5875
+ };
5876
+ var tokens = /* @__PURE__ */ new Set();
5877
+ var applied = /* @__PURE__ */ new Map();
5878
+ var listeners$5 = /* @__PURE__ */ new Set();
5879
+ var snapshot$1 = IDLE$1;
5880
+ var timer$2;
5881
+ function sameUnits(left, right) {
5882
+ if (left.size !== right.size) return false;
5883
+ for (const unit of left) if (!right.has(unit)) return false;
5884
+ return true;
5885
+ }
5886
+ function schedule$1(now) {
5887
+ if (timer$2 !== void 0) clearTimeout(timer$2);
5888
+ timer$2 = void 0;
5889
+ if (applied.size === 0) return;
5890
+ let soonest = Number.POSITIVE_INFINITY;
5891
+ for (const at of applied.values()) soonest = Math.min(soonest, at);
5892
+ timer$2 = setTimeout(() => refresh(Date.now()), Math.max(0, soonest + MODULE_SETTLE_MS - now) + 1);
5893
+ }
5894
+ function refresh(now) {
5895
+ for (const [unit, at] of applied) if (now - at >= 15e3) applied.delete(unit);
5896
+ const next = tokens.size === 0 && applied.size === 0 ? IDLE$1 : {
5897
+ installing: tokens.size > 0,
5898
+ applied: applied.size === 0 ? NO_UNITS$2 : new Set(applied.keys())
5899
+ };
5900
+ if (next.installing !== snapshot$1.installing || !sameUnits(next.applied, snapshot$1.applied)) {
5901
+ snapshot$1 = next;
5700
5902
  for (const listener of [...listeners$5]) listener();
5701
5903
  }
5702
5904
  schedule$1(now);
5703
5905
  }
5906
+ function marketInstallState() {
5907
+ return snapshot$1;
5908
+ }
5909
+ function subscribeMarketInstall(listener) {
5910
+ listeners$5.add(listener);
5911
+ return () => {
5912
+ listeners$5.delete(listener);
5913
+ };
5914
+ }
5915
+ function publishMarketInstalling(token, active) {
5916
+ if (active) tokens.add(token);
5917
+ else tokens.delete(token);
5918
+ refresh(Date.now());
5919
+ }
5920
+ function publishMarketApplied(units) {
5921
+ const now = Date.now();
5922
+ for (const unit of new Set(units)) if (unit !== "" && !applied.has(unit)) applied.set(unit, now);
5923
+ refresh(now);
5924
+ }
5925
+ function useMarketInstallState() {
5926
+ return (0, react.useSyncExternalStore)(subscribeMarketInstall, marketInstallState);
5927
+ }
5928
+ function usePublishMarketInstalling(token, active) {
5929
+ (0, react.useEffect)(() => {
5930
+ publishMarketInstalling(token, active);
5931
+ return () => publishMarketInstalling(token, false);
5932
+ }, [token, active]);
5933
+ }
5704
5934
  //#endregion
5705
5935
  //#region src/shared/api/write-outcome.ts
5706
5936
  function writeRoute(channel, resource) {
5707
5937
  if (channel === "provision") return "provision";
5708
5938
  return `${channel}/${resource}`;
5709
5939
  }
5940
+ function installFailureOf(value) {
5941
+ if (typeof value !== "object" || value === null) return void 0;
5942
+ const record = value;
5943
+ if (typeof record.kind !== "string" || typeof record.command !== "string") return void 0;
5944
+ return value;
5945
+ }
5710
5946
  function writeOutcomeOf(response, networkText) {
5711
5947
  if (response === null) return {
5712
5948
  ok: false,
@@ -5718,11 +5954,13 @@ window.__ModuleLoader__.load({
5718
5954
  const fallback = typeof box.text === "string" && box.text !== "" ? box.text : networkText;
5719
5955
  const detail = typeof box.error?.detail === "string" ? box.error.detail : void 0;
5720
5956
  const helpUrl = typeof box.error?.helpUrl === "string" && box.error.helpUrl !== "" ? box.error.helpUrl : void 0;
5957
+ const failure = installFailureOf(box.error?.failure);
5721
5958
  return {
5722
5959
  ok: false,
5723
5960
  message: own ?? fallback,
5724
5961
  ...detail === void 0 ? {} : { detail },
5725
- ...helpUrl === void 0 ? {} : { helpUrl }
5962
+ ...helpUrl === void 0 ? {} : { helpUrl },
5963
+ ...failure === void 0 ? {} : { failure }
5726
5964
  };
5727
5965
  }
5728
5966
  return {
@@ -5929,137 +6167,138 @@ window.__ModuleLoader__.load({
5929
6167
  };
5930
6168
  }
5931
6169
  var MarketPage_module_default = {
5932
- marketList: "_marketList_yups9_1",
5933
- marketRow: "_marketRow_yups9_10",
5934
- marketIcon: "_marketIcon_yups9_20",
5935
- marketMain: "_marketMain_yups9_32",
5936
- marketName: "_marketName_yups9_39",
5937
- marketStatus: "_marketStatus_yups9_48",
5938
- marketStateText: "_marketStateText_yups9_58",
5939
- marketSep: "_marketSep_yups9_62",
5940
- marketReason: "_marketReason_yups9_66",
5941
- marketVersion: "_marketVersion_yups9_72",
5942
- marketLocalTag: "_marketLocalTag_yups9_94",
5943
- marketEnd: "_marketEnd_yups9_105",
5944
- marketSwitchSeat: "_marketSwitchSeat_yups9_112",
5945
- marketActions: "_marketActions_yups9_125",
5946
- marketUpdateAction: "_marketUpdateAction_yups9_131",
5947
- marketSelfDivider: "_marketSelfDivider_yups9_137",
5948
- marketSection: "_marketSection_yups9_143",
5949
- marketSectionHead: "_marketSectionHead_yups9_150",
5950
- marketSectionIcon: "_marketSectionIcon_yups9_156",
5951
- marketSectionTitle: "_marketSectionTitle_yups9_163",
5952
- marketSectionCount: "_marketSectionCount_yups9_169",
5953
- marketSectionAction: "_marketSectionAction_yups9_175",
5954
- marketSectionQuiet: "_marketSectionQuiet_yups9_183",
5955
- marketProgress: "_marketProgress_yups9_196",
5956
- marketNote: "_marketNote_yups9_206",
5957
- marketFailure: "_marketFailure_yups9_213",
5958
- marketEmpty: "_marketEmpty_yups9_220",
5959
- marketPage: "_marketPage_yups9_225",
5960
- marketPageHead: "_marketPageHead_yups9_243",
5961
- marketPageTitle: "_marketPageTitle_yups9_251",
5962
- marketPageIntro: "_marketPageIntro_yups9_256",
5963
- marketPageTools: "_marketPageTools_yups9_262",
5964
- marketPanel: "_marketPanel_yups9_271",
5965
- marketTabs: "_marketTabs_yups9_281",
5966
- marketTabList: "_marketTabList_yups9_286",
5967
- marketAddButton: "_marketAddButton_yups9_291",
5968
- marketEmptyTitle: "_marketEmptyTitle_yups9_308",
5969
- discoverPage: "_discoverPage_yups9_313",
5970
- discoverBar: "_discoverBar_yups9_320",
5971
- discoverTools: "_discoverTools_yups9_327",
5972
- discoverMarket: "_discoverMarket_yups9_333",
5973
- discoverMarketButton: "_discoverMarketButton_yups9_338",
5974
- discoverMarketName: "_discoverMarketName_yups9_345",
5975
- discoverLabels: "_discoverLabels_yups9_351",
5976
- discoverSort: "_discoverSort_yups9_356",
5977
- discoverRefresh: "_discoverRefresh_yups9_361",
5978
- discoverSearch: "_discoverSearch_yups9_365",
5979
- discoverSearchField: "_discoverSearchField_yups9_373",
5980
- discoverSearchFieldFilled: "_discoverSearchFieldFilled_yups9_378",
5981
- discoverSearchClear: "_discoverSearchClear_yups9_387",
5982
- discoverChips: "_discoverChips_yups9_438",
5983
- discoverList: "_discoverList_yups9_445",
5984
- discoverCard: "_discoverCard_yups9_454",
5985
- discoverArtwork: "_discoverArtwork_yups9_468",
5986
- discoverArtworkImage: "_discoverArtworkImage_yups9_480",
5987
- discoverMain: "_discoverMain_yups9_484",
5988
- discoverTitleRow: "_discoverTitleRow_yups9_492",
5989
- discoverCardOpen: "_discoverCardOpen_yups9_500",
5990
- discoverStrong: "_discoverStrong_yups9_531",
5991
- discoverDesc: "_discoverDesc_yups9_537",
5992
- discoverMeta: "_discoverMeta_yups9_546",
5993
- discoverMuted: "_discoverMuted_yups9_553",
5994
- discoverEnd: "_discoverEnd_yups9_559",
5995
- discoverUpdateAction: "_discoverUpdateAction_yups9_568",
5996
- discoverBlocked: "_discoverBlocked_yups9_573",
5997
- discoverEmpty: "_discoverEmpty_yups9_578",
5998
- discoverEmptyTitle: "_discoverEmptyTitle_yups9_587",
5999
- discoverDetail: "_discoverDetail_yups9_597",
6000
- discoverCrumb: "_discoverCrumb_yups9_603",
6001
- discoverCrumbIcon: "_discoverCrumbIcon_yups9_626",
6002
- discoverDetailHead: "_discoverDetailHead_yups9_630",
6003
- discoverDetailTitle: "_discoverDetailTitle_yups9_636",
6004
- discoverDetailText: "_discoverDetailText_yups9_642",
6005
- discoverDetailPanel: "_discoverDetailPanel_yups9_649",
6006
- discoverDetailTabs: "_discoverDetailTabs_yups9_656",
6007
- discoverDetailTabList: "_discoverDetailTabList_yups9_661",
6008
- discoverDocBody: "_discoverDocBody_yups9_666",
6009
- discoverDocNotice: "_discoverDocNotice_yups9_671",
6010
- discoverSection: "_discoverSection_yups9_677",
6011
- discoverSectionTitle: "_discoverSectionTitle_yups9_684",
6012
- discoverFacts: "_discoverFacts_yups9_690",
6013
- discoverFactRow: "_discoverFactRow_yups9_695",
6014
- discoverFactKind: "_discoverFactKind_yups9_705",
6015
- discoverFactValue: "_discoverFactValue_yups9_711",
6016
- discoverCode: "_discoverCode_yups9_719",
6017
- discoverTags: "_discoverTags_yups9_728",
6018
- discoverLink: "_discoverLink_yups9_735",
6019
- discoverVersions: "_discoverVersions_yups9_745",
6020
- discoverVersionRow: "_discoverVersionRow_yups9_753",
6021
- discoverVersionName: "_discoverVersionName_yups9_761",
6022
- discoverError: "_discoverError_yups9_766",
6023
- discoverFailure: "_discoverFailure_yups9_775",
6024
- discoverLoading: "_discoverLoading_yups9_781",
6025
- discoverNotice: "_discoverNotice_yups9_790",
6026
- discoverMore: "_discoverMore_yups9_808",
6027
- discoverTransport: "_discoverTransport_yups9_812",
6028
- discoverTransportHead: "_discoverTransportHead_yups9_818",
6029
- discoverTransportTitle: "_discoverTransportTitle_yups9_825",
6030
- discoverTransportKind: "_discoverTransportKind_yups9_830",
6031
- discoverTransportState: "_discoverTransportState_yups9_835",
6032
- discoverTransportRows: "_discoverTransportRows_yups9_843",
6033
- discoverTransportRow: "_discoverTransportRow_yups9_843",
6034
- discoverTransportRadio: "_discoverTransportRadio_yups9_864",
6035
- discoverTransportCustom: "_discoverTransportCustom_yups9_904",
6036
- discoverTransportInput: "_discoverTransportInput_yups9_910",
6037
- discoverInstallBar: "_discoverInstallBar_yups9_915",
6038
- discoverInstallText: "_discoverInstallText_yups9_926",
6039
- discoverDialog: "_discoverDialog_yups9_932",
6040
- discoverDialogBody: "_discoverDialogBody_yups9_936",
6041
- discoverSourceList: "_discoverSourceList_yups9_942",
6042
- discoverSourceRow: "_discoverSourceRow_yups9_950",
6043
- discoverSourceConfirm: "_discoverSourceConfirm_yups9_959",
6044
- discoverSourcePick: "_discoverSourcePick_yups9_965",
6045
- discoverSourceRadio: "_discoverSourceRadio_yups9_974",
6046
- discoverSourceMain: "_discoverSourceMain_yups9_982",
6047
- discoverSourceHead: "_discoverSourceHead_yups9_990",
6048
- discoverSourceUrl: "_discoverSourceUrl_yups9_998",
6049
- discoverSourceMore: "_discoverSourceMore_yups9_1008",
6050
- discoverSourceLoading: "_discoverSourceLoading_yups9_1012",
6051
- discoverSourceHint: "_discoverSourceHint_yups9_1022",
6052
- discoverSourceError: "_discoverSourceError_yups9_1036",
6053
- discoverSourceForm: "_discoverSourceForm_yups9_1042",
6054
- discoverGrow: "_discoverGrow_yups9_1048",
6055
- discoverField: "_discoverField_yups9_1053",
6056
- discoverFieldLabel: "_discoverFieldLabel_yups9_1059",
6057
- discoverConfirmHead: "_discoverConfirmHead_yups9_1064",
6058
- discoverSkeletonFill: "_discoverSkeletonFill_yups9_1070",
6059
- "wb-skeleton": "_wb-skeleton_yups9_1",
6060
- discoverSkeletonBar: "_discoverSkeletonBar_yups9_1079",
6061
- discoverSkeletonTitle: "_discoverSkeletonTitle_yups9_1086",
6062
- discoverSkeletonDesc: "_discoverSkeletonDesc_yups9_1090"
6170
+ marketList: "_marketList_485ym_1",
6171
+ marketRow: "_marketRow_485ym_10",
6172
+ marketIcon: "_marketIcon_485ym_20",
6173
+ marketMain: "_marketMain_485ym_32",
6174
+ marketName: "_marketName_485ym_39",
6175
+ marketStatus: "_marketStatus_485ym_48",
6176
+ marketStateText: "_marketStateText_485ym_58",
6177
+ marketSep: "_marketSep_485ym_62",
6178
+ marketReason: "_marketReason_485ym_66",
6179
+ marketVersion: "_marketVersion_485ym_72",
6180
+ marketLocalTag: "_marketLocalTag_485ym_94",
6181
+ marketEnd: "_marketEnd_485ym_105",
6182
+ marketSwitchSeat: "_marketSwitchSeat_485ym_112",
6183
+ marketActions: "_marketActions_485ym_125",
6184
+ marketUpdateAction: "_marketUpdateAction_485ym_131",
6185
+ marketSelfDivider: "_marketSelfDivider_485ym_137",
6186
+ marketSection: "_marketSection_485ym_143",
6187
+ marketSectionHead: "_marketSectionHead_485ym_150",
6188
+ marketSectionIcon: "_marketSectionIcon_485ym_156",
6189
+ marketSectionTitle: "_marketSectionTitle_485ym_163",
6190
+ marketSectionCount: "_marketSectionCount_485ym_169",
6191
+ marketSectionAction: "_marketSectionAction_485ym_175",
6192
+ marketSectionQuiet: "_marketSectionQuiet_485ym_183",
6193
+ marketProgress: "_marketProgress_485ym_196",
6194
+ marketNote: "_marketNote_485ym_206",
6195
+ marketFailure: "_marketFailure_485ym_213",
6196
+ marketFailureSeat: "_marketFailureSeat_485ym_220",
6197
+ marketEmpty: "_marketEmpty_485ym_225",
6198
+ marketPage: "_marketPage_485ym_230",
6199
+ marketPageHead: "_marketPageHead_485ym_248",
6200
+ marketPageTitle: "_marketPageTitle_485ym_256",
6201
+ marketPageIntro: "_marketPageIntro_485ym_261",
6202
+ marketPageTools: "_marketPageTools_485ym_267",
6203
+ marketPanel: "_marketPanel_485ym_276",
6204
+ marketTabs: "_marketTabs_485ym_286",
6205
+ marketTabList: "_marketTabList_485ym_291",
6206
+ marketAddButton: "_marketAddButton_485ym_296",
6207
+ marketEmptyTitle: "_marketEmptyTitle_485ym_313",
6208
+ discoverPage: "_discoverPage_485ym_318",
6209
+ discoverBar: "_discoverBar_485ym_325",
6210
+ discoverTools: "_discoverTools_485ym_332",
6211
+ discoverMarket: "_discoverMarket_485ym_338",
6212
+ discoverMarketButton: "_discoverMarketButton_485ym_343",
6213
+ discoverMarketName: "_discoverMarketName_485ym_350",
6214
+ discoverLabels: "_discoverLabels_485ym_356",
6215
+ discoverSort: "_discoverSort_485ym_361",
6216
+ discoverRefresh: "_discoverRefresh_485ym_366",
6217
+ discoverSearch: "_discoverSearch_485ym_370",
6218
+ discoverSearchField: "_discoverSearchField_485ym_378",
6219
+ discoverSearchFieldFilled: "_discoverSearchFieldFilled_485ym_383",
6220
+ discoverSearchClear: "_discoverSearchClear_485ym_392",
6221
+ discoverChips: "_discoverChips_485ym_443",
6222
+ discoverList: "_discoverList_485ym_450",
6223
+ discoverCard: "_discoverCard_485ym_459",
6224
+ discoverArtwork: "_discoverArtwork_485ym_473",
6225
+ discoverArtworkImage: "_discoverArtworkImage_485ym_485",
6226
+ discoverMain: "_discoverMain_485ym_489",
6227
+ discoverTitleRow: "_discoverTitleRow_485ym_497",
6228
+ discoverCardOpen: "_discoverCardOpen_485ym_505",
6229
+ discoverStrong: "_discoverStrong_485ym_536",
6230
+ discoverDesc: "_discoverDesc_485ym_542",
6231
+ discoverMeta: "_discoverMeta_485ym_551",
6232
+ discoverMuted: "_discoverMuted_485ym_558",
6233
+ discoverEnd: "_discoverEnd_485ym_564",
6234
+ discoverUpdateAction: "_discoverUpdateAction_485ym_573",
6235
+ discoverBlocked: "_discoverBlocked_485ym_578",
6236
+ discoverEmpty: "_discoverEmpty_485ym_583",
6237
+ discoverEmptyTitle: "_discoverEmptyTitle_485ym_592",
6238
+ discoverDetail: "_discoverDetail_485ym_602",
6239
+ discoverCrumb: "_discoverCrumb_485ym_608",
6240
+ discoverCrumbIcon: "_discoverCrumbIcon_485ym_631",
6241
+ discoverDetailHead: "_discoverDetailHead_485ym_635",
6242
+ discoverDetailTitle: "_discoverDetailTitle_485ym_641",
6243
+ discoverDetailText: "_discoverDetailText_485ym_647",
6244
+ discoverDetailPanel: "_discoverDetailPanel_485ym_654",
6245
+ discoverDetailTabs: "_discoverDetailTabs_485ym_661",
6246
+ discoverDetailTabList: "_discoverDetailTabList_485ym_666",
6247
+ discoverDocBody: "_discoverDocBody_485ym_671",
6248
+ discoverDocNotice: "_discoverDocNotice_485ym_676",
6249
+ discoverSection: "_discoverSection_485ym_682",
6250
+ discoverSectionTitle: "_discoverSectionTitle_485ym_689",
6251
+ discoverFacts: "_discoverFacts_485ym_695",
6252
+ discoverFactRow: "_discoverFactRow_485ym_700",
6253
+ discoverFactKind: "_discoverFactKind_485ym_710",
6254
+ discoverFactValue: "_discoverFactValue_485ym_716",
6255
+ discoverCode: "_discoverCode_485ym_724",
6256
+ discoverTags: "_discoverTags_485ym_733",
6257
+ discoverLink: "_discoverLink_485ym_740",
6258
+ discoverVersions: "_discoverVersions_485ym_750",
6259
+ discoverVersionRow: "_discoverVersionRow_485ym_758",
6260
+ discoverVersionName: "_discoverVersionName_485ym_766",
6261
+ discoverError: "_discoverError_485ym_771",
6262
+ discoverFailure: "_discoverFailure_485ym_780",
6263
+ discoverLoading: "_discoverLoading_485ym_786",
6264
+ discoverNotice: "_discoverNotice_485ym_795",
6265
+ discoverMore: "_discoverMore_485ym_813",
6266
+ discoverTransport: "_discoverTransport_485ym_817",
6267
+ discoverTransportHead: "_discoverTransportHead_485ym_823",
6268
+ discoverTransportTitle: "_discoverTransportTitle_485ym_830",
6269
+ discoverTransportKind: "_discoverTransportKind_485ym_835",
6270
+ discoverTransportState: "_discoverTransportState_485ym_840",
6271
+ discoverTransportRows: "_discoverTransportRows_485ym_848",
6272
+ discoverTransportRow: "_discoverTransportRow_485ym_848",
6273
+ discoverTransportRadio: "_discoverTransportRadio_485ym_869",
6274
+ discoverTransportCustom: "_discoverTransportCustom_485ym_909",
6275
+ discoverTransportInput: "_discoverTransportInput_485ym_915",
6276
+ discoverInstallBar: "_discoverInstallBar_485ym_920",
6277
+ discoverInstallText: "_discoverInstallText_485ym_931",
6278
+ discoverDialog: "_discoverDialog_485ym_937",
6279
+ discoverDialogBody: "_discoverDialogBody_485ym_941",
6280
+ discoverSourceList: "_discoverSourceList_485ym_947",
6281
+ discoverSourceRow: "_discoverSourceRow_485ym_955",
6282
+ discoverSourceConfirm: "_discoverSourceConfirm_485ym_964",
6283
+ discoverSourcePick: "_discoverSourcePick_485ym_970",
6284
+ discoverSourceRadio: "_discoverSourceRadio_485ym_979",
6285
+ discoverSourceMain: "_discoverSourceMain_485ym_987",
6286
+ discoverSourceHead: "_discoverSourceHead_485ym_995",
6287
+ discoverSourceUrl: "_discoverSourceUrl_485ym_1003",
6288
+ discoverSourceMore: "_discoverSourceMore_485ym_1013",
6289
+ discoverSourceLoading: "_discoverSourceLoading_485ym_1017",
6290
+ discoverSourceHint: "_discoverSourceHint_485ym_1027",
6291
+ discoverSourceError: "_discoverSourceError_485ym_1041",
6292
+ discoverSourceForm: "_discoverSourceForm_485ym_1047",
6293
+ discoverGrow: "_discoverGrow_485ym_1053",
6294
+ discoverField: "_discoverField_485ym_1058",
6295
+ discoverFieldLabel: "_discoverFieldLabel_485ym_1064",
6296
+ discoverConfirmHead: "_discoverConfirmHead_485ym_1069",
6297
+ discoverSkeletonFill: "_discoverSkeletonFill_485ym_1075",
6298
+ "wb-skeleton": "_wb-skeleton_485ym_1",
6299
+ discoverSkeletonBar: "_discoverSkeletonBar_485ym_1084",
6300
+ discoverSkeletonTitle: "_discoverSkeletonTitle_485ym_1091",
6301
+ discoverSkeletonDesc: "_discoverSkeletonDesc_485ym_1095"
6063
6302
  };
6064
6303
  //#endregion
6065
6304
  //#region src/app/layouts/market/discover-states.tsx
@@ -6140,6 +6379,151 @@ window.__ModuleLoader__.load({
6140
6379
  return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEmpty }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEmptyTitle }, t("panels.market.empty")));
6141
6380
  }
6142
6381
  //#endregion
6382
+ //#region src/app/layouts/rightbar/failure-card-text.ts
6383
+ var TITLE_KEY = {
6384
+ permission: "panels.market.failure.permission",
6385
+ "disk-full": "panels.market.failure.diskFull",
6386
+ sandbox: "panels.market.failure.sandbox",
6387
+ unknown: "panels.market.failure.unknown"
6388
+ };
6389
+ var ASK_AGENT_KEY = "panels.market.failure.askAgent";
6390
+ function shellPath(path) {
6391
+ return /^[\w./@%+-]+$/.test(path) ? path : `'${path.replaceAll("'", "'\\''")}'`;
6392
+ }
6393
+ function ownerLabel(uid) {
6394
+ return uid === 0 ? "root" : `uid ${uid}`;
6395
+ }
6396
+ function failureCardOf(failure, t) {
6397
+ const path = failure.path ?? "";
6398
+ const fix = failure.fix;
6399
+ if (fix.kind === "chown") {
6400
+ const ownerUid = failure.owner?.uid;
6401
+ return {
6402
+ title: t(TITLE_KEY[failure.kind]),
6403
+ fact: ownerUid === void 0 ? t("panels.market.failure.factMode", {
6404
+ path,
6405
+ mode: failure.mode ?? "?"
6406
+ }) : t("panels.market.failure.factOwner", {
6407
+ path,
6408
+ owner: ownerLabel(ownerUid),
6409
+ me: ownerLabel(failure.current.uid)
6410
+ }),
6411
+ fixLabel: t("panels.market.failure.copyFix"),
6412
+ fix: `sudo chown -R ${fix.uid}:${fix.gid} ${shellPath(fix.path)}`,
6413
+ copiedHint: t("panels.market.failure.copiedHint"),
6414
+ command: failure.command,
6415
+ output: failure.output,
6416
+ exitCode: failure.exitCode
6417
+ };
6418
+ }
6419
+ if (fix.kind === "chmod") return {
6420
+ title: t(TITLE_KEY[failure.kind]),
6421
+ fact: t("panels.market.failure.factMode", {
6422
+ path,
6423
+ mode: failure.mode ?? "?"
6424
+ }),
6425
+ fixLabel: t("panels.market.failure.copyFix"),
6426
+ fix: `chmod -R u+w ${shellPath(fix.path)}`,
6427
+ copiedHint: t("panels.market.failure.copiedHint"),
6428
+ command: failure.command,
6429
+ output: failure.output,
6430
+ exitCode: failure.exitCode
6431
+ };
6432
+ if (fix.kind === "space") return {
6433
+ title: t(TITLE_KEY[failure.kind]),
6434
+ fact: t("panels.market.failure.factSpace", { path }),
6435
+ fixLabel: t("panels.market.failure.copyFix"),
6436
+ fix: `du -sh ${shellPath(fix.path)}`,
6437
+ copiedHint: t("panels.market.failure.copiedHint"),
6438
+ command: failure.command,
6439
+ output: failure.output,
6440
+ exitCode: failure.exitCode
6441
+ };
6442
+ return {
6443
+ title: t(TITLE_KEY[failure.kind]),
6444
+ fact: t("panels.market.failure.factStuck", { path: path === "" ? t("panels.market.failure.nowhere") : path }),
6445
+ fixLabel: t(ASK_AGENT_KEY),
6446
+ fix: t("panels.market.failure.askAgentText", {
6447
+ command: failure.command,
6448
+ path: path === "" ? t("panels.market.failure.nowhere") : path,
6449
+ code: failure.exitCode === null ? "?" : String(failure.exitCode)
6450
+ }),
6451
+ copiedHint: t("panels.market.failure.askAgentHint"),
6452
+ command: failure.command,
6453
+ output: failure.output,
6454
+ exitCode: failure.exitCode
6455
+ };
6456
+ }
6457
+ var FailureCard_module_default = {
6458
+ block: "_block_mxnbc_1",
6459
+ head: "_head_mxnbc_9",
6460
+ title: "_title_mxnbc_16",
6461
+ fact: "_fact_mxnbc_22",
6462
+ actions: "_actions_mxnbc_30",
6463
+ hint: "_hint_mxnbc_38",
6464
+ output: "_output_mxnbc_44"
6465
+ };
6466
+ //#endregion
6467
+ //#region src/app/layouts/rightbar/FailureCard.tsx
6468
+ var COPIED_MS$1 = 1200;
6469
+ function terminalLabels(t) {
6470
+ return {
6471
+ commandLine: (line) => t("panels.market.failure.term.commandLine", { line }),
6472
+ signal: (signal) => t("panels.market.failure.term.signal", { signal }),
6473
+ exitCode: (exitCode) => t("panels.market.failure.term.exitCode", { exitCode }),
6474
+ noExitCode: t("panels.market.failure.term.noExitCode"),
6475
+ running: t("panels.market.failure.term.running"),
6476
+ failed: t("panels.market.failure.term.failed"),
6477
+ done: t("panels.market.failure.term.done"),
6478
+ copy: t("panels.market.failure.term.copy"),
6479
+ copied: t("panels.market.failure.term.copied"),
6480
+ noOutput: t("panels.market.failure.term.noOutput"),
6481
+ collapseAria: t("panels.market.failure.term.collapse"),
6482
+ collapse: t("panels.market.failure.term.collapse"),
6483
+ expandAria: (hidden) => t("panels.market.failure.term.expandAria", { hidden }),
6484
+ expand: (hidden) => t("panels.market.failure.term.expand", { hidden })
6485
+ };
6486
+ }
6487
+ function FailureCard({ t, failure, onRecheck, rechecking }) {
6488
+ const model = failureCardOf(failure, t);
6489
+ const [copied, setCopied] = (0, react.useState)(false);
6490
+ const [open, setOpen] = (0, react.useState)(false);
6491
+ const onCopy = (0, react.useCallback)(() => {
6492
+ (0, _deepseek_ai_dsh_client_ui_primitives.writeClipboard)(model.fix).then((ok) => {
6493
+ if (!ok) return;
6494
+ setCopied(true);
6495
+ setTimeout(() => setCopied(false), COPIED_MS$1);
6496
+ });
6497
+ }, [model.fix]);
6498
+ return /* @__PURE__ */ (0, react.createElement)("div", { className: FailureCard_module_default.block }, /* @__PURE__ */ (0, react.createElement)("div", { className: FailureCard_module_default.head }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
6499
+ state: "error",
6500
+ size: 8
6501
+ }), /* @__PURE__ */ (0, react.createElement)("span", { className: FailureCard_module_default.title }, model.title)), /* @__PURE__ */ (0, react.createElement)("p", { className: FailureCard_module_default.fact }, model.fact), /* @__PURE__ */ (0, react.createElement)("div", { className: FailureCard_module_default.actions }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
6502
+ type: "button",
6503
+ size: "sm",
6504
+ variant: "ghost",
6505
+ onClick: onCopy
6506
+ }, copied ? t("panels.market.failure.copied") : model.fixLabel), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
6507
+ type: "button",
6508
+ size: "sm",
6509
+ variant: "ghost",
6510
+ disabled: rechecking,
6511
+ onClick: onRecheck
6512
+ }, t("panels.market.failure.recheck")), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
6513
+ type: "button",
6514
+ size: "sm",
6515
+ variant: "ghost",
6516
+ onClick: () => setOpen(!open)
6517
+ }, open ? t("panels.market.failure.hideOutput") : t("panels.market.failure.showOutput"))), copied ? /* @__PURE__ */ (0, react.createElement)("p", { className: FailureCard_module_default.hint }, model.copiedHint) : null, open ? /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.TerminalBlock, {
6518
+ command: model.command,
6519
+ output: model.output,
6520
+ exitCode: model.exitCode,
6521
+ maxLines: 8,
6522
+ labels: terminalLabels(t),
6523
+ className: FailureCard_module_default.output
6524
+ }) : null);
6525
+ }
6526
+ //#endregion
6143
6527
  //#region src/app/layouts/rightbar/market-section-icon.ts
6144
6528
  var SIZE$1 = 14;
6145
6529
  function marketSectionIcon(kind) {
@@ -6309,9 +6693,21 @@ window.__ModuleLoader__.load({
6309
6693
  ...pending.version === void 0 ? {} : { version: { installed: pending.version } }
6310
6694
  };
6311
6695
  }
6696
+ function askAgentReason(row, t) {
6697
+ if (row.hint !== void 0) return t(row.hint);
6698
+ if (row.note !== void 0) return t(row.note.key, row.note.params);
6699
+ return t(MARKET_STATE_KEY[row.state]);
6700
+ }
6701
+ function askAgentText(row, t) {
6702
+ return t("panels.market.askAgentText", {
6703
+ name: marketRowTitle(row, t),
6704
+ unit: row.id,
6705
+ reason: askAgentReason(row, t)
6706
+ });
6707
+ }
6312
6708
  //#endregion
6313
6709
  //#region src/app/layouts/rightbar/SharedSection.tsx
6314
- function SharedLine({ t, row, pending, failure, onAct }) {
6710
+ function SharedLine({ t, row, pending, failure, onAct, onRecheck, rechecking }) {
6315
6711
  const running = pending !== null && pending.id === row.id ? pending : null;
6316
6712
  const locked = pending !== null;
6317
6713
  const actions = sharedActions(row);
@@ -6334,9 +6730,14 @@ window.__ModuleLoader__.load({
6334
6730
  variant: "outline",
6335
6731
  disabled: locked,
6336
6732
  onClick: () => onAct(action)
6337
- }, t(ACTION_LABEL_KEY[action]))))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure));
6733
+ }, t(ACTION_LABEL_KEY[action]))))), failure === null ? null : failure.failure === void 0 ? /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure.message) : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailureSeat }, /* @__PURE__ */ (0, react.createElement)(FailureCard, {
6734
+ t,
6735
+ failure: failure.failure,
6736
+ onRecheck,
6737
+ rechecking
6738
+ })));
6338
6739
  }
6339
- function SharedSection({ t, rows, pending, failureOf, act }) {
6740
+ function SharedSection({ t, rows, pending, failureOf, act, onRecheck, rechecking }) {
6340
6741
  if (rows.length === 0) return null;
6341
6742
  return /* @__PURE__ */ (0, react.createElement)("section", { className: `${MarketPage_module_default.marketSection} ${MarketPage_module_default.marketSectionQuiet}` }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketSectionHead }, /* @__PURE__ */ (0, react.createElement)("span", {
6342
6743
  className: MarketPage_module_default.marketSectionIcon,
@@ -6347,7 +6748,9 @@ window.__ModuleLoader__.load({
6347
6748
  row,
6348
6749
  pending,
6349
6750
  failure: failureOf(row.id),
6350
- onAct: (action) => void act(row.id, action)
6751
+ onAct: (action) => void act(row.id, action),
6752
+ onRecheck,
6753
+ rechecking
6351
6754
  }))));
6352
6755
  }
6353
6756
  //#endregion
@@ -6370,6 +6773,25 @@ window.__ModuleLoader__.load({
6370
6773
  });
6371
6774
  }
6372
6775
  //#endregion
6776
+ //#region src/app/layouts/rightbar/AskAgentButton.tsx
6777
+ var COPIED_MS = 1200;
6778
+ function AskAgentButton({ t, text, label }) {
6779
+ const [copied, setCopied] = (0, react.useState)(false);
6780
+ const onCopy = (0, react.useCallback)(() => {
6781
+ (0, _deepseek_ai_dsh_client_ui_primitives.writeClipboard)(text).then((ok) => {
6782
+ if (!ok) return;
6783
+ setCopied(true);
6784
+ setTimeout(() => setCopied(false), COPIED_MS);
6785
+ });
6786
+ }, [text]);
6787
+ return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
6788
+ type: "button",
6789
+ size: "sm",
6790
+ variant: "ghost",
6791
+ onClick: onCopy
6792
+ }, copied ? t("panels.market.askAgentCopied") : label);
6793
+ }
6794
+ //#endregion
6373
6795
  //#region src/app/layouts/rightbar/market-section.tsx
6374
6796
  var dangerActions = [
6375
6797
  "uninstall",
@@ -6440,13 +6862,14 @@ window.__ModuleLoader__.load({
6440
6862
  "aria-hidden": "true"
6441
6863
  }, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, noteText)));
6442
6864
  }
6443
- function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
6865
+ function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy, onRecheck, rechecking }) {
6444
6866
  const running = pending !== null && pending.id === row.id ? pending : null;
6445
6867
  const locked = pending !== null;
6446
6868
  const [migrationOpen, setMigrationOpen] = (0, react.useState)(false);
6447
6869
  const [dismissOpen, setDismissOpen] = (0, react.useState)(false);
6448
6870
  const quiet = row.workbench === true && row.state === "installed" && row.hint === void 0;
6449
6871
  const actions = marketActions$1(row);
6872
+ const asksAgent = marketAsksAgent(row);
6450
6873
  const switchLocked = marketSwitchLocked(row);
6451
6874
  return /* @__PURE__ */ (0, react.createElement)("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ (0, react.createElement)("span", {
6452
6875
  className: MarketPage_module_default.marketIcon,
@@ -6458,7 +6881,11 @@ window.__ModuleLoader__.load({
6458
6881
  t,
6459
6882
  row,
6460
6883
  quiet
6461
- })), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
6884
+ })), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 && !asksAgent ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketActions }, asksAgent ? /* @__PURE__ */ (0, react.createElement)(AskAgentButton, {
6885
+ t,
6886
+ text: askAgentText(row, t),
6887
+ label: t("panels.market.askAgent")
6888
+ }) : null, actions.map((action) => {
6462
6889
  const danger = dangerActions.includes(action);
6463
6890
  const update = updateActions.includes(action);
6464
6891
  return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
@@ -6481,7 +6908,12 @@ window.__ModuleLoader__.load({
6481
6908
  disabled: boardBusy === true || locked || switchLocked,
6482
6909
  label: `${marketRowTitle(row, t)} · ${t("panels.market.defaultLabel")}`,
6483
6910
  onChange: (next) => onDefault?.(next)
6484
- })))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure), /* @__PURE__ */ (0, react.createElement)(MarketLineDialogs, {
6911
+ })))), failure === null ? null : failure.failure === void 0 ? /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure.message) : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailureSeat }, /* @__PURE__ */ (0, react.createElement)(FailureCard, {
6912
+ t,
6913
+ failure: failure.failure,
6914
+ onRecheck,
6915
+ rechecking
6916
+ })), /* @__PURE__ */ (0, react.createElement)(MarketLineDialogs, {
6485
6917
  t,
6486
6918
  migrationOpen,
6487
6919
  dismissOpen,
@@ -6497,7 +6929,7 @@ window.__ModuleLoader__.load({
6497
6929
  }
6498
6930
  }));
6499
6931
  }
6500
- function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy, headAction, keepHead }) {
6932
+ function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy, headAction, keepHead, onRecheck, rechecking }) {
6501
6933
  if (rows.length === 0 && keepHead !== true) return null;
6502
6934
  return /* @__PURE__ */ (0, react.createElement)("section", { className: MarketPage_module_default.marketSection }, titleKey === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketSectionHead }, /* @__PURE__ */ (0, react.createElement)("span", {
6503
6935
  className: MarketPage_module_default.marketSectionIcon,
@@ -6510,7 +6942,9 @@ window.__ModuleLoader__.load({
6510
6942
  failure: failureOf(row.id),
6511
6943
  onAct: (action) => confirmActions.includes(action) ? onConfirming(row.id) : void act(row.id, action),
6512
6944
  onDefault: (next) => onDefault?.(row.id, next),
6513
- boardBusy
6945
+ boardBusy,
6946
+ onRecheck,
6947
+ rechecking
6514
6948
  }))));
6515
6949
  }
6516
6950
  //#endregion
@@ -6743,6 +7177,14 @@ window.__ModuleLoader__.load({
6743
7177
  if (change === void 0 || SHIPPED$1.includes(change.application)) return void 0;
6744
7178
  return failureReason(failureCode(change), change.application, t);
6745
7179
  }
7180
+ function appliedUnitsOf(value) {
7181
+ if (changeOf(value)?.application !== "applied") return [];
7182
+ const module = value?.module;
7183
+ if (typeof module !== "object" || module === null) return [];
7184
+ const record = module;
7185
+ if (record.kind !== "module") return [];
7186
+ return typeof record.unit === "string" && record.unit !== "" ? [record.unit] : [];
7187
+ }
6746
7188
  //#endregion
6747
7189
  //#region src/app/layouts/rightbar/market-update-verdict.ts
6748
7190
  function updateVerdictOf(input) {
@@ -6857,7 +7299,8 @@ window.__ModuleLoader__.load({
6857
7299
  seats.setHeld(void 0);
6858
7300
  seats.setFailed({
6859
7301
  id,
6860
- message: t("panels.market.failed", { reason: outcome.message })
7302
+ message: t("panels.market.failed", { reason: outcome.message }),
7303
+ ...outcome.failure === void 0 ? {} : { failure: outcome.failure }
6861
7304
  });
6862
7305
  return;
6863
7306
  }
@@ -6988,8 +7431,18 @@ window.__ModuleLoader__.load({
6988
7431
  };
6989
7432
  //#endregion
6990
7433
  //#region src/app/layouts/market/market-check.tsx
6991
- function MarketCheck({ t, checkedAt, checking, failed, disabled, onCheck }) {
6992
- const status = checking ? t("panels.market.checkingNow") : failed ? t("panels.market.checkFailed") : checkedAt === null ? null : t("panels.market.checkedAt", { time: checkedAgo(checkedAt, t) });
7434
+ function MarketCheck({ t, checkedAt, latestCheck = {
7435
+ checked: 0,
7436
+ unknown: 0
7437
+ }, checking, failed, disabled, onCheck }) {
7438
+ const parts = [];
7439
+ if (checking) parts.push(t("panels.market.checkingNow"));
7440
+ else {
7441
+ if (latestCheck.checked > 0 && checkedAt !== null) parts.push(t("panels.market.checkedAt", { time: checkedAgo(checkedAt, t) }));
7442
+ if (failed) parts.push(t("panels.market.checkFailed"));
7443
+ else if (latestCheck.unknown > 0) parts.push(t("panels.market.latestPartial", { n: String(latestCheck.unknown) }));
7444
+ }
7445
+ const status = parts.length === 0 ? null : parts.join(" · ");
6993
7446
  return /* @__PURE__ */ (0, react.createElement)("span", { className: market_check_module_default.check }, status === null ? null : /* @__PURE__ */ (0, react.createElement)("span", {
6994
7447
  className: market_check_module_default.status,
6995
7448
  "aria-live": "polite"
@@ -7025,6 +7478,7 @@ window.__ModuleLoader__.load({
7025
7478
  "uninstall-plugin"
7026
7479
  ];
7027
7480
  var NO_ROWS = [];
7481
+ var NO_UNITS$1 = /* @__PURE__ */ new Set();
7028
7482
  function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
7029
7483
  const [acknowledged, setAcknowledged] = (0, react.useState)(false);
7030
7484
  return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
@@ -7041,8 +7495,8 @@ window.__ModuleLoader__.load({
7041
7495
  onConfirm
7042
7496
  });
7043
7497
  }
7044
- function MarketBody({ t, self, shown, pluginList, installedList, shared, pending, failed, notice, act, onConfirming, setDefault, boardBusy, check }) {
7045
- const failureOf = (id) => failed?.id === id ? failed.message : null;
7498
+ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending, failed, notice, act, onConfirming, setDefault, boardBusy, check, onRecheck, rechecking }) {
7499
+ const failureOf = (id) => failed?.id === id ? failed : null;
7046
7500
  const foot = marketFootVisible(shown, installedList);
7047
7501
  const sections = marketSections(marketOrder([...shown, ...installedList], (row) => marketRowTitle(row, t)));
7048
7502
  const installed = sections.find((section) => section.id === "installed");
@@ -7056,7 +7510,9 @@ window.__ModuleLoader__.load({
7056
7510
  failureOf,
7057
7511
  act,
7058
7512
  confirmActions: CONFIRM_UNINSTALL,
7059
- onConfirming
7513
+ onConfirming,
7514
+ onRecheck,
7515
+ rechecking
7060
7516
  }), self === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("div", {
7061
7517
  className: MarketPage_module_default.marketSelfDivider,
7062
7518
  "aria-hidden": "true"
@@ -7073,7 +7529,9 @@ window.__ModuleLoader__.load({
7073
7529
  failureOf,
7074
7530
  act,
7075
7531
  confirmActions: CONFIRM_UNINSTALL,
7076
- onConfirming
7532
+ onConfirming,
7533
+ onRecheck,
7534
+ rechecking
7077
7535
  }), pendingSection === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(MarketSection, {
7078
7536
  t,
7079
7537
  titleKey: pendingSection.titleKey,
@@ -7085,7 +7543,9 @@ window.__ModuleLoader__.load({
7085
7543
  failureOf,
7086
7544
  act,
7087
7545
  confirmActions: CONFIRM_UNINSTALL,
7088
- onConfirming
7546
+ onConfirming,
7547
+ onRecheck,
7548
+ rechecking
7089
7549
  }), /* @__PURE__ */ (0, react.createElement)(MarketSection, {
7090
7550
  t,
7091
7551
  titleKey: "panels.market.sectionPlugins",
@@ -7098,7 +7558,9 @@ window.__ModuleLoader__.load({
7098
7558
  failureOf,
7099
7559
  act,
7100
7560
  confirmActions: CONFIRM_UNINSTALL,
7101
- onConfirming
7561
+ onConfirming,
7562
+ onRecheck,
7563
+ rechecking
7102
7564
  }), foot ? /* @__PURE__ */ (0, react.createElement)(PanelFoot, {
7103
7565
  size: "md",
7104
7566
  text: t("panels.market.foot")
@@ -7107,11 +7569,13 @@ window.__ModuleLoader__.load({
7107
7569
  rows: shared,
7108
7570
  pending,
7109
7571
  failureOf,
7110
- act
7572
+ act,
7573
+ onRecheck,
7574
+ rechecking
7111
7575
  }));
7112
7576
  }
7113
7577
  function useMarketScene(input) {
7114
- const { t, titleOf, manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
7578
+ const { t, titleOf, manifests, installable, capabilities, updates, installed, settling, installing, mock, defaults, changed, pending, failed } = input;
7115
7579
  const names = marketNamesOf(t, installed ?? [], titleOf, mock !== void 0);
7116
7580
  const catalog = mock?.manifests ?? manifests;
7117
7581
  const marketable = mock === void 0 ? marketCatalog(manifests, installable) : catalog;
@@ -7119,7 +7583,10 @@ window.__ModuleLoader__.load({
7119
7583
  const source = liveManifests(marketable, effective, installedIdSet(mock === void 0 ? installed : void 0));
7120
7584
  const byDefault = new Set(defaults);
7121
7585
  const updateMap = mock?.updates ?? updates ?? {};
7122
- const rows = marketRows(source, effective, updateMap, byDefault, changed);
7586
+ const rows = checkingRows(marketRows(source, effective, updateMap, byDefault, changed), {
7587
+ all: installing,
7588
+ units: settling ?? NO_UNITS$1
7589
+ });
7123
7590
  const shared = sharedRows(source, effective);
7124
7591
  const removing = removingIdOf(pending, failed);
7125
7592
  const steady = useHeldRow(pending, (id) => catalog.some((manifest) => manifest.id === id));
@@ -7140,7 +7607,7 @@ window.__ModuleLoader__.load({
7140
7607
  busyId
7141
7608
  };
7142
7609
  }
7143
- function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, updatesCheckedAt = null, updatesFailed = false, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
7610
+ function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, updatesCheckedAt = null, updatesFailed = false, installed, installedRead, workbench, selfUpdate, plugins, settling, installing = false, mock, defaults = [], changed = {} }) {
7144
7611
  const { pending, setPending, confirming, setConfirming, failed, setFailed, notice, setNotice } = useMarketTransient({
7145
7612
  mock,
7146
7613
  onPending
@@ -7154,6 +7621,7 @@ window.__ModuleLoader__.load({
7154
7621
  updates,
7155
7622
  installed,
7156
7623
  settling,
7624
+ installing,
7157
7625
  mock,
7158
7626
  defaults,
7159
7627
  changed,
@@ -7220,9 +7688,15 @@ window.__ModuleLoader__.load({
7220
7688
  const settled = marketSettled(freshness, installedRead);
7221
7689
  const nothing = shown.length === 0 && self === void 0 && installedList.length === 0 && pluginList.length === 0;
7222
7690
  const { busy: checkingShown } = useVisibleBusy(freshness.checking, 500);
7691
+ const recheck = () => {
7692
+ setFailed(null);
7693
+ if (mock === void 0) onChanged({ force: true });
7694
+ };
7695
+ const latestCheck = latestCheckSummary(mock?.installed ?? installed);
7223
7696
  const check = /* @__PURE__ */ (0, react.createElement)(MarketCheck, {
7224
7697
  t,
7225
7698
  checkedAt: updatesCheckedAt,
7699
+ latestCheck,
7226
7700
  checking: checkingShown,
7227
7701
  failed: updatesFailed,
7228
7702
  disabled: pending !== null,
@@ -7244,7 +7718,9 @@ window.__ModuleLoader__.load({
7244
7718
  onConfirming: setConfirming,
7245
7719
  setDefault,
7246
7720
  boardBusy,
7247
- check
7721
+ check,
7722
+ onRecheck: recheck,
7723
+ rechecking: checkingShown
7248
7724
  }), /* @__PURE__ */ (0, react.createElement)(UninstallConfirm, {
7249
7725
  t,
7250
7726
  confirming,
@@ -8577,6 +9053,8 @@ window.__ModuleLoader__.load({
8577
9053
  const [addingSource, setAddingSource] = (0, react.useState)(false);
8578
9054
  const [pendingSourceId, setPendingSourceId] = (0, react.useState)(null);
8579
9055
  const [knownSources, setKnownSources] = (0, react.useState)(null);
9056
+ const [installToken] = (0, react.useState)(() => `market-install:${globalThis.crypto.randomUUID()}`);
9057
+ usePublishMarketInstalling(installToken, installing !== null);
8580
9058
  const loaded = (0, react.useRef)(false);
8581
9059
  const loadTicket = (0, react.useRef)(0);
8582
9060
  const sourceTicket = (0, react.useRef)(0);
@@ -8829,6 +9307,7 @@ window.__ModuleLoader__.load({
8829
9307
  ...target.registry === void 0 ? {} : { registry: target.registry }
8830
9308
  }).then((outcome) => {
8831
9309
  if (!outcome.ok) return;
9310
+ publishMarketApplied(appliedUnitsOf(outcome.value));
8832
9311
  const verdict = installVerdictOf(outcome.value, t);
8833
9312
  if (verdict.kind === "failed") {
8834
9313
  provision.fail(verdict.text);
@@ -9839,18 +10318,79 @@ window.__ModuleLoader__.load({
9839
10318
  }, t("panels.market.add.failed", { reason })) : kind === "restart" ? /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.resultWarn }, t("panels.market.add.doneRestart")), why === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.resultMeta }, why)) : kind === "quiet" ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.result }, t("panels.market.add.tookEffect")), builds.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: AddModule_module_default.approval }, /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.approvalTitle }, t("panels.market.add.approveTitle")), /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.approvalText }, t("panels.market.add.approveHint", { packages: builds.join("、") })), /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.approvalCaution }, t("panels.market.add.approveCaution"))), supply === void 0 || outcome.supply.state !== "failed" && (kind === "failed" || kind === "cancelled") ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: supplyTone(outcome.supply.state) }, t(supply, { reason: outcome.supply.reason ?? "" })), state.failure === null ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.problem }, state.failure), outcome.change.errorDetail === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.detailLabel }, t("panels.market.add.details")), /* @__PURE__ */ (0, react.createElement)("p", { className: AddModule_module_default.detail }, outcome.change.errorDetail)));
9840
10319
  }
9841
10320
  //#endregion
10321
+ //#region src/app/layouts/market/add-module-registry-prefs.ts
10322
+ var DEFAULT_REGISTRY_CHOICE = {
10323
+ kind: "default",
10324
+ value: ""
10325
+ };
10326
+ function isRegistryKind(value) {
10327
+ return value === "default" || value === "url" || value === "custom";
10328
+ }
10329
+ function parseRegistryChoice(raw) {
10330
+ if (raw === null) return DEFAULT_REGISTRY_CHOICE;
10331
+ let value;
10332
+ try {
10333
+ value = JSON.parse(raw);
10334
+ } catch {
10335
+ return DEFAULT_REGISTRY_CHOICE;
10336
+ }
10337
+ if (typeof value !== "object" || value === null) return DEFAULT_REGISTRY_CHOICE;
10338
+ const record = value;
10339
+ if (!isRegistryKind(record.kind)) return DEFAULT_REGISTRY_CHOICE;
10340
+ if (record.kind === "default") return DEFAULT_REGISTRY_CHOICE;
10341
+ if (record.kind === "custom") return {
10342
+ kind: "custom",
10343
+ value: ""
10344
+ };
10345
+ if (typeof record.value !== "string" || !customRegistryAllowed(record.value)) return DEFAULT_REGISTRY_CHOICE;
10346
+ return {
10347
+ kind: "url",
10348
+ value: record.value.trim()
10349
+ };
10350
+ }
10351
+ function readRegistryPrefs() {
10352
+ const custom = readText(STORAGE_KEY_MARKET_REGISTRY_CUSTOM);
10353
+ return {
10354
+ choice: parseRegistryChoice(readText(STORAGE_KEY_MARKET_REGISTRY)),
10355
+ custom: custom === null ? "" : custom.trim()
10356
+ };
10357
+ }
10358
+ function writeRegistryChoice(choice) {
10359
+ if (choice.kind === "custom") {
10360
+ writeText(STORAGE_KEY_MARKET_REGISTRY, JSON.stringify({
10361
+ kind: "custom",
10362
+ value: ""
10363
+ }));
10364
+ return;
10365
+ }
10366
+ if (choice.kind === "url" && customRegistryAllowed(choice.value)) {
10367
+ writeText(STORAGE_KEY_MARKET_REGISTRY, JSON.stringify({
10368
+ kind: "url",
10369
+ value: choice.value.trim()
10370
+ }));
10371
+ return;
10372
+ }
10373
+ writeText(STORAGE_KEY_MARKET_REGISTRY, JSON.stringify(DEFAULT_REGISTRY_CHOICE));
10374
+ }
10375
+ function writeRegistryCustom(value) {
10376
+ const text = value.trim();
10377
+ writeText(STORAGE_KEY_MARKET_REGISTRY_CUSTOM, text === "" ? null : text);
10378
+ }
10379
+ function reconcileRegistryChoice(choice, choices) {
10380
+ if (choice.kind !== "url") return choice;
10381
+ return choices.some((option) => option.choice.kind === "url" && option.choice.value === choice.value) ? choice : DEFAULT_REGISTRY_CHOICE;
10382
+ }
10383
+ //#endregion
9842
10384
  //#region src/app/layouts/market/use-add-module.ts
9843
10385
  function newRequestId() {
9844
10386
  return crypto.randomUUID();
9845
10387
  }
9846
10388
  function useAddModule(options) {
9847
10389
  const { onInstalled, failedText } = options;
10390
+ const [prefs] = (0, react.useState)(readRegistryPrefs);
9848
10391
  const [spec, setSpec] = (0, react.useState)("");
9849
- const [choice, setChoice] = (0, react.useState)({
9850
- kind: "default",
9851
- value: ""
9852
- });
9853
- const [custom, setCustom] = (0, react.useState)("");
10392
+ const [choice, setChoice] = (0, react.useState)(prefs.choice);
10393
+ const [custom, setCustom] = (0, react.useState)(prefs.custom);
9854
10394
  const [registryOpen, setRegistryOpen] = (0, react.useState)(false);
9855
10395
  const [guideOpen, setGuideOpen] = (0, react.useState)(false);
9856
10396
  const [phase, setPhase] = (0, react.useState)("idle");
@@ -9862,6 +10402,8 @@ window.__ModuleLoader__.load({
9862
10402
  const generationRef = (0, react.useRef)(0);
9863
10403
  const requestIdRef = (0, react.useRef)("");
9864
10404
  const { busy: classifying } = useVisibleBusy(phase === "inspecting", 500);
10405
+ const [installToken] = (0, react.useState)(() => `market-install:${newRequestId()}`);
10406
+ usePublishMarketInstalling(installToken, phase === "installing");
9865
10407
  const write = useHostWrite({
9866
10408
  channel: "provision",
9867
10409
  networkText: failedText
@@ -9878,7 +10420,9 @@ window.__ModuleLoader__.load({
9878
10420
  let alive = true;
9879
10421
  readBundleRegistries().then((response) => {
9880
10422
  if (!alive) return;
9881
- setChoices(registryOptions(response.ok ? response.registries : null));
10423
+ const options = registryOptions(response.ok ? response.registries : null);
10424
+ setChoices(options);
10425
+ setChoice((previous) => reconcileRegistryChoice(previous, options));
9882
10426
  });
9883
10427
  return () => {
9884
10428
  alive = false;
@@ -9945,6 +10489,7 @@ window.__ModuleLoader__.load({
9945
10489
  supply: value.supply,
9946
10490
  ...value.plugin === void 0 ? {} : { plugin: value.plugin }
9947
10491
  });
10492
+ publishMarketApplied(appliedUnitsOf(value));
9948
10493
  setPhase("result");
9949
10494
  if (value.change.application === "applied" || value.change.application === "restart-required") onInstalled();
9950
10495
  });
@@ -9989,6 +10534,14 @@ window.__ModuleLoader__.load({
9989
10534
  setPreview(null);
9990
10535
  setPhase("idle");
9991
10536
  }, []);
10537
+ const choose = (0, react.useCallback)((next) => {
10538
+ setChoice(next);
10539
+ writeRegistryChoice(next);
10540
+ }, []);
10541
+ const chooseCustom = (0, react.useCallback)((value) => {
10542
+ setCustom(value);
10543
+ writeRegistryCustom(value);
10544
+ }, []);
9992
10545
  return {
9993
10546
  spec,
9994
10547
  choice,
@@ -10004,10 +10557,8 @@ window.__ModuleLoader__.load({
10004
10557
  removing,
10005
10558
  builds: outcome?.change.pendingBuilds ?? [],
10006
10559
  setSpec,
10007
- setChoice: (0, react.useCallback)((next) => {
10008
- setChoice(next);
10009
- }, []),
10010
- setCustom,
10560
+ setChoice: choose,
10561
+ setCustom: chooseCustom,
10011
10562
  toggleRegistry: (0, react.useCallback)(() => setRegistryOpen((value) => !value), []),
10012
10563
  closeRegistry: (0, react.useCallback)(() => setRegistryOpen(false), []),
10013
10564
  toggleGuide: (0, react.useCallback)(() => setGuideOpen((value) => !value), []),
@@ -10156,7 +10707,8 @@ window.__ModuleLoader__.load({
10156
10707
  installed: modules === null ? void 0 : withClientRefusals(modules, units.refusals()),
10157
10708
  plugins,
10158
10709
  workbench,
10159
- busy: useMarketBusy()
10710
+ busy: useMarketBusy(),
10711
+ ...useMarketInstallState()
10160
10712
  });
10161
10713
  (0, react.useEffect)(() => {
10162
10714
  publishPanelHint(MARKET_PANEL_ID, hint);
@@ -10173,6 +10725,7 @@ window.__ModuleLoader__.load({
10173
10725
  const { capabilities, checkedAt, checking, forceProbe, reload: reloadCapability } = useCapabilityMap(0);
10174
10726
  const { modules, plugins, workbench, selfUpdate, checking: versionsChecking, failed: versionsFailed, checkedAt: versionsCheckedAt, read: installedRead, reload: reloadVersions } = useModuleVersions();
10175
10727
  const machineBoard = useEnabledUnits(0, null);
10728
+ const install = useMarketInstallState();
10176
10729
  const [adding, setAdding] = (0, react.useState)(false);
10177
10730
  const [acting, setActing] = (0, react.useState)(false);
10178
10731
  const [tab, setTab] = (0, react.useState)("installed");
@@ -10215,6 +10768,7 @@ window.__ModuleLoader__.load({
10215
10768
  reloadVersions
10216
10769
  ]);
10217
10770
  const settling = useSettlingModules((installed ?? []).map((module) => module.unit).join("|"), manifests.map((manifest) => manifest.id).join("|"), Object.keys(capabilities ?? {}).join("|"));
10771
+ const held = install.applied.size === 0 ? settling : /* @__PURE__ */ new Set([...settling, ...install.applied]);
10218
10772
  const freshness = {
10219
10773
  loaded: capabilities !== null,
10220
10774
  checking: checking || versionsChecking,
@@ -10261,7 +10815,8 @@ window.__ModuleLoader__.load({
10261
10815
  workbench,
10262
10816
  selfUpdate,
10263
10817
  plugins,
10264
- settling: mock === void 0 ? settling : void 0,
10818
+ settling: mock === void 0 ? held : void 0,
10819
+ installing: mock === void 0 ? install.installing : false,
10265
10820
  mock,
10266
10821
  defaults: machineBoard?.defaults ?? [],
10267
10822
  changed: machineBoard?.changed ?? {}
@@ -11748,6 +12303,7 @@ window.__ModuleLoader__.load({
11748
12303
  return manifestsCache;
11749
12304
  },
11750
12305
  refusals: () => refusals,
12306
+ declared: () => [...known.values()],
11751
12307
  installable: () => installableIds,
11752
12308
  setManifests(manifests, installable) {
11753
12309
  known = new Map(manifests.map((manifest) => [manifest.id, manifest]));
@@ -12692,6 +13248,45 @@ window.__ModuleLoader__.load({
12692
13248
  }, []);
12693
13249
  return (0, react.createElement)(ApprovalPlan, { rows: marketSourceRows(tool, args, payload, t) });
12694
13250
  }
13251
+ function pluginToolIndexOf(manifests) {
13252
+ const index = /* @__PURE__ */ new Map();
13253
+ for (const manifest of manifests) for (const tool of manifest.tools) {
13254
+ if (tool.opencli === void 0) continue;
13255
+ index.set(tool.name, tool.opencli);
13256
+ }
13257
+ return index;
13258
+ }
13259
+ function argText(value) {
13260
+ if (typeof value === "string") return value;
13261
+ if (typeof value === "number" || typeof value === "boolean") return String(value);
13262
+ const text = JSON.stringify(value);
13263
+ return text === void 0 ? String(value) : text;
13264
+ }
13265
+ function pluginApprovalRows(origin, args, t) {
13266
+ const rows = [{
13267
+ label: t("approval.plugin.name"),
13268
+ value: origin.plugin
13269
+ }, {
13270
+ label: t("approval.plugin.command"),
13271
+ value: origin.command
13272
+ }];
13273
+ const note = args[APPROVAL_NOTE_ARG];
13274
+ if (typeof note === "string" && note.trim() !== "") rows.push({
13275
+ label: t("approval.plugin.note"),
13276
+ value: note.replace(/\s+/g, " ").trim()
13277
+ });
13278
+ for (const name of origin.args) {
13279
+ if (!(name in args)) continue;
13280
+ rows.push({
13281
+ label: name,
13282
+ value: argText(args[name])
13283
+ });
13284
+ }
13285
+ return rows;
13286
+ }
13287
+ function shellApprovalRenderer(manifests) {
13288
+ return (input, t) => shellApprovalDetail(input, t, pluginToolIndexOf(manifests()));
13289
+ }
12695
13290
  function shellClaimsApprovalDetail(tool) {
12696
13291
  return ALL_TOOLS.includes(tool);
12697
13292
  }
@@ -12703,7 +13298,9 @@ window.__ModuleLoader__.load({
12703
13298
  value: `${unit === "" ? "<unit>" : unit} · ${id === "" ? "<id>" : id}`
12704
13299
  }];
12705
13300
  }
12706
- function shellApprovalPlan(input, t) {
13301
+ function shellApprovalPlan(input, t, pluginTools) {
13302
+ const origin = pluginTools?.get(input.tool);
13303
+ if (origin !== void 0) return { rows: pluginApprovalRows(origin, input.args, t) };
12707
13304
  if (input.tool === "workbench_diy_record_prepare") return {
12708
13305
  rows: recordApprovalRows(input.args, t),
12709
13306
  warn: t("approval.record.noSwitch")
@@ -12714,7 +13311,7 @@ window.__ModuleLoader__.load({
12714
13311
  };
12715
13312
  return shellClaimsApprovalDetail(input.tool) ? { rows: [] } : void 0;
12716
13313
  }
12717
- function shellApprovalDetail(input, t) {
13314
+ function shellApprovalDetail(input, t, pluginTools) {
12718
13315
  if (input.tool === "workbench_diy_publish") return (0, react.createElement)(PublishApprovalSeat, {
12719
13316
  args: input.args,
12720
13317
  t
@@ -12724,7 +13321,7 @@ window.__ModuleLoader__.load({
12724
13321
  args: input.args,
12725
13322
  t
12726
13323
  });
12727
- const plan = shellApprovalPlan(input, t);
13324
+ const plan = shellApprovalPlan(input, t, pluginTools);
12728
13325
  if (plan === void 0) return void 0;
12729
13326
  if (plan.rows.length === 0) return (0, react.createElement)(react.Fragment, null);
12730
13327
  return /* @__PURE__ */ (0, react.createElement)(ApprovalPlan, {
@@ -13074,6 +13671,10 @@ window.__ModuleLoader__.load({
13074
13671
  }, /* @__PURE__ */ (0, react.createElement)("span", { className: Breadcrumbs_module_default.tabTitle }, stepLabel(step, titleKeyOf, t))));
13075
13672
  }));
13076
13673
  }
13674
+ var BoardEmpty_module_default = {
13675
+ actions: "_actions_smeq7_1",
13676
+ action: "_action_smeq7_1"
13677
+ };
13077
13678
  //#endregion
13078
13679
  //#region src/app/layouts/rightbar/BoardEmpty.tsx
13079
13680
  function BoardEmpty({ t, onBuildModule, onOpenModules, onOpenMarket }) {
@@ -13081,20 +13682,23 @@ window.__ModuleLoader__.load({
13081
13682
  icon: /* @__PURE__ */ (0, react.createElement)(IconBrandMark, { size: 32 }),
13082
13683
  title: t("panels.empty"),
13083
13684
  hint: t("panels.emptyHint"),
13084
- action: /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
13685
+ action: /* @__PURE__ */ (0, react.createElement)("div", { className: BoardEmpty_module_default.actions }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
13085
13686
  type: "button",
13086
13687
  size: "sm",
13087
13688
  variant: "primary",
13689
+ className: BoardEmpty_module_default.action,
13088
13690
  onClick: onBuildModule
13089
13691
  }, t("panels.buildModule")), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
13090
13692
  type: "button",
13091
13693
  size: "sm",
13092
13694
  variant: "toolbar",
13695
+ className: BoardEmpty_module_default.action,
13093
13696
  onClick: onOpenModules
13094
13697
  }, t("panels.choose")), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
13095
13698
  type: "button",
13096
13699
  size: "sm",
13097
13700
  variant: "toolbar",
13701
+ className: BoardEmpty_module_default.action,
13098
13702
  onClick: onOpenMarket
13099
13703
  }, t("panels.browseMarket")))
13100
13704
  });
@@ -15637,7 +16241,7 @@ window.__ModuleLoader__.load({
15637
16241
  ...face.messages === void 0 ? {} : { messages: face.messages }
15638
16242
  }));
15639
16243
  }
15640
- var COMPONENT_CSS_MARKER = ".wb-activityBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding-top: var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-activityBlock:first-child {\n padding-top: 0;\n border-top: none;\n}\n\n.wb-activityBlockHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8);\n}\n\n.wb-activityLine {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-activityLineText {\n flex: none;\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n max-height: var(--wb-len-72);\n overflow-y: auto;\n}\n\n.wb-activityLineAt {\n flex: none;\n margin-left: auto;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-activityLine > .wb-activityLineAt,\n.wb-activityLine > .wb-activityLineActions {\n margin-left: auto;\n}\n\n.wb-activityLine > .wb-activityLineAt + .wb-activityLineActions {\n margin-left: 0;\n}\n\n.wb-activityLineActions {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n.wb-activityActionFailed {\n color: var(--dsw-alias-state-error-primary);\n}\n.wb-note {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-problem {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalCommand {\n max-width: 100%;\n}\n.wb-approvalPlan {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-approvalHint {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-approvalRows {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n}\n.wb-approvalRow {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n.wb-approvalLabel {\n flex: none;\n width: var(--wb-len-56);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-approvalValue {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalWarn {\n color: var(--dsw-alias-label-secondary);\n}\n.wb-cardHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-8) var(--wb-card-gutter);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-cardTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardMeta {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-cardMeta::before {\n content: '\\00b7';\n margin-right: var(--wb-len-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen ~ .wb-cardRefresh {\n margin-left: 0;\n}\n\n.wb-cardOpen:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh {\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardRefresh:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-cardGear {\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-3);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardGear:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n.wb-card {\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: none;\n}\n.wb-cardBody {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-card-gutter);\n font-size: var(--dsw-font-xxs-12-font-size);\n}\n.wb-cardBleed {\n margin-inline: calc(-1 * var(--wb-card-gutter));\n}\n._anchor_yq4s2_1 {\n display: contents;\n}\n.wb-spinner {\n display: inline-flex;\n align-items: center;\n flex: none;\n}\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n background: transparent;\n}\n\n.wb-choiceMenu[data-variant='boxed'] {\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-choiceOption {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-choiceOptionOn {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-checkbox {\n position: absolute;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.wb-checkboxBox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xs);\n corner-shape: round;\n color: var(--dsw-alias-label-primary-foreground);\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-choiceOption:hover .wb-checkboxBox {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-checkbox:checked + .wb-checkboxBox {\n border-color: var(--dsw-alias-brand-primary);\n background: var(--dsw-alias-brand-primary);\n}\n\n.wb-checkbox:disabled + .wb-checkboxBox {\n cursor: default;\n}\n\n.wb-checkbox:focus-visible + .wb-checkboxBox {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n.wb-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceOption:has(:disabled) {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-choiceOption:has(:disabled),\n.wb-choiceOption:has(:disabled):hover {\n background: transparent;\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.wb-choiceLabelText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceLabel:has(.wb-choiceDescription) .wb-choiceLabelText {\n overflow: visible;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.wb-choiceDescription {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n.wb-choiceLoading {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-choiceLoadingText {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceEmpty {\n display: flex;\n align-items: center;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio {\n appearance: none;\n -webkit-appearance: none;\n flex: none;\n box-sizing: border-box;\n width: var(--wb-len-12);\n height: var(--wb-len-12);\n margin: 0;\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: 50%;\n corner-shape: round;\n background-color: transparent;\n cursor: pointer;\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-radio:not(:checked):hover {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio:checked {\n border-color: var(--dsw-alias-brand-primary);\n background-image: radial-gradient(\n circle at center,\n var(--dsw-alias-brand-primary) 0 3px,\n transparent 3px\n );\n}\n\n.wb-radio:disabled {\n cursor: default;\n}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-formActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n\n.wb-formActionDanger {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-rows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n}\n.wb-rows > :not(.wb-row) {\n grid-column: 1 / -1;\n}\n.wb-row {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: baseline;\n gap: var(--wb-len-8);\n padding: var(--wb-len-4) 0;\n}\n.wb-row + .wb-row {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.wb-rowKey {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-rowValue {\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-rows > .wb-row {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-rows > .wb-row {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-confirmBar {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n width: 100%;\n box-sizing: border-box;\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-confirmBarTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 600;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-confirmBarHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n.wb-field {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n.wb-fieldLabel {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-fieldHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-field:has(:disabled) .wb-fieldLabel {\n opacity: 0.4;\n}\n.wb-formRows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-12);\n}\n\n.wb-formRows > :not(.wb-formRow) {\n grid-column: 1 / -1;\n}\n\n.wb-formRow {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: center;\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-8);\n}\n\n.wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n align-items: stretch;\n gap: var(--wb-len-6);\n}\n\n.wb-formRows > .wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.wb-formLabel {\n justify-self: start;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: nowrap;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formLabel {\n white-space: normal;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formHint,\n.wb-formRow[data-layout='stacked'] .wb-formProblem {\n grid-column: 1 / -1;\n}\n\n.wb-formControl {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.wb-formControl\n > :where(\n .wb-selectAnchor,\n .wb-choiceMenu,\n input:not(\n [type='checkbox'],\n [type='radio'],\n [type='button'],\n [type='submit'],\n [type='reset'],\n [type='image'],\n [type='color'],\n [type='range']\n ),\n select,\n textarea\n ) {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n}\n\n.wb-formHint {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-formProblem {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(.wb-formProblem) .wb-formLabel {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(:disabled) .wb-formLabel {\n opacity: 0.4;\n}\n\n.wb-formRows > .wb-formRow {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-formRows > .wb-formRow {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-form {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n width: 100%;\n}\n:where(.wb-link) {\n margin-left: var(--wb-len-2);\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n white-space: nowrap;\n vertical-align: baseline;\n}\n\n:where(.wb-link:hover) {\n text-decoration: underline;\n}\n\n:where(.wb-link:focus-visible) {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n.wb-longTask {\n padding-top: var(--wb-len-12);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n.wb-longTaskHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n}\n\n.wb-longTaskLink {\n flex: none;\n}\n\n.wb-longTaskHeadline {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-longTaskProblem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-longTaskDump {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-longTaskDump pre {\n margin: var(--wb-len-4) 0 0;\n max-height: var(--wb-len-220);\n overflow: auto;\n}\n\n.wb-longTaskStop {\n display: inline-flex;\n flex: none;\n align-items: center;\n align-self: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n padding: 0;\n margin-left: auto;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-longTaskStop:hover:not(:disabled),\n.wb-longTaskStop:focus-visible {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStop:disabled {\n cursor: default;\n}\n\n.wb-longTaskStopArmed,\n.wb-longTaskStopArmed:hover:not(:disabled),\n.wb-longTaskStopArmed:focus-visible {\n gap: var(--wb-len-4);\n width: auto;\n padding: 0 var(--wb-len-7);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStopLabel {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n.wb-longTaskStopWhy {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-centered.wb-centeredCompact {\n flex: none;\n min-height: 0;\n gap: var(--wb-len-8);\n padding: var(--wb-len-20) var(--wb-len-16);\n}\n\n.wb-centered.wb-centeredCompact .wb-centeredHero {\n margin-bottom: var(--wb-len-4);\n}\n\n.wb-skeleton {\n display: flex;\n flex-direction: column;\n}\n\n.wb-skeletonRow {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-skeletonRow + .wb-skeletonRow::before {\n content: '';\n align-self: stretch;\n height: var(--wb-len-0-5);\n margin: 0 var(--wb-len-8) var(--wb-len-neg-0-5);\n background: var(--dsw-alias-border-l2);\n}\n\n.wb-skeletonBar {\n display: block;\n height: var(--wb-len-13);\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-bg-skeleton);\n animation: wb-skeleton-pulse var(--wb-dur-1-4) var(--ds-ease-in-out) infinite;\n}\n\n.wb-skeletonBarTitle {\n width: 62%;\n}\n\n.wb-skeletonBarMeta {\n width: 32%;\n height: var(--wb-len-10);\n}\n\n.wb-skeletonRow:nth-child(2n) .wb-skeletonBarTitle {\n width: 74%;\n}\n\n.wb-skeletonRow:nth-child(3n) .wb-skeletonBarTitle {\n width: 52%;\n}\n\n@keyframes wb-skeleton-pulse {\n 50% {\n opacity: 0.45;\n }\n}\n\n.wb-centered {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: var(--wb-len-14);\n flex: 1;\n min-height: var(--wb-len-240);\n padding: 0 var(--wb-len-24) var(--wb-len-24);\n text-align: center;\n}\n\n.wb-centeredHero {\n display: flex;\n margin-bottom: var(--wb-len-16);\n color: var(--dsw-alias-label-dimmed);\n}\n\n.wb-centeredTitle {\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-centeredHint {\n max-width: var(--wb-len-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-centeredDetail {\n max-width: var(--wb-len-320);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-dimmed);\n word-break: break-all;\n}\n\n.wb-centeredAction {\n display: flex;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n@media (prefers-reduced-motion: reduce) {\n .wb-skeletonBar {\n animation: none;\n }}\n.wb-textField {\n box-sizing: border-box;\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n outline: none;\n}\n\n.wb-textField:focus {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-textField:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-textField[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-textField[aria-invalid='true']:focus {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n:where(.wb-textField) {\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n}\n:where(.wb-selectTrigger) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n text-align: left;\n cursor: pointer;\n}\n\n.wb-selectTrigger:focus-visible {\n outline: none;\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true']:focus-visible {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-selectLoading:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: none;\n background: transparent;\n font-size: var(--wb-font-row);\n}\n\n.wb-selectGhost:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-selectGhost:focus-visible {\n outline: var(--dsw-focus-ring-width) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n border-color: transparent;\n box-shadow: none;\n}\n\n.wb-selectIconOnly {\n width: var(--wb-len-36);\n height: var(--wb-len-36);\n min-height: 0;\n gap: 0;\n padding: 0;\n justify-content: center;\n}\n\n.wb-selectReveal {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.wb-selectIconOnly .wb-selectIcon {\n width: 100%;\n height: 100%;\n}\n\n.wb-selectAnchor {\n display: block;\n width: 100%;\n}\n\n.wb-selectIcon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectValue {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n.wb-selectPlaceholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectChevron {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n.wb-selectMenu {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n max-height: min(var(--wb-len-320), calc(100vh - var(--wb-len-24)));\n}\n\n:where(.wb-selectSearch) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n.wb-selectSearch:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectSearch.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-selectSearch.wb-selectGhost:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: none;\n}\n\n.wb-selectSearchIcon {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-textField.wb-selectSearchInput {\n flex: 1;\n min-width: 0;\n min-height: 0;\n padding: 0;\n border: none;\n background: transparent;\n}\n\n.wb-textField.wb-selectSearchInput:focus {\n box-shadow: none;\n}\n\n.wb-selectFallback {\n width: 100%;\n}\n\n.wb-selectHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\nsection.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-len-16);\n border: 0;\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-settings-card-fill);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.wb-settings .wb-settingsTitle {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-strong-14-font-size);\n line-height: var(--wb-line-24);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\n.wb-stateBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-stateBlockTitle {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n.wb-stateBlockHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-stateBlockActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n.wb-stateBlockResolving {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._marketList_yups9_1 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._marketRow_yups9_10 {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n column-gap: var(--wb-len-14);\n row-gap: var(--wb-len-4);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-lg);\n}\n\n._marketIcon_yups9_20 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_yups9_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_yups9_39 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketStatus_yups9_48 {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketStateText_yups9_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_yups9_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_yups9_66 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._marketName_yups9_39 ._marketVersion_yups9_72 {\n margin-left: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n}\n\n._marketVersion_yups9_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_yups9_72::before {\n content: '';\n display: inline-block;\n width: var(--wb-len-1);\n height: var(--wb-len-10);\n margin: 0 var(--wb-len-8) 0 var(--wb-len-2);\n vertical-align: -1px;\n background: var(--dsw-alias-border-l2);\n}\n\n._marketLocalTag_yups9_94 {\n margin-left: var(--wb-len-8);\n padding: 0 var(--wb-len-6);\n border: var(--wb-len-1) solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n}\n\n._marketEnd_yups9_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_yups9_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_yups9_112::before {\n content: '';\n width: 0;\n height: var(--wb-len-14);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketActions_yups9_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_yups9_131 {\n color: var(--dsw-alias-state-warn-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._marketSelfDivider_yups9_137 {\n height: 0;\n margin-top: calc(0px - var(--wb-len-16));\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_yups9_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_yups9_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_yups9_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_yups9_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_yups9_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionAction_yups9_175 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n margin-left: auto;\n min-width: 0;\n}\n\n._marketSectionQuiet_yups9_183 ._marketSectionTitle_yups9_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_yups9_183 ._marketName_yups9_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_yups9_183 ._marketIcon_yups9_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_yups9_196 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-height: var(--wb-len-32);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketNote_yups9_206 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_yups9_213 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._marketEmpty_yups9_220 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_yups9_225 {\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-32);\n padding: 0 clamp(var(--wb-len-24), 4vw, var(--wb-len-48)) var(--wb-len-48);\n overflow-x: hidden;\n overflow-y: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_yups9_225 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_yups9_243 {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-16);\n padding-top: var(--wb-len-28);\n}\n\n._marketPageTitle_yups9_251 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_yups9_256 {\n margin: var(--wb-len-4) 0 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketPageTools_yups9_262 {\n flex: none;\n align-self: center;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--wb-len-16);\n}\n\n._marketPanel_yups9_271 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_yups9_271[hidden] {\n display: none;\n}\n\n._marketTabs_yups9_281 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_yups9_286 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketAddButton_yups9_291 {\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n border-radius: var(--dsw-radius-md);\n}\n\n._marketEmpty_yups9_220 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) var(--wb-len-16);\n text-align: center;\n}\n\n._marketEmptyTitle_yups9_308 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverPage_yups9_313 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_yups9_320 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_yups9_327 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_yups9_333 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_yups9_338 {\n min-width: 0;\n max-width: var(--wb-len-240);\n margin-left: calc(0px - var(--wb-len-8));\n font-weight: 500;\n}\n\n._discoverMarketName_yups9_345 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_yups9_351 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_yups9_356 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_yups9_361 {\n flex: none;\n}\n\n._discoverSearch_yups9_365 {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n._discoverSearchField_yups9_373 {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._discoverSearchFieldFilled_yups9_378 input {\n padding-inline-end: var(--wb-len-20);\n}\n\n._discoverSearchField_yups9_373 input::-webkit-search-cancel-button {\n appearance: none;\n -webkit-appearance: none;\n}\n\n._discoverSearch_yups9_365 ._discoverSearchClear_yups9_387 {\n position: absolute;\n top: 50%;\n inset-inline-end: var(--wb-len-4);\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-tertiary);\n transform: translateY(-50%);\n}\n\n._discoverSearchClear_yups9_387:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_yups9_327 {\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(var(--wb-len-120), 1fr) auto;\n grid-template-areas:\n 'market search refresh'\n 'labels sort sort';\n }\n\n ._discoverMarket_yups9_333 {\n grid-area: market;\n }\n\n ._discoverMarketButton_yups9_338 {\n margin-left: 0;\n }\n\n ._discoverLabels_yups9_351 {\n grid-area: labels;\n }\n\n ._discoverSearch_yups9_365 {\n grid-area: search;\n }\n\n ._discoverSort_yups9_356 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_yups9_361 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_yups9_438 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_yups9_445 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._discoverCard_yups9_454 {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n margin: 0 calc(0px - var(--wb-len-8));\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCard_yups9_454:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_yups9_468 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverArtworkImage_yups9_480 {\n object-fit: contain;\n}\n\n._discoverMain_yups9_484 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_yups9_492 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverCardOpen_yups9_500 {\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n}\n\n._discoverCardOpen_yups9_500::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_yups9_500:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_yups9_500:focus-visible::after {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverStrong_yups9_531 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_yups9_537 {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverMeta_yups9_546 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._discoverMuted_yups9_553 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_yups9_559 {\n position: relative;\n z-index: var(--wb-z-10);\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverUpdateAction_yups9_568 {\n color: var(--dsw-alias-state-warn-primary);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._discoverBlocked_yups9_573 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_yups9_578 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) 0;\n text-align: center;\n}\n\n._discoverEmptyTitle_yups9_587 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_yups9_578 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_yups9_597 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_yups9_603 {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n padding: 0;\n border: 0;\n background: 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: var(--wb-font-12-5);\n cursor: pointer;\n}\n\n._discoverCrumb_yups9_603:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_yups9_603:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverCrumbIcon_yups9_626 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_yups9_630 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_yups9_636 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_yups9_642 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._discoverDetailPanel_yups9_649 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_yups9_656 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_yups9_661 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_yups9_666 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_yups9_671 {\n margin: var(--wb-len-16) 0 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverSection_yups9_677 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_yups9_684 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_yups9_690 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_yups9_695 {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--wb-len-16);\n min-height: var(--wb-len-44);\n padding: var(--wb-len-8) var(--wb-len-2);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverFactKind_yups9_705 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_yups9_711 {\n min-width: 0;\n margin: 0;\n text-align: end;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n}\n\n._discoverCode_yups9_719 {\n padding: var(--wb-len-2) var(--wb-len-6);\n border-radius: var(--wb-radius-6);\n background: var(--dsw-alias-bg-module-platform);\n font-family: var(--ds-font-family-code);\n font-size: var(--dsw-font-xxs-12-font-size);\n box-decoration-break: clone;\n}\n\n._discoverTags_yups9_728 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_yups9_735 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_yups9_735:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_yups9_745 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_yups9_753 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverVersionName_yups9_761 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_yups9_766 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverFailure_yups9_775 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_yups9_781 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverNotice_yups9_790 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverNotice_yups9_790 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_yups9_808 {\n align-self: center;\n}\n\n._discoverTransport_yups9_812 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportHead_yups9_818 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportTitle_yups9_825 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverTransportHead_yups9_818 ._discoverTransportKind_yups9_830 {\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n\n._discoverTransportHead_yups9_818 ._discoverTransportState_yups9_835 {\n margin-left: 0;\n}\n\n._discoverTransportHead_yups9_818 > :last-child {\n margin-left: auto;\n}\n\n._discoverTransportRows_yups9_843 {\n display: flex;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportRow_yups9_843 {\n display: flex;\n flex: 1;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n}\n\n._discoverTransportRow_yups9_843:hover {\n border-color: var(--dsw-alias-border-l3);\n}\n\n._discoverTransportRow_yups9_843:has(._discoverTransportRadio_yups9_864:checked) {\n border-color: var(--dsw-alias-label-primary);\n}\n\n._discoverTransportRow_yups9_843:has(._discoverTransportRadio_yups9_864:focus-visible) {\n outline: 2px solid var(--dsw-alias-label-primary);\n outline-offset: 1px;\n}\n\n._discoverTransportRadio_yups9_864 {\n flex: none;\n margin: 0;\n}\n\n._discoverTransportKind_yups9_830 {\n flex: none;\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n\n._discoverTransportState_yups9_835 {\n flex: none;\n margin-left: auto;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverTransportRow_yups9_843[data-state='ok'] ._discoverTransportState_yups9_835 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._discoverTransportRow_yups9_843[data-state='auth'] ._discoverTransportState_yups9_835 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverTransportRow_yups9_843[data-state='unreachable'] ._discoverTransportState_yups9_835,\n._discoverTransportRow_yups9_843[data-state='unknown'] ._discoverTransportState_yups9_835 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverTransportCustom_yups9_904 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportInput_yups9_910 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverInstallBar_yups9_915 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverInstallText_yups9_926 {\n flex: 1;\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDialog_yups9_932 {\n width: min(var(--wb-len-560), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_yups9_936 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_yups9_942 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_yups9_950 {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n gap: var(--wb-len-12);\n padding: var(--wb-len-10) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceConfirm_yups9_959 {\n margin: 0;\n padding: var(--wb-len-2) 0 var(--wb-len-10);\n list-style: none;\n}\n\n._discoverSourcePick_yups9_965 {\n display: flex;\n flex: 1;\n align-items: flex-start;\n gap: var(--wb-len-10);\n min-width: 0;\n cursor: pointer;\n}\n\n._discoverSourceRadio_yups9_974 {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._discoverSourceMain_yups9_982 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._discoverSourceHead_yups9_990 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverSourceUrl_yups9_998 {\n display: block;\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverSourceMore_yups9_1008 {\n flex: none;\n}\n\n._discoverSourceLoading_yups9_1012 {\n display: flex;\n flex: none;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceHint_yups9_1022 {\n display: flex;\n flex-basis: 100%;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverSourceHint_yups9_1022 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_yups9_1036 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_yups9_1042 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_yups9_1048 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_yups9_1053 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_yups9_1059 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_yups9_1064 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_yups9_1070 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_yups9_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_yups9_468._discoverSkeletonFill_yups9_1070 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_yups9_1079 {\n display: block;\n height: var(--wb-len-12);\n margin: var(--wb-len-4) 0;\n border-radius: var(--dsw-radius-xs);\n}\n\n._discoverSkeletonTitle_yups9_1086 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_yups9_1090 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_yups9_1 {\n 0% {\n opacity: 1;\n }\n 40% {\n opacity: 0.6;\n }\n 80%,\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._discoverSkeletonFill_yups9_1070 {\n animation: none;\n }\n}\n\n._check_1g6tv_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n min-width: 0;\n}\n\n._status_1g6tv_8 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-caption);\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n}\n\n._button_1g6tv_15 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n}\n\n._icon_1g6tv_22 {\n display: inline-flex;\n}\n\n@media (max-width: 720px) {\n ._status_1g6tv_8 {\n display: none;\n }\n}\n._foot_1ud1j_1 {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._footText_1ud1j_13 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1ud1j_18 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._wide_1lv8f_1 {\n justify-content: center;\n width: 100%;\n height: var(--wb-len-40);\n border-radius: var(--dsw-radius-md);\n}\n\n._dialog_1lv8f_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1lv8f_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1lv8f_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1lv8f_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1lv8f_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._input_1lv8f_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1lv8f_45 {\n height: var(--wb-len-32);\n margin-left: var(--wb-len-26);\n padding: 0 var(--wb-len-10);\n}\n\n._options_1lv8f_51 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8) var(--wb-len-12);\n}\n\n._guideToggle_1lv8f_59 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-4);\n align-self: flex-start;\n margin-top: var(--wb-len-4);\n padding: 0;\n border: 0;\n background: transparent;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._guideToggle_1lv8f_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1lv8f_59 svg,\n._registryToggle_1lv8f_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1lv8f_59[aria-expanded='true'] svg,\n._registryToggle_1lv8f_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1lv8f_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1lv8f_78 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n height: var(--wb-len-26);\n padding: 0 var(--wb-len-8) 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n font: inherit;\n font-size: var(--wb-font-12-5);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._registryToggle_1lv8f_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1lv8f_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1lv8f_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1lv8f_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1lv8f_45 {\n position: fixed;\n z-index: var(--wb-z-1100);\n box-sizing: border-box;\n width: min(var(--wb-len-440), 100vw - var(--wb-len-24));\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-12);\n border: 0;\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-2);\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l3);\n box-shadow: var(--dsw-elevation-prominent);\n}\n\n._registryOption_1lv8f_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid transparent;\n border-radius: var(--dsw-radius-lg);\n cursor: pointer;\n}\n\nlabel._registryOption_1lv8f_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1lv8f_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1lv8f_143[data-checked='true'] {\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._registryOption_1lv8f_143 input[type='radio'] {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._registryTitle_1lv8f_179 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n font: var(--dsw-font-xs-13);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n._registryHint_1lv8f_189 {\n margin-left: var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._inputError_1lv8f_197 {\n margin: var(--wb-len-neg-4) 0 0 var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._guide_1lv8f_59 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._guideList_1lv8f_214 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._guideItem_1lv8f_223 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0;\n}\n\n._guideIndex_1lv8f_230 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._guideMain_1lv8f_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1lv8f_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1lv8f_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1lv8f_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1lv8f_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1lv8f_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1lv8f_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1lv8f_285 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0 var(--wb-len-4);\n text-align: center;\n}\n\n._heroIcon_1lv8f_294 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-44);\n height: var(--wb-len-44);\n color: var(--dsw-alias-label-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1lv8f_311 {\n margin: 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n._wizardTitle_1lv8f_319 {\n margin: 0;\n font-size: var(--wb-font-18);\n line-height: var(--wb-len-26);\n font-weight: 600;\n}\n\n._subject_1lv8f_326 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n text-align: center;\n}\n\n._subjectName_1lv8f_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1lv8f_343,\n._subjectDesc_1lv8f_344 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._result_1lv8f_351,\n._resultWarn_1lv8f_352 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._resultWarn_1lv8f_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._resultMeta_1lv8f_365 {\n margin: 0;\n padding: 0 var(--wb-len-12);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._approval_1lv8f_373 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-state-warn-primary);\n border-radius: var(--dsw-radius-lg);\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._approvalTitle_1lv8f_383 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._approvalText_1lv8f_390 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1lv8f_396 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n font-weight: 600;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._note_1lv8f_403 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._noteWarn_1lv8f_410 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1lv8f_414 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1lv8f_418 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._detailLabel_1lv8f_425 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1lv8f_425 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-3);\n font-family: var(--dsw-font-mono, monospace);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n._note_1enlz_1 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._note_1enlz_1 > svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n._slot_1t7dx_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1t7dx_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1t7dx_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1t7dx_31 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._paused_1t7dx_35 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._trouble_1t7dx_39 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._pulse_1t7dx_43 {\n animation: _wb-debug-breathe_1t7dx_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-debug-breathe_1t7dx_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1t7dx_43 {\n animation: none;\n }\n}\n\n._entry_1t7dx_64 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1t7dx_71 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1t7dx_78 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1t7dx_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: 0;\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n}\n\n._act_1t7dx_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1t7dx_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._actStop_1t7dx_110:hover,\n._actStop_1t7dx_110:focus-visible {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._actArmed_1t7dx_115,\n._actArmed_1t7dx_115:hover,\n._actArmed_1t7dx_115:focus-visible {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n width: auto;\n color: var(--dsw-alias-state-error-primary);\n gap: var(--wb-len-4);\n padding: 0 var(--wb-len-7);\n}\n\n._actLabel_1t7dx_125 {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._entryLine_1t7dx_131 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1t7dx_138 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1t7dx_150 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1t7dx_156 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1t7dx_162 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._slot_1gkj9_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1gkj9_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1gkj9_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1gkj9_31 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._done_1gkj9_35 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._pulse_1gkj9_39 {\n animation: _wb-record-breathe_1gkj9_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-record-breathe_1gkj9_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1gkj9_39 {\n animation: none;\n }\n}\n\n._entry_1gkj9_60 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1gkj9_67 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1gkj9_74 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1gkj9_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-22);\n padding: 0 var(--wb-len-7);\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._act_1gkj9_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1gkj9_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._entryLine_1gkj9_108 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1gkj9_115 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1gkj9_127 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1gkj9_133 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1gkj9_139 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._item_lyox9_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n}\n\n._item_lyox9_1 + ._item_lyox9_1 {\n padding-top: var(--wb-len-14);\n border-top: var(--wb-len-0-5) solid var(--dsw-alias-settings-card-stroke);\n}\n\n._head_lyox9_12 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._title_lyox9_19 {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._description_lyox9_31 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._rows_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._row_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-settings-card-stroke);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-settings-card-fill);\n}\n\n._head_85r3w_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._pick_85r3w_27 {\n flex: 0 1 auto;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._pick_85r3w_27 > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._code_85r3w_39 {\n --dsl-code-block-background: var(--dsw-alias-bg-layer-1);\n margin: 0;\n}\n\n._missing_85r3w_44,\n._conflict_85r3w_45 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-warn-primary);\n}\n._body_11oac_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._sources_11oac_7 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._sourcesLabel_11oac_14 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\nbutton._sourceOn_11oac_19 {\n border-color: var(--dsw-alias-brand-primary);\n}\n._sourceCount_11oac_22 {\n margin-left: var(--wb-len-4);\n font-variant-numeric: tabular-nums;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._reading_11oac_29 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._status_11oac_35 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failure_11oac_45 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n column-gap: var(--wb-len-10);\n row-gap: var(--wb-len-2);\n color: var(--dsw-alias-state-error-primary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n\n._failureTitle_11oac_55 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._failureHint_11oac_62 {\n grid-column: 1;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failureAction_11oac_67 {\n grid-column: 2;\n grid-row: 1;\n justify-self: end;\n}\n\n._foot_11oac_73 {\n display: flex;\n justify-content: flex-end;\n}\n._body_lox98_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._field_lox98_7 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._input_lox98_13 {\n width: 100%;\n}\n\n._label_lox98_17 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\n._hint_lox98_22 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._copy_lox98_28 {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-8) var(--wb-len-16);\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n._copy_lox98_28 legend {\n padding: 0;\n margin-bottom: var(--wb-len-6);\n}\n\n._actions_lox98_42 {\n display: flex;\n justify-content: flex-end;\n}\n\n._commandLabel_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n}\n\n._command_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow-wrap: anywhere;\n}\n._body_zi2j5_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._lead_zi2j5_7 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._title_zi2j5_14 {\n font-size: var(--wb-font-18);\n line-height: var(--wb-line-24);\n}\n._hint_zyzt3_1[hidden],\n._actions_zyzt3_2[hidden],\n._progress_zyzt3_3[hidden],\n._commandRow_zyzt3_4[hidden],\n._bridge_zyzt3_5[hidden],\n._raw_zyzt3_6[hidden] {\n display: none;\n}\n\n._gate_zyzt3_10 {\n position: fixed;\n inset: 0;\n z-index: var(--wb-z-top);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--wb-len-24);\n background: var(--dsw-alias-bg-base);\n}\n\n._card_zyzt3_21 {\n width: 100%;\n max-width: var(--wb-len-420);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-16);\n text-align: center;\n}\n\n._card_zyzt3_21:has(._actions_zyzt3_2:not([hidden])),\n._card_zyzt3_21:has(._bridge_zyzt3_5:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_zyzt3_36 {\n margin: 0;\n font-size: var(--dsw-font-base-16-font-size);\n line-height: var(--wb-line-24);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._steps_zyzt3_51 {\n list-style: none;\n margin: var(--wb-len-6) 0 0;\n padding: 0;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n text-align: left;\n}\n\n._step_zyzt3_51 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-6) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._step_zyzt3_51[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_zyzt3_78 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-14);\n height: var(--wb-len-14);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._step_zyzt3_51[data-status='ok'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_zyzt3_51[data-status='warn'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_zyzt3_51[data-status='failed'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_zyzt3_103 {\n flex: none;\n}\n\n._detail_zyzt3_107 {\n margin-left: auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._progress_zyzt3_3 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._elapsed_zyzt3_125 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._error_zyzt3_133 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n max-height: var(--wb-len-120);\n overflow: auto;\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n white-space: pre-wrap;\n word-break: break-all;\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._commandRow_zyzt3_4 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n margin: 0 0 var(--wb-len-8);\n padding-right: var(--wb-len-4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._copy_zyzt3_159 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._copy_zyzt3_159:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_zyzt3_4 {\n flex: 1;\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-primary);\n}\n\n._buttons_zyzt3_192 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_zyzt3_199 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n justify-content: center;\n background: var(--dsw-alias-bg-base);\n}\n\n._button_zyzt3_192 {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._button_zyzt3_192:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_zyzt3_192:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_zyzt3_2,\n._bridge_zyzt3_5 {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-14) var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-1);\n text-align: left;\n}\n\n._fixTitle_zyzt3_250 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._actions_zyzt3_2 ._hint_zyzt3_1,\n._bridge_zyzt3_5 ._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._actions_zyzt3_2 ._commandRow_zyzt3_4,\n._bridge_zyzt3_5 ._commandRow_zyzt3_4 {\n margin: 0;\n}\n\n._actions_zyzt3_2 ._buttons_zyzt3_192,\n._bridge_zyzt3_5 ._buttons_zyzt3_192 {\n justify-content: flex-start;\n}\n\n._raw_zyzt3_6 {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_zyzt3_286 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_zyzt3_2 ._error_zyzt3_133,\n._bridge_zyzt3_5 ._error_zyzt3_133 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_zyzt3_296 {\n margin: 0;\n padding-left: var(--wb-len-18);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._bridgeLine_zyzt3_296 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_zyzt3_313 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_zyzt3_313::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_zyzt3_313:hover {\n text-decoration: underline;\n}\n\n._loading_zyzt3_327 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_zyzt3_327[hidden] {\n display: none;\n}\n\n._loadingMotion_zyzt3_336 {\n transform-origin: center;\n animation: _wb-spin_zyzt3_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_zyzt3_341,\n._loadingArc_zyzt3_342 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_zyzt3_341 {\n opacity: 0.25;\n}\n\n._loadingArc_zyzt3_342 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_zyzt3_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_zyzt3_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_zyzt3_1 {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }\n to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._loadingMotion_zyzt3_336,\n ._loadingArc_zyzt3_342 {\n animation: none;\n }\n}\n._changelog_1q6pj_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-10);\n min-width: 0;\n}\n\n._changelogTitle_1q6pj_9 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._changelogMissing_1q6pj_15 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._changelogBody_1q6pj_21 {\n max-height: var(--wb-len-320);\n overflow: auto;\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n}\n._group_1hxis_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n}\n\n._button_1hxis_7 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n}\n\n._button_1hxis_7:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._active_1hxis_19 {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._icon_1hxis_23 {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._icon_1hxis_23 svg {\n display: block;\n width: var(--wb-len-15);\n height: var(--wb-len-15);\n}\n\n._mirror_1hxis_35 {\n transform: scaleX(-1);\n}\n._stripTabs_1dqp4_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n min-width: 0;\n overflow: hidden;\n}\n\n._tab_1dqp4_9 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: none;\n font: inherit;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-16);\n max-width: 100%;\n}\n\n._tabActive_1dqp4_25 {\n color: var(--dsw-alias-label-primary);\n}\n\n._tabQuiet_1dqp4_29 {\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._tabQuiet_1dqp4_29:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._tabTitle_1dqp4_39 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._sep_1dqp4_49 {\n flex: none;\n color: var(--dsw-alias-label-dimmed);\n}\n._trigger_15ptp_1 {\n display: flex;\n align-items: center;\n}\n\n._pop_15ptp_6 {\n position: absolute;\n top: calc(var(--wb-len-38) + var(--wb-len-8));\n right: var(--wb-len-6);\n z-index: var(--wb-z-30);\n width: min(var(--wb-len-360), calc(100% - var(--wb-len-12)));\n max-width: calc(100vw - var(--wb-len-48));\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-2);\n box-shadow: var(--dsw-shadow-lv3);\n overflow: hidden;\n}\n\n._head_15ptp_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10) var(--wb-len-12) var(--wb-len-9) var(--wb-len-14);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._title_15ptp_28 {\n flex: 1;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._rowControls_15ptp_36 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._reset_15ptp_43 {\n flex: none;\n padding: var(--wb-len-3) var(--wb-len-8);\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._reset_15ptp_43:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_15ptp_43:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_15ptp_65 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._row_15ptp_36 {\n position: relative;\n display: grid;\n grid-template-columns: 12px minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-sm);\n cursor: default;\n}\n\n._rowDragging_15ptp_85 {\n cursor: grabbing;\n}\n\n._rowBlocked_15ptp_89 {\n cursor: not-allowed;\n}\n\n._listDragging_15ptp_93 ._rowControls_15ptp_36 {\n pointer-events: none;\n}\n\n._row_15ptp_36:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOff_15ptp_101 {\n opacity: 0.55;\n}\n\n._rowOff_15ptp_101:hover {\n opacity: 1;\n}\n\n._rowOver_15ptp_109::before {\n content: '';\n position: absolute;\n top: var(--wb-len-neg-3);\n left: var(--wb-len-8);\n right: var(--wb-len-8);\n height: var(--wb-len-2);\n background: var(--dsw-alias-brand-primary);\n}\n\n._ghost_15ptp_119 {\n position: fixed;\n z-index: var(--wb-z-40);\n pointer-events: none;\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--wb-static-shadow-ghost);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n}\n\n._grip_15ptp_134 {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: center;\n color: var(--dsw-alias-label-tertiary);\n user-select: none;\n cursor: grab;\n touch-action: none;\n}\n\n._gripDragging_15ptp_144 {\n cursor: grabbing;\n}\n\n._gripBlocked_15ptp_148 {\n cursor: not-allowed;\n}\n\n._label_15ptp_152 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_15ptp_159 {\n min-width: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n\n._error_15ptp_170 {\n margin: 0;\n padding: 0 var(--wb-len-14) var(--wb-len-10);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._dep_15ptp_178 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n}\n\n._group_15ptp_186 {\n padding-top: var(--wb-len-6);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._groupTitle_15ptp_191 {\n margin: 0;\n padding: var(--wb-len-2) var(--wb-len-8) 0 var(--wb-len-14);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n font-weight: 400;\n color: var(--dsw-alias-label-tertiary);\n}\n._panel_1whum_1 {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: var(--wb-z-10);\n visibility: hidden;\n}\n\n._panel_1whum_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1whum_1[data-open] {\n visibility: visible;\n}\n\n._columns_1whum_18 {\n display: block;\n column-gap: var(--wb-len-12);\n}\n\n._cell_1whum_23 {\n display: flow-root;\n min-width: 0;\n break-inside: avoid;\n margin-bottom: var(--wb-len-12);\n}\n._root_1cmz0_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._rail_1cmz0_7 {\n margin: 0 0 var(--wb-len-4);\n}\n\n._glyphBox_1cmz0_11 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n._glyph_1cmz0_11 {\n position: relative;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._glyphActive_1cmz0_30 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1cmz0_34 {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n._dir_1cmz0_45 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1cmz0_53 {\n flex: 0 1 auto;\n max-width: 50%;\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._triggerName_1cmz0_34 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._row_1cmz0_66 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1cmz0_74 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n margin-inline-start: auto;\n}\n\n._trailing_1cmz0_74 ._rowAction_1cmz0_84 {\n width: var(--wb-len-20);\n min-width: var(--wb-len-20);\n height: var(--wb-len-20);\n min-height: var(--wb-len-20);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n}\n\n._row_1cmz0_66 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1cmz0_97 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n._dot_sosf1_1 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n._overlay_sosf1_8 {\n position: absolute;\n inset-block-start: var(--wb-len-neg-3);\n inset-inline-end: var(--wb-len-neg-3);\n}\n._tag_g9dg8_1 {\n flex: none;\n margin-inline-start: auto;\n}\n._dialog_1vye5_1 {\n width: min(var(--wb-len-420), 100%);\n}\n\n._stack_1vye5_5 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._input_1vye5_12 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-12);\n}\n\n._meta_1vye5_18 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n._dot_14w1n_1 {\n display: inline-flex;\n align-items: center;\n}\n\n._hover_14w1n_6 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._blocker_1oaj0_1 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-20) var(--wb-len-16);\n text-align: center;\n}\n\n._icon_1oaj0_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_1oaj0_15 {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_1oaj0_23 {\n margin: 0;\n max-width: var(--wb-len-42em);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n text-wrap: pretty;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 {\n align-items: flex-start;\n gap: var(--wb-len-6);\n padding: var(--wb-len-4) 0 var(--wb-len-2);\n text-align: left;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._title_1oaj0_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._hint_1oaj0_23 {\n max-width: 100%;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._actions_1oaj0_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._raw_1oaj0_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_1oaj0_48 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-6);\n}\n\n._raw_1oaj0_52 {\n margin-top: var(--wb-len-10);\n width: 100%;\n max-width: var(--wb-len-360);\n text-align: left;\n}\n\n._notice_1oaj0_71 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--wb-len-10);\n margin: 0 0 var(--wb-len-10);\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-left: 2px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._notice_1oaj0_71._noticeFlat_1oaj0_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_1oaj0_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_1oaj0_98 {\n font-size: var(--wb-font-12-5);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._noticeHint_1oaj0_105 {\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._noticeActions_1oaj0_112 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-neg-2);\n}\n\n._failure_1oaj0_119 {\n margin: var(--wb-len-8) 0 0;\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._failureDetail_1oaj0_127 {\n display: block;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-label-tertiary);\n white-space: pre-wrap;\n}\n\n._inlineAction_1oaj0_134 {\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n._inlineAction_1oaj0_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n._rawText_1oaj0_146 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
16244
+ var COMPONENT_CSS_MARKER = ".wb-activityBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding-top: var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-activityBlock:first-child {\n padding-top: 0;\n border-top: none;\n}\n\n.wb-activityBlockHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8);\n}\n\n.wb-activityLine {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-activityLineText {\n flex: none;\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n max-height: var(--wb-len-72);\n overflow-y: auto;\n}\n\n.wb-activityLineAt {\n flex: none;\n margin-left: auto;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-activityLine > .wb-activityLineAt,\n.wb-activityLine > .wb-activityLineActions {\n margin-left: auto;\n}\n\n.wb-activityLine > .wb-activityLineAt + .wb-activityLineActions {\n margin-left: 0;\n}\n\n.wb-activityLineActions {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n.wb-activityActionFailed {\n color: var(--dsw-alias-state-error-primary);\n}\n.wb-note {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-problem {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalCommand {\n max-width: 100%;\n}\n.wb-approvalPlan {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-approvalHint {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-approvalRows {\n display: grid;\n grid-template-columns: minmax(var(--wb-len-56), auto) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-2);\n align-items: baseline;\n margin: 0;\n}\n.wb-approvalRow {\n display: contents;\n}\n.wb-approvalLabel {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n.wb-approvalValue {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalWarn {\n color: var(--dsw-alias-label-secondary);\n}\n.wb-cardHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-8) var(--wb-card-gutter);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-cardTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardMeta {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-cardMeta::before {\n content: '\\00b7';\n margin-right: var(--wb-len-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen ~ .wb-cardRefresh {\n margin-left: 0;\n}\n\n.wb-cardOpen:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh {\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardRefresh:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-cardGear {\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-3);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardGear:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n.wb-card {\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: none;\n}\n.wb-cardBody {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-card-gutter);\n font-size: var(--dsw-font-xxs-12-font-size);\n}\n.wb-cardBleed {\n margin-inline: calc(-1 * var(--wb-card-gutter));\n}\n._anchor_yq4s2_1 {\n display: contents;\n}\n.wb-spinner {\n display: inline-flex;\n align-items: center;\n flex: none;\n}\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n background: transparent;\n}\n\n.wb-choiceMenu[data-variant='boxed'] {\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-choiceOption {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-choiceOptionOn {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-checkbox {\n position: absolute;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.wb-checkboxBox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xs);\n corner-shape: round;\n color: var(--dsw-alias-label-primary-foreground);\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-choiceOption:hover .wb-checkboxBox {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-checkbox:checked + .wb-checkboxBox {\n border-color: var(--dsw-alias-brand-primary);\n background: var(--dsw-alias-brand-primary);\n}\n\n.wb-checkbox:disabled + .wb-checkboxBox {\n cursor: default;\n}\n\n.wb-checkbox:focus-visible + .wb-checkboxBox {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n.wb-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceOption:has(:disabled) {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-choiceOption:has(:disabled),\n.wb-choiceOption:has(:disabled):hover {\n background: transparent;\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.wb-choiceLabelText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceLabel:has(.wb-choiceDescription) .wb-choiceLabelText {\n overflow: visible;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.wb-choiceDescription {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n.wb-choiceLoading {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-choiceLoadingText {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceEmpty {\n display: flex;\n align-items: center;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio {\n appearance: none;\n -webkit-appearance: none;\n flex: none;\n box-sizing: border-box;\n width: var(--wb-len-12);\n height: var(--wb-len-12);\n margin: 0;\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: 50%;\n corner-shape: round;\n background-color: transparent;\n cursor: pointer;\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-radio:not(:checked):hover {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio:checked {\n border-color: var(--dsw-alias-brand-primary);\n background-image: radial-gradient(\n circle at center,\n var(--dsw-alias-brand-primary) 0 3px,\n transparent 3px\n );\n}\n\n.wb-radio:disabled {\n cursor: default;\n}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-formActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n\n.wb-formActionDanger {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-rows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n}\n.wb-rows > :not(.wb-row) {\n grid-column: 1 / -1;\n}\n.wb-row {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: baseline;\n gap: var(--wb-len-8);\n padding: var(--wb-len-4) 0;\n}\n.wb-row + .wb-row {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.wb-rowKey {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-rowValue {\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-rows > .wb-row {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-rows > .wb-row {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-confirmBar {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n width: 100%;\n box-sizing: border-box;\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-confirmBarTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 600;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-confirmBarHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n.wb-field {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n.wb-fieldLabel {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-fieldHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-field:has(:disabled) .wb-fieldLabel {\n opacity: 0.4;\n}\n.wb-formRows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-12);\n}\n\n.wb-formRows > :not(.wb-formRow) {\n grid-column: 1 / -1;\n}\n\n.wb-formRow {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: center;\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-8);\n}\n\n.wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n align-items: stretch;\n gap: var(--wb-len-6);\n}\n\n.wb-formRows > .wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.wb-formLabel {\n justify-self: start;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: nowrap;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formLabel {\n white-space: normal;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formHint,\n.wb-formRow[data-layout='stacked'] .wb-formProblem {\n grid-column: 1 / -1;\n}\n\n.wb-formControl {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.wb-formControl\n > :where(\n .wb-selectAnchor,\n .wb-choiceMenu,\n input:not(\n [type='checkbox'],\n [type='radio'],\n [type='button'],\n [type='submit'],\n [type='reset'],\n [type='image'],\n [type='color'],\n [type='range']\n ),\n select,\n textarea\n ) {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n}\n\n.wb-formHint {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-formProblem {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(.wb-formProblem) .wb-formLabel {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(:disabled) .wb-formLabel {\n opacity: 0.4;\n}\n\n.wb-formRows > .wb-formRow {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-formRows > .wb-formRow {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-form {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n width: 100%;\n}\n:where(.wb-link) {\n margin-left: var(--wb-len-2);\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n white-space: nowrap;\n vertical-align: baseline;\n}\n\n:where(.wb-link:hover) {\n text-decoration: underline;\n}\n\n:where(.wb-link:focus-visible) {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n.wb-longTask {\n padding-top: var(--wb-len-12);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n.wb-longTaskHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n}\n\n.wb-longTaskLink {\n flex: none;\n}\n\n.wb-longTaskHeadline {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-longTaskProblem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-longTaskDump {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-longTaskDump pre {\n margin: var(--wb-len-4) 0 0;\n max-height: var(--wb-len-220);\n overflow: auto;\n}\n\n.wb-longTaskStop {\n display: inline-flex;\n flex: none;\n align-items: center;\n align-self: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n padding: 0;\n margin-left: auto;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-longTaskStop:hover:not(:disabled),\n.wb-longTaskStop:focus-visible {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStop:disabled {\n cursor: default;\n}\n\n.wb-longTaskStopArmed,\n.wb-longTaskStopArmed:hover:not(:disabled),\n.wb-longTaskStopArmed:focus-visible {\n gap: var(--wb-len-4);\n width: auto;\n padding: 0 var(--wb-len-7);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStopLabel {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n.wb-longTaskStopWhy {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-centered.wb-centeredCompact {\n flex: none;\n min-height: 0;\n gap: var(--wb-len-8);\n padding: var(--wb-len-20) var(--wb-len-16);\n}\n\n.wb-centered.wb-centeredCompact .wb-centeredHero {\n margin-bottom: var(--wb-len-4);\n}\n\n.wb-skeleton {\n display: flex;\n flex-direction: column;\n}\n\n.wb-skeletonRow {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-skeletonRow + .wb-skeletonRow::before {\n content: '';\n align-self: stretch;\n height: var(--wb-len-0-5);\n margin: 0 var(--wb-len-8) var(--wb-len-neg-0-5);\n background: var(--dsw-alias-border-l2);\n}\n\n.wb-skeletonBar {\n display: block;\n height: var(--wb-len-13);\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-bg-skeleton);\n animation: wb-skeleton-pulse var(--wb-dur-1-4) var(--ds-ease-in-out) infinite;\n}\n\n.wb-skeletonBarTitle {\n width: 62%;\n}\n\n.wb-skeletonBarMeta {\n width: 32%;\n height: var(--wb-len-10);\n}\n\n.wb-skeletonRow:nth-child(2n) .wb-skeletonBarTitle {\n width: 74%;\n}\n\n.wb-skeletonRow:nth-child(3n) .wb-skeletonBarTitle {\n width: 52%;\n}\n\n@keyframes wb-skeleton-pulse {\n 50% {\n opacity: 0.45;\n }\n}\n\n.wb-centered {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: var(--wb-len-14);\n flex: 1;\n min-height: var(--wb-len-240);\n padding: 0 var(--wb-len-24) var(--wb-len-24);\n text-align: center;\n}\n\n.wb-centeredHero {\n display: flex;\n margin-bottom: var(--wb-len-16);\n color: var(--dsw-alias-label-dimmed);\n}\n\n.wb-centeredTitle {\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-centeredHint {\n max-width: var(--wb-len-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-centeredDetail {\n max-width: var(--wb-len-320);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-dimmed);\n word-break: break-all;\n}\n\n.wb-centeredAction {\n display: flex;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n@media (prefers-reduced-motion: reduce) {\n .wb-skeletonBar {\n animation: none;\n }}\n.wb-textField {\n box-sizing: border-box;\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n outline: none;\n}\n\n.wb-textField:focus {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-textField:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-textField[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-textField[aria-invalid='true']:focus {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n:where(.wb-textField) {\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n}\n:where(.wb-selectTrigger) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n text-align: left;\n cursor: pointer;\n}\n\n.wb-selectTrigger:focus-visible {\n outline: none;\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true']:focus-visible {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-selectLoading:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: none;\n background: transparent;\n font-size: var(--wb-font-row);\n}\n\n.wb-selectGhost:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-selectGhost:focus-visible {\n outline: var(--dsw-focus-ring-width) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n border-color: transparent;\n box-shadow: none;\n}\n\n.wb-selectIconOnly {\n width: var(--wb-len-36);\n height: var(--wb-len-36);\n min-height: 0;\n gap: 0;\n padding: 0;\n justify-content: center;\n}\n\n.wb-selectReveal {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.wb-selectIconOnly .wb-selectIcon {\n width: 100%;\n height: 100%;\n}\n\n.wb-selectAnchor {\n display: block;\n width: 100%;\n}\n\n.wb-selectIcon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectValue {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n.wb-selectPlaceholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectChevron {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n.wb-selectMenu {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n max-height: min(var(--wb-len-320), calc(100vh - var(--wb-len-24)));\n}\n\n:where(.wb-selectSearch) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n.wb-selectSearch:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectSearch.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-selectSearch.wb-selectGhost:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: none;\n}\n\n.wb-selectSearchIcon {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-textField.wb-selectSearchInput {\n flex: 1;\n min-width: 0;\n min-height: 0;\n padding: 0;\n border: none;\n background: transparent;\n}\n\n.wb-textField.wb-selectSearchInput:focus {\n box-shadow: none;\n}\n\n.wb-selectFallback {\n width: 100%;\n}\n\n.wb-selectHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\nsection.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-len-16);\n border: 0;\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-settings-card-fill);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.wb-settings .wb-settingsTitle {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-strong-14-font-size);\n line-height: var(--wb-line-24);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\n.wb-stateBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-stateBlockTitle {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n.wb-stateBlockHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-stateBlockActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n.wb-stateBlockResolving {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._marketList_485ym_1 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._marketRow_485ym_10 {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n column-gap: var(--wb-len-14);\n row-gap: var(--wb-len-4);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-lg);\n}\n\n._marketIcon_485ym_20 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_485ym_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_485ym_39 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketStatus_485ym_48 {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketStateText_485ym_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_485ym_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_485ym_66 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._marketName_485ym_39 ._marketVersion_485ym_72 {\n margin-left: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n}\n\n._marketVersion_485ym_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_485ym_72::before {\n content: '';\n display: inline-block;\n width: var(--wb-len-1);\n height: var(--wb-len-10);\n margin: 0 var(--wb-len-8) 0 var(--wb-len-2);\n vertical-align: -1px;\n background: var(--dsw-alias-border-l2);\n}\n\n._marketLocalTag_485ym_94 {\n margin-left: var(--wb-len-8);\n padding: 0 var(--wb-len-6);\n border: var(--wb-len-1) solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n}\n\n._marketEnd_485ym_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_485ym_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_485ym_112::before {\n content: '';\n width: 0;\n height: var(--wb-len-14);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketActions_485ym_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_485ym_131 {\n color: var(--dsw-alias-state-warn-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._marketSelfDivider_485ym_137 {\n height: 0;\n margin-top: calc(0px - var(--wb-len-16));\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_485ym_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_485ym_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_485ym_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_485ym_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_485ym_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionAction_485ym_175 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n margin-left: auto;\n min-width: 0;\n}\n\n._marketSectionQuiet_485ym_183 ._marketSectionTitle_485ym_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_485ym_183 ._marketName_485ym_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_485ym_183 ._marketIcon_485ym_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_485ym_196 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-height: var(--wb-len-32);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketNote_485ym_206 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_485ym_213 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailureSeat_485ym_220 {\n grid-column: 2 / -1;\n min-width: 0;\n}\n\n._marketEmpty_485ym_225 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_485ym_230 {\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-32);\n padding: 0 clamp(var(--wb-len-24), 4vw, var(--wb-len-48)) var(--wb-len-48);\n overflow-x: hidden;\n overflow-y: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_485ym_230 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_485ym_248 {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-16);\n padding-top: var(--wb-len-28);\n}\n\n._marketPageTitle_485ym_256 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_485ym_261 {\n margin: var(--wb-len-4) 0 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketPageTools_485ym_267 {\n flex: none;\n align-self: center;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--wb-len-16);\n}\n\n._marketPanel_485ym_276 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_485ym_276[hidden] {\n display: none;\n}\n\n._marketTabs_485ym_286 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_485ym_291 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketAddButton_485ym_296 {\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n border-radius: var(--dsw-radius-md);\n}\n\n._marketEmpty_485ym_225 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) var(--wb-len-16);\n text-align: center;\n}\n\n._marketEmptyTitle_485ym_313 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverPage_485ym_318 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_485ym_325 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_485ym_332 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_485ym_338 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_485ym_343 {\n min-width: 0;\n max-width: var(--wb-len-240);\n margin-left: calc(0px - var(--wb-len-8));\n font-weight: 500;\n}\n\n._discoverMarketName_485ym_350 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_485ym_356 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_485ym_361 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_485ym_366 {\n flex: none;\n}\n\n._discoverSearch_485ym_370 {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n._discoverSearchField_485ym_378 {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._discoverSearchFieldFilled_485ym_383 input {\n padding-inline-end: var(--wb-len-20);\n}\n\n._discoverSearchField_485ym_378 input::-webkit-search-cancel-button {\n appearance: none;\n -webkit-appearance: none;\n}\n\n._discoverSearch_485ym_370 ._discoverSearchClear_485ym_392 {\n position: absolute;\n top: 50%;\n inset-inline-end: var(--wb-len-4);\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-tertiary);\n transform: translateY(-50%);\n}\n\n._discoverSearchClear_485ym_392:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_485ym_332 {\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(var(--wb-len-120), 1fr) auto;\n grid-template-areas:\n 'market search refresh'\n 'labels sort sort';\n }\n\n ._discoverMarket_485ym_338 {\n grid-area: market;\n }\n\n ._discoverMarketButton_485ym_343 {\n margin-left: 0;\n }\n\n ._discoverLabels_485ym_356 {\n grid-area: labels;\n }\n\n ._discoverSearch_485ym_370 {\n grid-area: search;\n }\n\n ._discoverSort_485ym_361 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_485ym_366 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_485ym_443 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_485ym_450 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._discoverCard_485ym_459 {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n margin: 0 calc(0px - var(--wb-len-8));\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCard_485ym_459:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_485ym_473 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverArtworkImage_485ym_485 {\n object-fit: contain;\n}\n\n._discoverMain_485ym_489 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_485ym_497 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverCardOpen_485ym_505 {\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n}\n\n._discoverCardOpen_485ym_505::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_485ym_505:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_485ym_505:focus-visible::after {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverStrong_485ym_536 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_485ym_542 {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverMeta_485ym_551 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._discoverMuted_485ym_558 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_485ym_564 {\n position: relative;\n z-index: var(--wb-z-10);\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverUpdateAction_485ym_573 {\n color: var(--dsw-alias-state-warn-primary);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._discoverBlocked_485ym_578 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_485ym_583 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) 0;\n text-align: center;\n}\n\n._discoverEmptyTitle_485ym_592 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_485ym_583 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_485ym_602 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_485ym_608 {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n padding: 0;\n border: 0;\n background: 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: var(--wb-font-12-5);\n cursor: pointer;\n}\n\n._discoverCrumb_485ym_608:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_485ym_608:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverCrumbIcon_485ym_631 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_485ym_635 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_485ym_641 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_485ym_647 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._discoverDetailPanel_485ym_654 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_485ym_661 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_485ym_666 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_485ym_671 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_485ym_676 {\n margin: var(--wb-len-16) 0 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverSection_485ym_682 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_485ym_689 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_485ym_695 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_485ym_700 {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--wb-len-16);\n min-height: var(--wb-len-44);\n padding: var(--wb-len-8) var(--wb-len-2);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverFactKind_485ym_710 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_485ym_716 {\n min-width: 0;\n margin: 0;\n text-align: end;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n}\n\n._discoverCode_485ym_724 {\n padding: var(--wb-len-2) var(--wb-len-6);\n border-radius: var(--wb-radius-6);\n background: var(--dsw-alias-bg-module-platform);\n font-family: var(--ds-font-family-code);\n font-size: var(--dsw-font-xxs-12-font-size);\n box-decoration-break: clone;\n}\n\n._discoverTags_485ym_733 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_485ym_740 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_485ym_740:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_485ym_750 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_485ym_758 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverVersionName_485ym_766 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_485ym_771 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverFailure_485ym_780 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_485ym_786 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverNotice_485ym_795 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverNotice_485ym_795 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_485ym_813 {\n align-self: center;\n}\n\n._discoverTransport_485ym_817 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportHead_485ym_823 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportTitle_485ym_830 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverTransportHead_485ym_823 ._discoverTransportKind_485ym_835 {\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n\n._discoverTransportHead_485ym_823 ._discoverTransportState_485ym_840 {\n margin-left: 0;\n}\n\n._discoverTransportHead_485ym_823 > :last-child {\n margin-left: auto;\n}\n\n._discoverTransportRows_485ym_848 {\n display: flex;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportRow_485ym_848 {\n display: flex;\n flex: 1;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n}\n\n._discoverTransportRow_485ym_848:hover {\n border-color: var(--dsw-alias-border-l3);\n}\n\n._discoverTransportRow_485ym_848:has(._discoverTransportRadio_485ym_869:checked) {\n border-color: var(--dsw-alias-label-primary);\n}\n\n._discoverTransportRow_485ym_848:has(._discoverTransportRadio_485ym_869:focus-visible) {\n outline: 2px solid var(--dsw-alias-label-primary);\n outline-offset: 1px;\n}\n\n._discoverTransportRadio_485ym_869 {\n flex: none;\n margin: 0;\n}\n\n._discoverTransportKind_485ym_835 {\n flex: none;\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n\n._discoverTransportState_485ym_840 {\n flex: none;\n margin-left: auto;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverTransportRow_485ym_848[data-state='ok'] ._discoverTransportState_485ym_840 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._discoverTransportRow_485ym_848[data-state='auth'] ._discoverTransportState_485ym_840 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverTransportRow_485ym_848[data-state='unreachable'] ._discoverTransportState_485ym_840,\n._discoverTransportRow_485ym_848[data-state='unknown'] ._discoverTransportState_485ym_840 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverTransportCustom_485ym_909 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportInput_485ym_915 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverInstallBar_485ym_920 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverInstallText_485ym_931 {\n flex: 1;\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDialog_485ym_937 {\n width: min(var(--wb-len-560), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_485ym_941 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_485ym_947 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_485ym_955 {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n gap: var(--wb-len-12);\n padding: var(--wb-len-10) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceConfirm_485ym_964 {\n margin: 0;\n padding: var(--wb-len-2) 0 var(--wb-len-10);\n list-style: none;\n}\n\n._discoverSourcePick_485ym_970 {\n display: flex;\n flex: 1;\n align-items: flex-start;\n gap: var(--wb-len-10);\n min-width: 0;\n cursor: pointer;\n}\n\n._discoverSourceRadio_485ym_979 {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._discoverSourceMain_485ym_987 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._discoverSourceHead_485ym_995 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverSourceUrl_485ym_1003 {\n display: block;\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverSourceMore_485ym_1013 {\n flex: none;\n}\n\n._discoverSourceLoading_485ym_1017 {\n display: flex;\n flex: none;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceHint_485ym_1027 {\n display: flex;\n flex-basis: 100%;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverSourceHint_485ym_1027 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_485ym_1041 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_485ym_1047 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_485ym_1053 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_485ym_1058 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_485ym_1064 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_485ym_1069 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_485ym_1075 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_485ym_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_485ym_473._discoverSkeletonFill_485ym_1075 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_485ym_1084 {\n display: block;\n height: var(--wb-len-12);\n margin: var(--wb-len-4) 0;\n border-radius: var(--dsw-radius-xs);\n}\n\n._discoverSkeletonTitle_485ym_1091 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_485ym_1095 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_485ym_1 {\n 0% {\n opacity: 1;\n }\n 40% {\n opacity: 0.6;\n }\n 80%,\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._discoverSkeletonFill_485ym_1075 {\n animation: none;\n }\n}\n\n._block_mxnbc_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-2) 0 var(--wb-len-8);\n min-width: 0;\n}\n\n._head_mxnbc_9 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._title_mxnbc_16 {\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._fact_mxnbc_22 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._actions_mxnbc_30 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-2);\n margin-left: calc(-1 * var(--wb-len-8));\n}\n\n._hint_mxnbc_38 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._output_mxnbc_44 {\n margin-top: var(--wb-len-2);\n min-width: 0;\n}\n._check_1g6tv_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n min-width: 0;\n}\n\n._status_1g6tv_8 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-caption);\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n}\n\n._button_1g6tv_15 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n}\n\n._icon_1g6tv_22 {\n display: inline-flex;\n}\n\n@media (max-width: 720px) {\n ._status_1g6tv_8 {\n display: none;\n }\n}\n._foot_1ud1j_1 {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._footText_1ud1j_13 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1ud1j_18 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._wide_1lv8f_1 {\n justify-content: center;\n width: 100%;\n height: var(--wb-len-40);\n border-radius: var(--dsw-radius-md);\n}\n\n._dialog_1lv8f_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1lv8f_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1lv8f_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1lv8f_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1lv8f_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._input_1lv8f_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1lv8f_45 {\n height: var(--wb-len-32);\n margin-left: var(--wb-len-26);\n padding: 0 var(--wb-len-10);\n}\n\n._options_1lv8f_51 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8) var(--wb-len-12);\n}\n\n._guideToggle_1lv8f_59 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-4);\n align-self: flex-start;\n margin-top: var(--wb-len-4);\n padding: 0;\n border: 0;\n background: transparent;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._guideToggle_1lv8f_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1lv8f_59 svg,\n._registryToggle_1lv8f_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1lv8f_59[aria-expanded='true'] svg,\n._registryToggle_1lv8f_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1lv8f_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1lv8f_78 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n height: var(--wb-len-26);\n padding: 0 var(--wb-len-8) 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n font: inherit;\n font-size: var(--wb-font-12-5);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._registryToggle_1lv8f_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1lv8f_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1lv8f_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1lv8f_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1lv8f_45 {\n position: fixed;\n z-index: var(--wb-z-1100);\n box-sizing: border-box;\n width: min(var(--wb-len-440), 100vw - var(--wb-len-24));\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-12);\n border: 0;\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-2);\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l3);\n box-shadow: var(--dsw-elevation-prominent);\n}\n\n._registryOption_1lv8f_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid transparent;\n border-radius: var(--dsw-radius-lg);\n cursor: pointer;\n}\n\nlabel._registryOption_1lv8f_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1lv8f_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1lv8f_143[data-checked='true'] {\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._registryOption_1lv8f_143 input[type='radio'] {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._registryTitle_1lv8f_179 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n font: var(--dsw-font-xs-13);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n._registryHint_1lv8f_189 {\n margin-left: var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._inputError_1lv8f_197 {\n margin: var(--wb-len-neg-4) 0 0 var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._guide_1lv8f_59 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._guideList_1lv8f_214 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._guideItem_1lv8f_223 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0;\n}\n\n._guideIndex_1lv8f_230 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._guideMain_1lv8f_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1lv8f_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1lv8f_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1lv8f_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1lv8f_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1lv8f_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1lv8f_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1lv8f_285 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0 var(--wb-len-4);\n text-align: center;\n}\n\n._heroIcon_1lv8f_294 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-44);\n height: var(--wb-len-44);\n color: var(--dsw-alias-label-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1lv8f_311 {\n margin: 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n._wizardTitle_1lv8f_319 {\n margin: 0;\n font-size: var(--wb-font-18);\n line-height: var(--wb-len-26);\n font-weight: 600;\n}\n\n._subject_1lv8f_326 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n text-align: center;\n}\n\n._subjectName_1lv8f_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1lv8f_343,\n._subjectDesc_1lv8f_344 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._result_1lv8f_351,\n._resultWarn_1lv8f_352 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._resultWarn_1lv8f_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._resultMeta_1lv8f_365 {\n margin: 0;\n padding: 0 var(--wb-len-12);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._approval_1lv8f_373 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-state-warn-primary);\n border-radius: var(--dsw-radius-lg);\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._approvalTitle_1lv8f_383 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._approvalText_1lv8f_390 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1lv8f_396 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n font-weight: 600;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._note_1lv8f_403 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._noteWarn_1lv8f_410 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1lv8f_414 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1lv8f_418 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._detailLabel_1lv8f_425 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1lv8f_425 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-3);\n font-family: var(--dsw-font-mono, monospace);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n._note_1enlz_1 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._note_1enlz_1 > svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n._slot_1t7dx_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1t7dx_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1t7dx_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1t7dx_31 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._paused_1t7dx_35 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._trouble_1t7dx_39 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._pulse_1t7dx_43 {\n animation: _wb-debug-breathe_1t7dx_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-debug-breathe_1t7dx_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1t7dx_43 {\n animation: none;\n }\n}\n\n._entry_1t7dx_64 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1t7dx_71 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1t7dx_78 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1t7dx_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: 0;\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n}\n\n._act_1t7dx_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1t7dx_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._actStop_1t7dx_110:hover,\n._actStop_1t7dx_110:focus-visible {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._actArmed_1t7dx_115,\n._actArmed_1t7dx_115:hover,\n._actArmed_1t7dx_115:focus-visible {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n width: auto;\n color: var(--dsw-alias-state-error-primary);\n gap: var(--wb-len-4);\n padding: 0 var(--wb-len-7);\n}\n\n._actLabel_1t7dx_125 {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._entryLine_1t7dx_131 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1t7dx_138 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1t7dx_150 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1t7dx_156 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1t7dx_162 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._slot_1gkj9_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1gkj9_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1gkj9_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1gkj9_31 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._done_1gkj9_35 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._pulse_1gkj9_39 {\n animation: _wb-record-breathe_1gkj9_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-record-breathe_1gkj9_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1gkj9_39 {\n animation: none;\n }\n}\n\n._entry_1gkj9_60 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1gkj9_67 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1gkj9_74 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1gkj9_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-22);\n padding: 0 var(--wb-len-7);\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._act_1gkj9_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1gkj9_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._entryLine_1gkj9_108 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1gkj9_115 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1gkj9_127 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1gkj9_133 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1gkj9_139 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._item_lyox9_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n}\n\n._item_lyox9_1 + ._item_lyox9_1 {\n padding-top: var(--wb-len-14);\n border-top: var(--wb-len-0-5) solid var(--dsw-alias-settings-card-stroke);\n}\n\n._head_lyox9_12 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._title_lyox9_19 {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._description_lyox9_31 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._rows_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._row_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-settings-card-stroke);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-settings-card-fill);\n}\n\n._head_85r3w_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._pick_85r3w_27 {\n flex: 0 1 auto;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._pick_85r3w_27 > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._code_85r3w_39 {\n --dsl-code-block-background: var(--dsw-alias-bg-layer-1);\n margin: 0;\n}\n\n._missing_85r3w_44,\n._conflict_85r3w_45 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-warn-primary);\n}\n._body_11oac_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._sources_11oac_7 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._sourcesLabel_11oac_14 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\nbutton._sourceOn_11oac_19 {\n border-color: var(--dsw-alias-brand-primary);\n}\n._sourceCount_11oac_22 {\n margin-left: var(--wb-len-4);\n font-variant-numeric: tabular-nums;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._reading_11oac_29 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._status_11oac_35 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failure_11oac_45 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n column-gap: var(--wb-len-10);\n row-gap: var(--wb-len-2);\n color: var(--dsw-alias-state-error-primary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n\n._failureTitle_11oac_55 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._failureHint_11oac_62 {\n grid-column: 1;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failureAction_11oac_67 {\n grid-column: 2;\n grid-row: 1;\n justify-self: end;\n}\n\n._foot_11oac_73 {\n display: flex;\n justify-content: flex-end;\n}\n._body_lox98_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._field_lox98_7 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._input_lox98_13 {\n width: 100%;\n}\n\n._label_lox98_17 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\n._hint_lox98_22 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._copy_lox98_28 {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-8) var(--wb-len-16);\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n._copy_lox98_28 legend {\n padding: 0;\n margin-bottom: var(--wb-len-6);\n}\n\n._actions_lox98_42 {\n display: flex;\n justify-content: flex-end;\n}\n\n._commandLabel_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n}\n\n._command_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow-wrap: anywhere;\n}\n._body_zi2j5_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._lead_zi2j5_7 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._title_zi2j5_14 {\n font-size: var(--wb-font-18);\n line-height: var(--wb-line-24);\n}\n._hint_zyzt3_1[hidden],\n._actions_zyzt3_2[hidden],\n._progress_zyzt3_3[hidden],\n._commandRow_zyzt3_4[hidden],\n._bridge_zyzt3_5[hidden],\n._raw_zyzt3_6[hidden] {\n display: none;\n}\n\n._gate_zyzt3_10 {\n position: fixed;\n inset: 0;\n z-index: var(--wb-z-top);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--wb-len-24);\n background: var(--dsw-alias-bg-base);\n}\n\n._card_zyzt3_21 {\n width: 100%;\n max-width: var(--wb-len-420);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-16);\n text-align: center;\n}\n\n._card_zyzt3_21:has(._actions_zyzt3_2:not([hidden])),\n._card_zyzt3_21:has(._bridge_zyzt3_5:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_zyzt3_36 {\n margin: 0;\n font-size: var(--dsw-font-base-16-font-size);\n line-height: var(--wb-line-24);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._steps_zyzt3_51 {\n list-style: none;\n margin: var(--wb-len-6) 0 0;\n padding: 0;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n text-align: left;\n}\n\n._step_zyzt3_51 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-6) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._step_zyzt3_51[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_zyzt3_78 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-14);\n height: var(--wb-len-14);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._step_zyzt3_51[data-status='ok'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_zyzt3_51[data-status='warn'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_zyzt3_51[data-status='failed'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_zyzt3_103 {\n flex: none;\n}\n\n._detail_zyzt3_107 {\n margin-left: auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._progress_zyzt3_3 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._elapsed_zyzt3_125 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._error_zyzt3_133 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n max-height: var(--wb-len-120);\n overflow: auto;\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n white-space: pre-wrap;\n word-break: break-all;\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._commandRow_zyzt3_4 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n margin: 0 0 var(--wb-len-8);\n padding-right: var(--wb-len-4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._copy_zyzt3_159 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._copy_zyzt3_159:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_zyzt3_4 {\n flex: 1;\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-primary);\n}\n\n._buttons_zyzt3_192 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_zyzt3_199 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n justify-content: center;\n background: var(--dsw-alias-bg-base);\n}\n\n._button_zyzt3_192 {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._button_zyzt3_192:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_zyzt3_192:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_zyzt3_2,\n._bridge_zyzt3_5 {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-14) var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-1);\n text-align: left;\n}\n\n._fixTitle_zyzt3_250 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._actions_zyzt3_2 ._hint_zyzt3_1,\n._bridge_zyzt3_5 ._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._actions_zyzt3_2 ._commandRow_zyzt3_4,\n._bridge_zyzt3_5 ._commandRow_zyzt3_4 {\n margin: 0;\n}\n\n._actions_zyzt3_2 ._buttons_zyzt3_192,\n._bridge_zyzt3_5 ._buttons_zyzt3_192 {\n justify-content: flex-start;\n}\n\n._raw_zyzt3_6 {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_zyzt3_286 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_zyzt3_2 ._error_zyzt3_133,\n._bridge_zyzt3_5 ._error_zyzt3_133 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_zyzt3_296 {\n margin: 0;\n padding-left: var(--wb-len-18);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._bridgeLine_zyzt3_296 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_zyzt3_313 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_zyzt3_313::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_zyzt3_313:hover {\n text-decoration: underline;\n}\n\n._loading_zyzt3_327 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_zyzt3_327[hidden] {\n display: none;\n}\n\n._loadingMotion_zyzt3_336 {\n transform-origin: center;\n animation: _wb-spin_zyzt3_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_zyzt3_341,\n._loadingArc_zyzt3_342 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_zyzt3_341 {\n opacity: 0.25;\n}\n\n._loadingArc_zyzt3_342 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_zyzt3_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_zyzt3_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_zyzt3_1 {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }\n to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._loadingMotion_zyzt3_336,\n ._loadingArc_zyzt3_342 {\n animation: none;\n }\n}\n._changelog_1q6pj_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-10);\n min-width: 0;\n}\n\n._changelogTitle_1q6pj_9 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._changelogMissing_1q6pj_15 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._changelogBody_1q6pj_21 {\n max-height: var(--wb-len-320);\n overflow: auto;\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n}\n._group_1hxis_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n}\n\n._button_1hxis_7 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n}\n\n._button_1hxis_7:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._active_1hxis_19 {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._icon_1hxis_23 {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._icon_1hxis_23 svg {\n display: block;\n width: var(--wb-len-15);\n height: var(--wb-len-15);\n}\n\n._mirror_1hxis_35 {\n transform: scaleX(-1);\n}\n._stripTabs_1dqp4_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n min-width: 0;\n overflow: hidden;\n}\n\n._tab_1dqp4_9 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: none;\n font: inherit;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-16);\n max-width: 100%;\n}\n\n._tabActive_1dqp4_25 {\n color: var(--dsw-alias-label-primary);\n}\n\n._tabQuiet_1dqp4_29 {\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._tabQuiet_1dqp4_29:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._tabTitle_1dqp4_39 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._sep_1dqp4_49 {\n flex: none;\n color: var(--dsw-alias-label-dimmed);\n}\n._actions_smeq7_1 {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--wb-len-8);\n max-width: 100%;\n}\n\n._action_smeq7_1 {\n flex: none;\n white-space: nowrap;\n}\n\n@container (max-width: 340px) {\n ._actions_smeq7_1 {\n flex-direction: column;\n width: var(--wb-len-220);\n max-width: 100%;\n }\n\n ._action_smeq7_1 {\n width: 100%;\n }\n}\n._trigger_15ptp_1 {\n display: flex;\n align-items: center;\n}\n\n._pop_15ptp_6 {\n position: absolute;\n top: calc(var(--wb-len-38) + var(--wb-len-8));\n right: var(--wb-len-6);\n z-index: var(--wb-z-30);\n width: min(var(--wb-len-360), calc(100% - var(--wb-len-12)));\n max-width: calc(100vw - var(--wb-len-48));\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-2);\n box-shadow: var(--dsw-shadow-lv3);\n overflow: hidden;\n}\n\n._head_15ptp_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10) var(--wb-len-12) var(--wb-len-9) var(--wb-len-14);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._title_15ptp_28 {\n flex: 1;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._rowControls_15ptp_36 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._reset_15ptp_43 {\n flex: none;\n padding: var(--wb-len-3) var(--wb-len-8);\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._reset_15ptp_43:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_15ptp_43:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_15ptp_65 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._row_15ptp_36 {\n position: relative;\n display: grid;\n grid-template-columns: 12px minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-sm);\n cursor: default;\n}\n\n._rowDragging_15ptp_85 {\n cursor: grabbing;\n}\n\n._rowBlocked_15ptp_89 {\n cursor: not-allowed;\n}\n\n._listDragging_15ptp_93 ._rowControls_15ptp_36 {\n pointer-events: none;\n}\n\n._row_15ptp_36:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOff_15ptp_101 {\n opacity: 0.55;\n}\n\n._rowOff_15ptp_101:hover {\n opacity: 1;\n}\n\n._rowOver_15ptp_109::before {\n content: '';\n position: absolute;\n top: var(--wb-len-neg-3);\n left: var(--wb-len-8);\n right: var(--wb-len-8);\n height: var(--wb-len-2);\n background: var(--dsw-alias-brand-primary);\n}\n\n._ghost_15ptp_119 {\n position: fixed;\n z-index: var(--wb-z-40);\n pointer-events: none;\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--wb-static-shadow-ghost);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n}\n\n._grip_15ptp_134 {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: center;\n color: var(--dsw-alias-label-tertiary);\n user-select: none;\n cursor: grab;\n touch-action: none;\n}\n\n._gripDragging_15ptp_144 {\n cursor: grabbing;\n}\n\n._gripBlocked_15ptp_148 {\n cursor: not-allowed;\n}\n\n._label_15ptp_152 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_15ptp_159 {\n min-width: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n\n._error_15ptp_170 {\n margin: 0;\n padding: 0 var(--wb-len-14) var(--wb-len-10);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._dep_15ptp_178 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n}\n\n._group_15ptp_186 {\n padding-top: var(--wb-len-6);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._groupTitle_15ptp_191 {\n margin: 0;\n padding: var(--wb-len-2) var(--wb-len-8) 0 var(--wb-len-14);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n font-weight: 400;\n color: var(--dsw-alias-label-tertiary);\n}\n._panel_1whum_1 {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: var(--wb-z-10);\n visibility: hidden;\n}\n\n._panel_1whum_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1whum_1[data-open] {\n visibility: visible;\n}\n\n._columns_1whum_18 {\n display: block;\n column-gap: var(--wb-len-12);\n}\n\n._cell_1whum_23 {\n display: flow-root;\n min-width: 0;\n break-inside: avoid;\n margin-bottom: var(--wb-len-12);\n}\n._root_1cmz0_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._rail_1cmz0_7 {\n margin: 0 0 var(--wb-len-4);\n}\n\n._glyphBox_1cmz0_11 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n._glyph_1cmz0_11 {\n position: relative;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._glyphActive_1cmz0_30 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1cmz0_34 {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n._dir_1cmz0_45 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1cmz0_53 {\n flex: 0 1 auto;\n max-width: 50%;\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._triggerName_1cmz0_34 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._row_1cmz0_66 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1cmz0_74 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n margin-inline-start: auto;\n}\n\n._trailing_1cmz0_74 ._rowAction_1cmz0_84 {\n width: var(--wb-len-20);\n min-width: var(--wb-len-20);\n height: var(--wb-len-20);\n min-height: var(--wb-len-20);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n}\n\n._row_1cmz0_66 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1cmz0_97 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n._dot_sosf1_1 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n._overlay_sosf1_8 {\n position: absolute;\n inset-block-start: var(--wb-len-neg-3);\n inset-inline-end: var(--wb-len-neg-3);\n}\n._tag_g9dg8_1 {\n flex: none;\n margin-inline-start: auto;\n}\n._dialog_1vye5_1 {\n width: min(var(--wb-len-420), 100%);\n}\n\n._stack_1vye5_5 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._input_1vye5_12 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-12);\n}\n\n._meta_1vye5_18 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n._dot_14w1n_1 {\n display: inline-flex;\n align-items: center;\n}\n\n._hover_14w1n_6 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._blocker_1oaj0_1 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-20) var(--wb-len-16);\n text-align: center;\n}\n\n._icon_1oaj0_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_1oaj0_15 {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_1oaj0_23 {\n margin: 0;\n max-width: var(--wb-len-42em);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n text-wrap: pretty;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 {\n align-items: flex-start;\n gap: var(--wb-len-6);\n padding: var(--wb-len-4) 0 var(--wb-len-2);\n text-align: left;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._title_1oaj0_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._hint_1oaj0_23 {\n max-width: 100%;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._actions_1oaj0_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._raw_1oaj0_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_1oaj0_48 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-6);\n}\n\n._raw_1oaj0_52 {\n margin-top: var(--wb-len-10);\n width: 100%;\n max-width: var(--wb-len-360);\n text-align: left;\n}\n\n._notice_1oaj0_71 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--wb-len-10);\n margin: 0 0 var(--wb-len-10);\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-left: 2px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._notice_1oaj0_71._noticeFlat_1oaj0_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_1oaj0_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_1oaj0_98 {\n font-size: var(--wb-font-12-5);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._noticeHint_1oaj0_105 {\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._noticeActions_1oaj0_112 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-neg-2);\n}\n\n._failure_1oaj0_119 {\n margin: var(--wb-len-8) 0 0;\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._failureDetail_1oaj0_127 {\n display: block;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-label-tertiary);\n white-space: pre-wrap;\n}\n\n._inlineAction_1oaj0_134 {\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n._inlineAction_1oaj0_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n._rawText_1oaj0_146 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
15641
16245
  function workbenchCss() {
15642
16246
  return `${tokens_default}\n${palette_default}\n${scale_default}\n${sidebar_default}\n${sidebar_app_default}\n${rightbar_default}\n${chrome_default}\n${board_default}\n${motion_default}\n${COMPONENT_CSS_MARKER}`;
15643
16247
  }
@@ -15886,7 +16490,7 @@ window.__ModuleLoader__.load({
15886
16490
  inject: () => ({
15887
16491
  t: ctx.locale.bind(LOCALE_NS),
15888
16492
  units: units.all(),
15889
- renderShell: shellApprovalDetail
16493
+ renderShell: shellApprovalRenderer(units.declared)
15890
16494
  })
15891
16495
  }, ApprovalDetail));
15892
16496
  ctx.slots.inject("conversation.session.header.corner", () => ctx.slots.register({