@dsh-workbench/core 1.1.2 → 1.1.4

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 (34) hide show
  1. package/client.js +1094 -520
  2. package/dist/client/client.body.js +1094 -520
  3. package/dist/client/index.js +946 -372
  4. package/dist/host/index.js +322 -9
  5. package/dist/types/app/layouts/market/discover-confirm.d.ts +4 -3
  6. package/dist/types/app/layouts/market/discover-detail.d.ts +1 -0
  7. package/dist/types/app/layouts/market/discover-installing.d.ts +8 -0
  8. package/dist/types/app/layouts/market/discover-rows.d.ts +4 -2
  9. package/dist/types/app/layouts/market/discover-states.d.ts +6 -0
  10. package/dist/types/app/layouts/market/discover-transport.d.ts +7 -0
  11. package/dist/types/app/layouts/market/discover-versions.d.ts +2 -1
  12. package/dist/types/app/layouts/market/market-check.d.ts +10 -0
  13. package/dist/types/app/layouts/market/market-header.d.ts +1 -3
  14. package/dist/types/app/layouts/market/use-discover.d.ts +10 -2
  15. package/dist/types/app/layouts/market/use-git-transport.d.ts +19 -0
  16. package/dist/types/app/layouts/market/use-module-versions.d.ts +4 -0
  17. package/dist/types/app/layouts/market/use-settling-modules.d.ts +1 -0
  18. package/dist/types/app/layouts/rightbar/MarketView.d.ts +3 -1
  19. package/dist/types/app/layouts/rightbar/market-freshness.d.ts +1 -0
  20. package/dist/types/app/layouts/rightbar/market-row-types.d.ts +4 -1
  21. package/dist/types/app/layouts/rightbar/market-rows.d.ts +2 -0
  22. package/dist/types/app/layouts/rightbar/market-section.d.ts +4 -2
  23. package/dist/types/app/layouts/rightbar/use-market-default.d.ts +12 -0
  24. package/dist/types/kernel/contract/market-index.d.ts +2 -2
  25. package/dist/types/modules/panels/model/market-installed.d.ts +19 -0
  26. package/dist/types/modules/panels/model/market-installed.test.d.ts +1 -0
  27. package/dist/types/modules/panels/model/market-route.d.ts +1 -0
  28. package/dist/types/shared/api/host/git-exec.d.ts +2 -0
  29. package/dist/types/shared/api/host/git-probe.d.ts +9 -0
  30. package/dist/types/shared/api/host/git-routes.d.ts +3 -0
  31. package/dist/types/shared/api/host/market-sources-store.d.ts +2 -1
  32. package/dist/types/shared/api/host/profile-dependencies.d.ts +1 -0
  33. package/dist/types/shared/hooks/market-queries.d.ts +3 -1
  34. package/package.json +3 -3
