@dsh-workbench/core 1.1.4 → 1.1.6

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 (48) hide show
  1. package/client.js +1298 -510
  2. package/dist/client/client.body.js +1298 -510
  3. package/dist/client/index.js +1160 -372
  4. package/dist/host/index.js +1151 -255
  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 +10 -1
  8. package/dist/types/app/layouts/market/market-header.d.ts +3 -1
  9. package/dist/types/app/layouts/market/section-check.d.ts +12 -0
  10. package/dist/types/app/layouts/market/use-market-reload.d.ts +14 -0
  11. package/dist/types/app/layouts/market/use-module-versions.d.ts +20 -4
  12. package/dist/types/app/layouts/rightbar/AskAgentButton.d.ts +6 -0
  13. package/dist/types/app/layouts/rightbar/FailureCard.d.ts +8 -0
  14. package/dist/types/app/layouts/rightbar/MarketView.d.ts +6 -3
  15. package/dist/types/app/layouts/rightbar/SharedSection.d.ts +5 -2
  16. package/dist/types/app/layouts/rightbar/failure-card-text.d.ts +20 -0
  17. package/dist/types/app/layouts/rightbar/market-act.d.ts +2 -5
  18. package/dist/types/app/layouts/rightbar/market-change.d.ts +1 -0
  19. package/dist/types/app/layouts/rightbar/market-hint.d.ts +2 -0
  20. package/dist/types/app/layouts/rightbar/market-install.d.ts +11 -0
  21. package/dist/types/app/layouts/rightbar/market-row-types.d.ts +9 -1
  22. package/dist/types/app/layouts/rightbar/market-rows.d.ts +14 -1
  23. package/dist/types/app/layouts/rightbar/market-section.d.ts +5 -3
  24. package/dist/types/app/layouts/rightbar/market-transient-state.d.ts +3 -8
  25. package/dist/types/app/layouts/rightbar/market-uninstall.d.ts +10 -0
  26. package/dist/types/app/layouts/rightbar/market-update-verdict.d.ts +2 -0
  27. package/dist/types/app/layouts/rightbar/market-view-text.d.ts +2 -0
  28. package/dist/types/kernel/client/registry.d.ts +1 -0
  29. package/dist/types/kernel/contract/bundle-install.d.ts +1 -1
  30. package/dist/types/kernel/contract/market-index.d.ts +1 -1
  31. package/dist/types/modules/panels/model/market-env.d.ts +2 -2
  32. package/dist/types/modules/panels/model/market-install-error.d.ts +3 -0
  33. package/dist/types/modules/panels/model/market-install-error.test.d.ts +1 -0
  34. package/dist/types/modules/panels/model/market-registry.d.ts +2 -1
  35. package/dist/types/modules/panels/model/market-remove.d.ts +13 -0
  36. package/dist/types/modules/panels/model/market-remove.test.d.ts +1 -0
  37. package/dist/types/modules/panels/model/market-route.d.ts +1 -1
  38. package/dist/types/modules/panels/model/market-swap-stuck.d.ts +20 -0
  39. package/dist/types/modules/panels/model/market-swap-stuck.test.d.ts +1 -0
  40. package/dist/types/modules/panels/model/market-types.d.ts +3 -0
  41. package/dist/types/modules/panels/model/market-update-bundle.d.ts +5 -0
  42. package/dist/types/modules/panels/model/market.d.ts +1 -0
  43. package/dist/types/modules/panels/model/plugin-actions.d.ts +1 -1
  44. package/dist/types/shared/api/host/self-update-marker.d.ts +5 -0
  45. package/dist/types/shared/api/host/self-update-marker.test.d.ts +1 -0
  46. package/package.json +3 -3
  47. package/skills/workbench-module-diy/TOOLS.md +11 -2
  48. package/skills/workbench-module-diy/WIRING.md +2 -1
@@ -1,4 +1,4 @@
1
- import { Button, Checkbox, CodeBlock, DiffBlock, DisclosureRow, HoverCard, IconCheckCircleFillRegular, IconCheckOutlineRegular, IconChevronDownOutlineRegular, IconCloseOutlineRegular, IconCodeOutlineRegular, IconCordisPluginOutlineRegular, IconDownloadOutlineRegular, IconEditOutlineRegular, IconEllipsisOutlineRegular, IconFlatListOutlineRegular, IconFolderCloseRegular, IconFolderOpenRegular, IconInfoOutlineRegular, IconLinkOutlineRegular, IconNewChatOutlineRegular, IconPanelLeftOutlineRegular, IconPauseOutlineRegular, IconPinFillRegular, IconPlayOutlineRegular, IconPlusOutlineRegular, IconRefreshOutlineRegular, IconRightUpOutlineRegular, IconSearchOutlineRegular, IconSettingsOutlineRegular, IconSlidersTwoOutlineRegular, IconStopFillRegular, IconTrashOutlineRegular, IconWarningOutlineRegular, Input, MarkdownText, Menu, Modal, Pill, PluginArtworkDefault, RiskConfirmation, SegmentedTabs, StateDot, Switch, Tag, TextShimmer, Tooltip, useAnchoredPosition, useDismissOnOutsidePointer, writeClipboard } from "@deepseek-ai/dsh-client-ui-primitives";
1
+ import { Button, Checkbox, CodeBlock, DiffBlock, DisclosureRow, HoverCard, IconCheckCircleFillRegular, IconCheckOutlineRegular, IconChevronDownOutlineRegular, IconCloseOutlineRegular, IconCodeOutlineRegular, IconCordisPluginOutlineRegular, IconDownloadOutlineRegular, IconEditOutlineRegular, IconEllipsisOutlineRegular, IconFlatListOutlineRegular, IconFolderCloseRegular, IconFolderOpenRegular, IconInfoOutlineRegular, IconLinkOutlineRegular, IconNewChatOutlineRegular, IconPanelLeftOutlineRegular, IconPauseOutlineRegular, IconPinFillRegular, IconPlayOutlineRegular, IconPlusOutlineRegular, IconRefreshOutlineRegular, IconRightUpOutlineRegular, IconSearchOutlineRegular, IconSettingsOutlineRegular, IconSlidersTwoOutlineRegular, IconStopFillRegular, IconTrashOutlineRegular, IconWarningOutlineRegular, Input, MarkdownText, Menu, Modal, Pill, PluginArtworkDefault, RiskConfirmation, SegmentedTabs, StateDot, Switch, Tag, TerminalBlock, TextShimmer, Tooltip, useAnchoredPosition, useDismissOnOutsidePointer, writeClipboard } from "@deepseek-ai/dsh-client-ui-primitives";
2
2
  import { Fragment, createElement, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
3
3
  //#region \0rolldown/runtime.js
4
4
  var __create = Object.create;
@@ -726,6 +726,10 @@ var STORAGE_KEY_RIGHTBAR = "dsh-workbench.rightbar.expanded";
726
726
  var STORAGE_KEY_RIGHTBAR_COLUMN = "dsh-workbench.rightbar.column";
727
727
  /** 记住右栏宽度(像素数字的字符串)的 localStorage 键。 */
728
728
  var STORAGE_KEY_RIGHTBAR_WIDTH = "dsh-workbench.rightbar.width";
729
+ /** 记住「添加模块」浮层选过的安装源的 localStorage 键。 */
730
+ var STORAGE_KEY_MARKET_REGISTRY = "dsh-workbench.market.registry";
731
+ /** 记住「添加模块」浮层上次填过的自定义源地址的 localStorage 键。 */
732
+ var STORAGE_KEY_MARKET_REGISTRY_CUSTOM = "dsh-workbench.market.registry.custom";
729
733
  /** dsh i18n 的命名空间:词表都注册在它下面,`ctx.locale.register` / `bind` 按它取。 */
730
734
  var LOCALE_NS = "workbench";
731
735
  //#endregion
@@ -2530,6 +2534,12 @@ function writeText(key, value) {
2530
2534
  else window.localStorage.setItem(key, value);
2531
2535
  } catch {}
2532
2536
  }
