@dsh-workbench/core 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +3 -0
  2. package/client.js +675 -319
  3. package/dist/client/client.body.js +675 -319
  4. package/dist/client/index.js +675 -319
  5. package/dist/host/index.js +445 -37
  6. package/dist/types/app/layouts/market/discover-sources-dialog.d.ts +4 -0
  7. package/dist/types/app/layouts/market/discover-states.d.ts +3 -0
  8. package/dist/types/app/layouts/market/use-add-module.d.ts +0 -1
  9. package/dist/types/app/layouts/market/use-discover.d.ts +1 -0
  10. package/dist/types/app/layouts/rightbar/MarketView.d.ts +3 -1
  11. package/dist/types/app/layouts/rightbar/market-names.d.ts +8 -0
  12. package/dist/types/app/layouts/rightbar/market-row-types.d.ts +11 -3
  13. package/dist/types/app/layouts/rightbar/market-rows.d.ts +6 -4
  14. package/dist/types/app/layouts/rightbar/market-view-text.d.ts +4 -3
  15. package/dist/types/app/units/unit-titles.d.ts +3 -0
  16. package/dist/types/kernel/contract/bundle-install.d.ts +1 -1
  17. package/dist/types/kernel/contract/market-index.d.ts +1 -1
  18. package/dist/types/modules/panels/model/diy-tools.d.ts +1 -1
  19. package/dist/types/modules/panels/model/market-dispatch.d.ts +8 -0
  20. package/dist/types/modules/panels/model/market-follow-up.d.ts +16 -0
  21. package/dist/types/modules/panels/model/market-sources-act.d.ts +2 -0
  22. package/dist/types/modules/panels/model/market-types.d.ts +5 -0
  23. package/dist/types/modules/panels/model/market.d.ts +2 -0
  24. package/dist/types/modules/panels/model/publish-preview-routes.d.ts +1 -1
  25. package/dist/types/shared/api/host/diy-publish-preview.d.ts +11 -0
  26. package/dist/types/shared/api/host/follow-up-dismiss.d.ts +2 -0
  27. package/dist/types/shared/api/host/migrate-workbench.d.ts +20 -0
  28. package/dist/types/shared/api/host/migration-follow-up.d.ts +12 -0
  29. package/dist/types/shared/hooks/market-queries.d.ts +3 -2
  30. package/dist/types/shared/hooks/resource-view.d.ts +14 -0
  31. package/dist/types/shared/hooks/use-api-resource.d.ts +3 -7
  32. package/package.json +3 -3
  33. package/skills/workbench-module-diy/FAMILY.md +1 -1
  34. package/skills/workbench-module-diy/REVIEW.md +2 -2
  35. package/skills/workbench-module-diy/SKILL.md +1 -0
  36. package/skills/workbench-module-diy/TOOLS.md +1 -1
  37. package/skills/workbench-module-diy/WIRING.md +3 -1
  38. package/skills/workbench-module-diy/WRITES.md +1 -1
