@dsh-workbench/core 1.0.1 → 1.1.1

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 (39) hide show
  1. package/README.md +3 -0
  2. package/client.js +849 -460
  3. package/dist/client/client.body.js +849 -460
  4. package/dist/client/index.js +720 -331
  5. package/dist/host/index.js +448 -41
  6. package/dist/types/app/layouts/market/discover-search.d.ts +8 -0
  7. package/dist/types/app/layouts/market/discover-sources-dialog.d.ts +4 -0
  8. package/dist/types/app/layouts/market/discover-states.d.ts +3 -0
  9. package/dist/types/app/layouts/market/use-add-module.d.ts +0 -1
  10. package/dist/types/app/layouts/market/use-discover.d.ts +1 -0
  11. package/dist/types/app/layouts/rightbar/MarketView.d.ts +3 -1
  12. package/dist/types/app/layouts/rightbar/market-names.d.ts +8 -0
  13. package/dist/types/app/layouts/rightbar/market-row-types.d.ts +11 -3
  14. package/dist/types/app/layouts/rightbar/market-rows.d.ts +6 -4
  15. package/dist/types/app/layouts/rightbar/market-view-text.d.ts +4 -3
  16. package/dist/types/app/units/unit-titles.d.ts +3 -0
  17. package/dist/types/kernel/contract/bundle-install.d.ts +1 -1
  18. package/dist/types/kernel/contract/market-index.d.ts +1 -1
  19. package/dist/types/modules/panels/model/diy-tools.d.ts +1 -1
  20. package/dist/types/modules/panels/model/market-dispatch.d.ts +8 -0
  21. package/dist/types/modules/panels/model/market-follow-up.d.ts +16 -0
  22. package/dist/types/modules/panels/model/market-sources-act.d.ts +2 -0
  23. package/dist/types/modules/panels/model/market-types.d.ts +5 -0
  24. package/dist/types/modules/panels/model/market.d.ts +2 -0
  25. package/dist/types/modules/panels/model/publish-preview-routes.d.ts +1 -1
  26. package/dist/types/shared/api/host/diy-publish-preview.d.ts +11 -0
  27. package/dist/types/shared/api/host/follow-up-dismiss.d.ts +2 -0
  28. package/dist/types/shared/api/host/migrate-workbench.d.ts +20 -0
  29. package/dist/types/shared/api/host/migration-follow-up.d.ts +12 -0
  30. package/dist/types/shared/hooks/market-queries.d.ts +3 -2
  31. package/dist/types/shared/hooks/resource-view.d.ts +14 -0
  32. package/dist/types/shared/hooks/use-api-resource.d.ts +3 -7
  33. package/package.json +3 -3
  34. package/skills/workbench-module-diy/FAMILY.md +1 -1
  35. package/skills/workbench-module-diy/REVIEW.md +2 -2
  36. package/skills/workbench-module-diy/SKILL.md +1 -0
  37. package/skills/workbench-module-diy/TOOLS.md +1 -1
  38. package/skills/workbench-module-diy/WIRING.md +3 -1
  39. package/skills/workbench-module-diy/WRITES.md +1 -1
@@ -1,4 +1,4 @@
1
- import { Button, Checkbox, CodeBlock, DiffBlock, DisclosureRow, HoverCard, IconCheckCircleFillRegular, IconCheckOutlineRegular, IconChevronDownOutlineRegular, IconCodeOutlineRegular, IconCordisPluginOutlineRegular, IconDownloadOutlineRegular, IconEditOutlineRegular, IconEllipsisOutlineRegular, IconFlatListOutlineRegular, IconFolderCloseRegular, IconFolderOpenRegular, IconInfoOutlineRegular, IconLinkOutlineRegular, IconNewChatOutlineRegular, IconPanelLeftOutlineRegular, IconPauseOutlineRegular, IconPinFillRegular, IconPlayOutlineRegular, IconPlusOutlineRegular, IconRefreshOutlineRegular, IconRightUpOutlineRegular, IconSearchOutlineRegular, IconSettingsOutlineRegular, IconSlidersTwoOutlineRegular, IconStopFillRegular, IconTrashOutlineRegular, IconWarningOutlineRegular, Input, MarkdownText, Menu, Modal, Pill, PluginArtworkDefault, RiskConfirmation, SegmentedTabs, StateDot, Switch, Tag, TextShimmer, Tooltip, useAnchoredPosition, useDismissOnOutsidePointer, writeClipboard } from "@deepseek-ai/dsh-client-ui-primitives";
1
+ import { Button, Checkbox, CodeBlock, DiffBlock, DisclosureRow, HoverCard, IconCheckCircleFillRegular, IconCheckOutlineRegular, IconChevronDownOutlineRegular, IconCloseOutlineRegular, IconCodeOutlineRegular, IconCordisPluginOutlineRegular, IconDownloadOutlineRegular, IconEditOutlineRegular, IconEllipsisOutlineRegular, IconFlatListOutlineRegular, IconFolderCloseRegular, IconFolderOpenRegular, IconInfoOutlineRegular, IconLinkOutlineRegular, IconNewChatOutlineRegular, IconPanelLeftOutlineRegular, IconPauseOutlineRegular, IconPinFillRegular, IconPlayOutlineRegular, IconPlusOutlineRegular, IconRefreshOutlineRegular, IconRightUpOutlineRegular, IconSearchOutlineRegular, IconSettingsOutlineRegular, IconSlidersTwoOutlineRegular, IconStopFillRegular, IconTrashOutlineRegular, IconWarningOutlineRegular, Input, MarkdownText, Menu, Modal, Pill, PluginArtworkDefault, RiskConfirmation, SegmentedTabs, StateDot, Switch, Tag, TextShimmer, Tooltip, useAnchoredPosition, useDismissOnOutsidePointer, writeClipboard } from "@deepseek-ai/dsh-client-ui-primitives";
2
2
  import { Fragment, createElement, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
3
3
  //#region \0rolldown/runtime.js
4
4
  var __create = Object.create;
@@ -2726,6 +2726,32 @@ var SIDEBAR_EDITION_RESOURCE = "sidebarEdition";
2726
2726
  //#region ../shared/dist/contract/protocol/unit-manifests.js
2727
2727
  var UNIT_MANIFESTS_ROUTE = "unit-manifests";
2728
2728
  //#endregion
2729
+ //#region ../shared/dist/contract/unit.js
2730
+ /**
2731
+ * 外壳替模块名合成的词表键:模块自己不必写名字键,名字直接从清单里的 title 注册进来。
2732
+ * @param unit 单元 id。
2733
+ * @returns 该单元名字在词表里的键。
2734
+ */
2735
+ function unitTitleKey(unit) {
2736
+ return `dsh-workbench.unit.${unit}.title`;
2737
+ }
2738
+ /**
2739
+ * 模块声明的全部环境需要(没写就是空表)。
2740
+ * @param manifest 模块清单。
2741
+ * @returns need 列表。
2742
+ */
2743
+ function needsOf(manifest) {
2744
+ return manifest.needs ?? [];
2745
+ }
2746
+ /**
2747
+ * 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
2748
+ * @param manifest 模块清单。
2749
+ * @returns extension / lib 的 need 列表。
2750
+ */
2751
+ function supplyNeedsOf(manifest) {
2752
+ return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
2753
+ }
2754
+ //#endregion
2729
2755
  //#region ../shared/dist/contract/needs.js
2730
2756
  function text(value) {
2731
2757
  return typeof value === "string" ? value.trim() : "";
@@ -2788,24 +2814,6 @@ Object.freeze({
2788
2814
  })
2789
2815
  });
2790
2816
  //#endregion
2791
- //#region ../shared/dist/contract/unit.js
2792
- /**
2793
- * 模块声明的全部环境需要(没写就是空表)。
2794
- * @param manifest 模块清单。
2795
- * @returns need 列表。
2796
- */
2797
- function needsOf(manifest) {
2798
- return manifest.needs ?? [];
2799
- }
2800
- /**
2801
- * 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
2802
- * @param manifest 模块清单。
2803
- * @returns extension / lib 的 need 列表。
2804
- */
2805
- function supplyNeedsOf(manifest) {
2806
- return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
2807
- }
2808
- //#endregion
2809
2817
  //#region ../shared/dist/i18n/settings.js
2810
2818
  /** 「工作台设置」这一组的词条:配置同步 / 新建工作台。 */