@@ -3100,6 +3100,7 @@ var en = {
3100
3100
  "panels.market.confirmUninstallAck": "I understand: using it again means reinstalling it.",
3101
3101
  "panels.market.confirmYes": "Uninstall",
3102
3102
  "panels.market.confirmNo": "Cancel",
3103
+ "panels.market.noMarketSource": "The index has no newer version of this module (refresh the index and retry)",
3103
3104
  "panels.market.failed": "Failed: {reason}",
3104
3105
  "panels.market.needEnv": "Set {env} in the terminal that started the workbench first",
3105
3106
  "panels.market.needCommands": "Missing commands: {commands}",
@@ -3136,8 +3137,9 @@ var en = {
3136
3137
  "panels.market.pluginBroken": "This plugin install is broken: it cannot be identified. Uninstall it first, then ask the agent to reinstall it by package name.",
3137
3138
  "panels.market.restartNeeded": "The new version is installed — restart once to pick it up.",
3138
3139
  "panels.market.foot": "After installing, enable it in the panel page of that project.",
3139
- "panels.market.recheck": "Check for updates",
3140
3140
  "panels.market.checkUpdates": "Check for updates",
3141
+ "panels.market.checkingNow": "Checking…",
3142
+ "panels.market.checkFailed": "The last check failed. Check your connection and retry.",
3141
3143
  "panels.market.checkedAt": "Last checked: {time}",
3142
3144
  "panels.market.justNow": "just now",
3143
3145
  "panels.market.minutesAgo": "{n} min ago",
@@ -3201,6 +3203,7 @@ var en = {
3201
3203
  "panels.market.add.failurePnpmMissing": "pnpm was not found, cannot install",
3202
3204
  "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.",
3203
3205
  "panels.market.add.failureGeneric": "Something went wrong during install — see the install details",
3206
+ "panels.market.add.failureCredentials": "This repository needs credentials: this machine has none for it. Clone it once in a terminal, set up a credential helper, or install from the SSH address.",
3204
3207
  "panels.market.add.approveTitle": "Your approval is needed for install scripts",
3205
3208
  "panels.market.add.approveCaution": "Only allow packages you trust: install scripts run on this machine with your permissions.",
3206
3209
  "panels.market.add.approveRun": "Allow and continue installing",
@@ -3273,6 +3276,7 @@ var en = {
3273
3276
  "panels.discover.noSourceHint": "Add a module market index (http address or git repository) to browse and install its modules here",
3274
3277
  "panels.discover.sourcesFailed": "Could not read the index sources.",
3275
3278
  "panels.discover.unreadable": "Could not read this index.",
3279
+ "panels.discover.sourceAuth": "This index source could not be read: this machine has no git credentials for it. Set up credentials (or switch the source to its SSH address), then refresh.",
3276
3280
  "panels.discover.invalid": "This index is not in a valid format.",
3277
3281
  "panels.discover.emptyRepo": "This repository has no commits yet.",
3278
3282
  "panels.discover.missingIndex": "This repository has no {path} yet.",
@@ -3296,8 +3300,26 @@ var en = {
3296
3300
  "panels.discover.badShellDetail": "This version is not compatible with the running workbench {current}; it requires {peer}",
3297
3301
  "panels.discover.unverified": "Workbench unverified",
3298
3302
  "panels.discover.installing": "Installing…",
3303
+ "panels.discover.installingNamed": "Installing {name}…",
3304
+ "panels.discover.cancelInstall": "Cancel install",
3305
+ "panels.discover.cancelling": "Cancelling…",
3306
+ "panels.discover.installCancelled": "Install cancelled: {name}",
3299
3307
  "panels.discover.installedDone": "Installed: {name}",
3300
3308
  "panels.discover.failed": "Failed: {reason}",
3309
+ "panels.discover.transportTitle": "Where to read this repository",
3310
+ "panels.discover.transportSsh": "SSH",
3311
+ "panels.discover.transportHttps": "HTTPS",
3312
+ "panels.discover.transportOk": "Readable",
3313
+ "panels.discover.transportAuth": "Needs credentials",
3314
+ "panels.discover.transportUnreachable": "Unreachable",
3315
+ "panels.discover.transportUnknown": "Not probed",
3316
+ "panels.discover.transportChecking": "Checking…",
3317
+ "panels.discover.transportTest": "Test this address",
3318
+ "panels.discover.transportPlaceholder": "Or paste another address (mirror, alias)",
3319
+ "panels.discover.transportNeedsAuth": "This repository needs credentials: clone it once in a terminal, or set up an SSH key / credential helper, then install again.",
3320
+ "panels.discover.transportChange": "Change address",
3321
+ "panels.discover.transportChangeHide": "Hide",
3322
+ "panels.discover.transportNone": "No readable address",
3301
3323
  "panels.discover.expand": "Show versions",
3302
3324
  "panels.discover.collapse": "Hide versions",
3303
3325
  "panels.discover.versionCount": "{n} versions",
@@ -3778,6 +3800,7 @@ var dictionaries = {
3778
3800
  "panels.market.confirmUninstallAck": "我明白:卸载后想再用,得重新装一遍。",
3779
3801
  "panels.market.confirmYes": "卸载",
3780
3802
  "panels.market.confirmNo": "取消",
3803
+ "panels.market.noMarketSource": "索引里没有这个模块的新版本(刷新一次索引再试)",
3781
3804
  "panels.market.failed": "没成功:{reason}",
3782
3805
  "panels.market.needEnv": "先在启动工作台的终端里设 {env}",
3783
3806
  "panels.market.needCommands": "缺这几条命令:{commands}",
@@ -3814,8 +3837,9 @@ var dictionaries = {
3814
3837
  "panels.market.pluginBroken": "这份插件装坏了:认不出它是什么。可以先卸载,再让 agent 按包名重装一次。",
3815
3838
  "panels.market.restartNeeded": "新版装好了,重启一次才生效。",
3816
3839
  "panels.market.foot": "装好后到那个项目的面板页勾选它,模块才会出现。",
3817
- "panels.market.recheck": "重新检查更新",
3818
3840
  "panels.market.checkUpdates": "检查更新",
3841
+ "panels.market.checkingNow": "正在检查…",
3842
+ "panels.market.checkFailed": "最近一次没查到,检查网络后重试",
3819
3843
  "panels.market.checkedAt": "最近检查:{time}",
3820
3844
  "panels.market.justNow": "刚刚",
3821
3845
  "panels.market.minutesAgo": "{n} 分钟前",
@@ -3879,6 +3903,7 @@ var dictionaries = {
3879
3903
  "panels.market.add.failurePnpmMissing": "没有找到 pnpm,无法安装",
3880
3904
  "panels.market.add.failureInstalled": "它已经装在这份工作台里了。同一个包不能就地覆盖,得先卸载再装;这次卸载也没成功。",
3881
3905
  "panels.market.add.failureGeneric": "安装过程中出错,原因见安装详情",
3906
+ "panels.market.add.failureCredentials": "这个仓库要凭证:本机没有它的 git 凭据。先在终端里 clone 一次、配好凭据助手,或改用 SSH 地址,再装一次。",
3882
3907
  "panels.market.add.approveTitle": "需要你允许安装脚本",
3883
3908
  "panels.market.add.approveCaution": "只允许你信得过的包:安装脚本会以你的权限在这台机器上运行。",
3884
3909
  "panels.market.add.approveRun": "允许并继续安装",
@@ -3951,6 +3976,7 @@ var dictionaries = {
3951
3976
  "panels.discover.noSourceHint": "添加一个模块市场索引(http 地址或 git 仓库),即可在这里浏览和安装其中的模块",
3952
3977
  "panels.discover.sourcesFailed": "无法读取索引源",
3953
3978
  "panels.discover.unreadable": "无法读取此索引",
3979
+ "panels.discover.sourceAuth": "这个索引源读不了:本机没有它的 git 凭据。配好凭据(或在源里改用 SSH 地址),再点右上角的刷新。",
3954
3980
  "panels.discover.invalid": "此索引的格式无效",
3955
3981
  "panels.discover.emptyRepo": "这个仓库还没有任何提交",
3956
3982
  "panels.discover.missingIndex": "仓库里还没有索引文件 {path}",
@@ -3974,8 +4000,26 @@ var dictionaries = {
3974
4000
  "panels.discover.badShellDetail": "此版本与当前的工作台 {current} 不兼容,它要求 {peer}",
3975
4001
  "panels.discover.unverified": "工作台未验证",
3976
4002
  "panels.discover.installing": "正在安装…",
4003
+ "panels.discover.installingNamed": "正在安装「{name}」…",
4004
+ "panels.discover.cancelInstall": "取消安装",
4005
+ "panels.discover.cancelling": "正在取消…",
4006
+ "panels.discover.installCancelled": "已取消安装:{name}",
3977
4007
  "panels.discover.installedDone": "装好了:{name}",
3978
4008
  "panels.discover.failed": "操作失败:{reason}",
4009
+ "panels.discover.transportTitle": "从哪读这个仓库",
4010
+ "panels.discover.transportSsh": "SSH",
4011
+ "panels.discover.transportHttps": "HTTPS",
4012
+ "panels.discover.transportOk": "能读",
4013
+ "panels.discover.transportAuth": "要凭证",
4014
+ "panels.discover.transportUnreachable": "连不上",
4015
+ "panels.discover.transportUnknown": "没探成",
4016
+ "panels.discover.transportChecking": "正在探测…",
4017
+ "panels.discover.transportTest": "试这个地址",
4018
+ "panels.discover.transportPlaceholder": "或贴一个别的地址(公司镜像、别名)",
4019
+ "panels.discover.transportNeedsAuth": "这个仓库要凭证:先在终端里把它 clone 一次,或配好 SSH key / 凭据助手;配好后再点安装。",
4020
+ "panels.discover.transportChange": "换一个地址",
4021
+ "panels.discover.transportChangeHide": "收起",
4022
+ "panels.discover.transportNone": "没有可读的地址",
3979
4023
  "panels.discover.expand": "展开版本",
3980
4024
  "panels.discover.collapse": "收起版本",
3981
4025
  "panels.discover.versionCount": "{n} 个版本",
@@ -4391,6 +4435,99 @@ function marketInstallTarget(name, version, source) {
4391
4435
  return { spec: path === "" ? base : `${base}&path:/${path}` };
4392
4436
  }
4393
4437
  //#endregion
4438
+ //#region ../shared/dist/lib/git-address.js
4439
+ var SCP = /^(?:([A-Za-z0-9._-]+)@)?([A-Za-z0-9.-]+):(?!\/)(\S+)$/;
4440
+ function bare(url) {
4441
+ return url.trim().replace(/^git\+/, "");
4442
+ }
4443
+ function pathOf(pathname) {
4444
+ return pathname.replace(/^\/+/, "").replace(/\/+$/, "");
4445
+ }
4446
+ /**
4447
+ * 把一个 git 地址拆成「哪台主机 + 哪个路径」,不管发布者当初用的是 https、ssh 还是
4448
+ * scp 那种 `git@host:path` 写法;认不出来给 undefined。
4449
+ */
4450
+ function gitAddressOf(url) {
4451
+ const text = bare(url);
4452
+ if (text === "") return void 0;
4453
+ if (text.includes("://")) {
4454
+ let parsed;
4455
+ try {
4456
+ parsed = new URL(text);
4457
+ } catch {
4458
+ return;
4459
+ }
4460
+ if (parsed.protocol !== "https:" && parsed.protocol !== "http:" && parsed.protocol !== "ssh:") return;
4461
+ const path = pathOf(parsed.pathname);
4462
+ if (path === "") return void 0;
4463
+ const port = parsed.port === "" ? void 0 : Number(parsed.port);
4464
+ const shared = {
4465
+ host: parsed.hostname,
4466
+ path,
4467
+ ...port === void 0 ? {} : { port }
4468
+ };
4469
+ if (parsed.protocol !== "ssh:") return {
4470
+ kind: "https",
4471
+ ...shared
4472
+ };
4473
+ return {
4474
+ kind: "ssh",
4475
+ ...shared,
4476
+ ...parsed.username === "" ? {} : { user: parsed.username }
4477
+ };
4478
+ }
4479
+ const scp = SCP.exec(text);
4480
+ if (scp === null) return void 0;
4481
+ const path = pathOf(scp[3] ?? "");
4482
+ if (path === "") return void 0;
4483
+ return {
4484
+ kind: "ssh",
4485
+ host: scp[2] ?? "",
4486
+ path,
4487
+ ...scp[1] === void 0 ? {} : { user: scp[1] }
4488
+ };
4489
+ }
4490
+ /** 一份地址的规范写法:ssh 一律成 `ssh://user@host/path`(pnpm 认这个),https 原样。 */
4491
+ function gitAddressText(address) {
4492
+ const port = address.port === void 0 ? "" : `:${String(address.port)}`;
4493
+ if (address.kind === "ssh") return `ssh://${address.user === void 0 || address.user === "" ? "git" : address.user}@${address.host}${port}/${address.path}`;
4494
+ return `https://${address.host}${port}/${address.path}`;
4495
+ }
4496
+ /**
4497
+ * 同一个仓库的两种读法,发布者用的那种排前面。ssh 那条一律规范成 `ssh://` 形式,
4498
+ * 因为 `git@host:path` 拼进安装 spec 时 pnpm 不认;https 那条保留发布者的原样(含 http)。
4499
+ */
4500
+ function gitTransportCandidates(url) {
4501
+ const address = gitAddressOf(url);
4502
+ if (address === void 0) {
4503
+ const only = bare(url);
4504
+ return only === "" ? [] : [{
4505
+ kind: only.startsWith("ssh") ? "ssh" : "https",
4506
+ url: only
4507
+ }];
4508
+ }
4509
+ const primary = {
4510
+ kind: address.kind,
4511
+ url: address.kind === "ssh" ? gitAddressText(address) : bare(url)
4512
+ };
4513
+ const other = address.kind === "https" ? {
4514
+ kind: "ssh",
4515
+ url: gitAddressText({
4516
+ kind: "ssh",
4517
+ host: address.host,
4518
+ path: address.path
4519
+ })
4520
+ } : {
4521
+ kind: "https",
4522
+ url: gitAddressText({
4523
+ kind: "https",
4524
+ host: address.host,
4525
+ path: address.path
4526
+ })
4527
+ };
4528
+ return other.url === primary.url ? [primary] : [primary, other];
4529
+ }
4530
+ //#endregion
4394
4531
  //#region ../shared/dist/lib/board-fact.js
4395
4532
  /**
4396
4533
  * 判一个路径落不落在这个工作区里(按路径前缀比,不是字符串包含)。
@@ -4668,6 +4805,7 @@ function markNextProbeSilent() {
4668
4805
  silentNextProbe = true;
4669
4806
  }
4670
4807
  var probe$1 = NO_PROBE;
4808
+ var probing = 0;
4671
4809
  var probeListeners = /* @__PURE__ */ new Set();
4672
4810
  function probeValue() {
4673
4811
  return probe$1;
@@ -4701,8 +4839,10 @@ function subscribeCapabilities(listener) {
4701
4839
  };
4702
4840
  }
4703
4841
  function setCapabilities(next, rechecked = false) {
4704
- if (next === null) setProbe(NO_PROBE);
4705
- else if (rechecked) setProbe({
4842
+ if (next === null) {
4843
+ probing = 0;
4844
+ setProbe(NO_PROBE);
4845
+ } else if (rechecked) setProbe({
4706
4846
  ...probe$1,
4707
4847
  checkedAt: Date.now()
4708
4848
  });
@@ -4711,13 +4851,17 @@ function setCapabilities(next, rechecked = false) {
4711
4851
  for (const listener of [...listeners$7]) listener();
4712
4852
  }
4713
4853
  function beginProbe() {
4714
- if (probe$1.checking) return;
4854
+ probing += 1;
4855
+ if (probing > 1) return;
4715
4856
  setProbe({
4716
4857
  ...probe$1,
4717
4858
  checking: true
4718
4859
  });
4719
4860
  }
4720
4861
  function endProbe() {
4862
+ if (probing === 0) return;
4863
+ probing -= 1;
4864
+ if (probing > 0) return;
4721
4865
  setProbe({
4722
4866
  ...probe$1,
4723
4867
  checking: false
@@ -4757,13 +4901,14 @@ function runCapabilityRead(options) {
4757
4901
  const at = epoch$1;
4758
4902
  const seq = readSeq$1 += 1;
4759
4903
  if (force) newestForceSeq$1 = seq;
4760
- if (force && !silent) beginProbe();
4904
+ const shown = force && !silent;
4905
+ if (shown) beginProbe();
4761
4906
  return shareCapabilityFetch(force, load).then((result) => {
4762
4907
  if (at !== epoch$1) return;
4763
4908
  if (!force && seq < newestForceSeq$1) return;
4764
4909
  publishCapability(result, force);
4765
4910
  }).finally(() => {
4766
- if (force) endProbe();
4911
+ if (shown) endProbe();
4767
4912
  });
4768
4913
  }
4769
4914
  function useCapabilities(refreshToken, reloadToken = 0) {
@@ -4894,6 +5039,16 @@ function panelRowName(label, hint, t) {
4894
5039
  //#endregion
4895
5040
  //#region src/app/layouts/rightbar/market-freshness.ts
4896
5041
  var MARKET_STALE_MS = VERSION_CHECK_TTL_MS;
5042
+ function checkedAgoText(at, now, t) {
5043
+ const seconds = Math.max(0, Math.floor((now - at) / 1e3));
5044
+ if (seconds < 60) return t("panels.market.justNow");
5045
+ const minutes = Math.floor(seconds / 60);
5046
+ if (minutes < 60) return t("panels.market.minutesAgo", { n: String(minutes) });
5047
+ return t("panels.market.hoursAgo", { n: String(Math.floor(minutes / 60)) });
5048
+ }
5049
+ function checkedAgo(at, t) {
5050
+ return checkedAgoText(at, Date.now(), t);
5051
+ }
4897
5052
  function marketSettled(freshness, installedRead) {
4898
5053
  return freshness.loaded && installedRead !== false;
4899
5054
  }
@@ -4902,85 +5057,6 @@ function shouldProbeOnEnter(input) {
4902
5057
  return input.now - input.checkedAt >= input.staleMs;
4903
5058
  }
4904
5059
  //#endregion
4905
- //#region src/app/layouts/rightbar/market-settle.ts
4906
- var MODULE_SETTLE_MS = 15e3;
4907
- function holdBack(installed, roster, active, previous) {
4908
- const pending = installed.filter((unit) => !roster.has(unit));
4909
- const fresh = previous === null ? [] : pending.filter((unit) => !previous.has(unit));
4910
- return pending.filter((unit) => active.has(unit) || fresh.includes(unit));
4911
- }
4912
- var WORKBENCH_SWAP_MS = 18e4;
4913
- function swapLanded(until, installed) {
4914
- return until !== void 0 && installed === until;
4915
- }
4916
- function swapUntil(action, application, latest) {
4917
- if (action !== "update-workbench" || application !== "restart-required") return void 0;
4918
- return latest;
4919
- }
4920
- var READ_BACK_ACTIONS = /* @__PURE__ */ new Set([
4921
- "update",
4922
- "update-bundle",
4923
- "update-dependency",
4924
- "update-plugin"
4925
- ]);
4926
- var REMOVAL_ACTIONS = /* @__PURE__ */ new Set([
4927
- "remove-bundle",
4928
- "uninstall",
4929
- "uninstall-plugin"
4930
- ]);
4931
- function awaitsReadBack(action, application, version) {
4932
- if (application !== "applied") return false;
4933
- if (REMOVAL_ACTIONS.has(action)) return true;
4934
- if (!READ_BACK_ACTIONS.has(action)) return false;
4935
- return action === "update-bundle" ? version !== void 0 : true;
4936
- }
4937
- function readBackDone(input) {
4938
- if (input.action === "update") return !input.outdated;
4939
- if (input.entry === void 0 || input.entry.local === true || input.entry.latest === void 0) return true;
4940
- if (input.entry.latest === input.entry.installed) return true;
4941
- if (input.clicked === void 0) return true;
4942
- return input.entry.installed !== input.clicked;
4943
- }
4944
- function settleLanded(input) {
4945
- if (input.until !== void 0) return swapLanded(input.until, input.installed);
4946
- if (input.readBack !== true) return true;
4947
- if (input.action === "remove-bundle" || input.action === "uninstall") return input.unitGone === true;
4948
- if (input.action === "uninstall-plugin") return input.pluginGone === true;
4949
- const settled = (state) => state !== void 0 && state !== "outdated" && state !== "unsatisfied" && state !== "checking" && state !== "unchecked";
4950
- if (input.action === "update-dependency") return settled(input.sharedState);
4951
- if (input.action === "update-plugin") return input.pluginOutdated === false;
4952
- return readBackDone({
4953
- action: input.action,
4954
- entry: input.entry,
4955
- clicked: input.clicked,
4956
- outdated: input.outdated
4957
- });
4958
- }
4959
- function tailReason(tail) {
4960
- if (tail === void 0) return void 0;
4961
- const last = tail.split(" / ").map((part) => part.trim()).filter((part) => part !== "").at(-1);
4962
- if (last === void 0) return void 0;
4963
- return last.length <= 240 ? last : `${last.slice(0, 240)}…`;
4964
- }
4965
- function selfUpdateStop(input) {
4966
- const { until, since, update } = input;
4967
- if (until === void 0 || update === void 0 || update === null) return void 0;
4968
- if (update.state !== "failed" && update.state !== "rolled-back") return void 0;
4969
- if (update.to !== until && update.version !== until) return void 0;
4970
- if (since !== void 0 && update.at !== void 0) {
4971
- const at = (0, import_dayjs_min.default)(update.at).valueOf();
4972
- if (Number.isFinite(at) && at < since - 5e3) return void 0;
4973
- }
4974
- return {
4975
- kind: update.state,
4976
- ...update.version === void 0 ? {} : { version: update.version },
4977
- ...update.state === "failed" && tailReason(update.tail) !== void 0 ? { reason: tailReason(update.tail) } : {}
4978
- };
4979
- }
4980
- function holdWindowMs(until) {
4981
- return until === void 0 ? MODULE_SETTLE_MS : WORKBENCH_SWAP_MS;
4982
- }
4983
- //#endregion
4984
5060
  //#region src/app/layouts/rightbar/market-shared-rows.ts
4985
5061
  var SHARED_STATE_KEY = {
4986
5062
  checking: "panels.market.checking",
@@ -5150,8 +5226,10 @@ function installedRows(modules, manifests, listed, names, defaults = /* @__PURE_
5150
5226
  ...outdated ? { moduleUpdate: {
5151
5227
  installed: module.installed,
5152
5228
  latest,
5153
- ...blocked === void 0 ? {} : { blocked }
5229
+ ...blocked === void 0 ? {} : { blocked },
5230
+ ...module.market === void 0 ? {} : { market: module.market }
5154
5231
  } } : {},
5232
+ ...module.market === void 0 ? {} : { market: module.market },
5155
5233
  defaultShown: defaults.has(module.unit),
5156
5234
  defaultChanged: changed[module.unit] ?? 0
5157
5235
  });
@@ -5170,7 +5248,7 @@ function marketActions$1(row) {
5170
5248
  if (row.plugin === true) return [...row.canUpdate ? ["update-plugin"] : [], ...row.canUninstall ? ["uninstall-plugin"] : []];
5171
5249
  return [
5172
5250
  ...row.canInstall ? ["install"] : [],
5173
- ...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : row.moduleUpdate.blocked === void 0 ? ["update-bundle"] : [],
5251
+ ...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : row.moduleUpdate.blocked === void 0 ? [row.market === void 0 || row.pkg === void 0 ? "update-bundle" : "install-version"] : [],
5174
5252
  ...row.canUninstall ? [row.pkg === void 0 ? "uninstall" : "remove-bundle"] : []
5175
5253
  ];
5176
5254
  }
@@ -5259,7 +5337,8 @@ function marketUpdatesOf(modules) {
5259
5337
  installed: module.installed,
5260
5338
  ...local || module.latest === void 0 ? {} : { latest: module.latest },
5261
5339
  ...local || module.latest === void 0 || module.latestBlocked === void 0 ? {} : { blocked: module.latestBlocked },
5262
- ...local ? { local: true } : {}
5340
+ ...local ? { local: true } : {},
5341
+ ...local || module.market === void 0 ? {} : { market: module.market }
5263
5342
  };
5264
5343
  }
5265
5344
  return next;
@@ -5298,7 +5377,8 @@ function marketRows(manifests, capabilities, updates = {}, defaults = /* @__PURE
5298
5377
  const moduleUpdate = entry === void 0 || entry.latest === void 0 || entry.latest === entry.installed ? void 0 : {
5299
5378
  installed: entry.installed,
5300
5379
  latest: entry.latest,
5301
- ...entry.blocked === void 0 ? {} : { blocked: entry.blocked }
5380
+ ...entry.blocked === void 0 ? {} : { blocked: entry.blocked },
5381
+ ...entry.market === void 0 ? {} : { market: entry.market }
5302
5382
  };
5303
5383
  const shown = moduleUpdate === void 0 ? state : "outdated";
5304
5384
  const hint = moduleUpdate?.blocked === void 0 ? shown === "unknown" || shown === "unchecked" ? "panels.market.uncheckedHint" : void 0 : updateBlockHintOf(moduleUpdate.blocked);
@@ -5315,6 +5395,10 @@ function marketRows(manifests, capabilities, updates = {}, defaults = /* @__PURE
5315
5395
  ...entry.latest === void 0 ? {} : { latest: entry.latest }
5316
5396
  } },
5317
5397
  ...moduleUpdate === void 0 ? {} : { moduleUpdate },
5398
+ ...entry?.market === void 0 ? {} : {
5399
+ market: entry.market,
5400
+ pkg: entry.market.pkg
5401
+ },
5318
5402
  ...moduleUpdate === void 0 ? note === void 0 ? {} : { note } : {},
5319
5403
  ...local ? { local: true } : {},
5320
5404
  defaultShown: defaults.has(manifest.id),
@@ -5481,6 +5565,86 @@ function marketHintOf(input) {
5481
5565
  return null;
5482
5566
  }
5483
5567
  //#endregion
5568
+ //#region src/app/layouts/rightbar/market-settle.ts
5569
+ var MODULE_SETTLE_MS = 15e3;
5570
+ function holdBack(installed, roster, active, previous) {
5571
+ const pending = installed.filter((unit) => !roster.has(unit));
5572
+ const fresh = previous === null ? [] : pending.filter((unit) => !previous.has(unit));
5573
+ return pending.filter((unit) => active.has(unit) || fresh.includes(unit));
5574
+ }
5575
+ var WORKBENCH_SWAP_MS = 18e4;
5576
+ function swapLanded(until, installed) {
5577
+ return until !== void 0 && installed === until;
5578
+ }
5579
+ function swapUntil(action, application, latest) {
5580
+ if (action !== "update-workbench" || application !== "restart-required") return void 0;
5581
+ return latest;
5582
+ }
5583
+ var READ_BACK_ACTIONS = /* @__PURE__ */ new Set([
5584
+ "update",
5585
+ "update-bundle",
5586
+ "install-version",
5587
+ "update-dependency",
5588
+ "update-plugin"
5589
+ ]);
5590
+ var REMOVAL_ACTIONS = /* @__PURE__ */ new Set([
5591
+ "remove-bundle",
5592
+ "uninstall",
5593
+ "uninstall-plugin"
5594
+ ]);
5595
+ function awaitsReadBack(action, application, version) {
5596
+ if (application !== "applied") return false;
5597
+ if (REMOVAL_ACTIONS.has(action)) return true;
5598
+ if (!READ_BACK_ACTIONS.has(action)) return false;
5599
+ return action === "update-bundle" || action === "install-version" ? version !== void 0 : true;
5600
+ }
5601
+ function readBackDone(input) {
5602
+ if (input.action === "update") return !input.outdated;
5603
+ if (input.entry === void 0 || input.entry.local === true || input.entry.latest === void 0) return true;
5604
+ if (input.entry.latest === input.entry.installed) return true;
5605
+ if (input.clicked === void 0) return true;
5606
+ return input.entry.installed !== input.clicked;
5607
+ }
5608
+ function settleLanded(input) {
5609
+ if (input.until !== void 0) return swapLanded(input.until, input.installed);
5610
+ if (input.readBack !== true) return true;
5611
+ if (input.action === "remove-bundle" || input.action === "uninstall") return input.unitGone === true;
5612
+ if (input.action === "uninstall-plugin") return input.pluginGone === true;
5613
+ const settled = (state) => state !== void 0 && state !== "outdated" && state !== "unsatisfied" && state !== "checking" && state !== "unchecked";
5614
+ if (input.action === "update-dependency") return settled(input.sharedState);
5615
+ if (input.action === "update-plugin") return input.pluginOutdated === false;
5616
+ return readBackDone({
5617
+ action: input.action,
5618
+ entry: input.entry,
5619
+ clicked: input.clicked,
5620
+ outdated: input.outdated
5621
+ });
5622
+ }
5623
+ function tailReason(tail) {
5624
+ if (tail === void 0) return void 0;
5625
+ const last = tail.split(" / ").map((part) => part.trim()).filter((part) => part !== "").at(-1);
5626
+ if (last === void 0) return void 0;
5627
+ return last.length <= 240 ? last : `${last.slice(0, 240)}…`;
5628
+ }
5629
+ function selfUpdateStop(input) {
5630
+ const { until, since, update } = input;
5631
+ if (until === void 0 || update === void 0 || update === null) return void 0;
5632
+ if (update.state !== "failed" && update.state !== "rolled-back") return void 0;
5633
+ if (update.to !== until && update.version !== until) return void 0;
5634
+ if (since !== void 0 && update.at !== void 0) {
5635
+ const at = (0, import_dayjs_min.default)(update.at).valueOf();
5636
+ if (Number.isFinite(at) && at < since - 5e3) return void 0;
5637
+ }
5638
+ return {
5639
+ kind: update.state,
5640
+ ...update.version === void 0 ? {} : { version: update.version },
5641
+ ...update.state === "failed" && tailReason(update.tail) !== void 0 ? { reason: tailReason(update.tail) } : {}
5642
+ };
5643
+ }
5644
+ function holdWindowMs(until) {
5645
+ return until === void 0 ? MODULE_SETTLE_MS : WORKBENCH_SWAP_MS;
5646
+ }
5647
+ //#endregion
5484
5648
  //#region src/app/layouts/rightbar/market-busy.ts
5485
5649
  var listeners$5 = /* @__PURE__ */ new Set();
5486
5650
  var published = /* @__PURE__ */ new Map();
@@ -5761,127 +5925,137 @@ function useMarketTransient(input) {
5761
5925
  };
5762
5926
  }
5763
5927
  var MarketPage_module_default = {
5764
- marketList: "_marketList_14s5s_1",
5765
- marketRow: "_marketRow_14s5s_10",
5766
- marketIcon: "_marketIcon_14s5s_20",
5767
- marketMain: "_marketMain_14s5s_32",
5768
- marketName: "_marketName_14s5s_39",
5769
- marketStatus: "_marketStatus_14s5s_48",
5770
- marketStateText: "_marketStateText_14s5s_58",
5771
- marketSep: "_marketSep_14s5s_62",
5772
- marketReason: "_marketReason_14s5s_66",
5773
- marketVersion: "_marketVersion_14s5s_72",
5774
- marketLocalTag: "_marketLocalTag_14s5s_94",
5775
- marketEnd: "_marketEnd_14s5s_105",
5776
- marketSwitchSeat: "_marketSwitchSeat_14s5s_112",
5777
- marketActions: "_marketActions_14s5s_125",
5778
- marketUpdateAction: "_marketUpdateAction_14s5s_131",
5779
- marketSelfDivider: "_marketSelfDivider_14s5s_137",
5780
- marketSection: "_marketSection_14s5s_143",
5781
- marketSectionHead: "_marketSectionHead_14s5s_150",
5782
- marketSectionIcon: "_marketSectionIcon_14s5s_156",
5783
- marketSectionTitle: "_marketSectionTitle_14s5s_163",
5784
- marketSectionCount: "_marketSectionCount_14s5s_169",
5785
- marketSectionQuiet: "_marketSectionQuiet_14s5s_175",
5786
- marketProgress: "_marketProgress_14s5s_188",
5787
- marketNote: "_marketNote_14s5s_198",
5788
- marketFailure: "_marketFailure_14s5s_205",
5789
- marketEmpty: "_marketEmpty_14s5s_212",
5790
- marketPage: "_marketPage_14s5s_217",
5791
- marketPageHead: "_marketPageHead_14s5s_235",
5792
- marketPageTitle: "_marketPageTitle_14s5s_243",
5793
- marketPageIntro: "_marketPageIntro_14s5s_248",
5794
- marketPageTools: "_marketPageTools_14s5s_254",
5795
- marketPanel: "_marketPanel_14s5s_263",
5796
- marketTabs: "_marketTabs_14s5s_273",
5797
- marketTabList: "_marketTabList_14s5s_278",
5798
- marketIconButton: "_marketIconButton_14s5s_283",
5799
- marketIconWrap: "_marketIconWrap_14s5s_308",
5800
- marketIconButtonSpinning: "_marketIconButtonSpinning_14s5s_312",
5801
- "wb-spin": "_wb-spin_14s5s_1",
5802
- marketAddButton: "_marketAddButton_14s5s_316",
5803
- marketEmptyTitle: "_marketEmptyTitle_14s5s_333",
5804
- discoverPage: "_discoverPage_14s5s_347",
5805
- discoverBar: "_discoverBar_14s5s_354",
5806
- discoverTools: "_discoverTools_14s5s_361",
5807
- discoverMarket: "_discoverMarket_14s5s_367",
5808
- discoverMarketButton: "_discoverMarketButton_14s5s_372",
5809
- discoverMarketName: "_discoverMarketName_14s5s_379",
5810
- discoverLabels: "_discoverLabels_14s5s_385",
5811
- discoverSort: "_discoverSort_14s5s_390",
5812
- discoverRefresh: "_discoverRefresh_14s5s_395",
5813
- discoverSearch: "_discoverSearch_14s5s_399",
5814
- discoverSearchField: "_discoverSearchField_14s5s_407",
5815
- discoverSearchFieldFilled: "_discoverSearchFieldFilled_14s5s_412",
5816
- discoverSearchClear: "_discoverSearchClear_14s5s_421",
5817
- discoverChips: "_discoverChips_14s5s_472",
5818
- discoverList: "_discoverList_14s5s_479",
5819
- discoverCard: "_discoverCard_14s5s_488",
5820
- discoverArtwork: "_discoverArtwork_14s5s_502",
5821
- discoverArtworkImage: "_discoverArtworkImage_14s5s_514",
5822
- discoverMain: "_discoverMain_14s5s_518",
5823
- discoverTitleRow: "_discoverTitleRow_14s5s_526",
5824
- discoverCardOpen: "_discoverCardOpen_14s5s_534",
5825
- discoverStrong: "_discoverStrong_14s5s_565",
5826
- discoverDesc: "_discoverDesc_14s5s_571",
5827
- discoverMeta: "_discoverMeta_14s5s_580",
5828
- discoverMuted: "_discoverMuted_14s5s_587",
5829
- discoverEnd: "_discoverEnd_14s5s_593",
5830
- discoverBlocked: "_discoverBlocked_14s5s_602",
5831
- discoverEmpty: "_discoverEmpty_14s5s_607",
5832
- discoverEmptyTitle: "_discoverEmptyTitle_14s5s_616",
5833
- discoverDetail: "_discoverDetail_14s5s_626",
5834
- discoverCrumb: "_discoverCrumb_14s5s_632",
5835
- discoverCrumbIcon: "_discoverCrumbIcon_14s5s_655",
5836
- discoverDetailHead: "_discoverDetailHead_14s5s_659",
5837
- discoverDetailTitle: "_discoverDetailTitle_14s5s_665",
5838
- discoverDetailText: "_discoverDetailText_14s5s_671",
5839
- discoverDetailPanel: "_discoverDetailPanel_14s5s_678",
5840
- discoverDetailTabs: "_discoverDetailTabs_14s5s_685",
5841
- discoverDetailTabList: "_discoverDetailTabList_14s5s_690",
5842
- discoverDocBody: "_discoverDocBody_14s5s_695",
5843
- discoverDocNotice: "_discoverDocNotice_14s5s_700",
5844
- discoverSection: "_discoverSection_14s5s_706",
5845
- discoverSectionTitle: "_discoverSectionTitle_14s5s_713",
5846
- discoverFacts: "_discoverFacts_14s5s_719",
5847
- discoverFactRow: "_discoverFactRow_14s5s_724",
5848
- discoverFactKind: "_discoverFactKind_14s5s_734",
5849
- discoverFactValue: "_discoverFactValue_14s5s_740",
5850
- discoverCode: "_discoverCode_14s5s_748",
5851
- discoverTags: "_discoverTags_14s5s_757",
5852
- discoverLink: "_discoverLink_14s5s_764",
5853
- discoverVersions: "_discoverVersions_14s5s_774",
5854
- discoverVersionRow: "_discoverVersionRow_14s5s_782",
5855
- discoverVersionName: "_discoverVersionName_14s5s_790",
5856
- discoverError: "_discoverError_14s5s_795",
5857
- discoverFailure: "_discoverFailure_14s5s_804",
5858
- discoverLoading: "_discoverLoading_14s5s_810",
5859
- discoverNotice: "_discoverNotice_14s5s_819",
5860
- discoverMore: "_discoverMore_14s5s_837",
5861
- discoverDialog: "_discoverDialog_14s5s_841",
5862
- discoverDialogBody: "_discoverDialogBody_14s5s_845",
5863
- discoverSourceList: "_discoverSourceList_14s5s_851",
5864
- discoverSourceRow: "_discoverSourceRow_14s5s_859",
5865
- discoverSourceConfirm: "_discoverSourceConfirm_14s5s_868",
5866
- discoverSourcePick: "_discoverSourcePick_14s5s_874",
5867
- discoverSourceRadio: "_discoverSourceRadio_14s5s_883",
5868
- discoverSourceMain: "_discoverSourceMain_14s5s_891",
5869
- discoverSourceHead: "_discoverSourceHead_14s5s_899",
5870
- discoverSourceUrl: "_discoverSourceUrl_14s5s_907",
5871
- discoverSourceMore: "_discoverSourceMore_14s5s_917",
5872
- discoverSourceLoading: "_discoverSourceLoading_14s5s_921",
5873
- discoverSourceHint: "_discoverSourceHint_14s5s_931",
5874
- discoverSourceError: "_discoverSourceError_14s5s_945",
5875
- discoverSourceForm: "_discoverSourceForm_14s5s_951",
5876
- discoverGrow: "_discoverGrow_14s5s_957",
5877
- discoverField: "_discoverField_14s5s_962",
5878
- discoverFieldLabel: "_discoverFieldLabel_14s5s_968",
5879
- discoverConfirmHead: "_discoverConfirmHead_14s5s_973",
5880
- discoverSkeletonFill: "_discoverSkeletonFill_14s5s_979",
5881
- "wb-skeleton": "_wb-skeleton_14s5s_1",
5882
- discoverSkeletonBar: "_discoverSkeletonBar_14s5s_988",
5883
- discoverSkeletonTitle: "_discoverSkeletonTitle_14s5s_995",
5884
- discoverSkeletonDesc: "_discoverSkeletonDesc_14s5s_999"
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"
5885
6059
  };
5886
6060
  //#endregion
5887
6061
  //#region src/app/layouts/market/discover-states.tsx
@@ -5940,6 +6114,19 @@ function DiscoverNoSource({ t, onAdd }) {
5940
6114
  onClick: onAdd
5941
6115
  }, t("panels.discover.addFirstSource")));
5942
6116
  }
6117
+ function DiscoverReadFailure({ t, text, auth, onRetry }) {
6118
+ return /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement(DiscoverFailure, {
6119
+ t,
6120
+ text,
6121
+ onRetry
6122
+ }), auth ? /* @__PURE__ */ createElement("p", {
6123
+ className: MarketPage_module_default.discoverNotice,
6124
+ role: "note"
6125
+ }, /* @__PURE__ */ createElement(IconWarningOutlineRegular, {
6126
+ size: 14,
6127
+ "aria-hidden": "true"
6128
+ }), /* @__PURE__ */ createElement("span", null, t("panels.discover.sourceAuth"))) : null);
6129
+ }
5943
6130
  //#endregion
5944
6131
  //#region src/app/layouts/rightbar/MarketStates.tsx
5945
6132
  function MarketChecking({ t }) {
@@ -5997,6 +6184,7 @@ var PROGRESS_KEY = {
5997
6184
  install: "panels.market.installing",
5998
6185
  update: "panels.market.updating",
5999
6186
  "update-bundle": "panels.market.updating",
6187
+ "install-version": "panels.market.updating",
6000
6188
  "remove-bundle": "panels.market.uninstalling",
6001
6189
  uninstall: "panels.market.uninstalling",
6002
6190
  "update-dependency": "panels.market.updating",
@@ -6010,6 +6198,7 @@ var ACTION_LABEL_KEY = {
6010
6198
  install: "panels.market.install",
6011
6199
  update: "panels.market.update",
6012
6200
  "update-bundle": "panels.market.update",
6201
+ "install-version": "panels.market.update",
6013
6202
  "remove-bundle": "panels.market.uninstall",
6014
6203
  uninstall: "panels.market.uninstall",
6015
6204
  "update-dependency": "panels.market.update",
@@ -6158,41 +6347,6 @@ function SharedSection({ t, rows, pending, failureOf, act }) {
6158
6347
  }))));
6159
6348
  }
6160
6349
  //#endregion
6161
- //#region src/app/layouts/rightbar/panel-write.ts
6162
- var PANEL_SETTLE_MS = 4e3;
6163
- function rowKey(row) {
6164
- return `${row.id}:${row.shown ? "1" : "0"}:${row.source}`;
6165
- }
6166
- function rowKeys(rows) {
6167
- return rows.map(rowKey).join(",");
6168
- }
6169
- function panelBoardSignature(units, plugins, own) {
6170
- return `${rowKeys(units)}|${rowKeys(plugins)}|${own ? "1" : "0"}`;
6171
- }
6172
- function machineBoardSignature(defaults, changed) {
6173
- const counts = Object.entries(changed).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0).map(([id, count]) => `${id}:${String(count)}`);
6174
- return `${[...defaults].sort().join(",")}|${counts.join(",")}`;
6175
- }
6176
- function nextPending(pending, signature) {
6177
- return pending !== null && pending !== signature ? null : pending;
6178
- }
6179
- function useBoardSettle(signature) {
6180
- const [held, setHeld] = useState(null);
6181
- useEffect(() => {
6182
- setHeld((current) => nextPending(current, signature));
6183
- }, [signature]);
6184
- useEffect(() => {
6185
- if (held === null) return void 0;
6186
- const timer = setTimeout(() => setHeld(null), PANEL_SETTLE_MS);
6187
- return () => clearTimeout(timer);
6188
- }, [held]);
6189
- return {
6190
- pending: held !== null,
6191
- begin: () => setHeld(signature),
6192
- clear: () => setHeld(null)
6193
- };
6194
- }
6195
- //#endregion
6196
6350
  //#region src/shared/components/Tip.tsx
6197
6351
  /**
6198
6352
  * dsh `Tooltip` 的外壳默认值版:说明统一按右栏习惯(`bottom` / `end` / `gap 6` / 挂 body)来,其余 prop 原样转给 `Tooltip`。
@@ -6339,12 +6493,12 @@ function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
6339
6493
  }
6340
6494
  }));
6341
6495
  }
6342
- function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy }) {
6343
- if (rows.length === 0) return null;
6496
+ function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy, headAction, keepHead }) {
6497
+ if (rows.length === 0 && keepHead !== true) return null;
6344
6498
  return /* @__PURE__ */ createElement("section", { className: MarketPage_module_default.marketSection }, titleKey === void 0 ? null : /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketSectionHead }, /* @__PURE__ */ createElement("span", {
6345
6499
  className: MarketPage_module_default.marketSectionIcon,
6346
6500
  "aria-hidden": "true"
6347
- }, icon), /* @__PURE__ */ createElement("h2", { className: MarketPage_module_default.marketSectionTitle }, t(titleKey)), rows.length === 0 ? null : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketSectionCount }, rows.length)), rows.length === 0 ? null : /* @__PURE__ */ createElement("ul", { className: MarketPage_module_default.marketList }, rows.map((row) => /* @__PURE__ */ createElement(MarketLine, {
6501
+ }, icon), /* @__PURE__ */ createElement("h2", { className: MarketPage_module_default.marketSectionTitle }, t(titleKey)), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketSectionCount }, rows.length), headAction === void 0 ? null : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketSectionAction }, headAction)), rows.length === 0 ? null : /* @__PURE__ */ createElement("ul", { className: MarketPage_module_default.marketList }, rows.map((row) => /* @__PURE__ */ createElement(MarketLine, {
6348
6502
  key: row.id,
6349
6503
  t,
6350
6504
  row,
@@ -6509,7 +6663,9 @@ function problemKey(problem) {
6509
6663
  function heldWizardPhase(phase, classifying) {
6510
6664
  return classifying && (phase === "preview" || phase === "idle") ? "inspecting" : phase;
6511
6665
  }
6666
+ var CREDENTIAL_TEXT = /authentication failed|could not read (username|password)|permission denied \(publickey\)|terminal prompts disabled|host key verification failed|repository not found|no such identity/i;
6512
6667
  var FAILURE_KEYS = {
6668
+ credentials: "panels.market.add.failureCredentials",
6513
6669
  network: "panels.market.add.failureNetwork",
6514
6670
  "spec-host": "panels.market.add.failureNetworkHost",
6515
6671
  "not-found": "panels.market.add.failureNotFound",
@@ -6531,9 +6687,15 @@ var FAILURE_KEYS = {
6531
6687
  "stop-profile": "panels.market.add.failureGeneric",
6532
6688
  "stale-approval": "panels.market.add.failureGeneric"
6533
6689
  };
6690
+ function needsCredentials(change) {
6691
+ const text = `${change.errorDetail ?? ""}\n${change.packageResult?.output ?? ""}`;
6692
+ return CREDENTIAL_TEXT.test(text);
6693
+ }
6534
6694
  function failureCode(change) {
6535
6695
  if (change.failedAt === "spec-host") return "spec-host";
6536
- return change.errorCode ?? change.packageResult?.kind ?? change.application;
6696
+ const code = change.errorCode ?? change.packageResult?.kind ?? change.application;
6697
+ if (code === "operation-error" && needsCredentials(change)) return "credentials";
6698
+ return code;
6537
6699
  }
6538
6700
  function failureReasonKey(code) {
6539
6701
  return FAILURE_KEYS[code];
@@ -6608,7 +6770,11 @@ function updateVerdictText(verdict, t, input) {
6608
6770
  }
6609
6771
  //#endregion
6610
6772
  //#region src/app/layouts/rightbar/market-act.ts
6611
- var STEADY_ACTIONS = /* @__PURE__ */ new Set(["update", "update-bundle"]);
6773
+ var STEADY_ACTIONS = /* @__PURE__ */ new Set([
6774
+ "update",
6775
+ "update-bundle",
6776
+ "install-version"
6777
+ ]);
6612
6778
  function assumedApplied(action) {
6613
6779
  return action === "update" || action === "update-dependency" || action === "update-plugin" || REMOVAL_ACTIONS.has(action);
6614
6780
  }
@@ -6652,18 +6818,34 @@ function marketActOf(options) {
6652
6818
  seats.setConfirming(null);
6653
6819
  seats.setFailed(null);
6654
6820
  seats.setNotice(null);
6821
+ const dependency = action === "update-dependency";
6822
+ const byName = action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" || action === "migrate-workbench";
6823
+ const market = action === "install-version" ? row?.market : void 0;
6824
+ const marketSpec = market === void 0 || row?.pkg === void 0 ? void 0 : marketInstallTarget(row.pkg, market.version, market.source).spec;
6825
+ if (action === "install-version" && marketSpec === void 0) {
6826
+ seats.setPending(null);
6827
+ seats.setFailed({
6828
+ id,
6829
+ message: t("panels.market.failed", { reason: t("panels.market.noMarketSource") })
6830
+ });
6831
+ return;
6832
+ }
6655
6833
  const outcome = await send(action === "dismiss-followup" ? {
6656
6834
  action,
6657
6835
  id: row?.followUp?.id ?? ""
6658
- } : action === "update-dependency" ? {
6836
+ } : dependency ? {
6659
6837
  action,
6660
6838
  id
6661
- } : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" || action === "migrate-workbench" ? {
6839
+ } : byName ? {
6662
6840
  action,
6663
6841
  name: row?.pkg ?? ""
6664
- } : {
6842
+ } : marketSpec === void 0 ? {
6665
6843
  action,
6666
6844
  unit: id
6845
+ } : {
6846
+ action,
6847
+ spec: marketSpec,
6848
+ requestId: globalThis.crypto.randomUUID()
6667
6849
  });
6668
6850
  if (!outcome.ok) {
6669
6851
  onChanged({ force: true });
@@ -6728,6 +6910,99 @@ function marketActOf(options) {
6728
6910
  });
6729
6911
  };
6730
6912
  }
6913
+ //#endregion
6914
+ //#region src/app/layouts/rightbar/panel-write.ts
6915
+ var PANEL_SETTLE_MS = 4e3;
6916
+ function rowKey(row) {
6917
+ return `${row.id}:${row.shown ? "1" : "0"}:${row.source}`;
6918
+ }
6919
+ function rowKeys(rows) {
6920
+ return rows.map(rowKey).join(",");
6921
+ }
6922
+ function panelBoardSignature(units, plugins, own) {
6923
+ return `${rowKeys(units)}|${rowKeys(plugins)}|${own ? "1" : "0"}`;
6924
+ }
6925
+ function machineBoardSignature(defaults, changed) {
6926
+ const counts = Object.entries(changed).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0).map(([id, count]) => `${id}:${String(count)}`);
6927
+ return `${[...defaults].sort().join(",")}|${counts.join(",")}`;
6928
+ }
6929
+ function nextPending(pending, signature) {
6930
+ return pending !== null && pending !== signature ? null : pending;
6931
+ }
6932
+ function useBoardSettle(signature) {
6933
+ const [held, setHeld] = useState(null);
6934
+ useEffect(() => {
6935
+ setHeld((current) => nextPending(current, signature));
6936
+ }, [signature]);
6937
+ useEffect(() => {
6938
+ if (held === null) return void 0;
6939
+ const timer = setTimeout(() => setHeld(null), PANEL_SETTLE_MS);
6940
+ return () => clearTimeout(timer);
6941
+ }, [held]);
6942
+ return {
6943
+ pending: held !== null,
6944
+ begin: () => setHeld(signature),
6945
+ clear: () => setHeld(null)
6946
+ };
6947
+ }
6948
+ //#endregion
6949
+ //#region src/app/layouts/rightbar/use-market-default.ts
6950
+ function useMarketDefault(input) {
6951
+ const { t, mocked, defaults, changed, setNotice } = input;
6952
+ const boardWrite = useHostWrite({
6953
+ channel: "prefs",
6954
+ resource: "panels",
6955
+ networkText: t("panels.failed")
6956
+ });
6957
+ const [writing, setWriting] = useState(false);
6958
+ const settle = useBoardSettle(machineBoardSignature(defaults, changed));
6959
+ const setDefault = async (id, next) => {
6960
+ if (mocked) return;
6961
+ setWriting(true);
6962
+ settle.begin();
6963
+ const outcome = await boardWrite.send({
6964
+ action: next ? "show" : "hide",
6965
+ id,
6966
+ scope: "machine"
6967
+ });
6968
+ setWriting(false);
6969
+ if (!outcome.ok) {
6970
+ settle.clear();
6971
+ setNotice(t("panels.failed"));
6972
+ }
6973
+ };
6974
+ return {
6975
+ pending: writing || settle.pending,
6976
+ setDefault
6977
+ };
6978
+ }
6979
+ var market_check_module_default = {
6980
+ check: "_check_1g6tv_1",
6981
+ status: "_status_1g6tv_8",
6982
+ button: "_button_1g6tv_15",
6983
+ icon: "_icon_1g6tv_22"
6984
+ };
6985
+ //#endregion
6986
+ //#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, {
6993
+ type: "button",
6994
+ variant: "ghost",
6995
+ size: "sm",
6996
+ className: market_check_module_default.button,
6997
+ "aria-label": t("panels.market.checkUpdates"),
6998
+ disabled: disabled || checking,
6999
+ icon: /* @__PURE__ */ createElement("span", {
7000
+ className: `${market_check_module_default.icon}${checking ? " wb-spinning" : ""}`,
7001
+ "aria-hidden": "true"
7002
+ }, /* @__PURE__ */ createElement(IconRefreshOutlineRegular, { size: 14 })),
7003
+ onClick: onCheck
7004
+ })));
7005
+ }
6731
7006
  var PanelFoot_module_default = {
6732
7007
  foot: "_foot_1ud1j_1",
6733
7008
  footText: "_footText_1ud1j_13",
@@ -6745,6 +7020,7 @@ var CONFIRM_UNINSTALL = [
6745
7020
  "remove-bundle",
6746
7021
  "uninstall-plugin"
6747
7022
  ];
7023
+ var NO_ROWS = [];
6748
7024
  function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
6749
7025
  const [acknowledged, setAcknowledged] = useState(false);
6750
7026
  return /* @__PURE__ */ createElement(RiskConfirmation, {
@@ -6761,9 +7037,12 @@ function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
6761
7037
  onConfirm
6762
7038
  });
6763
7039
  }
6764
- function MarketBody({ t, self, shown, pluginList, installedList, shared, pending, failed, notice, act, onConfirming, setDefault, boardBusy }) {
7040
+ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending, failed, notice, act, onConfirming, setDefault, boardBusy, check }) {
6765
7041
  const failureOf = (id) => failed?.id === id ? failed.message : null;
6766
7042
  const foot = marketFootVisible(shown, installedList);
7043
+ const sections = marketSections(marketOrder([...shown, ...installedList], (row) => marketRowTitle(row, t)));
7044
+ const installed = sections.find((section) => section.id === "installed");
7045
+ const pendingSection = sections.find((section) => section.id === "not-installed");
6767
7046
  return /* @__PURE__ */ createElement(Fragment, null, notice === null ? null : /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketNote }, notice), /* @__PURE__ */ createElement(MarketSection, {
6768
7047
  t,
6769
7048
  rows: self === void 0 ? [] : [self],
@@ -6777,12 +7056,25 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
6777
7056
  }), self === void 0 ? null : /* @__PURE__ */ createElement("div", {
6778
7057
  className: MarketPage_module_default.marketSelfDivider,
6779
7058
  "aria-hidden": "true"
6780
- }), marketSections(marketOrder([...shown, ...installedList], (row) => marketRowTitle(row, t))).map((section) => /* @__PURE__ */ createElement(MarketSection, {
6781
- key: section.id,
7059
+ }), /* @__PURE__ */ createElement(MarketSection, {
7060
+ t,
7061
+ titleKey: "panels.market.sectionInstalled",
7062
+ icon: marketSectionIcon("installed"),
7063
+ rows: installed?.rows ?? NO_ROWS,
7064
+ keepHead: true,
7065
+ headAction: check,
7066
+ onDefault: setDefault,
7067
+ boardBusy,
7068
+ pending,
7069
+ failureOf,
7070
+ act,
7071
+ confirmActions: CONFIRM_UNINSTALL,
7072
+ onConfirming
7073
+ }), pendingSection === void 0 ? null : /* @__PURE__ */ createElement(MarketSection, {
6782
7074
  t,
6783
- titleKey: section.titleKey,
6784
- icon: marketSectionIcon(section.id === "installed" ? "installed" : "pending"),
6785
- rows: section.rows,
7075
+ titleKey: pendingSection.titleKey,
7076
+ icon: marketSectionIcon("pending"),
7077
+ rows: pendingSection.rows,
6786
7078
  onDefault: setDefault,
6787
7079
  boardBusy,
6788
7080
  pending,
@@ -6790,11 +7082,12 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
6790
7082
  act,
6791
7083
  confirmActions: CONFIRM_UNINSTALL,
6792
7084
  onConfirming
6793
- })), /* @__PURE__ */ createElement(MarketSection, {
7085
+ }), /* @__PURE__ */ createElement(MarketSection, {
6794
7086
  t,
6795
7087
  titleKey: "panels.market.sectionPlugins",
6796
7088
  icon: marketSectionIcon("plugins"),
6797
7089
  rows: pluginList,
7090
+ headAction: check,
6798
7091
  onDefault: setDefault,
6799
7092
  boardBusy,
6800
7093
  pending,
@@ -6843,7 +7136,7 @@ function useMarketScene(input) {
6843
7136
  busyId
6844
7137
  };
6845
7138
  }
6846
- function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
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 = {} }) {
6847
7140
  const { pending, setPending, confirming, setConfirming, failed, setFailed, notice, setNotice } = useMarketTransient({
6848
7141
  mock,
6849
7142
  onPending
@@ -6868,29 +7161,14 @@ function MarketView({ t, titleOf, manifests, installable, capabilities, freshnes
6868
7161
  channel: "provision",
6869
7162
  networkText: t("panels.failed")
6870
7163
  });
6871
- const boardWrite = useHostWrite({
6872
- channel: "prefs",
6873
- resource: "panels",
6874
- networkText: t("panels.failed")
7164
+ const { pending: defaultPending, setDefault } = useMarketDefault({
7165
+ t,
7166
+ mocked: mock !== void 0,
7167
+ defaults,
7168
+ changed,
7169
+ setNotice
6875
7170
  });
6876
- const [writingDefault, setWritingDefault] = useState(false);
6877
- const settleDefault = useBoardSettle(machineBoardSignature(defaults, changed));
6878
- const { busy: boardBusy } = useVisibleBusy(writingDefault || settleDefault.pending, 500);
6879
- const setDefault = async (id, next) => {
6880
- if (mock !== void 0) return;
6881
- setWritingDefault(true);
6882
- settleDefault.begin();
6883
- const outcome = await boardWrite.send({
6884
- action: next ? "show" : "hide",
6885
- id,
6886
- scope: "machine"
6887
- });
6888
- setWritingDefault(false);
6889
- if (!outcome.ok) {
6890
- settleDefault.clear();
6891
- setNotice(t("panels.failed"));
6892
- }
6893
- };
7171
+ const { busy: boardBusy } = useVisibleBusy(defaultPending, 500);
6894
7172
  const pendingRow = pendingRowOf({
6895
7173
  pending,
6896
7174
  removing,
@@ -6937,6 +7215,15 @@ function MarketView({ t, titleOf, manifests, installable, capabilities, freshnes
6937
7215
  });
6938
7216
  const settled = marketSettled(freshness, installedRead);
6939
7217
  const nothing = shown.length === 0 && self === void 0 && installedList.length === 0 && pluginList.length === 0;
7218
+ const { busy: checkingShown } = useVisibleBusy(freshness.checking, 500);
7219
+ const check = /* @__PURE__ */ createElement(MarketCheck, {
7220
+ t,
7221
+ checkedAt: updatesCheckedAt,
7222
+ checking: checkingShown,
7223
+ failed: updatesFailed,
7224
+ disabled: pending !== null,
7225
+ onCheck: () => onChanged({ force: true })
7226
+ });
6940
7227
  if (!settled || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ createElement(MarketChecking, { t });
6941
7228
  if (nothing) return /* @__PURE__ */ createElement(MarketEmpty, { t });
6942
7229
  return /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement(MarketBody, {
@@ -6952,20 +7239,31 @@ function MarketView({ t, titleOf, manifests, installable, capabilities, freshnes
6952
7239
  act,
6953
7240
  onConfirming: setConfirming,
6954
7241
  setDefault,
6955
- boardBusy
6956
- }), /* @__PURE__ */ createElement(ConfirmUninstall, {
7242
+ boardBusy,
7243
+ check
7244
+ }), /* @__PURE__ */ createElement(UninstallConfirm, {
7245
+ t,
7246
+ confirming,
7247
+ row: confirmingRow,
7248
+ onClose: () => setConfirming(null),
7249
+ act,
7250
+ rowById
7251
+ }));
7252
+ }
7253
+ function UninstallConfirm({ t, confirming, row, onClose, act, rowById }) {
7254
+ return /* @__PURE__ */ createElement(ConfirmUninstall, {
6957
7255
  key: confirming ?? "",
6958
7256
  t,
6959
- name: confirmingRow === void 0 ? null : marketRowTitle(confirmingRow, t),
6960
- onCancel: () => setConfirming(null),
7257
+ name: row === void 0 ? null : marketRowTitle(row, t),
7258
+ onCancel: onClose,
6961
7259
  onConfirm: () => {
6962
7260
  const id = confirming;
6963
- setConfirming(null);
7261
+ onClose();
6964
7262
  if (id === null) return;
6965
- const row = rowById.get(id);
6966
- act(id, row?.plugin === true ? "uninstall-plugin" : row?.pkg === void 0 ? "uninstall" : "remove-bundle");
7263
+ const target = rowById.get(id);
7264
+ act(id, target?.plugin === true ? "uninstall-plugin" : target?.pkg === void 0 ? "uninstall" : "remove-bundle");
6967
7265
  }
6968
- }));
7266
+ });
6969
7267
  }
6970
7268
  //#endregion
6971
7269
  //#region ../../node_modules/.pnpm/dayjs@1.11.23/node_modules/dayjs/plugin/localizedFormat.js
@@ -7239,16 +7537,20 @@ function MarketIcon({ src, size = ICON }) {
7239
7537
  onError: () => setFailed(src)
7240
7538
  });
7241
7539
  }
7242
- function EntryAction({ t, entry, title, onInstall, onShowInstalled }) {
7540
+ function EntryAction({ t, entry, title, onInstall, onShowInstalled, installDisabled = false }) {
7243
7541
  const latest = latestVersionOf(entry);
7244
7542
  if (latest === void 0) return null;
7245
- if (latest.install === "installed" || latest.install === "update-available") return /* @__PURE__ */ createElement(Button, {
7246
- type: "button",
7247
- variant: "ghost",
7248
- size: "sm",
7249
- "aria-label": t("panels.discover.openInstalled", { name: title }),
7250
- onClick: () => onShowInstalled(entry.name)
7251
- }, t(latest.install === "update-available" ? "panels.discover.cardUpdate" : "panels.discover.cardInstalled"));
7543
+ if (latest.install === "installed" || latest.install === "update-available") {
7544
+ const update = latest.install === "update-available";
7545
+ return /* @__PURE__ */ createElement(Button, {
7546
+ type: "button",
7547
+ variant: "ghost",
7548
+ size: "sm",
7549
+ className: update ? MarketPage_module_default.discoverUpdateAction : void 0,
7550
+ "aria-label": t("panels.discover.openInstalled", { name: title }),
7551
+ onClick: () => onShowInstalled(entry.name)
7552
+ }, t(update ? "panels.discover.cardUpdate" : "panels.discover.cardInstalled"));
7553
+ }
7252
7554
  if (latest.compat === "incompatible") return /* @__PURE__ */ createElement(Tooltip, {
7253
7555
  label: t("panels.discover.noCompatibleVersion", { runtime: latest.engines?.dsh ?? "" }),
7254
7556
  side: "bottom",
@@ -7266,11 +7568,12 @@ function EntryAction({ t, entry, title, onInstall, onShowInstalled }) {
7266
7568
  type: "button",
7267
7569
  variant: "outline",
7268
7570
  size: "sm",
7571
+ disabled: installDisabled,
7269
7572
  "aria-label": t("panels.discover.installTitle", { name: title }),
7270
7573
  onClick: () => onInstall(entry, latest)
7271
7574
  }, t("panels.discover.cardInstall"));
7272
7575
  }
7273
- function EntryCard({ t, locale, entry, onOpen, onInstall, onShowInstalled }) {
7576
+ function EntryCard({ t, locale, entry, onOpen, onInstall, onShowInstalled, installDisabled = false }) {
7274
7577
  const title = displayTitleOf(entry, locale);
7275
7578
  const latest = latestVersionOf(entry);
7276
7579
  const description = marketText(entry.description, locale);
@@ -7295,10 +7598,11 @@ function EntryCard({ t, locale, entry, onOpen, onInstall, onShowInstalled }) {
7295
7598
  entry,
7296
7599
  title,
7297
7600
  onInstall,
7298
- onShowInstalled
7601
+ onShowInstalled,
7602
+ installDisabled
7299
7603
  })));
7300
7604
  }
7301
- function DiscoverRows({ t, locale, entries, onOpen, onInstall, onShowInstalled }) {
7605
+ function DiscoverRows({ t, locale, entries, onOpen, onInstall, onShowInstalled, installDisabled }) {
7302
7606
  return /* @__PURE__ */ createElement("ul", { className: MarketPage_module_default.discoverList }, entries.map((entry) => /* @__PURE__ */ createElement(EntryCard, {
7303
7607
  key: entry.name,
7304
7608
  t,
@@ -7306,12 +7610,13 @@ function DiscoverRows({ t, locale, entries, onOpen, onInstall, onShowInstalled }
7306
7610
  entry,
7307
7611
  onOpen,
7308
7612
  onInstall,
7309
- onShowInstalled
7613
+ onShowInstalled,
7614
+ installDisabled: installDisabled === true
7310
7615
  })));
7311
7616
  }
7312
7617
  //#endregion
7313
7618
  //#region src/app/layouts/market/discover-versions.tsx
7314
- function DiscoverVersions({ t, locale, entry, onInstall }) {
7619
+ function DiscoverVersions({ t, locale, entry, onInstall, installDisabled = false }) {
7315
7620
  const latest = latestVersionOf(entry);
7316
7621
  return /* @__PURE__ */ createElement("ul", {
7317
7622
  className: MarketPage_module_default.discoverVersions,
@@ -7332,6 +7637,7 @@ function DiscoverVersions({ t, locale, entry, onInstall }) {
7332
7637
  type: "button",
7333
7638
  variant: "ghost",
7334
7639
  size: "sm",
7640
+ disabled: installDisabled,
7335
7641
  "aria-label": t("panels.discover.installVersionTitle", {
7336
7642
  name: entry.name,
7337
7643
  version: version.version
@@ -7344,6 +7650,8 @@ function DiscoverVersions({ t, locale, entry, onInstall }) {
7344
7650
  //#region ../shared/dist/contract/protocol/market-index.js
7345
7651
  var MARKET_DISCOVER_ROUTE = "panels/market-discover";
7346
7652
  var MARKET_DOC_ROUTE = "panels/market-doc";
7653
+ var MARKET_GIT_PROBE_ROUTE = "panels/git-probe";
7654
+ var MARKET_INSTALLED_ROUTE = "panels/market-installed";
7347
7655
  var MARKET_PUBLISH_PREVIEW_ROUTE = "panels/market-publish-preview";
7348
7656
  var MARKET_SOURCES_ROUTE = "panels/market-sources";
7349
7657
  //#endregion
@@ -7354,6 +7662,12 @@ function readMarketDiscover(options = {}) {
7354
7662
  function readMarketSources() {
7355
7663
  return apiGet(MARKET_SOURCES_ROUTE);
7356
7664
  }
7665
+ function readGitProbe(url) {
7666
+ return apiGet(MARKET_GIT_PROBE_ROUTE, { url });
7667
+ }
7668
+ function readMarketInstalled() {
7669
+ return apiGet(MARKET_INSTALLED_ROUTE);
7670
+ }
7357
7671
  function readMarketDoc(name, version, kind) {
7358
7672
  return apiGet(MARKET_DOC_ROUTE, {
7359
7673
  name,
@@ -7420,13 +7734,13 @@ function DiscoverDocPanel({ t, name, version, kind }) {
7420
7734
  }
7421
7735
  //#endregion
7422
7736
  //#region src/app/layouts/market/discover-detail.tsx
7423
- function factLabel(t, fact) {
7737
+ function factLabel$1(t, fact) {
7424
7738
  return t(fact.kind === "package" ? "panels.discover.factPackage" : fact.kind === "registry" ? "panels.discover.factRegistry" : fact.kind === "repository" ? "panels.discover.factRepository" : fact.kind === "commit" ? "panels.discover.factCommit" : "panels.discover.factDirectory");
7425
7739
  }
7426
7740
  function FactRow({ kind, children }) {
7427
7741
  return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverFactRow }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverFactKind }, kind), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverFactValue }, children));
7428
7742
  }
7429
- function OverviewPanel({ t, locale, entry, latest, market, onInstall }) {
7743
+ function OverviewPanel({ t, locale, entry, latest, market, onInstall, installDisabled }) {
7430
7744
  const description = marketText(entry.description, locale);
7431
7745
  const date = publishDateText(latest?.publishTimestamp, locale, "long");
7432
7746
  const facts = latest === void 0 ? [] : sourceFactsOf(entry.name, latest);
@@ -7446,12 +7760,13 @@ function OverviewPanel({ t, locale, entry, latest, market, onInstall }) {
7446
7760
  rel: "noopener noreferrer"
7447
7761
  }, entry.homepage)), facts.map((fact) => /* @__PURE__ */ createElement(FactRow, {
7448
7762
  key: `${fact.kind}:${fact.value}`,
7449
- kind: factLabel(t, fact)
7763
+ kind: factLabel$1(t, fact)
7450
7764
  }, /* @__PURE__ */ createElement("code", { className: MarketPage_module_default.discoverCode }, fact.value))), latest === void 0 ? null : /* @__PURE__ */ createElement(FactRow, { kind: t("panels.discover.factPublished") }, date), entry.category === void 0 ? null : /* @__PURE__ */ createElement(FactRow, { kind: t("panels.discover.factCategory") }, entry.category), entry.labels.length === 0 ? null : /* @__PURE__ */ createElement(FactRow, { kind: t("panels.discover.factLabels") }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverTags }, entry.labels.map((label) => /* @__PURE__ */ createElement(Tag, { key: label }, label)))), /* @__PURE__ */ createElement(FactRow, { kind: t("panels.discover.factMarket") }, market))), latest === void 0 ? null : /* @__PURE__ */ createElement("section", { className: MarketPage_module_default.discoverSection }, /* @__PURE__ */ createElement("h4", { className: MarketPage_module_default.discoverSectionTitle }, t("panels.discover.detailVersions")), /* @__PURE__ */ createElement(DiscoverVersions, {
7451
7765
  t,
7452
7766
  locale,
7453
7767
  entry,
7454
- onInstall
7768
+ onInstall,
7769
+ installDisabled: installDisabled === true
7455
7770
  })));
7456
7771
  }
7457
7772
  function DiscoverDetail(props) {
@@ -7498,7 +7813,8 @@ function DiscoverDetail(props) {
7498
7813
  entry,
7499
7814
  title,
7500
7815
  onInstall: props.onInstall,
7501
- onShowInstalled: props.onShowInstalled
7816
+ onShowInstalled: props.onShowInstalled,
7817
+ installDisabled: props.installDisabled === true
7502
7818
  })), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverDetailTabs }, /* @__PURE__ */ createElement(SegmentedTabs, {
7503
7819
  className: MarketPage_module_default.discoverDetailTabList,
7504
7820
  items: tabItems,
@@ -7516,7 +7832,8 @@ function DiscoverDetail(props) {
7516
7832
  entry,
7517
7833
  latest,
7518
7834
  market: props.market,
7519
- onInstall: props.onInstall
7835
+ onInstall: props.onInstall,
7836
+ installDisabled: props.installDisabled === true
7520
7837
  })) : null, tab === "overview" || latest === void 0 ? null : /* @__PURE__ */ createElement("div", {
7521
7838
  className: MarketPage_module_default.discoverDetailPanel,
7522
7839
  id: `${idPrefix}-panel-${tab}`,
@@ -7531,12 +7848,185 @@ function DiscoverDetail(props) {
7531
7848
  })));
7532
7849
  }
7533
7850
  //#endregion
7851
+ //#region src/app/layouts/market/discover-installing.tsx
7852
+ function DiscoverInstalling({ t, name, cancelling, onCancel }) {
7853
+ return /* @__PURE__ */ createElement("p", {
7854
+ className: MarketPage_module_default.discoverInstallBar,
7855
+ role: "status"
7856
+ }, /* @__PURE__ */ createElement(Spinner, { size: 14 }), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverInstallText }, t("panels.discover.installingNamed", { name })), /* @__PURE__ */ createElement(Button, {
7857
+ type: "button",
7858
+ variant: "outline",
7859
+ size: "sm",
7860
+ disabled: cancelling,
7861
+ "aria-busy": cancelling,
7862
+ onClick: onCancel
7863
+ }, t(cancelling ? "panels.discover.cancelling" : "panels.discover.cancelInstall")));
7864
+ }
7865
+ //#endregion
7866
+ //#region src/app/layouts/market/discover-transport.tsx
7867
+ function stateText(t, state) {
7868
+ if (state === "ok") return "";
7869
+ if (state === "auth") return t("panels.discover.transportAuth");
7870
+ if (state === "unreachable") return t("panels.discover.transportUnreachable");
7871
+ if (state === "unknown") return t("panels.discover.transportUnknown");
7872
+ return t("panels.discover.transportChecking");
7873
+ }
7874
+ function kindText(t, kind) {
7875
+ return t(kind === "ssh" ? "panels.discover.transportSsh" : "panels.discover.transportHttps");
7876
+ }
7877
+ function DiscoverTransport({ t, transport }) {
7878
+ const [open, setOpen] = useState(false);
7879
+ const chosenRow = transport.rows.find((row) => row.url === transport.chosen);
7880
+ const chosenState = chosenRow === void 0 ? void 0 : transport.states[chosenRow.url] ?? "checking";
7881
+ const probing = transport.probing;
7882
+ const summary = chosenRow !== void 0 ? kindText(t, chosenRow.kind) : probing ? t("panels.discover.transportChecking") : t("panels.discover.transportNone");
7883
+ const summaryState = probing || chosenState === void 0 ? "" : stateText(t, chosenState);
7884
+ const needsAuth = transport.rows.length > 0 && transport.rows.every((row) => transport.states[row.url] === "auth") && transport.customState !== "ok";
7885
+ const customBusy = transport.customState === "checking";
7886
+ return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverTransport }, /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverTransportHead }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverTransportTitle }, t("panels.discover.transportTitle")), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverTransportKind }, summary), summaryState === "" ? null : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverTransportState }, summaryState), /* @__PURE__ */ createElement(Button, {
7887
+ type: "button",
7888
+ variant: "ghost",
7889
+ size: "sm",
7890
+ onClick: () => setOpen((value) => !value)
7891
+ }, t(open ? "panels.discover.transportChangeHide" : "panels.discover.transportChange"))), open ? /* @__PURE__ */ createElement("div", {
7892
+ className: MarketPage_module_default.discoverTransportRows,
7893
+ role: "radiogroup",
7894
+ "aria-label": t("panels.discover.transportTitle")
7895
+ }, transport.rows.map((row) => {
7896
+ const state = transport.states[row.url] ?? "checking";
7897
+ const label = stateText(t, state);
7898
+ return /* @__PURE__ */ createElement("label", {
7899
+ key: row.url,
7900
+ className: MarketPage_module_default.discoverTransportRow,
7901
+ "data-state": state,
7902
+ title: row.url
7903
+ }, /* @__PURE__ */ createElement("input", {
7904
+ type: "radio",
7905
+ className: MarketPage_module_default.discoverTransportRadio,
7906
+ name: "discover-git-transport",
7907
+ value: row.url,
7908
+ checked: transport.chosen === row.url,
7909
+ onChange: () => transport.setChosen(row.url)
7910
+ }), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverTransportKind }, kindText(t, row.kind)), label === "" ? null : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverTransportState }, label));
7911
+ })) : null, open ? /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverTransportCustom }, /* @__PURE__ */ createElement(TextField, {
7912
+ type: "text",
7913
+ className: MarketPage_module_default.discoverTransportInput,
7914
+ value: transport.custom,
7915
+ placeholder: t("panels.discover.transportPlaceholder"),
7916
+ "aria-label": t("panels.discover.transportPlaceholder"),
7917
+ spellCheck: false,
7918
+ autoComplete: "off",
7919
+ onChange: (event) => transport.setCustom(event.target.value),
7920
+ onKeyDown: (event) => {
7921
+ if (event.key === "Enter") transport.checkCustom();
7922
+ }
7923
+ }), /* @__PURE__ */ createElement(Button, {
7924
+ type: "button",
7925
+ variant: "outline",
7926
+ size: "sm",
7927
+ disabled: transport.custom.trim() === "" || customBusy,
7928
+ "aria-busy": customBusy,
7929
+ onClick: transport.checkCustom
7930
+ }, t(customBusy ? "panels.discover.transportChecking" : "panels.discover.transportTest")), transport.customState === null || stateText(t, transport.customState) === "" ? null : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverTransportState }, stateText(t, transport.customState))) : null, needsAuth ? /* @__PURE__ */ createElement("p", {
7931
+ className: MarketPage_module_default.discoverNotice,
7932
+ role: "note"
7933
+ }, /* @__PURE__ */ createElement(IconWarningOutlineRegular, {
7934
+ size: 14,
7935
+ "aria-hidden": "true"
7936
+ }), /* @__PURE__ */ createElement("span", null, t("panels.discover.transportNeedsAuth"))) : null);
7937
+ }
7938
+ //#endregion
7939
+ //#region src/app/layouts/market/use-git-transport.ts
7940
+ function probeOrUnknown(url) {
7941
+ return readGitProbe(url).then((response) => response.ok ? response.status : "unknown").catch(() => "unknown");
7942
+ }
7943
+ function usable(state) {
7944
+ return state !== void 0 && state !== "auth" && state !== "checking";
7945
+ }
7946
+ function defaultOf(rows, states) {
7947
+ const readable = rows.find((row) => states[row.url] === "ok");
7948
+ if (readable !== void 0) return readable.url;
7949
+ const fallback = rows.find((row) => usable(states[row.url]));
7950
+ return fallback === void 0 ? null : fallback.url;
7951
+ }
7952
+ function useGitTransport(source, preferredKind) {
7953
+ const rows = useMemo(() => {
7954
+ if (source === null) return [];
7955
+ const candidates = gitTransportCandidates(source.url);
7956
+ if (preferredKind === void 0) return candidates;
7957
+ return [...candidates].sort((left, right) => Number(right.kind === preferredKind) - Number(left.kind === preferredKind));
7958
+ }, [source, preferredKind]);
7959
+ const [results, setResults] = useState({});
7960
+ const [picked, setPicked] = useState(null);
7961
+ const [custom, setCustom] = useState("");
7962
+ const [customState, setCustomState] = useState(null);
7963
+ const generation = useRef(0);
7964
+ useEffect(() => {
7965
+ const mirror = ++generation.current;
7966
+ for (const row of rows) probeOrUnknown(row.url).then((state) => {
7967
+ if (generation.current !== mirror) return;
7968
+ setResults((current) => ({
7969
+ ...current,
7970
+ [row.url]: state
7971
+ }));
7972
+ });
7973
+ return () => {
7974
+ generation.current += 1;
7975
+ };
7976
+ }, [rows]);
7977
+ const checkCustom = useCallback(() => {
7978
+ const wanted = custom.trim();
7979
+ if (wanted === "") return;
7980
+ const mirror = ++generation.current;
7981
+ setCustomState("checking");
7982
+ probeOrUnknown(wanted).then((state) => {
7983
+ if (generation.current !== mirror) return;
7984
+ setCustomState(state);
7985
+ if (usable(state)) setPicked(wanted);
7986
+ });
7987
+ }, [custom]);
7988
+ const states = useMemo(() => {
7989
+ const next = {};
7990
+ for (const row of rows) next[row.url] = results[row.url] ?? "checking";
7991
+ return next;
7992
+ }, [results, rows]);
7993
+ const chosen = picked !== null && (rows.some((row) => row.url === picked) || picked === custom.trim()) ? picked : defaultOf(rows, states);
7994
+ return {
7995
+ rows,
7996
+ chosen,
7997
+ states,
7998
+ custom,
7999
+ customState,
8000
+ probing: rows.some((row) => states[row.url] === "checking"),
8001
+ ready: chosen !== null,
8002
+ setChosen: setPicked,
8003
+ setCustom,
8004
+ checkCustom
8005
+ };
8006
+ }
8007
+ //#endregion
7534
8008
  //#region src/app/layouts/market/discover-confirm.tsx