2537
+ //#endregion
2538
+ //#region ../shared/dist/contract/approval.js
2539
+ /**
2540
+ * agent 自己那句"这次想干什么"的参数名:插件命令族必填,审批屏把它画在详情座里,不进标题。
2541
+ */
2542
+ var APPROVAL_NOTE_ARG = "approval_note";
2533
2543
  /**
2534
2544
  * 判一个名字是不是范围查法,不是问这条事实存不存在。
2535
2545
  * @param name 事实名或范围名。
@@ -2753,9 +2763,13 @@ function supplyNeedsOf(manifest) {
2753
2763
  }
2754
2764
  //#endregion
2755
2765
  //#region ../shared/dist/contract/needs.js
2766
+ var REGISTRY_PATTERN = /^(?:https?|file):\/\//;
2756
2767
  function text(value) {
2757
2768
  return typeof value === "string" ? value.trim() : "";
2758
2769
  }
2770
+ function isRecord(value) {
2771
+ return typeof value === "object" && value !== null && !Array.isArray(value);
2772
+ }
2759
2773
  /**
2760
2774
  * 一条 need 的稳定标识:作者写 `id` 就用它,否则 `kind:name`。
2761
2775
  * @param need 一条 need。
@@ -2764,11 +2778,40 @@ function text(value) {
2764
2778
  function needIdOf(need) {
2765
2779
  return need.id === void 0 || need.id.trim() === "" ? `${need.kind}:${need.name}` : need.id;
2766
2780
  }
2781
+ function binInstallProblemsOf(raw, at) {
2782
+ if (raw === void 0) return [];
2783
+ if (!isRecord(raw)) return [`${at}.install 要是对象`];
2784
+ const errors = [];
2785
+ for (const key of Object.keys(raw)) if (![
2786
+ "kind",
2787
+ "line",
2788
+ "platforms",
2789
+ "package",
2790
+ "registryEnv",
2791
+ "registryDefault"
2792
+ ].includes(key)) errors.push(`${at}.install 有不认识的字段 ${key}`);
2793
+ const kind = text(raw["kind"]);
2794
+ if (kind !== "command" && kind !== "npm") errors.push(`${at}.install.kind 只认 command(一条命令)或 npm(一个包,装进隔离运行时)`);
2795
+ if (kind === "command" && text(raw["line"]) === "") errors.push(`${at}.install.line 没写 —— 要一条能直接粘进终端的命令`);
2796
+ if (kind === "npm" && text(raw["package"]) === "") errors.push(`${at}.install.package 没写 —— 这个命令由哪个 npm 包提供`);
2797
+ if (raw["registryDefault"] !== void 0 && !REGISTRY_PATTERN.test(text(raw["registryDefault"]))) errors.push(`${at}.install.registryDefault 要是 http(s):// 或 file:// 的源地址`);
2798
+ if (raw["platforms"] !== void 0) {
2799
+ if (!Array.isArray(raw["platforms"]) || raw["platforms"].length === 0) errors.push(`${at}.install.platforms 要是非空数组`);
2800
+ else if (raw["platforms"].some((one) => ![
2801
+ "darwin",
2802
+ "linux",
2803
+ "win32"
2804
+ ].includes(text(one)))) errors.push(`${at}.install.platforms 只认 darwin / linux / win32`);
2805
+ }
2806
+ return errors;
2807
+ }
2767
2808
  function perKindProblemsOf(kind, raw, at) {
2768
2809
  const errors = [];
2769
2810
  if (kind === "bin" || kind === "lib" || kind === "env") {
2770
2811
  if (text(raw["name"]) === "") errors.push(`${at}.name 没写`);
2771
2812
  }
2813
+ if (kind === "bin") errors.push(...binInstallProblemsOf(raw["install"], at));
2814
+ if (raw["docs"] !== void 0 && text(raw["docs"]) === "") errors.push(`${at}.docs 是空串`);
2772
2815
  if (kind === "extension") {
2773
2816
  if (text(raw["runtime"]) === "") errors.push(`${at}.runtime 没写 —— 扩展属于哪个运行时(如 opencli)`);
2774
2817
  if (text(raw["name"]) === "") errors.push(`${at}.name 没写`);
@@ -3082,11 +3125,14 @@ var en = {
3082
3125
  "panels.market.update": "Update",
3083
3126
  "panels.market.swapSlow": "Not swapped yet — maybe a slow or failed download. Press Update again; if it stays like this, restart dsh.",
3084
3127
  "panels.market.removeSlow": "Not removed yet — maybe a slow network or an uninstall that did not finish. Check again in a moment; if it stays like this, restart dsh.",
3085
- "panels.market.updateNoChange": "Update failed: still {from}. The newest on the registry is {latest} — press Update again.",
3128
+ "panels.market.updateNoChange": "Update did not swap in: still {from}; the registry has {latest}.",
3086
3129
  "panels.market.updateUnknownVersion": "(unknown)",
3087
3130
  "panels.market.updateGone": "Update failed: the module is gone after the update.",
3088
3131
  "panels.market.updateRestored": "Update failed: the new version could not be found after the update, so {version} was put back.",
3089
- "panels.market.updateBehind": "Installed {installed}, but the newest on the registry is {latest} — not the latest; you can update once more.",
3132
+ "panels.market.updateBehind": "Installed {installed}, but the registry has {latest}.",
3133
+ "panels.market.updateStuck.title": "Update did not swap in",
3134
+ "panels.market.updateStuck.factNoChange": "Still {from} on disk; the registry has {latest}.",
3135
+ "panels.market.updateStuck.copiedHint": "Paste it into a terminal, then restart the workbench once.",
3090
3136
  "panels.market.selfUpdateFailed": "Workbench update failed: {reason}",
3091
3137
  "panels.market.selfUpdateUnknown": "the outside process left no reason (see ~/.dsh/workbench/self-update.log)",
3092
3138
  "panels.market.selfUpdateRolledBack": "Workbench update failed; rolled back to {version}.",
@@ -3102,6 +3148,40 @@ var en = {
3102
3148
  "panels.market.confirmNo": "Cancel",
3103
3149
  "panels.market.noMarketSource": "The index has no newer version of this module (refresh the index and retry)",
3104
3150
  "panels.market.failed": "Failed: {reason}",
3151
+ "panels.market.askAgent": "Ask the agent",
3152
+ "panels.market.askAgentCopied": "Copied",
3153
+ "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.",
3154
+ "panels.market.failure.permission": "Didn't install: no write access",
3155
+ "panels.market.failure.diskFull": "Didn't install: the disk is full",
3156
+ "panels.market.failure.sandbox": "Didn't install: the system blocked it",
3157
+ "panels.market.failure.unknown": "Didn't install: cause not recognised",
3158
+ "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).",
3159
+ "panels.market.failure.factMode": "{path} is mode {mode}, so this account cannot write to it.",
3160
+ "panels.market.failure.factSpace": "The disk holding {path} is full.",
3161
+ "panels.market.failure.factStuck": "This command ran in a restricted environment and cannot write to {path}.",
3162
+ "panels.market.failure.nowhere": "(the directory was not identified)",
3163
+ "panels.market.failure.copyFix": "Copy the fix command",
3164
+ "panels.market.failure.copied": "Copied",
3165
+ "panels.market.failure.copiedHint": "Paste it in a terminal, run it, then click Check again.",
3166
+ "panels.market.failure.askAgent": "Copy for the agent",
3167
+ "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.",
3168
+ "panels.market.failure.askAgentHint": "Paste it into the chat and let the agent carry on.",
3169
+ "panels.market.failure.recheck": "Check again",
3170
+ "panels.market.failure.showOutput": "Show install output",
3171
+ "panels.market.failure.hideOutput": "Hide install output",
3172
+ "panels.market.failure.term.commandLine": "command on line {line}",
3173
+ "panels.market.failure.term.signal": "killed by {signal}",
3174
+ "panels.market.failure.term.exitCode": "exit code {exitCode}",
3175
+ "panels.market.failure.term.noExitCode": "no exit code",
3176
+ "panels.market.failure.term.running": "running",
3177
+ "panels.market.failure.term.failed": "failed",
3178
+ "panels.market.failure.term.done": "done",
3179
+ "panels.market.failure.term.copy": "Copy",
3180
+ "panels.market.failure.term.copied": "Copied",
3181
+ "panels.market.failure.term.noOutput": "No output",
3182
+ "panels.market.failure.term.collapse": "Collapse",
3183
+ "panels.market.failure.term.expandAria": "Show the remaining {hidden} lines",
3184
+ "panels.market.failure.term.expand": "Show {hidden} lines",
3105
3185
  "panels.market.needEnv": "Set {env} in the terminal that started the workbench first",
3106
3186
  "panels.market.needCommands": "Missing commands: {commands}",
3107
3187
  "panels.market.needBinary": "Install the {command} command first",
@@ -3138,9 +3218,13 @@ var en = {
3138
3218
  "panels.market.restartNeeded": "The new version is installed — restart once to pick it up.",
3139
3219
  "panels.market.foot": "After installing, enable it in the panel page of that project.",
3140
3220
  "panels.market.checkUpdates": "Check for updates",
3221
+ "panels.market.checkAll": "Check all updates",
3141
3222
  "panels.market.checkingNow": "Checking…",
3142
3223
  "panels.market.checkFailed": "The last check failed. Check your connection and retry.",
3143
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",
3144
3228
  "panels.market.justNow": "just now",
3145
3229
  "panels.market.minutesAgo": "{n} min ago",
3146
3230
  "panels.market.hoursAgo": "{n} h ago",
@@ -3199,6 +3283,8 @@ var en = {
3199
3283
  "panels.market.add.failurePermission": "No write permission, cannot install",
3200
3284
  "panels.market.add.failureBuildBlocked": "A dependency wants to run install scripts; you have to allow it first",
3201
3285
  "panels.market.add.failureIntegrity": "The downloaded package failed its integrity check",
3286
+ "panels.market.add.failureStopProfile": "The old copy is still in use (the workbench has this module loaded), so this dsh version will not overwrite it in place.",
3287
+ "panels.market.add.failureCancelled": "This run was cancelled and nothing changed.",
3202
3288
  "panels.market.add.failureTimeout": "The install timed out",
3203
3289
  "panels.market.add.failurePnpmMissing": "pnpm was not found, cannot install",
3204
3290
  "panels.market.add.failureInstalled": "It is already installed in this workbench. The same package cannot be installed over itself: uninstall it first, then install again. The uninstall did not succeed this time.",
@@ -3282,7 +3368,7 @@ var en = {
3282
3368
  "panels.discover.missingIndex": "This repository has no {path} yet.",
3283
3369
  "panels.discover.initTitle": "Initialize this repository as a module market index?",
3284
3370
  "panels.discover.initCta": "Initialize market index",
3285
- "panels.discover.initWhat": "It will write market.json and README.md on {branch}, commit once, and push. Modules you publish from this workbench will commit their build files under packages/<package-name>/. The repository stays owned by its owner.",
3371
+ "panels.discover.initWhat": "It will write the index directory market/ and README.md on {branch}, commit once, and push. Modules you publish from this workbench will commit their build files under artifacts/<package-name>/<version>/ and their entry under market/<package-name>/<version>.json. The repository stays owned by its owner.",
3286
3372
  "panels.discover.initBranch": "Branch",
3287
3373
  "panels.discover.initBranchHint": "The index and build files go to this branch; an empty repository gets it created.",
3288
3374
  "panels.discover.initBranchBad": "Use only letters, digits, dots, underscores, slashes, or dashes in a branch name.",
@@ -3605,6 +3691,9 @@ var en = {
3605
3691
  "approval.record.noSwitch": "it will not switch you back (the leftbar footer shows the state)",
3606
3692
  "approval.longTask.what": "Task to stop",
3607
3693
  "approval.longTask.signal": "stopping only sends an interrupt signal — wrapping up the run is up to the module",
3694
+ "approval.plugin.name": "Plugin",
3695
+ "approval.plugin.command": "Command",
3696
+ "approval.plugin.note": "Agent says",
3608
3697
  "approval.publish.module": "Module",
3609
3698
  "approval.publish.target": "Target",
3610
3699
  "approval.publish.version": "Version",
@@ -3624,7 +3713,7 @@ var en = {
3624
3713
  "approval.publish.artifacts": "Build files",
3625
3714
  "approval.publish.index": "Index",
3626
3715
  "approval.publish.commits": "Commits",
3627
- "approval.publish.twoCommits": "build files + market.json in 2 commits, one push",
3716
+ "approval.publish.twoCommits": "build files + entry file in 2 commits, one push",
3628
3717
  "approval.publish.reading": "Reading…",
3629
3718
  "approval.publish.changelog": "Changelog for {version}",
3630
3719
  "approval.publish.changelogPending": "This release writes the {version} changelog entry",
@@ -3782,11 +3871,14 @@ var dictionaries = {
3782
3871
  "panels.market.update": "更新",
3783
3872
  "panels.market.swapSlow": "还没换上:可能网慢或没装上。再点一次「更新」;一直这样就把 dsh 重启一遍。",
3784
3873
  "panels.market.removeSlow": "还没卸掉:可能网慢或卸载没走完。等一下再看;一直这样就把 dsh 重启一遍。",
3785
- "panels.market.updateNoChange": "更新失败:还是 {from};源上最新是 {latest},可以再点一次「更新」。",
3874
+ "panels.market.updateNoChange": "更新没换上:还是 {from};源上最新是 {latest}。",
3786
3875
  "panels.market.updateUnknownVersion": "(问不到)",
3787
3876
  "panels.market.updateGone": "更新失败:更新后找不到这个模块。",
3788
3877
  "panels.market.updateRestored": "更新失败:更新后找不到新版本,已把 {version} 装回去。",
3789
- "panels.market.updateBehind": "装上了 {installed},但源上最新是 {latest} —— 没更到最新,可以再点一次。",
3878
+ "panels.market.updateBehind": "装上了 {installed},但源上最新是 {latest}。",
3879
+ "panels.market.updateStuck.title": "更新没换上",
3880
+ "panels.market.updateStuck.factNoChange": "盘上还是 {from};源上最新是 {latest}。",
3881
+ "panels.market.updateStuck.copiedHint": "粘到终端跑一次,跑完重启一次工作台。",
3790
3882
  "panels.market.selfUpdateFailed": "工作台更新失败:{reason}",
3791
3883
  "panels.market.selfUpdateUnknown": "外部进程没留下原因(看 ~/.dsh/workbench/self-update.log)",
3792
3884
  "panels.market.selfUpdateRolledBack": "工作台更新失败,已回滚到 {version}。",
@@ -3802,6 +3894,40 @@ var dictionaries = {
3802
3894
  "panels.market.confirmNo": "取消",
3803
3895
  "panels.market.noMarketSource": "索引里没有这个模块的新版本(刷新一次索引再试)",
3804
3896
  "panels.market.failed": "没成功:{reason}",
3897
+ "panels.market.askAgent": "问 agent",
3898
+ "panels.market.askAgentCopied": "已复制",
3899
+ "panels.market.askAgentText": "工作台里「{name}」(单元 {unit})用不了:{reason}。帮我查清缺什么、怎么补,补完确认真能用。",
3900
+ "panels.market.failure.permission": "没装上:没有写入权限",
3901
+ "panels.market.failure.diskFull": "没装上:磁盘满了",
3902
+ "panels.market.failure.sandbox": "没装上:被系统拦住了",
3903
+ "panels.market.failure.unknown": "没装上:原因没认出来",
3904
+ "panels.market.failure.factOwner": "{path} 属于 {owner},当前账号({me})写不进去。把它还给自己就行(会要开机密码)。",
3905
+ "panels.market.failure.factMode": "{path} 的权限是 {mode},当前账号没有写权限。",
3906
+ "panels.market.failure.factSpace": "{path} 所在的磁盘满了。",
3907
+ "panels.market.failure.factStuck": "这条命令跑在受限环境里,写不进 {path}。",
3908
+ "panels.market.failure.nowhere": "(没认出是哪个目录)",
3909
+ "panels.market.failure.copyFix": "复制修复命令",
3910
+ "panels.market.failure.copied": "已复制",
3911
+ "panels.market.failure.copiedHint": "粘到终端跑一次,回来点「再检测」。",
3912
+ "panels.market.failure.askAgent": "复制给 agent",
3913
+ "panels.market.failure.askAgentText": "装这个模块时写不进去:`{command}` 退出码 {code},卡在 {path}。帮我看看是被沙箱拦的还是权限问题,换一条能写进去的路再装。",
3914
+ "panels.market.failure.askAgentHint": "粘到对话里,让 agent 接着弄。",
3915
+ "panels.market.failure.recheck": "再检测",
3916
+ "panels.market.failure.showOutput": "查看安装输出",
3917
+ "panels.market.failure.hideOutput": "收起安装输出",
3918
+ "panels.market.failure.term.commandLine": "第 {line} 行的命令",
3919
+ "panels.market.failure.term.signal": "被 {signal} 终止",
3920
+ "panels.market.failure.term.exitCode": "退出码 {exitCode}",
3921
+ "panels.market.failure.term.noExitCode": "没有退出码",
3922
+ "panels.market.failure.term.running": "在跑",
3923
+ "panels.market.failure.term.failed": "没跑通",
3924
+ "panels.market.failure.term.done": "跑完了",
3925
+ "panels.market.failure.term.copy": "复制",
3926
+ "panels.market.failure.term.copied": "已复制",
3927
+ "panels.market.failure.term.noOutput": "没有输出",
3928
+ "panels.market.failure.term.collapse": "收起",
3929
+ "panels.market.failure.term.expandAria": "展开剩下的 {hidden} 行",
3930
+ "panels.market.failure.term.expand": "展开 {hidden} 行",
3805
3931
  "panels.market.needEnv": "先在启动工作台的终端里设 {env}",
3806
3932
  "panels.market.needCommands": "缺这几条命令:{commands}",
3807
3933
  "panels.market.needBinary": "先装 {command} 命令",
@@ -3838,9 +3964,13 @@ var dictionaries = {
3838
3964
  "panels.market.restartNeeded": "新版装好了,重启一次才生效。",
3839
3965
  "panels.market.foot": "装好后到那个项目的面板页勾选它,模块才会出现。",
3840
3966
  "panels.market.checkUpdates": "检查更新",
3967
+ "panels.market.checkAll": "检查全部更新",
3841
3968
  "panels.market.checkingNow": "正在检查…",
3842
3969
  "panels.market.checkFailed": "最近一次没查到,检查网络后重试",
3843
3970
  "panels.market.checkedAt": "最近检查:{time}",
3971
+ "panels.market.latestPartial": "{n} 个模块没查成",
3972
+ "panels.market.latestNoRegistry": "没配来源,未检查新版",
3973
+ "panels.market.latestProbeFailed": "问不到源,稍后重试",
3844
3974
  "panels.market.justNow": "刚刚",
3845
3975
  "panels.market.minutesAgo": "{n} 分钟前",
3846
3976
  "panels.market.hoursAgo": "{n} 小时前",
@@ -3899,6 +4029,8 @@ var dictionaries = {
3899
4029
  "panels.market.add.failurePermission": "没有写入权限,无法安装",
3900
4030
  "panels.market.add.failureBuildBlocked": "有依赖的安装脚本需要你允许后才能继续",
3901
4031
  "panels.market.add.failureIntegrity": "下载的安装包校验失败",
4032
+ "panels.market.add.failureStopProfile": "旧版还在用着(工作台正加载这个模块),这一版 dsh 不肯就地覆盖。",
4033
+ "panels.market.add.failureCancelled": "这次操作被取消了,什么都没动。",
3902
4034
  "panels.market.add.failureTimeout": "安装超时",
3903
4035
  "panels.market.add.failurePnpmMissing": "没有找到 pnpm,无法安装",
3904
4036
  "panels.market.add.failureInstalled": "它已经装在这份工作台里了。同一个包不能就地覆盖,得先卸载再装;这次卸载也没成功。",
@@ -3982,7 +4114,7 @@ var dictionaries = {
3982
4114
  "panels.discover.missingIndex": "仓库里还没有索引文件 {path}",
3983
4115
  "panels.discover.initTitle": "把这个仓库初始化成模块市场索引?",
3984
4116
  "panels.discover.initCta": "初始化成市场索引",
3985
- "panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把打包好的文件提交到按包名分的 packages/<包名>/。仓库的写权限归它的所有者。",
4117
+ "panels.discover.initWhat": "会在 {branch} 分支写索引目录 market/ 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把打包好的文件提交到 artifacts/<包名>/<版本>/,条目写到 market/<包名>/<版本>.json。仓库的写权限归它的所有者。",
3986
4118
  "panels.discover.initBranch": "分支",
3987
4119
  "panels.discover.initBranchHint": "索引和打包文件都发到这个分支;空仓库会新建它。",
3988
4120
  "panels.discover.initBranchBad": "分支名只能用字母、数字、点、下划线、斜杠或短横线",
@@ -4305,6 +4437,9 @@ var dictionaries = {
4305
4437
  "approval.record.noSwitch": "录完不会替你切回来(左栏底部会亮一条状态)",
4306
4438
  "approval.longTask.what": "要停的那次任务",
4307
4439
  "approval.longTask.signal": "停了只是让工作台发出中断信号 —— 这次任务怎么收尾由模块自己负责",
4440
+ "approval.plugin.name": "插件",
4441
+ "approval.plugin.command": "命令",
4442
+ "approval.plugin.note": "agent 说",
4308
4443
  "approval.publish.module": "模块",
4309
4444
  "approval.publish.target": "目标",
4310
4445
  "approval.publish.version": "版本",
@@ -4324,7 +4459,7 @@ var dictionaries = {
4324
4459
  "approval.publish.artifacts": "打包文件",
4325
4460
  "approval.publish.index": "索引",
4326
4461
  "approval.publish.commits": "提交",
4327
- "approval.publish.twoCommits": "打包文件 + market.json 两次提交,一次推送",
4462
+ "approval.publish.twoCommits": "打包文件 + 条目文件两次提交,一次推送",
4328
4463
  "approval.publish.reading": "读取中…",
4329
4464
  "approval.publish.changelog": "{version} 的更新日志",
4330
4465
  "approval.publish.changelogPending": "{version} 这一版会写进更新日志,随包发布",
@@ -4676,6 +4811,33 @@ function IconModules({ size = 16 }) {
4676
4811
  }));
4677
4812
  }
4678
4813
  //#endregion
4814
+ //#region src/shared/api/unit-board.ts
4815
+ function gateOf(capability, mode) {
4816
+ if (mode === "none") return { gated: true };
4817
+ if (capability === null) return { gated: true };
4818
+ return { gated: capability.status === "ok" || capability.status === "unchecked" };
4819
+ }
4820
+ function splitBlocker(candidates) {
4821
+ let blocker;
4822
+ let notice;
4823
+ for (const candidate of candidates) {
4824
+ if (candidate === void 0) continue;
4825
+ if (candidate.severity === "block") {
4826
+ blocker ??= candidate;
4827
+ continue;
4828
+ }
4829
+ notice ??= candidate;
4830
+ }
4831
+ return {
4832
+ ...blocker === void 0 ? {} : { blocker },
4833
+ ...blocker !== void 0 || notice === void 0 ? {} : { notice }
4834
+ };
4835
+ }
4836
+ function probeKeyOf(error) {
4837
+ if (error === void 0) return null;
4838
+ return error.code === "" ? "unknown" : error.code;
4839
+ }
4840
+ //#endregion
4679
4841
  //#region src/shared/hooks/fact-transports.ts
4680
4842
  function sseTransport(options) {
4681
4843
  return { start({ onFrame, cursor, onMode }) {
@@ -4828,14 +4990,14 @@ function bumpCapabilityEpoch() {
4828
4990
  epoch$1 += 1;
4829
4991
  }
4830
4992
  var current$1 = null;
4831
- var listeners$7 = /* @__PURE__ */ new Set();
4993
+ var listeners$8 = /* @__PURE__ */ new Set();
4832
4994
  function capabilityValue() {
4833
4995
  return current$1;
4834
4996
  }
4835
4997
  function subscribeCapabilities(listener) {
4836
- listeners$7.add(listener);
4998
+ listeners$8.add(listener);
4837
4999
  return () => {
4838
- listeners$7.delete(listener);
5000
+ listeners$8.delete(listener);
4839
5001
  };
4840
5002
  }
4841
5003
  function setCapabilities(next, rechecked = false) {
@@ -4848,7 +5010,7 @@ function setCapabilities(next, rechecked = false) {
4848
5010
  });
4849
5011
  if (next === current$1) return;
4850
5012
  current$1 = next;
4851
- for (const listener of [...listeners$7]) listener();
5013
+ for (const listener of [...listeners$8]) listener();
4852
5014
  }
4853
5015
  function beginProbe() {
4854
5016
  probing += 1;
@@ -4894,12 +5056,12 @@ function shareCapabilityFetch(force, load) {
4894
5056
  };
4895
5057
  return promise;
4896
5058
  }
4897
- var readSeq$1 = 0;
5059
+ var readSeq = 0;
4898
5060
  var newestForceSeq$1 = -1;