2811
2819
  var zhSettings = {
@@ -3074,15 +3082,14 @@ var en = {
3074
3082
  "panels.market.update": "Update",
3075
3083
  "panels.market.swapSlow": "Not swapped yet — maybe a slow or failed download. Press Update again; if it stays like this, restart dsh.",
3076
3084
  "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.",
3077
- "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}.",
3085
+ "panels.market.updateNoChange": "Update failed: still {from}. The newest on the registry is {latest} — press Update again.",
3078
3086
  "panels.market.updateUnknownVersion": "(unknown)",
3079
- "panels.market.updateGone": "Not updated: after the run the module cannot be read from disk.",
3080
- "panels.market.updateRestored": "Not updated: the new version was missing from disk, so {version} was put back.",
3087
+ "panels.market.updateGone": "Update failed: the module is gone after the update.",
3088
+ "panels.market.updateRestored": "Update failed: the new version could not be found after the update, so {version} was put back.",
3081
3089
  "panels.market.updateBehind": "Installed {installed}, but the newest on the registry is {latest} — not the latest; you can update once more.",
3082
- "panels.market.selfUpdateFailed": "Self-update failed: {reason}",
3090
+ "panels.market.selfUpdateFailed": "Workbench update failed: {reason}",
3083
3091
  "panels.market.selfUpdateUnknown": "the outside process left no reason (see ~/.dsh/workbench/self-update.log)",
3084
- "panels.market.selfUpdateRolledBack": "Not swapped; rolled back to {version}.",
3085
- "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).",
3092
+ "panels.market.selfUpdateRolledBack": "Workbench update failed; rolled back to {version}.",
3086
3093
  "panels.market.uninstall": "Uninstall",
3087
3094
  "panels.market.uninstallLabel": "Uninstall {name}",
3088
3095
  "panels.market.installing": "Installing…",
@@ -3104,9 +3111,27 @@ var en = {
3104
3111
  "panels.market.empty": "No modules available",
3105
3112
  "panels.market.sectionPlugins": "Installed opencli plugins",
3106
3113
  "panels.market.moduleOutdated": "update available",
3114
+ "panels.market.updateNeedsWorkbench": "this version needs a newer workbench first",
3115
+ "panels.market.updateIncompatible": "the new version does not match this workbench, so it cannot be installed now",
3107
3116
  "panels.market.moduleRefused": "This module does not match this workbench, so it cannot be used for now.",
3108
3117
  "panels.market.moduleRestartHint": "restart dsh once to bring it up",
3109
3118
  "panels.market.pendingRestart": "restart required",
3119
+ "panels.market.pendingFollowUp": "old data to migrate",
3120
+ "panels.market.migrationHint": "old sessions and projects are not merged yet",
3121
+ "panels.market.migrateAction": "Migrate old data",
3122
+ "panels.market.migrating": "Migrating…",
3123
+ "panels.market.migrateConfirmTitle": "Migrate old data?",
3124
+ "panels.market.migrateConfirmDetail": "Quit dsh web / Desktop first. Only missing data is added; nothing is overwritten.",
3125
+ "panels.market.migrateConfirmAck": "I've quit dsh web / Desktop",
3126
+ "panels.market.migrateConfirmYes": "Start migration",
3127
+ "panels.market.migrateDone": "Migration complete: {added} projects added; restart the workbench and dsh web to see them.",
3128
+ "panels.market.dismissFollowUp": "Don't remind me",
3129
+ "panels.market.dismissing": "Dismissing…",
3130
+ "panels.market.dismissFollowUpTitle": "Stop reminding about this?",
3131
+ "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.",
3132
+ "panels.market.dismissFollowUpAck": "I understand the old data won't appear automatically",
3133
+ "panels.market.dismissFollowUpYes": "Don't remind me",
3134
+ "panels.market.dismissed": "No longer reminded; old data stays in the old directory and can still be migrated with dsh-workbench migrate.",
3110
3135
  "panels.market.workbenchName": "Workbench",
3111
3136
  "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.",
3112
3137
  "panels.market.restartNeeded": "The new version is installed — restart once to pick it up.",
@@ -3190,7 +3215,7 @@ var en = {
3190
3215
  "panels.market.add.exampleTitle": "Examples",
3191
3216
  "panels.market.add.exampleFill": "Fill in an example",
3192
3217
  "panels.market.add.registryLabel": "Source",
3193
- "panels.market.add.registryProfile": "This profile's registry",
3218
+ "panels.market.add.registryProfile": "This workbench's registry",
3194
3219
  "panels.market.add.registryPnpm": "pnpm's own registry",
3195
3220
  "panels.market.add.check": "Check",
3196
3221
  "panels.market.add.checking": "Checking…",
@@ -3211,14 +3236,19 @@ var en = {
3211
3236
  "panels.market.tabs": "The two faces of the module market",
3212
3237
  "panels.tab.discover": "Discover",
3213
3238
  "panels.discover.loading": "Reading the index",
3239
+ "panels.discover.slowHint": "Slow to load: finish any authorization prompt, or switch sources.",
3214
3240
  "panels.discover.lead": "Browse modules from an index source; install and go.",
3215
3241
  "panels.discover.addSource": "Add",
3216
3242
  "panels.discover.addingSource": "Adding…",
3217
3243
  "panels.discover.addFirstSource": "Add index source",
3218
3244
  "panels.discover.removeSource": "Remove",
3219
3245
  "panels.discover.removeSourceNamed": "Remove {url}",
3246
+ "panels.discover.useSource": "Use",
3247
+ "panels.discover.useSourceNamed": "Use {label}",
3248
+ "panels.discover.sourceCurrent": "In use",
3220
3249
  "panels.discover.refresh": "Refresh",
3221
3250
  "panels.discover.search": "Search modules",
3251
+ "panels.discover.clearSearch": "Clear search",
3222
3252
  "panels.discover.all": "All",
3223
3253
  "panels.discover.sourceLabel": "Name",
3224
3254
  "panels.discover.sourceKind": "Type",
@@ -3228,8 +3258,8 @@ var en = {
3228
3258
  "panels.discover.sourcePlaceholder": "https://example.com/index.json or git@git.example.com:wb/market.git",
3229
3259
  "panels.discover.sourceRef": "Branch",
3230
3260
  "panels.discover.sourcePath": "Index file",
3231
- "panels.discover.sourceLocal": "Local clone (optional)",
3232
- "panels.discover.sourceLocalHint": "Leave empty to clone into ~/.dsh/workbench/market-index/.",
3261
+ "panels.discover.sourceLocal": "Local copy folder (optional)",
3262
+ "panels.discover.sourceLocalHint": "Leave empty to keep it in ~/.dsh/workbench/market-index/.",
3233
3263
  "panels.discover.save": "Save and refresh",
3234
3264
  "panels.discover.cancel": "Cancel",
3235
3265
  "panels.discover.retry": "Retry",
@@ -3242,9 +3272,9 @@ var en = {
3242
3272
  "panels.discover.missingIndex": "This repository has no {path} yet.",
3243
3273
  "panels.discover.initTitle": "Initialize this repository as a module market index?",
3244
3274
  "panels.discover.initCta": "Initialize market index",
3245
- "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.",
3275
+ "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.",
3246
3276
  "panels.discover.initBranch": "Branch",
3247
- "panels.discover.initBranchHint": "The index and artifacts go to this branch; an empty repository gets it created.",
3277
+ "panels.discover.initBranchHint": "The index and build files go to this branch; an empty repository gets it created.",
3248
3278
  "panels.discover.initBranchBad": "Use only letters, digits, dots, underscores, slashes, or dashes in a branch name.",
3249
3279
  "panels.discover.initOk": "Initialize",
3250
3280
  "panels.discover.initBusy": "Initializing…",
@@ -3348,11 +3378,11 @@ var en = {
3348
3378
  "panels.market.add.doneApplied": "Installed and live.",
3349
3379
  "panels.market.add.doneRestart": "Installed — restart once to pick it up.",
3350
3380
  "panels.market.add.restartWhy": "Why this needs a restart: {reason}",
3351
- "panels.market.add.restartWhy.no-hmr": "this configuration only applies changes at startup (hot reload is off)",
3381
+ "panels.market.add.restartWhy.no-hmr": "this configuration is only read at startup, so a restart is needed",
3352
3382
  "panels.market.add.restartWhy.package-moved": "an installed package now resolves to another directory, or the change replaced something dsh itself provides",
3353
3383
  "panels.market.add.restartWhy.host-module": "the change reaches modules dsh itself loaded",
3354
- "panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin running outside the plugin list",
3355
- "panels.market.add.restartWhy.module-comparison": "dsh could not compare loaded plugins with their files",
3384
+ "panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin that is running but not on the install list",
3385
+ "panels.market.add.restartWhy.module-comparison": "dsh could not confirm that the running plugin is the copy installed on this machine",
3356
3386
  "panels.market.add.cancelled": "Cancelled.",
3357
3387
  "panels.market.add.failed": "Didn't work: {reason}",
3358
3388
  "panels.market.add.removed": "It has been removed.",
@@ -3362,10 +3392,10 @@ var en = {
3362
3392
  "panels.market.add.removedRestart": "Removed — restart once to finish.",
3363
3393
  "panels.market.add.remove": "Remove it",
3364
3394
  "panels.market.add.problem.invalidSpec": "That is not a spec we accept: it cannot be empty or start with a dash.",
3365
- "panels.market.add.problem.alreadyInstalled": "That package is already in the profile (add @version to switch versions).",
3395
+ "panels.market.add.problem.alreadyInstalled": "That package is already in this workbench (add @version to switch versions).",
3366
3396
  "panels.market.add.problem.notFound": "No such package on that source. Try another name or version.",
3367
3397
  "panels.market.add.problem.notAPackage": "There is no package at that location. Pick a folder that contains a package.json.",
3368
- "panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (it is missing the dsh wiring declaration).",
3398
+ "panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (dsh cannot find what to load inside it).",
3369
3399
  "panels.market.add.problem.network": "The source is unreachable. Check the network and retry.",
3370
3400
  "panels.market.add.problem.unknown": "The check did not pass (reason unknown). Open the install details for the raw output, or retry.",
3371
3401
  "panels.market.add.reason.invalidSpec": "the spec is not accepted",
@@ -3373,7 +3403,7 @@ var en = {
3373
3403
  "panels.market.add.reason.notBundle": "it is not a dsh plugin package",
3374
3404
  "panels.market.add.reason.notRemovable": "it ships with the installation and cannot be removed",
3375
3405
  "panels.market.add.reason.bundleInUse": "something is still using it",
3376
- "panels.market.add.reason.stopProfile": "this configuration has no hot reload, so stop the process first",
3406
+ "panels.market.add.reason.stopProfile": "this configuration needs a restart, so stop the workbench first",
3377
3407
  "panels.market.add.reason.staleApproval": "the scripts to allow changed — start over",
3378
3408
  "panels.market.add.reason.operationError": "pnpm failed (see the install output)",
3379
3409
  "panels.market.add.reason.buildBlocked": "pnpm blocked install scripts",
@@ -3403,8 +3433,8 @@ var en = {
3403
3433
  "blocker.forbidden.titleGeneric": "No access",
3404
3434
  "blocker.forbidden.hint": "You are signed in, but this project/repo is not permitted for your account.",
3405
3435
  "blocker.forbidden.open": "Open permissions page",
3406
- "blocker.timeout.hint": "The headless browser may not have started; retrying usually helps.",
3407
- "blocker.exec.hint": "Make sure opencli is installed and on PATH (which opencli).",
3436
+ "blocker.timeout.hint": "The background browser may not have started; retrying usually helps.",
3437
+ "blocker.exec.hint": "Make sure opencli is installed and runs from your terminal (which opencli).",
3408
3438
  "blocker.unknown.title": "Something went wrong",
3409
3439
  "panels.reading": "Reading the panel setup…",
3410
3440
  "panels.cardBroken": "This module will not render: {unit} ({reason})",
@@ -3418,7 +3448,7 @@ var en = {
3418
3448
  "env.elapsed": "Waiting {seconds}s",
3419
3449
  "env.stepFailed.install": "install failed",
3420
3450
  "env.stepFailed.path": "installed but not found",
3421
- "env.stepFailed.shell": "no shell channel",
3451
+ "env.stepFailed.shell": "cannot reach the command line",
3422
3452
  "env.toolchain.ok": "Looks good",
3423
3453
  "env.toolchain.warn": "Almost ready",
3424
3454
  "env.opencli.ok": "Ready",
@@ -3435,10 +3465,10 @@ var en = {
3435
3465
  "env.fix.title": "How to fix it",
3436
3466
  "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.",
3437
3467
  "env.fix.whyPath": "The background tool is installed, but this environment cannot find it — usually a PATH or shell-session issue.",
3438
- "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.",
3468
+ "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.",
3439
3469
  "env.fix.step": "Run this in a terminal, then hit Retry:",
3440
3470
  "env.fix.stepPath": "Open a new terminal window (or make sure npm’s global bin directory is on PATH), then hit Retry.",
3441
- "env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the shell channel is not wired up.",
3471
+ "env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the workbench still cannot reach the command line.",
3442
3472
  "env.fix.permission": "Permission denied: rerun with sudo, or point npm’s global directory at your home.",
3443
3473
  "env.fix.network": "Network unreachable: check your network or proxy, then retry.",
3444
3474
  "env.fix.details": "Details (for troubleshooting)",
@@ -3467,9 +3497,9 @@ var en = {
3467
3497
  "env.warm.done": "Ready ({n} sites)",
3468
3498
  "env.warm.short": "Could not sign in early this time — nothing breaks; the first read fills it in",
3469
3499
  "env.unit.failed": "This module cannot start",
3470
- "env.unit.failedHint": "It failed while assembling itself; other modules are unaffected.",
3471
- "env.unit.unchecked": "Cannot check: no shell channel",
3472
- "env.unit.uncheckedHint": "The module is not the problem — the shell channel is unavailable. Restart the workbench.",
3500
+ "env.unit.failedHint": "It failed while starting up; other modules are unaffected.",
3501
+ "env.unit.unchecked": "Cannot check: no command line",
3502
+ "env.unit.uncheckedHint": "The module is not the problem — the workbench cannot reach the command line. Restart the workbench.",
3473
3503
  "adapterSet.not-configured": "No adapter set configured; using the default.",
3474
3504
  "adapterSet.no-profile": "No profile found, so the adapter set cannot load; using the default.",
3475
3505
  "adapterSet.malformed": "An adapter set must be a package name (for example @acme/adapters-set); using the default.",
@@ -3512,7 +3542,7 @@ var en = {
3512
3542
  "sidebarEdition.official": "Official",
3513
3543
  "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.",
3514
3544
  "sidebarEdition.custom": "Custom",
3515
- "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.",
3545
+ "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.",
3516
3546
  "sidebarEdition.saving": "Configuring…",
3517
3547
  "sidebarEdition.reloadRequired": "Saved. Reload the page to apply — no workbench restart needed.",
3518
3548
  "sidebarEdition.reload": "Reload page",
@@ -3541,25 +3571,25 @@ var en = {
3541
3571
  "record.act.halt": "Halt",
3542
3572
  "approval.record.site": "Site",
3543
3573
  "approval.record.what": "Records",
3544
- "approval.record.lands": "Lands in",
3574
+ "approval.record.lands": "Saves to",
3545
3575
  "approval.record.noUrl": "no site given (this call gets refused)",
3546
3576
  "approval.record.oneAction": "one action",
3547
3577
  "approval.record.noSwitch": "it will not switch you back (the leftbar footer shows the state)",
3548
- "approval.longTask.what": "Stops",
3549
- "approval.longTask.signal": "stopping only sends an interrupt signal — how the platform-side run finishes is up to the module",
3578
+ "approval.longTask.what": "Task to stop",
3579
+ "approval.longTask.signal": "stopping only sends an interrupt signal — wrapping up the run is up to the module",
3550
3580
  "approval.publish.module": "Module",
3551
3581
  "approval.publish.target": "Target",
3552
3582
  "approval.publish.version": "Version",
3553
3583
  "approval.publish.author": "Author",
3554
- "approval.publish.authorMissing": "unsigned (commits use the local git identity)",
3584
+ "approval.publish.authorMissing": "unsigned",
3555
3585
  "approval.publish.registry": "Registry",
3556
3586
  "approval.publish.repo": "Repository",
3557
3587
  "approval.publish.branch": "Branch",
3558
3588
  "approval.publish.defaultBranch": "default branch",
3559
- "approval.publish.artifacts": "Artifacts",
3589
+ "approval.publish.artifacts": "Build files",
3560
3590
  "approval.publish.index": "Index",
3561
3591
  "approval.publish.commits": "Commits",
3562
- "approval.publish.twoCommits": "artifacts + market.json in 2 commits, one push",
3592
+ "approval.publish.twoCommits": "build files + market.json in 2 commits, one push",
3563
3593
  "approval.publish.reading": "Reading…",
3564
3594
  "approval.publish.changelog": "Changelog for {version}",
3565
3595
  "approval.publish.changelogMissing": "No changelog entry for {version}; publishing will be blocked",
@@ -3707,15 +3737,14 @@ var dictionaries = {
3707
3737
  "panels.market.update": "更新",
3708
3738
  "panels.market.swapSlow": "还没换上:可能网慢或没装上。再点一次「更新」;一直这样就把 dsh 重启一遍。",
3709
3739
  "panels.market.removeSlow": "还没卸掉:可能网慢或卸载没走完。等一下再看;一直这样就把 dsh 重启一遍。",
3710
- "panels.market.updateNoChange": "没换成:点下去是 {from},跑完盘上还是这一版;源上最新是 {latest}。",
3740
+ "panels.market.updateNoChange": "更新失败:还是 {from};源上最新是 {latest},可以再点一次「更新」。",
3711
3741
  "panels.market.updateUnknownVersion": "(问不到)",
3712
- "panels.market.updateGone": "没换成:更新跑完盘上读不到这个模块。",
3713
- "panels.market.updateRestored": "没换成:盘上已经读不到新版本,已把 {version} 装回去。",
3742
+ "panels.market.updateGone": "更新失败:更新后找不到这个模块。",
3743
+ "panels.market.updateRestored": "更新失败:更新后找不到新版本,已把 {version} 装回去。",
3714
3744
  "panels.market.updateBehind": "装上了 {installed},但源上最新是 {latest} —— 没更到最新,可以再点一次。",
3715
- "panels.market.selfUpdateFailed": "自更新没成:{reason}",
3745
+ "panels.market.selfUpdateFailed": "工作台更新失败:{reason}",
3716
3746
  "panels.market.selfUpdateUnknown": "外部进程没留下原因(看 ~/.dsh/workbench/self-update.log)",
3717
- "panels.market.selfUpdateRolledBack": "没换成,已回滚到 {version}。",
3718
- "panels.market.selfUpdateNeedsMigrate": "工作台已更新。旧会话 / 项目不会自动并:先退出所有 dsh,再运行 dsh-workbench migrate(--force 可补并)。",
3747
+ "panels.market.selfUpdateRolledBack": "工作台更新失败,已回滚到 {version}。",
3719
3748
  "panels.market.uninstall": "卸载",
3720
3749
  "panels.market.uninstallLabel": "卸载 {name}",
3721
3750
  "panels.market.installing": "正在安装…",
@@ -3737,9 +3766,27 @@ var dictionaries = {
3737
3766
  "panels.market.empty": "暂无可用模块",
3738
3767
  "panels.market.sectionPlugins": "已安装 opencli 插件",
3739
3768
  "panels.market.moduleOutdated": "有新版",
3769
+ "panels.market.updateNeedsWorkbench": "新版本要先把工作台升级才能用",
3770
+ "panels.market.updateIncompatible": "新版本和当前的工作台不匹配,暂时不能更新",
3740
3771
  "panels.market.moduleRefused": "模块版本与工作台不匹配,暂时无法使用",
3741
3772
  "panels.market.moduleRestartHint": "重启后生效",
3742
3773
  "panels.market.pendingRestart": "重启后生效",
3774
+ "panels.market.pendingFollowUp": "旧数据待迁移",
3775
+ "panels.market.migrationHint": "旧会话和项目还没搬过来",
3776
+ "panels.market.migrateAction": "迁移旧数据",
3777
+ "panels.market.migrating": "正在迁移…",
3778
+ "panels.market.migrateConfirmTitle": "迁移旧数据?",
3779
+ "panels.market.migrateConfirmDetail": "先退出 dsh web / Desktop。迁移只补缺、不覆盖;旧目录保留。",
3780
+ "panels.market.migrateConfirmAck": "我已经退出 dsh web / Desktop",
3781
+ "panels.market.migrateConfirmYes": "开始迁移",
3782
+ "panels.market.migrateDone": "迁移完成:补了 {added} 个项目;重启工作台和 dsh web 后出现。",
3783
+ "panels.market.dismissFollowUp": "不再提醒",
3784
+ "panels.market.dismissing": "正在收起…",
3785
+ "panels.market.dismissFollowUpTitle": "不再提醒这件事?",
3786
+ "panels.market.dismissFollowUpDetail": "提示会从模块市场收起,但不会迁移或删除旧数据。旧会话和项目仍留在旧目录,新版本里看不到;以后需要时仍可运行 dsh-workbench migrate。",
3787
+ "panels.market.dismissFollowUpAck": "我知道旧数据不会自动出现",
3788
+ "panels.market.dismissFollowUpYes": "不再提醒",
3789
+ "panels.market.dismissed": "已不再提醒;旧数据仍在旧目录,需要时仍可运行 dsh-workbench migrate。",
3743
3790
  "panels.market.workbenchName": "工作台",
3744
3791
  "panels.market.pluginBroken": "这份插件装坏了:认不出它是什么。可以先卸载,再让 agent 按包名重装一次。",
3745
3792
  "panels.market.restartNeeded": "新版装好了,重启一次才生效。",
@@ -3823,7 +3870,7 @@ var dictionaries = {
3823
3870
  "panels.market.add.exampleTitle": "示例",
3824
3871
  "panels.market.add.exampleFill": "填入示例",
3825
3872
  "panels.market.add.registryLabel": "安装源",
3826
- "panels.market.add.registryProfile": "这个 profile 配的源",
3873
+ "panels.market.add.registryProfile": "这份工作台配的源",
3827
3874
  "panels.market.add.registryPnpm": "pnpm 自己配的源",
3828
3875
  "panels.market.add.check": "预检",
3829
3876
  "panels.market.add.checking": "正在预检…",
@@ -3844,14 +3891,19 @@ var dictionaries = {
3844
3891
  "panels.market.tabs": "模块市场的两个面",
3845
3892
  "panels.tab.discover": "发现",
3846
3893
  "panels.discover.loading": "正在读取索引",
3894
+ "panels.discover.slowHint": "读取较慢:如有授权提示,先完成它,或换一个索引源。",
3847
3895
  "panels.discover.lead": "从索引源浏览模块;装上就能用。",
3848
3896
  "panels.discover.addSource": "添加",
3849
3897
  "panels.discover.addingSource": "正在添加…",
3850
3898
  "panels.discover.addFirstSource": "添加索引源",
3851
3899
  "panels.discover.removeSource": "移除",
3852
3900
  "panels.discover.removeSourceNamed": "移除 {url}",
3901
+ "panels.discover.useSource": "使用",
3902
+ "panels.discover.useSourceNamed": "使用 {label}",
3903
+ "panels.discover.sourceCurrent": "当前使用",
3853
3904
  "panels.discover.refresh": "刷新",
3854
3905
  "panels.discover.search": "搜索模块",
3906
+ "panels.discover.clearSearch": "清除搜索",
3855
3907
  "panels.discover.all": "全部",
3856
3908
  "panels.discover.sourceLabel": "名字",
3857
3909
  "panels.discover.sourceKind": "类型",
@@ -3861,8 +3913,8 @@ var dictionaries = {
3861
3913
  "panels.discover.sourcePlaceholder": "https://example.com/index.json 或 git@git.example.com:wb/market.git",
3862
3914
  "panels.discover.sourceRef": "分支",
3863
3915
  "panels.discover.sourcePath": "索引文件",
3864
- "panels.discover.sourceLocal": "本地 clone(可选)",
3865
- "panels.discover.sourceLocalHint": "不填就 clone 到 ~/.dsh/workbench/market-index/。",
3916
+ "panels.discover.sourceLocal": "本地副本目录(可选)",
3917
+ "panels.discover.sourceLocalHint": "不填就放到 ~/.dsh/workbench/market-index/。",
3866
3918
  "panels.discover.save": "保存并刷新",
3867
3919
  "panels.discover.cancel": "取消",
3868
3920
  "panels.discover.retry": "重试",
@@ -3875,9 +3927,9 @@ var dictionaries = {
3875
3927
  "panels.discover.missingIndex": "仓库里还没有索引文件 {path}",
3876
3928
  "panels.discover.initTitle": "把这个仓库初始化成模块市场索引?",
3877
3929
  "panels.discover.initCta": "初始化成市场索引",
3878
- "panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把产物提交到 packages/<unit>/。仓库的写权限归它的所有者。",
3930
+ "panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把打包好的文件提交到 packages/<unit>/。仓库的写权限归它的所有者。",
3879
3931
  "panels.discover.initBranch": "分支",
3880
- "panels.discover.initBranchHint": "索引与产物都发到这个分支;空仓库会新建它。",
3932
+ "panels.discover.initBranchHint": "索引和打包文件都发到这个分支;空仓库会新建它。",
3881
3933
  "panels.discover.initBranchBad": "分支名只能用字母、数字、点、下划线、斜杠或短横线",
3882
3934
  "panels.discover.initOk": "初始化",
3883
3935
  "panels.discover.initBusy": "正在初始化…",
@@ -3981,11 +4033,11 @@ var dictionaries = {
3981
4033
  "panels.market.add.doneApplied": "装好了,已经生效。",
3982
4034
  "panels.market.add.doneRestart": "装好了,重启一次才生效。",
3983
4035
  "panels.market.add.restartWhy": "为什么这一版要重启:{reason}",
3984
- "panels.market.add.restartWhy.no-hmr": "这个配置只在启动时应用改动(没开热更新)",
4036
+ "panels.market.add.restartWhy.no-hmr": "这份配置只在启动时读一次,改了得重启",
3985
4037
  "panels.market.add.restartWhy.package-moved": "某个已经装着的包换到了新的目录,或者这一下换掉了 dsh 自己提供的那份",
3986
4038
  "panels.market.add.restartWhy.host-module": "这一下动到了 dsh 自己加载的模块",
3987
- "panels.market.add.restartWhy.unmanaged-plugin": "这一下动到了插件清单之外正在跑的插件",
3988
- "panels.market.add.restartWhy.module-comparison": "dsh 没能把已加载的插件与盘上的文件对上",
4039
+ "panels.market.add.restartWhy.unmanaged-plugin": "这一下动到了没登记过、正在运行的插件",
4040
+ "panels.market.add.restartWhy.module-comparison": "dsh 没法确认正在跑的插件就是这台机器上装好的那一份",
3989
4041
  "panels.market.add.cancelled": "已取消。",
3990
4042
  "panels.market.add.failed": "没成功:{reason}",
3991
4043
  "panels.market.add.removed": "已经移除了。",
@@ -3995,10 +4047,10 @@ var dictionaries = {
3995
4047
  "panels.market.add.removedRestart": "卸掉了,重启一次才彻底生效。",
3996
4048
  "panels.market.add.remove": "移除它",
3997
4049
  "panels.market.add.problem.invalidSpec": "这个写法不认:不能是空的,也不能以横杠开头。",
3998
- "panels.market.add.problem.alreadyInstalled": "这个包已经在 profile 里了(要换版本请带上 @版本)。",
4050
+ "panels.market.add.problem.alreadyInstalled": "这个包已经在这份工作台里了(要换版本请带上 @版本)。",
3999
4051
  "panels.market.add.problem.notFound": "源上没有这个包。换个包名或版本再试。",
4000
4052
  "panels.market.add.problem.notAPackage": "这个位置没有包。选一个包含 package.json 的目录。",
4001
- "panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh 插件包(缺 dsh 的接线声明)。",
4053
+ "panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh 插件包(dsh 在里面找不到该加载什么)。",
4002
4054
  "panels.market.add.problem.network": "源连不上。检查网络后重试。",
4003
4055
  "panels.market.add.problem.unknown": "预检没通过(原因未知)。展开安装详情看原始输出,或重试。",
4004
4056
  "panels.market.add.reason.invalidSpec": "写法不认",
@@ -4006,7 +4058,7 @@ var dictionaries = {
4006
4058
  "panels.market.add.reason.notBundle": "它不是一个 dsh 插件包",
4007
4059
  "panels.market.add.reason.notRemovable": "它是安装自带的组合包,不能卸",
4008
4060
  "panels.market.add.reason.bundleInUse": "还有东西在用它,卸不掉",
4009
- "panels.market.add.reason.stopProfile": "这个配置没开热更新,得先停掉进程",
4061
+ "panels.market.add.reason.stopProfile": "这份配置改了要重启,得先停掉工作台",
4010
4062
  "panels.market.add.reason.staleApproval": "要允许的安装脚本已经变了,重新来一次",
4011
4063
  "panels.market.add.reason.operationError": "pnpm 执行出错(详情见安装输出)",
4012
4064
  "panels.market.add.reason.buildBlocked": "pnpm 拦下了安装脚本",
@@ -4029,15 +4081,15 @@ var dictionaries = {
4029
4081
  "blocker.market.open": "去模块市场",
4030
4082
  "blocker.login.title": "需要登录 {platform}",
4031
4083
  "blocker.login.titleGeneric": "需要登录",
4032
- "blocker.login.hint": "工作台用你的浏览器登录态;登录一次就行,之后不用再登。",
4084
+ "blocker.login.hint": "工作台借你浏览器里的登录状态;登录一次就行,之后不用再登。",
4033
4085
  "blocker.login.go": "去登录",
4034
4086
  "blocker.login.manual": "在终端执行该插件的登录命令(见插件的文档),按提示完成登录后重试。",
4035
4087
  "blocker.forbidden.title": "没有权限访问 {platform}",
4036
4088
  "blocker.forbidden.titleGeneric": "没有权限",
4037
4089
  "blocker.forbidden.hint": "账号已登录,但没有这个项目/仓库的权限;申请之后再试。",
4038
4090
  "blocker.forbidden.open": "打开权限页",
4039
- "blocker.timeout.hint": "无头浏览器可能没起来,重试一次通常就好。",
4040
- "blocker.exec.hint": "确认 opencli 已安装且在 PATH 里(which opencli)。",
4091
+ "blocker.timeout.hint": "后台浏览器没起来,重试一次通常就好。",
4092
+ "blocker.exec.hint": "确认 opencli 已经装好、在终端里能直接运行(which opencli)。",
4041
4093
  "blocker.unknown.title": "出了点问题",
4042
4094
  "panels.reading": "正在读取面板配置…",
4043
4095
  "panels.cardBroken": "这个模块起不来:{unit}({reason})",
@@ -4051,7 +4103,7 @@ var dictionaries = {
4051
4103
  "env.elapsed": "已等待 {seconds} 秒",
4052
4104
  "env.stepFailed.install": "装不上",
4053
4105
  "env.stepFailed.path": "装了但还找不到",
4054
- "env.stepFailed.shell": "执行通道不可用",
4106
+ "env.stepFailed.shell": "连不上命令行",
4055
4107
  "env.toolchain.ok": "正常",
4056
4108
  "env.toolchain.warn": "还没完全准备好",
4057
4109
  "env.opencli.ok": "已就绪",
@@ -4068,10 +4120,10 @@ var dictionaries = {
4068
4120
  "env.fix.title": "怎么解决",
4069
4121
  "env.fix.why": "工作台用它自己那份后台工具(与你在终端里那套分开装,互不影响),这台机器上还没装好它。",
4070
4122
  "env.fix.whyPath": "后台工具装上了,但当前环境还找不到它 —— 通常是 PATH 或终端会话的问题。",
4071
- "env.fix.whyShell": "工作台拿不到执行命令的通道,所以取不了数据 —— 这一步你装不了,需要有人处理后台环境。",
4123
+ "env.fix.whyShell": "工作台拿不到这台机器的命令行,所以取不了数据 —— 这一步你装不了,需要有人处理后台环境。",
4072
4124
  "env.fix.step": "在终端里运行下面这条命令,装好之后点「重试」:",
4073
4125
  "env.fix.stepPath": "新开一个终端窗口(或确认 npm 的全局 bin 目录在 PATH 里),然后点「重试」。",
4074
- "env.fix.stepShell": "重启一次工作台(或 dsh);如果反复出现,说明执行通道没配好。",
4126
+ "env.fix.stepShell": "重启一次工作台(或 dsh);如果反复出现,说明工作台还是拿不到命令行。",
4075
4127
  "env.fix.permission": "权限不够:在命令前加 sudo 重跑,或先把 npm 的全局目录配到你的用户目录。",
4076
4128
  "env.fix.network": "网络不通:检查网络或代理设置后重试。",
4077
4129
  "env.fix.details": "详细输出(排障用)",
@@ -4100,9 +4152,9 @@ var dictionaries = {
4100
4152
  "env.warm.done": "已就绪({n} 个站点)",
4101
4153
  "env.warm.short": "这次没提前连上 —— 不影响用,第一次取数会自己补",
4102
4154
  "env.unit.failed": "这个模块起不来",
4103
- "env.unit.failedHint": "它自己装配时报了错,别的模块不受影响。",
4104
- "env.unit.unchecked": "检测不了:拿不到执行通道",
4105
- "env.unit.uncheckedHint": "不是这个模块的问题,是执行通道不可用 —— 重启一次工作台再试。",
4155
+ "env.unit.failedHint": "它自己启动时报了错,别的模块不受影响。",
4156
+ "env.unit.unchecked": "检测不了:拿不到命令行",
4157
+ "env.unit.uncheckedHint": "不是这个模块的问题,是工作台拿不到命令行 —— 重启一次工作台再试。",
4106
4158
  "adapterSet.not-configured": "没配置适配器集合,用默认的。",
4107
4159
  "adapterSet.no-profile": "找不到 profile,没法加载适配器集合;先用默认的。",
4108
4160
  "adapterSet.malformed": "适配器集合要写包名(如 @acme/adapters-set);先用默认的。",
@@ -4145,7 +4197,7 @@ var dictionaries = {
4145
4197
  "sidebarEdition.official": "官方",
4146
4198
  "sidebarEdition.officialHint": "跟 dsh 官方一致、最稳:搜索、视图选项、显示更多、归档、添加工作区都齐,升级也不等我们适配。想省心就选它。",
4147
4199
  "sidebarEdition.custom": "自定义",
4148
- "sidebarEdition.customHint": "为多项目工作流做的:项目下拉一屏一个项目,会话按最近更新排,两端淡出、跑马灯、工坊 DIY 新会话。项目多时更顺手。",
4200
+ "sidebarEdition.customHint": "为多项目工作流做的:项目下拉一屏一个项目,会话按最近更新排,名字自动滚动、两侧渐隐,工坊 DIY 新会话。项目多时更顺手。",
4149
4201
  "sidebarEdition.saving": "配置中…",
4150
4202
  "sidebarEdition.reloadRequired": "已写入。刷新页面后生效(不用重启工作台)。",
4151
4203
  "sidebarEdition.reload": "刷新页面",
@@ -4174,25 +4226,25 @@ var dictionaries = {
4174
4226
  "record.act.halt": "停",
4175
4227
  "approval.record.site": "站点",
4176
4228
  "approval.record.what": "录制功能",
4177
- "approval.record.lands": "落点",
4229
+ "approval.record.lands": "保存到",
4178
4230
  "approval.record.noUrl": "没给站点地址(这次会被当场拒)",
4179
4231
  "approval.record.oneAction": "一次操作",
4180
4232
  "approval.record.noSwitch": "录完不会替你切回来(左栏底部会亮一条状态)",
4181
- "approval.longTask.what": "要停的那一趟",
4182
- "approval.longTask.signal": "停了只是让工作台发出中断信号 —— 平台侧那趟活儿的收尾看模块自己",
4233
+ "approval.longTask.what": "要停的那次任务",
4234
+ "approval.longTask.signal": "停了只是让工作台发出中断信号 —— 这次任务怎么收尾由模块自己负责",
4183
4235
  "approval.publish.module": "模块",
4184
4236
  "approval.publish.target": "目标",
4185
4237
  "approval.publish.version": "版本",
4186
4238
  "approval.publish.author": "作者",
4187
- "approval.publish.authorMissing": "未署名(提交用本机 git 身份)",
4239
+ "approval.publish.authorMissing": "未署名",
4188
4240
  "approval.publish.registry": "源",
4189
4241
  "approval.publish.repo": "仓库",
4190
4242
  "approval.publish.branch": "分支",
4191
4243
  "approval.publish.defaultBranch": "默认分支",
4192
- "approval.publish.artifacts": "产物",
4244
+ "approval.publish.artifacts": "打包文件",
4193
4245
  "approval.publish.index": "索引",
4194
4246
  "approval.publish.commits": "提交",
4195
- "approval.publish.twoCommits": "产物 + market.json 两个 commit,一次 push",
4247
+ "approval.publish.twoCommits": "打包文件 + market.json 两次提交,一次推送",
4196
4248
  "approval.publish.reading": "读取中…",
4197
4249
  "approval.publish.changelog": "{version} 的更新日志",
4198
4250
  "approval.publish.changelogMissing": "这一版还没有更新日志({version}),发布会被拦下",
@@ -4950,7 +5002,11 @@ function sharedRows(manifests, capabilities) {
4950
5002
  id: `${bucket.kind}:${bucket.name}`,
4951
5003
  kind: bucket.kind,
4952
5004
  label: bucket.label,
4953
- usedByKeys: bucket.users.map((unit) => byId.get(unit)?.card?.titleKey ?? unit),
5005
+ usedByKeys: bucket.users.map((unit) => {
5006
+ const manifest = byId.get(unit);
5007
+ if (manifest === void 0) return unit;
5008
+ return manifest.titleKey;
5009
+ }),
4954
5010
  state,
4955
5011
  canUpdate: state === "outdated" || state === "unsatisfied",
4956
5012
  ...version === void 0 ? {} : { version }
@@ -4968,6 +5024,7 @@ var MARKET_STATE_KEY = {
4968
5024
  broken: "panels.market.broken",
4969
5025
  outdated: "panels.market.moduleOutdated",
4970
5026
  "pending-restart": "panels.market.pendingRestart",
5027
+ "pending-followup": "panels.market.pendingFollowUp",
4971
5028
  missing: "panels.market.missing",
4972
5029
  unchecked: "panels.market.unchecked",
4973
5030
  unknown: "panels.market.unchecked"
@@ -4980,6 +5037,7 @@ var MARKET_DOT = {
4980
5037
  broken: "error",
4981
5038
  outdated: "warning",
4982
5039
  "pending-restart": "warning",
5040
+ "pending-followup": "warning",
4983
5041
  missing: "idle",
4984
5042
  unchecked: "idle",
4985
5043
  unknown: "idle"
@@ -5004,35 +5062,32 @@ function refusalReasons(host, client) {
5004
5062
  if (reported.length > 0) return reported;
5005
5063
  return [...new Set(client ?? [])];
5006
5064
  }
5007
- function mergeTitles(known, manifests) {
5008
- let next = null;
5009
- for (const manifest of manifests) {
5010
- const titleKey = manifest.card?.titleKey;
5011
- if (titleKey === void 0 || known.has(manifest.id)) continue;
5012
- next ??= new Map(known);
5013
- next.set(manifest.id, titleKey);
5014
- }
5015
- return next ?? known;
5065
+ function updateBlockHintOf(block) {
5066
+ return block === "needs-workbench" ? "panels.market.updateNeedsWorkbench" : "panels.market.updateIncompatible";
5016
5067
  }
5017
5068
  function installedIdSet(installed) {
5018
5069
  if (installed === void 0) return null;
5019
5070
  return new Set(installed.map((item) => item.unit));
5020
5071
  }
5021
- function installedRows(modules, manifests, listed, known, defaults = /* @__PURE__ */ new Set(), changed = {}) {
5022
- const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.card?.titleKey]));
5072
+ function installedRows(modules, manifests, listed, names, defaults = /* @__PURE__ */ new Set(), changed = {}) {
5073
+ const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.titleKey]));
5023
5074
  const rows = [];
5024
5075
  for (const module of modules) {
5025
5076
  if (listed.has(module.unit)) continue;
5026
5077
  const latest = module.local === true ? void 0 : module.latest;
5027
5078
  const outdated = latest !== void 0 && latest !== module.installed;
5079
+ const blocked = outdated ? module.latestBlocked : void 0;
5028
5080
  const loaded = titles.has(module.unit);
5029
5081
  const refused = refusalReasons(module.refused, module.clientRefused);
5030
5082
  const pending = !loaded && refused.length === 0;
5083
+ const titleKey = titles.get(module.unit);
5084
+ const remembered = titleKey === void 0 ? names?.get(module.unit) : void 0;
5031
5085
  rows.push({
5032
5086
  id: module.unit,
5033
- titleKey: titles.get(module.unit) ?? known?.get(module.unit) ?? module.pkg,
5087
+ titleKey: titleKey ?? module.unit,
5088
+ ...remembered === void 0 ? {} : { label: remembered },
5034
5089
  state: outdated ? "outdated" : refused.length > 0 ? "unusable" : pending ? "inactive" : "installed",
5035
- ...pending ? { hint: "panels.market.moduleRestartHint" } : {},
5090
+ ...pending ? { hint: "panels.market.moduleRestartHint" } : blocked === void 0 ? {} : { hint: updateBlockHintOf(blocked) },
5036
5091
  ...refused.length === 0 ? {} : { note: {
5037
5092
  key: "panels.market.moduleRefused",
5038
5093
  params: {}
@@ -5040,7 +5095,7 @@ function installedRows(modules, manifests, listed, known, defaults = /* @__PURE_
5040
5095
  ...module.local === true ? { local: true } : {},
5041
5096
  pkg: module.pkg,
5042
5097
  canInstall: false,
5043
- canUpdate: outdated,
5098
+ canUpdate: outdated && blocked === void 0,
5044
5099
  canUninstall: true,
5045
5100
  version: {
5046
5101
  installed: module.installed,
@@ -5048,7 +5103,8 @@ function installedRows(modules, manifests, listed, known, defaults = /* @__PURE_
5048
5103
  },
5049
5104
  ...outdated ? { moduleUpdate: {
5050
5105
  installed: module.installed,
5051
- latest
5106
+ latest,
5107
+ ...blocked === void 0 ? {} : { blocked }
5052
5108
  } } : {},
5053
5109
  defaultShown: defaults.has(module.unit),
5054
5110
  defaultChanged: changed[module.unit] ?? 0
@@ -5061,11 +5117,14 @@ function marketSwitchLocked(row) {
5061
5117
  return SWITCH_LOCKED.has(row.state);
5062
5118
  }
5063
5119
  function marketActions$1(row) {
5064
- if (row.workbench === true) return row.canUpdate ? ["update-workbench"] : [];
5120
+ if (row.workbench === true) {
5121
+ if (row.followUp !== void 0 && row.state === "pending-followup") return row.followUp.hard ? ["migrate-workbench"] : ["migrate-workbench", "dismiss-followup"];
5122
+ return row.canUpdate ? ["update-workbench"] : [];
5123
+ }
5065
5124
  if (row.plugin === true) return [...row.canUpdate ? ["update-plugin"] : [], ...row.canUninstall ? ["uninstall-plugin"] : []];
5066
5125
  return [
5067
5126
  ...row.canInstall ? ["install"] : [],
5068
- ...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : ["update-bundle"],
5127
+ ...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : row.moduleUpdate.blocked === void 0 ? ["update-bundle"] : [],
5069
5128
  ...row.canUninstall ? [row.pkg === void 0 ? "uninstall" : "remove-bundle"] : []
5070
5129
  ];
5071
5130
  }
@@ -5143,7 +5202,7 @@ function liveManifests(manifests, capabilities, installed) {
5143
5202
  return manifests.filter((manifest) => !gone.has(manifest.id));
5144
5203
  }
5145
5204
  function marketHasUpdates(rows, shared = []) {
5146
- return rows.some((row) => row.state === "outdated" || row.moduleUpdate !== void 0) || shared.some((row) => row.state === "outdated" || row.state === "unsatisfied");
5205
+ 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");
5147
5206
  }
5148
5207
  function marketUpdatesOf(modules) {
5149
5208
  if (modules === null) return {};
@@ -5153,6 +5212,7 @@ function marketUpdatesOf(modules) {
5153
5212
  next[module.unit] = {
5154
5213
  installed: module.installed,
5155
5214
  ...local || module.latest === void 0 ? {} : { latest: module.latest },
5215
+ ...local || module.latest === void 0 || module.latestBlocked === void 0 ? {} : { blocked: module.latestBlocked },
5156
5216
  ...local ? { local: true } : {}
5157
5217
  };
5158
5218
  }
@@ -5191,17 +5251,19 @@ function marketRows(manifests, capabilities, updates = {}, defaults = /* @__PURE
5191
5251
  const reAdopt = capability?.released === true && !installDeclared;
5192
5252
  const moduleUpdate = entry === void 0 || entry.latest === void 0 || entry.latest === entry.installed ? void 0 : {
5193
5253
  installed: entry.installed,
5194
- latest: entry.latest
5254
+ latest: entry.latest,
5255
+ ...entry.blocked === void 0 ? {} : { blocked: entry.blocked }
5195
5256
  };
5196
5257
  const shown = moduleUpdate === void 0 ? state : "outdated";
5258
+ const hint = moduleUpdate?.blocked === void 0 ? shown === "unknown" || shown === "unchecked" ? "panels.market.uncheckedHint" : void 0 : updateBlockHintOf(moduleUpdate.blocked);
5197
5259
  rows.push({
5198
5260
  id: manifest.id,
5199
- titleKey: manifest.card?.titleKey ?? manifest.id,
5261
+ titleKey: manifest.titleKey,
5200
5262
  state: shown,
5201
5263
  canInstall: state !== "installed" && (install || reAdopt),
5202
5264
  canUpdate: onMachine && isOutdated(capability),
5203
5265
  canUninstall: onMachine,
5204
- ...shown === "unknown" || shown === "unchecked" ? { hint: "panels.market.uncheckedHint" } : {},
5266
+ ...hint === void 0 ? {} : { hint },
5205
5267
  ...entry === void 0 ? {} : { version: {
5206
5268
  installed: entry.installed,
5207
5269
  ...entry.latest === void 0 ? {} : { latest: entry.latest }
@@ -5266,11 +5328,14 @@ function workbenchRow(version) {
5266
5328
  installed: version.installed,
5267
5329
  latest
5268
5330
  } : void 0;
5331
+ const stale = !local && version.running !== void 0 && version.running !== version.installed;
5332
+ const followUp = version.followUp;
5333
+ const followUpState = !stale && followUp !== void 0;
5269
5334
  return {
5270
5335
  id: WORKBENCH_ROW_ID,
5271
5336
  titleKey: WORKBENCH_TITLE_KEY,
5272
5337
  workbench: true,
5273
- state: !local && version.running !== void 0 && version.running !== version.installed ? "pending-restart" : update === void 0 ? "installed" : "outdated",
5338
+ state: stale ? "pending-restart" : followUpState ? "pending-followup" : update === void 0 ? "installed" : "outdated",
5274
5339
  canInstall: false,
5275
5340
  canUpdate: update !== void 0,
5276
5341
  canUninstall: false,
@@ -5280,6 +5345,8 @@ function workbenchRow(version) {
5280
5345
  ...latest === void 0 ? {} : { latest }
5281
5346
  },
5282
5347
  ...update === void 0 ? {} : { moduleUpdate: update },
5348
+ ...followUp === void 0 ? {} : { followUp },
5349
+ ...followUpState ? { hint: "panels.market.migrationHint" } : {},
5283
5350
  pkg: version.pkg
5284
5351
  };
5285
5352
  }
@@ -5287,6 +5354,7 @@ function workbenchRow(version) {
5287
5354
  //#region src/app/layouts/rightbar/market-hint.ts
5288
5355
  var PROBLEM_KEY = "panels.market.hasProblem";
5289
5356
  var RESTART_KEY = "panels.market.pendingRestart";
5357
+ var FOLLOWUP_KEY = "panels.market.pendingFollowUp";
5290
5358
  var UNKNOWN_KEY = "panels.market.unchecked";
5291
5359
  var UPDATES_KEY = "panels.market.hasNew";
5292
5360
  function isProblem(row) {
@@ -5317,12 +5385,14 @@ function marketHintOf(input) {
5317
5385
  ];
5318
5386
  const problem = rows.some(isProblem);
5319
5387
  const restart = rows.some(isRestart) || awaitsRestart(input.manifests, installed);
5388
+ const followUp = rows.some((row) => row.state === "pending-followup");
5320
5389
  const rosterRead = input.modules !== null;
5321
5390
  const unknown = rows.some((row) => isUnknown(row, rosterRead));
5322
5391
  const updates = marketHasUpdates(rows, sharedRows(marketable, input.capabilities));
5323
5392
  const more = [];
5324
5393
  if (problem) {
5325
5394
  if (restart) more.push(RESTART_KEY);
5395
+ if (followUp) more.push(FOLLOWUP_KEY);
5326
5396
  if (unknown) more.push(UNKNOWN_KEY);
5327
5397
  if (updates) more.push(UPDATES_KEY);
5328
5398
  return {
@@ -5332,6 +5402,7 @@ function marketHintOf(input) {
5332
5402
  };
5333
5403
  }
5334
5404
  if (restart) {
5405
+ if (followUp) more.push(FOLLOWUP_KEY);
5335
5406
  if (unknown) more.push(UNKNOWN_KEY);
5336
5407
  if (updates) more.push(UPDATES_KEY);
5337
5408
  return {
@@ -5340,6 +5411,15 @@ function marketHintOf(input) {
5340
5411
  ...more.length === 0 ? {} : { moreKeys: more }
5341
5412
  };
5342
5413
  }
5414
+ if (followUp) {
5415
+ if (unknown) more.push(UNKNOWN_KEY);
5416
+ if (updates) more.push(UPDATES_KEY);
5417
+ return {
5418
+ labelKey: FOLLOWUP_KEY,
5419
+ tone: "warning",
5420
+ ...more.length === 0 ? {} : { moreKeys: more }
5421
+ };
5422
+ }
5343
5423
  if (unknown) {
5344
5424
  if (updates) more.push(UPDATES_KEY);
5345
5425
  return {
@@ -5635,114 +5715,121 @@ function useMarketTransient(input) {
5635
5715
  };
5636
5716
  }
5637
5717
  var MarketPage_module_default = {
5638
- marketList: "_marketList_9dzu9_1",
5639
- marketRow: "_marketRow_9dzu9_10",
5640
- marketIcon: "_marketIcon_9dzu9_20",
5641
- marketMain: "_marketMain_9dzu9_32",
5642
- marketName: "_marketName_9dzu9_39",
5643
- marketStatus: "_marketStatus_9dzu9_48",
5644
- marketStateText: "_marketStateText_9dzu9_58",
5645
- marketSep: "_marketSep_9dzu9_62",
5646
- marketReason: "_marketReason_9dzu9_66",
5647
- marketVersion: "_marketVersion_9dzu9_72",
5648
- marketLocalTag: "_marketLocalTag_9dzu9_94",
5649
- marketEnd: "_marketEnd_9dzu9_105",
5650
- marketSwitchSeat: "_marketSwitchSeat_9dzu9_112",
5651
- marketActions: "_marketActions_9dzu9_125",
5652
- marketUpdateAction: "_marketUpdateAction_9dzu9_131",
5653
- marketSelfDivider: "_marketSelfDivider_9dzu9_137",
5654
- marketSection: "_marketSection_9dzu9_143",
5655
- marketSectionHead: "_marketSectionHead_9dzu9_150",
5656
- marketSectionIcon: "_marketSectionIcon_9dzu9_156",
5657
- marketSectionTitle: "_marketSectionTitle_9dzu9_163",
5658
- marketSectionCount: "_marketSectionCount_9dzu9_169",
5659
- marketSectionQuiet: "_marketSectionQuiet_9dzu9_175",
5660
- marketProgress: "_marketProgress_9dzu9_188",
5661
- marketNote: "_marketNote_9dzu9_198",
5662
- marketFailure: "_marketFailure_9dzu9_205",
5663
- marketEmpty: "_marketEmpty_9dzu9_212",
5664
- marketPage: "_marketPage_9dzu9_217",
5665
- marketPageHead: "_marketPageHead_9dzu9_235",
5666
- marketPageTitle: "_marketPageTitle_9dzu9_243",
5667
- marketPageIntro: "_marketPageIntro_9dzu9_248",
5668
- marketPageTools: "_marketPageTools_9dzu9_254",
5669
- marketPanel: "_marketPanel_9dzu9_263",
5670
- marketTabs: "_marketTabs_9dzu9_273",
5671
- marketTabList: "_marketTabList_9dzu9_278",
5672
- marketIconButton: "_marketIconButton_9dzu9_283",
5673
- marketIconWrap: "_marketIconWrap_9dzu9_308",
5674
- marketIconButtonSpinning: "_marketIconButtonSpinning_9dzu9_312",
5675
- "wb-spin": "_wb-spin_9dzu9_1",
5676
- marketAddButton: "_marketAddButton_9dzu9_316",
5677
- marketEmptyTitle: "_marketEmptyTitle_9dzu9_333",
5678
- discoverPage: "_discoverPage_9dzu9_347",
5679
- discoverBar: "_discoverBar_9dzu9_354",
5680
- discoverTools: "_discoverTools_9dzu9_361",
5681
- discoverMarket: "_discoverMarket_9dzu9_367",
5682
- discoverMarketButton: "_discoverMarketButton_9dzu9_372",
5683
- discoverMarketName: "_discoverMarketName_9dzu9_379",
5684
- discoverLabels: "_discoverLabels_9dzu9_385",
5685
- discoverSort: "_discoverSort_9dzu9_390",
5686
- discoverRefresh: "_discoverRefresh_9dzu9_395",
5687
- discoverSearch: "_discoverSearch_9dzu9_399",
5688
- discoverChips: "_discoverChips_9dzu9_440",
5689
- discoverList: "_discoverList_9dzu9_447",
5690
- discoverCard: "_discoverCard_9dzu9_456",
5691
- discoverArtwork: "_discoverArtwork_9dzu9_470",
5692
- discoverArtworkImage: "_discoverArtworkImage_9dzu9_482",
5693
- discoverMain: "_discoverMain_9dzu9_486",
5694
- discoverTitleRow: "_discoverTitleRow_9dzu9_494",
5695
- discoverCardOpen: "_discoverCardOpen_9dzu9_502",
5696
- discoverStrong: "_discoverStrong_9dzu9_533",
5697
- discoverDesc: "_discoverDesc_9dzu9_539",
5698
- discoverMeta: "_discoverMeta_9dzu9_548",
5699
- discoverMuted: "_discoverMuted_9dzu9_555",
5700
- discoverEnd: "_discoverEnd_9dzu9_561",
5701
- discoverBlocked: "_discoverBlocked_9dzu9_570",
5702
- discoverEmpty: "_discoverEmpty_9dzu9_575",
5703
- discoverEmptyTitle: "_discoverEmptyTitle_9dzu9_584",
5704
- discoverDetail: "_discoverDetail_9dzu9_594",
5705
- discoverCrumb: "_discoverCrumb_9dzu9_600",
5706
- discoverCrumbIcon: "_discoverCrumbIcon_9dzu9_623",
5707
- discoverDetailHead: "_discoverDetailHead_9dzu9_627",
5708
- discoverDetailTitle: "_discoverDetailTitle_9dzu9_633",
5709
- discoverDetailText: "_discoverDetailText_9dzu9_639",
5710
- discoverDetailPanel: "_discoverDetailPanel_9dzu9_646",
5711
- discoverDetailTabs: "_discoverDetailTabs_9dzu9_653",
5712
- discoverDetailTabList: "_discoverDetailTabList_9dzu9_658",
5713
- discoverDocBody: "_discoverDocBody_9dzu9_663",
5714
- discoverDocNotice: "_discoverDocNotice_9dzu9_668",
5715
- discoverSection: "_discoverSection_9dzu9_674",
5716
- discoverSectionTitle: "_discoverSectionTitle_9dzu9_681",
5717
- discoverFacts: "_discoverFacts_9dzu9_687",
5718
- discoverFactRow: "_discoverFactRow_9dzu9_692",
5719
- discoverFactKind: "_discoverFactKind_9dzu9_702",
5720
- discoverFactValue: "_discoverFactValue_9dzu9_708",
5721
- discoverCode: "_discoverCode_9dzu9_716",
5722
- discoverTags: "_discoverTags_9dzu9_725",
5723
- discoverLink: "_discoverLink_9dzu9_732",
5724
- discoverVersions: "_discoverVersions_9dzu9_742",
5725
- discoverVersionRow: "_discoverVersionRow_9dzu9_750",
5726
- discoverVersionName: "_discoverVersionName_9dzu9_758",
5727
- discoverError: "_discoverError_9dzu9_763",
5728
- discoverFailure: "_discoverFailure_9dzu9_772",
5729
- discoverNotice: "_discoverNotice_9dzu9_778",
5730
- discoverMore: "_discoverMore_9dzu9_796",
5731
- discoverDialog: "_discoverDialog_9dzu9_800",
5732
- discoverDialogBody: "_discoverDialogBody_9dzu9_804",
5733
- discoverSourceList: "_discoverSourceList_9dzu9_810",
5734
- discoverSourceRow: "_discoverSourceRow_9dzu9_818",
5735
- discoverSourceError: "_discoverSourceError_9dzu9_826",
5736
- discoverSourceForm: "_discoverSourceForm_9dzu9_832",
5737
- discoverGrow: "_discoverGrow_9dzu9_838",
5738
- discoverField: "_discoverField_9dzu9_843",
5739
- discoverFieldLabel: "_discoverFieldLabel_9dzu9_849",
5740
- discoverConfirmHead: "_discoverConfirmHead_9dzu9_854",
5741
- discoverSkeletonFill: "_discoverSkeletonFill_9dzu9_860",
5742
- "wb-skeleton": "_wb-skeleton_9dzu9_1",
5743
- discoverSkeletonBar: "_discoverSkeletonBar_9dzu9_869",
5744
- discoverSkeletonTitle: "_discoverSkeletonTitle_9dzu9_876",
5745
- discoverSkeletonDesc: "_discoverSkeletonDesc_9dzu9_880"
5718
+ marketList: "_marketList_1idrk_1",
5719
+ marketRow: "_marketRow_1idrk_10",
5720
+ marketIcon: "_marketIcon_1idrk_20",
5721
+ marketMain: "_marketMain_1idrk_32",
5722
+ marketName: "_marketName_1idrk_39",
5723
+ marketStatus: "_marketStatus_1idrk_48",
5724
+ marketStateText: "_marketStateText_1idrk_58",
5725
+ marketSep: "_marketSep_1idrk_62",
5726
+ marketReason: "_marketReason_1idrk_66",
5727
+ marketVersion: "_marketVersion_1idrk_72",
5728
+ marketLocalTag: "_marketLocalTag_1idrk_94",
5729
+ marketEnd: "_marketEnd_1idrk_105",
5730
+ marketSwitchSeat: "_marketSwitchSeat_1idrk_112",
5731
+ marketActions: "_marketActions_1idrk_125",
5732
+ marketUpdateAction: "_marketUpdateAction_1idrk_131",
5733
+ marketSelfDivider: "_marketSelfDivider_1idrk_137",
5734
+ marketSection: "_marketSection_1idrk_143",
5735
+ marketSectionHead: "_marketSectionHead_1idrk_150",
5736
+ marketSectionIcon: "_marketSectionIcon_1idrk_156",
5737
+ marketSectionTitle: "_marketSectionTitle_1idrk_163",
5738
+ marketSectionCount: "_marketSectionCount_1idrk_169",
5739
+ marketSectionQuiet: "_marketSectionQuiet_1idrk_175",
5740
+ marketProgress: "_marketProgress_1idrk_188",
5741
+ marketNote: "_marketNote_1idrk_198",
5742
+ marketFailure: "_marketFailure_1idrk_205",
5743
+ marketEmpty: "_marketEmpty_1idrk_212",
5744
+ marketPage: "_marketPage_1idrk_217",
5745
+ marketPageHead: "_marketPageHead_1idrk_235",
5746
+ marketPageTitle: "_marketPageTitle_1idrk_243",
5747
+ marketPageIntro: "_marketPageIntro_1idrk_248",
5748
+ marketPageTools: "_marketPageTools_1idrk_254",
5749
+ marketPanel: "_marketPanel_1idrk_263",
5750
+ marketTabs: "_marketTabs_1idrk_273",
5751
+ marketTabList: "_marketTabList_1idrk_278",
5752
+ marketIconButton: "_marketIconButton_1idrk_283",
5753
+ marketIconWrap: "_marketIconWrap_1idrk_308",
5754
+ marketIconButtonSpinning: "_marketIconButtonSpinning_1idrk_312",
5755
+ "wb-spin": "_wb-spin_1idrk_1",
5756
+ marketAddButton: "_marketAddButton_1idrk_316",
5757
+ marketEmptyTitle: "_marketEmptyTitle_1idrk_333",
5758
+ discoverPage: "_discoverPage_1idrk_347",
5759
+ discoverBar: "_discoverBar_1idrk_354",
5760
+ discoverTools: "_discoverTools_1idrk_361",
5761
+ discoverMarket: "_discoverMarket_1idrk_367",
5762
+ discoverMarketButton: "_discoverMarketButton_1idrk_372",
5763
+ discoverMarketName: "_discoverMarketName_1idrk_379",
5764
+ discoverLabels: "_discoverLabels_1idrk_385",
5765
+ discoverSort: "_discoverSort_1idrk_390",
5766
+ discoverRefresh: "_discoverRefresh_1idrk_395",
5767
+ discoverSearch: "_discoverSearch_1idrk_399",
5768
+ discoverSearchField: "_discoverSearchField_1idrk_407",
5769
+ discoverSearchFieldFilled: "_discoverSearchFieldFilled_1idrk_412",
5770
+ discoverSearchClear: "_discoverSearchClear_1idrk_421",
5771
+ discoverChips: "_discoverChips_1idrk_472",
5772
+ discoverList: "_discoverList_1idrk_479",
5773
+ discoverCard: "_discoverCard_1idrk_488",
5774
+ discoverArtwork: "_discoverArtwork_1idrk_502",
5775
+ discoverArtworkImage: "_discoverArtworkImage_1idrk_514",
5776
+ discoverMain: "_discoverMain_1idrk_518",
5777
+ discoverTitleRow: "_discoverTitleRow_1idrk_526",
5778
+ discoverCardOpen: "_discoverCardOpen_1idrk_534",
5779
+ discoverStrong: "_discoverStrong_1idrk_565",
5780
+ discoverDesc: "_discoverDesc_1idrk_571",
5781
+ discoverMeta: "_discoverMeta_1idrk_580",
5782
+ discoverMuted: "_discoverMuted_1idrk_587",
5783
+ discoverEnd: "_discoverEnd_1idrk_593",
5784
+ discoverBlocked: "_discoverBlocked_1idrk_602",
5785
+ discoverEmpty: "_discoverEmpty_1idrk_607",
5786
+ discoverEmptyTitle: "_discoverEmptyTitle_1idrk_616",
5787
+ discoverDetail: "_discoverDetail_1idrk_626",
5788
+ discoverCrumb: "_discoverCrumb_1idrk_632",
5789
+ discoverCrumbIcon: "_discoverCrumbIcon_1idrk_655",
5790
+ discoverDetailHead: "_discoverDetailHead_1idrk_659",
5791
+ discoverDetailTitle: "_discoverDetailTitle_1idrk_665",
5792
+ discoverDetailText: "_discoverDetailText_1idrk_671",
5793
+ discoverDetailPanel: "_discoverDetailPanel_1idrk_678",
5794
+ discoverDetailTabs: "_discoverDetailTabs_1idrk_685",
5795
+ discoverDetailTabList: "_discoverDetailTabList_1idrk_690",
5796
+ discoverDocBody: "_discoverDocBody_1idrk_695",
5797
+ discoverDocNotice: "_discoverDocNotice_1idrk_700",
5798
+ discoverSection: "_discoverSection_1idrk_706",
5799
+ discoverSectionTitle: "_discoverSectionTitle_1idrk_713",
5800
+ discoverFacts: "_discoverFacts_1idrk_719",
5801
+ discoverFactRow: "_discoverFactRow_1idrk_724",
5802
+ discoverFactKind: "_discoverFactKind_1idrk_734",
5803
+ discoverFactValue: "_discoverFactValue_1idrk_740",
5804
+ discoverCode: "_discoverCode_1idrk_748",
5805
+ discoverTags: "_discoverTags_1idrk_757",
5806
+ discoverLink: "_discoverLink_1idrk_764",
5807
+ discoverVersions: "_discoverVersions_1idrk_774",
5808
+ discoverVersionRow: "_discoverVersionRow_1idrk_782",
5809
+ discoverVersionName: "_discoverVersionName_1idrk_790",
5810
+ discoverError: "_discoverError_1idrk_795",
5811
+ discoverFailure: "_discoverFailure_1idrk_804",
5812
+ discoverLoading: "_discoverLoading_1idrk_810",
5813
+ discoverNotice: "_discoverNotice_1idrk_819",
5814
+ discoverMore: "_discoverMore_1idrk_837",
5815
+ discoverDialog: "_discoverDialog_1idrk_841",
5816
+ discoverDialogBody: "_discoverDialogBody_1idrk_845",
5817
+ discoverSourceList: "_discoverSourceList_1idrk_851",
5818
+ discoverSourceRow: "_discoverSourceRow_1idrk_859",
5819
+ discoverSourceCurrent: "_discoverSourceCurrent_1idrk_868",
5820
+ discoverSourceLoading: "_discoverSourceLoading_1idrk_875",
5821
+ discoverSourceHint: "_discoverSourceHint_1idrk_885",
5822
+ discoverSourceError: "_discoverSourceError_1idrk_899",
5823
+ discoverSourceForm: "_discoverSourceForm_1idrk_905",
5824
+ discoverGrow: "_discoverGrow_1idrk_911",
5825
+ discoverField: "_discoverField_1idrk_916",
5826
+ discoverFieldLabel: "_discoverFieldLabel_1idrk_922",
5827
+ discoverConfirmHead: "_discoverConfirmHead_1idrk_927",
5828
+ discoverSkeletonFill: "_discoverSkeletonFill_1idrk_933",
5829
+ "wb-skeleton": "_wb-skeleton_1idrk_1",
5830
+ discoverSkeletonBar: "_discoverSkeletonBar_1idrk_942",
5831
+ discoverSkeletonTitle: "_discoverSkeletonTitle_1idrk_949",
5832
+ discoverSkeletonDesc: "_discoverSkeletonDesc_1idrk_953"
5746
5833
  };
5747
5834
  //#endregion
5748
5835
  //#region src/app/layouts/market/discover-states.tsx
@@ -5766,6 +5853,13 @@ function DiscoverSkeleton({ label }) {
5766
5853
  function DiscoverEmptyText({ text }) {
5767
5854
  return /* @__PURE__ */ createElement("p", { className: MarketPage_module_default.discoverMuted }, text);
5768
5855
  }
5856
+ function DiscoverLoading({ label }) {
5857
+ return /* @__PURE__ */ createElement("p", {
5858
+ className: MarketPage_module_default.discoverLoading,
5859
+ role: "status",
5860
+ "aria-live": "polite"
5861
+ }, /* @__PURE__ */ createElement(StateDot, { state: "ongoing" }), label);
5862
+ }
5769
5863
  function DiscoverFailure({ t, text, onRetry }) {
5770
5864
  return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverFailure }, /* @__PURE__ */ createElement("p", {
5771
5865
  className: MarketPage_module_default.discoverError,
@@ -5834,6 +5928,18 @@ function sharedRowKind(row) {
5834
5928
  return row.kind === "extension" ? "plugin" : "lib";
5835
5929
  }
5836
5930
  //#endregion
5931
+ //#region src/app/layouts/rightbar/market-names.ts
5932
+ function namesOf(t, modules, titleOf) {
5933
+ const shown = /* @__PURE__ */ new Map();
5934
+ for (const module of modules) {
5935
+ const key = unitTitleKey(module.unit);
5936
+ const live = t(key);
5937
+ const name = live !== key && live !== "" ? live : titleOf(module.title);
5938
+ if (name !== "") shown.set(module.unit, name);
5939
+ }
5940
+ return shown;
5941
+ }
5942
+ //#endregion
5837
5943
  //#region src/app/layouts/rightbar/market-view-text.ts
5838
5944
  var PROGRESS_KEY = {
5839
5945
  install: "panels.market.installing",
@@ -5844,7 +5950,9 @@ var PROGRESS_KEY = {
5844
5950
  "update-dependency": "panels.market.updating",
5845
5951
  "update-plugin": "panels.market.updating",
5846
5952
  "uninstall-plugin": "panels.market.uninstalling",
5847
- "update-workbench": "panels.market.updating"
5953
+ "update-workbench": "panels.market.updating",
5954
+ "migrate-workbench": "panels.market.migrating",
5955
+ "dismiss-followup": "panels.market.dismissing"
5848
5956
  };
5849
5957
  var ACTION_LABEL_KEY = {
5850
5958
  install: "panels.market.install",
@@ -5855,7 +5963,9 @@ var ACTION_LABEL_KEY = {
5855
5963
  "update-dependency": "panels.market.update",
5856
5964
  "update-plugin": "panels.market.update",
5857
5965
  "uninstall-plugin": "panels.market.uninstall",
5858
- "update-workbench": "panels.market.update"
5966
+ "update-workbench": "panels.market.update",
5967
+ "migrate-workbench": "panels.market.migrateAction",
5968
+ "dismiss-followup": "panels.market.dismissFollowUp"
5859
5969
  };
5860
5970
  function holdOf(pending, application) {
5861
5971
  if (pending === null || pending.row === void 0) return void 0;
@@ -5903,12 +6013,9 @@ function withPinnedRow(rows, pinned) {
5903
6013
  function marketFootVisible(shown, installed) {
5904
6014
  return shown.length > 0 || installed.length > 0;
5905
6015
  }
5906
- function useMarketTitles(manifests, mocked) {
5907
- const [titles, setTitles] = useState(/* @__PURE__ */ new Map());
5908
- useEffect(() => {
5909
- if (!mocked) setTitles((known) => mergeTitles(known, manifests));
5910
- }, [manifests, mocked]);
5911
- return titles;
6016
+ var NO_NAMES = /* @__PURE__ */ new Map();
6017
+ function marketNamesOf(t, modules, titleOf, mocked) {
6018
+ return mocked ? NO_NAMES : namesOf(t, modules, titleOf);
5912
6019
  }
5913
6020
  function useHeldRow(pending, backInRoster) {
5914
6021
  const [held, setHeld] = useState(void 0);
@@ -5944,10 +6051,11 @@ function pendingRowOf(input) {
5944
6051
  const { pending, removing } = input;
5945
6052
  if (removing === null || pending === null) return void 0;
5946
6053
  if (input.rows.some((row) => row.id === removing)) return void 0;
6054
+ const name = pending.label ?? input.names.get(removing);
5947
6055
  return {
5948
6056
  id: removing,
5949
- titleKey: pending.titleKey ?? input.titles.get(removing) ?? removing,
5950
- ...pending.label === void 0 ? {} : { label: pending.label },
6057
+ titleKey: pending.titleKey ?? removing,
6058
+ ...name === void 0 ? {} : { label: name },
5951
6059
  state: "installed",
5952
6060
  canInstall: false,
5953
6061
  canUpdate: false,
@@ -6064,49 +6172,120 @@ var updateActions = [
6064
6172
  "update-plugin",
6065
6173
  "update-workbench"
6066
6174
  ];
6175
+ function MigrationConfirm({ t, onConfirm, onCancel }) {
6176
+ const [acknowledged, setAcknowledged] = useState(false);
6177
+ return /* @__PURE__ */ createElement(RiskConfirmation, {
6178
+ open: true,
6179
+ title: t("panels.market.migrateConfirmTitle"),
6180
+ description: t("panels.market.migrateConfirmDetail"),
6181
+ acknowledgeLabel: t("panels.market.migrateConfirmAck"),
6182
+ cancelLabel: t("panels.market.confirmNo"),
6183
+ closeLabel: t("panels.market.confirmNo"),
6184
+ confirmLabel: t("panels.market.migrateConfirmYes"),
6185
+ acknowledged,
6186
+ onAcknowledgedChange: setAcknowledged,
6187
+ onCancel,
6188
+ onConfirm
6189
+ });
6190
+ }
6191
+ function DismissFollowUpConfirm({ t, onConfirm, onCancel }) {
6192
+ const [acknowledged, setAcknowledged] = useState(false);
6193
+ return /* @__PURE__ */ createElement(RiskConfirmation, {
6194
+ open: true,
6195
+ title: t("panels.market.dismissFollowUpTitle"),
6196
+ description: t("panels.market.dismissFollowUpDetail"),
6197
+ acknowledgeLabel: t("panels.market.dismissFollowUpAck"),
6198
+ cancelLabel: t("panels.market.confirmNo"),
6199
+ closeLabel: t("panels.market.confirmNo"),
6200
+ confirmLabel: t("panels.market.dismissFollowUpYes"),
6201
+ acknowledged,
6202
+ onAcknowledgedChange: setAcknowledged,
6203
+ onCancel,
6204
+ onConfirm
6205
+ });
6206
+ }
6207
+ function MarketLineDialogs({ t, migrationOpen, dismissOpen, onMigrationCancel, onMigrationConfirm, onDismissCancel, onDismissConfirm }) {
6208
+ return /* @__PURE__ */ createElement(Fragment, null, migrationOpen ? /* @__PURE__ */ createElement(MigrationConfirm, {
6209
+ t,
6210
+ onCancel: onMigrationCancel,
6211
+ onConfirm: onMigrationConfirm
6212
+ }) : null, dismissOpen ? /* @__PURE__ */ createElement(DismissFollowUpConfirm, {
6213
+ t,
6214
+ onCancel: onDismissCancel,
6215
+ onConfirm: onDismissConfirm
6216
+ }) : null);
6217
+ }
6218
+ function MarketLineStatus({ t, row, quiet }) {
6219
+ const stateText = t(MARKET_STATE_KEY[row.state]);
6220
+ const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
6221
+ if (quiet) return null;
6222
+ return /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketStatus }, row.state === "checking" ? /* @__PURE__ */ createElement(Spinner, { size: 14 }) : /* @__PURE__ */ createElement(StateDot, {
6223
+ state: MARKET_DOT[row.state],
6224
+ size: 9
6225
+ }), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketStateText }, stateText), row.hint === void 0 ? null : /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement("span", {
6226
+ className: MarketPage_module_default.marketSep,
6227
+ "aria-hidden": "true"
6228
+ }, "·"), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketReason }, t(row.hint))), noteText === null ? null : /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement("span", {
6229
+ className: MarketPage_module_default.marketSep,
6230
+ "aria-hidden": "true"
6231
+ }, "·"), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketReason }, noteText)));
6232
+ }
6067
6233
  function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
6068
6234
  const running = pending !== null && pending.id === row.id ? pending : null;
6069
6235
  const locked = pending !== null;
6236
+ const [migrationOpen, setMigrationOpen] = useState(false);
6237
+ const [dismissOpen, setDismissOpen] = useState(false);
6070
6238
  const quiet = row.workbench === true && row.state === "installed" && row.hint === void 0;
6071
6239
  const actions = marketActions$1(row);
6072
6240
  const switchLocked = marketSwitchLocked(row);
6073
- const stateText = t(MARKET_STATE_KEY[row.state]);
6074
- const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
6075
6241
  return /* @__PURE__ */ createElement("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ createElement("span", {
6076
6242
  className: MarketPage_module_default.marketIcon,
6077
6243
  "aria-hidden": "true"
6078
6244
  }, packageIcon(marketRowKind(row))), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketMain }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketName }, marketRowTitle(row, t), row.versionLabel === void 0 ? null : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketVersion }, row.versionLabel), row.version === void 0 || row.versionLabel !== void 0 ? null : /* @__PURE__ */ 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", {
6079
6245
  from: row.version.installed,
6080
6246
  to: row.version.latest
6081
- }) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null), quiet ? null : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketStatus }, row.state === "checking" ? /* @__PURE__ */ createElement(Spinner, { size: 14 }) : /* @__PURE__ */ createElement(StateDot, {
6082
- state: MARKET_DOT[row.state],
6083
- size: 9
6084
- }), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketStateText }, stateText), row.hint === void 0 ? null : /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement("span", {
6085
- className: MarketPage_module_default.marketSep,
6086
- "aria-hidden": "true"
6087
- }, "·"), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketReason }, t(row.hint))), noteText === null ? null : /* @__PURE__ */ createElement(Fragment, null, /* @__PURE__ */ createElement("span", {
6088
- className: MarketPage_module_default.marketSep,
6089
- "aria-hidden": "true"
6090
- }, "·"), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketReason }, noteText)))), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ createElement(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
6247
+ }) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null), /* @__PURE__ */ createElement(MarketLineStatus, {
6248
+ t,
6249
+ row,
6250
+ quiet
6251
+ })), /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ createElement(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
6091
6252
  const danger = dangerActions.includes(action);
6092
6253
  const update = updateActions.includes(action);
6093
6254
  return /* @__PURE__ */ createElement(Button, {
6094
6255
  key: action,
6095
6256
  type: "button",
6096
6257
  size: "sm",
6097
- variant: action === "install" ? "primary" : "outline",
6258
+ variant: action === "install" || action === "migrate-workbench" ? "primary" : "outline",
6098
6259
  className: danger ? "wb-dangerAction" : update ? MarketPage_module_default.marketUpdateAction : void 0,
6099
6260
  icon: danger ? /* @__PURE__ */ createElement(IconTrashOutlineRegular, { size: 13 }) : void 0,
6100
6261
  "aria-label": danger ? t("panels.market.uninstallLabel", { name: marketRowTitle(row, t) }) : void 0,
6101
6262
  disabled: locked,
6102
- onClick: () => onAct(action)
6263
+ onClick: () => {
6264
+ if (action === "migrate-workbench") setMigrationOpen(true);
6265
+ else if (action === "dismiss-followup") setDismissOpen(true);
6266
+ else onAct(action);
6267
+ }
6103
6268
  }, t(ACTION_LABEL_KEY[action]));
6104
6269
  })), row.defaultShown === void 0 ? null : /* @__PURE__ */ createElement(Tip, { label: t(switchLocked ? "panels.market.defaultLocked" : "panels.market.defaultHint") }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.marketSwitchSeat }, /* @__PURE__ */ createElement(Switch, {
6105
6270
  checked: row.defaultShown,
6106
6271
  disabled: boardBusy === true || locked || switchLocked,
6107
6272
  label: `${marketRowTitle(row, t)} · ${t("panels.market.defaultLabel")}`,
6108
6273
  onChange: (next) => onDefault?.(next)
6109
- })))), failure === null ? null : /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketFailure }, failure));
6274
+ })))), failure === null ? null : /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.marketFailure }, failure), /* @__PURE__ */ createElement(MarketLineDialogs, {
6275
+ t,
6276
+ migrationOpen,
6277
+ dismissOpen,
6278
+ onMigrationCancel: () => setMigrationOpen(false),
6279
+ onMigrationConfirm: () => {
6280
+ setMigrationOpen(false);
6281
+ onAct("migrate-workbench");
6282
+ },
6283
+ onDismissCancel: () => setDismissOpen(false),
6284
+ onDismissConfirm: () => {
6285
+ setDismissOpen(false);
6286
+ onAct("dismiss-followup");
6287
+ }
6288
+ }));
6110
6289
  }