7535
- function DiscoverConfirm({ t, locale, choice, onCancel, onConfirm }) {
8009
+ function DiscoverConfirm({ t, locale, choice, transports, onCancel, onConfirm }) {
7536
8010
  if (choice === null) return null;
8011
+ return /* @__PURE__ */ createElement(DiscoverConfirmBody, {
8012
+ t,
8013
+ locale,
8014
+ choice,
8015
+ transports,
8016
+ onCancel,
8017
+ onConfirm
8018
+ });
8019
+ }
8020
+ function factLabel(t, kind) {
8021
+ return t(kind === "package" ? "panels.discover.factPackage" : kind === "registry" ? "panels.discover.factRegistry" : kind === "repository" ? "panels.discover.factRepository" : kind === "commit" ? "panels.discover.factCommit" : "panels.discover.factDirectory");
8022
+ }
8023
+ function DiscoverConfirmBody({ t, locale, choice, transports, onCancel, onConfirm }) {
8024
+ const git = choice.version.source.type === "git" ? choice.version.source : null;
8025
+ const host = git === null ? void 0 : gitAddressOf(git.url)?.host;
8026
+ const transport = useGitTransport(git, host === void 0 ? void 0 : transports[host]);
7537
8027
  const title = displayTitleOf(choice.entry, locale) || choice.entry.name;
7538
- const facts = sourceFactsOf(choice.entry.name, choice.version);
7539
- const factLabel = (kind) => t(kind === "package" ? "panels.discover.factPackage" : kind === "registry" ? "panels.discover.factRegistry" : kind === "repository" ? "panels.discover.factRepository" : kind === "commit" ? "panels.discover.factCommit" : "panels.discover.factDirectory");
8028
+ const facts = sourceFactsOf(choice.entry.name, choice.version).filter((fact) => git === null || fact.kind !== "repository");
8029
+ const ready = git === null || transport.ready;
7540
8030
  return /* @__PURE__ */ createElement(Modal, {
7541
8031
  open: true,
7542
8032
  onClose: onCancel,
@@ -7551,15 +8041,20 @@ function DiscoverConfirm({ t, locale, choice, onCancel, onConfirm }) {
7551
8041
  type: "button",
7552
8042
  variant: "primary",
7553
8043
  autoFocus: true,
7554
- onClick: onConfirm
7555
- }, t("panels.discover.cardInstall")))
8044
+ disabled: !ready,
8045
+ "aria-busy": git !== null && transport.probing,
8046
+ onClick: () => onConfirm(transport.chosen ?? void 0)
8047
+ }, git !== null && transport.probing ? /* @__PURE__ */ createElement(Spinner, { size: 12 }) : null, t(git !== null && transport.probing ? "panels.discover.transportChecking" : "panels.discover.cardInstall")))
7556
8048
  }, /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverDialogBody }, /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverConfirmHead }, /* @__PURE__ */ createElement("span", {
7557
8049
  className: MarketPage_module_default.discoverArtwork,
7558
8050
  "aria-hidden": "true"
7559
- }, /* @__PURE__ */ createElement(MarketIcon, { src: choice.entry.icon })), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverStrong }, title), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverMeta }, choice.version.version))), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverFacts }, choice.entry.author === void 0 ? null : /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverFactRow }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverFactKind }, t("panels.discover.factAuthor")), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverFactValue }, choice.entry.author)), facts.map((fact) => /* @__PURE__ */ createElement("div", {
8051
+ }, /* @__PURE__ */ createElement(MarketIcon, { src: choice.entry.icon })), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverStrong }, title), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverMeta }, choice.version.version))), git === null ? null : /* @__PURE__ */ createElement(DiscoverTransport, {
8052
+ t,
8053
+ transport
8054
+ }), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverFacts }, choice.entry.author === void 0 ? null : /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverFactRow }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverFactKind }, t("panels.discover.factAuthor")), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverFactValue }, choice.entry.author)), facts.map((fact) => /* @__PURE__ */ createElement("div", {
7560
8055
  key: `${fact.kind}:${fact.value}`,
7561
8056
  className: MarketPage_module_default.discoverFactRow
7562
- }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverFactKind }, factLabel(fact.kind)), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverFactValue }, /* @__PURE__ */ createElement("code", { className: MarketPage_module_default.discoverCode }, fact.value))))), /* @__PURE__ */ createElement("p", {
8057
+ }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverFactKind }, factLabel(t, fact.kind)), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverFactValue }, /* @__PURE__ */ createElement("code", { className: MarketPage_module_default.discoverCode }, fact.value))))), /* @__PURE__ */ createElement("p", {
7563
8058
  className: MarketPage_module_default.discoverNotice,
7564
8059
  role: "note"
7565
8060
  }, /* @__PURE__ */ createElement(IconWarningOutlineRegular, {
@@ -7836,6 +8331,7 @@ function DiscoverDialogs({ t, d }) {
7836
8331
  t,
7837
8332
  locale: d.locale,
7838
8333
  choice: d.choice,
8334
+ transports: d.transports,
7839
8335
  onCancel: () => d.setChoice(null),
7840
8336
  onConfirm: d.install
7841
8337
  }), /* @__PURE__ */ createElement(DiscoverInitDialog, {
@@ -8050,6 +8546,7 @@ function installVerdictOf(value, t) {
8050
8546
  const change = changeOf(value);
8051
8547
  if (change === void 0) return { kind: "quiet" };
8052
8548
  if (SHIPPED.includes(change.application)) return { kind: "done" };
8549
+ if (change.application === "cancelled") return { kind: "cancelled" };
8053
8550
  if (change.application !== "failed") return { kind: "quiet" };
8054
8551
  return {
8055
8552
  kind: "failed",
@@ -8070,6 +8567,8 @@ function useDiscover(t, active, onInstalled) {
8070
8567
  const [manageOpen, setManageOpen] = useState(false);
8071
8568
  const [initOpen, setInitOpen] = useState(false);
8072
8569
  const [choice, setChoice] = useState(null);
8570
+ const [installing, setInstalling] = useState(null);
8571
+ const [cancelling, setCancelling] = useState(false);
8073
8572
  const [notice, setNotice] = useState(null);
8074
8573
  const [addingSource, setAddingSource] = useState(false);
8075
8574
  const [pendingSourceId, setPendingSourceId] = useState(null);
@@ -8087,6 +8586,10 @@ function useDiscover(t, active, onInstalled) {
8087
8586
  channel: "provision",
8088
8587
  networkText: t("panels.discover.failed")
8089
8588
  });
8589
+ const cancel = useHostWrite({
8590
+ channel: "provision",
8591
+ networkText: t("panels.discover.failed")
8592
+ });
8090
8593
  const loadSources = useCallback(async () => {
8091
8594
  const ticket = sourceTicket.current + 1;
8092
8595
  sourceTicket.current = ticket;
@@ -8095,7 +8598,8 @@ function useDiscover(t, active, onInstalled) {
8095
8598
  if (response === null || !response.ok) return;
8096
8599
  setKnownSources({
8097
8600
  sources: sourceRowsOf(response.sources),
8098
- selected: response.selected
8601
+ selected: response.selected,
8602
+ transports: response.transports ?? {}
8099
8603
  });
8100
8604
  }, []);
8101
8605
  const load = useCallback(async (force = false) => {
@@ -8115,7 +8619,8 @@ function useDiscover(t, active, onInstalled) {
8115
8619
  setPayload(response);
8116
8620
  setKnownSources({
8117
8621
  sources: response.sources,
8118
- selected: response.selected
8622
+ selected: response.selected,
8623
+ transports: {}
8119
8624
  });
8120
8625
  setLimit(50);
8121
8626
  }, [t]);
@@ -8167,6 +8672,7 @@ function useDiscover(t, active, onInstalled) {
8167
8672
  if (payload?.problem === void 0 || payload.selected === null) return null;
8168
8673
  return {
8169
8674
  id: payload.selected,
8675
+ kind: payload.problem.kind,
8170
8676
  detail: payload.problem.detail ?? ""
8171
8677
  };
8172
8678
  }, [payload]);
@@ -8280,7 +8786,7 @@ function useDiscover(t, active, onInstalled) {
8280
8786
  setDetail(null);
8281
8787
  beginSwitch();
8282
8788
  setKnownSources((current) => current === null ? current : {
8283
- sources: current.sources,
8789
+ ...current,
8284
8790
  selected: id
8285
8791
  });
8286
8792
  sources.send({
@@ -8297,14 +8803,25 @@ function useDiscover(t, active, onInstalled) {
8297
8803
  await load(true);
8298
8804
  });
8299
8805
  };
8300
- const install = () => {
8301
- if (choice === null) return;
8302
- const target = marketInstallTarget(choice.entry.name, choice.version.version, choice.version.source);
8806
+ const install = (url) => {
8807
+ if (choice === null || installing !== null) return;
8808
+ const source = choice.version.source;
8809
+ const target = marketInstallTarget(choice.entry.name, choice.version.version, source.type === "git" && url !== void 0 ? {
8810
+ ...source,
8811
+ url
8812
+ } : source);
8813
+ const name = displayTitleOf(choice.entry, locale);
8814
+ const requestId = globalThis.crypto.randomUUID();
8303
8815
  setChoice(null);
8304
8816
  setNotice(null);
8817
+ setInstalling({
8818
+ name,
8819
+ requestId
8820
+ });
8305
8821
  provision.send({
8306
8822
  action: "install-version",
8307
8823
  spec: target.spec,
8824
+ requestId,
8308
8825
  ...target.registry === void 0 ? {} : { registry: target.registry }
8309
8826
  }).then((outcome) => {
8310
8827
  if (!outcome.ok) return;
@@ -8314,9 +8831,25 @@ function useDiscover(t, active, onInstalled) {
8314
8831
  onInstalled();
8315
8832
  return;
8316
8833
  }
8834
+ if (verdict.kind === "cancelled") {
8835
+ setNotice(t("panels.discover.installCancelled", { name }));
8836
+ onInstalled();
8837
+ return;
8838
+ }
8317
8839
  if (verdict.kind !== "done") return;
8318
- setNotice(t("panels.discover.installedDone", { name: choice.entry.name }));
8840
+ setNotice(t("panels.discover.installedDone", { name }));
8319
8841
  onInstalled();
8842
+ }).finally(() => {
8843
+ setInstalling(null);
8844
+ setCancelling(false);
8845
+ });
8846
+ };
8847
+ const cancelInstall = () => {
8848
+ if (installing === null || cancelling) return;
8849
+ setCancelling(true);
8850
+ cancel.send({
8851
+ action: "cancel-install",
8852
+ requestId: installing.requestId
8320
8853
  });
8321
8854
  };
8322
8855
  const reload = () => {
@@ -8333,6 +8866,7 @@ function useDiscover(t, active, onInstalled) {
8333
8866
  failure,
8334
8867
  sources: knownSources?.sources ?? payload?.sources ?? [],
8335
8868
  selected: knownSources?.selected ?? payload?.selected ?? null,
8869
+ transports: knownSources?.transports ?? {},
8336
8870
  entries,
8337
8871
  shown,
8338
8872
  total: sorted.length,
@@ -8348,6 +8882,9 @@ function useDiscover(t, active, onInstalled) {
8348
8882
  writeFailed: sources.failed,
8349
8883
  provisionFailed: provision.failed,
8350
8884
  busy: sources.busy,
8885
+ installing: installing === null ? null : installing.name,
8886
+ cancelling,
8887
+ installDisabled: installing !== null,
8351
8888
  addingSource,
8352
8889
  manageOpen,
8353
8890
  problem,
@@ -8365,7 +8902,10 @@ function useDiscover(t, active, onInstalled) {
8365
8902
  openDetail: (name) => setDetail(name),
8366
8903
  closeDetail: () => setDetail(null),
8367
8904
  setDetailEntry: setDetail,
8368
- setChoice,
8905
+ setChoice: (value) => {
8906
+ if (value !== null && installing !== null) return;
8907
+ setChoice(value);
8908
+ },
8369
8909
  setManageOpen,
8370
8910
  setInitOpen,
8371
8911
  initialize,
@@ -8374,7 +8914,8 @@ function useDiscover(t, active, onInstalled) {
8374
8914
  addSource,
8375
8915
  removeSourceById,
8376
8916
  selectSource,
8377
- install
8917
+ install,
8918
+ cancelInstall
8378
8919
  };
8379
8920
  }
8380
8921
  //#endregion
@@ -8439,15 +8980,21 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
8439
8980
  }, /* @__PURE__ */ createElement(IconWarningOutlineRegular, {
8440
8981
  size: 14,
8441
8982
  "aria-hidden": "true"
8442
- }), /* @__PURE__ */ createElement("span", null, t("panels.discover.stale"))) : null, uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ createElement(DiscoverFailure, {
8983
+ }), /* @__PURE__ */ createElement("span", null, t("panels.discover.stale"))) : null, uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ createElement(DiscoverReadFailure, {
8443
8984
  t,
8444
8985
  text: readFailed,
8986
+ auth: d.problem?.kind === "git-auth",
8445
8987
  onRetry: d.reload
8446
8988
  }) : /* @__PURE__ */ createElement(DiscoverUninitialized, {
8447
8989
  t,
8448
8990
  path: uninitialized.path,
8449
8991
  empty: uninitialized.empty,
8450
8992
  onInit: () => d.setInitOpen(true)
8993
+ }), d.installing === null ? null : /* @__PURE__ */ createElement(DiscoverInstalling, {
8994
+ t,
8995
+ name: d.installing,
8996
+ cancelling: d.cancelling,
8997
+ onCancel: d.cancelInstall
8451
8998
  }), d.notice === null ? null : /* @__PURE__ */ createElement("p", {
8452
8999
  className: MarketPage_module_default.discoverNotice,
8453
9000
  role: "note"
@@ -8464,7 +9011,8 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
8464
9011
  entry,
8465
9012
  version
8466
9013
  }),
8467
- onShowInstalled
9014
+ onShowInstalled,
9015
+ installDisabled: d.installDisabled
8468
9016
  }) : readFailed !== null || uninitialized !== null || retrying ? null : d.shown.length === 0 ? /* @__PURE__ */ createElement(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ createElement(DiscoverRows, {
8469
9017
  t,
8470
9018
  locale: d.locale,
@@ -8474,7 +9022,8 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
8474
9022
  entry,
8475
9023
  version
8476
9024
  }),
8477
- onShowInstalled
9025
+ onShowInstalled,
9026
+ installDisabled: d.installDisabled
8478
9027
  }), d.detailEntry !== null || d.total <= d.shown.length ? null : /* @__PURE__ */ createElement(Button, {
8479
9028
  type: "button",
8480
9029
  variant: "outline",
@@ -8487,7 +9036,7 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
8487
9036
  }
8488
9037
  //#endregion
8489
9038
  //#region src/app/layouts/market/market-header.tsx
8490
- function MarketHeader({ t, idPrefix, tab, busy, checking, onTab, onReload, onAdd }) {
9039
+ function MarketHeader({ t, idPrefix, tab, busy, onTab, onAdd }) {
8491
9040
  const tabItems = useMemo(() => [{
8492
9041
  value: "installed",
8493
9042
  label: t("panels.market.tabInstalled"),
@@ -8499,23 +9048,14 @@ function MarketHeader({ t, idPrefix, tab, busy, checking, onTab, onReload, onAdd
8499
9048
  id: `${idPrefix}-tab-discover`,
8500
9049
  panelId: `${idPrefix}-panel-discover`
8501
9050
  }], [idPrefix, t]);
8502
- 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(Tip, { label: t("panels.market.recheck") }, /* @__PURE__ */ createElement("button", {
8503
- type: "button",
8504
- className: `${MarketPage_module_default.marketIconButton}${checking ? ` ${MarketPage_module_default.marketIconButtonSpinning}` : ""}`,
8505
- "aria-label": t("panels.market.checkUpdates"),
8506
- disabled: busy,
8507
- onClick: onReload
8508
- }, /* @__PURE__ */ createElement("span", {
8509
- className: MarketPage_module_default.marketIconWrap,
8510
- "aria-hidden": "true"
8511
- }, /* @__PURE__ */ createElement(IconRefreshOutlineRegular, null)))), /* @__PURE__ */ createElement(Button, {
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, {
8512
9052
  variant: "primary",
8513
9053
  size: "sm",
8514
9054
  className: MarketPage_module_default.marketAddButton,
8515
9055
  icon: /* @__PURE__ */ createElement(IconPlusOutlineRegular, { size: 13 }),
8516
9056
  disabled: busy,
8517
9057
  onClick: onAdd
8518
- }, t("panels.market.add.open"))))), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketTabs }, /* @__PURE__ */ createElement(SegmentedTabs, {
9058
+ }, t("panels.market.add.open")))), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketTabs }, /* @__PURE__ */ createElement(SegmentedTabs, {
8519
9059
  className: MarketPage_module_default.marketTabList,
8520
9060
  items: tabItems,
8521
9061
  value: tab,
@@ -8889,6 +9429,30 @@ function useBoardWorkspace(workspaces, sessions) {
8889
9429
  };
8890
9430
  }
8891
9431
  //#endregion
9432
+ //#region src/app/layouts/market/use-settling-modules.ts
9433
+ var NO_UNITS = /* @__PURE__ */ new Set();
9434
+ function unitsOf(key) {
9435
+ return key === "" ? [] : key.split("|");
9436
+ }
9437
+ function useSettlingModules(installedKey, rosterKey, activeKey) {
9438
+ const seenRef = useRef(null);
9439
+ const [settling, setSettling] = useState(NO_UNITS);
9440
+ useEffect(() => {
9441
+ const units = unitsOf(installedKey);
9442
+ const held = holdBack(units, new Set(unitsOf(rosterKey)), new Set(unitsOf(activeKey)), seenRef.current);
9443
+ seenRef.current = new Set(units);
9444
+ setSettling(held.length === 0 ? NO_UNITS : new Set(held));
9445
+ if (held.length === 0) return;
9446
+ const timer = setTimeout(() => setSettling(NO_UNITS), MODULE_SETTLE_MS);
9447
+ return () => clearTimeout(timer);
9448
+ }, [
9449
+ installedKey,
9450
+ rosterKey,
9451
+ activeKey
9452
+ ]);
9453
+ return settling;
9454
+ }
9455
+ //#endregion
8892
9456
  //#region src/shared/api/installed-plugins.ts
8893
9457
  var INSTALLED_PLUGINS_ROUTE = "panels/plugins";
8894
9458
  //#endregion
@@ -8914,6 +9478,8 @@ var state = {
8914
9478
  workbench: null,
8915
9479
  selfUpdate: null,
8916
9480
  read: false,
9481
+ checking: false,
9482
+ failed: false,
8917
9483
  checkedAt: null
8918
9484
  };
8919
9485
  var listeners$2 = /* @__PURE__ */ new Set();
@@ -8933,6 +9499,18 @@ function subscribeModuleVersions(listener) {
8933
9499
  listeners$2.delete(listener);
8934
9500
  };
8935
9501
  }
9502
+ function withMarketUpdates(modules, rows) {
9503
+ if (rows.length === 0) return modules;
9504
+ const byPkg = new Map(rows.map((row) => [row.pkg, row]));
9505
+ return modules.map((module) => {
9506
+ const row = byPkg.get(module.pkg);
9507
+ return row === void 0 ? module : {
9508
+ ...module,
9509
+ latest: row.version,
9510
+ market: row
9511
+ };
9512
+ });
9513
+ }
8936
9514
  function publish$1(next) {
8937
9515
  state = next;
8938
9516
  for (const listener of [...listeners$2]) listener();
@@ -8942,18 +9520,30 @@ function runModuleVersionsRead(force = false, fresh = false) {
8942
9520
  if (!fresh && inFlight !== null && inFlight.force === force && inFlight.epoch === at) return inFlight.promise;
8943
9521
  const seq = readSeq += 1;
8944
9522
  if (force) newestForceSeq = seq;
8945
- const promise = Promise.all([readModuleVersions(force), readInstalledPlugins(force)]).catch(() => null).then((responses) => {
9523
+ if (!state.checking) publish$1({
9524
+ ...state,
9525
+ checking: true
9526
+ });
9527
+ const promise = Promise.all([
9528
+ readModuleVersions(force),
9529
+ readInstalledPlugins(force),
9530
+ readMarketInstalled()
9531
+ ]).catch(() => null).then((responses) => {
8946
9532
  if (at !== epoch) return;
8947
9533
  if (!force && seq < newestForceSeq) return;
8948
9534
  const versions = responses?.[0];
8949
9535
  const plugins = responses?.[1];
9536
+ const market = responses?.[2];
9537
+ const read = versions?.ok === true;
8950
9538
  publish$1({
8951
- modules: versions?.ok === true ? versions.modules : state.modules,
9539
+ modules: read ? withMarketUpdates(versions.modules, market?.ok === true ? market.modules : []) : state.modules,
8952
9540
  plugins: plugins?.ok === true ? plugins.plugins : state.plugins,
8953
- workbench: versions?.ok === true ? versions.workbench ?? null : state.workbench,
8954
- selfUpdate: versions?.ok === true ? versions.selfUpdate ?? null : state.selfUpdate,
9541
+ workbench: read ? versions.workbench ?? null : state.workbench,
9542
+ selfUpdate: read ? versions.selfUpdate ?? null : state.selfUpdate,
8955
9543
  read: true,
8956
- checkedAt: Date.now()
9544
+ checking: false,
9545
+ failed: !read,
9546
+ checkedAt: read ? Date.now() : state.checkedAt
8957
9547
  });
8958
9548
  }).finally(() => {
8959
9549
  if (inFlight?.promise === promise) inFlight = null;
@@ -8988,6 +9578,8 @@ function useModuleVersions() {
8988
9578
  workbench: value.workbench,
8989
9579
  selfUpdate: value.selfUpdate,
8990
9580
  read: value.read,
9581
+ checking: value.checking,
9582
+ failed: value.failed,
8991
9583
  checkedAt: value.checkedAt,
8992
9584
  reload
8993
9585
  };
@@ -9534,7 +10126,6 @@ var MOCK_FRESHNESS = {
9534
10126
  checking: false,
9535
10127
  checkedAt: null
9536
10128
  };
9537
- var NO_UNITS = /* @__PURE__ */ new Set();
9538
10129
  function useLiveManifests(units) {
9539
10130
  const subscribe = useCallback((listener) => units.subscribe(listener), [units]);
9540
10131
  const revision = useCallback(() => units.version(), [units]);
@@ -9576,7 +10167,7 @@ function MarketPanel({ t, units, titleOf }) {
9576
10167
  const manifests = useLiveManifests(units);
9577
10168
  const installable = useInstallableUnits(units);
9578
10169
  const { capabilities, checkedAt, checking, forceProbe, reload: reloadCapability } = useCapabilityMap(0);
9579
- const { modules, plugins, workbench, selfUpdate, read: installedRead, reload: reloadVersions } = useModuleVersions();
10170
+ const { modules, plugins, workbench, selfUpdate, checking: versionsChecking, failed: versionsFailed, checkedAt: versionsCheckedAt, read: installedRead, reload: reloadVersions } = useModuleVersions();
9580
10171
  const machineBoard = useEnabledUnits(0, null);
9581
10172
  const [adding, setAdding] = useState(false);
9582
10173
  const [acting, setActing] = useState(false);
@@ -9619,27 +10210,10 @@ function MarketPanel({ t, units, titleOf }) {
9619
10210
  forceProbe,
9620
10211
  reloadVersions
9621
10212
  ]);
9622
- const installedKey = (installed ?? []).map((module) => module.unit).join("|");
9623
- const rosterKey = manifests.map((manifest) => manifest.id).join("|");
9624
- const activeKey = Object.keys(capabilities ?? {}).join("|");
9625
- const seenRef = useRef(null);
9626
- const [settling, setSettling] = useState(NO_UNITS);
9627
- useEffect(() => {
9628
- const units = installedKey === "" ? [] : installedKey.split("|");
9629
- const held = holdBack(units, new Set(rosterKey === "" ? [] : rosterKey.split("|")), new Set(activeKey === "" ? [] : activeKey.split("|")), seenRef.current);
9630
- seenRef.current = new Set(units);
9631
- setSettling(held.length === 0 ? NO_UNITS : new Set(held));
9632
- if (held.length === 0) return;
9633
- const timer = setTimeout(() => setSettling(NO_UNITS), MODULE_SETTLE_MS);
9634
- return () => clearTimeout(timer);
9635
- }, [
9636
- installedKey,
9637
- rosterKey,
9638
- activeKey
9639
- ]);
10213
+ const settling = useSettlingModules((installed ?? []).map((module) => module.unit).join("|"), manifests.map((manifest) => manifest.id).join("|"), Object.keys(capabilities ?? {}).join("|"));
9640
10214
  const freshness = {
9641
10215
  loaded: capabilities !== null,
9642
- checking,
10216
+ checking: checking || versionsChecking,
9643
10217
  checkedAt
9644
10218
  };
9645
10219
  const pendingFreshness = {
@@ -9652,15 +10226,13 @@ function MarketPanel({ t, units, titleOf }) {
9652
10226
  const mockNonce = devMarket.pick.nonce;
9653
10227
  const shownFreshness = mock === void 0 ? freshness : mock.loaded === false ? pendingFreshness : MOCK_FRESHNESS;
9654
10228
  const shownRead = mock === void 0 ? installedRead : mock.installedRead ?? true;
9655
- const busy = !marketSettled(shownFreshness, shownRead) || shownFreshness.checking || acting;
10229
+ const busy = !marketSettled(shownFreshness, shownRead) || acting;
9656
10230
  return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketPage }, /* @__PURE__ */ createElement(MarketHeader, {
9657
10231
  t,
9658
10232
  idPrefix: MARKET_PANEL_ID,
9659
10233
  tab,
9660
10234
  busy,
9661
- checking: shownFreshness.checking,
9662
10235
  onTab: setTab,
9663
- onReload: () => reload({ force: true }),
9664
10236
  onAdd: openAddModule
9665
10237
  }), devMarket.strip, /* @__PURE__ */ createElement("div", {
9666
10238
  id: `${MARKET_PANEL_ID}-panel-installed`,
@@ -9678,6 +10250,8 @@ function MarketPanel({ t, units, titleOf }) {
9678
10250
  onChanged: reload,
9679
10251
  onPending: setActing,
9680
10252
  updates,
10253
+ updatesCheckedAt: versionsCheckedAt,
10254
+ updatesFailed: versionsFailed,
9681
10255
  installed,
9682
10256
  installedRead: shownRead,
9683
10257
  workbench,
@@ -15059,7 +15633,7 @@ function messagesOf(units) {
15059
15633
  ...face.messages === void 0 ? {} : { messages: face.messages }
15060
15634
  }));
15061
15635
  }
15062
- 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_14s5s_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_14s5s_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_14s5s_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_14s5s_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_14s5s_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_14s5s_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_14s5s_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_14s5s_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_14s5s_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_14s5s_39 ._marketVersion_14s5s_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_14s5s_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_14s5s_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_14s5s_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_14s5s_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_14s5s_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_14s5s_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_14s5s_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_14s5s_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_14s5s_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_14s5s_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_14s5s_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_14s5s_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_14s5s_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_14s5s_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionQuiet_14s5s_175 ._marketSectionTitle_14s5s_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_14s5s_175 ._marketName_14s5s_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_14s5s_175 ._marketIcon_14s5s_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_14s5s_188 {\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_14s5s_198 {\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_14s5s_205 {\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_14s5s_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_14s5s_217 {\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_14s5s_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_14s5s_235 {\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_14s5s_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_14s5s_248 {\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_14s5s_254 {\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_14s5s_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_14s5s_263[hidden] {\n display: none;\n}\n\n._marketTabs_14s5s_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_14s5s_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_14s5s_283 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n color: var(--dsw-alias-label-caption);\n cursor: pointer;\n}\n\n._marketIconButton_14s5s_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_14s5s_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_14s5s_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_14s5s_312 svg {\n animation: _wb-spin_14s5s_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_14s5s_316 {\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_14s5s_212 {\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_14s5s_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_14s5s_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_14s5s_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_14s5s_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_14s5s_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_14s5s_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_14s5s_372 {\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_14s5s_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_14s5s_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_14s5s_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_14s5s_395 {\n flex: none;\n}\n\n._discoverSearch_14s5s_399 {\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_14s5s_407 {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._discoverSearchFieldFilled_14s5s_412 input {\n padding-inline-end: var(--wb-len-20);\n}\n\n._discoverSearchField_14s5s_407 input::-webkit-search-cancel-button {\n appearance: none;\n -webkit-appearance: none;\n}\n\n._discoverSearch_14s5s_399 ._discoverSearchClear_14s5s_421 {\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_14s5s_421:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_14s5s_361 {\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_14s5s_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_14s5s_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_14s5s_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_14s5s_399 {\n grid-area: search;\n }\n\n ._discoverSort_14s5s_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_14s5s_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_14s5s_472 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_14s5s_479 {\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_14s5s_488 {\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_14s5s_488:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_14s5s_502 {\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_14s5s_514 {\n object-fit: contain;\n}\n\n._discoverMain_14s5s_518 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_14s5s_526 {\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_14s5s_534 {\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_14s5s_534::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_14s5s_534:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_14s5s_534: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_14s5s_565 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_14s5s_571 {\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_14s5s_580 {\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_14s5s_587 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_14s5s_593 {\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._discoverBlocked_14s5s_602 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_14s5s_607 {\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_14s5s_616 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_14s5s_607 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_14s5s_626 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_14s5s_632 {\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_14s5s_632:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_14s5s_632: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_14s5s_655 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_14s5s_659 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_14s5s_665 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_14s5s_671 {\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_14s5s_678 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_14s5s_685 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_14s5s_690 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_14s5s_695 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_14s5s_700 {\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_14s5s_706 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_14s5s_713 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_14s5s_719 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_14s5s_724 {\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_14s5s_734 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_14s5s_740 {\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_14s5s_748 {\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_14s5s_757 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_14s5s_764 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_14s5s_764:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_14s5s_774 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_14s5s_782 {\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_14s5s_790 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_14s5s_795 {\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_14s5s_804 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_14s5s_810 {\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_14s5s_819 {\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_14s5s_819 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_14s5s_837 {\n align-self: center;\n}\n\n._discoverDialog_14s5s_841 {\n width: min(var(--wb-len-560), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_14s5s_845 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_14s5s_851 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_14s5s_859 {\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_14s5s_868 {\n margin: 0;\n padding: var(--wb-len-2) 0 var(--wb-len-10);\n list-style: none;\n}\n\n._discoverSourcePick_14s5s_874 {\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_14s5s_883 {\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_14s5s_891 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._discoverSourceHead_14s5s_899 {\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_14s5s_907 {\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_14s5s_917 {\n flex: none;\n}\n\n._discoverSourceLoading_14s5s_921 {\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_14s5s_931 {\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_14s5s_931 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_14s5s_945 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_14s5s_951 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_14s5s_957 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_14s5s_962 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_14s5s_968 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_14s5s_973 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_14s5s_979 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_14s5s_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_14s5s_502._discoverSkeletonFill_14s5s_979 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_14s5s_988 {\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_14s5s_995 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_14s5s_999 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_14s5s_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_14s5s_979 {\n animation: none;\n }\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*/";
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*/";
15063
15637
  function workbenchCss() {
15064
15638
  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}`;
15065
15639
  }