4899
5061
  function runCapabilityRead(options) {
4900
5062
  const { force, silent = false, load = fetchAll } = options;
4901
5063
  const at = epoch$1;
4902
- const seq = readSeq$1 += 1;
5064
+ const seq = readSeq += 1;
4903
5065
  if (force) newestForceSeq$1 = seq;
4904
5066
  const shown = force && !silent;
4905
5067
  if (shown) beginProbe();
@@ -4935,33 +5097,6 @@ function useCapabilityProbe() {
4935
5097
  return useSyncExternalStore(subscribeProbe, probeValue);
4936
5098
  }
4937
5099
  //#endregion
4938
- //#region src/shared/api/unit-board.ts
4939
- function gateOf(capability, mode) {
4940
- if (mode === "none") return { gated: true };
4941
- if (capability === null) return { gated: true };
4942
- return { gated: capability.status === "ok" || capability.status === "unchecked" };
4943
- }
4944
- function splitBlocker(candidates) {
4945
- let blocker;
4946
- let notice;
4947
- for (const candidate of candidates) {
4948
- if (candidate === void 0) continue;
4949
- if (candidate.severity === "block") {
4950
- blocker ??= candidate;
4951
- continue;
4952
- }
4953
- notice ??= candidate;
4954
- }
4955
- return {
4956
- ...blocker === void 0 ? {} : { blocker },
4957
- ...blocker !== void 0 || notice === void 0 ? {} : { notice }
4958
- };
4959
- }
4960
- function probeKeyOf(error) {
4961
- if (error === void 0) return null;
4962
- return error.code === "" ? "unknown" : error.code;
4963
- }
4964
- //#endregion
4965
5100
  //#region src/shared/hooks/use-capability-gate.ts
4966
5101
  var use_capability_gate_exports = /* @__PURE__ */ __exportAll({
4967
5102
  useCapabilityGate: () => useCapabilityGate,
@@ -5003,7 +5138,7 @@ function useCapabilityMap(refreshToken) {
5003
5138
  //#endregion
5004
5139
  //#region src/app/layouts/panel-hint.ts
5005
5140
  var hints = /* @__PURE__ */ new Map();
5006
- var listeners$6 = /* @__PURE__ */ new Set();
5141
+ var listeners$7 = /* @__PURE__ */ new Set();
5007
5142
  function sameHint(left, right) {
5008
5143
  if (left === null || right === null) return left === right;
5009
5144
  if (left.labelKey !== right.labelKey || left.tone !== right.tone) return false;
@@ -5015,15 +5150,15 @@ function publishPanelHint(id, hint) {
5015
5150
  if (sameHint(hints.get(id) ?? null, hint)) return;
5016
5151
  if (hint === null) hints.delete(id);
5017
5152
  else hints.set(id, hint);
5018
- for (const listener of [...listeners$6]) listener();
5153
+ for (const listener of [...listeners$7]) listener();
5019
5154
  }
5020
5155
  function panelHintOf(id) {
5021
5156
  return id === null ? null : hints.get(id) ?? null;
5022
5157
  }
5023
5158
  function subscribePanelHints(listener) {
5024
- listeners$6.add(listener);
5159
+ listeners$7.add(listener);
5025
5160
  return () => {
5026
- listeners$6.delete(listener);
5161
+ listeners$7.delete(listener);
5027
5162
  };
5028
5163
  }
5029
5164
  function usePanelHint(id) {
@@ -5191,6 +5326,29 @@ function installedIdSet(installed) {
5191
5326
  if (installed === void 0) return null;
5192
5327
  return new Set(installed.map((item) => item.unit));
5193
5328
  }
5329
+ function latestUnavailableNote(unavailable) {
5330
+ if (unavailable === "no-registry") return {
5331
+ key: "panels.market.latestNoRegistry",
5332
+ params: {}
5333
+ };
5334
+ if (unavailable === "probe-failed") return {
5335
+ key: "panels.market.latestProbeFailed",
5336
+ params: {}
5337
+ };
5338
+ }
5339
+ function latestCheckSummary(modules) {
5340
+ let checked = 0;
5341
+ let unknown = 0;
5342
+ for (const module of modules ?? []) if (module.latest !== void 0) checked += 1;
5343
+ else if (module.latestUnavailable === "no-registry" || module.latestUnavailable === "probe-failed") unknown += 1;
5344
+ return {
5345
+ checked,
5346
+ unknown
5347
+ };
5348
+ }
5349
+ function checkedPluginCount(plugins) {
5350
+ return (plugins ?? []).filter((plugin) => plugin.latest !== void 0).length;
5351
+ }
5194
5352
  function installedRows(modules, manifests, listed, names, defaults = /* @__PURE__ */ new Set(), changed = {}) {
5195
5353
  const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.titleKey]));
5196
5354
  const rows = [];
@@ -5204,16 +5362,17 @@ function installedRows(modules, manifests, listed, names, defaults = /* @__PURE_
5204
5362
  const pending = !loaded && refused.length === 0;
5205
5363
  const titleKey = titles.get(module.unit);
5206
5364
  const remembered = titleKey === void 0 ? names?.get(module.unit) : void 0;
5365
+ const note = refused.length > 0 ? {
5366
+ key: "panels.market.moduleRefused",
5367
+ params: {}
5368
+ } : latestUnavailableNote(module.latestUnavailable);
5207
5369
  rows.push({
5208
5370
  id: module.unit,
5209
5371
  titleKey: titleKey ?? module.unit,
5210
5372
  ...remembered === void 0 ? {} : { label: remembered },
5211
5373
  state: outdated ? "outdated" : refused.length > 0 ? "unusable" : pending ? "inactive" : "installed",
5212
5374
  ...pending ? { hint: "panels.market.moduleRestartHint" } : blocked === void 0 ? {} : { hint: updateBlockHintOf(blocked) },
5213
- ...refused.length === 0 ? {} : { note: {
5214
- key: "panels.market.moduleRefused",
5215
- params: {}
5216
- } },
5375
+ ...note === void 0 ? {} : { note },
5217
5376
  ...module.local === true ? { local: true } : {},
5218
5377
  pkg: module.pkg,
5219
5378
  canInstall: false,
@@ -5240,6 +5399,13 @@ var SWITCH_LOCKED = /* @__PURE__ */ new Set(["unusable", "broken"]);
5240
5399
  function marketSwitchLocked(row) {
5241
5400
  return SWITCH_LOCKED.has(row.state);
5242
5401
  }
5402
+ function marketAsksAgent(row) {
5403
+ if (row.workbench === true || row.plugin === true) return false;
5404
+ if (row.state === "installed" || row.state === "inactive" || row.state === "outdated") return false;
5405
+ if (row.state === "checking" || row.state === "pending-restart") return false;
5406
+ if (row.state === "pending-followup") return false;
5407
+ return !marketActions$1(row).includes("install");
5408
+ }
5243
5409
  function marketActions$1(row) {
5244
5410
  if (row.workbench === true) {
5245
5411
  if (row.followUp !== void 0 && row.state === "pending-followup") return row.followUp.hard ? ["migrate-workbench"] : ["migrate-workbench", "dismiss-followup"];
@@ -5362,6 +5528,18 @@ function marketSections(rows) {
5362
5528
  rows: rest
5363
5529
  }]];
5364
5530
  }
5531
+ function checkingRows(rows, scope) {
5532
+ return rows.map((row) => {
5533
+ if (row.state !== "unknown" && row.state !== "unchecked") return row;
5534
+ if (!scope.all && !scope.units.has(row.id)) return row;
5535
+ return {
5536
+ ...row,
5537
+ state: "checking",
5538
+ hint: void 0,
5539
+ note: void 0
5540
+ };
5541
+ });
5542
+ }
5365
5543
  function marketRows(manifests, capabilities, updates = {}, defaults = /* @__PURE__ */ new Set(), changed = {}) {
5366
5544
  const rows = [];
5367
5545
  for (const manifest of manifests) {
@@ -5490,8 +5668,9 @@ var UPDATES_KEY = "panels.market.hasNew";
5490
5668
  function isProblem(row) {
5491
5669
  return row.broken === true || row.state === "broken" || row.state === "unusable" || row.note?.key === "panels.market.moduleRefused";
5492
5670
  }
5493
- function isRestart(row) {
5494
- return row.state === "inactive" || row.state === "pending-restart";
5671
+ function isRestart(row, installing) {
5672
+ if (row.state === "pending-restart") return true;
5673
+ return !installing && row.state === "inactive";
5495
5674
  }
5496
5675
  function isUnknown(row, rosterRead) {
5497
5676
  return row.state === "unchecked" || rosterRead && row.state === "unknown";
@@ -5501,9 +5680,10 @@ function awaitsRestart(manifests, installed) {
5501
5680
  return installed.some((module) => !loaded.has(module.unit) && refusalReasons(module.refused, module.clientRefused).length === 0);
5502
5681
  }
5503
5682
  function marketHintOf(input) {
5504
- const busy = input.busy ?? /* @__PURE__ */ new Set();
5505
- const marketable = marketCatalog(input.manifests, input.installable).filter((manifest) => !busy.has(manifest.id));
5506
- const installed = (input.installed ?? []).filter((module) => !busy.has(module.unit));
5683
+ const installing = input.installing === true;
5684
+ const held = /* @__PURE__ */ new Set([...input.busy ?? [], ...input.applied ?? []]);
5685
+ const marketable = marketCatalog(input.manifests, input.installable).filter((manifest) => !held.has(manifest.id));
5686
+ const installed = (input.installed ?? []).filter((module) => !held.has(module.unit));
5507
5687
  const catalog = marketRows(marketable, input.capabilities, marketUpdatesOf(input.modules));
5508
5688
  const listed = new Set(catalog.map((row) => row.id));
5509
5689
  const self = workbenchRow(input.workbench);
@@ -5514,10 +5694,10 @@ function marketHintOf(input) {
5514
5694
  ...self === void 0 ? [] : [self]
5515
5695
  ];
5516
5696
  const problem = rows.some(isProblem);
5517
- const restart = rows.some(isRestart) || awaitsRestart(input.manifests, installed);
5697
+ const restart = rows.some((row) => isRestart(row, installing)) || !installing && awaitsRestart(input.manifests, installed);
5518
5698
  const followUp = rows.some((row) => row.state === "pending-followup");
5519
5699
  const rosterRead = input.modules !== null;
5520
- const unknown = rows.some((row) => isUnknown(row, rosterRead));
5700
+ const unknown = !installing && rows.some((row) => isUnknown(row, rosterRead));
5521
5701
  const updates = marketHasUpdates(rows, sharedRows(marketable, input.capabilities));
5522
5702
  const more = [];
5523
5703
  if (problem) {
@@ -5646,10 +5826,10 @@ function holdWindowMs(until) {
5646
5826
  }
5647
5827
  //#endregion
5648
5828
  //#region src/app/layouts/rightbar/market-busy.ts
5649
- var listeners$5 = /* @__PURE__ */ new Set();
5829
+ var listeners$6 = /* @__PURE__ */ new Set();
5650
5830
  var published = /* @__PURE__ */ new Map();
5651
5831
  var live$2 = /* @__PURE__ */ new Set();
5652
- var timer$2;
5832
+ var timer$3;
5653
5833
  var MARKET_BUSY_MS = WORKBENCH_SWAP_MS;
5654
5834
  function marketBusyIds() {
5655
5835
  return live$2;
@@ -5659,12 +5839,12 @@ function publishMarketBusy(ids) {
5659
5839
  const next = /* @__PURE__ */ new Map();
5660
5840
  for (const id of new Set(ids)) next.set(id, published.get(id) ?? now);
5661
5841
  published = next;
5662
- refresh(now);
5842
+ refresh$1(now);
5663
5843
  }
5664
5844
  function subscribeMarketBusy(listener) {
5665
- listeners$5.add(listener);
5845
+ listeners$6.add(listener);
5666
5846
  return () => {
5667
- listeners$5.delete(listener);
5847
+ listeners$6.delete(listener);
5668
5848
  };
5669
5849
  }
5670
5850
  function useMarketBusy() {
@@ -5680,29 +5860,100 @@ function sameSet(left, right) {
5680
5860
  for (const id of left) if (!right.has(id)) return false;
5681
5861
  return true;
5682
5862
  }
5683
- function schedule$1(now) {
5684
- if (timer$2 !== void 0) clearTimeout(timer$2);
5685
- timer$2 = void 0;
5863
+ function schedule$2(now) {
5864
+ if (timer$3 !== void 0) clearTimeout(timer$3);
5865
+ timer$3 = void 0;
5686
5866
  let soonest = Number.POSITIVE_INFINITY;
5687
5867
  for (const at of published.values()) soonest = Math.min(soonest, at);
5688
5868
  if (soonest === Number.POSITIVE_INFINITY) return;
5689
- timer$2 = setTimeout(() => refresh(Date.now()), Math.max(0, soonest + MARKET_BUSY_MS - now) + 1);
5869
+ timer$3 = setTimeout(() => refresh$1(Date.now()), Math.max(0, soonest + MARKET_BUSY_MS - now) + 1);
5690
5870
  }
5691
- function refresh(now) {
5871
+ function refresh$1(now) {
5692
5872
  for (const [id, at] of published) if (now - at >= MARKET_BUSY_MS) published.delete(id);
5693
5873
  const next = new Set(published.keys());
5694
5874
  if (!sameSet(live$2, next)) {
5695
5875
  live$2 = next;
5876
+ for (const listener of [...listeners$6]) listener();
5877
+ }
5878
+ schedule$2(now);
5879
+ }
5880
+ //#endregion
5881
+ //#region src/app/layouts/rightbar/market-install.ts
5882
+ var NO_UNITS$2 = /* @__PURE__ */ new Set();
5883
+ var IDLE$2 = {
5884
+ installing: false,
5885
+ applied: NO_UNITS$2
5886
+ };
5887
+ var tokens = /* @__PURE__ */ new Set();
5888
+ var applied = /* @__PURE__ */ new Map();
5889
+ var listeners$5 = /* @__PURE__ */ new Set();
5890
+ var snapshot$1 = IDLE$2;
5891
+ var timer$2;
5892
+ function sameUnits(left, right) {
5893
+ if (left.size !== right.size) return false;
5894
+ for (const unit of left) if (!right.has(unit)) return false;
5895
+ return true;
5896
+ }
5897
+ function schedule$1(now) {
5898
+ if (timer$2 !== void 0) clearTimeout(timer$2);
5899
+ timer$2 = void 0;
5900
+ if (applied.size === 0) return;
5901
+ let soonest = Number.POSITIVE_INFINITY;
5902
+ for (const at of applied.values()) soonest = Math.min(soonest, at);
5903
+ timer$2 = setTimeout(() => refresh(Date.now()), Math.max(0, soonest + MODULE_SETTLE_MS - now) + 1);
5904
+ }
5905
+ function refresh(now) {
5906
+ for (const [unit, at] of applied) if (now - at >= 15e3) applied.delete(unit);
5907
+ const next = tokens.size === 0 && applied.size === 0 ? IDLE$2 : {
5908
+ installing: tokens.size > 0,
5909
+ applied: applied.size === 0 ? NO_UNITS$2 : new Set(applied.keys())
5910
+ };
5911
+ if (next.installing !== snapshot$1.installing || !sameUnits(next.applied, snapshot$1.applied)) {
5912
+ snapshot$1 = next;
5696
5913
  for (const listener of [...listeners$5]) listener();
5697
5914
  }
5698
5915
  schedule$1(now);
5699
5916
  }
5917
+ function marketInstallState() {
5918
+ return snapshot$1;
5919
+ }
5920
+ function subscribeMarketInstall(listener) {
5921
+ listeners$5.add(listener);
5922
+ return () => {
5923
+ listeners$5.delete(listener);
5924
+ };
5925
+ }
5926
+ function publishMarketInstalling(token, active) {
5927
+ if (active) tokens.add(token);
5928
+ else tokens.delete(token);
5929
+ refresh(Date.now());
5930
+ }
5931
+ function publishMarketApplied(units) {
5932
+ const now = Date.now();
5933
+ for (const unit of new Set(units)) if (unit !== "" && !applied.has(unit)) applied.set(unit, now);
5934
+ refresh(now);
5935
+ }
5936
+ function useMarketInstallState() {
5937
+ return useSyncExternalStore(subscribeMarketInstall, marketInstallState);
5938
+ }
5939
+ function usePublishMarketInstalling(token, active) {
5940
+ useEffect(() => {
5941
+ publishMarketInstalling(token, active);
5942
+ return () => publishMarketInstalling(token, false);
5943
+ }, [token, active]);
5944
+ }
5700
5945
  //#endregion
5701
5946
  //#region src/shared/api/write-outcome.ts
5702
5947
  function writeRoute(channel, resource) {
5703
5948
  if (channel === "provision") return "provision";
5704
5949
  return `${channel}/${resource}`;
5705
5950
  }
5951
+ function installFailureOf(value) {
5952
+ if (typeof value !== "object" || value === null) return void 0;
5953
+ const record = value;
5954
+ if (typeof record.kind !== "string" || typeof record.command !== "string") return void 0;
5955
+ return value;
5956
+ }
5706
5957
  function writeOutcomeOf(response, networkText) {
5707
5958
  if (response === null) return {
5708
5959
  ok: false,
@@ -5714,11 +5965,13 @@ function writeOutcomeOf(response, networkText) {
5714
5965
  const fallback = typeof box.text === "string" && box.text !== "" ? box.text : networkText;
5715
5966
  const detail = typeof box.error?.detail === "string" ? box.error.detail : void 0;
5716
5967
  const helpUrl = typeof box.error?.helpUrl === "string" && box.error.helpUrl !== "" ? box.error.helpUrl : void 0;
5968
+ const failure = installFailureOf(box.error?.failure);
5717
5969
  return {
5718
5970
  ok: false,
5719
5971
  message: own ?? fallback,
5720
5972
  ...detail === void 0 ? {} : { detail },
5721
- ...helpUrl === void 0 ? {} : { helpUrl }
5973
+ ...helpUrl === void 0 ? {} : { helpUrl },
5974
+ ...failure === void 0 ? {} : { failure }
5722
5975
  };
5723
5976
  }
5724
5977
  return {
@@ -5925,137 +6178,138 @@ function useMarketTransient(input) {
5925
6178
  };
5926
6179
  }
5927
6180
  var MarketPage_module_default = {
5928
- marketList: "_marketList_yups9_1",
5929
- marketRow: "_marketRow_yups9_10",
5930
- marketIcon: "_marketIcon_yups9_20",
5931
- marketMain: "_marketMain_yups9_32",
5932
- marketName: "_marketName_yups9_39",
5933
- marketStatus: "_marketStatus_yups9_48",
5934
- marketStateText: "_marketStateText_yups9_58",
5935
- marketSep: "_marketSep_yups9_62",
5936
- marketReason: "_marketReason_yups9_66",
5937
- marketVersion: "_marketVersion_yups9_72",
5938
- marketLocalTag: "_marketLocalTag_yups9_94",
5939
- marketEnd: "_marketEnd_yups9_105",
5940
- marketSwitchSeat: "_marketSwitchSeat_yups9_112",
5941
- marketActions: "_marketActions_yups9_125",
5942
- marketUpdateAction: "_marketUpdateAction_yups9_131",
5943
- marketSelfDivider: "_marketSelfDivider_yups9_137",
5944
- marketSection: "_marketSection_yups9_143",
5945
- marketSectionHead: "_marketSectionHead_yups9_150",
5946
- marketSectionIcon: "_marketSectionIcon_yups9_156",
5947
- marketSectionTitle: "_marketSectionTitle_yups9_163",
5948
- marketSectionCount: "_marketSectionCount_yups9_169",
5949
- marketSectionAction: "_marketSectionAction_yups9_175",
5950
- marketSectionQuiet: "_marketSectionQuiet_yups9_183",
5951
- marketProgress: "_marketProgress_yups9_196",
5952
- marketNote: "_marketNote_yups9_206",
5953
- marketFailure: "_marketFailure_yups9_213",
5954
- marketEmpty: "_marketEmpty_yups9_220",
5955
- marketPage: "_marketPage_yups9_225",
5956
- marketPageHead: "_marketPageHead_yups9_243",
5957
- marketPageTitle: "_marketPageTitle_yups9_251",
5958
- marketPageIntro: "_marketPageIntro_yups9_256",
5959
- marketPageTools: "_marketPageTools_yups9_262",
5960
- marketPanel: "_marketPanel_yups9_271",
5961
- marketTabs: "_marketTabs_yups9_281",
5962
- marketTabList: "_marketTabList_yups9_286",
5963
- marketAddButton: "_marketAddButton_yups9_291",
5964
- marketEmptyTitle: "_marketEmptyTitle_yups9_308",
5965
- discoverPage: "_discoverPage_yups9_313",
5966
- discoverBar: "_discoverBar_yups9_320",
5967
- discoverTools: "_discoverTools_yups9_327",
5968
- discoverMarket: "_discoverMarket_yups9_333",
5969
- discoverMarketButton: "_discoverMarketButton_yups9_338",
5970
- discoverMarketName: "_discoverMarketName_yups9_345",
5971
- discoverLabels: "_discoverLabels_yups9_351",
5972
- discoverSort: "_discoverSort_yups9_356",
5973
- discoverRefresh: "_discoverRefresh_yups9_361",
5974
- discoverSearch: "_discoverSearch_yups9_365",
5975
- discoverSearchField: "_discoverSearchField_yups9_373",
5976
- discoverSearchFieldFilled: "_discoverSearchFieldFilled_yups9_378",
5977
- discoverSearchClear: "_discoverSearchClear_yups9_387",
5978
- discoverChips: "_discoverChips_yups9_438",
5979
- discoverList: "_discoverList_yups9_445",
5980
- discoverCard: "_discoverCard_yups9_454",
5981
- discoverArtwork: "_discoverArtwork_yups9_468",
5982
- discoverArtworkImage: "_discoverArtworkImage_yups9_480",
5983
- discoverMain: "_discoverMain_yups9_484",
5984
- discoverTitleRow: "_discoverTitleRow_yups9_492",
5985
- discoverCardOpen: "_discoverCardOpen_yups9_500",
5986
- discoverStrong: "_discoverStrong_yups9_531",
5987
- discoverDesc: "_discoverDesc_yups9_537",
5988
- discoverMeta: "_discoverMeta_yups9_546",
5989
- discoverMuted: "_discoverMuted_yups9_553",
5990
- discoverEnd: "_discoverEnd_yups9_559",
5991
- discoverUpdateAction: "_discoverUpdateAction_yups9_568",
5992
- discoverBlocked: "_discoverBlocked_yups9_573",
5993
- discoverEmpty: "_discoverEmpty_yups9_578",
5994
- discoverEmptyTitle: "_discoverEmptyTitle_yups9_587",
5995
- discoverDetail: "_discoverDetail_yups9_597",
5996
- discoverCrumb: "_discoverCrumb_yups9_603",
5997
- discoverCrumbIcon: "_discoverCrumbIcon_yups9_626",
5998
- discoverDetailHead: "_discoverDetailHead_yups9_630",
5999
- discoverDetailTitle: "_discoverDetailTitle_yups9_636",
6000
- discoverDetailText: "_discoverDetailText_yups9_642",
6001
- discoverDetailPanel: "_discoverDetailPanel_yups9_649",
6002
- discoverDetailTabs: "_discoverDetailTabs_yups9_656",
6003
- discoverDetailTabList: "_discoverDetailTabList_yups9_661",
6004
- discoverDocBody: "_discoverDocBody_yups9_666",
6005
- discoverDocNotice: "_discoverDocNotice_yups9_671",
6006
- discoverSection: "_discoverSection_yups9_677",
6007
- discoverSectionTitle: "_discoverSectionTitle_yups9_684",
6008
- discoverFacts: "_discoverFacts_yups9_690",
6009
- discoverFactRow: "_discoverFactRow_yups9_695",
6010
- discoverFactKind: "_discoverFactKind_yups9_705",
6011
- discoverFactValue: "_discoverFactValue_yups9_711",
6012
- discoverCode: "_discoverCode_yups9_719",
6013
- discoverTags: "_discoverTags_yups9_728",
6014
- discoverLink: "_discoverLink_yups9_735",
6015
- discoverVersions: "_discoverVersions_yups9_745",
6016
- discoverVersionRow: "_discoverVersionRow_yups9_753",
6017
- discoverVersionName: "_discoverVersionName_yups9_761",
6018
- discoverError: "_discoverError_yups9_766",
6019
- discoverFailure: "_discoverFailure_yups9_775",
6020
- discoverLoading: "_discoverLoading_yups9_781",
6021
- discoverNotice: "_discoverNotice_yups9_790",
6022
- discoverMore: "_discoverMore_yups9_808",
6023
- discoverTransport: "_discoverTransport_yups9_812",
6024
- discoverTransportHead: "_discoverTransportHead_yups9_818",
6025
- discoverTransportTitle: "_discoverTransportTitle_yups9_825",
6026
- discoverTransportKind: "_discoverTransportKind_yups9_830",
6027
- discoverTransportState: "_discoverTransportState_yups9_835",
6028
- discoverTransportRows: "_discoverTransportRows_yups9_843",
6029
- discoverTransportRow: "_discoverTransportRow_yups9_843",
6030
- discoverTransportRadio: "_discoverTransportRadio_yups9_864",
6031
- discoverTransportCustom: "_discoverTransportCustom_yups9_904",
6032
- discoverTransportInput: "_discoverTransportInput_yups9_910",
6033
- discoverInstallBar: "_discoverInstallBar_yups9_915",
6034
- discoverInstallText: "_discoverInstallText_yups9_926",
6035
- discoverDialog: "_discoverDialog_yups9_932",
6036
- discoverDialogBody: "_discoverDialogBody_yups9_936",
6037
- discoverSourceList: "_discoverSourceList_yups9_942",
6038
- discoverSourceRow: "_discoverSourceRow_yups9_950",
6039
- discoverSourceConfirm: "_discoverSourceConfirm_yups9_959",
6040
- discoverSourcePick: "_discoverSourcePick_yups9_965",
6041
- discoverSourceRadio: "_discoverSourceRadio_yups9_974",
6042
- discoverSourceMain: "_discoverSourceMain_yups9_982",
6043
- discoverSourceHead: "_discoverSourceHead_yups9_990",
6044
- discoverSourceUrl: "_discoverSourceUrl_yups9_998",
6045
- discoverSourceMore: "_discoverSourceMore_yups9_1008",
6046
- discoverSourceLoading: "_discoverSourceLoading_yups9_1012",
6047
- discoverSourceHint: "_discoverSourceHint_yups9_1022",
6048
- discoverSourceError: "_discoverSourceError_yups9_1036",
6049
- discoverSourceForm: "_discoverSourceForm_yups9_1042",
6050
- discoverGrow: "_discoverGrow_yups9_1048",
6051
- discoverField: "_discoverField_yups9_1053",
6052
- discoverFieldLabel: "_discoverFieldLabel_yups9_1059",
6053
- discoverConfirmHead: "_discoverConfirmHead_yups9_1064",
6054
- discoverSkeletonFill: "_discoverSkeletonFill_yups9_1070",
6055
- "wb-skeleton": "_wb-skeleton_yups9_1",
6056
- discoverSkeletonBar: "_discoverSkeletonBar_yups9_1079",
6057
- discoverSkeletonTitle: "_discoverSkeletonTitle_yups9_1086",
6058
- discoverSkeletonDesc: "_discoverSkeletonDesc_yups9_1090"
6181
+ marketList: "_marketList_1vpw3_1",
6182
+ marketRow: "_marketRow_1vpw3_10",
6183
+ marketIcon: "_marketIcon_1vpw3_20",
6184
+ marketMain: "_marketMain_1vpw3_32",
6185
+ marketName: "_marketName_1vpw3_39",
6186
+ marketStatus: "_marketStatus_1vpw3_48",
6187
+ marketStateText: "_marketStateText_1vpw3_58",
6188
+ marketSep: "_marketSep_1vpw3_62",
6189
+ marketReason: "_marketReason_1vpw3_66",
6190
+ marketVersion: "_marketVersion_1vpw3_72",
6191
+ marketLocalTag: "_marketLocalTag_1vpw3_94",
6192
+ marketEnd: "_marketEnd_1vpw3_105",
6193
+ marketSwitchSeat: "_marketSwitchSeat_1vpw3_112",
6194
+ marketActions: "_marketActions_1vpw3_125",
6195
+ marketUpdateAction: "_marketUpdateAction_1vpw3_131",
6196
+ marketSelfDivider: "_marketSelfDivider_1vpw3_137",
6197
+ marketSection: "_marketSection_1vpw3_143",
6198
+ marketSectionHead: "_marketSectionHead_1vpw3_150",
6199
+ marketSectionIcon: "_marketSectionIcon_1vpw3_156",
6200
+ marketSectionTitle: "_marketSectionTitle_1vpw3_163",
6201
+ marketSectionCount: "_marketSectionCount_1vpw3_169",
6202
+ marketSectionAction: "_marketSectionAction_1vpw3_175",
6203
+ marketSectionQuiet: "_marketSectionQuiet_1vpw3_183",
6204
+ marketProgress: "_marketProgress_1vpw3_195",
6205
+ marketNote: "_marketNote_1vpw3_205",
6206
+ marketFailure: "_marketFailure_1vpw3_212",
6207
+ marketFailureSeat: "_marketFailureSeat_1vpw3_219",
6208
+ marketEmpty: "_marketEmpty_1vpw3_224",
6209
+ marketPage: "_marketPage_1vpw3_229",
6210
+ marketPageHead: "_marketPageHead_1vpw3_247",
6211
+ marketPageTitle: "_marketPageTitle_1vpw3_255",
6212
+ marketPageIntro: "_marketPageIntro_1vpw3_260",
6213
+ marketPageTools: "_marketPageTools_1vpw3_266",
6214
+ marketPanel: "_marketPanel_1vpw3_275",
6215
+ marketTabs: "_marketTabs_1vpw3_285",
6216
+ marketTabList: "_marketTabList_1vpw3_290",
6217
+ marketAddButton: "_marketAddButton_1vpw3_295",
6218
+ marketEmptyTitle: "_marketEmptyTitle_1vpw3_312",
6219
+ discoverPage: "_discoverPage_1vpw3_317",
6220
+ discoverBar: "_discoverBar_1vpw3_324",
6221
+ discoverTools: "_discoverTools_1vpw3_331",
6222
+ discoverMarket: "_discoverMarket_1vpw3_337",
6223
+ discoverMarketButton: "_discoverMarketButton_1vpw3_342",
6224
+ discoverMarketName: "_discoverMarketName_1vpw3_349",
6225
+ discoverLabels: "_discoverLabels_1vpw3_355",
6226
+ discoverSort: "_discoverSort_1vpw3_360",
6227
+ discoverRefresh: "_discoverRefresh_1vpw3_365",
6228
+ discoverSearch: "_discoverSearch_1vpw3_369",
6229
+ discoverSearchField: "_discoverSearchField_1vpw3_377",
6230
+ discoverSearchFieldFilled: "_discoverSearchFieldFilled_1vpw3_382",
6231
+ discoverSearchClear: "_discoverSearchClear_1vpw3_391",
6232
+ discoverChips: "_discoverChips_1vpw3_442",
6233
+ discoverList: "_discoverList_1vpw3_449",
6234
+ discoverCard: "_discoverCard_1vpw3_458",
6235
+ discoverArtwork: "_discoverArtwork_1vpw3_472",
6236
+ discoverArtworkImage: "_discoverArtworkImage_1vpw3_484",
6237
+ discoverMain: "_discoverMain_1vpw3_488",
6238
+ discoverTitleRow: "_discoverTitleRow_1vpw3_496",
6239
+ discoverCardOpen: "_discoverCardOpen_1vpw3_504",
6240
+ discoverStrong: "_discoverStrong_1vpw3_535",
6241
+ discoverDesc: "_discoverDesc_1vpw3_541",
6242
+ discoverMeta: "_discoverMeta_1vpw3_550",
6243
+ discoverMuted: "_discoverMuted_1vpw3_557",
6244
+ discoverEnd: "_discoverEnd_1vpw3_563",
6245
+ discoverUpdateAction: "_discoverUpdateAction_1vpw3_572",
6246
+ discoverBlocked: "_discoverBlocked_1vpw3_577",
6247
+ discoverEmpty: "_discoverEmpty_1vpw3_582",
6248
+ discoverEmptyTitle: "_discoverEmptyTitle_1vpw3_591",
6249
+ discoverDetail: "_discoverDetail_1vpw3_601",
6250
+ discoverCrumb: "_discoverCrumb_1vpw3_607",
6251
+ discoverCrumbIcon: "_discoverCrumbIcon_1vpw3_630",
6252
+ discoverDetailHead: "_discoverDetailHead_1vpw3_634",
6253
+ discoverDetailTitle: "_discoverDetailTitle_1vpw3_640",
6254
+ discoverDetailText: "_discoverDetailText_1vpw3_646",
6255
+ discoverDetailPanel: "_discoverDetailPanel_1vpw3_653",
6256
+ discoverDetailTabs: "_discoverDetailTabs_1vpw3_660",
6257
+ discoverDetailTabList: "_discoverDetailTabList_1vpw3_665",
6258
+ discoverDocBody: "_discoverDocBody_1vpw3_670",
6259
+ discoverDocNotice: "_discoverDocNotice_1vpw3_675",
6260
+ discoverSection: "_discoverSection_1vpw3_681",
6261
+ discoverSectionTitle: "_discoverSectionTitle_1vpw3_688",
6262
+ discoverFacts: "_discoverFacts_1vpw3_694",
6263
+ discoverFactRow: "_discoverFactRow_1vpw3_699",
6264
+ discoverFactKind: "_discoverFactKind_1vpw3_709",
6265
+ discoverFactValue: "_discoverFactValue_1vpw3_715",
6266
+ discoverCode: "_discoverCode_1vpw3_723",
6267
+ discoverTags: "_discoverTags_1vpw3_732",
6268
+ discoverLink: "_discoverLink_1vpw3_739",
6269
+ discoverVersions: "_discoverVersions_1vpw3_749",
6270
+ discoverVersionRow: "_discoverVersionRow_1vpw3_757",
6271
+ discoverVersionName: "_discoverVersionName_1vpw3_765",
6272
+ discoverError: "_discoverError_1vpw3_770",
6273
+ discoverFailure: "_discoverFailure_1vpw3_779",
6274
+ discoverLoading: "_discoverLoading_1vpw3_785",
6275
+ discoverNotice: "_discoverNotice_1vpw3_794",
6276
+ discoverMore: "_discoverMore_1vpw3_812",
6277
+ discoverTransport: "_discoverTransport_1vpw3_816",
6278
+ discoverTransportHead: "_discoverTransportHead_1vpw3_822",
6279
+ discoverTransportTitle: "_discoverTransportTitle_1vpw3_829",
6280
+ discoverTransportKind: "_discoverTransportKind_1vpw3_834",
6281
+ discoverTransportState: "_discoverTransportState_1vpw3_839",
6282
+ discoverTransportRows: "_discoverTransportRows_1vpw3_847",
6283
+ discoverTransportRow: "_discoverTransportRow_1vpw3_847",
6284
+ discoverTransportRadio: "_discoverTransportRadio_1vpw3_868",
6285
+ discoverTransportCustom: "_discoverTransportCustom_1vpw3_908",
6286
+ discoverTransportInput: "_discoverTransportInput_1vpw3_914",
6287
+ discoverInstallBar: "_discoverInstallBar_1vpw3_919",
6288
+ discoverInstallText: "_discoverInstallText_1vpw3_930",
6289
+ discoverDialog: "_discoverDialog_1vpw3_936",
6290
+ discoverDialogBody: "_discoverDialogBody_1vpw3_940",
6291
+ discoverSourceList: "_discoverSourceList_1vpw3_946",
6292
+ discoverSourceRow: "_discoverSourceRow_1vpw3_954",
6293
+ discoverSourceConfirm: "_discoverSourceConfirm_1vpw3_963",
6294
+ discoverSourcePick: "_discoverSourcePick_1vpw3_969",
6295
+ discoverSourceRadio: "_discoverSourceRadio_1vpw3_978",
6296
+ discoverSourceMain: "_discoverSourceMain_1vpw3_986",
6297
+ discoverSourceHead: "_discoverSourceHead_1vpw3_994",
6298
+ discoverSourceUrl: "_discoverSourceUrl_1vpw3_1002",
6299
+ discoverSourceMore: "_discoverSourceMore_1vpw3_1012",
6300
+ discoverSourceLoading: "_discoverSourceLoading_1vpw3_1016",
6301
+ discoverSourceHint: "_discoverSourceHint_1vpw3_1026",
6302
+ discoverSourceError: "_discoverSourceError_1vpw3_1040",
6303
+ discoverSourceForm: "_discoverSourceForm_1vpw3_1046",
6304
+ discoverGrow: "_discoverGrow_1vpw3_1052",
6305
+ discoverField: "_discoverField_1vpw3_1057",
6306
+ discoverFieldLabel: "_discoverFieldLabel_1vpw3_1063",
6307
+ discoverConfirmHead: "_discoverConfirmHead_1vpw3_1068",
6308
+ discoverSkeletonFill: "_discoverSkeletonFill_1vpw3_1074",
6309
+ "wb-skeleton": "_wb-skeleton_1vpw3_1",
6310
+ discoverSkeletonBar: "_discoverSkeletonBar_1vpw3_1083",
6311
+ discoverSkeletonTitle: "_discoverSkeletonTitle_1vpw3_1090",
6312
+ discoverSkeletonDesc: "_discoverSkeletonDesc_1vpw3_1094"
6059
6313
  };
6060
6314
  //#endregion
6061
6315
  //#region src/app/layouts/market/discover-states.tsx
@@ -6135,6 +6389,167 @@ function MarketChecking({ t }) {
6135
6389
  function MarketEmpty({ t }) {
6136
6390
  return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketEmpty }, /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketEmptyTitle }, t("panels.market.empty")));
6137
6391
  }
6392
+ var FailureCard_module_default = {
6393
+ block: "_block_mxnbc_1",
6394
+ head: "_head_mxnbc_9",
6395
+ title: "_title_mxnbc_16",
6396
+ fact: "_fact_mxnbc_22",
6397
+ actions: "_actions_mxnbc_30",
6398
+ hint: "_hint_mxnbc_38",
6399
+ output: "_output_mxnbc_44"
6400
+ };
6401
+ //#endregion
6402
+ //#region src/app/layouts/rightbar/FailureCard.tsx
6403
+ var COPIED_MS$1 = 1200;
6404
+ function terminalLabels(t) {
6405
+ return {
6406
+ commandLine: (line) => t("panels.market.failure.term.commandLine", { line }),
6407
+ signal: (signal) => t("panels.market.failure.term.signal", { signal }),
6408
+ exitCode: (exitCode) => t("panels.market.failure.term.exitCode", { exitCode }),
6409
+ noExitCode: t("panels.market.failure.term.noExitCode"),
6410
+ running: t("panels.market.failure.term.running"),
6411
+ failed: t("panels.market.failure.term.failed"),
6412
+ done: t("panels.market.failure.term.done"),
6413
+ copy: t("panels.market.failure.term.copy"),
6414
+ copied: t("panels.market.failure.term.copied"),
6415
+ noOutput: t("panels.market.failure.term.noOutput"),
6416
+ collapseAria: t("panels.market.failure.term.collapse"),
6417
+ collapse: t("panels.market.failure.term.collapse"),
6418
+ expandAria: (hidden) => t("panels.market.failure.term.expandAria", { hidden }),
6419
+ expand: (hidden) => t("panels.market.failure.term.expand", { hidden })
6420
+ };
6421
+ }
6422
+ function FailureCard({ t, model, onRecheck, rechecking }) {
6423
+ const hasOutput = model.command !== "" || model.output !== "";
6424
+ const [copied, setCopied] = useState(false);
6425
+ const [open, setOpen] = useState(false);
6426
+ const onCopy = useCallback(() => {
6427
+ writeClipboard(model.fix).then((ok) => {
6428
+ if (!ok) return;
6429
+ setCopied(true);
6430
+ setTimeout(() => setCopied(false), COPIED_MS$1);
6431
+ });
6432
+ }, [model.fix]);
6433
+ return /* @__PURE__ */ createElement("div", { className: FailureCard_module_default.block }, /* @__PURE__ */ createElement("div", { className: FailureCard_module_default.head }, /* @__PURE__ */ createElement(StateDot, {
6434
+ state: "error",
6435
+ size: 8
6436
+ }), /* @__PURE__ */ createElement("span", { className: FailureCard_module_default.title }, model.title)), /* @__PURE__ */ createElement("p", { className: FailureCard_module_default.fact }, model.fact), /* @__PURE__ */ createElement("div", { className: FailureCard_module_default.actions }, /* @__PURE__ */ createElement(Button, {
6437
+ type: "button",
6438
+ size: "sm",
6439
+ variant: "ghost",
6440
+ onClick: onCopy
6441
+ }, copied ? t("panels.market.failure.copied") : model.fixLabel), /* @__PURE__ */ createElement(Button, {
6442
+ type: "button",
6443
+ size: "sm",
6444
+ variant: "ghost",
6445
+ disabled: rechecking,
6446
+ onClick: onRecheck
6447
+ }, t("panels.market.failure.recheck")), hasOutput ? /* @__PURE__ */ createElement(Button, {
6448
+ type: "button",
6449
+ size: "sm",
6450
+ variant: "ghost",
6451
+ onClick: () => setOpen(!open)
6452
+ }, open ? t("panels.market.failure.hideOutput") : t("panels.market.failure.showOutput")) : null), copied ? /* @__PURE__ */ createElement("p", { className: FailureCard_module_default.hint }, model.copiedHint) : null, open && hasOutput ? /* @__PURE__ */ createElement(TerminalBlock, {
6453
+ command: model.command,
6454
+ output: model.output,
6455
+ exitCode: model.exitCode,
6456
+ maxLines: 8,
6457
+ labels: terminalLabels(t),
6458
+ className: FailureCard_module_default.output
6459
+ }) : null);
6460
+ }
6461
+ //#endregion
6462
+ //#region src/app/layouts/rightbar/failure-card-text.ts
6463
+ var TITLE_KEY = {
6464
+ permission: "panels.market.failure.permission",
6465
+ "disk-full": "panels.market.failure.diskFull",
6466
+ sandbox: "panels.market.failure.sandbox",
6467
+ unknown: "panels.market.failure.unknown"
6468
+ };
6469
+ var ASK_AGENT_KEY = "panels.market.failure.askAgent";
6470
+ function updateStuckCardOf(t, input) {
6471
+ const unknown = t("panels.market.updateUnknownVersion");
6472
+ return {
6473
+ title: t("panels.market.updateStuck.title"),
6474
+ fact: input.fact ?? t("panels.market.updateStuck.factNoChange", {
6475
+ from: input.from ?? unknown,
6476
+ latest: input.latest ?? unknown
6477
+ }),
6478
+ fixLabel: t("panels.market.failure.copyFix"),
6479
+ fix: input.command,
6480
+ copiedHint: t("panels.market.updateStuck.copiedHint"),
6481
+ command: "",
6482
+ output: "",
6483
+ exitCode: null
6484
+ };
6485
+ }
6486
+ function shellPath(path) {
6487
+ return /^[\w./@%+-]+$/.test(path) ? path : `'${path.replaceAll("'", "'\\''")}'`;
6488
+ }
6489
+ function ownerLabel(uid) {
6490
+ return uid === 0 ? "root" : `uid ${uid}`;
6491
+ }
6492
+ function failureCardOf(failure, t) {
6493
+ const path = failure.path ?? "";
6494
+ const fix = failure.fix;
6495
+ if (fix.kind === "chown") {
6496
+ const ownerUid = failure.owner?.uid;
6497
+ return {
6498
+ title: t(TITLE_KEY[failure.kind]),
6499
+ fact: ownerUid === void 0 ? t("panels.market.failure.factMode", {
6500
+ path,
6501
+ mode: failure.mode ?? "?"
6502
+ }) : t("panels.market.failure.factOwner", {
6503
+ path,
6504
+ owner: ownerLabel(ownerUid),
6505
+ me: ownerLabel(failure.current.uid)
6506
+ }),
6507
+ fixLabel: t("panels.market.failure.copyFix"),
6508
+ fix: `sudo chown -R ${fix.uid}:${fix.gid} ${shellPath(fix.path)}`,
6509
+ copiedHint: t("panels.market.failure.copiedHint"),
6510
+ command: failure.command,
6511
+ output: failure.output,
6512
+ exitCode: failure.exitCode
6513
+ };
6514
+ }
6515
+ if (fix.kind === "chmod") return {
6516
+ title: t(TITLE_KEY[failure.kind]),
6517
+ fact: t("panels.market.failure.factMode", {
6518
+ path,
6519
+ mode: failure.mode ?? "?"
6520
+ }),
6521
+ fixLabel: t("panels.market.failure.copyFix"),
6522
+ fix: `chmod -R u+w ${shellPath(fix.path)}`,
6523
+ copiedHint: t("panels.market.failure.copiedHint"),
6524
+ command: failure.command,
6525
+ output: failure.output,
6526
+ exitCode: failure.exitCode
6527
+ };
6528
+ if (fix.kind === "space") return {
6529
+ title: t(TITLE_KEY[failure.kind]),
6530
+ fact: t("panels.market.failure.factSpace", { path }),
6531
+ fixLabel: t("panels.market.failure.copyFix"),
6532
+ fix: `du -sh ${shellPath(fix.path)}`,
6533
+ copiedHint: t("panels.market.failure.copiedHint"),
6534
+ command: failure.command,
6535
+ output: failure.output,
6536
+ exitCode: failure.exitCode
6537
+ };
6538
+ return {
6539
+ title: t(TITLE_KEY[failure.kind]),
6540
+ fact: t("panels.market.failure.factStuck", { path: path === "" ? t("panels.market.failure.nowhere") : path }),
6541
+ fixLabel: t(ASK_AGENT_KEY),
6542
+ fix: t("panels.market.failure.askAgentText", {
6543
+ command: failure.command,
6544
+ path: path === "" ? t("panels.market.failure.nowhere") : path,
6545
+ code: failure.exitCode === null ? "?" : String(failure.exitCode)
6546
+ }),
6547
+ copiedHint: t("panels.market.failure.askAgentHint"),
6548
+ command: failure.command,
6549
+ output: failure.output,
6550
+ exitCode: failure.exitCode
6551
+ };
6552
+ }
6138
6553
  //#endregion
6139
6554
  //#region src/app/layouts/rightbar/market-section-icon.ts
6140
6555
  var SIZE$1 = 14;
@@ -6305,9 +6720,21 @@ function pendingRowOf(input) {
6305
6720
  ...pending.version === void 0 ? {} : { version: { installed: pending.version } }
6306
6721
  };
6307
6722
  }
6723
+ function askAgentReason(row, t) {
6724
+ if (row.hint !== void 0) return t(row.hint);
6725
+ if (row.note !== void 0) return t(row.note.key, row.note.params);
6726
+ return t(MARKET_STATE_KEY[row.state]);
6727
+ }
6728
+ function askAgentText(row, t) {
6729
+ return t("panels.market.askAgentText", {
6730
+ name: marketRowTitle(row, t),
6731
+ unit: row.id,
6732
+ reason: askAgentReason(row, t)
6733
+ });
6734
+ }
6308
6735
  //#endregion
6309
6736
  //#region src/app/layouts/rightbar/SharedSection.tsx
6310
- function SharedLine({ t, row, pending, failure, onAct }) {
6737
+ function SharedLine({ t, row, pending, failure, onAct, onRecheck, rechecking }) {
6311
6738
  const running = pending !== null && pending.id === row.id ? pending : null;
6312
6739
  const locked = pending !== null;
6313
6740
  const actions = sharedActions(row);
@@ -6330,9 +6757,14 @@ function SharedLine({ t, row, pending, failure, onAct }) {
6330
6757
  variant: "outline",
6331
6758
  disabled: locked,
6332
6759
  onClick: () => onAct(action)
6333
- }, t(ACTION_LABEL_KEY[action]))))), failure === null ? null : /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketFailure }, failure));
6760
+ }, t(ACTION_LABEL_KEY[action]))))), failure === null ? null : failure.failure === void 0 ? /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketFailure }, failure.message) : /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketFailureSeat }, /* @__PURE__ */ createElement(FailureCard, {
6761
+ t,
6762
+ model: failureCardOf(failure.failure, t),
6763
+ onRecheck,
6764
+ rechecking
6765
+ })));
6334
6766
  }