package/client.js CHANGED
@@ -2730,6 +2730,32 @@ window.__ModuleLoader__.load({
2730
2730
  //#region ../shared/dist/contract/protocol/unit-manifests.js
2731
2731
  var UNIT_MANIFESTS_ROUTE = "unit-manifests";
2732
2732
  //#endregion
2733
+ //#region ../shared/dist/contract/unit.js
2734
+ /**
2735
+ * 外壳替模块名合成的词表键:模块自己不必写名字键,名字直接从清单里的 title 注册进来。
2736
+ * @param unit 单元 id。
2737
+ * @returns 该单元名字在词表里的键。
2738
+ */
2739
+ function unitTitleKey(unit) {
2740
+ return `dsh-workbench.unit.${unit}.title`;
2741
+ }
2742
+ /**
2743
+ * 模块声明的全部环境需要(没写就是空表)。
2744
+ * @param manifest 模块清单。
2745
+ * @returns need 列表。
2746
+ */
2747
+ function needsOf(manifest) {
2748
+ return manifest.needs ?? [];
2749
+ }
2750
+ /**
2751
+ * 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
2752
+ * @param manifest 模块清单。
2753
+ * @returns extension / lib 的 need 列表。
2754
+ */
2755
+ function supplyNeedsOf(manifest) {
2756
+ return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
2757
+ }
2758
+ //#endregion
2733
2759
  //#region ../shared/dist/contract/needs.js
2734
2760
  function text(value) {
2735
2761
  return typeof value === "string" ? value.trim() : "";
@@ -2792,24 +2818,6 @@ window.__ModuleLoader__.load({
2792
2818
  })
2793
2819
  });
2794
2820
  //#endregion
2795
- //#region ../shared/dist/contract/unit.js
2796
- /**
2797
- * 模块声明的全部环境需要(没写就是空表)。
2798
- * @param manifest 模块清单。
2799
- * @returns need 列表。
2800
- */
2801
- function needsOf(manifest) {
2802
- return manifest.needs ?? [];
2803
- }
2804
- /**
2805
- * 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
2806
- * @param manifest 模块清单。
2807
- * @returns extension / lib 的 need 列表。
2808
- */
2809
- function supplyNeedsOf(manifest) {
2810
- return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
2811
- }
2812
- //#endregion
2813
2821
  //#region ../shared/dist/i18n/settings.js
2814
2822
  /** 「工作台设置」这一组的词条:配置同步 / 新建工作台。 */
2815
2823
  var zhSettings = {
@@ -3078,15 +3086,14 @@ window.__ModuleLoader__.load({
3078
3086
  "panels.market.update": "Update",
3079
3087
  "panels.market.swapSlow": "Not swapped yet — maybe a slow or failed download. Press Update again; if it stays like this, restart dsh.",
3080
3088
  "panels.market.removeSlow": "Not removed yet — maybe a slow network or an uninstall that did not finish. Check again in a moment; if it stays like this, restart dsh.",
3081
- "panels.market.updateNoChange": "Not updated: you were on {from}, and after the run the disk still has that version; the newest on the registry is {latest}.",
3089
+ "panels.market.updateNoChange": "Update failed: still {from}. The newest on the registry is {latest} — press Update again.",
3082
3090
  "panels.market.updateUnknownVersion": "(unknown)",
3083
- "panels.market.updateGone": "Not updated: after the run the module cannot be read from disk.",
3084
- "panels.market.updateRestored": "Not updated: the new version was missing from disk, so {version} was put back.",
3091
+ "panels.market.updateGone": "Update failed: the module is gone after the update.",
3092
+ "panels.market.updateRestored": "Update failed: the new version could not be found after the update, so {version} was put back.",
3085
3093
  "panels.market.updateBehind": "Installed {installed}, but the newest on the registry is {latest} — not the latest; you can update once more.",
3086
- "panels.market.selfUpdateFailed": "Self-update failed: {reason}",
3094
+ "panels.market.selfUpdateFailed": "Workbench update failed: {reason}",
3087
3095
  "panels.market.selfUpdateUnknown": "the outside process left no reason (see ~/.dsh/workbench/self-update.log)",
3088
- "panels.market.selfUpdateRolledBack": "Not swapped; rolled back to {version}.",
3089
- "panels.market.selfUpdateNeedsMigrate": "Workbench updated. Old sessions and projects are not merged automatically: quit every dsh, then run dsh-workbench migrate (--force to merge again).",
3096
+ "panels.market.selfUpdateRolledBack": "Workbench update failed; rolled back to {version}.",
3090
3097
  "panels.market.uninstall": "Uninstall",
3091
3098
  "panels.market.uninstallLabel": "Uninstall {name}",
3092
3099
  "panels.market.installing": "Installing…",
@@ -3108,9 +3115,27 @@ window.__ModuleLoader__.load({
3108
3115
  "panels.market.empty": "No modules available",
3109
3116
  "panels.market.sectionPlugins": "Installed opencli plugins",
3110
3117
  "panels.market.moduleOutdated": "update available",
3118
+ "panels.market.updateNeedsWorkbench": "this version needs a newer workbench first",
3119
+ "panels.market.updateIncompatible": "the new version does not match this workbench, so it cannot be installed now",
3111
3120
  "panels.market.moduleRefused": "This module does not match this workbench, so it cannot be used for now.",
3112
3121
  "panels.market.moduleRestartHint": "restart dsh once to bring it up",
3113
3122
  "panels.market.pendingRestart": "restart required",
3123
+ "panels.market.pendingFollowUp": "old data to migrate",
3124
+ "panels.market.migrationHint": "old sessions and projects are not merged yet",
3125
+ "panels.market.migrateAction": "Migrate old data",
3126
+ "panels.market.migrating": "Migrating…",
3127
+ "panels.market.migrateConfirmTitle": "Migrate old data?",
3128
+ "panels.market.migrateConfirmDetail": "Quit dsh web / Desktop first. Only missing data is added; nothing is overwritten.",
3129
+ "panels.market.migrateConfirmAck": "I've quit dsh web / Desktop",
3130
+ "panels.market.migrateConfirmYes": "Start migration",
3131
+ "panels.market.migrateDone": "Migration complete: {added} projects added; restart the workbench and dsh web to see them.",
3132
+ "panels.market.dismissFollowUp": "Don't remind me",
3133
+ "panels.market.dismissing": "Dismissing…",
3134
+ "panels.market.dismissFollowUpTitle": "Stop reminding about this?",
3135
+ "panels.market.dismissFollowUpDetail": "The reminder will be hidden from the market, but old data will not be migrated or deleted. Old sessions and projects stay in the old directory and won't appear in the new version; you can still run dsh-workbench migrate later.",
3136
+ "panels.market.dismissFollowUpAck": "I understand the old data won't appear automatically",
3137
+ "panels.market.dismissFollowUpYes": "Don't remind me",
3138
+ "panels.market.dismissed": "No longer reminded; old data stays in the old directory and can still be migrated with dsh-workbench migrate.",
3114
3139
  "panels.market.workbenchName": "Workbench",
3115
3140
  "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.",
3116
3141
  "panels.market.restartNeeded": "The new version is installed — restart once to pick it up.",
@@ -3194,7 +3219,7 @@ window.__ModuleLoader__.load({
3194
3219
  "panels.market.add.exampleTitle": "Examples",
3195
3220
  "panels.market.add.exampleFill": "Fill in an example",
3196
3221
  "panels.market.add.registryLabel": "Source",
3197
- "panels.market.add.registryProfile": "This profile's registry",
3222
+ "panels.market.add.registryProfile": "This workbench's registry",
3198
3223
  "panels.market.add.registryPnpm": "pnpm's own registry",
3199
3224
  "panels.market.add.check": "Check",
3200
3225
  "panels.market.add.checking": "Checking…",
@@ -3215,12 +3240,16 @@ window.__ModuleLoader__.load({
3215
3240
  "panels.market.tabs": "The two faces of the module market",
3216
3241
  "panels.tab.discover": "Discover",
3217
3242
  "panels.discover.loading": "Reading the index",
3243
+ "panels.discover.slowHint": "Slow to load: finish any authorization prompt, or switch sources.",
3218
3244
  "panels.discover.lead": "Browse modules from an index source; install and go.",
3219
3245
  "panels.discover.addSource": "Add",
3220
3246
  "panels.discover.addingSource": "Adding…",
3221
3247
  "panels.discover.addFirstSource": "Add index source",
3222
3248
  "panels.discover.removeSource": "Remove",
3223
3249
  "panels.discover.removeSourceNamed": "Remove {url}",
3250
+ "panels.discover.useSource": "Use",
3251
+ "panels.discover.useSourceNamed": "Use {label}",
3252
+ "panels.discover.sourceCurrent": "In use",
3224
3253
  "panels.discover.refresh": "Refresh",
3225
3254
  "panels.discover.search": "Search modules",
3226
3255
  "panels.discover.all": "All",
@@ -3232,8 +3261,8 @@ window.__ModuleLoader__.load({
3232
3261
  "panels.discover.sourcePlaceholder": "https://example.com/index.json or git@git.example.com:wb/market.git",
3233
3262
  "panels.discover.sourceRef": "Branch",
3234
3263
  "panels.discover.sourcePath": "Index file",
3235
- "panels.discover.sourceLocal": "Local clone (optional)",
3236
- "panels.discover.sourceLocalHint": "Leave empty to clone into ~/.dsh/workbench/market-index/.",
3264
+ "panels.discover.sourceLocal": "Local copy folder (optional)",
3265
+ "panels.discover.sourceLocalHint": "Leave empty to keep it in ~/.dsh/workbench/market-index/.",
3237
3266
  "panels.discover.save": "Save and refresh",
3238
3267
  "panels.discover.cancel": "Cancel",
3239
3268
  "panels.discover.retry": "Retry",
@@ -3246,9 +3275,9 @@ window.__ModuleLoader__.load({
3246
3275
  "panels.discover.missingIndex": "This repository has no {path} yet.",
3247
3276
  "panels.discover.initTitle": "Initialize this repository as a module market index?",
3248
3277
  "panels.discover.initCta": "Initialize market index",
3249
- "panels.discover.initWhat": "It will write market.json and README.md on {branch}, commit once, and push. Modules you publish from this workbench will commit their artifacts under packages/<unit>/. The repository stays owned by its owner.",
3278
+ "panels.discover.initWhat": "It will write market.json and README.md on {branch}, commit once, and push. Modules you publish from this workbench will commit their build files under packages/<unit>/. The repository stays owned by its owner.",
3250
3279
  "panels.discover.initBranch": "Branch",
3251
- "panels.discover.initBranchHint": "The index and artifacts go to this branch; an empty repository gets it created.",
3280
+ "panels.discover.initBranchHint": "The index and build files go to this branch; an empty repository gets it created.",
3252
3281
  "panels.discover.initBranchBad": "Use only letters, digits, dots, underscores, slashes, or dashes in a branch name.",
3253
3282
  "panels.discover.initOk": "Initialize",
3254
3283
  "panels.discover.initBusy": "Initializing…",
@@ -3352,11 +3381,11 @@ window.__ModuleLoader__.load({
3352
3381
  "panels.market.add.doneApplied": "Installed and live.",
3353
3382
  "panels.market.add.doneRestart": "Installed — restart once to pick it up.",
3354
3383
  "panels.market.add.restartWhy": "Why this needs a restart: {reason}",
3355
- "panels.market.add.restartWhy.no-hmr": "this configuration only applies changes at startup (hot reload is off)",
3384
+ "panels.market.add.restartWhy.no-hmr": "this configuration is only read at startup, so a restart is needed",
3356
3385
  "panels.market.add.restartWhy.package-moved": "an installed package now resolves to another directory, or the change replaced something dsh itself provides",
3357
3386
  "panels.market.add.restartWhy.host-module": "the change reaches modules dsh itself loaded",
3358
- "panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin running outside the plugin list",
3359
- "panels.market.add.restartWhy.module-comparison": "dsh could not compare loaded plugins with their files",
3387
+ "panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin that is running but not on the install list",
3388
+ "panels.market.add.restartWhy.module-comparison": "dsh could not confirm that the running plugin is the copy installed on this machine",
3360
3389
  "panels.market.add.cancelled": "Cancelled.",
3361
3390
  "panels.market.add.failed": "Didn't work: {reason}",
3362
3391
  "panels.market.add.removed": "It has been removed.",
@@ -3366,10 +3395,10 @@ window.__ModuleLoader__.load({
3366
3395
  "panels.market.add.removedRestart": "Removed — restart once to finish.",
3367
3396
  "panels.market.add.remove": "Remove it",
3368
3397
  "panels.market.add.problem.invalidSpec": "That is not a spec we accept: it cannot be empty or start with a dash.",
3369
- "panels.market.add.problem.alreadyInstalled": "That package is already in the profile (add @version to switch versions).",
3398
+ "panels.market.add.problem.alreadyInstalled": "That package is already in this workbench (add @version to switch versions).",
3370
3399
  "panels.market.add.problem.notFound": "No such package on that source. Try another name or version.",
3371
3400
  "panels.market.add.problem.notAPackage": "There is no package at that location. Pick a folder that contains a package.json.",
3372
- "panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (it is missing the dsh wiring declaration).",
3401
+ "panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (dsh cannot find what to load inside it).",
3373
3402
  "panels.market.add.problem.network": "The source is unreachable. Check the network and retry.",
3374
3403
  "panels.market.add.problem.unknown": "The check did not pass (reason unknown). Open the install details for the raw output, or retry.",
3375
3404
  "panels.market.add.reason.invalidSpec": "the spec is not accepted",
@@ -3377,7 +3406,7 @@ window.__ModuleLoader__.load({
3377
3406
  "panels.market.add.reason.notBundle": "it is not a dsh plugin package",
3378
3407
  "panels.market.add.reason.notRemovable": "it ships with the installation and cannot be removed",
3379
3408
  "panels.market.add.reason.bundleInUse": "something is still using it",
3380
- "panels.market.add.reason.stopProfile": "this configuration has no hot reload, so stop the process first",
3409
+ "panels.market.add.reason.stopProfile": "this configuration needs a restart, so stop the workbench first",
3381
3410
  "panels.market.add.reason.staleApproval": "the scripts to allow changed — start over",
3382
3411
  "panels.market.add.reason.operationError": "pnpm failed (see the install output)",
3383
3412
  "panels.market.add.reason.buildBlocked": "pnpm blocked install scripts",
@@ -3407,8 +3436,8 @@ window.__ModuleLoader__.load({
3407
3436
  "blocker.forbidden.titleGeneric": "No access",
3408
3437
  "blocker.forbidden.hint": "You are signed in, but this project/repo is not permitted for your account.",
3409
3438
  "blocker.forbidden.open": "Open permissions page",
3410
- "blocker.timeout.hint": "The headless browser may not have started; retrying usually helps.",
3411
- "blocker.exec.hint": "Make sure opencli is installed and on PATH (which opencli).",
3439
+ "blocker.timeout.hint": "The background browser may not have started; retrying usually helps.",
3440
+ "blocker.exec.hint": "Make sure opencli is installed and runs from your terminal (which opencli).",
3412
3441
  "blocker.unknown.title": "Something went wrong",
3413
3442
  "panels.reading": "Reading the panel setup…",
3414
3443
  "panels.cardBroken": "This module will not render: {unit} ({reason})",
@@ -3422,7 +3451,7 @@ window.__ModuleLoader__.load({
3422
3451
  "env.elapsed": "Waiting {seconds}s",
3423
3452
  "env.stepFailed.install": "install failed",
3424
3453
  "env.stepFailed.path": "installed but not found",
3425
- "env.stepFailed.shell": "no shell channel",
3454
+ "env.stepFailed.shell": "cannot reach the command line",
3426
3455
  "env.toolchain.ok": "Looks good",
3427
3456
  "env.toolchain.warn": "Almost ready",
3428
3457
  "env.opencli.ok": "Ready",
@@ -3439,10 +3468,10 @@ window.__ModuleLoader__.load({
3439
3468
  "env.fix.title": "How to fix it",
3440
3469
  "env.fix.why": "The workbench uses its own background tool (installed separately from the one in your terminal), and it is not set up on this machine yet.",
3441
3470
  "env.fix.whyPath": "The background tool is installed, but this environment cannot find it — usually a PATH or shell-session issue.",
3442
- "env.fix.whyShell": "The workbench has no shell channel, so it cannot fetch data — you cannot install this from here; someone needs to fix the background environment.",
3471
+ "env.fix.whyShell": "The workbench cannot reach the command line on this machine, so it cannot fetch data — you cannot install this from here; someone needs to fix the background environment.",
3443
3472
  "env.fix.step": "Run this in a terminal, then hit Retry:",
3444
3473
  "env.fix.stepPath": "Open a new terminal window (or make sure npm’s global bin directory is on PATH), then hit Retry.",
3445
- "env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the shell channel is not wired up.",
3474
+ "env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the workbench still cannot reach the command line.",
3446
3475
  "env.fix.permission": "Permission denied: rerun with sudo, or point npm’s global directory at your home.",
3447
3476
  "env.fix.network": "Network unreachable: check your network or proxy, then retry.",
3448
3477
  "env.fix.details": "Details (for troubleshooting)",
@@ -3471,9 +3500,9 @@ window.__ModuleLoader__.load({
3471
3500
  "env.warm.done": "Ready ({n} sites)",
3472
3501
  "env.warm.short": "Could not sign in early this time — nothing breaks; the first read fills it in",
3473
3502
  "env.unit.failed": "This module cannot start",
3474
- "env.unit.failedHint": "It failed while assembling itself; other modules are unaffected.",
3475
- "env.unit.unchecked": "Cannot check: no shell channel",
3476
- "env.unit.uncheckedHint": "The module is not the problem — the shell channel is unavailable. Restart the workbench.",
3503
+ "env.unit.failedHint": "It failed while starting up; other modules are unaffected.",
3504
+ "env.unit.unchecked": "Cannot check: no command line",
3505
+ "env.unit.uncheckedHint": "The module is not the problem — the workbench cannot reach the command line. Restart the workbench.",
3477
3506
  "adapterSet.not-configured": "No adapter set configured; using the default.",
3478
3507
  "adapterSet.no-profile": "No profile found, so the adapter set cannot load; using the default.",
3479
3508
  "adapterSet.malformed": "An adapter set must be a package name (for example @acme/adapters-set); using the default.",
@@ -3516,7 +3545,7 @@ window.__ModuleLoader__.load({
3516
3545
  "sidebarEdition.official": "Official",
3517
3546
  "sidebarEdition.officialHint": "Matches dsh exactly and stays stable: search, view options, show more, archive, add workspace — no waiting for us to catch up. Pick it to keep things simple.",
3518
3547
  "sidebarEdition.custom": "Custom",
3519
- "sidebarEdition.customHint": "Built for multi-project work: one project per dropdown, recency-first sessions, edge fades, marquee, DIY new session. Easier when you juggle projects.",
3548
+ "sidebarEdition.customHint": "Built for multi-project work: one project per dropdown, recency-first sessions, long names scroll, edges fade, DIY new session. Easier when you juggle projects.",
3520
3549
  "sidebarEdition.saving": "Configuring…",
3521
3550
  "sidebarEdition.reloadRequired": "Saved. Reload the page to apply — no workbench restart needed.",
3522
3551
  "sidebarEdition.reload": "Reload page",
@@ -3545,25 +3574,25 @@ window.__ModuleLoader__.load({
3545
3574
  "record.act.halt": "Halt",
3546
3575
  "approval.record.site": "Site",
3547
3576
  "approval.record.what": "Records",
3548
- "approval.record.lands": "Lands in",
3577
+ "approval.record.lands": "Saves to",
3549
3578
  "approval.record.noUrl": "no site given (this call gets refused)",
3550
3579
  "approval.record.oneAction": "one action",
3551
3580
  "approval.record.noSwitch": "it will not switch you back (the leftbar footer shows the state)",
3552
- "approval.longTask.what": "Stops",
3553
- "approval.longTask.signal": "stopping only sends an interrupt signal — how the platform-side run finishes is up to the module",
3581
+ "approval.longTask.what": "Task to stop",
3582
+ "approval.longTask.signal": "stopping only sends an interrupt signal — wrapping up the run is up to the module",
3554
3583
  "approval.publish.module": "Module",
3555
3584
  "approval.publish.target": "Target",
3556
3585
  "approval.publish.version": "Version",
3557
3586
  "approval.publish.author": "Author",
3558
- "approval.publish.authorMissing": "unsigned (commits use the local git identity)",
3587
+ "approval.publish.authorMissing": "unsigned",
3559
3588
  "approval.publish.registry": "Registry",
3560
3589
  "approval.publish.repo": "Repository",
3561
3590
  "approval.publish.branch": "Branch",
3562
3591
  "approval.publish.defaultBranch": "default branch",
3563
- "approval.publish.artifacts": "Artifacts",
3592
+ "approval.publish.artifacts": "Build files",
3564
3593
  "approval.publish.index": "Index",
3565
3594
  "approval.publish.commits": "Commits",
3566
- "approval.publish.twoCommits": "artifacts + market.json in 2 commits, one push",
3595
+ "approval.publish.twoCommits": "build files + market.json in 2 commits, one push",
3567
3596
  "approval.publish.reading": "Reading…",
3568
3597
  "approval.publish.changelog": "Changelog for {version}",
3569
3598
  "approval.publish.changelogMissing": "No changelog entry for {version}; publishing will be blocked",
@@ -3711,15 +3740,14 @@ window.__ModuleLoader__.load({
3711
3740
  "panels.market.update": "更新",
3712
3741
  "panels.market.swapSlow": "还没换上:可能网慢或没装上。再点一次「更新」;一直这样就把 dsh 重启一遍。",
3713
3742
  "panels.market.removeSlow": "还没卸掉:可能网慢或卸载没走完。等一下再看;一直这样就把 dsh 重启一遍。",
3714
- "panels.market.updateNoChange": "没换成:点下去是 {from},跑完盘上还是这一版;源上最新是 {latest}。",
3743
+ "panels.market.updateNoChange": "更新失败:还是 {from};源上最新是 {latest},可以再点一次「更新」。",
3715
3744
  "panels.market.updateUnknownVersion": "(问不到)",
3716
- "panels.market.updateGone": "没换成:更新跑完盘上读不到这个模块。",
3717
- "panels.market.updateRestored": "没换成:盘上已经读不到新版本,已把 {version} 装回去。",
3745
+ "panels.market.updateGone": "更新失败:更新后找不到这个模块。",
3746
+ "panels.market.updateRestored": "更新失败:更新后找不到新版本,已把 {version} 装回去。",
3718
3747
  "panels.market.updateBehind": "装上了 {installed},但源上最新是 {latest} —— 没更到最新,可以再点一次。",
3719
- "panels.market.selfUpdateFailed": "自更新没成:{reason}",
3748
+ "panels.market.selfUpdateFailed": "工作台更新失败:{reason}",
3720
3749
  "panels.market.selfUpdateUnknown": "外部进程没留下原因(看 ~/.dsh/workbench/self-update.log)",
3721
- "panels.market.selfUpdateRolledBack": "没换成,已回滚到 {version}。",
3722
- "panels.market.selfUpdateNeedsMigrate": "工作台已更新。旧会话 / 项目不会自动并:先退出所有 dsh,再运行 dsh-workbench migrate(--force 可补并)。",
3750
+ "panels.market.selfUpdateRolledBack": "工作台更新失败,已回滚到 {version}。",
3723
3751
  "panels.market.uninstall": "卸载",
3724
3752
  "panels.market.uninstallLabel": "卸载 {name}",
3725
3753
  "panels.market.installing": "正在安装…",
@@ -3741,9 +3769,27 @@ window.__ModuleLoader__.load({
3741
3769
  "panels.market.empty": "暂无可用模块",
3742
3770
  "panels.market.sectionPlugins": "已安装 opencli 插件",
3743
3771
  "panels.market.moduleOutdated": "有新版",
3772
+ "panels.market.updateNeedsWorkbench": "新版本要先把工作台升级才能用",
3773
+ "panels.market.updateIncompatible": "新版本和当前的工作台不匹配,暂时不能更新",
3744
3774
  "panels.market.moduleRefused": "模块版本与工作台不匹配,暂时无法使用",
3745
3775
  "panels.market.moduleRestartHint": "重启后生效",
3746
3776
  "panels.market.pendingRestart": "重启后生效",
3777
+ "panels.market.pendingFollowUp": "旧数据待迁移",
3778
+ "panels.market.migrationHint": "旧会话和项目还没搬过来",
3779
+ "panels.market.migrateAction": "迁移旧数据",
3780
+ "panels.market.migrating": "正在迁移…",
3781
+ "panels.market.migrateConfirmTitle": "迁移旧数据?",
3782
+ "panels.market.migrateConfirmDetail": "先退出 dsh web / Desktop。迁移只补缺、不覆盖;旧目录保留。",
3783
+ "panels.market.migrateConfirmAck": "我已经退出 dsh web / Desktop",
3784
+ "panels.market.migrateConfirmYes": "开始迁移",
3785
+ "panels.market.migrateDone": "迁移完成:补了 {added} 个项目;重启工作台和 dsh web 后出现。",
3786
+ "panels.market.dismissFollowUp": "不再提醒",
3787
+ "panels.market.dismissing": "正在收起…",
3788
+ "panels.market.dismissFollowUpTitle": "不再提醒这件事?",
3789
+ "panels.market.dismissFollowUpDetail": "提示会从模块市场收起,但不会迁移或删除旧数据。旧会话和项目仍留在旧目录,新版本里看不到;以后需要时仍可运行 dsh-workbench migrate。",
3790
+ "panels.market.dismissFollowUpAck": "我知道旧数据不会自动出现",
3791
+ "panels.market.dismissFollowUpYes": "不再提醒",
3792
+ "panels.market.dismissed": "已不再提醒;旧数据仍在旧目录,需要时仍可运行 dsh-workbench migrate。",
3747
3793
  "panels.market.workbenchName": "工作台",
3748
3794
  "panels.market.pluginBroken": "这份插件装坏了:认不出它是什么。可以先卸载,再让 agent 按包名重装一次。",
3749
3795
  "panels.market.restartNeeded": "新版装好了,重启一次才生效。",
@@ -3827,7 +3873,7 @@ window.__ModuleLoader__.load({
3827
3873
  "panels.market.add.exampleTitle": "示例",
3828
3874
  "panels.market.add.exampleFill": "填入示例",
3829
3875
  "panels.market.add.registryLabel": "安装源",
3830
- "panels.market.add.registryProfile": "这个 profile 配的源",
3876
+ "panels.market.add.registryProfile": "这份工作台配的源",
3831
3877
  "panels.market.add.registryPnpm": "pnpm 自己配的源",
3832
3878
  "panels.market.add.check": "预检",
3833
3879
  "panels.market.add.checking": "正在预检…",
@@ -3848,12 +3894,16 @@ window.__ModuleLoader__.load({
3848
3894
  "panels.market.tabs": "模块市场的两个面",
3849
3895
  "panels.tab.discover": "发现",
3850
3896
  "panels.discover.loading": "正在读取索引",
3897
+ "panels.discover.slowHint": "读取较慢:如有授权提示,先完成它,或换一个索引源。",
3851
3898
  "panels.discover.lead": "从索引源浏览模块;装上就能用。",
3852
3899
  "panels.discover.addSource": "添加",
3853
3900
  "panels.discover.addingSource": "正在添加…",
3854
3901
  "panels.discover.addFirstSource": "添加索引源",
3855
3902
  "panels.discover.removeSource": "移除",
3856
3903
  "panels.discover.removeSourceNamed": "移除 {url}",
3904
+ "panels.discover.useSource": "使用",
3905
+ "panels.discover.useSourceNamed": "使用 {label}",
3906
+ "panels.discover.sourceCurrent": "当前使用",
3857
3907
  "panels.discover.refresh": "刷新",
3858
3908
  "panels.discover.search": "搜索模块",
3859
3909
  "panels.discover.all": "全部",
@@ -3865,8 +3915,8 @@ window.__ModuleLoader__.load({
3865
3915
  "panels.discover.sourcePlaceholder": "https://example.com/index.json 或 git@git.example.com:wb/market.git",
3866
3916
  "panels.discover.sourceRef": "分支",
3867
3917
  "panels.discover.sourcePath": "索引文件",
3868
- "panels.discover.sourceLocal": "本地 clone(可选)",
3869
- "panels.discover.sourceLocalHint": "不填就 clone 到 ~/.dsh/workbench/market-index/。",
3918
+ "panels.discover.sourceLocal": "本地副本目录(可选)",
3919
+ "panels.discover.sourceLocalHint": "不填就放到 ~/.dsh/workbench/market-index/。",
3870
3920
  "panels.discover.save": "保存并刷新",
3871
3921
  "panels.discover.cancel": "取消",
3872
3922
  "panels.discover.retry": "重试",
@@ -3879,9 +3929,9 @@ window.__ModuleLoader__.load({
3879
3929
  "panels.discover.missingIndex": "仓库里还没有索引文件 {path}",
3880
3930
  "panels.discover.initTitle": "把这个仓库初始化成模块市场索引?",
3881
3931
  "panels.discover.initCta": "初始化成市场索引",
3882
- "panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把产物提交到 packages/<unit>/。仓库的写权限归它的所有者。",
3932
+ "panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把打包好的文件提交到 packages/<unit>/。仓库的写权限归它的所有者。",
3883
3933
  "panels.discover.initBranch": "分支",
3884
- "panels.discover.initBranchHint": "索引与产物都发到这个分支;空仓库会新建它。",
3934
+ "panels.discover.initBranchHint": "索引和打包文件都发到这个分支;空仓库会新建它。",
3885
3935
  "panels.discover.initBranchBad": "分支名只能用字母、数字、点、下划线、斜杠或短横线",
3886
3936
  "panels.discover.initOk": "初始化",
3887
3937
  "panels.discover.initBusy": "正在初始化…",
@@ -3985,11 +4035,11 @@ window.__ModuleLoader__.load({
3985
4035
  "panels.market.add.doneApplied": "装好了,已经生效。",
3986
4036
  "panels.market.add.doneRestart": "装好了,重启一次才生效。",
3987
4037
  "panels.market.add.restartWhy": "为什么这一版要重启:{reason}",
3988
- "panels.market.add.restartWhy.no-hmr": "这个配置只在启动时应用改动(没开热更新)",
4038
+ "panels.market.add.restartWhy.no-hmr": "这份配置只在启动时读一次,改了得重启",
3989
4039
  "panels.market.add.restartWhy.package-moved": "某个已经装着的包换到了新的目录,或者这一下换掉了 dsh 自己提供的那份",
3990
4040
  "panels.market.add.restartWhy.host-module": "这一下动到了 dsh 自己加载的模块",
3991
- "panels.market.add.restartWhy.unmanaged-plugin": "这一下动到了插件清单之外正在跑的插件",
3992
- "panels.market.add.restartWhy.module-comparison": "dsh 没能把已加载的插件与盘上的文件对上",
4041
+ "panels.market.add.restartWhy.unmanaged-plugin": "这一下动到了没登记过、正在运行的插件",
4042
+ "panels.market.add.restartWhy.module-comparison": "dsh 没法确认正在跑的插件就是这台机器上装好的那一份",
3993
4043
  "panels.market.add.cancelled": "已取消。",
3994
4044
  "panels.market.add.failed": "没成功:{reason}",
3995
4045
  "panels.market.add.removed": "已经移除了。",
@@ -3999,10 +4049,10 @@ window.__ModuleLoader__.load({
3999
4049
  "panels.market.add.removedRestart": "卸掉了,重启一次才彻底生效。",
4000
4050
  "panels.market.add.remove": "移除它",
4001
4051
  "panels.market.add.problem.invalidSpec": "这个写法不认:不能是空的,也不能以横杠开头。",
4002
- "panels.market.add.problem.alreadyInstalled": "这个包已经在 profile 里了(要换版本请带上 @版本)。",
4052
+ "panels.market.add.problem.alreadyInstalled": "这个包已经在这份工作台里了(要换版本请带上 @版本)。",
4003
4053
  "panels.market.add.problem.notFound": "源上没有这个包。换个包名或版本再试。",
4004
4054
  "panels.market.add.problem.notAPackage": "这个位置没有包。选一个包含 package.json 的目录。",
4005
- "panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh 插件包(缺 dsh 的接线声明)。",
4055
+ "panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh 插件包(dsh 在里面找不到该加载什么)。",
4006
4056
  "panels.market.add.problem.network": "源连不上。检查网络后重试。",
4007
4057
  "panels.market.add.problem.unknown": "预检没通过(原因未知)。展开安装详情看原始输出,或重试。",
4008
4058
  "panels.market.add.reason.invalidSpec": "写法不认",
@@ -4010,7 +4060,7 @@ window.__ModuleLoader__.load({
4010
4060
  "panels.market.add.reason.notBundle": "它不是一个 dsh 插件包",
4011
4061
  "panels.market.add.reason.notRemovable": "它是安装自带的组合包,不能卸",
4012
4062
  "panels.market.add.reason.bundleInUse": "还有东西在用它,卸不掉",
4013
- "panels.market.add.reason.stopProfile": "这个配置没开热更新,得先停掉进程",
4063
+ "panels.market.add.reason.stopProfile": "这份配置改了要重启,得先停掉工作台",
4014
4064
  "panels.market.add.reason.staleApproval": "要允许的安装脚本已经变了,重新来一次",
4015
4065
  "panels.market.add.reason.operationError": "pnpm 执行出错(详情见安装输出)",
4016
4066
  "panels.market.add.reason.buildBlocked": "pnpm 拦下了安装脚本",
@@ -4033,15 +4083,15 @@ window.__ModuleLoader__.load({
4033
4083
  "blocker.market.open": "去模块市场",
4034
4084
  "blocker.login.title": "需要登录 {platform}",
4035
4085
  "blocker.login.titleGeneric": "需要登录",
4036
- "blocker.login.hint": "工作台用你的浏览器登录态;登录一次就行,之后不用再登。",
4086
+ "blocker.login.hint": "工作台借你浏览器里的登录状态;登录一次就行,之后不用再登。",
4037
4087
  "blocker.login.go": "去登录",
4038
4088
  "blocker.login.manual": "在终端执行该插件的登录命令(见插件的文档),按提示完成登录后重试。",
4039
4089
  "blocker.forbidden.title": "没有权限访问 {platform}",
4040
4090
  "blocker.forbidden.titleGeneric": "没有权限",
4041
4091
  "blocker.forbidden.hint": "账号已登录,但没有这个项目/仓库的权限;申请之后再试。",
4042
4092
  "blocker.forbidden.open": "打开权限页",
4043
- "blocker.timeout.hint": "无头浏览器可能没起来,重试一次通常就好。",
4044
- "blocker.exec.hint": "确认 opencli 已安装且在 PATH 里(which opencli)。",
4093
+ "blocker.timeout.hint": "后台浏览器没起来,重试一次通常就好。",
4094
+ "blocker.exec.hint": "确认 opencli 已经装好、在终端里能直接运行(which opencli)。",
4045
4095
  "blocker.unknown.title": "出了点问题",
4046
4096
  "panels.reading": "正在读取面板配置…",
4047
4097
  "panels.cardBroken": "这个模块起不来:{unit}({reason})",
@@ -4055,7 +4105,7 @@ window.__ModuleLoader__.load({
4055
4105
  "env.elapsed": "已等待 {seconds} 秒",
4056
4106
  "env.stepFailed.install": "装不上",
4057
4107
  "env.stepFailed.path": "装了但还找不到",
4058
- "env.stepFailed.shell": "执行通道不可用",
4108
+ "env.stepFailed.shell": "连不上命令行",
4059
4109
  "env.toolchain.ok": "正常",
4060
4110
  "env.toolchain.warn": "还没完全准备好",
4061
4111
  "env.opencli.ok": "已就绪",
@@ -4072,10 +4122,10 @@ window.__ModuleLoader__.load({
4072
4122
  "env.fix.title": "怎么解决",
4073
4123
  "env.fix.why": "工作台用它自己那份后台工具(与你在终端里那套分开装,互不影响),这台机器上还没装好它。",
4074
4124
  "env.fix.whyPath": "后台工具装上了,但当前环境还找不到它 —— 通常是 PATH 或终端会话的问题。",
4075
- "env.fix.whyShell": "工作台拿不到执行命令的通道,所以取不了数据 —— 这一步你装不了,需要有人处理后台环境。",
4125
+ "env.fix.whyShell": "工作台拿不到这台机器的命令行,所以取不了数据 —— 这一步你装不了,需要有人处理后台环境。",
4076
4126
  "env.fix.step": "在终端里运行下面这条命令,装好之后点「重试」:",
4077
4127
  "env.fix.stepPath": "新开一个终端窗口(或确认 npm 的全局 bin 目录在 PATH 里),然后点「重试」。",
4078
- "env.fix.stepShell": "重启一次工作台(或 dsh);如果反复出现,说明执行通道没配好。",
4128
+ "env.fix.stepShell": "重启一次工作台(或 dsh);如果反复出现,说明工作台还是拿不到命令行。",
4079
4129
  "env.fix.permission": "权限不够:在命令前加 sudo 重跑,或先把 npm 的全局目录配到你的用户目录。",
4080
4130
  "env.fix.network": "网络不通:检查网络或代理设置后重试。",
4081
4131
  "env.fix.details": "详细输出(排障用)",
@@ -4104,9 +4154,9 @@ window.__ModuleLoader__.load({
4104
4154
  "env.warm.done": "已就绪({n} 个站点)",
4105
4155
  "env.warm.short": "这次没提前连上 —— 不影响用,第一次取数会自己补",
4106
4156
  "env.unit.failed": "这个模块起不来",
4107
- "env.unit.failedHint": "它自己装配时报了错,别的模块不受影响。",
4108
- "env.unit.unchecked": "检测不了:拿不到执行通道",
4109
- "env.unit.uncheckedHint": "不是这个模块的问题,是执行通道不可用 —— 重启一次工作台再试。",
4157
+ "env.unit.failedHint": "它自己启动时报了错,别的模块不受影响。",
4158
+ "env.unit.unchecked": "检测不了:拿不到命令行",
4159
+ "env.unit.uncheckedHint": "不是这个模块的问题,是工作台拿不到命令行 —— 重启一次工作台再试。",
4110
4160
  "adapterSet.not-configured": "没配置适配器集合,用默认的。",
4111
4161
  "adapterSet.no-profile": "找不到 profile,没法加载适配器集合;先用默认的。",
4112
4162
  "adapterSet.malformed": "适配器集合要写包名(如 @acme/adapters-set);先用默认的。",
@@ -4149,7 +4199,7 @@ window.__ModuleLoader__.load({
4149
4199
  "sidebarEdition.official": "官方",
4150
4200
  "sidebarEdition.officialHint": "跟 dsh 官方一致、最稳:搜索、视图选项、显示更多、归档、添加工作区都齐,升级也不等我们适配。想省心就选它。",
4151
4201
  "sidebarEdition.custom": "自定义",
4152
- "sidebarEdition.customHint": "为多项目工作流做的:项目下拉一屏一个项目,会话按最近更新排,两端淡出、跑马灯、工坊 DIY 新会话。项目多时更顺手。",
4202
+ "sidebarEdition.customHint": "为多项目工作流做的:项目下拉一屏一个项目,会话按最近更新排,名字自动滚动、两侧渐隐,工坊 DIY 新会话。项目多时更顺手。",
4153
4203
  "sidebarEdition.saving": "配置中…",
4154
4204
  "sidebarEdition.reloadRequired": "已写入。刷新页面后生效(不用重启工作台)。",
4155
4205
  "sidebarEdition.reload": "刷新页面",
@@ -4178,25 +4228,25 @@ window.__ModuleLoader__.load({
4178
4228
  "record.act.halt": "停",
4179
4229
  "approval.record.site": "站点",
4180
4230
  "approval.record.what": "录制功能",
4181
- "approval.record.lands": "落点",
4231
+ "approval.record.lands": "保存到",
4182
4232
  "approval.record.noUrl": "没给站点地址(这次会被当场拒)",
4183
4233
  "approval.record.oneAction": "一次操作",
4184
4234
  "approval.record.noSwitch": "录完不会替你切回来(左栏底部会亮一条状态)",
4185
- "approval.longTask.what": "要停的那一趟",
4186
- "approval.longTask.signal": "停了只是让工作台发出中断信号 —— 平台侧那趟活儿的收尾看模块自己",
4235
+ "approval.longTask.what": "要停的那次任务",
4236
+ "approval.longTask.signal": "停了只是让工作台发出中断信号 —— 这次任务怎么收尾由模块自己负责",
4187
4237
  "approval.publish.module": "模块",
4188
4238
  "approval.publish.target": "目标",
4189
4239
  "approval.publish.version": "版本",
4190
4240
  "approval.publish.author": "作者",
4191
- "approval.publish.authorMissing": "未署名(提交用本机 git 身份)",
4241
+ "approval.publish.authorMissing": "未署名",
4192
4242
  "approval.publish.registry": "源",
4193
4243
  "approval.publish.repo": "仓库",
4194
4244
  "approval.publish.branch": "分支",
4195
4245
  "approval.publish.defaultBranch": "默认分支",
4196
- "approval.publish.artifacts": "产物",
4246
+ "approval.publish.artifacts": "打包文件",
4197
4247
  "approval.publish.index": "索引",
4198
4248
  "approval.publish.commits": "提交",
4199
- "approval.publish.twoCommits": "产物 + market.json 两个 commit,一次 push",
4249
+ "approval.publish.twoCommits": "打包文件 + market.json 两次提交,一次推送",
4200
4250
  "approval.publish.reading": "读取中…",
4201
4251
  "approval.publish.changelog": "{version} 的更新日志",
4202
4252
  "approval.publish.changelogMissing": "这一版还没有更新日志({version}),发布会被拦下",
@@ -4972,6 +5022,7 @@ window.__ModuleLoader__.load({
4972
5022
  broken: "panels.market.broken",
4973
5023
  outdated: "panels.market.moduleOutdated",
4974
5024
  "pending-restart": "panels.market.pendingRestart",
5025
+ "pending-followup": "panels.market.pendingFollowUp",
4975
5026
  missing: "panels.market.missing",
4976
5027
  unchecked: "panels.market.unchecked",
4977
5028
  unknown: "panels.market.unchecked"
@@ -4984,6 +5035,7 @@ window.__ModuleLoader__.load({
4984
5035
  broken: "error",
4985
5036
  outdated: "warning",
4986
5037
  "pending-restart": "warning",
5038
+ "pending-followup": "warning",
4987
5039
  missing: "idle",
4988
5040
  unchecked: "idle",
4989
5041
  unknown: "idle"
@@ -5008,35 +5060,32 @@ window.__ModuleLoader__.load({
5008
5060
  if (reported.length > 0) return reported;
5009
5061
  return [...new Set(client ?? [])];
5010
5062
  }
5011
- function mergeTitles(known, manifests) {
5012
- let next = null;
5013
- for (const manifest of manifests) {
5014
- const titleKey = manifest.card?.titleKey;
5015
- if (titleKey === void 0 || known.has(manifest.id)) continue;
5016
- next ??= new Map(known);
5017
- next.set(manifest.id, titleKey);
5018
- }
5019
- return next ?? known;
5063
+ function updateBlockHintOf(block) {
5064
+ return block === "needs-workbench" ? "panels.market.updateNeedsWorkbench" : "panels.market.updateIncompatible";
5020
5065
  }
5021
5066
  function installedIdSet(installed) {
5022
5067
  if (installed === void 0) return null;
5023
5068
  return new Set(installed.map((item) => item.unit));
5024
5069
  }
5025
- function installedRows(modules, manifests, listed, known, defaults = /* @__PURE__ */ new Set(), changed = {}) {
5070
+ function installedRows(modules, manifests, listed, names, defaults = /* @__PURE__ */ new Set(), changed = {}) {
5026
5071
  const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.card?.titleKey]));
5027
5072
  const rows = [];
5028
5073
  for (const module of modules) {
5029
5074
  if (listed.has(module.unit)) continue;
5030
5075
  const latest = module.local === true ? void 0 : module.latest;
5031
5076
  const outdated = latest !== void 0 && latest !== module.installed;
5077
+ const blocked = outdated ? module.latestBlocked : void 0;
5032
5078
  const loaded = titles.has(module.unit);
5033
5079
  const refused = refusalReasons(module.refused, module.clientRefused);
5034
5080
  const pending = !loaded && refused.length === 0;
5081
+ const titleKey = titles.get(module.unit);
5082
+ const remembered = titleKey === void 0 ? names?.get(module.unit) : void 0;
5035
5083
  rows.push({
5036
5084
  id: module.unit,
5037
- titleKey: titles.get(module.unit) ?? known?.get(module.unit) ?? module.pkg,
5085
+ titleKey: titleKey ?? module.unit,
5086
+ ...remembered === void 0 ? {} : { label: remembered },
5038
5087
  state: outdated ? "outdated" : refused.length > 0 ? "unusable" : pending ? "inactive" : "installed",
5039
- ...pending ? { hint: "panels.market.moduleRestartHint" } : {},
5088
+ ...pending ? { hint: "panels.market.moduleRestartHint" } : blocked === void 0 ? {} : { hint: updateBlockHintOf(blocked) },
5040
5089
  ...refused.length === 0 ? {} : { note: {
5041
5090
  key: "panels.market.moduleRefused",
5042
5091
  params: {}
@@ -5044,7 +5093,7 @@ window.__ModuleLoader__.load({
5044
5093
  ...module.local === true ? { local: true } : {},
5045
5094
  pkg: module.pkg,
5046
5095
  canInstall: false,
5047
- canUpdate: outdated,
5096
+ canUpdate: outdated && blocked === void 0,
5048
5097
  canUninstall: true,
5049
5098
  version: {
5050
5099
  installed: module.installed,
@@ -5052,7 +5101,8 @@ window.__ModuleLoader__.load({
5052
5101
  },
5053
5102
  ...outdated ? { moduleUpdate: {
5054
5103
  installed: module.installed,
5055
- latest
5104
+ latest,
5105
+ ...blocked === void 0 ? {} : { blocked }
5056
5106
  } } : {},
5057
5107
  defaultShown: defaults.has(module.unit),
5058
5108
  defaultChanged: changed[module.unit] ?? 0
@@ -5065,11 +5115,14 @@ window.__ModuleLoader__.load({
5065
5115
  return SWITCH_LOCKED.has(row.state);
5066
5116
  }
5067
5117
  function marketActions$1(row) {
5068
- if (row.workbench === true) return row.canUpdate ? ["update-workbench"] : [];
5118
+ if (row.workbench === true) {
5119
+ if (row.followUp !== void 0 && row.state === "pending-followup") return row.followUp.hard ? ["migrate-workbench"] : ["migrate-workbench", "dismiss-followup"];
5120
+ return row.canUpdate ? ["update-workbench"] : [];
5121
+ }
5069
5122
  if (row.plugin === true) return [...row.canUpdate ? ["update-plugin"] : [], ...row.canUninstall ? ["uninstall-plugin"] : []];
5070
5123
  return [
5071
5124
  ...row.canInstall ? ["install"] : [],
5072
- ...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : ["update-bundle"],
5125
+ ...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : row.moduleUpdate.blocked === void 0 ? ["update-bundle"] : [],
5073
5126
  ...row.canUninstall ? [row.pkg === void 0 ? "uninstall" : "remove-bundle"] : []
5074
5127
  ];
5075
5128
  }
@@ -5147,7 +5200,7 @@ window.__ModuleLoader__.load({
5147
5200
  return manifests.filter((manifest) => !gone.has(manifest.id));
5148
5201
  }
5149
5202
  function marketHasUpdates(rows, shared = []) {
5150
- return rows.some((row) => row.state === "outdated" || row.moduleUpdate !== void 0) || shared.some((row) => row.state === "outdated" || row.state === "unsatisfied");
5203
+ return rows.some((row) => row.moduleUpdate === void 0 ? row.state === "outdated" : row.moduleUpdate.blocked === void 0) || shared.some((row) => row.state === "outdated" || row.state === "unsatisfied");
5151
5204
  }
5152
5205
  function marketUpdatesOf(modules) {
5153
5206
  if (modules === null) return {};
@@ -5157,6 +5210,7 @@ window.__ModuleLoader__.load({
5157
5210
  next[module.unit] = {
5158
5211
  installed: module.installed,
5159
5212
  ...local || module.latest === void 0 ? {} : { latest: module.latest },
5213
+ ...local || module.latest === void 0 || module.latestBlocked === void 0 ? {} : { blocked: module.latestBlocked },
5160
5214
  ...local ? { local: true } : {}
5161
5215
  };
5162
5216
  }
@@ -5195,9 +5249,11 @@ window.__ModuleLoader__.load({
5195
5249
  const reAdopt = capability?.released === true && !installDeclared;
5196
5250
  const moduleUpdate = entry === void 0 || entry.latest === void 0 || entry.latest === entry.installed ? void 0 : {
5197
5251
  installed: entry.installed,
5198
- latest: entry.latest
5252
+ latest: entry.latest,
5253
+ ...entry.blocked === void 0 ? {} : { blocked: entry.blocked }
5199
5254
  };
5200
5255
  const shown = moduleUpdate === void 0 ? state : "outdated";
5256
+ const hint = moduleUpdate?.blocked === void 0 ? shown === "unknown" || shown === "unchecked" ? "panels.market.uncheckedHint" : void 0 : updateBlockHintOf(moduleUpdate.blocked);
5201
5257
  rows.push({
5202
5258
  id: manifest.id,
5203
5259
  titleKey: manifest.card?.titleKey ?? manifest.id,
@@ -5205,7 +5261,7 @@ window.__ModuleLoader__.load({
5205
5261
  canInstall: state !== "installed" && (install || reAdopt),
5206
5262
  canUpdate: onMachine && isOutdated(capability),
5207
5263
  canUninstall: onMachine,
5208
- ...shown === "unknown" || shown === "unchecked" ? { hint: "panels.market.uncheckedHint" } : {},
5264
+ ...hint === void 0 ? {} : { hint },
5209
5265
  ...entry === void 0 ? {} : { version: {
5210
5266
  installed: entry.installed,
5211
5267
  ...entry.latest === void 0 ? {} : { latest: entry.latest }
@@ -5270,11 +5326,14 @@ window.__ModuleLoader__.load({
5270
5326
  installed: version.installed,
5271
5327
  latest
5272
5328
  } : void 0;
5329
+ const stale = !local && version.running !== void 0 && version.running !== version.installed;
5330
+ const followUp = version.followUp;
5331
+ const followUpState = !stale && followUp !== void 0;
5273
5332
  return {
5274
5333
  id: WORKBENCH_ROW_ID,
5275
5334
  titleKey: WORKBENCH_TITLE_KEY,
5276
5335
  workbench: true,
5277
- state: !local && version.running !== void 0 && version.running !== version.installed ? "pending-restart" : update === void 0 ? "installed" : "outdated",
5336
+ state: stale ? "pending-restart" : followUpState ? "pending-followup" : update === void 0 ? "installed" : "outdated",
5278
5337
  canInstall: false,
5279
5338
  canUpdate: update !== void 0,
5280
5339
  canUninstall: false,
@@ -5284,6 +5343,8 @@ window.__ModuleLoader__.load({
5284
5343
  ...latest === void 0 ? {} : { latest }
5285
5344
  },
5286
5345
  ...update === void 0 ? {} : { moduleUpdate: update },
5346
+ ...followUp === void 0 ? {} : { followUp },
5347
+ ...followUpState ? { hint: "panels.market.migrationHint" } : {},
5287
5348
  pkg: version.pkg
5288
5349
  };
5289
5350
  }
@@ -5291,6 +5352,7 @@ window.__ModuleLoader__.load({
5291
5352
  //#region src/app/layouts/rightbar/market-hint.ts
5292
5353
  var PROBLEM_KEY = "panels.market.hasProblem";
5293
5354
  var RESTART_KEY = "panels.market.pendingRestart";
5355
+ var FOLLOWUP_KEY = "panels.market.pendingFollowUp";
5294
5356
  var UNKNOWN_KEY = "panels.market.unchecked";
5295
5357
  var UPDATES_KEY = "panels.market.hasNew";
5296
5358
  function isProblem(row) {
@@ -5321,12 +5383,14 @@ window.__ModuleLoader__.load({
5321
5383
  ];
5322
5384
  const problem = rows.some(isProblem);
5323
5385
  const restart = rows.some(isRestart) || awaitsRestart(input.manifests, installed);
5386
+ const followUp = rows.some((row) => row.state === "pending-followup");
5324
5387
  const rosterRead = input.modules !== null;
5325
5388
  const unknown = rows.some((row) => isUnknown(row, rosterRead));
5326
5389
  const updates = marketHasUpdates(rows, sharedRows(marketable, input.capabilities));
5327
5390
  const more = [];
5328
5391
  if (problem) {
5329
5392
  if (restart) more.push(RESTART_KEY);
5393
+ if (followUp) more.push(FOLLOWUP_KEY);
5330
5394
  if (unknown) more.push(UNKNOWN_KEY);
5331
5395
  if (updates) more.push(UPDATES_KEY);
5332
5396
  return {
@@ -5336,6 +5400,7 @@ window.__ModuleLoader__.load({
5336
5400
  };
5337
5401
  }
5338
5402
  if (restart) {
5403
+ if (followUp) more.push(FOLLOWUP_KEY);
5339
5404
  if (unknown) more.push(UNKNOWN_KEY);
5340
5405
  if (updates) more.push(UPDATES_KEY);
5341
5406
  return {
@@ -5344,6 +5409,15 @@ window.__ModuleLoader__.load({
5344
5409
  ...more.length === 0 ? {} : { moreKeys: more }
5345
5410
  };
5346
5411
  }
5412
+ if (followUp) {
5413
+ if (unknown) more.push(UNKNOWN_KEY);
5414
+ if (updates) more.push(UPDATES_KEY);
5415
+ return {
5416
+ labelKey: FOLLOWUP_KEY,
5417
+ tone: "warning",
5418
+ ...more.length === 0 ? {} : { moreKeys: more }
5419
+ };
5420
+ }
5347
5421
  if (unknown) {
5348
5422
  if (updates) more.push(UPDATES_KEY);
5349
5423
  return {
@@ -5639,114 +5713,118 @@ window.__ModuleLoader__.load({
5639
5713
  };
5640
5714
  }
5641
5715
  var MarketPage_module_default = {
5642
- marketList: "_marketList_9dzu9_1",
5643
- marketRow: "_marketRow_9dzu9_10",
5644
- marketIcon: "_marketIcon_9dzu9_20",
5645
- marketMain: "_marketMain_9dzu9_32",
5646
- marketName: "_marketName_9dzu9_39",
5647
- marketStatus: "_marketStatus_9dzu9_48",
5648
- marketStateText: "_marketStateText_9dzu9_58",
5649
- marketSep: "_marketSep_9dzu9_62",
5650
- marketReason: "_marketReason_9dzu9_66",
5651
- marketVersion: "_marketVersion_9dzu9_72",
5652
- marketLocalTag: "_marketLocalTag_9dzu9_94",
5653
- marketEnd: "_marketEnd_9dzu9_105",
5654
- marketSwitchSeat: "_marketSwitchSeat_9dzu9_112",
5655
- marketActions: "_marketActions_9dzu9_125",
5656
- marketUpdateAction: "_marketUpdateAction_9dzu9_131",
5657
- marketSelfDivider: "_marketSelfDivider_9dzu9_137",
5658
- marketSection: "_marketSection_9dzu9_143",
5659
- marketSectionHead: "_marketSectionHead_9dzu9_150",
5660
- marketSectionIcon: "_marketSectionIcon_9dzu9_156",
5661
- marketSectionTitle: "_marketSectionTitle_9dzu9_163",
5662
- marketSectionCount: "_marketSectionCount_9dzu9_169",
5663
- marketSectionQuiet: "_marketSectionQuiet_9dzu9_175",
5664
- marketProgress: "_marketProgress_9dzu9_188",
5665
- marketNote: "_marketNote_9dzu9_198",
5666
- marketFailure: "_marketFailure_9dzu9_205",
5667
- marketEmpty: "_marketEmpty_9dzu9_212",
5668
- marketPage: "_marketPage_9dzu9_217",
5669
- marketPageHead: "_marketPageHead_9dzu9_235",
5670
- marketPageTitle: "_marketPageTitle_9dzu9_243",
5671
- marketPageIntro: "_marketPageIntro_9dzu9_248",
5672
- marketPageTools: "_marketPageTools_9dzu9_254",
5673
- marketPanel: "_marketPanel_9dzu9_263",
5674
- marketTabs: "_marketTabs_9dzu9_273",
5675
- marketTabList: "_marketTabList_9dzu9_278",
5676
- marketIconButton: "_marketIconButton_9dzu9_283",
5677
- marketIconWrap: "_marketIconWrap_9dzu9_308",
5678
- marketIconButtonSpinning: "_marketIconButtonSpinning_9dzu9_312",
5679
- "wb-spin": "_wb-spin_9dzu9_1",
5680
- marketAddButton: "_marketAddButton_9dzu9_316",
5681
- marketEmptyTitle: "_marketEmptyTitle_9dzu9_333",
5682
- discoverPage: "_discoverPage_9dzu9_347",
5683
- discoverBar: "_discoverBar_9dzu9_354",
5684
- discoverTools: "_discoverTools_9dzu9_361",
5685
- discoverMarket: "_discoverMarket_9dzu9_367",
5686
- discoverMarketButton: "_discoverMarketButton_9dzu9_372",
5687
- discoverMarketName: "_discoverMarketName_9dzu9_379",
5688
- discoverLabels: "_discoverLabels_9dzu9_385",
5689
- discoverSort: "_discoverSort_9dzu9_390",
5690
- discoverRefresh: "_discoverRefresh_9dzu9_395",
5691
- discoverSearch: "_discoverSearch_9dzu9_399",
5692
- discoverChips: "_discoverChips_9dzu9_440",
5693
- discoverList: "_discoverList_9dzu9_447",
5694
- discoverCard: "_discoverCard_9dzu9_456",
5695
- discoverArtwork: "_discoverArtwork_9dzu9_470",
5696
- discoverArtworkImage: "_discoverArtworkImage_9dzu9_482",
5697
- discoverMain: "_discoverMain_9dzu9_486",
5698
- discoverTitleRow: "_discoverTitleRow_9dzu9_494",
5699
- discoverCardOpen: "_discoverCardOpen_9dzu9_502",
5700
- discoverStrong: "_discoverStrong_9dzu9_533",
5701
- discoverDesc: "_discoverDesc_9dzu9_539",
5702
- discoverMeta: "_discoverMeta_9dzu9_548",
5703
- discoverMuted: "_discoverMuted_9dzu9_555",
5704
- discoverEnd: "_discoverEnd_9dzu9_561",
5705
- discoverBlocked: "_discoverBlocked_9dzu9_570",
5706
- discoverEmpty: "_discoverEmpty_9dzu9_575",
5707
- discoverEmptyTitle: "_discoverEmptyTitle_9dzu9_584",
5708
- discoverDetail: "_discoverDetail_9dzu9_594",
5709
- discoverCrumb: "_discoverCrumb_9dzu9_600",
5710
- discoverCrumbIcon: "_discoverCrumbIcon_9dzu9_623",
5711
- discoverDetailHead: "_discoverDetailHead_9dzu9_627",
5712
- discoverDetailTitle: "_discoverDetailTitle_9dzu9_633",
5713
- discoverDetailText: "_discoverDetailText_9dzu9_639",
5714
- discoverDetailPanel: "_discoverDetailPanel_9dzu9_646",
5715
- discoverDetailTabs: "_discoverDetailTabs_9dzu9_653",
5716
- discoverDetailTabList: "_discoverDetailTabList_9dzu9_658",
5717
- discoverDocBody: "_discoverDocBody_9dzu9_663",
5718
- discoverDocNotice: "_discoverDocNotice_9dzu9_668",
5719
- discoverSection: "_discoverSection_9dzu9_674",
5720
- discoverSectionTitle: "_discoverSectionTitle_9dzu9_681",
5721
- discoverFacts: "_discoverFacts_9dzu9_687",
5722
- discoverFactRow: "_discoverFactRow_9dzu9_692",
5723
- discoverFactKind: "_discoverFactKind_9dzu9_702",
5724
- discoverFactValue: "_discoverFactValue_9dzu9_708",
5725
- discoverCode: "_discoverCode_9dzu9_716",
5726
- discoverTags: "_discoverTags_9dzu9_725",
5727
- discoverLink: "_discoverLink_9dzu9_732",
5728
- discoverVersions: "_discoverVersions_9dzu9_742",
5729
- discoverVersionRow: "_discoverVersionRow_9dzu9_750",
5730
- discoverVersionName: "_discoverVersionName_9dzu9_758",
5731
- discoverError: "_discoverError_9dzu9_763",
5732
- discoverFailure: "_discoverFailure_9dzu9_772",
5733
- discoverNotice: "_discoverNotice_9dzu9_778",
5734
- discoverMore: "_discoverMore_9dzu9_796",
5735
- discoverDialog: "_discoverDialog_9dzu9_800",
5736
- discoverDialogBody: "_discoverDialogBody_9dzu9_804",
5737
- discoverSourceList: "_discoverSourceList_9dzu9_810",
5738
- discoverSourceRow: "_discoverSourceRow_9dzu9_818",
5739
- discoverSourceError: "_discoverSourceError_9dzu9_826",
5740
- discoverSourceForm: "_discoverSourceForm_9dzu9_832",
5741
- discoverGrow: "_discoverGrow_9dzu9_838",
5742
- discoverField: "_discoverField_9dzu9_843",
5743
- discoverFieldLabel: "_discoverFieldLabel_9dzu9_849",
5744
- discoverConfirmHead: "_discoverConfirmHead_9dzu9_854",
5745
- discoverSkeletonFill: "_discoverSkeletonFill_9dzu9_860",
5746
- "wb-skeleton": "_wb-skeleton_9dzu9_1",
5747
- discoverSkeletonBar: "_discoverSkeletonBar_9dzu9_869",
5748
- discoverSkeletonTitle: "_discoverSkeletonTitle_9dzu9_876",
5749
- discoverSkeletonDesc: "_discoverSkeletonDesc_9dzu9_880"
5716
+ marketList: "_marketList_bnt61_1",
5717
+ marketRow: "_marketRow_bnt61_10",
5718
+ marketIcon: "_marketIcon_bnt61_20",
5719
+ marketMain: "_marketMain_bnt61_32",
5720
+ marketName: "_marketName_bnt61_39",
5721
+ marketStatus: "_marketStatus_bnt61_48",
5722
+ marketStateText: "_marketStateText_bnt61_58",
5723
+ marketSep: "_marketSep_bnt61_62",
5724
+ marketReason: "_marketReason_bnt61_66",
5725
+ marketVersion: "_marketVersion_bnt61_72",
5726
+ marketLocalTag: "_marketLocalTag_bnt61_94",
5727
+ marketEnd: "_marketEnd_bnt61_105",
5728
+ marketSwitchSeat: "_marketSwitchSeat_bnt61_112",
5729
+ marketActions: "_marketActions_bnt61_125",
5730
+ marketUpdateAction: "_marketUpdateAction_bnt61_131",
5731
+ marketSelfDivider: "_marketSelfDivider_bnt61_137",
5732
+ marketSection: "_marketSection_bnt61_143",
5733
+ marketSectionHead: "_marketSectionHead_bnt61_150",
5734
+ marketSectionIcon: "_marketSectionIcon_bnt61_156",
5735
+ marketSectionTitle: "_marketSectionTitle_bnt61_163",
5736
+ marketSectionCount: "_marketSectionCount_bnt61_169",
5737
+ marketSectionQuiet: "_marketSectionQuiet_bnt61_175",
5738
+ marketProgress: "_marketProgress_bnt61_188",
5739
+ marketNote: "_marketNote_bnt61_198",
5740
+ marketFailure: "_marketFailure_bnt61_205",
5741
+ marketEmpty: "_marketEmpty_bnt61_212",
5742
+ marketPage: "_marketPage_bnt61_217",
5743
+ marketPageHead: "_marketPageHead_bnt61_235",
5744
+ marketPageTitle: "_marketPageTitle_bnt61_243",
5745
+ marketPageIntro: "_marketPageIntro_bnt61_248",
5746
+ marketPageTools: "_marketPageTools_bnt61_254",
5747
+ marketPanel: "_marketPanel_bnt61_263",
5748
+ marketTabs: "_marketTabs_bnt61_273",
5749
+ marketTabList: "_marketTabList_bnt61_278",
5750
+ marketIconButton: "_marketIconButton_bnt61_283",
5751
+ marketIconWrap: "_marketIconWrap_bnt61_308",
5752
+ marketIconButtonSpinning: "_marketIconButtonSpinning_bnt61_312",
5753
+ "wb-spin": "_wb-spin_bnt61_1",
5754
+ marketAddButton: "_marketAddButton_bnt61_316",
5755
+ marketEmptyTitle: "_marketEmptyTitle_bnt61_333",
5756
+ discoverPage: "_discoverPage_bnt61_347",
5757
+ discoverBar: "_discoverBar_bnt61_354",
5758
+ discoverTools: "_discoverTools_bnt61_361",
5759
+ discoverMarket: "_discoverMarket_bnt61_367",
5760
+ discoverMarketButton: "_discoverMarketButton_bnt61_372",
5761
+ discoverMarketName: "_discoverMarketName_bnt61_379",
5762
+ discoverLabels: "_discoverLabels_bnt61_385",
5763
+ discoverSort: "_discoverSort_bnt61_390",
5764
+ discoverRefresh: "_discoverRefresh_bnt61_395",
5765
+ discoverSearch: "_discoverSearch_bnt61_399",
5766
+ discoverChips: "_discoverChips_bnt61_440",
5767
+ discoverList: "_discoverList_bnt61_447",
5768
+ discoverCard: "_discoverCard_bnt61_456",
5769
+ discoverArtwork: "_discoverArtwork_bnt61_470",
5770
+ discoverArtworkImage: "_discoverArtworkImage_bnt61_482",
5771
+ discoverMain: "_discoverMain_bnt61_486",
5772
+ discoverTitleRow: "_discoverTitleRow_bnt61_494",
5773
+ discoverCardOpen: "_discoverCardOpen_bnt61_502",
5774
+ discoverStrong: "_discoverStrong_bnt61_533",
5775
+ discoverDesc: "_discoverDesc_bnt61_539",
5776
+ discoverMeta: "_discoverMeta_bnt61_548",
5777
+ discoverMuted: "_discoverMuted_bnt61_555",
5778
+ discoverEnd: "_discoverEnd_bnt61_561",
5779
+ discoverBlocked: "_discoverBlocked_bnt61_570",
5780
+ discoverEmpty: "_discoverEmpty_bnt61_575",
5781
+ discoverEmptyTitle: "_discoverEmptyTitle_bnt61_584",
5782
+ discoverDetail: "_discoverDetail_bnt61_594",
5783
+ discoverCrumb: "_discoverCrumb_bnt61_600",
5784
+ discoverCrumbIcon: "_discoverCrumbIcon_bnt61_623",
5785
+ discoverDetailHead: "_discoverDetailHead_bnt61_627",
5786
+ discoverDetailTitle: "_discoverDetailTitle_bnt61_633",
5787
+ discoverDetailText: "_discoverDetailText_bnt61_639",
5788
+ discoverDetailPanel: "_discoverDetailPanel_bnt61_646",
5789
+ discoverDetailTabs: "_discoverDetailTabs_bnt61_653",
5790
+ discoverDetailTabList: "_discoverDetailTabList_bnt61_658",
5791
+ discoverDocBody: "_discoverDocBody_bnt61_663",
5792
+ discoverDocNotice: "_discoverDocNotice_bnt61_668",
5793
+ discoverSection: "_discoverSection_bnt61_674",
5794
+ discoverSectionTitle: "_discoverSectionTitle_bnt61_681",
5795
+ discoverFacts: "_discoverFacts_bnt61_687",
5796
+ discoverFactRow: "_discoverFactRow_bnt61_692",
5797
+ discoverFactKind: "_discoverFactKind_bnt61_702",
5798
+ discoverFactValue: "_discoverFactValue_bnt61_708",
5799
+ discoverCode: "_discoverCode_bnt61_716",
5800
+ discoverTags: "_discoverTags_bnt61_725",
5801
+ discoverLink: "_discoverLink_bnt61_732",
5802
+ discoverVersions: "_discoverVersions_bnt61_742",
5803
+ discoverVersionRow: "_discoverVersionRow_bnt61_750",
5804
+ discoverVersionName: "_discoverVersionName_bnt61_758",
5805
+ discoverError: "_discoverError_bnt61_763",
5806
+ discoverFailure: "_discoverFailure_bnt61_772",
5807
+ discoverLoading: "_discoverLoading_bnt61_778",
5808
+ discoverNotice: "_discoverNotice_bnt61_787",
5809
+ discoverMore: "_discoverMore_bnt61_805",
5810
+ discoverDialog: "_discoverDialog_bnt61_809",
5811
+ discoverDialogBody: "_discoverDialogBody_bnt61_813",
5812
+ discoverSourceList: "_discoverSourceList_bnt61_819",
5813
+ discoverSourceRow: "_discoverSourceRow_bnt61_827",
5814
+ discoverSourceCurrent: "_discoverSourceCurrent_bnt61_836",
5815
+ discoverSourceLoading: "_discoverSourceLoading_bnt61_843",
5816
+ discoverSourceHint: "_discoverSourceHint_bnt61_853",
5817
+ discoverSourceError: "_discoverSourceError_bnt61_867",
5818
+ discoverSourceForm: "_discoverSourceForm_bnt61_873",
5819
+ discoverGrow: "_discoverGrow_bnt61_879",
5820
+ discoverField: "_discoverField_bnt61_884",
5821
+ discoverFieldLabel: "_discoverFieldLabel_bnt61_890",
5822
+ discoverConfirmHead: "_discoverConfirmHead_bnt61_895",
5823
+ discoverSkeletonFill: "_discoverSkeletonFill_bnt61_901",
5824
+ "wb-skeleton": "_wb-skeleton_bnt61_1",
5825
+ discoverSkeletonBar: "_discoverSkeletonBar_bnt61_910",
5826
+ discoverSkeletonTitle: "_discoverSkeletonTitle_bnt61_917",
5827
+ discoverSkeletonDesc: "_discoverSkeletonDesc_bnt61_921"
5750
5828
  };
5751
5829
  //#endregion
5752
5830
  //#region src/app/layouts/market/discover-states.tsx
@@ -5770,6 +5848,13 @@ window.__ModuleLoader__.load({
5770
5848
  function DiscoverEmptyText({ text }) {
5771
5849
  return /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverMuted }, text);
5772
5850
  }
5851
+ function DiscoverLoading({ label }) {
5852
+ return /* @__PURE__ */ (0, react.createElement)("p", {
5853
+ className: MarketPage_module_default.discoverLoading,
5854
+ role: "status",
5855
+ "aria-live": "polite"
5856
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), label);
5857
+ }
5773
5858
  function DiscoverFailure({ t, text, onRetry }) {
5774
5859
  return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverFailure }, /* @__PURE__ */ (0, react.createElement)("p", {
5775
5860
  className: MarketPage_module_default.discoverError,
@@ -5838,6 +5923,18 @@ window.__ModuleLoader__.load({
5838
5923
  return row.kind === "extension" ? "plugin" : "lib";
5839
5924
  }
5840
5925
  //#endregion
5926
+ //#region src/app/layouts/rightbar/market-names.ts
5927
+ function namesOf(t, modules, titleOf) {
5928
+ const shown = /* @__PURE__ */ new Map();
5929
+ for (const module of modules) {
5930
+ const key = unitTitleKey(module.unit);
5931
+ const live = t(key);
5932
+ const name = live !== key && live !== "" ? live : titleOf(module.title);
5933
+ if (name !== "") shown.set(module.unit, name);
5934
+ }
5935
+ return shown;
5936
+ }
5937
+ //#endregion
5841
5938
  //#region src/app/layouts/rightbar/market-view-text.ts
5842
5939
  var PROGRESS_KEY = {
5843
5940
  install: "panels.market.installing",
@@ -5848,7 +5945,9 @@ window.__ModuleLoader__.load({
5848
5945
  "update-dependency": "panels.market.updating",
5849
5946
  "update-plugin": "panels.market.updating",
5850
5947
  "uninstall-plugin": "panels.market.uninstalling",
5851
- "update-workbench": "panels.market.updating"
5948
+ "update-workbench": "panels.market.updating",
5949
+ "migrate-workbench": "panels.market.migrating",
5950
+ "dismiss-followup": "panels.market.dismissing"
5852
5951
  };
5853
5952
  var ACTION_LABEL_KEY = {
5854
5953
  install: "panels.market.install",
@@ -5859,7 +5958,9 @@ window.__ModuleLoader__.load({
5859
5958
  "update-dependency": "panels.market.update",
5860
5959
  "update-plugin": "panels.market.update",
5861
5960
  "uninstall-plugin": "panels.market.uninstall",
5862
- "update-workbench": "panels.market.update"
5961
+ "update-workbench": "panels.market.update",
5962
+ "migrate-workbench": "panels.market.migrateAction",
5963
+ "dismiss-followup": "panels.market.dismissFollowUp"
5863
5964
  };
5864
5965
  function holdOf(pending, application) {
5865
5966
  if (pending === null || pending.row === void 0) return void 0;
@@ -5907,12 +6008,9 @@ window.__ModuleLoader__.load({
5907
6008
  function marketFootVisible(shown, installed) {
5908
6009
  return shown.length > 0 || installed.length > 0;
5909
6010
  }
5910
- function useMarketTitles(manifests, mocked) {
5911
- const [titles, setTitles] = (0, react.useState)(/* @__PURE__ */ new Map());
5912
- (0, react.useEffect)(() => {
5913
- if (!mocked) setTitles((known) => mergeTitles(known, manifests));
5914
- }, [manifests, mocked]);
5915
- return titles;
6011
+ var NO_NAMES = /* @__PURE__ */ new Map();
6012
+ function marketNamesOf(t, modules, titleOf, mocked) {
6013
+ return mocked ? NO_NAMES : namesOf(t, modules, titleOf);
5916
6014
  }
5917
6015
  function useHeldRow(pending, backInRoster) {
5918
6016
  const [held, setHeld] = (0, react.useState)(void 0);
@@ -5948,10 +6046,11 @@ window.__ModuleLoader__.load({
5948
6046
  const { pending, removing } = input;
5949
6047
  if (removing === null || pending === null) return void 0;
5950
6048
  if (input.rows.some((row) => row.id === removing)) return void 0;
6049
+ const name = pending.label ?? input.names.get(removing);
5951
6050
  return {
5952
6051
  id: removing,
5953
- titleKey: pending.titleKey ?? input.titles.get(removing) ?? removing,
5954
- ...pending.label === void 0 ? {} : { label: pending.label },
6052
+ titleKey: pending.titleKey ?? removing,
6053
+ ...name === void 0 ? {} : { label: name },
5955
6054
  state: "installed",
5956
6055
  canInstall: false,
5957
6056
  canUpdate: false,
@@ -6068,49 +6167,120 @@ window.__ModuleLoader__.load({
6068
6167
  "update-plugin",
6069
6168
  "update-workbench"
6070
6169
  ];
6170
+ function MigrationConfirm({ t, onConfirm, onCancel }) {
6171
+ const [acknowledged, setAcknowledged] = (0, react.useState)(false);
6172
+ return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
6173
+ open: true,
6174
+ title: t("panels.market.migrateConfirmTitle"),
6175
+ description: t("panels.market.migrateConfirmDetail"),
6176
+ acknowledgeLabel: t("panels.market.migrateConfirmAck"),
6177
+ cancelLabel: t("panels.market.confirmNo"),
6178
+ closeLabel: t("panels.market.confirmNo"),
6179
+ confirmLabel: t("panels.market.migrateConfirmYes"),
6180
+ acknowledged,
6181
+ onAcknowledgedChange: setAcknowledged,
6182
+ onCancel,
6183
+ onConfirm
6184
+ });
6185
+ }
6186
+ function DismissFollowUpConfirm({ t, onConfirm, onCancel }) {
6187
+ const [acknowledged, setAcknowledged] = (0, react.useState)(false);
6188
+ return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
6189
+ open: true,
6190
+ title: t("panels.market.dismissFollowUpTitle"),
6191
+ description: t("panels.market.dismissFollowUpDetail"),
6192
+ acknowledgeLabel: t("panels.market.dismissFollowUpAck"),
6193
+ cancelLabel: t("panels.market.confirmNo"),
6194
+ closeLabel: t("panels.market.confirmNo"),
6195
+ confirmLabel: t("panels.market.dismissFollowUpYes"),
6196
+ acknowledged,
6197
+ onAcknowledgedChange: setAcknowledged,
6198
+ onCancel,
6199
+ onConfirm
6200
+ });
6201
+ }
6202
+ function MarketLineDialogs({ t, migrationOpen, dismissOpen, onMigrationCancel, onMigrationConfirm, onDismissCancel, onDismissConfirm }) {
6203
+ return /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, migrationOpen ? /* @__PURE__ */ (0, react.createElement)(MigrationConfirm, {
6204
+ t,
6205
+ onCancel: onMigrationCancel,
6206
+ onConfirm: onMigrationConfirm
6207
+ }) : null, dismissOpen ? /* @__PURE__ */ (0, react.createElement)(DismissFollowUpConfirm, {
6208
+ t,
6209
+ onCancel: onDismissCancel,
6210
+ onConfirm: onDismissConfirm
6211
+ }) : null);
6212
+ }
6213
+ function MarketLineStatus({ t, row, quiet }) {
6214
+ const stateText = t(MARKET_STATE_KEY[row.state]);
6215
+ const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
6216
+ if (quiet) return null;
6217
+ return /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketStatus }, row.state === "checking" ? /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }) : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
6218
+ state: MARKET_DOT[row.state],
6219
+ size: 9
6220
+ }), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketStateText }, stateText), row.hint === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
6221
+ className: MarketPage_module_default.marketSep,
6222
+ "aria-hidden": "true"
6223
+ }, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, t(row.hint))), noteText === null ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
6224
+ className: MarketPage_module_default.marketSep,
6225
+ "aria-hidden": "true"
6226
+ }, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, noteText)));
6227
+ }
6071
6228
  function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
6072
6229
  const running = pending !== null && pending.id === row.id ? pending : null;
6073
6230
  const locked = pending !== null;
6231
+ const [migrationOpen, setMigrationOpen] = (0, react.useState)(false);
6232
+ const [dismissOpen, setDismissOpen] = (0, react.useState)(false);
6074
6233
  const quiet = row.workbench === true && row.state === "installed" && row.hint === void 0;
6075
6234
  const actions = marketActions$1(row);
6076
6235
  const switchLocked = marketSwitchLocked(row);
6077
- const stateText = t(MARKET_STATE_KEY[row.state]);
6078
- const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
6079
6236
  return /* @__PURE__ */ (0, react.createElement)("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ (0, react.createElement)("span", {
6080
6237
  className: MarketPage_module_default.marketIcon,
6081
6238
  "aria-hidden": "true"
6082
6239
  }, packageIcon(marketRowKind(row))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketName }, marketRowTitle(row, t), row.versionLabel === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketVersion }, row.versionLabel), row.version === void 0 || row.versionLabel !== void 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketVersion }, row.version.installed !== void 0 && row.version.latest !== void 0 && row.version.installed !== row.version.latest ? t("panels.market.versionArrow", {
6083
6240
  from: row.version.installed,
6084
6241
  to: row.version.latest
6085
- }) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null), quiet ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketStatus }, row.state === "checking" ? /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }) : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
6086
- state: MARKET_DOT[row.state],
6087
- size: 9
6088
- }), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketStateText }, stateText), row.hint === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
6089
- className: MarketPage_module_default.marketSep,
6090
- "aria-hidden": "true"
6091
- }, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, t(row.hint))), noteText === null ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
6092
- className: MarketPage_module_default.marketSep,
6093
- "aria-hidden": "true"
6094
- }, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, noteText)))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
6242
+ }) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null), /* @__PURE__ */ (0, react.createElement)(MarketLineStatus, {
6243
+ t,
6244
+ row,
6245
+ quiet
6246
+ })), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
6095
6247
  const danger = dangerActions.includes(action);
6096
6248
  const update = updateActions.includes(action);
6097
6249
  return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
6098
6250
  key: action,
6099
6251
  type: "button",
6100
6252
  size: "sm",
6101
- variant: action === "install" ? "primary" : "outline",
6253
+ variant: action === "install" || action === "migrate-workbench" ? "primary" : "outline",
6102
6254
  className: danger ? "wb-dangerAction" : update ? MarketPage_module_default.marketUpdateAction : void 0,
6103
6255
  icon: danger ? /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconTrashOutlineRegular, { size: 13 }) : void 0,
6104
6256
  "aria-label": danger ? t("panels.market.uninstallLabel", { name: marketRowTitle(row, t) }) : void 0,
6105
6257
  disabled: locked,
6106
- onClick: () => onAct(action)
6258
+ onClick: () => {
6259
+ if (action === "migrate-workbench") setMigrationOpen(true);
6260
+ else if (action === "dismiss-followup") setDismissOpen(true);
6261
+ else onAct(action);
6262
+ }
6107
6263
  }, t(ACTION_LABEL_KEY[action]));
6108
6264
  })), row.defaultShown === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(Tip, { label: t(switchLocked ? "panels.market.defaultLocked" : "panels.market.defaultHint") }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketSwitchSeat }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Switch, {
6109
6265
  checked: row.defaultShown,
6110
6266
  disabled: boardBusy === true || locked || switchLocked,
6111
6267
  label: `${marketRowTitle(row, t)} · ${t("panels.market.defaultLabel")}`,
6112
6268
  onChange: (next) => onDefault?.(next)
6113
- })))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure));
6269
+ })))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure), /* @__PURE__ */ (0, react.createElement)(MarketLineDialogs, {
6270
+ t,
6271
+ migrationOpen,
6272
+ dismissOpen,
6273
+ onMigrationCancel: () => setMigrationOpen(false),
6274
+ onMigrationConfirm: () => {
6275
+ setMigrationOpen(false);
6276
+ onAct("migrate-workbench");
6277
+ },
6278
+ onDismissCancel: () => setDismissOpen(false),
6279
+ onDismissConfirm: () => {
6280
+ setDismissOpen(false);
6281
+ onAct("dismiss-followup");
6282
+ }
6283
+ }));
6114
6284
  }
6115
6285
  function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy }) {
6116
6286
  if (rows.length === 0) return null;
@@ -6425,10 +6595,13 @@ window.__ModuleLoader__.load({
6425
6595
  seats.setConfirming(null);
6426
6596
  seats.setFailed(null);
6427
6597
  seats.setNotice(null);
6428
- const outcome = await send(action === "update-dependency" ? {
6598
+ const outcome = await send(action === "dismiss-followup" ? {
6599
+ action,
6600
+ id: row?.followUp?.id ?? ""
6601
+ } : action === "update-dependency" ? {
6429
6602
  action,
6430
6603
  id
6431
- } : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" ? {
6604
+ } : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" || action === "migrate-workbench" ? {
6432
6605
  action,
6433
6606
  name: row?.pkg ?? ""
6434
6607
  } : {
@@ -6446,6 +6619,21 @@ window.__ModuleLoader__.load({
6446
6619
  return;
6447
6620
  }
6448
6621
  const value = outcome.value;
6622
+ if (action === "dismiss-followup") {
6623
+ onChanged({ force: true });
6624
+ seats.setPending(null);
6625
+ seats.setHeld(void 0);
6626
+ seats.setNotice(t("panels.market.dismissed"));
6627
+ return;
6628
+ }
6629
+ if (action === "migrate-workbench") {
6630
+ const added = recordOf(value)?.["added"];
6631
+ onChanged({ force: true });
6632
+ seats.setPending(null);
6633
+ seats.setHeld(void 0);
6634
+ seats.setNotice(t("panels.market.migrateDone", { added: typeof added === "number" ? String(added) : "0" }));
6635
+ return;
6636
+ }
6449
6637
  const change = changeOf(value);
6450
6638
  const failure = updateVerdictText(updateVerdictOf({
6451
6639
  action,
@@ -6500,9 +6688,6 @@ window.__ModuleLoader__.load({
6500
6688
  "remove-bundle",
6501
6689
  "uninstall-plugin"
6502
6690
  ];
6503
- function marketMigrationNotice(t, update) {
6504
- return update?.migration === "needed" ? t("panels.market.selfUpdateNeedsMigrate") : null;
6505
- }
6506
6691
  function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
6507
6692
  const [acknowledged, setAcknowledged] = (0, react.useState)(false);
6508
6693
  return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
@@ -6572,8 +6757,8 @@ window.__ModuleLoader__.load({
6572
6757
  }));
6573
6758
  }
6574
6759
  function useMarketScene(input) {
6575
- const { manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
6576
- const titles = useMarketTitles(manifests, mock !== void 0);
6760
+ const { t, titleOf, manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
6761
+ const names = marketNamesOf(t, installed ?? [], titleOf, mock !== void 0);
6577
6762
  const catalog = mock?.manifests ?? manifests;
6578
6763
  const marketable = mock === void 0 ? marketCatalog(manifests, installable) : catalog;
6579
6764
  const effective = mock === void 0 ? capabilities : mock.capabilities;
@@ -6587,13 +6772,13 @@ window.__ModuleLoader__.load({
6587
6772
  const pinned = pinnedRowOf(pending, steady.held);
6588
6773
  const busyId = heldIdOf(pending, steady.held);
6589
6774
  return {
6590
- titles,
6775
+ names,
6591
6776
  catalog,
6592
6777
  effective,
6593
6778
  updateMap,
6594
6779
  rows,
6595
6780
  shared,
6596
- installedList: installedRows((mock?.installed ?? installed ?? []).filter((module) => module.unit !== pinned?.id && (!(settling?.has(module.unit) ?? false) || module.unit === busyId) && module.unit !== removing), catalog, new Set(rows.map((row) => row.id)), titles, byDefault, changed),
6781
+ installedList: installedRows((mock?.installed ?? installed ?? []).filter((module) => module.unit !== pinned?.id && (!(settling?.has(module.unit) ?? false) || module.unit === busyId) && module.unit !== removing), catalog, new Set(rows.map((row) => row.id)), mock === void 0 ? names : void 0, byDefault, changed),
6597
6782
  byDefault,
6598
6783
  steady,
6599
6784
  pinned,
@@ -6601,12 +6786,14 @@ window.__ModuleLoader__.load({
6601
6786
  busyId
6602
6787
  };
6603
6788
  }
6604
- function MarketView({ t, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
6789
+ function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
6605
6790
  const { pending, setPending, confirming, setConfirming, failed, setFailed, notice, setNotice } = useMarketTransient({
6606
6791
  mock,
6607
6792
  onPending
6608
6793
  });
6609
- const { titles, effective, updateMap, rows, shared, installedList, byDefault, steady, pinned, removing, busyId } = useMarketScene({
6794
+ const { names, effective, updateMap, rows, shared, installedList, byDefault, steady, pinned, removing, busyId } = useMarketScene({
6795
+ t,
6796
+ titleOf,
6610
6797
  manifests,
6611
6798
  installable,
6612
6799
  capabilities,
@@ -6651,7 +6838,7 @@ window.__ModuleLoader__.load({
6651
6838
  pending,
6652
6839
  removing,
6653
6840
  rows,
6654
- titles
6841
+ names
6655
6842
  });
6656
6843
  const self = workbenchRow(mock === void 0 ? workbench : mock.workbench);
6657
6844
  const shown = withPinnedRow(pendingRow === void 0 ? rows : [...rows, pendingRow], pinned);
@@ -6679,21 +6866,18 @@ window.__ModuleLoader__.load({
6679
6866
  send: (body) => provision.send(body),
6680
6867
  onChanged
6681
6868
  });
6682
- const landed = pendingLanded(pending, updateMap, effective, workbench?.installed, shared, pluginSource === null ? null : pluginList, {
6683
- units: installed === void 0 ? null : new Set(installed.map((module) => module.unit)),
6684
- plugins: pluginSource === null ? null : new Set(pluginList.map((row) => row.id))
6685
- });
6686
- const effectiveSelfUpdate = mock?.selfUpdate ?? selfUpdate;
6687
6869
  useSettleHold({
6688
6870
  pending,
6689
- landed,
6871
+ landed: pendingLanded(pending, updateMap, effective, workbench?.installed, shared, pluginSource === null ? null : pluginList, {
6872
+ units: installed === void 0 ? null : new Set(installed.map((module) => module.unit)),
6873
+ plugins: pluginSource === null ? null : new Set(pluginList.map((row) => row.id))
6874
+ }),
6690
6875
  t,
6691
6876
  onChanged,
6692
- selfUpdate: effectiveSelfUpdate,
6877
+ selfUpdate: mock?.selfUpdate ?? selfUpdate,
6693
6878
  setPending,
6694
6879
  setFailed
6695
6880
  });
6696
- const migrationNotice = marketMigrationNotice(t, effectiveSelfUpdate);
6697
6881
  const settled = marketSettled(freshness, installedRead);
6698
6882
  const nothing = shown.length === 0 && self === void 0 && installedList.length === 0 && pluginList.length === 0;
6699
6883
  if (!settled || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ (0, react.createElement)(MarketChecking, { t });
@@ -6707,7 +6891,7 @@ window.__ModuleLoader__.load({
6707
6891
  shared,
6708
6892
  pending,
6709
6893
  failed,
6710
- notice: notice ?? migrationNotice,
6894
+ notice,
6711
6895
  act,
6712
6896
  onConfirming: setConfirming,
6713
6897
  setDefault,
@@ -6923,7 +7107,7 @@ window.__ModuleLoader__.load({
6923
7107
  if (url === "" || url.includes("#") || hasCredentials(url)) return { ok: false };
6924
7108
  if (HTTP.test(url)) {
6925
7109
  const asGit = REPO_FILE.test(url);
6926
- const label = hostOf(url);
7110
+ const label = asGit ? sourceSuffix(url) || hostOf(url) : hostOf(url);
6927
7111
  if (label === "") return { ok: false };
6928
7112
  return {
6929
7113
  ok: true,
@@ -6956,6 +7140,13 @@ window.__ModuleLoader__.load({
6956
7140
  function sourceSuffix(url) {
6957
7141
  return (withoutTrailingSlash(url).split(/[/:]/).filter((part) => part !== "").pop() ?? "").replace(/\.git$/, "");
6958
7142
  }
7143
+ function sourceTransport(url) {
7144
+ if (GIT_SSH.test(url) || /^ssh:\/\//i.test(url) || /^git\+ssh:\/\//i.test(url)) return "ssh";
7145
+ if (/^git:\/\//i.test(url)) return "git";
7146
+ if (/^https:\/\//i.test(url)) return "https";
7147
+ if (/^http:\/\//i.test(url)) return "http";
7148
+ return "";
7149
+ }
6959
7150
  function sourceLabelsOf(sources) {
6960
7151
  const counts = /* @__PURE__ */ new Map();
6961
7152
  for (const source of sources) counts.set(source.label, (counts.get(source.label) ?? 0) + 1);
@@ -6966,7 +7157,8 @@ window.__ModuleLoader__.load({
6966
7157
  continue;
6967
7158
  }
6968
7159
  const suffix = sourceSuffix(source.url);
6969
- labels.set(source.id, suffix === "" ? source.url : `${source.label} · ${suffix}`);
7160
+ const detail = suffix !== "" && suffix !== source.label ? suffix : sourceTransport(source.url);
7161
+ labels.set(source.id, detail === "" ? source.url : `${detail} · ${source.label}`);
6970
7162
  }
6971
7163
  return labels;
6972
7164
  }
@@ -7093,11 +7285,15 @@ window.__ModuleLoader__.load({
7093
7285
  var MARKET_DISCOVER_ROUTE = "panels/market-discover";
7094
7286
  var MARKET_DOC_ROUTE = "panels/market-doc";
7095
7287
  var MARKET_PUBLISH_PREVIEW_ROUTE = "panels/market-publish-preview";
7288
+ var MARKET_SOURCES_ROUTE = "panels/market-sources";
7096
7289
  //#endregion
7097
7290
  //#region src/shared/hooks/market-queries.ts
7098
7291
  function readMarketDiscover(options = {}) {
7099
7292
  return apiGet(MARKET_DISCOVER_ROUTE, options.force === true ? { force: "1" } : {});
7100
7293
  }
7294
+ function readMarketSources() {
7295
+ return apiGet(MARKET_SOURCES_ROUTE);
7296
+ }
7101
7297
  function readMarketDoc(name, version, kind) {
7102
7298
  return apiGet(MARKET_DOC_ROUTE, {
7103
7299
  name,
@@ -7105,10 +7301,11 @@ window.__ModuleLoader__.load({
7105
7301
  kind
7106
7302
  });
7107
7303
  }
7108
- function readPublishPreview(unit, version) {
7304
+ function readPublishPreview(unit, version, author) {
7109
7305
  return apiGet(MARKET_PUBLISH_PREVIEW_ROUTE, {
7110
7306
  unit,
7111
- ...version === void 0 || version === "" ? {} : { version }
7307
+ ...version === void 0 || version === "" ? {} : { version },
7308
+ ...author === void 0 || author === "" ? {} : { author }
7112
7309
  });
7113
7310
  }
7114
7311
  //#endregion
@@ -7362,6 +7559,7 @@ window.__ModuleLoader__.load({
7362
7559
  const [url, setUrl] = (0, react.useState)("");
7363
7560
  const [problem, setProblem] = (0, react.useState)(null);
7364
7561
  const pending = props.busy || props.adding;
7562
+ const selectedVisible = props.sources.some((source) => source.id === props.selected);
7365
7563
  const add = () => {
7366
7564
  if (pending) return;
7367
7565
  const parsed = sourceFromUrl(url);
@@ -7384,13 +7582,29 @@ window.__ModuleLoader__.load({
7384
7582
  closeLabel: t("panels.discover.close"),
7385
7583
  description: t("panels.discover.sourcesIntro"),
7386
7584
  className: MarketPage_module_default.discoverDialog
7387
- }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDialogBody }, props.sources.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("ul", {
7585
+ }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDialogBody }, props.loading && !selectedVisible ? props.slow ? /* @__PURE__ */ (0, react.createElement)("p", {
7586
+ className: MarketPage_module_default.discoverNotice,
7587
+ role: "note"
7588
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
7589
+ size: 14,
7590
+ "aria-hidden": "true"
7591
+ }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.slowHint"))) : /* @__PURE__ */ (0, react.createElement)(DiscoverLoading, { label: t("panels.discover.loading") }) : null, props.sources.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("ul", {
7388
7592
  className: MarketPage_module_default.discoverSourceList,
7389
7593
  "aria-label": t("panels.discover.sourcesLabel")
7390
7594
  }, props.sources.map((source) => /* @__PURE__ */ (0, react.createElement)("li", {
7391
7595
  key: source.id,
7392
7596
  className: MarketPage_module_default.discoverSourceRow
7393
- }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverMeta }, source.url), props.problem?.id === source.id ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
7597
+ }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverMeta }, source.url), !props.loading && props.problem?.id === source.id ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), source.id === props.selected ? props.loading ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceLoading }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), t("panels.discover.loading")) : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceCurrent }, t("panels.discover.sourceCurrent")) : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
7598
+ type: "button",
7599
+ variant: "ghost",
7600
+ size: "sm",
7601
+ "aria-label": t("panels.discover.useSourceNamed", { label: source.label }),
7602
+ disabled: pending,
7603
+ onClick: () => {
7604
+ props.onSelect(source.id);
7605
+ props.onClose();
7606
+ }
7607
+ }, t("panels.discover.useSource")), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
7394
7608
  label: t("panels.discover.removeSource"),
7395
7609
  side: "bottom",
7396
7610
  portal: true,
@@ -7403,7 +7617,13 @@ window.__ModuleLoader__.load({
7403
7617
  "aria-label": t("panels.discover.removeSourceNamed", { url: source.url }),
7404
7618
  disabled: pending,
7405
7619
  onClick: () => props.onRemove(source.id)
7406
- }))))), /* @__PURE__ */ (0, react.createElement)("form", {
7620
+ })), source.id === props.selected && props.loading && props.slow ? /* @__PURE__ */ (0, react.createElement)("span", {
7621
+ className: MarketPage_module_default.discoverSourceHint,
7622
+ role: "note"
7623
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
7624
+ size: 12,
7625
+ "aria-hidden": "true"
7626
+ }), t("panels.discover.slowHint")) : null))), /* @__PURE__ */ (0, react.createElement)("form", {
7407
7627
  className: MarketPage_module_default.discoverSourceForm,
7408
7628
  onSubmit: (event) => {
7409
7629
  event.preventDefault();
@@ -7446,12 +7666,16 @@ window.__ModuleLoader__.load({
7446
7666
  t,
7447
7667
  open: d.manageOpen,
7448
7668
  sources: d.sources,
7669
+ selected: d.selected,
7670
+ loading: d.loading,
7671
+ slow: d.slow,
7449
7672
  problem: d.problem,
7450
7673
  busy: d.busy,
7451
7674
  adding: d.addingSource,
7452
7675
  onClose: () => d.setManageOpen(false),
7453
7676
  onAdd: d.addSource,
7454
- onRemove: d.removeSourceById
7677
+ onRemove: d.removeSourceById,
7678
+ onSelect: d.selectSource
7455
7679
  }), /* @__PURE__ */ (0, react.createElement)(DiscoverConfirm, {
7456
7680
  t,
7457
7681
  locale: d.locale,
@@ -7548,6 +7772,7 @@ window.__ModuleLoader__.load({
7548
7772
  value: text,
7549
7773
  placeholder: t("panels.discover.search"),
7550
7774
  "aria-label": t("panels.discover.search"),
7775
+ disabled: props.loading,
7551
7776
  onChange: (event) => setText(event.currentTarget.value)
7552
7777
  }), props.labels.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
7553
7778
  className: MarketPage_module_default.discoverLabels,
@@ -7596,6 +7821,7 @@ window.__ModuleLoader__.load({
7596
7821
  variant: "ghost",
7597
7822
  "aria-haspopup": "menu",
7598
7823
  "aria-expanded": open === "sort",
7824
+ disabled: props.loading,
7599
7825
  onClick: () => setOpen(open === "sort" ? null : "sort")
7600
7826
  }, t("panels.discover.sortWith", { label: sortName }), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, {
7601
7827
  size: 12,
@@ -7634,6 +7860,12 @@ window.__ModuleLoader__.load({
7634
7860
  "restart-required",
7635
7861
  "overridden"
7636
7862
  ];
7863
+ function sourceRowsOf(sources) {
7864
+ return sources.map((source) => ({
7865
+ ...source,
7866
+ writable: source.kind === "http" ? false : null
7867
+ }));
7868
+ }
7637
7869
  function installVerdictOf(value, t) {
7638
7870
  const change = changeOf(value);
7639
7871
  if (change === void 0) return { kind: "quiet" };
@@ -7647,6 +7879,7 @@ window.__ModuleLoader__.load({
7647
7879
  function useDiscover(t, active, onInstalled) {
7648
7880
  const [payload, setPayload] = (0, react.useState)(null);
7649
7881
  const [loading, setLoading] = (0, react.useState)(true);
7882
+ const [slow, setSlow] = (0, react.useState)(false);
7650
7883
  const [failure, setFailure] = (0, react.useState)(null);
7651
7884
  const [query, setQuery] = (0, react.useState)("");
7652
7885
  const [category, setCategory] = (0, react.useState)(null);
@@ -7659,7 +7892,10 @@ window.__ModuleLoader__.load({
7659
7892
  const [choice, setChoice] = (0, react.useState)(null);
7660
7893
  const [notice, setNotice] = (0, react.useState)(null);
7661
7894
  const [addingSource, setAddingSource] = (0, react.useState)(false);
7895
+ const [knownSources, setKnownSources] = (0, react.useState)(null);
7662
7896
  const loaded = (0, react.useRef)(false);
7897
+ const loadTicket = (0, react.useRef)(0);
7898
+ const sourceTicket = (0, react.useRef)(0);
7663
7899
  const locale = (0, react.useMemo)(() => localeNow(), []);
7664
7900
  const sources = useHostWrite({
7665
7901
  channel: "actions",
@@ -7670,11 +7906,27 @@ window.__ModuleLoader__.load({
7670
7906
  channel: "provision",
7671
7907
  networkText: t("panels.discover.failed")
7672
7908
  });
7909
+ const loadSources = (0, react.useCallback)(async () => {
7910
+ const ticket = sourceTicket.current + 1;
7911
+ sourceTicket.current = ticket;
7912
+ const response = await readMarketSources().catch(() => null);
7913
+ if (sourceTicket.current !== ticket) return;
7914
+ if (response === null || !response.ok) return;
7915
+ setKnownSources({
7916
+ sources: sourceRowsOf(response.sources),
7917
+ selected: response.selected
7918
+ });
7919
+ }, []);
7673
7920
  const load = (0, react.useCallback)(async (force = false) => {
7921
+ const ticket = loadTicket.current + 1;
7922
+ loadTicket.current = ticket;
7674
7923
  setLoading(true);
7924
+ setSlow(false);
7675
7925
  setFailure(null);
7676
7926
  const response = await readMarketDiscover({ force }).catch(() => null);
7927
+ if (loadTicket.current !== ticket) return;
7677
7928
  setLoading(false);
7929
+ setSlow(false);
7678
7930
  if (response === null || !response.ok) {
7679
7931
  setFailure(t("panels.discover.unreadable"));
7680
7932
  return;
@@ -7682,11 +7934,29 @@ window.__ModuleLoader__.load({
7682
7934
  setPayload(response);
7683
7935
  setLimit(50);
7684
7936
  }, [t]);
7937
+ const beginSwitch = () => {
7938
+ loadTicket.current += 1;
7939
+ sourceTicket.current += 1;
7940
+ setFailure(null);
7941
+ setPayload(null);
7942
+ setLoading(true);
7943
+ setSlow(false);
7944
+ };
7685
7945
  (0, react.useEffect)(() => {
7686
7946
  if (!active || loaded.current) return;
7687
7947
  loaded.current = true;
7948
+ loadSources();
7688
7949
  load();
7689
- }, [active, load]);
7950
+ }, [
7951
+ active,
7952
+ load,
7953
+ loadSources
7954
+ ]);
7955
+ (0, react.useEffect)(() => {
7956
+ if (!loading) return void 0;
7957
+ const timer = setTimeout(() => setSlow(true), 8e3);
7958
+ return () => clearTimeout(timer);
7959
+ }, [loading]);
7690
7960
  (0, react.useEffect)(() => subscribeFactRevision(CAPABILITY_FACT, () => {
7691
7961
  if (!loaded.current) return;
7692
7962
  load(true);
@@ -7740,6 +8010,8 @@ window.__ModuleLoader__.load({
7740
8010
  const done = typeof value?.["branch"] === "string" ? value["branch"] : branch;
7741
8011
  setInitOpen(false);
7742
8012
  setNotice(t("panels.discover.initDone", { branch: done }));
8013
+ beginSwitch();
8014
+ await loadSources();
7743
8015
  await load(true);
7744
8016
  });
7745
8017
  };
@@ -7757,8 +8029,11 @@ window.__ModuleLoader__.load({
7757
8029
  id
7758
8030
  },
7759
8031
  select: true
7760
- }).then(async (outcome) => {
7761
- if (outcome.ok) await load(true);
8032
+ }).then((outcome) => {
8033
+ if (!outcome.ok) return;
8034
+ beginSwitch();
8035
+ loadSources();
8036
+ load(true);
7762
8037
  }).finally(() => setAddingSource(false));
7763
8038
  };
7764
8039
  const removeSourceById = (id) => {
@@ -7770,6 +8045,8 @@ window.__ModuleLoader__.load({
7770
8045
  }).then(async (outcome) => {
7771
8046
  if (!outcome.ok) return;
7772
8047
  setDetail(null);
8048
+ beginSwitch();
8049
+ await loadSources();
7773
8050
  await load(true);
7774
8051
  });
7775
8052
  };
@@ -7782,11 +8059,23 @@ window.__ModuleLoader__.load({
7782
8059
  setSelectedLabels([]);
7783
8060
  setSort("default");
7784
8061
  setDetail(null);
8062
+ beginSwitch();
8063
+ setKnownSources((current) => current === null ? current : {
8064
+ sources: current.sources,
8065
+ selected: id
8066
+ });
7785
8067
  sources.send({
7786
8068
  action: "select",
7787
8069
  id
7788
8070
  }).then(async (outcome) => {
7789
- if (outcome.ok) await load(true);
8071
+ if (!outcome.ok) {
8072
+ setLoading(false);
8073
+ setSlow(false);
8074
+ loadSources();
8075
+ return;
8076
+ }
8077
+ await loadSources();
8078
+ await load(true);
7790
8079
  });
7791
8080
  };
7792
8081
  const install = () => {
@@ -7821,9 +8110,10 @@ window.__ModuleLoader__.load({
7821
8110
  locale,
7822
8111
  payload,
7823
8112
  loading,
8113
+ slow,
7824
8114
  failure,
7825
- sources: payload?.sources ?? [],
7826
- selected: payload?.selected ?? null,
8115
+ sources: payload?.sources ?? knownSources?.sources ?? [],
8116
+ selected: payload?.selected ?? knownSources?.selected ?? null,
7827
8117
  entries,
7828
8118
  shown,
7829
8119
  total: sorted.length,
@@ -7894,35 +8184,45 @@ window.__ModuleLoader__.load({
7894
8184
  t,
7895
8185
  d
7896
8186
  });
7897
- if (d.payload === null) return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, d.loading ? /* @__PURE__ */ (0, react.createElement)(DiscoverSkeleton, { label: t("panels.discover.loading") }) : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
8187
+ const slowHint = !d.manageOpen && d.loading && d.slow ? /* @__PURE__ */ (0, react.createElement)("p", {
8188
+ className: MarketPage_module_default.discoverNotice,
8189
+ role: "note"
8190
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
8191
+ size: 14,
8192
+ "aria-hidden": "true"
8193
+ }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.slowHint"))) : null;
8194
+ if (d.payload === null) return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, d.sources.length === 0 ? null : toolbar, d.loading ? /* @__PURE__ */ (0, react.createElement)(DiscoverSkeleton, { label: t("panels.discover.loading") }) : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
7898
8195
  t,
7899
8196
  text: t("panels.discover.sourcesFailed"),
7900
8197
  onRetry: d.reload
7901
- }), dialogs);
8198
+ }), slowHint, d.writeFailed === null ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverError }, d.writeFailed), dialogs);
7902
8199
  if (d.payload.state === "no-source") return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, /* @__PURE__ */ (0, react.createElement)(DiscoverNoSource, {
7903
8200
  t,
7904
8201
  onAdd: () => d.setManageOpen(true)
7905
8202
  }), dialogs);
7906
- const readFailed = d.payload.state === "invalid" ? t("panels.discover.invalid") : d.payload.state === "unreadable" ? t("panels.discover.unreadable") : null;
8203
+ const failed = d.payload.state === "invalid" || d.payload.state === "unreadable";
8204
+ const readFailed = !d.loading && failed ? d.payload.state === "invalid" ? t("panels.discover.invalid") : t("panels.discover.unreadable") : null;
8205
+ const uninitialized = d.loading ? null : d.uninitialized;
8206
+ const retrying = d.loading && failed;
7907
8207
  const emptyText = unfiltered({
7908
8208
  query: d.query,
7909
8209
  category: d.category,
7910
8210
  labels: d.selectedLabels
7911
8211
  }) ? t("panels.discover.empty") : t("panels.discover.noMatch");
7912
- return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.payload.stale === true ? /* @__PURE__ */ (0, react.createElement)("p", {
8212
+ return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.loading && !d.manageOpen ? /* @__PURE__ */ (0, react.createElement)(DiscoverLoading, { label: t("panels.discover.loading") }) : null, slowHint, !d.loading && d.payload.stale === true ? /* @__PURE__ */ (0, react.createElement)("p", {
7913
8213
  className: MarketPage_module_default.discoverNotice,
7914
8214
  role: "note"
7915
8215
  }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
7916
8216
  size: 14,
7917
8217
  "aria-hidden": "true"
7918
- }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null, d.uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
8218
+ }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null, uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
7919
8219
  t,
7920
8220
  text: readFailed,
7921
8221
  onRetry: d.reload
7922
8222
  }) : /* @__PURE__ */ (0, react.createElement)(DiscoverUninitialized, {
7923
8223
  t,
7924
- path: d.uninitialized.path,
7925
- empty: d.uninitialized.empty,
8224
+ path: uninitialized.path,
8225
+ empty: uninitialized.empty,
7926
8226
  onInit: () => d.setInitOpen(true)
7927
8227
  }), d.notice === null ? null : /* @__PURE__ */ (0, react.createElement)("p", {
7928
8228
  className: MarketPage_module_default.discoverNotice,
@@ -7941,7 +8241,7 @@ window.__ModuleLoader__.load({
7941
8241
  version
7942
8242
  }),
7943
8243
  onShowInstalled
7944
- }) : readFailed !== null || d.uninitialized !== null ? null : d.shown.length === 0 ? /* @__PURE__ */ (0, react.createElement)(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ (0, react.createElement)(DiscoverRows, {
8244
+ }) : readFailed !== null || uninitialized !== null || retrying ? null : d.shown.length === 0 ? /* @__PURE__ */ (0, react.createElement)(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ (0, react.createElement)(DiscoverRows, {
7945
8245
  t,
7946
8246
  locale: d.locale,
7947
8247
  entries: d.shown,
@@ -8722,7 +9022,7 @@ window.__ModuleLoader__.load({
8722
9022
  return crypto.randomUUID();
8723
9023
  }
8724
9024
  function useAddModule(options) {
8725
- const { open, onInstalled, failedText } = options;
9025
+ const { onInstalled, failedText } = options;
8726
9026
  const [spec, setSpec] = (0, react.useState)("");
8727
9027
  const [choice, setChoice] = (0, react.useState)({
8728
9028
  kind: "default",
@@ -8753,7 +9053,6 @@ window.__ModuleLoader__.load({
8753
9053
  networkText: failedText
8754
9054
  });
8755
9055
  (0, react.useEffect)(() => {
8756
- if (!open) return void 0;
8757
9056
  let alive = true;
8758
9057
  readBundleRegistries().then((response) => {
8759
9058
  if (!alive) return;
@@ -8762,19 +9061,8 @@ window.__ModuleLoader__.load({
8762
9061
  return () => {
8763
9062
  alive = false;
8764
9063
  };
8765
- }, [open]);
9064
+ }, []);
8766
9065
  const registry = registryOf(choice, custom);
8767
- (0, react.useEffect)(() => {
8768
- if (open) return;
8769
- generationRef.current += 1;
8770
- setGuideOpen(false);
8771
- setRegistryOpen(false);
8772
- setProblem(null);
8773
- setPreview(null);
8774
- setOutcome(null);
8775
- setFailure(null);
8776
- setPhase("idle");
8777
- }, [open]);
8778
9066
  const check = (0, react.useCallback)(() => {
8779
9067
  const wanted = spec.trim();
8780
9068
  if (wanted === "") return;
@@ -8911,15 +9199,21 @@ window.__ModuleLoader__.load({
8911
9199
  //#endregion
8912
9200
  //#region src/app/layouts/market/AddModuleDialog.tsx
8913
9201
  function AddModuleDialog({ t, open, onClose, onInstalled }) {
9202
+ if (!open) return null;
9203
+ return /* @__PURE__ */ (0, react.createElement)(AddModuleContent, {
9204
+ t,
9205
+ onClose,
9206
+ onInstalled
9207
+ });
9208
+ }
9209
+ function AddModuleContent({ t, onClose, onInstalled }) {
8914
9210
  const real = useAddModule({
8915
- open,
8916
9211
  onInstalled,
8917
9212
  failedText: t("panels.failed")
8918
9213
  });
8919
9214
  const devAdd = devSurface.useStrips("addModule", []);
8920
9215
  const mock = devAdd.current;
8921
9216
  const state = mock === void 0 ? real : devSurface.addModuleState(real, mock);
8922
- if (!open) return null;
8923
9217
  const installing = state.phase === "installing";
8924
9218
  const checking = state.phase === "inspecting";
8925
9219
  const empty = state.spec.trim() === "";
@@ -8979,7 +9273,7 @@ window.__ModuleLoader__.load({
8979
9273
  onClick: () => state.install()
8980
9274
  }, t("panels.market.add.retry")) : null) : null);
8981
9275
  return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
8982
- open,
9276
+ open: true,
8983
9277
  onClose: () => {
8984
9278
  if (!installing) onClose();
8985
9279
  },
@@ -9052,7 +9346,7 @@ window.__ModuleLoader__.load({
9052
9346
  return /* @__PURE__ */ (0, react.createElement)(IconModules, { size });
9053
9347
  };
9054
9348
  }
9055
- function MarketPanel({ t, units }) {
9349
+ function MarketPanel({ t, units, titleOf }) {
9056
9350
  const manifests = useLiveManifests(units);
9057
9351
  const installable = useInstallableUnits(units);
9058
9352
  const { capabilities, checkedAt, checking, forceProbe, reload: reloadCapability } = useCapabilityMap(0);
@@ -9150,6 +9444,7 @@ window.__ModuleLoader__.load({
9150
9444
  }, /* @__PURE__ */ (0, react.createElement)(MarketView, {
9151
9445
  key: `${mock?.id ?? "real-market"}-${mockNonce}`,
9152
9446
  t,
9447
+ titleOf,
9153
9448
  manifests,
9154
9449
  installable,
9155
9450
  capabilities,
@@ -9185,6 +9480,10 @@ window.__ModuleLoader__.load({
9185
9480
  }
9186
9481
  function registerMarketPanel(ctx, units) {
9187
9482
  const t = ctx.locale.bind(LOCALE_NS);
9483
+ const titleOf = (title) => title === void 0 ? "" : ctx.locale.resolveText?.({
9484
+ zh: title.zh,
9485
+ en: title.en
9486
+ }) ?? title.zh;
9188
9487
  ctx.slots.inject("sidebar.panellist", () => ctx.slots.register({
9189
9488
  name: "sidebar.panellist",
9190
9489
  id: MARKET_PANEL_ID,
@@ -9196,7 +9495,10 @@ window.__ModuleLoader__.load({
9196
9495
  name: "main",
9197
9496
  key: MARKET_PANEL_ID,
9198
9497
  locale: LOCALE_NS,
9199
- inject: () => ({ units })
9498
+ inject: () => ({
9499
+ units,
9500
+ titleOf
9501
+ })
9200
9502
  }, MarketPanel));
9201
9503
  }
9202
9504
  //#endregion
@@ -9248,6 +9550,14 @@ window.__ModuleLoader__.load({
9248
9550
  }).catch(() => void 0);
9249
9551
  }
9250
9552
  //#endregion
9553
+ //#region src/shared/hooks/resource-view.ts
9554
+ var IDLE = { phase: "idle" };
9555
+ var LOADING = { phase: "loading" };
9556
+ function resourceViewOf(enabled, current, identity) {
9557
+ if (!enabled) return IDLE;
9558
+ return current.identity === identity ? current.state : LOADING;
9559
+ }
9560
+ //#endregion
9251
9561
  //#region src/shared/hooks/use-api-resource.ts
9252
9562
  var use_api_resource_exports = /* @__PURE__ */ __exportAll({
9253
9563
  readKeyOf: () => readKeyOf,
@@ -9319,7 +9629,10 @@ window.__ModuleLoader__.load({
9319
9629
  const identity = resourceIdentity(route, query, options.key);
9320
9630
  const factRev = useFactRevision(options.fact ?? factOfRoute(route));
9321
9631
  const key = readKeyOf(identity, refreshToken, factRev);
9322
- const [state, setState] = (0, react.useState)(() => enabled ? { phase: "loading" } : { phase: "idle" });
9632
+ const [current, setCurrent] = (0, react.useState)(() => ({
9633
+ identity,
9634
+ state: enabled ? LOADING : IDLE
9635
+ }));
9323
9636
  const lastIdentity = (0, react.useRef)(null);
9324
9637
  const queryRef = (0, react.useRef)(query);
9325
9638
  (0, react.useEffect)(() => {
@@ -9328,17 +9641,23 @@ window.__ModuleLoader__.load({
9328
9641
  (0, react.useEffect)(() => {
9329
9642
  if (!enabled) {
9330
9643
  lastIdentity.current = null;
9331
- setState({ phase: "idle" });
9332
9644
  return;
9333
9645
  }
9334
9646
  let cancelled = false;
9647
+ const put = (state) => setCurrent({
9648
+ identity,
9649
+ state
9650
+ });
9335
9651
  const sameIdentity = lastIdentity.current === identity;
9336
9652
  lastIdentity.current = identity;
9337
- setState((prev) => sameIdentity && prev.value !== void 0 ? {
9338
- phase: "loading",
9339
- value: prev.value,
9340
- ...prev.at === void 0 ? {} : { at: prev.at }
9341
- } : { phase: "loading" });
9653
+ setCurrent((prev) => ({
9654
+ identity,
9655
+ state: sameIdentity && prev.state.value !== void 0 ? {
9656
+ phase: "loading",
9657
+ value: prev.state.value,
9658
+ ...prev.state.at === void 0 ? {} : { at: prev.state.at }
9659
+ } : LOADING
9660
+ }));
9342
9661
  const flight = requestResource(route, queryRef.current, key);
9343
9662
  const owner = options.report === false ? null : unitOfRoute(route);
9344
9663
  if (owner !== null) reportPanelRead({
@@ -9349,7 +9668,7 @@ window.__ModuleLoader__.load({
9349
9668
  flight.task.then((response) => {
9350
9669
  if (cancelled) return;
9351
9670
  if (response.ok) {
9352
- setState({
9671
+ put({
9353
9672
  phase: "ready",
9354
9673
  value: response,
9355
9674
  at: Date.now()
@@ -9361,7 +9680,7 @@ window.__ModuleLoader__.load({
9361
9680
  });
9362
9681
  return;
9363
9682
  }
9364
- setState({
9683
+ put({
9365
9684
  phase: "error",
9366
9685
  error: response.error
9367
9686
  });
@@ -9377,7 +9696,7 @@ window.__ModuleLoader__.load({
9377
9696
  }).catch((reason) => {
9378
9697
  if (cancelled) return;
9379
9698
  const message = reason instanceof Error ? reason.message : String(reason);
9380
- setState({
9699
+ put({
9381
9700
  phase: "error",
9382
9701
  error: {
9383
9702
  code: "network",
@@ -9408,7 +9727,7 @@ window.__ModuleLoader__.load({
9408
9727
  options.fact,
9409
9728
  options.report
9410
9729
  ]);
9411
- return state;
9730
+ return resourceViewOf(enabled, current, identity);
9412
9731
  }
9413
9732
  //#endregion
9414
9733
  //#region src/shared/hooks/use-diy-debug.ts
@@ -10455,6 +10774,26 @@ window.__ModuleLoader__.load({
10455
10774
  for (const face of CLIENT_UNITS) registry.register(face);
10456
10775
  }
10457
10776
  //#endregion
10777
+ //#region src/app/units/unit-titles.ts
10778
+ var UNIT_TITLES_OWNER = "dsh-workbench";
10779
+ function unitTitlesOf(manifests) {
10780
+ const zh = {};
10781
+ const en = {};
10782
+ for (const manifest of manifests) {
10783
+ const title = manifest.title;
10784
+ if (title === void 0 || title.zh.trim() === "" || title.en.trim() === "") continue;
10785
+ zh[unitTitleKey(manifest.id)] = title.zh;
10786
+ en[unitTitleKey(manifest.id)] = title.en;
10787
+ }
10788
+ return {
10789
+ unit: UNIT_TITLES_OWNER,
10790
+ messages: {
10791
+ zh,
10792
+ en
10793
+ }
10794
+ };
10795
+ }
10796
+ //#endregion
10458
10797
  //#region src/kernel/client/board-registry.ts
10459
10798
  function createBoardRegistry() {
10460
10799
  const modules = [];
@@ -10530,6 +10869,10 @@ window.__ModuleLoader__.load({
10530
10869
  let installableIds = null;
10531
10870
  let revision = 0;
10532
10871
  let manifestsCache;
10872
+ let titleSignature = "";
10873
+ function titlesOf(manifests) {
10874
+ return manifests.flatMap((manifest) => manifest.title === void 0 ? [] : [`${manifest.id}=${manifest.title.zh}/${manifest.title.en}`]).join("|");
10875
+ }
10533
10876
  function notify() {
10534
10877
  revision += 1;
10535
10878
  for (const listener of [...listeners]) try {
@@ -10609,7 +10952,10 @@ window.__ModuleLoader__.load({
10609
10952
  for (const entry of registrations) {
10610
10953
  const next = known.get(entry.unit);
10611
10954
  if (entry.mounted === null) {
10612
- if (next !== void 0 && attach(entry)) changed = true;
10955
+ if (next !== void 0) {
10956
+ attach(entry);
10957
+ changed = true;
10958
+ }
10613
10959
  continue;
10614
10960
  }
10615
10961
  if (next === void 0) {
@@ -10618,6 +10964,11 @@ window.__ModuleLoader__.load({
10618
10964
  changed = true;
10619
10965
  }
10620
10966
  }
10967
+ const titles = titlesOf(manifests);
10968
+ if (titles !== titleSignature) {
10969
+ titleSignature = titles;
10970
+ changed = true;
10971
+ }
10621
10972
  if (!changed) return;
10622
10973
  manifestsCache = void 0;
10623
10974
  notify();
@@ -11388,6 +11739,7 @@ window.__ModuleLoader__.load({
11388
11739
  const unit = textOf(args, "unit");
11389
11740
  const target = textOf(args, "target");
11390
11741
  const version = textOf(args, "version");
11742
+ const author = textOf(args, "author");
11391
11743
  const rows = [
11392
11744
  {
11393
11745
  label: t("approval.publish.module"),
@@ -11403,7 +11755,7 @@ window.__ModuleLoader__.load({
11403
11755
  },
11404
11756
  {
11405
11757
  label: t("approval.publish.author"),
11406
- value: preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
11758
+ value: author !== "" ? author : preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
11407
11759
  }
11408
11760
  ];
11409
11761
  const market = preview?.market;
@@ -11450,17 +11802,22 @@ window.__ModuleLoader__.load({
11450
11802
  function PublishApprovalSeat({ args, t }) {
11451
11803
  const unit = textOf(args, "unit");
11452
11804
  const version = textOf(args, "version");
11805
+ const author = textOf(args, "author");
11453
11806
  const [preview, setPreview] = (0, react.useState)(() => unit === "" ? null : void 0);
11454
11807
  (0, react.useEffect)(() => {
11455
11808
  if (unit === "") return;
11456
11809
  let live = true;
11457
- readPublishPreview(unit, version).then((response) => {
11810
+ readPublishPreview(unit, version, author).then((response) => {
11458
11811
  if (live) setPreview(response.ok ? response.preview : null);
11459
11812
  });
11460
11813
  return () => {
11461
11814
  live = false;
11462
11815
  };
11463
- }, [unit, version]);
11816
+ }, [
11817
+ unit,
11818
+ version,
11819
+ author
11820
+ ]);
11464
11821
  return (0, react.createElement)(ApprovalPlan, { rows: publishRows(args, preview, t) }, (0, react.createElement)(PublishChangelogSeat, {
11465
11822
  changelog: preview?.changelog,
11466
11823
  t
@@ -12225,10 +12582,10 @@ window.__ModuleLoader__.load({
12225
12582
  //#region src/app/layouts/rightbar/PanelModules.tsx
12226
12583
  function PanelModules({ t, open, onOpenChange, enabledUnits, workspace, refreshToken, manifests, onOpenMarket }) {
12227
12584
  const { capabilities, checkedAt, forceProbe } = useCapabilityMap(refreshToken);
12228
- const [decided, setDecided] = (0, react.useState)(false);
12585
+ const decided = (0, react.useRef)(false);
12229
12586
  (0, react.useEffect)(() => {
12230
- if (!open || decided) return;
12231
- setDecided(true);
12587
+ if (!open || decided.current) return;
12588
+ decided.current = true;
12232
12589
  if (!shouldProbeOnEnter({
12233
12590
  checkedAt,
12234
12591
  now: Date.now(),
@@ -12238,7 +12595,6 @@ window.__ModuleLoader__.load({
12238
12595
  forceProbe();
12239
12596
  }, [
12240
12597
  open,
12241
- decided,
12242
12598
  checkedAt,
12243
12599
  forceProbe
12244
12600
  ]);
@@ -14378,7 +14734,7 @@ window.__ModuleLoader__.load({
14378
14734
  ...face.messages === void 0 ? {} : { messages: face.messages }
14379
14735
  }));
14380
14736
  }
14381
- 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_9dzu9_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_9dzu9_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_9dzu9_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_9dzu9_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_9dzu9_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_9dzu9_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_9dzu9_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_9dzu9_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_9dzu9_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_9dzu9_39 ._marketVersion_9dzu9_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_9dzu9_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_9dzu9_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_9dzu9_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_9dzu9_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_9dzu9_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_9dzu9_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_9dzu9_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_9dzu9_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_9dzu9_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_9dzu9_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_9dzu9_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_9dzu9_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_9dzu9_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_9dzu9_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_9dzu9_175 ._marketSectionTitle_9dzu9_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_9dzu9_175 ._marketName_9dzu9_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_9dzu9_175 ._marketIcon_9dzu9_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_9dzu9_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_9dzu9_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_9dzu9_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_9dzu9_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_9dzu9_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_9dzu9_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_9dzu9_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_9dzu9_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_9dzu9_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_9dzu9_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_9dzu9_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_9dzu9_263[hidden] {\n display: none;\n}\n\n._marketTabs_9dzu9_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_9dzu9_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_9dzu9_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_9dzu9_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_9dzu9_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_9dzu9_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_9dzu9_312 svg {\n animation: _wb-spin_9dzu9_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_9dzu9_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_9dzu9_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_9dzu9_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_9dzu9_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_9dzu9_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_9dzu9_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_9dzu9_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_9dzu9_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_9dzu9_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_9dzu9_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_9dzu9_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_9dzu9_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_9dzu9_395 {\n flex: none;\n}\n\n._discoverSearch_9dzu9_399 {\n box-sizing: border-box;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_9dzu9_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_9dzu9_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_9dzu9_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_9dzu9_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_9dzu9_399 {\n grid-area: search;\n }\n\n ._discoverSort_9dzu9_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_9dzu9_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_9dzu9_440 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_9dzu9_447 {\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_9dzu9_456 {\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_9dzu9_456:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_9dzu9_470 {\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_9dzu9_482 {\n object-fit: contain;\n}\n\n._discoverMain_9dzu9_486 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_9dzu9_494 {\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_9dzu9_502 {\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_9dzu9_502::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_9dzu9_502:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_9dzu9_502: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_9dzu9_533 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_9dzu9_539 {\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_9dzu9_548 {\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_9dzu9_555 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_9dzu9_561 {\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_9dzu9_570 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_9dzu9_575 {\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_9dzu9_584 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_9dzu9_575 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_9dzu9_594 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_9dzu9_600 {\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_9dzu9_600:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_9dzu9_600: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_9dzu9_623 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_9dzu9_627 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_9dzu9_633 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_9dzu9_639 {\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_9dzu9_646 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_9dzu9_653 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_9dzu9_658 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_9dzu9_663 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_9dzu9_668 {\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_9dzu9_674 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_9dzu9_681 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_9dzu9_687 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_9dzu9_692 {\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_9dzu9_702 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_9dzu9_708 {\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_9dzu9_716 {\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_9dzu9_725 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_9dzu9_732 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_9dzu9_732:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_9dzu9_742 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_9dzu9_750 {\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_9dzu9_758 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_9dzu9_763 {\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_9dzu9_772 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverNotice_9dzu9_778 {\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_9dzu9_778 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_9dzu9_796 {\n align-self: center;\n}\n\n._discoverDialog_9dzu9_800 {\n width: min(var(--wb-len-480), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_9dzu9_804 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_9dzu9_810 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_9dzu9_818 {\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._discoverSourceError_9dzu9_826 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_9dzu9_832 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_9dzu9_838 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_9dzu9_843 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_9dzu9_849 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_9dzu9_854 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_9dzu9_860 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_9dzu9_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_9dzu9_470._discoverSkeletonFill_9dzu9_860 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_9dzu9_869 {\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_9dzu9_876 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_9dzu9_880 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_9dzu9_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_9dzu9_860 {\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*/";
14737
+ 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_bnt61_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_bnt61_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_bnt61_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_bnt61_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_bnt61_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_bnt61_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_bnt61_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_bnt61_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_bnt61_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_bnt61_39 ._marketVersion_bnt61_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_bnt61_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_bnt61_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_bnt61_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_bnt61_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_bnt61_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_bnt61_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_bnt61_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_bnt61_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_bnt61_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_bnt61_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_bnt61_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_bnt61_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_bnt61_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_bnt61_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_bnt61_175 ._marketSectionTitle_bnt61_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_bnt61_175 ._marketName_bnt61_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_bnt61_175 ._marketIcon_bnt61_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_bnt61_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_bnt61_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_bnt61_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_bnt61_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_bnt61_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_bnt61_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_bnt61_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_bnt61_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_bnt61_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_bnt61_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_bnt61_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_bnt61_263[hidden] {\n display: none;\n}\n\n._marketTabs_bnt61_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_bnt61_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_bnt61_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_bnt61_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_bnt61_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_bnt61_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_bnt61_312 svg {\n animation: _wb-spin_bnt61_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_bnt61_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_bnt61_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_bnt61_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_bnt61_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_bnt61_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_bnt61_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_bnt61_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_bnt61_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_bnt61_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_bnt61_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_bnt61_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_bnt61_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_bnt61_395 {\n flex: none;\n}\n\n._discoverSearch_bnt61_399 {\n box-sizing: border-box;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_bnt61_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_bnt61_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_bnt61_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_bnt61_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_bnt61_399 {\n grid-area: search;\n }\n\n ._discoverSort_bnt61_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_bnt61_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_bnt61_440 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_bnt61_447 {\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_bnt61_456 {\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_bnt61_456:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_bnt61_470 {\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_bnt61_482 {\n object-fit: contain;\n}\n\n._discoverMain_bnt61_486 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_bnt61_494 {\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_bnt61_502 {\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_bnt61_502::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_bnt61_502:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_bnt61_502: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_bnt61_533 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_bnt61_539 {\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_bnt61_548 {\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_bnt61_555 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_bnt61_561 {\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_bnt61_570 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_bnt61_575 {\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_bnt61_584 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_bnt61_575 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_bnt61_594 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_bnt61_600 {\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_bnt61_600:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_bnt61_600: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_bnt61_623 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_bnt61_627 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_bnt61_633 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_bnt61_639 {\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_bnt61_646 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_bnt61_653 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_bnt61_658 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_bnt61_663 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_bnt61_668 {\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_bnt61_674 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_bnt61_681 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_bnt61_687 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_bnt61_692 {\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_bnt61_702 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_bnt61_708 {\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_bnt61_716 {\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_bnt61_725 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_bnt61_732 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_bnt61_732:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_bnt61_742 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_bnt61_750 {\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_bnt61_758 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_bnt61_763 {\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_bnt61_772 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_bnt61_778 {\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_bnt61_787 {\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_bnt61_787 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_bnt61_805 {\n align-self: center;\n}\n\n._discoverDialog_bnt61_809 {\n width: min(var(--wb-len-480), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_bnt61_813 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_bnt61_819 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_bnt61_827 {\n display: flex;\n flex-wrap: wrap;\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._discoverSourceCurrent_bnt61_836 {\n flex: none;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceLoading_bnt61_843 {\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_bnt61_853 {\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_bnt61_853 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_bnt61_867 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_bnt61_873 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_bnt61_879 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_bnt61_884 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_bnt61_890 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_bnt61_895 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_bnt61_901 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_bnt61_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_bnt61_470._discoverSkeletonFill_bnt61_901 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_bnt61_910 {\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_bnt61_917 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_bnt61_921 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_bnt61_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_bnt61_901 {\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*/";
14382
14738
  function workbenchCss() {
14383
14739
  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}`;
14384
14740
  }
@@ -14430,7 +14786,7 @@ window.__ModuleLoader__.load({
14430
14786
  let disposeDictionary;
14431
14787
  const publish = () => {
14432
14788
  disposeDictionary?.();
14433
- const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, messagesOf(units.all()));
14789
+ const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, [unitTitlesOf(units.manifests()), ...messagesOf(units.all())]);
14434
14790
  for (const problem of problems) console.warn(`[dsh-workbench] 套件 ${problem.unit} 的文案没并进来(只有它少了这几句):${problem.reason}`);
14435
14791
  disposeDictionary = ctx.locale.register(LOCALE_NS, merged);
14436
14792
  };