6111
6290
  function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy }) {
6112
6291
  if (rows.length === 0) return null;
@@ -6421,10 +6600,13 @@ function marketActOf(options) {
6421
6600
  seats.setConfirming(null);
6422
6601
  seats.setFailed(null);
6423
6602
  seats.setNotice(null);
6424
- const outcome = await send(action === "update-dependency" ? {
6603
+ const outcome = await send(action === "dismiss-followup" ? {
6604
+ action,
6605
+ id: row?.followUp?.id ?? ""
6606
+ } : action === "update-dependency" ? {
6425
6607
  action,
6426
6608
  id
6427
- } : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" ? {
6609
+ } : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" || action === "migrate-workbench" ? {
6428
6610
  action,
6429
6611
  name: row?.pkg ?? ""
6430
6612
  } : {
@@ -6442,6 +6624,21 @@ function marketActOf(options) {
6442
6624
  return;
6443
6625
  }
6444
6626
  const value = outcome.value;
6627
+ if (action === "dismiss-followup") {
6628
+ onChanged({ force: true });
6629
+ seats.setPending(null);
6630
+ seats.setHeld(void 0);
6631
+ seats.setNotice(t("panels.market.dismissed"));
6632
+ return;
6633
+ }
6634
+ if (action === "migrate-workbench") {
6635
+ const added = recordOf(value)?.["added"];
6636
+ onChanged({ force: true });
6637
+ seats.setPending(null);
6638
+ seats.setHeld(void 0);
6639
+ seats.setNotice(t("panels.market.migrateDone", { added: typeof added === "number" ? String(added) : "0" }));
6640
+ return;
6641
+ }
6445
6642
  const change = changeOf(value);
6446
6643
  const failure = updateVerdictText(updateVerdictOf({
6447
6644
  action,
@@ -6496,9 +6693,6 @@ var CONFIRM_UNINSTALL = [
6496
6693
  "remove-bundle",
6497
6694
  "uninstall-plugin"
6498
6695
  ];
6499
- function marketMigrationNotice(t, update) {
6500
- return update?.migration === "needed" ? t("panels.market.selfUpdateNeedsMigrate") : null;
6501
- }
6502
6696
  function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
6503
6697
  const [acknowledged, setAcknowledged] = useState(false);
6504
6698
  return /* @__PURE__ */ createElement(RiskConfirmation, {
@@ -6568,8 +6762,8 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
6568
6762
  }));
6569
6763
  }
6570
6764
  function useMarketScene(input) {
6571
- const { manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
6572
- const titles = useMarketTitles(manifests, mock !== void 0);
6765
+ const { t, titleOf, manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
6766
+ const names = marketNamesOf(t, installed ?? [], titleOf, mock !== void 0);
6573
6767
  const catalog = mock?.manifests ?? manifests;
6574
6768
  const marketable = mock === void 0 ? marketCatalog(manifests, installable) : catalog;
6575
6769
  const effective = mock === void 0 ? capabilities : mock.capabilities;
@@ -6583,13 +6777,13 @@ function useMarketScene(input) {
6583
6777
  const pinned = pinnedRowOf(pending, steady.held);
6584
6778
  const busyId = heldIdOf(pending, steady.held);
6585
6779
  return {
6586
- titles,
6780
+ names,
6587
6781
  catalog,
6588
6782
  effective,
6589
6783
  updateMap,
6590
6784
  rows,
6591
6785
  shared,
6592
- 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),
6786
+ 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),
6593
6787
  byDefault,
6594
6788
  steady,
6595
6789
  pinned,
@@ -6597,12 +6791,14 @@ function useMarketScene(input) {
6597
6791
  busyId
6598
6792
  };
6599
6793
  }
6600
- function MarketView({ t, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
6794
+ function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
6601
6795
  const { pending, setPending, confirming, setConfirming, failed, setFailed, notice, setNotice } = useMarketTransient({
6602
6796
  mock,
6603
6797
  onPending
6604
6798
  });
6605
- const { titles, effective, updateMap, rows, shared, installedList, byDefault, steady, pinned, removing, busyId } = useMarketScene({
6799
+ const { names, effective, updateMap, rows, shared, installedList, byDefault, steady, pinned, removing, busyId } = useMarketScene({
6800
+ t,
6801
+ titleOf,
6606
6802
  manifests,
6607
6803
  installable,
6608
6804
  capabilities,
@@ -6647,7 +6843,7 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
6647
6843
  pending,
6648
6844
  removing,
6649
6845
  rows,
6650
- titles
6846
+ names
6651
6847
  });
6652
6848
  const self = workbenchRow(mock === void 0 ? workbench : mock.workbench);
6653
6849
  const shown = withPinnedRow(pendingRow === void 0 ? rows : [...rows, pendingRow], pinned);
@@ -6675,21 +6871,18 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
6675
6871
  send: (body) => provision.send(body),
6676
6872
  onChanged
6677
6873
  });
6678
- const landed = pendingLanded(pending, updateMap, effective, workbench?.installed, shared, pluginSource === null ? null : pluginList, {
6679
- units: installed === void 0 ? null : new Set(installed.map((module) => module.unit)),
6680
- plugins: pluginSource === null ? null : new Set(pluginList.map((row) => row.id))
6681
- });
6682
- const effectiveSelfUpdate = mock?.selfUpdate ?? selfUpdate;
6683
6874
  useSettleHold({
6684
6875
  pending,
6685
- landed,
6876
+ landed: pendingLanded(pending, updateMap, effective, workbench?.installed, shared, pluginSource === null ? null : pluginList, {
6877
+ units: installed === void 0 ? null : new Set(installed.map((module) => module.unit)),
6878
+ plugins: pluginSource === null ? null : new Set(pluginList.map((row) => row.id))
6879
+ }),
6686
6880
  t,
6687
6881
  onChanged,
6688
- selfUpdate: effectiveSelfUpdate,
6882
+ selfUpdate: mock?.selfUpdate ?? selfUpdate,
6689
6883
  setPending,
6690
6884
  setFailed
6691
6885
  });
6692
- const migrationNotice = marketMigrationNotice(t, effectiveSelfUpdate);
6693
6886
  const settled = marketSettled(freshness, installedRead);
6694
6887
  const nothing = shown.length === 0 && self === void 0 && installedList.length === 0 && pluginList.length === 0;
6695
6888
  if (!settled || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ createElement(MarketChecking, { t });
@@ -6703,7 +6896,7 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
6703
6896
  shared,
6704
6897
  pending,
6705
6898
  failed,
6706
- notice: notice ?? migrationNotice,
6899
+ notice,
6707
6900
  act,
6708
6901
  onConfirming: setConfirming,
6709
6902
  setDefault,
@@ -6919,7 +7112,7 @@ function sourceFromUrl(raw) {
6919
7112
  if (url === "" || url.includes("#") || hasCredentials(url)) return { ok: false };
6920
7113
  if (HTTP.test(url)) {
6921
7114
  const asGit = REPO_FILE.test(url);
6922
- const label = hostOf(url);
7115
+ const label = asGit ? sourceSuffix(url) || hostOf(url) : hostOf(url);
6923
7116
  if (label === "") return { ok: false };
6924
7117
  return {
6925
7118
  ok: true,
@@ -6952,6 +7145,13 @@ function sameSourceUrl(left, right) {
6952
7145
  function sourceSuffix(url) {
6953
7146
  return (withoutTrailingSlash(url).split(/[/:]/).filter((part) => part !== "").pop() ?? "").replace(/\.git$/, "");
6954
7147
  }
7148
+ function sourceTransport(url) {
7149
+ if (GIT_SSH.test(url) || /^ssh:\/\//i.test(url) || /^git\+ssh:\/\//i.test(url)) return "ssh";
7150
+ if (/^git:\/\//i.test(url)) return "git";
7151
+ if (/^https:\/\//i.test(url)) return "https";
7152
+ if (/^http:\/\//i.test(url)) return "http";
7153
+ return "";
7154
+ }
6955
7155
  function sourceLabelsOf(sources) {
6956
7156
  const counts = /* @__PURE__ */ new Map();
6957
7157
  for (const source of sources) counts.set(source.label, (counts.get(source.label) ?? 0) + 1);
@@ -6962,7 +7162,8 @@ function sourceLabelsOf(sources) {
6962
7162
  continue;
6963
7163
  }
6964
7164
  const suffix = sourceSuffix(source.url);
6965
- labels.set(source.id, suffix === "" ? source.url : `${source.label} · ${suffix}`);
7165
+ const detail = suffix !== "" && suffix !== source.label ? suffix : sourceTransport(source.url);
7166
+ labels.set(source.id, detail === "" ? source.url : `${detail} · ${source.label}`);
6966
7167
  }
6967
7168
  return labels;
6968
7169
  }
@@ -7089,11 +7290,15 @@ function DiscoverVersions({ t, locale, entry, onInstall }) {
7089
7290
  var MARKET_DISCOVER_ROUTE = "panels/market-discover";
7090
7291
  var MARKET_DOC_ROUTE = "panels/market-doc";
7091
7292
  var MARKET_PUBLISH_PREVIEW_ROUTE = "panels/market-publish-preview";
7293
+ var MARKET_SOURCES_ROUTE = "panels/market-sources";
7092
7294
  //#endregion
7093
7295
  //#region src/shared/hooks/market-queries.ts
7094
7296
  function readMarketDiscover(options = {}) {
7095
7297
  return apiGet(MARKET_DISCOVER_ROUTE, options.force === true ? { force: "1" } : {});
7096
7298
  }
7299
+ function readMarketSources() {
7300
+ return apiGet(MARKET_SOURCES_ROUTE);
7301
+ }
7097
7302
  function readMarketDoc(name, version, kind) {
7098
7303
  return apiGet(MARKET_DOC_ROUTE, {
7099
7304
  name,
@@ -7101,10 +7306,11 @@ function readMarketDoc(name, version, kind) {
7101
7306
  kind
7102
7307
  });
7103
7308
  }
7104
- function readPublishPreview(unit, version) {
7309
+ function readPublishPreview(unit, version, author) {
7105
7310
  return apiGet(MARKET_PUBLISH_PREVIEW_ROUTE, {
7106
7311
  unit,
7107
- ...version === void 0 || version === "" ? {} : { version }
7312
+ ...version === void 0 || version === "" ? {} : { version },
7313
+ ...author === void 0 || author === "" ? {} : { author }
7108
7314
  });
7109
7315
  }
7110
7316
  //#endregion
@@ -7358,6 +7564,7 @@ function DiscoverSourcesDialog(props) {
7358
7564
  const [url, setUrl] = useState("");
7359
7565
  const [problem, setProblem] = useState(null);
7360
7566
  const pending = props.busy || props.adding;
7567
+ const selectedVisible = props.sources.some((source) => source.id === props.selected);
7361
7568
  const add = () => {
7362
7569
  if (pending) return;
7363
7570
  const parsed = sourceFromUrl(url);
@@ -7380,13 +7587,29 @@ function DiscoverSourcesDialog(props) {
7380
7587
  closeLabel: t("panels.discover.close"),
7381
7588
  description: t("panels.discover.sourcesIntro"),
7382
7589
  className: MarketPage_module_default.discoverDialog
7383
- }, /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverDialogBody }, props.sources.length === 0 ? null : /* @__PURE__ */ createElement("ul", {
7590
+ }, /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverDialogBody }, props.loading && !selectedVisible ? props.slow ? /* @__PURE__ */ createElement("p", {
7591
+ className: MarketPage_module_default.discoverNotice,
7592
+ role: "note"
7593
+ }, /* @__PURE__ */ createElement(IconWarningOutlineRegular, {
7594
+ size: 14,
7595
+ "aria-hidden": "true"
7596
+ }), /* @__PURE__ */ createElement("span", null, t("panels.discover.slowHint"))) : /* @__PURE__ */ createElement(DiscoverLoading, { label: t("panels.discover.loading") }) : null, props.sources.length === 0 ? null : /* @__PURE__ */ createElement("ul", {
7384
7597
  className: MarketPage_module_default.discoverSourceList,
7385
7598
  "aria-label": t("panels.discover.sourcesLabel")
7386
7599
  }, props.sources.map((source) => /* @__PURE__ */ createElement("li", {
7387
7600
  key: source.id,
7388
7601
  className: MarketPage_module_default.discoverSourceRow
7389
- }, /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverMeta }, source.url), props.problem?.id === source.id ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), /* @__PURE__ */ createElement(Tooltip, {
7602
+ }, /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverMeta }, source.url), !props.loading && props.problem?.id === source.id ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), source.id === props.selected ? props.loading ? /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverSourceLoading }, /* @__PURE__ */ createElement(StateDot, { state: "ongoing" }), t("panels.discover.loading")) : /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverSourceCurrent }, t("panels.discover.sourceCurrent")) : /* @__PURE__ */ createElement(Button, {
7603
+ type: "button",
7604
+ variant: "ghost",
7605
+ size: "sm",
7606
+ "aria-label": t("panels.discover.useSourceNamed", { label: source.label }),
7607
+ disabled: pending,
7608
+ onClick: () => {
7609
+ props.onSelect(source.id);
7610
+ props.onClose();
7611
+ }
7612
+ }, t("panels.discover.useSource")), /* @__PURE__ */ createElement(Tooltip, {
7390
7613
  label: t("panels.discover.removeSource"),
7391
7614
  side: "bottom",
7392
7615
  portal: true,
@@ -7399,7 +7622,13 @@ function DiscoverSourcesDialog(props) {
7399
7622
  "aria-label": t("panels.discover.removeSourceNamed", { url: source.url }),
7400
7623
  disabled: pending,
7401
7624
  onClick: () => props.onRemove(source.id)
7402
- }))))), /* @__PURE__ */ createElement("form", {
7625
+ })), source.id === props.selected && props.loading && props.slow ? /* @__PURE__ */ createElement("span", {
7626
+ className: MarketPage_module_default.discoverSourceHint,
7627
+ role: "note"
7628
+ }, /* @__PURE__ */ createElement(IconWarningOutlineRegular, {
7629
+ size: 12,
7630
+ "aria-hidden": "true"
7631
+ }), t("panels.discover.slowHint")) : null))), /* @__PURE__ */ createElement("form", {
7403
7632
  className: MarketPage_module_default.discoverSourceForm,
7404
7633
  onSubmit: (event) => {
7405
7634
  event.preventDefault();
@@ -7442,12 +7671,16 @@ function DiscoverDialogs({ t, d }) {
7442
7671
  t,
7443
7672
  open: d.manageOpen,
7444
7673
  sources: d.sources,
7674
+ selected: d.selected,
7675
+ loading: d.loading,
7676
+ slow: d.slow,
7445
7677
  problem: d.problem,
7446
7678
  busy: d.busy,
7447
7679
  adding: d.addingSource,
7448
7680
  onClose: () => d.setManageOpen(false),
7449
7681
  onAdd: d.addSource,
7450
- onRemove: d.removeSourceById
7682
+ onRemove: d.removeSourceById,
7683
+ onSelect: d.selectSource
7451
7684
  }), /* @__PURE__ */ createElement(DiscoverConfirm, {
7452
7685
  t,
7453
7686
  locale: d.locale,
@@ -7484,6 +7717,34 @@ function DiscoverCategories({ t, categories, category, onCategory }) {
7484
7717
  }, item)));
7485
7718
  }
7486
7719
  //#endregion
7720
+ //#region src/app/layouts/market/discover-search.tsx
7721
+ function DiscoverSearch({ t, value, disabled, onChange }) {
7722
+ const field = useRef(null);
7723
+ return /* @__PURE__ */ createElement("span", { className: MarketPage_module_default.discoverSearch }, /* @__PURE__ */ createElement(Input, {
7724
+ ref: field,
7725
+ className: value === "" ? MarketPage_module_default.discoverSearchField : `${MarketPage_module_default.discoverSearchField} ${MarketPage_module_default.discoverSearchFieldFilled}`,
7726
+ type: "search",
7727
+ icon: /* @__PURE__ */ createElement(IconSearchOutlineRegular, { size: 14 }),
7728
+ value,
7729
+ placeholder: t("panels.discover.search"),
7730
+ "aria-label": t("panels.discover.search"),
7731
+ disabled,
7732
+ onChange: (event) => onChange(event.currentTarget.value)
7733
+ }), value === "" ? null : /* @__PURE__ */ createElement(Button, {
7734
+ type: "button",
7735
+ size: "sm",
7736
+ variant: "ghost",
7737
+ className: MarketPage_module_default.discoverSearchClear,
7738
+ "aria-label": t("panels.discover.clearSearch"),
7739
+ disabled,
7740
+ icon: /* @__PURE__ */ createElement(IconCloseOutlineRegular, { size: 14 }),
7741
+ onClick: () => {
7742
+ onChange("");
7743
+ field.current?.focus();
7744
+ }
7745
+ }));
7746
+ }
7747
+ //#endregion
7487
7748
  //#region src/app/layouts/market/discover-toolbar.tsx
7488
7749
  var TEXT_DELAY_MS = 250;
7489
7750
  function DiscoverToolbar(props) {
@@ -7537,14 +7798,11 @@ function DiscoverToolbar(props) {
7537
7798
  size: 12,
7538
7799
  "aria-hidden": "true"
7539
7800
  }))
7540
- }), /* @__PURE__ */ createElement(Input, {
7541
- className: MarketPage_module_default.discoverSearch,
7542
- type: "search",
7543
- icon: /* @__PURE__ */ createElement(IconSearchOutlineRegular, { size: 14 }),
7801
+ }), /* @__PURE__ */ createElement(DiscoverSearch, {
7802
+ t,
7544
7803
  value: text,
7545
- placeholder: t("panels.discover.search"),
7546
- "aria-label": t("panels.discover.search"),
7547
- onChange: (event) => setText(event.currentTarget.value)
7804
+ disabled: props.loading,
7805
+ onChange: setText
7548
7806
  }), props.labels.length === 0 ? null : /* @__PURE__ */ createElement(Menu, {
7549
7807
  className: MarketPage_module_default.discoverLabels,
7550
7808
  open: open === "filter",
@@ -7592,6 +7850,7 @@ function DiscoverToolbar(props) {
7592
7850
  variant: "ghost",
7593
7851
  "aria-haspopup": "menu",
7594
7852
  "aria-expanded": open === "sort",
7853
+ disabled: props.loading,
7595
7854
  onClick: () => setOpen(open === "sort" ? null : "sort")
7596
7855
  }, t("panels.discover.sortWith", { label: sortName }), /* @__PURE__ */ createElement(IconChevronDownOutlineRegular, {
7597
7856
  size: 12,
@@ -7630,6 +7889,12 @@ var SHIPPED = [
7630
7889
  "restart-required",
7631
7890
  "overridden"
7632
7891
  ];
7892
+ function sourceRowsOf(sources) {
7893
+ return sources.map((source) => ({
7894
+ ...source,
7895
+ writable: source.kind === "http" ? false : null
7896
+ }));
7897
+ }
7633
7898
  function installVerdictOf(value, t) {
7634
7899
  const change = changeOf(value);
7635
7900
  if (change === void 0) return { kind: "quiet" };
@@ -7643,6 +7908,7 @@ function installVerdictOf(value, t) {
7643
7908
  function useDiscover(t, active, onInstalled) {
7644
7909
  const [payload, setPayload] = useState(null);
7645
7910
  const [loading, setLoading] = useState(true);
7911
+ const [slow, setSlow] = useState(false);
7646
7912
  const [failure, setFailure] = useState(null);
7647
7913
  const [query, setQuery] = useState("");
7648
7914
  const [category, setCategory] = useState(null);
@@ -7655,7 +7921,10 @@ function useDiscover(t, active, onInstalled) {
7655
7921
  const [choice, setChoice] = useState(null);
7656
7922
  const [notice, setNotice] = useState(null);
7657
7923
  const [addingSource, setAddingSource] = useState(false);
7924
+ const [knownSources, setKnownSources] = useState(null);
7658
7925
  const loaded = useRef(false);
7926
+ const loadTicket = useRef(0);
7927
+ const sourceTicket = useRef(0);
7659
7928
  const locale = useMemo(() => localeNow(), []);
7660
7929
  const sources = useHostWrite({
7661
7930
  channel: "actions",
@@ -7666,11 +7935,27 @@ function useDiscover(t, active, onInstalled) {
7666
7935
  channel: "provision",
7667
7936
  networkText: t("panels.discover.failed")
7668
7937
  });
7938
+ const loadSources = useCallback(async () => {
7939
+ const ticket = sourceTicket.current + 1;
7940
+ sourceTicket.current = ticket;
7941
+ const response = await readMarketSources().catch(() => null);
7942
+ if (sourceTicket.current !== ticket) return;
7943
+ if (response === null || !response.ok) return;
7944
+ setKnownSources({
7945
+ sources: sourceRowsOf(response.sources),
7946
+ selected: response.selected
7947
+ });
7948
+ }, []);
7669
7949
  const load = useCallback(async (force = false) => {
7950
+ const ticket = loadTicket.current + 1;
7951
+ loadTicket.current = ticket;
7670
7952
  setLoading(true);
7953
+ setSlow(false);
7671
7954
  setFailure(null);
7672
7955
  const response = await readMarketDiscover({ force }).catch(() => null);
7956
+ if (loadTicket.current !== ticket) return;
7673
7957
  setLoading(false);
7958
+ setSlow(false);
7674
7959
  if (response === null || !response.ok) {
7675
7960
  setFailure(t("panels.discover.unreadable"));
7676
7961
  return;
@@ -7678,11 +7963,29 @@ function useDiscover(t, active, onInstalled) {
7678
7963
  setPayload(response);
7679
7964
  setLimit(50);
7680
7965
  }, [t]);
7966
+ const beginSwitch = () => {
7967
+ loadTicket.current += 1;
7968
+ sourceTicket.current += 1;
7969
+ setFailure(null);
7970
+ setPayload(null);
7971
+ setLoading(true);
7972
+ setSlow(false);
7973
+ };
7681
7974
  useEffect(() => {
7682
7975
  if (!active || loaded.current) return;
7683
7976
  loaded.current = true;
7977
+ loadSources();
7684
7978
  load();
7685
- }, [active, load]);
7979
+ }, [
7980
+ active,
7981
+ load,
7982
+ loadSources
7983
+ ]);
7984
+ useEffect(() => {
7985
+ if (!loading) return void 0;
7986
+ const timer = setTimeout(() => setSlow(true), 8e3);
7987
+ return () => clearTimeout(timer);
7988
+ }, [loading]);
7686
7989
  useEffect(() => subscribeFactRevision(CAPABILITY_FACT, () => {
7687
7990
  if (!loaded.current) return;
7688
7991
  load(true);
@@ -7736,6 +8039,8 @@ function useDiscover(t, active, onInstalled) {
7736
8039
  const done = typeof value?.["branch"] === "string" ? value["branch"] : branch;
7737
8040
  setInitOpen(false);
7738
8041
  setNotice(t("panels.discover.initDone", { branch: done }));
8042
+ beginSwitch();
8043
+ await loadSources();
7739
8044
  await load(true);
7740
8045
  });
7741
8046
  };
@@ -7753,8 +8058,11 @@ function useDiscover(t, active, onInstalled) {
7753
8058
  id
7754
8059
  },
7755
8060
  select: true
7756
- }).then(async (outcome) => {
7757
- if (outcome.ok) await load(true);
8061
+ }).then((outcome) => {
8062
+ if (!outcome.ok) return;
8063
+ beginSwitch();
8064
+ loadSources();
8065
+ load(true);
7758
8066
  }).finally(() => setAddingSource(false));
7759
8067
  };
7760
8068
  const removeSourceById = (id) => {
@@ -7766,6 +8074,8 @@ function useDiscover(t, active, onInstalled) {
7766
8074
  }).then(async (outcome) => {
7767
8075
  if (!outcome.ok) return;
7768
8076
  setDetail(null);
8077
+ beginSwitch();
8078
+ await loadSources();
7769
8079
  await load(true);
7770
8080
  });
7771
8081
  };
@@ -7778,11 +8088,23 @@ function useDiscover(t, active, onInstalled) {
7778
8088
  setSelectedLabels([]);
7779
8089
  setSort("default");
7780
8090
  setDetail(null);
8091
+ beginSwitch();
8092
+ setKnownSources((current) => current === null ? current : {
8093
+ sources: current.sources,
8094
+ selected: id
8095
+ });
7781
8096
  sources.send({
7782
8097
  action: "select",
7783
8098
  id
7784
8099
  }).then(async (outcome) => {
7785
- if (outcome.ok) await load(true);
8100
+ if (!outcome.ok) {
8101
+ setLoading(false);
8102
+ setSlow(false);
8103
+ loadSources();
8104
+ return;
8105
+ }
8106
+ await loadSources();
8107
+ await load(true);
7786
8108
  });
7787
8109
  };
7788
8110
  const install = () => {
@@ -7817,9 +8139,10 @@ function useDiscover(t, active, onInstalled) {
7817
8139
  locale,
7818
8140
  payload,
7819
8141
  loading,
8142
+ slow,
7820
8143
  failure,
7821
- sources: payload?.sources ?? [],
7822
- selected: payload?.selected ?? null,
8144
+ sources: payload?.sources ?? knownSources?.sources ?? [],
8145
+ selected: payload?.selected ?? knownSources?.selected ?? null,
7823
8146
  entries,
7824
8147
  shown,
7825
8148
  total: sorted.length,
@@ -7890,35 +8213,45 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
7890
8213
  t,
7891
8214
  d
7892
8215
  });
7893
- if (d.payload === null) return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverPage }, d.loading ? /* @__PURE__ */ createElement(DiscoverSkeleton, { label: t("panels.discover.loading") }) : /* @__PURE__ */ createElement(DiscoverFailure, {
8216
+ const slowHint = !d.manageOpen && d.loading && d.slow ? /* @__PURE__ */ createElement("p", {
8217
+ className: MarketPage_module_default.discoverNotice,
8218
+ role: "note"
8219
+ }, /* @__PURE__ */ createElement(IconWarningOutlineRegular, {
8220
+ size: 14,
8221
+ "aria-hidden": "true"
8222
+ }), /* @__PURE__ */ createElement("span", null, t("panels.discover.slowHint"))) : null;
8223
+ if (d.payload === null) return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverPage }, d.sources.length === 0 ? null : toolbar, d.loading ? /* @__PURE__ */ createElement(DiscoverSkeleton, { label: t("panels.discover.loading") }) : /* @__PURE__ */ createElement(DiscoverFailure, {
7894
8224
  t,
7895
8225
  text: t("panels.discover.sourcesFailed"),
7896
8226
  onRetry: d.reload
7897
- }), dialogs);
8227
+ }), slowHint, d.writeFailed === null ? null : /* @__PURE__ */ createElement("p", { className: MarketPage_module_default.discoverError }, d.writeFailed), dialogs);
7898
8228
  if (d.payload.state === "no-source") return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverPage }, /* @__PURE__ */ createElement(DiscoverNoSource, {
7899
8229
  t,
7900
8230
  onAdd: () => d.setManageOpen(true)
7901
8231
  }), dialogs);
7902
- const readFailed = d.payload.state === "invalid" ? t("panels.discover.invalid") : d.payload.state === "unreadable" ? t("panels.discover.unreadable") : null;
8232
+ const failed = d.payload.state === "invalid" || d.payload.state === "unreadable";
8233
+ const readFailed = !d.loading && failed ? d.payload.state === "invalid" ? t("panels.discover.invalid") : t("panels.discover.unreadable") : null;
8234
+ const uninitialized = d.loading ? null : d.uninitialized;
8235
+ const retrying = d.loading && failed;
7903
8236
  const emptyText = unfiltered({
7904
8237
  query: d.query,
7905
8238
  category: d.category,
7906
8239
  labels: d.selectedLabels
7907
8240
  }) ? t("panels.discover.empty") : t("panels.discover.noMatch");
7908
- return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.payload.stale === true ? /* @__PURE__ */ createElement("p", {
8241
+ return /* @__PURE__ */ createElement("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.loading && !d.manageOpen ? /* @__PURE__ */ createElement(DiscoverLoading, { label: t("panels.discover.loading") }) : null, slowHint, !d.loading && d.payload.stale === true ? /* @__PURE__ */ createElement("p", {
7909
8242
  className: MarketPage_module_default.discoverNotice,
7910
8243
  role: "note"
7911
8244
  }, /* @__PURE__ */ createElement(IconWarningOutlineRegular, {
7912
8245
  size: 14,
7913
8246
  "aria-hidden": "true"
7914
- }), /* @__PURE__ */ createElement("span", null, t("panels.discover.stale"))) : null, d.uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ createElement(DiscoverFailure, {
8247
+ }), /* @__PURE__ */ createElement("span", null, t("panels.discover.stale"))) : null, uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ createElement(DiscoverFailure, {
7915
8248
  t,
7916
8249
  text: readFailed,
7917
8250
  onRetry: d.reload
7918
8251
  }) : /* @__PURE__ */ createElement(DiscoverUninitialized, {
7919
8252
  t,
7920
- path: d.uninitialized.path,
7921
- empty: d.uninitialized.empty,
8253
+ path: uninitialized.path,
8254
+ empty: uninitialized.empty,
7922
8255
  onInit: () => d.setInitOpen(true)
7923
8256
  }), d.notice === null ? null : /* @__PURE__ */ createElement("p", {
7924
8257
  className: MarketPage_module_default.discoverNotice,
@@ -7937,7 +8270,7 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
7937
8270
  version
7938
8271
  }),
7939
8272
  onShowInstalled
7940
- }) : readFailed !== null || d.uninitialized !== null ? null : d.shown.length === 0 ? /* @__PURE__ */ createElement(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ createElement(DiscoverRows, {
8273
+ }) : readFailed !== null || uninitialized !== null || retrying ? null : d.shown.length === 0 ? /* @__PURE__ */ createElement(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ createElement(DiscoverRows, {
7941
8274
  t,
7942
8275
  locale: d.locale,
7943
8276
  entries: d.shown,
@@ -8718,7 +9051,7 @@ function newRequestId() {
8718
9051
  return crypto.randomUUID();
8719
9052
  }
8720
9053
  function useAddModule(options) {
8721
- const { open, onInstalled, failedText } = options;
9054
+ const { onInstalled, failedText } = options;
8722
9055
  const [spec, setSpec] = useState("");
8723
9056
  const [choice, setChoice] = useState({
8724
9057
  kind: "default",
@@ -8749,7 +9082,6 @@ function useAddModule(options) {
8749
9082
  networkText: failedText
8750
9083
  });
8751
9084
  useEffect(() => {
8752
- if (!open) return void 0;
8753
9085
  let alive = true;
8754
9086
  readBundleRegistries().then((response) => {
8755
9087
  if (!alive) return;
@@ -8758,19 +9090,8 @@ function useAddModule(options) {
8758
9090
  return () => {
8759
9091
  alive = false;
8760
9092
  };
8761
- }, [open]);
9093
+ }, []);
8762
9094
  const registry = registryOf(choice, custom);
8763
- useEffect(() => {
8764
- if (open) return;
8765
- generationRef.current += 1;
8766
- setGuideOpen(false);
8767
- setRegistryOpen(false);
8768
- setProblem(null);
8769
- setPreview(null);
8770
- setOutcome(null);
8771
- setFailure(null);
8772
- setPhase("idle");
8773
- }, [open]);
8774
9095
  const check = useCallback(() => {
8775
9096
  const wanted = spec.trim();
8776
9097
  if (wanted === "") return;
@@ -8907,15 +9228,21 @@ function useAddModule(options) {
8907
9228
  //#endregion
8908
9229
  //#region src/app/layouts/market/AddModuleDialog.tsx
8909
9230
  function AddModuleDialog({ t, open, onClose, onInstalled }) {
9231
+ if (!open) return null;
9232
+ return /* @__PURE__ */ createElement(AddModuleContent, {
9233
+ t,
9234
+ onClose,
9235
+ onInstalled
9236
+ });
9237
+ }
9238
+ function AddModuleContent({ t, onClose, onInstalled }) {
8910
9239
  const real = useAddModule({
8911
- open,
8912
9240
  onInstalled,
8913
9241
  failedText: t("panels.failed")
8914
9242
  });
8915
9243
  const devAdd = devSurface.useStrips("addModule", []);
8916
9244
  const mock = devAdd.current;
8917
9245
  const state = mock === void 0 ? real : devSurface.addModuleState(real, mock);
8918
- if (!open) return null;
8919
9246
  const installing = state.phase === "installing";
8920
9247
  const checking = state.phase === "inspecting";
8921
9248
  const empty = state.spec.trim() === "";
@@ -8975,7 +9302,7 @@ function AddModuleDialog({ t, open, onClose, onInstalled }) {
8975
9302
  onClick: () => state.install()
8976
9303
  }, t("panels.market.add.retry")) : null) : null);
8977
9304
  return /* @__PURE__ */ createElement(Modal, {
8978
- open,
9305
+ open: true,
8979
9306
  onClose: () => {
8980
9307
  if (!installing) onClose();
8981
9308
  },
@@ -9048,7 +9375,7 @@ function makeMarketEntryIcon(units) {
9048
9375
  return /* @__PURE__ */ createElement(IconModules, { size });
9049
9376
  };
9050
9377
  }
9051
- function MarketPanel({ t, units }) {
9378
+ function MarketPanel({ t, units, titleOf }) {
9052
9379
  const manifests = useLiveManifests(units);
9053
9380
  const installable = useInstallableUnits(units);
9054
9381
  const { capabilities, checkedAt, checking, forceProbe, reload: reloadCapability } = useCapabilityMap(0);
@@ -9146,6 +9473,7 @@ function MarketPanel({ t, units }) {
9146
9473
  }, /* @__PURE__ */ createElement(MarketView, {
9147
9474
  key: `${mock?.id ?? "real-market"}-${mockNonce}`,
9148
9475
  t,
9476
+ titleOf,
9149
9477
  manifests,
9150
9478
  installable,
9151
9479
  capabilities,
@@ -9181,6 +9509,10 @@ function MarketPanel({ t, units }) {
9181
9509
  }
9182
9510
  function registerMarketPanel(ctx, units) {
9183
9511
  const t = ctx.locale.bind(LOCALE_NS);
9512
+ const titleOf = (title) => title === void 0 ? "" : ctx.locale.resolveText?.({
9513
+ zh: title.zh,
9514
+ en: title.en
9515
+ }) ?? title.zh;
9184
9516
  ctx.slots.inject("sidebar.panellist", () => ctx.slots.register({
9185
9517
  name: "sidebar.panellist",
9186
9518
  id: MARKET_PANEL_ID,
@@ -9192,7 +9524,10 @@ function registerMarketPanel(ctx, units) {
9192
9524
  name: "main",
9193
9525
  key: MARKET_PANEL_ID,
9194
9526
  locale: LOCALE_NS,
9195
- inject: () => ({ units })
9527
+ inject: () => ({
9528
+ units,
9529
+ titleOf
9530
+ })
9196
9531
  }, MarketPanel));
9197
9532
  }
9198
9533
  //#endregion
@@ -9244,6 +9579,14 @@ function flush() {
9244
9579
  }).catch(() => void 0);
9245
9580
  }
9246
9581
  //#endregion
9582
+ //#region src/shared/hooks/resource-view.ts
9583
+ var IDLE = { phase: "idle" };
9584
+ var LOADING = { phase: "loading" };
9585
+ function resourceViewOf(enabled, current, identity) {
9586
+ if (!enabled) return IDLE;
9587
+ return current.identity === identity ? current.state : LOADING;
9588
+ }
9589
+ //#endregion
9247
9590
  //#region src/shared/hooks/use-api-resource.ts
9248
9591
  var use_api_resource_exports = /* @__PURE__ */ __exportAll({
9249
9592
  readKeyOf: () => readKeyOf,
@@ -9315,7 +9658,10 @@ function useApiResource(route, query, refreshToken, options = {}) {
9315
9658
  const identity = resourceIdentity(route, query, options.key);
9316
9659
  const factRev = useFactRevision(options.fact ?? factOfRoute(route));
9317
9660
  const key = readKeyOf(identity, refreshToken, factRev);
9318
- const [state, setState] = useState(() => enabled ? { phase: "loading" } : { phase: "idle" });
9661
+ const [current, setCurrent] = useState(() => ({
9662
+ identity,
9663
+ state: enabled ? LOADING : IDLE
9664
+ }));
9319
9665
  const lastIdentity = useRef(null);
9320
9666
  const queryRef = useRef(query);
9321
9667
  useEffect(() => {
@@ -9324,17 +9670,23 @@ function useApiResource(route, query, refreshToken, options = {}) {
9324
9670
  useEffect(() => {
9325
9671
  if (!enabled) {
9326
9672
  lastIdentity.current = null;
9327
- setState({ phase: "idle" });
9328
9673
  return;
9329
9674
  }
9330
9675
  let cancelled = false;
9676
+ const put = (state) => setCurrent({
9677
+ identity,
9678
+ state
9679
+ });
9331
9680
  const sameIdentity = lastIdentity.current === identity;
9332
9681
  lastIdentity.current = identity;
9333
- setState((prev) => sameIdentity && prev.value !== void 0 ? {
9334
- phase: "loading",
9335
- value: prev.value,
9336
- ...prev.at === void 0 ? {} : { at: prev.at }
9337
- } : { phase: "loading" });
9682
+ setCurrent((prev) => ({
9683
+ identity,
9684
+ state: sameIdentity && prev.state.value !== void 0 ? {
9685
+ phase: "loading",
9686
+ value: prev.state.value,
9687
+ ...prev.state.at === void 0 ? {} : { at: prev.state.at }
9688
+ } : LOADING
9689
+ }));
9338
9690
  const flight = requestResource(route, queryRef.current, key);
9339
9691
  const owner = options.report === false ? null : unitOfRoute(route);
9340
9692
  if (owner !== null) reportPanelRead({
@@ -9345,7 +9697,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
9345
9697
  flight.task.then((response) => {
9346
9698
  if (cancelled) return;
9347
9699
  if (response.ok) {
9348
- setState({
9700
+ put({
9349
9701
  phase: "ready",
9350
9702
  value: response,
9351
9703
  at: Date.now()
@@ -9357,7 +9709,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
9357
9709
  });
9358
9710
  return;
9359
9711
  }
9360
- setState({
9712
+ put({
9361
9713
  phase: "error",
9362
9714
  error: response.error
9363
9715
  });
@@ -9373,7 +9725,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
9373
9725
  }).catch((reason) => {
9374
9726
  if (cancelled) return;
9375
9727
  const message = reason instanceof Error ? reason.message : String(reason);
9376
- setState({
9728
+ put({
9377
9729
  phase: "error",
9378
9730
  error: {
9379
9731
  code: "network",
@@ -9404,7 +9756,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
9404
9756
  options.fact,
9405
9757
  options.report
9406
9758
  ]);
9407
- return state;
9759
+ return resourceViewOf(enabled, current, identity);
9408
9760
  }
9409
9761
  //#endregion
9410
9762
  //#region src/shared/hooks/use-diy-debug.ts
@@ -10451,6 +10803,26 @@ function assembleClientUnits(registry) {
10451
10803
  for (const face of CLIENT_UNITS) registry.register(face);
10452
10804
  }
10453
10805
  //#endregion
10806
+ //#region src/app/units/unit-titles.ts
10807
+ var UNIT_TITLES_OWNER = "dsh-workbench";
10808
+ function unitTitlesOf(manifests) {
10809
+ const zh = {};
10810
+ const en = {};
10811
+ for (const manifest of manifests) {
10812
+ const title = manifest.title;
10813
+ if (title === void 0 || title.zh.trim() === "" || title.en.trim() === "") continue;
10814
+ zh[unitTitleKey(manifest.id)] = title.zh;
10815
+ en[unitTitleKey(manifest.id)] = title.en;
10816
+ }
10817
+ return {
10818
+ unit: UNIT_TITLES_OWNER,
10819
+ messages: {
10820
+ zh,
10821
+ en
10822
+ }
10823
+ };
10824
+ }
10825
+ //#endregion
10454
10826
  //#region src/kernel/client/board-registry.ts
10455
10827
  function createBoardRegistry() {
10456
10828
  const modules = [];
@@ -10511,7 +10883,7 @@ function toBoardModule(face, manifest) {
10511
10883
  if (View === void 0) return void 0;
10512
10884
  return {
10513
10885
  id: manifest.id,
10514
- titleKey: manifest.card?.titleKey ?? manifest.id,
10886
+ titleKey: manifest.titleKey,
10515
10887
  order: manifest.card?.order ?? 100,
10516
10888
  View,
10517
10889
  ...face.steps === void 0 ? {} : { steps: face.steps }
@@ -10526,6 +10898,10 @@ function createClientUnitRegistry(options = {}) {
10526
10898
  let installableIds = null;
10527
10899
  let revision = 0;
10528
10900
  let manifestsCache;
10901
+ let titleSignature = "";
10902
+ function titlesOf(manifests) {
10903
+ return manifests.flatMap((manifest) => manifest.title === void 0 ? [] : [`${manifest.id}=${manifest.title.zh}/${manifest.title.en}`]).join("|");
10904
+ }
10529
10905
  function notify() {
10530
10906
  revision += 1;
10531
10907
  for (const listener of [...listeners]) try {
@@ -10605,7 +10981,10 @@ function createClientUnitRegistry(options = {}) {
10605
10981
  for (const entry of registrations) {
10606
10982
  const next = known.get(entry.unit);
10607
10983
  if (entry.mounted === null) {
10608
- if (next !== void 0 && attach(entry)) changed = true;
10984
+ if (next !== void 0) {
10985
+ attach(entry);
10986
+ changed = true;
10987
+ }
10609
10988
  continue;
10610
10989
  }
10611
10990
  if (next === void 0) {
@@ -10614,6 +10993,11 @@ function createClientUnitRegistry(options = {}) {
10614
10993
  changed = true;
10615
10994
  }
10616
10995
  }
10996
+ const titles = titlesOf(manifests);
10997
+ if (titles !== titleSignature) {
10998
+ titleSignature = titles;
10999
+ changed = true;
11000
+ }
10617
11001
  if (!changed) return;
10618
11002
  manifestsCache = void 0;
10619
11003
  notify();
@@ -11384,6 +11768,7 @@ function publishRows(args, preview, t) {
11384
11768
  const unit = textOf(args, "unit");
11385
11769
  const target = textOf(args, "target");
11386
11770
  const version = textOf(args, "version");
11771
+ const author = textOf(args, "author");
11387
11772
  const rows = [
11388
11773
  {
11389
11774
  label: t("approval.publish.module"),
@@ -11399,7 +11784,7 @@ function publishRows(args, preview, t) {
11399
11784
  },
11400
11785
  {
11401
11786
  label: t("approval.publish.author"),
11402
- value: preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
11787
+ value: author !== "" ? author : preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
11403
11788
  }
11404
11789
  ];
11405
11790
  const market = preview?.market;
@@ -11446,17 +11831,22 @@ function PublishChangelogSeat({ changelog, t }) {
11446
11831
  function PublishApprovalSeat({ args, t }) {
11447
11832
  const unit = textOf(args, "unit");
11448
11833
  const version = textOf(args, "version");
11834
+ const author = textOf(args, "author");
11449
11835
  const [preview, setPreview] = useState(() => unit === "" ? null : void 0);
11450
11836
  useEffect(() => {
11451
11837
  if (unit === "") return;
11452
11838
  let live = true;
11453
- readPublishPreview(unit, version).then((response) => {
11839
+ readPublishPreview(unit, version, author).then((response) => {
11454
11840
  if (live) setPreview(response.ok ? response.preview : null);
11455
11841
  });
11456
11842
  return () => {
11457
11843
  live = false;
11458
11844
  };
11459
- }, [unit, version]);
11845
+ }, [
11846
+ unit,
11847
+ version,
11848
+ author
11849
+ ]);
11460
11850
  return createElement(ApprovalPlan, { rows: publishRows(args, preview, t) }, createElement(PublishChangelogSeat, {
11461
11851
  changelog: preview?.changelog,
11462
11852
  t
@@ -12221,10 +12611,10 @@ function dismissPanelByPointer(next, scope, onOpenChange) {
12221
12611
  //#region src/app/layouts/rightbar/PanelModules.tsx
12222
12612
  function PanelModules({ t, open, onOpenChange, enabledUnits, workspace, refreshToken, manifests, onOpenMarket }) {
12223
12613
  const { capabilities, checkedAt, forceProbe } = useCapabilityMap(refreshToken);
12224
- const [decided, setDecided] = useState(false);
12614
+ const decided = useRef(false);
12225
12615
  useEffect(() => {
12226
- if (!open || decided) return;
12227
- setDecided(true);
12616
+ if (!open || decided.current) return;
12617
+ decided.current = true;
12228
12618
  if (!shouldProbeOnEnter({
12229
12619
  checkedAt,
12230
12620
  now: Date.now(),
@@ -12234,7 +12624,6 @@ function PanelModules({ t, open, onOpenChange, enabledUnits, workspace, refreshT
12234
12624
  forceProbe();
12235
12625
  }, [
12236
12626
  open,
12237
- decided,
12238
12627
  checkedAt,
12239
12628
  forceProbe
12240
12629
  ]);
@@ -14374,7 +14763,7 @@ function messagesOf(units) {
14374
14763
  ...face.messages === void 0 ? {} : { messages: face.messages }
14375
14764
  }));
14376
14765
  }
14377
- 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*/";
14766
+ 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_1idrk_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_1idrk_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_1idrk_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_1idrk_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_1idrk_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_1idrk_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_1idrk_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_1idrk_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_1idrk_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_1idrk_39 ._marketVersion_1idrk_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_1idrk_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_1idrk_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_1idrk_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_1idrk_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_1idrk_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_1idrk_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_1idrk_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_1idrk_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_1idrk_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_1idrk_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_1idrk_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_1idrk_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_1idrk_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_1idrk_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_1idrk_175 ._marketSectionTitle_1idrk_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_1idrk_175 ._marketName_1idrk_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_1idrk_175 ._marketIcon_1idrk_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_1idrk_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_1idrk_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_1idrk_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_1idrk_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_1idrk_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_1idrk_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_1idrk_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_1idrk_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_1idrk_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_1idrk_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_1idrk_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_1idrk_263[hidden] {\n display: none;\n}\n\n._marketTabs_1idrk_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_1idrk_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_1idrk_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_1idrk_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_1idrk_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_1idrk_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_1idrk_312 svg {\n animation: _wb-spin_1idrk_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_1idrk_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_1idrk_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_1idrk_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_1idrk_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_1idrk_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_1idrk_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_1idrk_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_1idrk_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_1idrk_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_1idrk_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_1idrk_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_1idrk_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_1idrk_395 {\n flex: none;\n}\n\n._discoverSearch_1idrk_399 {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n._discoverSearchField_1idrk_407 {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._discoverSearchFieldFilled_1idrk_412 input {\n padding-inline-end: var(--wb-len-20);\n}\n\n._discoverSearchField_1idrk_407 input::-webkit-search-cancel-button {\n appearance: none;\n -webkit-appearance: none;\n}\n\n._discoverSearch_1idrk_399 ._discoverSearchClear_1idrk_421 {\n position: absolute;\n top: 50%;\n inset-inline-end: var(--wb-len-4);\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-tertiary);\n transform: translateY(-50%);\n}\n\n._discoverSearchClear_1idrk_421:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_1idrk_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_1idrk_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_1idrk_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_1idrk_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_1idrk_399 {\n grid-area: search;\n }\n\n ._discoverSort_1idrk_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_1idrk_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_1idrk_472 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_1idrk_479 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._discoverCard_1idrk_488 {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n margin: 0 calc(0px - var(--wb-len-8));\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCard_1idrk_488:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_1idrk_502 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverArtworkImage_1idrk_514 {\n object-fit: contain;\n}\n\n._discoverMain_1idrk_518 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_1idrk_526 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverCardOpen_1idrk_534 {\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n}\n\n._discoverCardOpen_1idrk_534::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_1idrk_534:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_1idrk_534:focus-visible::after {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverStrong_1idrk_565 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_1idrk_571 {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverMeta_1idrk_580 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._discoverMuted_1idrk_587 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_1idrk_593 {\n position: relative;\n z-index: var(--wb-z-10);\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverBlocked_1idrk_602 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_1idrk_607 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) 0;\n text-align: center;\n}\n\n._discoverEmptyTitle_1idrk_616 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_1idrk_607 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_1idrk_626 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_1idrk_632 {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n padding: 0;\n border: 0;\n background: 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: var(--wb-font-12-5);\n cursor: pointer;\n}\n\n._discoverCrumb_1idrk_632:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_1idrk_632:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverCrumbIcon_1idrk_655 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_1idrk_659 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_1idrk_665 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_1idrk_671 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._discoverDetailPanel_1idrk_678 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_1idrk_685 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_1idrk_690 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_1idrk_695 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_1idrk_700 {\n margin: var(--wb-len-16) 0 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverSection_1idrk_706 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_1idrk_713 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_1idrk_719 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_1idrk_724 {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--wb-len-16);\n min-height: var(--wb-len-44);\n padding: var(--wb-len-8) var(--wb-len-2);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverFactKind_1idrk_734 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_1idrk_740 {\n min-width: 0;\n margin: 0;\n text-align: end;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n}\n\n._discoverCode_1idrk_748 {\n padding: var(--wb-len-2) var(--wb-len-6);\n border-radius: var(--wb-radius-6);\n background: var(--dsw-alias-bg-module-platform);\n font-family: var(--ds-font-family-code);\n font-size: var(--dsw-font-xxs-12-font-size);\n box-decoration-break: clone;\n}\n\n._discoverTags_1idrk_757 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_1idrk_764 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_1idrk_764:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_1idrk_774 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_1idrk_782 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverVersionName_1idrk_790 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_1idrk_795 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverFailure_1idrk_804 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_1idrk_810 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverNotice_1idrk_819 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverNotice_1idrk_819 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_1idrk_837 {\n align-self: center;\n}\n\n._discoverDialog_1idrk_841 {\n width: min(var(--wb-len-480), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_1idrk_845 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_1idrk_851 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_1idrk_859 {\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_1idrk_868 {\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_1idrk_875 {\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_1idrk_885 {\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_1idrk_885 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_1idrk_899 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_1idrk_905 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_1idrk_911 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_1idrk_916 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_1idrk_922 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_1idrk_927 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_1idrk_933 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_1idrk_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_1idrk_502._discoverSkeletonFill_1idrk_933 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_1idrk_942 {\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_1idrk_949 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_1idrk_953 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_1idrk_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_1idrk_933 {\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*/";
14378
14767
  function workbenchCss() {
14379
14768
  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}`;
14380
14769
  }
@@ -14426,7 +14815,7 @@ function mount(ctx) {
14426
14815
  let disposeDictionary;
14427
14816
  const publish = () => {
14428
14817
  disposeDictionary?.();
14429
- const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, messagesOf(units.all()));
14818
+ const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, [unitTitlesOf(units.manifests()), ...messagesOf(units.all())]);
14430
14819
  for (const problem of problems) console.warn(`[dsh-workbench] 套件 ${problem.unit} 的文案没并进来(只有它少了这几句):${problem.reason}`);
14431
14820
  disposeDictionary = ctx.locale.register(LOCALE_NS, merged);
14432
14821
  };