6335
- function SharedSection({ t, rows, pending, failureOf, act }) {
6767
+ function SharedSection({ t, rows, pending, failureOf, act, onRecheck, rechecking }) {
6336
6768
  if (rows.length === 0) return null;
6337
6769
  return /* @__PURE__ */ createElement("section", { className: `${MarketPage_module_default.marketSection} ${MarketPage_module_default.marketSectionQuiet}` }, /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketSectionHead }, /* @__PURE__ */ createElement("span", {
6338
6770
  className: MarketPage_module_default.marketSectionIcon,
@@ -6343,7 +6775,9 @@ function SharedSection({ t, rows, pending, failureOf, act }) {
6343
6775
  row,
6344
6776
  pending,
6345
6777
  failure: failureOf(row.id),
6346
- onAct: (action) => void act(row.id, action)
6778
+ onAct: (action) => void act(row.id, action),
6779
+ onRecheck,
6780
+ rechecking
6347
6781
  }))));
6348
6782
  }
6349
6783
  //#endregion
@@ -6366,6 +6800,25 @@ function Tip({ side = "bottom", align = "end", gap = 6, portal = true, ...rest }
6366
6800
  });
6367
6801
  }
6368
6802
  //#endregion
6803
+ //#region src/app/layouts/rightbar/AskAgentButton.tsx
6804
+ var COPIED_MS = 1200;
6805
+ function AskAgentButton({ t, text, label }) {
6806
+ const [copied, setCopied] = useState(false);
6807
+ const onCopy = useCallback(() => {
6808
+ writeClipboard(text).then((ok) => {
6809
+ if (!ok) return;
6810
+ setCopied(true);
6811
+ setTimeout(() => setCopied(false), COPIED_MS);
6812
+ });
6813
+ }, [text]);
6814
+ return /* @__PURE__ */ createElement(Button, {
6815
+ type: "button",
6816
+ size: "sm",
6817
+ variant: "ghost",
6818
+ onClick: onCopy
6819
+ }, copied ? t("panels.market.askAgentCopied") : label);
6820
+ }
6821
+ //#endregion
6369
6822
  //#region src/app/layouts/rightbar/market-section.tsx
6370
6823
  var dangerActions = [
6371
6824
  "uninstall",
@@ -6436,13 +6889,25 @@ function MarketLineStatus({ t, row, quiet }) {
6436
6889
  "aria-hidden": "true"
6437
6890
  }, "·"), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketReason }, noteText)));
6438
6891
  }
6439
- function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
6892
+ function MarketFailureBlock({ t, failure, onRecheck, rechecking }) {
6893
+ if (failure === null) return null;
6894
+ const model = failure.card ?? (failure.failure === void 0 ? void 0 : failureCardOf(failure.failure, t));
6895
+ if (model !== void 0) return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketFailureSeat }, /* @__PURE__ */ createElement(FailureCard, {
6896
+ t,
6897
+ model,
6898
+ onRecheck,
6899
+ rechecking
6900
+ }));
6901
+ return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketFailure }, failure.message);
6902
+ }
6903
+ function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy, onRecheck, rechecking }) {
6440
6904
  const running = pending !== null && pending.id === row.id ? pending : null;
6441
6905
  const locked = pending !== null;
6442
6906
  const [migrationOpen, setMigrationOpen] = useState(false);
6443
6907
  const [dismissOpen, setDismissOpen] = useState(false);
6444
6908
  const quiet = row.workbench === true && row.state === "installed" && row.hint === void 0;
6445
6909
  const actions = marketActions$1(row);
6910
+ const asksAgent = marketAsksAgent(row);
6446
6911
  const switchLocked = marketSwitchLocked(row);
6447
6912
  return /* @__PURE__ */ createElement("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ createElement("span", {
6448
6913
  className: MarketPage_module_default.marketIcon,
@@ -6454,7 +6919,11 @@ function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
6454
6919
  t,
6455
6920
  row,
6456
6921
  quiet
6457
- })), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ createElement(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
6922
+ })), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ createElement(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 && !asksAgent ? null : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketActions }, asksAgent ? /* @__PURE__ */ createElement(AskAgentButton, {
6923
+ t,
6924
+ text: askAgentText(row, t),
6925
+ label: t("panels.market.askAgent")
6926
+ }) : null, actions.map((action) => {
6458
6927
  const danger = dangerActions.includes(action);
6459
6928
  const update = updateActions.includes(action);
6460
6929
  return /* @__PURE__ */ createElement(Button, {
@@ -6477,7 +6946,12 @@ function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
6477
6946
  disabled: boardBusy === true || locked || switchLocked,
6478
6947
  label: `${marketRowTitle(row, t)} · ${t("panels.market.defaultLabel")}`,
6479
6948
  onChange: (next) => onDefault?.(next)
6480
- })))), failure === null ? null : /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketFailure }, failure), /* @__PURE__ */ createElement(MarketLineDialogs, {
6949
+ })))), /* @__PURE__ */ createElement(MarketFailureBlock, {
6950
+ t,
6951
+ failure,
6952
+ onRecheck,
6953
+ rechecking
6954
+ }), /* @__PURE__ */ createElement(MarketLineDialogs, {
6481
6955
  t,
6482
6956
  migrationOpen,
6483
6957
  dismissOpen,
@@ -6493,7 +6967,7 @@ function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
6493
6967
  }
6494
6968
  }));
6495
6969
  }
6496
- function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy, headAction, keepHead }) {
6970
+ function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy, headAction, keepHead, onRecheck, rechecking }) {
6497
6971
  if (rows.length === 0 && keepHead !== true) return null;
6498
6972
  return /* @__PURE__ */ createElement("section", { className: MarketPage_module_default.marketSection }, titleKey === void 0 ? null : /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketSectionHead }, /* @__PURE__ */ createElement("span", {
6499
6973
  className: MarketPage_module_default.marketSectionIcon,
@@ -6506,7 +6980,9 @@ function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confi
6506
6980
  failure: failureOf(row.id),
6507
6981
  onAct: (action) => confirmActions.includes(action) ? onConfirming(row.id) : void act(row.id, action),
6508
6982
  onDefault: (next) => onDefault?.(row.id, next),
6509
- boardBusy
6983
+ boardBusy,
6984
+ onRecheck,
6985
+ rechecking
6510
6986
  }))));
6511
6987
  }
6512
6988
  //#endregion
@@ -6682,9 +7158,10 @@ var FAILURE_KEYS = {
6682
7158
  "incompatible-version": "panels.market.add.failureGeneric",
6683
7159
  "not-bundle": "panels.market.add.failureGeneric",
6684
7160
  "invalid-spec": "panels.market.add.failureGeneric",
6685
- "bundle-in-use": "panels.market.add.failureGeneric",
7161
+ "bundle-in-use": "panels.market.add.failureStopProfile",
6686
7162
  "not-removable": "panels.market.add.failureGeneric",
6687
- "stop-profile": "panels.market.add.failureGeneric",
7163
+ "stop-profile": "panels.market.add.failureStopProfile",
7164
+ cancelled: "panels.market.add.failureCancelled",
6688
7165
  "stale-approval": "panels.market.add.failureGeneric"
6689
7166
  };
6690
7167
  function needsCredentials(change) {
@@ -6739,6 +7216,14 @@ function changeFailure(change, t) {
6739
7216
  if (change === void 0 || SHIPPED$1.includes(change.application)) return void 0;
6740
7217
  return failureReason(failureCode(change), change.application, t);
6741
7218
  }
7219
+ function appliedUnitsOf(value) {
7220
+ if (changeOf(value)?.application !== "applied") return [];
7221
+ const module = value?.module;
7222
+ if (typeof module !== "object" || module === null) return [];
7223
+ const record = module;
7224
+ if (record.kind !== "module") return [];
7225
+ return typeof record.unit === "string" && record.unit !== "" ? [record.unit] : [];
7226
+ }
6742
7227
  //#endregion
6743
7228
  //#region src/app/layouts/rightbar/market-update-verdict.ts
6744
7229
  function updateVerdictOf(input) {
@@ -6748,6 +7233,7 @@ function updateVerdictOf(input) {
6748
7233
  ...input.restored === void 0 ? {} : { restored: input.restored }
6749
7234
  };
6750
7235
  const installed = input.module?.version;
7236
+ if ((input.change?.application === "failed" || input.change?.application === "cancelled") && input.change?.errorCode !== "no-change") return { kind: "failed" };
6751
7237
  if (input.change?.errorCode === "no-change") return { kind: "no-change" };
6752
7238
  if (installed === void 0) return { kind: "ok" };
6753
7239
  if (input.clicked !== void 0 && installed === input.clicked) return { kind: "no-change" };
@@ -6794,6 +7280,10 @@ function restoredOf(value) {
6794
7280
  const restored = recordOf(value)?.restored;
6795
7281
  return typeof restored === "string" && restored !== "" ? restored : void 0;
6796
7282
  }
7283
+ function remedyOf(value) {
7284
+ const command = recordOf(recordOf(value)?.remedy)?.command;
7285
+ return typeof command === "string" && command !== "" ? { command } : void 0;
7286
+ }
6797
7287
  function marketActOf(options) {
6798
7288
  const { t, mocked, rowOf, seats, send, onChanged } = options;
6799
7289
  return async (id, action) => {
@@ -6853,7 +7343,8 @@ function marketActOf(options) {
6853
7343
  seats.setHeld(void 0);
6854
7344
  seats.setFailed({
6855
7345
  id,
6856
- message: t("panels.market.failed", { reason: outcome.message })
7346
+ message: t("panels.market.failed", { reason: outcome.message }),
7347
+ ...outcome.failure === void 0 ? {} : { failure: outcome.failure }
6857
7348
  });
6858
7349
  return;
6859
7350
  }
@@ -6874,24 +7365,33 @@ function marketActOf(options) {
6874
7365
  return;
6875
7366
  }
6876
7367
  const change = changeOf(value);
6877
- const failure = updateVerdictText(updateVerdictOf({
7368
+ const remedy = remedyOf(value);
7369
+ const verdict = updateVerdictOf({
6878
7370
  action,
6879
7371
  change,
6880
7372
  module: moduleOf(value),
6881
7373
  restored: restoredOf(value),
6882
7374
  clicked: next.version,
6883
7375
  latest: next.latest
6884
- }), t, {
7376
+ });
7377
+ const failure = updateVerdictText(verdict, t, {
6885
7378
  ...next.version === void 0 ? {} : { from: next.version },
6886
7379
  ...next.latest === void 0 ? {} : { latest: next.latest }
6887
7380
  });
7381
+ const cardOf = (fact) => remedy === void 0 || verdict.kind !== "no-change" && verdict.kind !== "failed" ? {} : { card: updateStuckCardOf(t, {
7382
+ command: remedy.command,
7383
+ ...fact === void 0 ? {} : { fact },
7384
+ ...next.version === void 0 ? {} : { from: next.version },
7385
+ ...next.latest === void 0 ? {} : { latest: next.latest }
7386
+ }) };
6888
7387
  onChanged({ force: true });
6889
7388
  if (failure !== void 0) {
6890
7389
  seats.setPending(null);
6891
7390
  seats.setHeld(void 0);
6892
7391
  seats.setFailed({
6893
7392
  id,
6894
- message: failure
7393
+ message: failure,
7394
+ ...cardOf()
6895
7395
  });
6896
7396
  return;
6897
7397
  }
@@ -6906,7 +7406,8 @@ function marketActOf(options) {
6906
7406
  const reason = changeFailure(change, t);
6907
7407
  if (reason !== void 0) seats.setFailed({
6908
7408
  id,
6909
- message: t("panels.market.failed", { reason })
7409
+ message: t("panels.market.failed", { reason }),
7410
+ ...cardOf(reason)
6910
7411
  });
6911
7412
  };
6912
7413
  }
@@ -6984,43 +7485,59 @@ var market_check_module_default = {
6984
7485
  };
6985
7486
  //#endregion
6986
7487
  //#region src/app/layouts/market/market-check.tsx
6987
- function MarketCheck({ t, checkedAt, checking, failed, disabled, onCheck }) {
6988
- const status = checking ? t("panels.market.checkingNow") : failed ? t("panels.market.checkFailed") : checkedAt === null ? null : t("panels.market.checkedAt", { time: checkedAgo(checkedAt, t) });
6989
- return /* @__PURE__ */ createElement("span", { className: market_check_module_default.check }, status === null ? null : /* @__PURE__ */ createElement("span", {
6990
- className: market_check_module_default.status,
6991
- "aria-live": "polite"
6992
- }, status), /* @__PURE__ */ createElement(Tip, { label: t("panels.market.checkUpdates") }, /* @__PURE__ */ createElement(Button, {
7488
+ function MarketRefreshButton({ label, checking, disabled, onCheck }) {
7489
+ return /* @__PURE__ */ createElement(Tip, { label }, /* @__PURE__ */ createElement(Button, {
6993
7490
  type: "button",
6994
7491
  variant: "ghost",
6995
7492
  size: "sm",
6996
7493
  className: market_check_module_default.button,
6997
- "aria-label": t("panels.market.checkUpdates"),
7494
+ "aria-label": label,
6998
7495
  disabled: disabled || checking,
6999
7496
  icon: /* @__PURE__ */ createElement("span", {
7000
7497
  className: `${market_check_module_default.icon}${checking ? " wb-spinning" : ""}`,
7001
7498
  "aria-hidden": "true"
7002
7499
  }, /* @__PURE__ */ createElement(IconRefreshOutlineRegular, { size: 14 })),
7003
7500
  onClick: onCheck
7004
- })));
7501
+ }));
7502
+ }
7503
+ function MarketCheck({ t, checkedAt, latestCheck = {
7504
+ checked: 0,
7505
+ unknown: 0
7506
+ }, checking, failed, disabled, onCheck }) {
7507
+ const parts = [];
7508
+ if (checking) parts.push(t("panels.market.checkingNow"));
7509
+ else {
7510
+ if (latestCheck.checked > 0 && checkedAt !== null) parts.push(t("panels.market.checkedAt", { time: checkedAgo(checkedAt, t) }));
7511
+ if (failed) parts.push(t("panels.market.checkFailed"));
7512
+ else if (latestCheck.unknown > 0) parts.push(t("panels.market.latestPartial", { n: String(latestCheck.unknown) }));
7513
+ }
7514
+ const status = parts.length === 0 ? null : parts.join(" · ");
7515
+ return /* @__PURE__ */ createElement("span", { className: market_check_module_default.check }, status === null ? null : /* @__PURE__ */ createElement("span", {
7516
+ className: market_check_module_default.status,
7517
+ "aria-live": "polite"
7518
+ }, status), /* @__PURE__ */ createElement(MarketRefreshButton, {
7519
+ label: t("panels.market.checkUpdates"),
7520
+ checking,
7521
+ disabled,
7522
+ onCheck
7523
+ }));
7005
7524
  }
7006
- var PanelFoot_module_default = {
7007
- foot: "_foot_1ud1j_1",
7008
- footText: "_footText_1ud1j_13",
7009
- footTextMd: "_footTextMd_1ud1j_18"
7010
- };
7011
7525
  //#endregion
7012
- //#region src/shared/components/PanelFoot.tsx
7013
- function PanelFoot({ text, size = "sm", children }) {
7014
- return /* @__PURE__ */ createElement("footer", { className: PanelFoot_module_default.foot }, text === void 0 ? null : /* @__PURE__ */ createElement("span", { className: size === "md" ? PanelFoot_module_default.footTextMd : PanelFoot_module_default.footText }, text), children ?? null);
7526
+ //#region src/app/layouts/market/section-check.tsx
7527
+ function SectionCheck({ t, part, seat, latest, disabled, onCheck }) {
7528
+ const { busy } = useVisibleBusy(seat.checking, 500);
7529
+ return /* @__PURE__ */ createElement(MarketCheck, {
7530
+ t,
7531
+ checkedAt: seat.checkedAt,
7532
+ latestCheck: latest,
7533
+ checking: busy,
7534
+ failed: seat.failed,
7535
+ disabled,
7536
+ onCheck: () => onCheck?.(part)
7537
+ });
7015
7538
  }
7016
7539
  //#endregion
7017
- //#region src/app/layouts/rightbar/MarketView.tsx
7018
- var CONFIRM_UNINSTALL = [
7019
- "uninstall",
7020
- "remove-bundle",
7021
- "uninstall-plugin"
7022
- ];
7023
- var NO_ROWS = [];
7540
+ //#region src/app/layouts/rightbar/market-uninstall.tsx
7024
7541
  function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
7025
7542
  const [acknowledged, setAcknowledged] = useState(false);
7026
7543
  return /* @__PURE__ */ createElement(RiskConfirmation, {
@@ -7037,8 +7554,47 @@ function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
7037
7554
  onConfirm
7038
7555
  });
7039
7556
  }
7040
- function MarketBody({ t, self, shown, pluginList, installedList, shared, pending, failed, notice, act, onConfirming, setDefault, boardBusy, check }) {
7041
- const failureOf = (id) => failed?.id === id ? failed.message : null;
7557
+ function UninstallConfirm({ t, confirming, row, onClose, act, rowById }) {
7558
+ return /* @__PURE__ */ createElement(ConfirmUninstall, {
7559
+ key: confirming ?? "",
7560
+ t,
7561
+ name: row === void 0 ? null : marketRowTitle(row, t),
7562
+ onCancel: onClose,
7563
+ onConfirm: () => {
7564
+ const id = confirming;
7565
+ onClose();
7566
+ if (id === null) return;
7567
+ const target = rowById.get(id);
7568
+ act(id, target?.plugin === true ? "uninstall-plugin" : target?.pkg === void 0 ? "uninstall" : "remove-bundle");
7569
+ }
7570
+ });
7571
+ }
7572
+ var PanelFoot_module_default = {
7573
+ foot: "_foot_1ud1j_1",
7574
+ footText: "_footText_1ud1j_13",
7575
+ footTextMd: "_footTextMd_1ud1j_18"
7576
+ };
7577
+ //#endregion
7578
+ //#region src/shared/components/PanelFoot.tsx
7579
+ function PanelFoot({ text, size = "sm", children }) {
7580
+ return /* @__PURE__ */ createElement("footer", { className: PanelFoot_module_default.foot }, text === void 0 ? null : /* @__PURE__ */ createElement("span", { className: size === "md" ? PanelFoot_module_default.footTextMd : PanelFoot_module_default.footText }, text), children ?? null);
7581
+ }
7582
+ //#endregion
7583
+ //#region src/app/layouts/rightbar/MarketView.tsx
7584
+ var CONFIRM_UNINSTALL = [
7585
+ "uninstall",
7586
+ "remove-bundle",
7587
+ "uninstall-plugin"
7588
+ ];
7589
+ var NO_CHECK = {
7590
+ checking: false,
7591
+ failed: false,
7592
+ checkedAt: null
7593
+ };
7594
+ var NO_ROWS = [];
7595
+ var NO_UNITS$1 = /* @__PURE__ */ new Set();
7596
+ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending, failed, notice, act, onConfirming, setDefault, boardBusy, checks, onRecheck, rechecking }) {
7597
+ const failureOf = (id) => failed?.id === id ? failed : null;
7042
7598
  const foot = marketFootVisible(shown, installedList);
7043
7599
  const sections = marketSections(marketOrder([...shown, ...installedList], (row) => marketRowTitle(row, t)));
7044
7600
  const installed = sections.find((section) => section.id === "installed");
@@ -7052,7 +7608,9 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
7052
7608
  failureOf,
7053
7609
  act,
7054
7610
  confirmActions: CONFIRM_UNINSTALL,
7055
- onConfirming
7611
+ onConfirming,
7612
+ onRecheck,
7613
+ rechecking
7056
7614
  }), self === void 0 ? null : /* @__PURE__ */ createElement("div", {
7057
7615
  className: MarketPage_module_default.marketSelfDivider,
7058
7616
  "aria-hidden": "true"
@@ -7062,14 +7620,16 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
7062
7620
  icon: marketSectionIcon("installed"),
7063
7621
  rows: installed?.rows ?? NO_ROWS,
7064
7622
  keepHead: true,
7065
- headAction: check,
7623
+ headAction: checks.modules,
7066
7624
  onDefault: setDefault,
7067
7625
  boardBusy,
7068
7626
  pending,
7069
7627
  failureOf,
7070
7628
  act,
7071
7629
  confirmActions: CONFIRM_UNINSTALL,
7072
- onConfirming
7630
+ onConfirming,
7631
+ onRecheck,
7632
+ rechecking
7073
7633
  }), pendingSection === void 0 ? null : /* @__PURE__ */ createElement(MarketSection, {
7074
7634
  t,
7075
7635
  titleKey: pendingSection.titleKey,
@@ -7081,20 +7641,24 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
7081
7641
  failureOf,
7082
7642
  act,
7083
7643
  confirmActions: CONFIRM_UNINSTALL,
7084
- onConfirming
7644
+ onConfirming,
7645
+ onRecheck,
7646
+ rechecking
7085
7647
  }), /* @__PURE__ */ createElement(MarketSection, {
7086
7648
  t,
7087
7649
  titleKey: "panels.market.sectionPlugins",
7088
7650
  icon: marketSectionIcon("plugins"),
7089
7651
  rows: pluginList,
7090
- headAction: check,
7652
+ headAction: checks.plugins,
7091
7653
  onDefault: setDefault,
7092
7654
  boardBusy,
7093
7655
  pending,
7094
7656
  failureOf,
7095
7657
  act,
7096
7658
  confirmActions: CONFIRM_UNINSTALL,
7097
- onConfirming
7659
+ onConfirming,
7660
+ onRecheck,
7661
+ rechecking
7098
7662
  }), foot ? /* @__PURE__ */ createElement(PanelFoot, {
7099
7663
  size: "md",
7100
7664
  text: t("panels.market.foot")
@@ -7103,11 +7667,13 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
7103
7667
  rows: shared,
7104
7668
  pending,
7105
7669
  failureOf,
7106
- act
7670
+ act,
7671
+ onRecheck,
7672
+ rechecking
7107
7673
  }));
7108
7674
  }
7109
7675
  function useMarketScene(input) {
7110
- const { t, titleOf, manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
7676
+ const { t, titleOf, manifests, installable, capabilities, updates, installed, settling, installing, mock, defaults, changed, pending, failed } = input;
7111
7677
  const names = marketNamesOf(t, installed ?? [], titleOf, mock !== void 0);
7112
7678
  const catalog = mock?.manifests ?? manifests;
7113
7679
  const marketable = mock === void 0 ? marketCatalog(manifests, installable) : catalog;
@@ -7115,7 +7681,10 @@ function useMarketScene(input) {
7115
7681
  const source = liveManifests(marketable, effective, installedIdSet(mock === void 0 ? installed : void 0));
7116
7682
  const byDefault = new Set(defaults);
7117
7683
  const updateMap = mock?.updates ?? updates ?? {};
7118
- const rows = marketRows(source, effective, updateMap, byDefault, changed);
7684
+ const rows = checkingRows(marketRows(source, effective, updateMap, byDefault, changed), {
7685
+ all: installing,
7686
+ units: settling ?? NO_UNITS$1
7687
+ });
7119
7688
  const shared = sharedRows(source, effective);
7120
7689
  const removing = removingIdOf(pending, failed);
7121
7690
  const steady = useHeldRow(pending, (id) => catalog.some((manifest) => manifest.id === id));
@@ -7136,7 +7705,27 @@ function useMarketScene(input) {
7136
7705
  busyId
7137
7706
  };
7138
7707
  }
7139
- function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, updatesCheckedAt = null, updatesFailed = false, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
7708
+ function sectionChecksOf(input) {
7709
+ return {
7710
+ modules: /* @__PURE__ */ createElement(SectionCheck, {
7711
+ t: input.t,
7712
+ part: "modules",
7713
+ seat: input.modules ?? NO_CHECK,
7714
+ latest: input.latestModules,
7715
+ disabled: input.disabled,
7716
+ onCheck: input.onCheck
7717
+ }),
7718
+ plugins: /* @__PURE__ */ createElement(SectionCheck, {
7719
+ t: input.t,
7720
+ part: "plugins",
7721
+ seat: input.plugins ?? NO_CHECK,
7722
+ latest: input.latestPlugins,
7723
+ disabled: input.disabled,
7724
+ onCheck: input.onCheck
7725
+ })
7726
+ };
7727
+ }
7728
+ function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, modulesCheck, pluginsCheck, onCheck, installed, installedRead, workbench, selfUpdate, plugins, settling, installing = false, mock, defaults = [], changed = {} }) {
7140
7729
  const { pending, setPending, confirming, setConfirming, failed, setFailed, notice, setNotice } = useMarketTransient({
7141
7730
  mock,
7142
7731
  onPending
@@ -7150,6 +7739,7 @@ function MarketView({ t, titleOf, manifests, installable, capabilities, freshnes
7150
7739
  updates,
7151
7740
  installed,
7152
7741
  settling,
7742
+ installing,
7153
7743
  mock,
7154
7744
  defaults,
7155
7745
  changed,
@@ -7216,13 +7806,21 @@ function MarketView({ t, titleOf, manifests, installable, capabilities, freshnes
7216
7806
  const settled = marketSettled(freshness, installedRead);
7217
7807
  const nothing = shown.length === 0 && self === void 0 && installedList.length === 0 && pluginList.length === 0;
7218
7808
  const { busy: checkingShown } = useVisibleBusy(freshness.checking, 500);
7219
- const check = /* @__PURE__ */ createElement(MarketCheck, {
7809
+ const recheck = () => {
7810
+ setFailed(null);
7811
+ if (mock === void 0) onChanged({ force: true });
7812
+ };
7813
+ const checks = sectionChecksOf({
7220
7814
  t,
7221
- checkedAt: updatesCheckedAt,
7222
- checking: checkingShown,
7223
- failed: updatesFailed,
7815
+ modules: modulesCheck,
7816
+ plugins: pluginsCheck,
7817
+ latestModules: latestCheckSummary(mock?.installed ?? installed),
7818
+ latestPlugins: {
7819
+ checked: checkedPluginCount(mock?.plugins ?? plugins),
7820
+ unknown: 0
7821
+ },
7224
7822
  disabled: pending !== null,
7225
- onCheck: () => onChanged({ force: true })
7823
+ onCheck: mock === void 0 ? onCheck : void 0
7226
7824
  });
7227
7825
  if (!settled || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ createElement(MarketChecking, { t });
7228
7826
  if (nothing) return /* @__PURE__ */ createElement(MarketEmpty, { t });
@@ -7240,7 +7838,9 @@ function MarketView({ t, titleOf, manifests, installable, capabilities, freshnes
7240
7838
  onConfirming: setConfirming,
7241
7839
  setDefault,
7242
7840
  boardBusy,
7243
- check
7841
+ checks,
7842
+ onRecheck: recheck,
7843
+ rechecking: checkingShown
7244
7844
  }), /* @__PURE__ */ createElement(UninstallConfirm, {
7245
7845
  t,
7246
7846
  confirming,
@@ -7250,21 +7850,6 @@ function MarketView({ t, titleOf, manifests, installable, capabilities, freshnes
7250
7850
  rowById
7251
7851
  }));
7252
7852
  }
7253
- function UninstallConfirm({ t, confirming, row, onClose, act, rowById }) {
7254
- return /* @__PURE__ */ createElement(ConfirmUninstall, {
7255
- key: confirming ?? "",
7256
- t,
7257
- name: row === void 0 ? null : marketRowTitle(row, t),
7258
- onCancel: onClose,
7259
- onConfirm: () => {
7260
- const id = confirming;
7261
- onClose();
7262
- if (id === null) return;
7263
- const target = rowById.get(id);
7264
- act(id, target?.plugin === true ? "uninstall-plugin" : target?.pkg === void 0 ? "uninstall" : "remove-bundle");
7265
- }
7266
- });
7267
- }
7268
7853
  //#endregion
7269
7854
  //#region ../../node_modules/.pnpm/dayjs@1.11.23/node_modules/dayjs/plugin/localizedFormat.js
7270
7855
  var require_localizedFormat = /* @__PURE__ */ __commonJSMin(((exports, module) => {
@@ -8573,6 +9158,8 @@ function useDiscover(t, active, onInstalled) {
8573
9158
  const [addingSource, setAddingSource] = useState(false);
8574
9159
  const [pendingSourceId, setPendingSourceId] = useState(null);
8575
9160
  const [knownSources, setKnownSources] = useState(null);
9161
+ const [installToken] = useState(() => `market-install:${globalThis.crypto.randomUUID()}`);
9162
+ usePublishMarketInstalling(installToken, installing !== null);
8576
9163
  const loaded = useRef(false);
8577
9164
  const loadTicket = useRef(0);
8578
9165
  const sourceTicket = useRef(0);
@@ -8682,7 +9269,7 @@ function useDiscover(t, active, onInstalled) {
8682
9269
  if (selectedSource === void 0 || selectedSource.kind !== "git") return null;
8683
9270
  if (kind !== "git-empty" && kind !== "git-missing-index") return null;
8684
9271
  return {
8685
- path: selectedSource.path ?? "market.json",
9272
+ path: selectedSource.path ?? "market",
8686
9273
  empty: kind === "git-empty"
8687
9274
  };
8688
9275
  }, [payload, selectedSource]);
@@ -8825,6 +9412,7 @@ function useDiscover(t, active, onInstalled) {
8825
9412
  ...target.registry === void 0 ? {} : { registry: target.registry }
8826
9413
  }).then((outcome) => {
8827
9414
  if (!outcome.ok) return;
9415
+ publishMarketApplied(appliedUnitsOf(outcome.value));
8828
9416
  const verdict = installVerdictOf(outcome.value, t);
8829
9417
  if (verdict.kind === "failed") {
8830
9418
  provision.fail(verdict.text);
@@ -9036,7 +9624,7 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
9036
9624
  }
9037
9625
  //#endregion
9038
9626
  //#region src/app/layouts/market/market-header.tsx
9039
- function MarketHeader({ t, idPrefix, tab, busy, onTab, onAdd }) {
9627
+ function MarketHeader({ t, idPrefix, tab, busy, checking, onTab, onReload, onAdd }) {
9040
9628
  const tabItems = useMemo(() => [{
9041
9629
  value: "installed",
9042
9630
  label: t("panels.market.tabInstalled"),
@@ -9048,14 +9636,19 @@ function MarketHeader({ t, idPrefix, tab, busy, onTab, onAdd }) {
9048
9636
  id: `${idPrefix}-tab-discover`,
9049
9637
  panelId: `${idPrefix}-panel-discover`
9050
9638
  }], [idPrefix, t]);
9051
- return /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement("header", { className: MarketPage_module_default.marketPageHead }, /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("h1", { className: MarketPage_module_default.marketPageTitle }, t("panels.tab.market")), /* @__PURE__ */ createElement("p", { className: MarketPage_module_default.marketPageIntro }, t("panels.market.lead"))), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketPageTools }, tab !== "installed" ? null : /* @__PURE__ */ createElement(Button, {
9639
+ return /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement("header", { className: MarketPage_module_default.marketPageHead }, /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("h1", { className: MarketPage_module_default.marketPageTitle }, t("panels.tab.market")), /* @__PURE__ */ createElement("p", { className: MarketPage_module_default.marketPageIntro }, t("panels.market.lead"))), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketPageTools }, tab !== "installed" ? null : /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement(MarketRefreshButton, {
9640
+ label: t("panels.market.checkAll"),
9641
+ checking,
9642
+ disabled: busy,
9643
+ onCheck: onReload
9644
+ }), /* @__PURE__ */ createElement(Button, {
9052
9645
  variant: "primary",
9053
9646
  size: "sm",
9054
9647
  className: MarketPage_module_default.marketAddButton,
9055
9648
  icon: /* @__PURE__ */ createElement(IconPlusOutlineRegular, { size: 13 }),
9056
9649
  disabled: busy,
9057
9650
  onClick: onAdd
9058
- }, t("panels.market.add.open")))), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketTabs }, /* @__PURE__ */ createElement(SegmentedTabs, {
9651
+ }, t("panels.market.add.open"))))), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketTabs }, /* @__PURE__ */ createElement(SegmentedTabs, {
9059
9652
  className: MarketPage_module_default.marketTabList,
9060
9653
  items: tabItems,
9061
9654
  value: tab,
@@ -9472,21 +10065,35 @@ function readModuleVersions(force = false) {
9472
10065
  function readInstalledPlugins(force = false) {
9473
10066
  return apiGet(INSTALLED_PLUGINS_ROUTE, force ? { force: "1" } : void 0);
9474
10067
  }
10068
+ //#endregion
10069
+ //#region src/app/layouts/market/use-module-versions.ts
10070
+ var IDLE$1 = {
10071
+ checking: false,
10072
+ failed: false,
10073
+ checkedAt: null
10074
+ };
9475
10075
  var state = {
9476
10076
  modules: null,
9477
10077
  plugins: null,
9478
10078
  workbench: null,
9479
10079
  selfUpdate: null,
9480
10080
  read: false,
9481
- checking: false,
9482
- failed: false,
9483
- checkedAt: null
10081
+ allChecking: false,
10082
+ modulesCheck: IDLE$1,
10083
+ pluginsCheck: IDLE$1
9484
10084
  };
9485
10085
  var listeners$2 = /* @__PURE__ */ new Set();
9486
- var inFlight = null;
9487
- var readSeq = 0;
9488
- var newestForceSeq = -1;
10086
+ var inFlight = /* @__PURE__ */ new Map();
10087
+ var seq$1 = {
10088
+ modules: 0,
10089
+ plugins: 0
10090
+ };
10091
+ var newestForceSeq = {
10092
+ modules: -1,
10093
+ plugins: -1
10094
+ };
9489
10095
  var epoch = 0;
10096
+ var allSeq = 0;
9490
10097
  function bumpModuleVersionsEpoch() {
9491
10098
  epoch += 1;
9492
10099
  }
@@ -9511,48 +10118,87 @@ function withMarketUpdates(modules, rows) {
9511
10118
  };
9512
10119
  });
9513
10120
  }
10121
+ function moduleVersionsCheckedAt(now) {
10122
+ const at = [now.modulesCheck.checkedAt, now.pluginsCheck.checkedAt].filter((one) => one !== null);
10123
+ return at.length === 0 ? null : Math.max(...at);
10124
+ }
10125
+ function moduleVersionsChecking(value) {
10126
+ return value.allChecking || value.modulesCheck.checking || value.pluginsCheck.checking;
10127
+ }
9514
10128
  function publish$1(next) {
9515
10129
  state = next;
9516
10130
  for (const listener of [...listeners$2]) listener();
9517
10131
  }
9518
- function runModuleVersionsRead(force = false, fresh = false) {
9519
- const at = epoch;
9520
- if (!fresh && inFlight !== null && inFlight.force === force && inFlight.epoch === at) return inFlight.promise;
9521
- const seq = readSeq += 1;
9522
- if (force) newestForceSeq = seq;
9523
- if (!state.checking) publish$1({
9524
- ...state,
10132
+ function partsOf(scope) {
10133
+ return scope === "all" ? ["modules", "plugins"] : [scope];
10134
+ }
10135
+ function checking(scope) {
10136
+ const mark = (seat) => seat.checking ? seat : {
10137
+ ...seat,
9525
10138
  checking: true
9526
- });
9527
- const promise = Promise.all([
9528
- readModuleVersions(force),
9529
- readInstalledPlugins(force),
9530
- readMarketInstalled()
9531
- ]).catch(() => null).then((responses) => {
10139
+ };
10140
+ return {
10141
+ ...state,
10142
+ allChecking: scope === "all" || state.allChecking,
10143
+ modulesCheck: scope === "plugins" ? state.modulesCheck : mark(state.modulesCheck),
10144
+ pluginsCheck: scope === "modules" ? state.pluginsCheck : mark(state.pluginsCheck)
10145
+ };
10146
+ }
10147
+ function landed(seat, ticket, latest, ok, at) {
10148
+ return {
10149
+ checking: ticket === latest ? false : seat.checking,
10150
+ failed: !ok,
10151
+ checkedAt: ok ? at : seat.checkedAt
10152
+ };
10153
+ }
10154
+ function readModulesOnce(force) {
10155
+ return Promise.all([readModuleVersions(force), readMarketInstalled()]).catch(() => null);
10156
+ }
10157
+ function readPluginsOnce(force) {
10158
+ return readInstalledPlugins(force).catch(() => null);
10159
+ }
10160
+ function runModuleVersionsRead(force = false, fresh = false, scope = "all") {
10161
+ const at = epoch;
10162
+ const running = inFlight.get(scope);
10163
+ if (!fresh && running !== void 0 && running.force === force && running.epoch === at) return running.promise;
10164
+ const allTicket = scope === "all" ? allSeq += 1 : allSeq;
10165
+ const tickets = /* @__PURE__ */ new Map();
10166
+ for (const part of partsOf(scope)) {
10167
+ const ticket = seq$1[part] += 1;
10168
+ tickets.set(part, ticket);
10169
+ if (force) newestForceSeq[part] = ticket;
10170
+ }
10171
+ publish$1(checking(scope));
10172
+ const modulesRead = tickets.has("modules") ? readModulesOnce(force) : null;
10173
+ const pluginsRead = tickets.has("plugins") ? readPluginsOnce(force) : null;
10174
+ const promise = Promise.all([modulesRead, pluginsRead]).then(([modules, plugins]) => {
9532
10175
  if (at !== epoch) return;
9533
- if (!force && seq < newestForceSeq) return;
9534
- const versions = responses?.[0];
9535
- const plugins = responses?.[1];
9536
- const market = responses?.[2];
9537
- const read = versions?.ok === true;
10176
+ const now = Date.now();
10177
+ const modulesTicket = tickets.get("modules");
10178
+ const pluginsTicket = tickets.get("plugins");
10179
+ const modulesLanded = modulesTicket !== void 0 && (force || modulesTicket >= newestForceSeq.modules);
10180
+ const pluginsLanded = pluginsTicket !== void 0 && (force || pluginsTicket >= newestForceSeq.plugins);
10181
+ const modulesOk = modulesLanded && modules !== null && modules[0].ok === true;
10182
+ const pluginsOk = pluginsLanded && plugins !== null && plugins.ok === true;
9538
10183
  publish$1({
9539
- modules: read ? withMarketUpdates(versions.modules, market?.ok === true ? market.modules : []) : state.modules,
9540
- plugins: plugins?.ok === true ? plugins.plugins : state.plugins,
9541
- workbench: read ? versions.workbench ?? null : state.workbench,
9542
- selfUpdate: read ? versions.selfUpdate ?? null : state.selfUpdate,
10184
+ ...state,
10185
+ modules: modulesOk ? withMarketUpdates(modules[0].modules, modules[1].ok === true ? modules[1].modules : []) : state.modules,
10186
+ workbench: modulesOk ? modules[0].workbench ?? null : state.workbench,
10187
+ selfUpdate: modulesOk ? modules[0].selfUpdate ?? null : state.selfUpdate,
10188
+ plugins: pluginsOk ? plugins.plugins : state.plugins,
9543
10189
  read: true,
9544
- checking: false,
9545
- failed: !read,
9546
- checkedAt: read ? Date.now() : state.checkedAt
10190
+ allChecking: scope === "all" && allTicket === allSeq ? false : state.allChecking,
10191
+ modulesCheck: modulesLanded && modulesTicket !== void 0 ? landed(state.modulesCheck, modulesTicket, seq$1.modules, modulesOk, now) : state.modulesCheck,
10192
+ pluginsCheck: pluginsLanded && pluginsTicket !== void 0 ? landed(state.pluginsCheck, pluginsTicket, seq$1.plugins, pluginsOk, now) : state.pluginsCheck
9547
10193
  });
9548
10194
  }).finally(() => {
9549
- if (inFlight?.promise === promise) inFlight = null;
10195
+ if (inFlight.get(scope)?.promise === promise) inFlight.delete(scope);
9550
10196
  });
9551
- inFlight = {
10197
+ inFlight.set(scope, {
9552
10198
  force,
9553
10199
  epoch: at,
9554
10200
  promise
9555
- };
10201
+ });
9556
10202
  return promise;
9557
10203
  }
9558
10204
  function useModuleVersions() {
@@ -9563,27 +10209,70 @@ function useModuleVersions() {
9563
10209
  const first = !mountedRef.current;
9564
10210
  mountedRef.current = true;
9565
10211
  if (first && !shouldProbeOnEnter({
9566
- checkedAt: state.checkedAt,
10212
+ checkedAt: moduleVersionsCheckedAt(state),
9567
10213
  now: Date.now(),
9568
10214
  staleMs: MARKET_STALE_MS
9569
10215
  })) return;
9570
10216
  runModuleVersionsRead(false);
9571
10217
  }, [factRev]);
9572
10218
  const reload = useCallback((options) => {
9573
- runModuleVersionsRead(options?.force === true, options?.fresh === true);
10219
+ runModuleVersionsRead(options?.force === true, options?.fresh === true, options?.scope ?? "all");
9574
10220
  }, []);
9575
10221
  return {
9576
- modules: value.modules,
9577
- plugins: value.plugins,
9578
- workbench: value.workbench,
9579
- selfUpdate: value.selfUpdate,
9580
- read: value.read,
9581
- checking: value.checking,
9582
- failed: value.failed,
9583
- checkedAt: value.checkedAt,
10222
+ ...value,
10223
+ checking: moduleVersionsChecking(value),
9584
10224
  reload
9585
10225
  };
9586
10226
  }
10227
+ //#endregion
10228
+ //#region src/app/layouts/market/use-market-reload.ts
10229
+ function useMarketReload(input) {
10230
+ const { checkedAt, forceProbe, reloadCapability, reloadVersions } = input;
10231
+ const reload = useCallback((options) => {
10232
+ if (options?.force === true) {
10233
+ bumpModuleVersionsEpoch();
10234
+ bumpCapabilityEpoch();
10235
+ forceProbe();
10236
+ reloadVersions({
10237
+ force: true,
10238
+ fresh: true
10239
+ });
10240
+ return;
10241
+ }
10242
+ reloadCapability();
10243
+ reloadVersions();
10244
+ }, [
10245
+ reloadCapability,
10246
+ reloadVersions,
10247
+ forceProbe
10248
+ ]);
10249
+ const checkPart = useCallback((part) => reloadVersions({
10250
+ force: true,
10251
+ fresh: true,
10252
+ scope: part
10253
+ }), [reloadVersions]);
10254
+ const enteredRef = useRef(false);
10255
+ useEffect(() => {
10256
+ if (enteredRef.current) return;
10257
+ enteredRef.current = true;
10258
+ reloadVersions();
10259
+ if (!shouldProbeOnEnter({
10260
+ checkedAt,
10261
+ now: Date.now(),
10262
+ staleMs: MARKET_STALE_MS
10263
+ })) return;
10264
+ markNextProbeSilent();
10265
+ forceProbe();
10266
+ }, [
10267
+ checkedAt,
10268
+ forceProbe,
10269
+ reloadVersions
10270
+ ]);
10271
+ return {
10272
+ reload,
10273
+ checkPart
10274
+ };
10275
+ }
9587
10276
  var AddModule_module_default = {
9588
10277
  wide: "_wide_1lv8f_1",
9589
10278
  dialog: "_dialog_1lv8f_8",
@@ -9835,18 +10524,79 @@ function AddModuleResult({ t, state }) {
9835
10524
  }, t("panels.market.add.failed", { reason })) : kind === "restart" ? /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement("p", { className: AddModule_module_default.resultWarn }, t("panels.market.add.doneRestart")), why === void 0 ? null : /* @__PURE__ */ createElement("p", { className: AddModule_module_default.resultMeta }, why)) : kind === "quiet" ? null : /* @__PURE__ */ createElement("p", { className: AddModule_module_default.result }, t("panels.market.add.tookEffect")), builds.length === 0 ? null : /* @__PURE__ */ createElement("div", { className: AddModule_module_default.approval }, /* @__PURE__ */ createElement("p", { className: AddModule_module_default.approvalTitle }, t("panels.market.add.approveTitle")), /* @__PURE__ */ createElement("p", { className: AddModule_module_default.approvalText }, t("panels.market.add.approveHint", { packages: builds.join("、") })), /* @__PURE__ */ 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__ */ createElement("p", { className: supplyTone(outcome.supply.state) }, t(supply, { reason: outcome.supply.reason ?? "" })), state.failure === null ? null : /* @__PURE__ */ createElement("p", { className: AddModule_module_default.problem }, state.failure), outcome.change.errorDetail === void 0 ? null : /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement("p", { className: AddModule_module_default.detailLabel }, t("panels.market.add.details")), /* @__PURE__ */ createElement("p", { className: AddModule_module_default.detail }, outcome.change.errorDetail)));
9836
10525
  }
9837
10526
  //#endregion
10527
+ //#region src/app/layouts/market/add-module-registry-prefs.ts
10528
+ var DEFAULT_REGISTRY_CHOICE = {
10529
+ kind: "default",
10530
+ value: ""
10531
+ };
10532
+ function isRegistryKind(value) {
10533
+ return value === "default" || value === "url" || value === "custom";
10534
+ }
10535
+ function parseRegistryChoice(raw) {
10536
+ if (raw === null) return DEFAULT_REGISTRY_CHOICE;
10537
+ let value;
10538
+ try {
10539
+ value = JSON.parse(raw);
10540
+ } catch {
10541
+ return DEFAULT_REGISTRY_CHOICE;
10542
+ }
10543
+ if (typeof value !== "object" || value === null) return DEFAULT_REGISTRY_CHOICE;
10544
+ const record = value;
10545
+ if (!isRegistryKind(record.kind)) return DEFAULT_REGISTRY_CHOICE;
10546
+ if (record.kind === "default") return DEFAULT_REGISTRY_CHOICE;
10547
+ if (record.kind === "custom") return {
10548
+ kind: "custom",
10549
+ value: ""
10550
+ };
10551
+ if (typeof record.value !== "string" || !customRegistryAllowed(record.value)) return DEFAULT_REGISTRY_CHOICE;
10552
+ return {
10553
+ kind: "url",
10554
+ value: record.value.trim()
10555
+ };
10556
+ }
10557
+ function readRegistryPrefs() {
10558
+ const custom = readText(STORAGE_KEY_MARKET_REGISTRY_CUSTOM);
10559
+ return {
10560
+ choice: parseRegistryChoice(readText(STORAGE_KEY_MARKET_REGISTRY)),
10561
+ custom: custom === null ? "" : custom.trim()
10562
+ };
10563
+ }
10564
+ function writeRegistryChoice(choice) {
10565
+ if (choice.kind === "custom") {
10566
+ writeText(STORAGE_KEY_MARKET_REGISTRY, JSON.stringify({
10567
+ kind: "custom",
10568
+ value: ""
10569
+ }));
10570
+ return;
10571
+ }
10572
+ if (choice.kind === "url" && customRegistryAllowed(choice.value)) {
10573
+ writeText(STORAGE_KEY_MARKET_REGISTRY, JSON.stringify({
10574
+ kind: "url",
10575
+ value: choice.value.trim()
10576
+ }));
10577
+ return;
10578
+ }
10579
+ writeText(STORAGE_KEY_MARKET_REGISTRY, JSON.stringify(DEFAULT_REGISTRY_CHOICE));
10580
+ }
10581
+ function writeRegistryCustom(value) {
10582
+ const text = value.trim();
10583
+ writeText(STORAGE_KEY_MARKET_REGISTRY_CUSTOM, text === "" ? null : text);
10584
+ }
10585
+ function reconcileRegistryChoice(choice, choices) {
10586
+ if (choice.kind !== "url") return choice;
10587
+ return choices.some((option) => option.choice.kind === "url" && option.choice.value === choice.value) ? choice : DEFAULT_REGISTRY_CHOICE;
10588
+ }
10589
+ //#endregion
9838
10590
  //#region src/app/layouts/market/use-add-module.ts
9839
10591
  function newRequestId() {
9840
10592
  return crypto.randomUUID();
9841
10593
  }
9842
10594
  function useAddModule(options) {
9843
10595
  const { onInstalled, failedText } = options;
10596
+ const [prefs] = useState(readRegistryPrefs);
9844
10597
  const [spec, setSpec] = useState("");
9845
- const [choice, setChoice] = useState({
9846
- kind: "default",
9847
- value: ""
9848
- });
9849
- const [custom, setCustom] = useState("");
10598
+ const [choice, setChoice] = useState(prefs.choice);
10599
+ const [custom, setCustom] = useState(prefs.custom);
9850
10600
  const [registryOpen, setRegistryOpen] = useState(false);
9851
10601
  const [guideOpen, setGuideOpen] = useState(false);
9852
10602
  const [phase, setPhase] = useState("idle");
@@ -9858,6 +10608,8 @@ function useAddModule(options) {
9858
10608
  const generationRef = useRef(0);
9859
10609
  const requestIdRef = useRef("");
9860
10610
  const { busy: classifying } = useVisibleBusy(phase === "inspecting", 500);
10611
+ const [installToken] = useState(() => `market-install:${newRequestId()}`);
10612
+ usePublishMarketInstalling(installToken, phase === "installing");
9861
10613
  const write = useHostWrite({
9862
10614
  channel: "provision",
9863
10615
  networkText: failedText
@@ -9874,7 +10626,9 @@ function useAddModule(options) {
9874
10626
  let alive = true;
9875
10627
  readBundleRegistries().then((response) => {
9876
10628
  if (!alive) return;
9877
- setChoices(registryOptions(response.ok ? response.registries : null));
10629
+ const options = registryOptions(response.ok ? response.registries : null);
10630
+ setChoices(options);
10631
+ setChoice((previous) => reconcileRegistryChoice(previous, options));
9878
10632
  });
9879
10633
  return () => {
9880
10634
  alive = false;
@@ -9941,6 +10695,7 @@ function useAddModule(options) {
9941
10695
  supply: value.supply,
9942
10696
  ...value.plugin === void 0 ? {} : { plugin: value.plugin }
9943
10697
  });
10698
+ publishMarketApplied(appliedUnitsOf(value));
9944
10699
  setPhase("result");
9945
10700
  if (value.change.application === "applied" || value.change.application === "restart-required") onInstalled();
9946
10701
  });
@@ -9985,6 +10740,14 @@ function useAddModule(options) {
9985
10740
  setPreview(null);
9986
10741
  setPhase("idle");
9987
10742
  }, []);
10743
+ const choose = useCallback((next) => {
10744
+ setChoice(next);
10745
+ writeRegistryChoice(next);
10746
+ }, []);
10747
+ const chooseCustom = useCallback((value) => {
10748
+ setCustom(value);
10749
+ writeRegistryCustom(value);
10750
+ }, []);
9988
10751
  return {
9989
10752
  spec,
9990
10753
  choice,
@@ -10000,10 +10763,8 @@ function useAddModule(options) {
10000
10763
  removing,
10001
10764
  builds: outcome?.change.pendingBuilds ?? [],
10002
10765
  setSpec,
10003
- setChoice: useCallback((next) => {
10004
- setChoice(next);
10005
- }, []),
10006
- setCustom,
10766
+ setChoice: choose,
10767
+ setCustom: chooseCustom,
10007
10768
  toggleRegistry: useCallback(() => setRegistryOpen((value) => !value), []),
10008
10769
  closeRegistry: useCallback(() => setRegistryOpen(false), []),
10009
10770
  toggleGuide: useCallback(() => setGuideOpen((value) => !value), []),
@@ -10152,7 +10913,8 @@ function makeMarketEntryIcon(units) {
10152
10913
  installed: modules === null ? void 0 : withClientRefusals(modules, units.refusals()),
10153
10914
  plugins,
10154
10915
  workbench,
10155
- busy: useMarketBusy()
10916
+ busy: useMarketBusy(),
10917
+ ...useMarketInstallState()
10156
10918
  });
10157
10919
  useEffect(() => {
10158
10920
  publishPanelHint(MARKET_PANEL_ID, hint);
@@ -10167,50 +10929,23 @@ function MarketPanel({ t, units, titleOf }) {
10167
10929
  const manifests = useLiveManifests(units);
10168
10930
  const installable = useInstallableUnits(units);
10169
10931
  const { capabilities, checkedAt, checking, forceProbe, reload: reloadCapability } = useCapabilityMap(0);
10170
- const { modules, plugins, workbench, selfUpdate, checking: versionsChecking, failed: versionsFailed, checkedAt: versionsCheckedAt, read: installedRead, reload: reloadVersions } = useModuleVersions();
10932
+ const { modules, plugins, workbench, selfUpdate, checking: versionsChecking, allChecking: versionsAllChecking, modulesCheck, pluginsCheck, read: installedRead, reload: reloadVersions } = useModuleVersions();
10171
10933
  const machineBoard = useEnabledUnits(0, null);
10934
+ const install = useMarketInstallState();
10172
10935
  const [adding, setAdding] = useState(false);
10173
10936
  const [acting, setActing] = useState(false);
10174
10937
  const [tab, setTab] = useState("installed");
10175
10938
  const openAddModule = useCallback(() => setAdding(true), []);
10176
10939
  const updates = useMemo(() => marketUpdatesOf(modules), [modules]);
10177
10940
  const installed = modules === null ? void 0 : withClientRefusals(modules, units.refusals());
10178
- const reload = useCallback((options) => {
10179
- if (options?.force === true) {
10180
- bumpModuleVersionsEpoch();
10181
- bumpCapabilityEpoch();
10182
- forceProbe();
10183
- reloadVersions({
10184
- force: true,
10185
- fresh: true
10186
- });
10187
- return;
10188
- }
10189
- reloadCapability();
10190
- reloadVersions();
10191
- }, [
10192
- reloadCapability,
10193
- reloadVersions,
10194
- forceProbe
10195
- ]);
10196
- const enteredRef = useRef(false);
10197
- useEffect(() => {
10198
- if (enteredRef.current) return;
10199
- enteredRef.current = true;
10200
- reloadVersions();
10201
- if (!shouldProbeOnEnter({
10202
- checkedAt,
10203
- now: Date.now(),
10204
- staleMs: MARKET_STALE_MS
10205
- })) return;
10206
- markNextProbeSilent();
10207
- forceProbe();
10208
- }, [
10941
+ const { reload, checkPart } = useMarketReload({
10209
10942
  checkedAt,
10210
10943
  forceProbe,
10944
+ reloadCapability,
10211
10945
  reloadVersions
10212
- ]);
10946
+ });
10213
10947
  const settling = useSettlingModules((installed ?? []).map((module) => module.unit).join("|"), manifests.map((manifest) => manifest.id).join("|"), Object.keys(capabilities ?? {}).join("|"));
10948
+ const held = install.applied.size === 0 ? settling : /* @__PURE__ */ new Set([...settling, ...install.applied]);
10214
10949
  const freshness = {
10215
10950
  loaded: capabilities !== null,
10216
10951
  checking: checking || versionsChecking,
@@ -10232,7 +10967,9 @@ function MarketPanel({ t, units, titleOf }) {
10232
10967
  idPrefix: MARKET_PANEL_ID,
10233
10968
  tab,
10234
10969
  busy,
10970
+ checking: checking || versionsAllChecking,
10235
10971
  onTab: setTab,
10972
+ onReload: () => reload({ force: true }),
10236
10973
  onAdd: openAddModule
10237
10974
  }), devMarket.strip, /* @__PURE__ */ createElement("div", {
10238
10975
  id: `${MARKET_PANEL_ID}-panel-installed`,
@@ -10250,14 +10987,16 @@ function MarketPanel({ t, units, titleOf }) {
10250
10987
  onChanged: reload,
10251
10988
  onPending: setActing,
10252
10989
  updates,
10253
- updatesCheckedAt: versionsCheckedAt,
10254
- updatesFailed: versionsFailed,
10990
+ modulesCheck,
10991
+ pluginsCheck,
10992
+ onCheck: checkPart,
10255
10993
  installed,
10256
10994
  installedRead: shownRead,
10257
10995
  workbench,
10258
10996
  selfUpdate,
10259
10997
  plugins,
10260
- settling: mock === void 0 ? settling : void 0,
10998
+ settling: mock === void 0 ? held : void 0,
10999
+ installing: mock === void 0 ? install.installing : false,
10261
11000
  mock,
10262
11001
  defaults: machineBoard?.defaults ?? [],
10263
11002
  changed: machineBoard?.changed ?? {}
@@ -11744,6 +12483,7 @@ function createClientUnitRegistry(options = {}) {
11744
12483
  return manifestsCache;
11745
12484
  },
11746
12485
  refusals: () => refusals,
12486
+ declared: () => [...known.values()],
11747
12487
  installable: () => installableIds,
11748
12488
  setManifests(manifests, installable) {
11749
12489
  known = new Map(manifests.map((manifest) => [manifest.id, manifest]));
@@ -12688,6 +13428,45 @@ function MarketSourceApprovalSeat({ tool, args, t }) {
12688
13428
  }, []);
12689
13429
  return createElement(ApprovalPlan, { rows: marketSourceRows(tool, args, payload, t) });
12690
13430
  }
13431
+ function pluginToolIndexOf(manifests) {
13432
+ const index = /* @__PURE__ */ new Map();
13433
+ for (const manifest of manifests) for (const tool of manifest.tools) {
13434
+ if (tool.opencli === void 0) continue;
13435
+ index.set(tool.name, tool.opencli);
13436
+ }
13437
+ return index;
13438
+ }
13439
+ function argText(value) {
13440
+ if (typeof value === "string") return value;
13441
+ if (typeof value === "number" || typeof value === "boolean") return String(value);
13442
+ const text = JSON.stringify(value);
13443
+ return text === void 0 ? String(value) : text;
13444
+ }
13445
+ function pluginApprovalRows(origin, args, t) {
13446
+ const rows = [{
13447
+ label: t("approval.plugin.name"),
13448
+ value: origin.plugin
13449
+ }, {
13450
+ label: t("approval.plugin.command"),
13451
+ value: origin.command
13452
+ }];
13453
+ const note = args[APPROVAL_NOTE_ARG];
13454
+ if (typeof note === "string" && note.trim() !== "") rows.push({
13455
+ label: t("approval.plugin.note"),
13456
+ value: note.replace(/\s+/g, " ").trim()
13457
+ });
13458
+ for (const name of origin.args) {
13459
+ if (!(name in args)) continue;
13460
+ rows.push({
13461
+ label: name,
13462
+ value: argText(args[name])
13463
+ });
13464
+ }
13465
+ return rows;
13466
+ }
13467
+ function shellApprovalRenderer(manifests) {
13468
+ return (input, t) => shellApprovalDetail(input, t, pluginToolIndexOf(manifests()));
13469
+ }
12691
13470
  function shellClaimsApprovalDetail(tool) {
12692
13471
  return ALL_TOOLS.includes(tool);
12693
13472
  }
@@ -12699,7 +13478,9 @@ function stopApprovalRows(args, t) {
12699
13478
  value: `${unit === "" ? "<unit>" : unit} · ${id === "" ? "<id>" : id}`
12700
13479
  }];
12701
13480
  }
12702
- function shellApprovalPlan(input, t) {
13481
+ function shellApprovalPlan(input, t, pluginTools) {
13482
+ const origin = pluginTools?.get(input.tool);
13483
+ if (origin !== void 0) return { rows: pluginApprovalRows(origin, input.args, t) };
12703
13484
  if (input.tool === "workbench_diy_record_prepare") return {
12704
13485
  rows: recordApprovalRows(input.args, t),
12705
13486
  warn: t("approval.record.noSwitch")
@@ -12710,7 +13491,7 @@ function shellApprovalPlan(input, t) {
12710
13491
  };
12711
13492
  return shellClaimsApprovalDetail(input.tool) ? { rows: [] } : void 0;
12712
13493
  }
12713
- function shellApprovalDetail(input, t) {
13494
+ function shellApprovalDetail(input, t, pluginTools) {
12714
13495
  if (input.tool === "workbench_diy_publish") return createElement(PublishApprovalSeat, {
12715
13496
  args: input.args,
12716
13497
  t
@@ -12720,7 +13501,7 @@ function shellApprovalDetail(input, t) {
12720
13501
  args: input.args,
12721
13502
  t
12722
13503
  });
12723
- const plan = shellApprovalPlan(input, t);
13504
+ const plan = shellApprovalPlan(input, t, pluginTools);
12724
13505
  if (plan === void 0) return void 0;
12725
13506
  if (plan.rows.length === 0) return createElement(Fragment, null);
12726
13507
  return /* @__PURE__ */ createElement(ApprovalPlan, {
@@ -13070,6 +13851,10 @@ function Breadcrumbs({ trail, onGoTo, titleKeyOf, t }) {
13070
13851
  }, /* @__PURE__ */ createElement("span", { className: Breadcrumbs_module_default.tabTitle }, stepLabel(step, titleKeyOf, t))));
13071
13852
  }));
13072
13853
  }
13854
+ var BoardEmpty_module_default = {
13855
+ actions: "_actions_smeq7_1",
13856
+ action: "_action_smeq7_1"
13857
+ };
13073
13858
  //#endregion
13074
13859
  //#region src/app/layouts/rightbar/BoardEmpty.tsx
13075
13860
  function BoardEmpty({ t, onBuildModule, onOpenModules, onOpenMarket }) {
@@ -13077,20 +13862,23 @@ function BoardEmpty({ t, onBuildModule, onOpenModules, onOpenMarket }) {
13077
13862
  icon: /* @__PURE__ */ createElement(IconBrandMark, { size: 32 }),
13078
13863
  title: t("panels.empty"),
13079
13864
  hint: t("panels.emptyHint"),
13080
- action: /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement(Button, {
13865
+ action: /* @__PURE__ */ createElement("div", { className: BoardEmpty_module_default.actions }, /* @__PURE__ */ createElement(Button, {
13081
13866
  type: "button",
13082
13867
  size: "sm",
13083
13868
  variant: "primary",
13869
+ className: BoardEmpty_module_default.action,
13084
13870
  onClick: onBuildModule
13085
13871
  }, t("panels.buildModule")), /* @__PURE__ */ createElement(Button, {
13086
13872
  type: "button",
13087
13873
  size: "sm",
13088
13874
  variant: "toolbar",
13875
+ className: BoardEmpty_module_default.action,
13089
13876
  onClick: onOpenModules
13090
13877
  }, t("panels.choose")), /* @__PURE__ */ createElement(Button, {
13091
13878
  type: "button",
13092
13879
  size: "sm",
13093
13880
  variant: "toolbar",
13881
+ className: BoardEmpty_module_default.action,
13094
13882
  onClick: onOpenMarket
13095
13883
  }, t("panels.browseMarket")))
13096
13884
  });
@@ -15633,7 +16421,7 @@ function messagesOf(units) {
15633
16421
  ...face.messages === void 0 ? {} : { messages: face.messages }
15634
16422
  }));
15635
16423
  }
15636
- 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*/";
16424
+ 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_1vpw3_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_1vpw3_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_1vpw3_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_1vpw3_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_1vpw3_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_1vpw3_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_1vpw3_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_1vpw3_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_1vpw3_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_1vpw3_39 ._marketVersion_1vpw3_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_1vpw3_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_1vpw3_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_1vpw3_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_1vpw3_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_1vpw3_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_1vpw3_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_1vpw3_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_1vpw3_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_1vpw3_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_1vpw3_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_1vpw3_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_1vpw3_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_1vpw3_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_1vpw3_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_1vpw3_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_1vpw3_183 ._marketSectionTitle_1vpw3_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_1vpw3_183 ._marketName_1vpw3_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_1vpw3_183 ._marketIcon_1vpw3_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._marketProgress_1vpw3_195 {\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_1vpw3_205 {\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_1vpw3_212 {\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_1vpw3_219 {\n grid-column: 2 / -1;\n min-width: 0;\n}\n\n._marketEmpty_1vpw3_224 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_1vpw3_229 {\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_1vpw3_229 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_1vpw3_247 {\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_1vpw3_255 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_1vpw3_260 {\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_1vpw3_266 {\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_1vpw3_275 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_1vpw3_275[hidden] {\n display: none;\n}\n\n._marketTabs_1vpw3_285 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_1vpw3_290 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketAddButton_1vpw3_295 {\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_1vpw3_224 {\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_1vpw3_312 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverPage_1vpw3_317 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_1vpw3_324 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_1vpw3_331 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_1vpw3_337 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_1vpw3_342 {\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_1vpw3_349 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_1vpw3_355 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_1vpw3_360 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_1vpw3_365 {\n flex: none;\n}\n\n._discoverSearch_1vpw3_369 {\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_1vpw3_377 {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._discoverSearchFieldFilled_1vpw3_382 input {\n padding-inline-end: var(--wb-len-20);\n}\n\n._discoverSearchField_1vpw3_377 input::-webkit-search-cancel-button {\n appearance: none;\n -webkit-appearance: none;\n}\n\n._discoverSearch_1vpw3_369 ._discoverSearchClear_1vpw3_391 {\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_1vpw3_391:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_1vpw3_331 {\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_1vpw3_337 {\n grid-area: market;\n }\n\n ._discoverMarketButton_1vpw3_342 {\n margin-left: 0;\n }\n\n ._discoverLabels_1vpw3_355 {\n grid-area: labels;\n }\n\n ._discoverSearch_1vpw3_369 {\n grid-area: search;\n }\n\n ._discoverSort_1vpw3_360 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_1vpw3_365 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_1vpw3_442 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_1vpw3_449 {\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_1vpw3_458 {\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_1vpw3_458:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_1vpw3_472 {\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_1vpw3_484 {\n object-fit: contain;\n}\n\n._discoverMain_1vpw3_488 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_1vpw3_496 {\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_1vpw3_504 {\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_1vpw3_504::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_1vpw3_504:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_1vpw3_504: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_1vpw3_535 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_1vpw3_541 {\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_1vpw3_550 {\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_1vpw3_557 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_1vpw3_563 {\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_1vpw3_572 {\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_1vpw3_577 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_1vpw3_582 {\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_1vpw3_591 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_1vpw3_582 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_1vpw3_601 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_1vpw3_607 {\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_1vpw3_607:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_1vpw3_607: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_1vpw3_630 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_1vpw3_634 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_1vpw3_640 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_1vpw3_646 {\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_1vpw3_653 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_1vpw3_660 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_1vpw3_665 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_1vpw3_670 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_1vpw3_675 {\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_1vpw3_681 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_1vpw3_688 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_1vpw3_694 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_1vpw3_699 {\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_1vpw3_709 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_1vpw3_715 {\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_1vpw3_723 {\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_1vpw3_732 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_1vpw3_739 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_1vpw3_739:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_1vpw3_749 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_1vpw3_757 {\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_1vpw3_765 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_1vpw3_770 {\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_1vpw3_779 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_1vpw3_785 {\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_1vpw3_794 {\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_1vpw3_794 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_1vpw3_812 {\n align-self: center;\n}\n\n._discoverTransport_1vpw3_816 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportHead_1vpw3_822 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportTitle_1vpw3_829 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverTransportHead_1vpw3_822 ._discoverTransportKind_1vpw3_834 {\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n\n._discoverTransportHead_1vpw3_822 ._discoverTransportState_1vpw3_839 {\n margin-left: 0;\n}\n\n._discoverTransportHead_1vpw3_822 > :last-child {\n margin-left: auto;\n}\n\n._discoverTransportRows_1vpw3_847 {\n display: flex;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportRow_1vpw3_847 {\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_1vpw3_847:hover {\n border-color: var(--dsw-alias-border-l3);\n}\n\n._discoverTransportRow_1vpw3_847:has(._discoverTransportRadio_1vpw3_868:checked) {\n border-color: var(--dsw-alias-label-primary);\n}\n\n._discoverTransportRow_1vpw3_847:has(._discoverTransportRadio_1vpw3_868:focus-visible) {\n outline: 2px solid var(--dsw-alias-label-primary);\n outline-offset: 1px;\n}\n\n._discoverTransportRadio_1vpw3_868 {\n flex: none;\n margin: 0;\n}\n\n._discoverTransportKind_1vpw3_834 {\n flex: none;\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n\n._discoverTransportState_1vpw3_839 {\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_1vpw3_847[data-state='ok'] ._discoverTransportState_1vpw3_839 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._discoverTransportRow_1vpw3_847[data-state='auth'] ._discoverTransportState_1vpw3_839 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverTransportRow_1vpw3_847[data-state='unreachable'] ._discoverTransportState_1vpw3_839,\n._discoverTransportRow_1vpw3_847[data-state='unknown'] ._discoverTransportState_1vpw3_839 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverTransportCustom_1vpw3_908 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportInput_1vpw3_914 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverInstallBar_1vpw3_919 {\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_1vpw3_930 {\n flex: 1;\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDialog_1vpw3_936 {\n width: min(var(--wb-len-560), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_1vpw3_940 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_1vpw3_946 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_1vpw3_954 {\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_1vpw3_963 {\n margin: 0;\n padding: var(--wb-len-2) 0 var(--wb-len-10);\n list-style: none;\n}\n\n._discoverSourcePick_1vpw3_969 {\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_1vpw3_978 {\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_1vpw3_986 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._discoverSourceHead_1vpw3_994 {\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_1vpw3_1002 {\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_1vpw3_1012 {\n flex: none;\n}\n\n._discoverSourceLoading_1vpw3_1016 {\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_1vpw3_1026 {\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_1vpw3_1026 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_1vpw3_1040 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_1vpw3_1046 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_1vpw3_1052 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_1vpw3_1057 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_1vpw3_1063 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_1vpw3_1068 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_1vpw3_1074 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_1vpw3_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_1vpw3_472._discoverSkeletonFill_1vpw3_1074 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_1vpw3_1083 {\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_1vpw3_1090 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_1vpw3_1094 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_1vpw3_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_1vpw3_1074 {\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*/";
15637
16425
  function workbenchCss() {
15638
16426
  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}`;
15639
16427
  }
@@ -15882,7 +16670,7 @@ function mount(ctx) {
15882
16670
  inject: () => ({
15883
16671
  t: ctx.locale.bind(LOCALE_NS),
15884
16672
  units: units.all(),
15885
- renderShell: shellApprovalDetail
16673
+ renderShell: shellApprovalRenderer(units.declared)
15886
16674
  })
15887
16675
  }, ApprovalDetail));
15888
16676
  ctx.slots.inject("conversation.session.header.corner", () => ctx.slots.register({