@dsh-workbench/core 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +16 -3
  2. package/bin/dsh-workbench +38 -6
  3. package/client.js +669 -305
  4. package/dist/client/client.body.js +669 -305
  5. package/dist/client/index.js +669 -305
  6. package/dist/host/index.js +445 -37
  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/scripts/seed-profile.sh +9 -7
  35. package/scripts/share-data-root.mjs +272 -64
  36. package/skills/workbench-module-diy/FAMILY.md +1 -1
  37. package/skills/workbench-module-diy/REVIEW.md +2 -2
  38. package/skills/workbench-module-diy/SKILL.md +1 -0
  39. package/skills/workbench-module-diy/TOOLS.md +1 -1
  40. package/skills/workbench-module-diy/WIRING.md +3 -1
  41. package/skills/workbench-module-diy/WRITES.md +1 -1
@@ -2723,6 +2723,32 @@ var SIDEBAR_EDITION_RESOURCE = "sidebarEdition";
2723
2723
  //#region ../shared/dist/contract/protocol/unit-manifests.js
2724
2724
  var UNIT_MANIFESTS_ROUTE = "unit-manifests";
2725
2725
  //#endregion
2726
+ //#region ../shared/dist/contract/unit.js
2727
+ /**
2728
+ * 外壳替模块名合成的词表键:模块自己不必写名字键,名字直接从清单里的 title 注册进来。
2729
+ * @param unit 单元 id。
2730
+ * @returns 该单元名字在词表里的键。
2731
+ */
2732
+ function unitTitleKey(unit) {
2733
+ return `dsh-workbench.unit.${unit}.title`;
2734
+ }
2735
+ /**
2736
+ * 模块声明的全部环境需要(没写就是空表)。
2737
+ * @param manifest 模块清单。
2738
+ * @returns need 列表。
2739
+ */
2740
+ function needsOf(manifest) {
2741
+ return manifest.needs ?? [];
2742
+ }
2743
+ /**
2744
+ * 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
2745
+ * @param manifest 模块清单。
2746
+ * @returns extension / lib 的 need 列表。
2747
+ */
2748
+ function supplyNeedsOf(manifest) {
2749
+ return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
2750
+ }
2751
+ //#endregion
2726
2752
  //#region ../shared/dist/contract/needs.js
2727
2753
  function text(value) {
2728
2754
  return typeof value === "string" ? value.trim() : "";
@@ -2785,24 +2811,6 @@ Object.freeze({
2785
2811
  })
2786
2812
  });
2787
2813
  //#endregion
2788
- //#region ../shared/dist/contract/unit.js
2789
- /**
2790
- * 模块声明的全部环境需要(没写就是空表)。
2791
- * @param manifest 模块清单。
2792
- * @returns need 列表。
2793
- */
2794
- function needsOf(manifest) {
2795
- return manifest.needs ?? [];
2796
- }
2797
- /**
2798
- * 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
2799
- * @param manifest 模块清单。
2800
- * @returns extension / lib 的 need 列表。
2801
- */
2802
- function supplyNeedsOf(manifest) {
2803
- return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
2804
- }
2805
- //#endregion
2806
2814
  //#region ../shared/dist/i18n/settings.js
2807
2815
  /** 「工作台设置」这一组的词条:配置同步 / 新建工作台。 */
2808
2816
  var zhSettings = {
@@ -3071,14 +3079,14 @@ var en = {
3071
3079
  "panels.market.update": "Update",
3072
3080
  "panels.market.swapSlow": "Not swapped yet — maybe a slow or failed download. Press Update again; if it stays like this, restart dsh.",
3073
3081
  "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.",
3074
- "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}.",
3082
+ "panels.market.updateNoChange": "Update failed: still {from}. The newest on the registry is {latest} — press Update again.",
3075
3083
  "panels.market.updateUnknownVersion": "(unknown)",
3076
- "panels.market.updateGone": "Not updated: after the run the module cannot be read from disk.",
3077
- "panels.market.updateRestored": "Not updated: the new version was missing from disk, so {version} was put back.",
3084
+ "panels.market.updateGone": "Update failed: the module is gone after the update.",
3085
+ "panels.market.updateRestored": "Update failed: the new version could not be found after the update, so {version} was put back.",
3078
3086
  "panels.market.updateBehind": "Installed {installed}, but the newest on the registry is {latest} — not the latest; you can update once more.",
3079
- "panels.market.selfUpdateFailed": "Self-update failed: {reason}",
3087
+ "panels.market.selfUpdateFailed": "Workbench update failed: {reason}",
3080
3088
  "panels.market.selfUpdateUnknown": "the outside process left no reason (see ~/.dsh/workbench/self-update.log)",
3081
- "panels.market.selfUpdateRolledBack": "Not swapped; rolled back to {version}.",
3089
+ "panels.market.selfUpdateRolledBack": "Workbench update failed; rolled back to {version}.",
3082
3090
  "panels.market.uninstall": "Uninstall",
3083
3091
  "panels.market.uninstallLabel": "Uninstall {name}",
3084
3092
  "panels.market.installing": "Installing…",
@@ -3100,9 +3108,27 @@ var en = {
3100
3108
  "panels.market.empty": "No modules available",
3101
3109
  "panels.market.sectionPlugins": "Installed opencli plugins",
3102
3110
  "panels.market.moduleOutdated": "update available",
3111
+ "panels.market.updateNeedsWorkbench": "this version needs a newer workbench first",
3112
+ "panels.market.updateIncompatible": "the new version does not match this workbench, so it cannot be installed now",
3103
3113
  "panels.market.moduleRefused": "This module does not match this workbench, so it cannot be used for now.",
3104
3114
  "panels.market.moduleRestartHint": "restart dsh once to bring it up",
3105
3115
  "panels.market.pendingRestart": "restart required",
3116
+ "panels.market.pendingFollowUp": "old data to migrate",
3117
+ "panels.market.migrationHint": "old sessions and projects are not merged yet",
3118
+ "panels.market.migrateAction": "Migrate old data",
3119
+ "panels.market.migrating": "Migrating…",
3120
+ "panels.market.migrateConfirmTitle": "Migrate old data?",
3121
+ "panels.market.migrateConfirmDetail": "Quit dsh web / Desktop first. Only missing data is added; nothing is overwritten.",
3122
+ "panels.market.migrateConfirmAck": "I've quit dsh web / Desktop",
3123
+ "panels.market.migrateConfirmYes": "Start migration",
3124
+ "panels.market.migrateDone": "Migration complete: {added} projects added; restart the workbench and dsh web to see them.",
3125
+ "panels.market.dismissFollowUp": "Don't remind me",
3126
+ "panels.market.dismissing": "Dismissing…",
3127
+ "panels.market.dismissFollowUpTitle": "Stop reminding about this?",
3128
+ "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.",
3129
+ "panels.market.dismissFollowUpAck": "I understand the old data won't appear automatically",
3130
+ "panels.market.dismissFollowUpYes": "Don't remind me",
3131
+ "panels.market.dismissed": "No longer reminded; old data stays in the old directory and can still be migrated with dsh-workbench migrate.",
3106
3132
  "panels.market.workbenchName": "Workbench",
3107
3133
  "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.",
3108
3134
  "panels.market.restartNeeded": "The new version is installed — restart once to pick it up.",
@@ -3186,7 +3212,7 @@ var en = {
3186
3212
  "panels.market.add.exampleTitle": "Examples",
3187
3213
  "panels.market.add.exampleFill": "Fill in an example",
3188
3214
  "panels.market.add.registryLabel": "Source",
3189
- "panels.market.add.registryProfile": "This profile's registry",
3215
+ "panels.market.add.registryProfile": "This workbench's registry",
3190
3216
  "panels.market.add.registryPnpm": "pnpm's own registry",
3191
3217
  "panels.market.add.check": "Check",
3192
3218
  "panels.market.add.checking": "Checking…",
@@ -3207,12 +3233,16 @@ var en = {
3207
3233
  "panels.market.tabs": "The two faces of the module market",
3208
3234
  "panels.tab.discover": "Discover",
3209
3235
  "panels.discover.loading": "Reading the index",
3236
+ "panels.discover.slowHint": "Slow to load: finish any authorization prompt, or switch sources.",
3210
3237
  "panels.discover.lead": "Browse modules from an index source; install and go.",
3211
3238
  "panels.discover.addSource": "Add",
3212
3239
  "panels.discover.addingSource": "Adding…",
3213
3240
  "panels.discover.addFirstSource": "Add index source",
3214
3241
  "panels.discover.removeSource": "Remove",
3215
3242
  "panels.discover.removeSourceNamed": "Remove {url}",
3243
+ "panels.discover.useSource": "Use",
3244
+ "panels.discover.useSourceNamed": "Use {label}",
3245
+ "panels.discover.sourceCurrent": "In use",
3216
3246
  "panels.discover.refresh": "Refresh",
3217
3247
  "panels.discover.search": "Search modules",
3218
3248
  "panels.discover.all": "All",
@@ -3224,8 +3254,8 @@ var en = {
3224
3254
  "panels.discover.sourcePlaceholder": "https://example.com/index.json or git@git.example.com:wb/market.git",
3225
3255
  "panels.discover.sourceRef": "Branch",
3226
3256
  "panels.discover.sourcePath": "Index file",
3227
- "panels.discover.sourceLocal": "Local clone (optional)",
3228
- "panels.discover.sourceLocalHint": "Leave empty to clone into ~/.dsh/workbench/market-index/.",
3257
+ "panels.discover.sourceLocal": "Local copy folder (optional)",
3258
+ "panels.discover.sourceLocalHint": "Leave empty to keep it in ~/.dsh/workbench/market-index/.",
3229
3259
  "panels.discover.save": "Save and refresh",
3230
3260
  "panels.discover.cancel": "Cancel",
3231
3261
  "panels.discover.retry": "Retry",
@@ -3238,9 +3268,9 @@ var en = {
3238
3268
  "panels.discover.missingIndex": "This repository has no {path} yet.",
3239
3269
  "panels.discover.initTitle": "Initialize this repository as a module market index?",
3240
3270
  "panels.discover.initCta": "Initialize market index",
3241
- "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.",
3271
+ "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.",
3242
3272
  "panels.discover.initBranch": "Branch",
3243
- "panels.discover.initBranchHint": "The index and artifacts go to this branch; an empty repository gets it created.",
3273
+ "panels.discover.initBranchHint": "The index and build files go to this branch; an empty repository gets it created.",
3244
3274
  "panels.discover.initBranchBad": "Use only letters, digits, dots, underscores, slashes, or dashes in a branch name.",
3245
3275
  "panels.discover.initOk": "Initialize",
3246
3276
  "panels.discover.initBusy": "Initializing…",
@@ -3344,11 +3374,11 @@ var en = {
3344
3374
  "panels.market.add.doneApplied": "Installed and live.",
3345
3375
  "panels.market.add.doneRestart": "Installed — restart once to pick it up.",
3346
3376
  "panels.market.add.restartWhy": "Why this needs a restart: {reason}",
3347
- "panels.market.add.restartWhy.no-hmr": "this configuration only applies changes at startup (hot reload is off)",
3377
+ "panels.market.add.restartWhy.no-hmr": "this configuration is only read at startup, so a restart is needed",
3348
3378
  "panels.market.add.restartWhy.package-moved": "an installed package now resolves to another directory, or the change replaced something dsh itself provides",
3349
3379
  "panels.market.add.restartWhy.host-module": "the change reaches modules dsh itself loaded",
3350
- "panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin running outside the plugin list",
3351
- "panels.market.add.restartWhy.module-comparison": "dsh could not compare loaded plugins with their files",
3380
+ "panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin that is running but not on the install list",
3381
+ "panels.market.add.restartWhy.module-comparison": "dsh could not confirm that the running plugin is the copy installed on this machine",
3352
3382
  "panels.market.add.cancelled": "Cancelled.",
3353
3383
  "panels.market.add.failed": "Didn't work: {reason}",
3354
3384
  "panels.market.add.removed": "It has been removed.",
@@ -3358,10 +3388,10 @@ var en = {
3358
3388
  "panels.market.add.removedRestart": "Removed — restart once to finish.",
3359
3389
  "panels.market.add.remove": "Remove it",
3360
3390
  "panels.market.add.problem.invalidSpec": "That is not a spec we accept: it cannot be empty or start with a dash.",
3361
- "panels.market.add.problem.alreadyInstalled": "That package is already in the profile (add @version to switch versions).",
3391
+ "panels.market.add.problem.alreadyInstalled": "That package is already in this workbench (add @version to switch versions).",
3362
3392
  "panels.market.add.problem.notFound": "No such package on that source. Try another name or version.",
3363
3393
  "panels.market.add.problem.notAPackage": "There is no package at that location. Pick a folder that contains a package.json.",
3364
- "panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (it is missing the dsh wiring declaration).",
3394
+ "panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (dsh cannot find what to load inside it).",
3365
3395
  "panels.market.add.problem.network": "The source is unreachable. Check the network and retry.",
3366
3396
  "panels.market.add.problem.unknown": "The check did not pass (reason unknown). Open the install details for the raw output, or retry.",
3367
3397
  "panels.market.add.reason.invalidSpec": "the spec is not accepted",
@@ -3369,7 +3399,7 @@ var en = {
3369
3399
  "panels.market.add.reason.notBundle": "it is not a dsh plugin package",
3370
3400
  "panels.market.add.reason.notRemovable": "it ships with the installation and cannot be removed",
3371
3401
  "panels.market.add.reason.bundleInUse": "something is still using it",
3372
- "panels.market.add.reason.stopProfile": "this configuration has no hot reload, so stop the process first",
3402
+ "panels.market.add.reason.stopProfile": "this configuration needs a restart, so stop the workbench first",
3373
3403
  "panels.market.add.reason.staleApproval": "the scripts to allow changed — start over",
3374
3404
  "panels.market.add.reason.operationError": "pnpm failed (see the install output)",
3375
3405
  "panels.market.add.reason.buildBlocked": "pnpm blocked install scripts",
@@ -3399,8 +3429,8 @@ var en = {
3399
3429
  "blocker.forbidden.titleGeneric": "No access",
3400
3430
  "blocker.forbidden.hint": "You are signed in, but this project/repo is not permitted for your account.",
3401
3431
  "blocker.forbidden.open": "Open permissions page",
3402
- "blocker.timeout.hint": "The headless browser may not have started; retrying usually helps.",
3403
- "blocker.exec.hint": "Make sure opencli is installed and on PATH (which opencli).",
3432
+ "blocker.timeout.hint": "The background browser may not have started; retrying usually helps.",
3433
+ "blocker.exec.hint": "Make sure opencli is installed and runs from your terminal (which opencli).",
3404
3434
  "blocker.unknown.title": "Something went wrong",
3405
3435
  "panels.reading": "Reading the panel setup…",
3406
3436
  "panels.cardBroken": "This module will not render: {unit} ({reason})",
@@ -3414,7 +3444,7 @@ var en = {
3414
3444
  "env.elapsed": "Waiting {seconds}s",
3415
3445
  "env.stepFailed.install": "install failed",
3416
3446
  "env.stepFailed.path": "installed but not found",
3417
- "env.stepFailed.shell": "no shell channel",
3447
+ "env.stepFailed.shell": "cannot reach the command line",
3418
3448
  "env.toolchain.ok": "Looks good",
3419
3449
  "env.toolchain.warn": "Almost ready",
3420
3450
  "env.opencli.ok": "Ready",
@@ -3431,10 +3461,10 @@ var en = {
3431
3461
  "env.fix.title": "How to fix it",
3432
3462
  "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.",
3433
3463
  "env.fix.whyPath": "The background tool is installed, but this environment cannot find it — usually a PATH or shell-session issue.",
3434
- "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.",
3464
+ "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.",
3435
3465
  "env.fix.step": "Run this in a terminal, then hit Retry:",
3436
3466
  "env.fix.stepPath": "Open a new terminal window (or make sure npm’s global bin directory is on PATH), then hit Retry.",
3437
- "env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the shell channel is not wired up.",
3467
+ "env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the workbench still cannot reach the command line.",
3438
3468
  "env.fix.permission": "Permission denied: rerun with sudo, or point npm’s global directory at your home.",
3439
3469
  "env.fix.network": "Network unreachable: check your network or proxy, then retry.",
3440
3470
  "env.fix.details": "Details (for troubleshooting)",
@@ -3463,9 +3493,9 @@ var en = {
3463
3493
  "env.warm.done": "Ready ({n} sites)",
3464
3494
  "env.warm.short": "Could not sign in early this time — nothing breaks; the first read fills it in",
3465
3495
  "env.unit.failed": "This module cannot start",
3466
- "env.unit.failedHint": "It failed while assembling itself; other modules are unaffected.",
3467
- "env.unit.unchecked": "Cannot check: no shell channel",
3468
- "env.unit.uncheckedHint": "The module is not the problem — the shell channel is unavailable. Restart the workbench.",
3496
+ "env.unit.failedHint": "It failed while starting up; other modules are unaffected.",
3497
+ "env.unit.unchecked": "Cannot check: no command line",
3498
+ "env.unit.uncheckedHint": "The module is not the problem — the workbench cannot reach the command line. Restart the workbench.",
3469
3499
  "adapterSet.not-configured": "No adapter set configured; using the default.",
3470
3500
  "adapterSet.no-profile": "No profile found, so the adapter set cannot load; using the default.",
3471
3501
  "adapterSet.malformed": "An adapter set must be a package name (for example @acme/adapters-set); using the default.",
@@ -3508,7 +3538,7 @@ var en = {
3508
3538
  "sidebarEdition.official": "Official",
3509
3539
  "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.",
3510
3540
  "sidebarEdition.custom": "Custom",
3511
- "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.",
3541
+ "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.",
3512
3542
  "sidebarEdition.saving": "Configuring…",
3513
3543
  "sidebarEdition.reloadRequired": "Saved. Reload the page to apply — no workbench restart needed.",
3514
3544
  "sidebarEdition.reload": "Reload page",
@@ -3537,25 +3567,25 @@ var en = {
3537
3567
  "record.act.halt": "Halt",
3538
3568
  "approval.record.site": "Site",
3539
3569
  "approval.record.what": "Records",
3540
- "approval.record.lands": "Lands in",
3570
+ "approval.record.lands": "Saves to",
3541
3571
  "approval.record.noUrl": "no site given (this call gets refused)",
3542
3572
  "approval.record.oneAction": "one action",
3543
3573
  "approval.record.noSwitch": "it will not switch you back (the leftbar footer shows the state)",
3544
- "approval.longTask.what": "Stops",
3545
- "approval.longTask.signal": "stopping only sends an interrupt signal — how the platform-side run finishes is up to the module",
3574
+ "approval.longTask.what": "Task to stop",
3575
+ "approval.longTask.signal": "stopping only sends an interrupt signal — wrapping up the run is up to the module",
3546
3576
  "approval.publish.module": "Module",
3547
3577
  "approval.publish.target": "Target",
3548
3578
  "approval.publish.version": "Version",
3549
3579
  "approval.publish.author": "Author",
3550
- "approval.publish.authorMissing": "unsigned (commits use the local git identity)",
3580
+ "approval.publish.authorMissing": "unsigned",
3551
3581
  "approval.publish.registry": "Registry",
3552
3582
  "approval.publish.repo": "Repository",
3553
3583
  "approval.publish.branch": "Branch",
3554
3584
  "approval.publish.defaultBranch": "default branch",
3555
- "approval.publish.artifacts": "Artifacts",
3585
+ "approval.publish.artifacts": "Build files",
3556
3586
  "approval.publish.index": "Index",
3557
3587
  "approval.publish.commits": "Commits",
3558
- "approval.publish.twoCommits": "artifacts + market.json in 2 commits, one push",
3588
+ "approval.publish.twoCommits": "build files + market.json in 2 commits, one push",
3559
3589
  "approval.publish.reading": "Reading…",
3560
3590
  "approval.publish.changelog": "Changelog for {version}",
3561
3591
  "approval.publish.changelogMissing": "No changelog entry for {version}; publishing will be blocked",
@@ -3703,14 +3733,14 @@ var dictionaries = {
3703
3733
  "panels.market.update": "更新",
3704
3734
  "panels.market.swapSlow": "还没换上:可能网慢或没装上。再点一次「更新」;一直这样就把 dsh 重启一遍。",
3705
3735
  "panels.market.removeSlow": "还没卸掉:可能网慢或卸载没走完。等一下再看;一直这样就把 dsh 重启一遍。",
3706
- "panels.market.updateNoChange": "没换成:点下去是 {from},跑完盘上还是这一版;源上最新是 {latest}。",
3736
+ "panels.market.updateNoChange": "更新失败:还是 {from};源上最新是 {latest},可以再点一次「更新」。",
3707
3737
  "panels.market.updateUnknownVersion": "(问不到)",
3708
- "panels.market.updateGone": "没换成:更新跑完盘上读不到这个模块。",
3709
- "panels.market.updateRestored": "没换成:盘上已经读不到新版本,已把 {version} 装回去。",
3738
+ "panels.market.updateGone": "更新失败:更新后找不到这个模块。",
3739
+ "panels.market.updateRestored": "更新失败:更新后找不到新版本,已把 {version} 装回去。",
3710
3740
  "panels.market.updateBehind": "装上了 {installed},但源上最新是 {latest} —— 没更到最新,可以再点一次。",
3711
- "panels.market.selfUpdateFailed": "自更新没成:{reason}",
3741
+ "panels.market.selfUpdateFailed": "工作台更新失败:{reason}",
3712
3742
  "panels.market.selfUpdateUnknown": "外部进程没留下原因(看 ~/.dsh/workbench/self-update.log)",
3713
- "panels.market.selfUpdateRolledBack": "没换成,已回滚到 {version}。",
3743
+ "panels.market.selfUpdateRolledBack": "工作台更新失败,已回滚到 {version}。",
3714
3744
  "panels.market.uninstall": "卸载",
3715
3745
  "panels.market.uninstallLabel": "卸载 {name}",
3716
3746
  "panels.market.installing": "正在安装…",
@@ -3732,9 +3762,27 @@ var dictionaries = {
3732
3762
  "panels.market.empty": "暂无可用模块",
3733
3763
  "panels.market.sectionPlugins": "已安装 opencli 插件",
3734
3764
  "panels.market.moduleOutdated": "有新版",
3765
+ "panels.market.updateNeedsWorkbench": "新版本要先把工作台升级才能用",
3766
+ "panels.market.updateIncompatible": "新版本和当前的工作台不匹配,暂时不能更新",
3735
3767
  "panels.market.moduleRefused": "模块版本与工作台不匹配,暂时无法使用",
3736
3768
  "panels.market.moduleRestartHint": "重启后生效",
3737
3769
  "panels.market.pendingRestart": "重启后生效",
3770
+ "panels.market.pendingFollowUp": "旧数据待迁移",
3771
+ "panels.market.migrationHint": "旧会话和项目还没搬过来",
3772
+ "panels.market.migrateAction": "迁移旧数据",
3773
+ "panels.market.migrating": "正在迁移…",
3774
+ "panels.market.migrateConfirmTitle": "迁移旧数据?",
3775
+ "panels.market.migrateConfirmDetail": "先退出 dsh web / Desktop。迁移只补缺、不覆盖;旧目录保留。",
3776
+ "panels.market.migrateConfirmAck": "我已经退出 dsh web / Desktop",
3777
+ "panels.market.migrateConfirmYes": "开始迁移",
3778
+ "panels.market.migrateDone": "迁移完成:补了 {added} 个项目;重启工作台和 dsh web 后出现。",
3779
+ "panels.market.dismissFollowUp": "不再提醒",
3780
+ "panels.market.dismissing": "正在收起…",
3781
+ "panels.market.dismissFollowUpTitle": "不再提醒这件事?",
3782
+ "panels.market.dismissFollowUpDetail": "提示会从模块市场收起,但不会迁移或删除旧数据。旧会话和项目仍留在旧目录,新版本里看不到;以后需要时仍可运行 dsh-workbench migrate。",
3783
+ "panels.market.dismissFollowUpAck": "我知道旧数据不会自动出现",
3784
+ "panels.market.dismissFollowUpYes": "不再提醒",
3785
+ "panels.market.dismissed": "已不再提醒;旧数据仍在旧目录,需要时仍可运行 dsh-workbench migrate。",
3738
3786
  "panels.market.workbenchName": "工作台",
3739
3787
  "panels.market.pluginBroken": "这份插件装坏了:认不出它是什么。可以先卸载,再让 agent 按包名重装一次。",
3740
3788
  "panels.market.restartNeeded": "新版装好了,重启一次才生效。",
@@ -3818,7 +3866,7 @@ var dictionaries = {
3818
3866
  "panels.market.add.exampleTitle": "示例",
3819
3867
  "panels.market.add.exampleFill": "填入示例",
3820
3868
  "panels.market.add.registryLabel": "安装源",
3821
- "panels.market.add.registryProfile": "这个 profile 配的源",
3869
+ "panels.market.add.registryProfile": "这份工作台配的源",
3822
3870
  "panels.market.add.registryPnpm": "pnpm 自己配的源",
3823
3871
  "panels.market.add.check": "预检",
3824
3872
  "panels.market.add.checking": "正在预检…",
@@ -3839,12 +3887,16 @@ var dictionaries = {
3839
3887
  "panels.market.tabs": "模块市场的两个面",
3840
3888
  "panels.tab.discover": "发现",
3841
3889
  "panels.discover.loading": "正在读取索引",
3890
+ "panels.discover.slowHint": "读取较慢:如有授权提示,先完成它,或换一个索引源。",
3842
3891
  "panels.discover.lead": "从索引源浏览模块;装上就能用。",
3843
3892
  "panels.discover.addSource": "添加",
3844
3893
  "panels.discover.addingSource": "正在添加…",
3845
3894
  "panels.discover.addFirstSource": "添加索引源",
3846
3895
  "panels.discover.removeSource": "移除",
3847
3896
  "panels.discover.removeSourceNamed": "移除 {url}",
3897
+ "panels.discover.useSource": "使用",
3898
+ "panels.discover.useSourceNamed": "使用 {label}",
3899
+ "panels.discover.sourceCurrent": "当前使用",
3848
3900
  "panels.discover.refresh": "刷新",
3849
3901
  "panels.discover.search": "搜索模块",
3850
3902
  "panels.discover.all": "全部",
@@ -3856,8 +3908,8 @@ var dictionaries = {
3856
3908
  "panels.discover.sourcePlaceholder": "https://example.com/index.json 或 git@git.example.com:wb/market.git",
3857
3909
  "panels.discover.sourceRef": "分支",
3858
3910
  "panels.discover.sourcePath": "索引文件",
3859
- "panels.discover.sourceLocal": "本地 clone(可选)",
3860
- "panels.discover.sourceLocalHint": "不填就 clone 到 ~/.dsh/workbench/market-index/。",
3911
+ "panels.discover.sourceLocal": "本地副本目录(可选)",
3912
+ "panels.discover.sourceLocalHint": "不填就放到 ~/.dsh/workbench/market-index/。",
3861
3913
  "panels.discover.save": "保存并刷新",
3862
3914
  "panels.discover.cancel": "取消",
3863
3915
  "panels.discover.retry": "重试",
@@ -3870,9 +3922,9 @@ var dictionaries = {
3870
3922
  "panels.discover.missingIndex": "仓库里还没有索引文件 {path}",
3871
3923
  "panels.discover.initTitle": "把这个仓库初始化成模块市场索引?",
3872
3924
  "panels.discover.initCta": "初始化成市场索引",
3873
- "panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把产物提交到 packages/<unit>/。仓库的写权限归它的所有者。",
3925
+ "panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把打包好的文件提交到 packages/<unit>/。仓库的写权限归它的所有者。",
3874
3926
  "panels.discover.initBranch": "分支",
3875
- "panels.discover.initBranchHint": "索引与产物都发到这个分支;空仓库会新建它。",
3927
+ "panels.discover.initBranchHint": "索引和打包文件都发到这个分支;空仓库会新建它。",
3876
3928
  "panels.discover.initBranchBad": "分支名只能用字母、数字、点、下划线、斜杠或短横线",
3877
3929
  "panels.discover.initOk": "初始化",
3878
3930
  "panels.discover.initBusy": "正在初始化…",
@@ -3976,11 +4028,11 @@ var dictionaries = {
3976
4028
  "panels.market.add.doneApplied": "装好了,已经生效。",
3977
4029
  "panels.market.add.doneRestart": "装好了,重启一次才生效。",
3978
4030
  "panels.market.add.restartWhy": "为什么这一版要重启:{reason}",
3979
- "panels.market.add.restartWhy.no-hmr": "这个配置只在启动时应用改动(没开热更新)",
4031
+ "panels.market.add.restartWhy.no-hmr": "这份配置只在启动时读一次,改了得重启",
3980
4032
  "panels.market.add.restartWhy.package-moved": "某个已经装着的包换到了新的目录,或者这一下换掉了 dsh 自己提供的那份",
3981
4033
  "panels.market.add.restartWhy.host-module": "这一下动到了 dsh 自己加载的模块",
3982
- "panels.market.add.restartWhy.unmanaged-plugin": "这一下动到了插件清单之外正在跑的插件",
3983
- "panels.market.add.restartWhy.module-comparison": "dsh 没能把已加载的插件与盘上的文件对上",
4034
+ "panels.market.add.restartWhy.unmanaged-plugin": "这一下动到了没登记过、正在运行的插件",
4035
+ "panels.market.add.restartWhy.module-comparison": "dsh 没法确认正在跑的插件就是这台机器上装好的那一份",
3984
4036
  "panels.market.add.cancelled": "已取消。",
3985
4037
  "panels.market.add.failed": "没成功:{reason}",
3986
4038
  "panels.market.add.removed": "已经移除了。",
@@ -3990,10 +4042,10 @@ var dictionaries = {
3990
4042
  "panels.market.add.removedRestart": "卸掉了,重启一次才彻底生效。",
3991
4043
  "panels.market.add.remove": "移除它",
3992
4044
  "panels.market.add.problem.invalidSpec": "这个写法不认:不能是空的,也不能以横杠开头。",
3993
- "panels.market.add.problem.alreadyInstalled": "这个包已经在 profile 里了(要换版本请带上 @版本)。",
4045
+ "panels.market.add.problem.alreadyInstalled": "这个包已经在这份工作台里了(要换版本请带上 @版本)。",
3994
4046
  "panels.market.add.problem.notFound": "源上没有这个包。换个包名或版本再试。",
3995
4047
  "panels.market.add.problem.notAPackage": "这个位置没有包。选一个包含 package.json 的目录。",
3996
- "panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh 插件包(缺 dsh 的接线声明)。",
4048
+ "panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh 插件包(dsh 在里面找不到该加载什么)。",
3997
4049
  "panels.market.add.problem.network": "源连不上。检查网络后重试。",
3998
4050
  "panels.market.add.problem.unknown": "预检没通过(原因未知)。展开安装详情看原始输出,或重试。",
3999
4051
  "panels.market.add.reason.invalidSpec": "写法不认",
@@ -4001,7 +4053,7 @@ var dictionaries = {
4001
4053
  "panels.market.add.reason.notBundle": "它不是一个 dsh 插件包",
4002
4054
  "panels.market.add.reason.notRemovable": "它是安装自带的组合包,不能卸",
4003
4055
  "panels.market.add.reason.bundleInUse": "还有东西在用它,卸不掉",
4004
- "panels.market.add.reason.stopProfile": "这个配置没开热更新,得先停掉进程",
4056
+ "panels.market.add.reason.stopProfile": "这份配置改了要重启,得先停掉工作台",
4005
4057
  "panels.market.add.reason.staleApproval": "要允许的安装脚本已经变了,重新来一次",
4006
4058
  "panels.market.add.reason.operationError": "pnpm 执行出错(详情见安装输出)",
4007
4059
  "panels.market.add.reason.buildBlocked": "pnpm 拦下了安装脚本",
@@ -4024,15 +4076,15 @@ var dictionaries = {
4024
4076
  "blocker.market.open": "去模块市场",
4025
4077
  "blocker.login.title": "需要登录 {platform}",
4026
4078
  "blocker.login.titleGeneric": "需要登录",
4027
- "blocker.login.hint": "工作台用你的浏览器登录态;登录一次就行,之后不用再登。",
4079
+ "blocker.login.hint": "工作台借你浏览器里的登录状态;登录一次就行,之后不用再登。",
4028
4080
  "blocker.login.go": "去登录",
4029
4081
  "blocker.login.manual": "在终端执行该插件的登录命令(见插件的文档),按提示完成登录后重试。",
4030
4082
  "blocker.forbidden.title": "没有权限访问 {platform}",
4031
4083
  "blocker.forbidden.titleGeneric": "没有权限",
4032
4084
  "blocker.forbidden.hint": "账号已登录,但没有这个项目/仓库的权限;申请之后再试。",
4033
4085
  "blocker.forbidden.open": "打开权限页",
4034
- "blocker.timeout.hint": "无头浏览器可能没起来,重试一次通常就好。",
4035
- "blocker.exec.hint": "确认 opencli 已安装且在 PATH 里(which opencli)。",
4086
+ "blocker.timeout.hint": "后台浏览器没起来,重试一次通常就好。",
4087
+ "blocker.exec.hint": "确认 opencli 已经装好、在终端里能直接运行(which opencli)。",
4036
4088
  "blocker.unknown.title": "出了点问题",
4037
4089
  "panels.reading": "正在读取面板配置…",
4038
4090
  "panels.cardBroken": "这个模块起不来:{unit}({reason})",
@@ -4046,7 +4098,7 @@ var dictionaries = {
4046
4098
  "env.elapsed": "已等待 {seconds} 秒",
4047
4099
  "env.stepFailed.install": "装不上",
4048
4100
  "env.stepFailed.path": "装了但还找不到",
4049
- "env.stepFailed.shell": "执行通道不可用",
4101
+ "env.stepFailed.shell": "连不上命令行",
4050
4102
  "env.toolchain.ok": "正常",
4051
4103
  "env.toolchain.warn": "还没完全准备好",
4052
4104
  "env.opencli.ok": "已就绪",
@@ -4063,10 +4115,10 @@ var dictionaries = {
4063
4115
  "env.fix.title": "怎么解决",
4064
4116
  "env.fix.why": "工作台用它自己那份后台工具(与你在终端里那套分开装,互不影响),这台机器上还没装好它。",
4065
4117
  "env.fix.whyPath": "后台工具装上了,但当前环境还找不到它 —— 通常是 PATH 或终端会话的问题。",
4066
- "env.fix.whyShell": "工作台拿不到执行命令的通道,所以取不了数据 —— 这一步你装不了,需要有人处理后台环境。",
4118
+ "env.fix.whyShell": "工作台拿不到这台机器的命令行,所以取不了数据 —— 这一步你装不了,需要有人处理后台环境。",
4067
4119
  "env.fix.step": "在终端里运行下面这条命令,装好之后点「重试」:",
4068
4120
  "env.fix.stepPath": "新开一个终端窗口(或确认 npm 的全局 bin 目录在 PATH 里),然后点「重试」。",
4069
- "env.fix.stepShell": "重启一次工作台(或 dsh);如果反复出现,说明执行通道没配好。",
4121
+ "env.fix.stepShell": "重启一次工作台(或 dsh);如果反复出现,说明工作台还是拿不到命令行。",
4070
4122
  "env.fix.permission": "权限不够:在命令前加 sudo 重跑,或先把 npm 的全局目录配到你的用户目录。",
4071
4123
  "env.fix.network": "网络不通:检查网络或代理设置后重试。",
4072
4124
  "env.fix.details": "详细输出(排障用)",
@@ -4095,9 +4147,9 @@ var dictionaries = {
4095
4147
  "env.warm.done": "已就绪({n} 个站点)",
4096
4148
  "env.warm.short": "这次没提前连上 —— 不影响用,第一次取数会自己补",
4097
4149
  "env.unit.failed": "这个模块起不来",
4098
- "env.unit.failedHint": "它自己装配时报了错,别的模块不受影响。",
4099
- "env.unit.unchecked": "检测不了:拿不到执行通道",
4100
- "env.unit.uncheckedHint": "不是这个模块的问题,是执行通道不可用 —— 重启一次工作台再试。",
4150
+ "env.unit.failedHint": "它自己启动时报了错,别的模块不受影响。",
4151
+ "env.unit.unchecked": "检测不了:拿不到命令行",
4152
+ "env.unit.uncheckedHint": "不是这个模块的问题,是工作台拿不到命令行 —— 重启一次工作台再试。",
4101
4153
  "adapterSet.not-configured": "没配置适配器集合,用默认的。",
4102
4154
  "adapterSet.no-profile": "找不到 profile,没法加载适配器集合;先用默认的。",
4103
4155
  "adapterSet.malformed": "适配器集合要写包名(如 @acme/adapters-set);先用默认的。",
@@ -4140,7 +4192,7 @@ var dictionaries = {
4140
4192
  "sidebarEdition.official": "官方",
4141
4193
  "sidebarEdition.officialHint": "跟 dsh 官方一致、最稳:搜索、视图选项、显示更多、归档、添加工作区都齐,升级也不等我们适配。想省心就选它。",
4142
4194
  "sidebarEdition.custom": "自定义",
4143
- "sidebarEdition.customHint": "为多项目工作流做的:项目下拉一屏一个项目,会话按最近更新排,两端淡出、跑马灯、工坊 DIY 新会话。项目多时更顺手。",
4195
+ "sidebarEdition.customHint": "为多项目工作流做的:项目下拉一屏一个项目,会话按最近更新排,名字自动滚动、两侧渐隐,工坊 DIY 新会话。项目多时更顺手。",
4144
4196
  "sidebarEdition.saving": "配置中…",
4145
4197
  "sidebarEdition.reloadRequired": "已写入。刷新页面后生效(不用重启工作台)。",
4146
4198
  "sidebarEdition.reload": "刷新页面",
@@ -4169,25 +4221,25 @@ var dictionaries = {
4169
4221
  "record.act.halt": "停",
4170
4222
  "approval.record.site": "站点",
4171
4223
  "approval.record.what": "录制功能",
4172
- "approval.record.lands": "落点",
4224
+ "approval.record.lands": "保存到",
4173
4225
  "approval.record.noUrl": "没给站点地址(这次会被当场拒)",
4174
4226
  "approval.record.oneAction": "一次操作",
4175
4227
  "approval.record.noSwitch": "录完不会替你切回来(左栏底部会亮一条状态)",
4176
- "approval.longTask.what": "要停的那一趟",
4177
- "approval.longTask.signal": "停了只是让工作台发出中断信号 —— 平台侧那趟活儿的收尾看模块自己",
4228
+ "approval.longTask.what": "要停的那次任务",
4229
+ "approval.longTask.signal": "停了只是让工作台发出中断信号 —— 这次任务怎么收尾由模块自己负责",
4178
4230
  "approval.publish.module": "模块",
4179
4231
  "approval.publish.target": "目标",
4180
4232
  "approval.publish.version": "版本",
4181
4233
  "approval.publish.author": "作者",
4182
- "approval.publish.authorMissing": "未署名(提交用本机 git 身份)",
4234
+ "approval.publish.authorMissing": "未署名",
4183
4235
  "approval.publish.registry": "源",
4184
4236
  "approval.publish.repo": "仓库",
4185
4237
  "approval.publish.branch": "分支",
4186
4238
  "approval.publish.defaultBranch": "默认分支",
4187
- "approval.publish.artifacts": "产物",
4239
+ "approval.publish.artifacts": "打包文件",
4188
4240
  "approval.publish.index": "索引",
4189
4241
  "approval.publish.commits": "提交",
4190
- "approval.publish.twoCommits": "产物 + market.json 两个 commit,一次 push",
4242
+ "approval.publish.twoCommits": "打包文件 + market.json 两次提交,一次推送",
4191
4243
  "approval.publish.reading": "读取中…",
4192
4244
  "approval.publish.changelog": "{version} 的更新日志",
4193
4245
  "approval.publish.changelogMissing": "这一版还没有更新日志({version}),发布会被拦下",
@@ -4963,6 +5015,7 @@ var MARKET_STATE_KEY = {
4963
5015
  broken: "panels.market.broken",
4964
5016
  outdated: "panels.market.moduleOutdated",
4965
5017
  "pending-restart": "panels.market.pendingRestart",
5018
+ "pending-followup": "panels.market.pendingFollowUp",
4966
5019
  missing: "panels.market.missing",
4967
5020
  unchecked: "panels.market.unchecked",
4968
5021
  unknown: "panels.market.unchecked"
@@ -4975,6 +5028,7 @@ var MARKET_DOT = {
4975
5028
  broken: "error",
4976
5029
  outdated: "warning",
4977
5030
  "pending-restart": "warning",
5031
+ "pending-followup": "warning",
4978
5032
  missing: "idle",
4979
5033
  unchecked: "idle",
4980
5034
  unknown: "idle"
@@ -4999,35 +5053,32 @@ function refusalReasons(host, client) {
4999
5053
  if (reported.length > 0) return reported;
5000
5054
  return [...new Set(client ?? [])];
5001
5055
  }
5002
- function mergeTitles(known, manifests) {
5003
- let next = null;
5004
- for (const manifest of manifests) {
5005
- const titleKey = manifest.card?.titleKey;
5006
- if (titleKey === void 0 || known.has(manifest.id)) continue;
5007
- next ??= new Map(known);
5008
- next.set(manifest.id, titleKey);
5009
- }
5010
- return next ?? known;
5056
+ function updateBlockHintOf(block) {
5057
+ return block === "needs-workbench" ? "panels.market.updateNeedsWorkbench" : "panels.market.updateIncompatible";
5011
5058
  }
5012
5059
  function installedIdSet(installed) {
5013
5060
  if (installed === void 0) return null;
5014
5061
  return new Set(installed.map((item) => item.unit));
5015
5062
  }
5016
- function installedRows(modules, manifests, listed, known, defaults = /* @__PURE__ */ new Set(), changed = {}) {
5063
+ function installedRows(modules, manifests, listed, names, defaults = /* @__PURE__ */ new Set(), changed = {}) {
5017
5064
  const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.card?.titleKey]));
5018
5065
  const rows = [];
5019
5066
  for (const module of modules) {
5020
5067
  if (listed.has(module.unit)) continue;
5021
5068
  const latest = module.local === true ? void 0 : module.latest;
5022
5069
  const outdated = latest !== void 0 && latest !== module.installed;
5070
+ const blocked = outdated ? module.latestBlocked : void 0;
5023
5071
  const loaded = titles.has(module.unit);
5024
5072
  const refused = refusalReasons(module.refused, module.clientRefused);
5025
5073
  const pending = !loaded && refused.length === 0;
5074
+ const titleKey = titles.get(module.unit);
5075
+ const remembered = titleKey === void 0 ? names?.get(module.unit) : void 0;
5026
5076
  rows.push({
5027
5077
  id: module.unit,
5028
- titleKey: titles.get(module.unit) ?? known?.get(module.unit) ?? module.pkg,
5078
+ titleKey: titleKey ?? module.unit,
5079
+ ...remembered === void 0 ? {} : { label: remembered },
5029
5080
  state: outdated ? "outdated" : refused.length > 0 ? "unusable" : pending ? "inactive" : "installed",
5030
- ...pending ? { hint: "panels.market.moduleRestartHint" } : {},
5081
+ ...pending ? { hint: "panels.market.moduleRestartHint" } : blocked === void 0 ? {} : { hint: updateBlockHintOf(blocked) },
5031
5082
  ...refused.length === 0 ? {} : { note: {
5032
5083
  key: "panels.market.moduleRefused",
5033
5084
  params: {}
@@ -5035,7 +5086,7 @@ function installedRows(modules, manifests, listed, known, defaults = /* @__PURE_
5035
5086
  ...module.local === true ? { local: true } : {},
5036
5087
  pkg: module.pkg,
5037
5088
  canInstall: false,
5038
- canUpdate: outdated,
5089
+ canUpdate: outdated && blocked === void 0,
5039
5090
  canUninstall: true,
5040
5091
  version: {
5041
5092
  installed: module.installed,
@@ -5043,7 +5094,8 @@ function installedRows(modules, manifests, listed, known, defaults = /* @__PURE_
5043
5094
  },
5044
5095
  ...outdated ? { moduleUpdate: {
5045
5096
  installed: module.installed,
5046
- latest
5097
+ latest,
5098
+ ...blocked === void 0 ? {} : { blocked }
5047
5099
  } } : {},
5048
5100
  defaultShown: defaults.has(module.unit),
5049
5101
  defaultChanged: changed[module.unit] ?? 0
@@ -5056,11 +5108,14 @@ function marketSwitchLocked(row) {
5056
5108
  return SWITCH_LOCKED.has(row.state);
5057
5109
  }
5058
5110
  function marketActions$1(row) {
5059
- if (row.workbench === true) return row.canUpdate ? ["update-workbench"] : [];
5111
+ if (row.workbench === true) {
5112
+ if (row.followUp !== void 0 && row.state === "pending-followup") return row.followUp.hard ? ["migrate-workbench"] : ["migrate-workbench", "dismiss-followup"];
5113
+ return row.canUpdate ? ["update-workbench"] : [];
5114
+ }
5060
5115
  if (row.plugin === true) return [...row.canUpdate ? ["update-plugin"] : [], ...row.canUninstall ? ["uninstall-plugin"] : []];
5061
5116
  return [
5062
5117
  ...row.canInstall ? ["install"] : [],
5063
- ...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : ["update-bundle"],
5118
+ ...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : row.moduleUpdate.blocked === void 0 ? ["update-bundle"] : [],
5064
5119
  ...row.canUninstall ? [row.pkg === void 0 ? "uninstall" : "remove-bundle"] : []
5065
5120
  ];
5066
5121
  }
@@ -5138,7 +5193,7 @@ function liveManifests(manifests, capabilities, installed) {
5138
5193
  return manifests.filter((manifest) => !gone.has(manifest.id));
5139
5194
  }
5140
5195
  function marketHasUpdates(rows, shared = []) {
5141
- return rows.some((row) => row.state === "outdated" || row.moduleUpdate !== void 0) || shared.some((row) => row.state === "outdated" || row.state === "unsatisfied");
5196
+ 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");
5142
5197
  }
5143
5198
  function marketUpdatesOf(modules) {
5144
5199
  if (modules === null) return {};
@@ -5148,6 +5203,7 @@ function marketUpdatesOf(modules) {
5148
5203
  next[module.unit] = {
5149
5204
  installed: module.installed,
5150
5205
  ...local || module.latest === void 0 ? {} : { latest: module.latest },
5206
+ ...local || module.latest === void 0 || module.latestBlocked === void 0 ? {} : { blocked: module.latestBlocked },
5151
5207
  ...local ? { local: true } : {}
5152
5208
  };
5153
5209
  }
@@ -5186,9 +5242,11 @@ function marketRows(manifests, capabilities, updates = {}, defaults = /* @__PURE
5186
5242
  const reAdopt = capability?.released === true && !installDeclared;
5187
5243
  const moduleUpdate = entry === void 0 || entry.latest === void 0 || entry.latest === entry.installed ? void 0 : {
5188
5244
  installed: entry.installed,
5189
- latest: entry.latest
5245
+ latest: entry.latest,
5246
+ ...entry.blocked === void 0 ? {} : { blocked: entry.blocked }
5190
5247
  };
5191
5248
  const shown = moduleUpdate === void 0 ? state : "outdated";
5249
+ const hint = moduleUpdate?.blocked === void 0 ? shown === "unknown" || shown === "unchecked" ? "panels.market.uncheckedHint" : void 0 : updateBlockHintOf(moduleUpdate.blocked);
5192
5250
  rows.push({
5193
5251
  id: manifest.id,
5194
5252
  titleKey: manifest.card?.titleKey ?? manifest.id,
@@ -5196,7 +5254,7 @@ function marketRows(manifests, capabilities, updates = {}, defaults = /* @__PURE
5196
5254
  canInstall: state !== "installed" && (install || reAdopt),
5197
5255
  canUpdate: onMachine && isOutdated(capability),
5198
5256
  canUninstall: onMachine,
5199
- ...shown === "unknown" || shown === "unchecked" ? { hint: "panels.market.uncheckedHint" } : {},
5257
+ ...hint === void 0 ? {} : { hint },
5200
5258
  ...entry === void 0 ? {} : { version: {
5201
5259
  installed: entry.installed,
5202
5260
  ...entry.latest === void 0 ? {} : { latest: entry.latest }
@@ -5261,11 +5319,14 @@ function workbenchRow(version) {
5261
5319
  installed: version.installed,
5262
5320
  latest
5263
5321
  } : void 0;
5322
+ const stale = !local && version.running !== void 0 && version.running !== version.installed;
5323
+ const followUp = version.followUp;
5324
+ const followUpState = !stale && followUp !== void 0;
5264
5325
  return {
5265
5326
  id: WORKBENCH_ROW_ID,
5266
5327
  titleKey: WORKBENCH_TITLE_KEY,
5267
5328
  workbench: true,
5268
- state: !local && version.running !== void 0 && version.running !== version.installed ? "pending-restart" : update === void 0 ? "installed" : "outdated",
5329
+ state: stale ? "pending-restart" : followUpState ? "pending-followup" : update === void 0 ? "installed" : "outdated",
5269
5330
  canInstall: false,
5270
5331
  canUpdate: update !== void 0,
5271
5332
  canUninstall: false,
@@ -5275,6 +5336,8 @@ function workbenchRow(version) {
5275
5336
  ...latest === void 0 ? {} : { latest }
5276
5337
  },
5277
5338
  ...update === void 0 ? {} : { moduleUpdate: update },
5339
+ ...followUp === void 0 ? {} : { followUp },
5340
+ ...followUpState ? { hint: "panels.market.migrationHint" } : {},
5278
5341
  pkg: version.pkg
5279
5342
  };
5280
5343
  }
@@ -5282,6 +5345,7 @@ function workbenchRow(version) {
5282
5345
  //#region src/app/layouts/rightbar/market-hint.ts
5283
5346
  var PROBLEM_KEY = "panels.market.hasProblem";
5284
5347
  var RESTART_KEY = "panels.market.pendingRestart";
5348
+ var FOLLOWUP_KEY = "panels.market.pendingFollowUp";
5285
5349
  var UNKNOWN_KEY = "panels.market.unchecked";
5286
5350
  var UPDATES_KEY = "panels.market.hasNew";
5287
5351
  function isProblem(row) {
@@ -5312,12 +5376,14 @@ function marketHintOf(input) {
5312
5376
  ];
5313
5377
  const problem = rows.some(isProblem);
5314
5378
  const restart = rows.some(isRestart) || awaitsRestart(input.manifests, installed);
5379
+ const followUp = rows.some((row) => row.state === "pending-followup");
5315
5380
  const rosterRead = input.modules !== null;
5316
5381
  const unknown = rows.some((row) => isUnknown(row, rosterRead));
5317
5382
  const updates = marketHasUpdates(rows, sharedRows(marketable, input.capabilities));
5318
5383
  const more = [];
5319
5384
  if (problem) {
5320
5385
  if (restart) more.push(RESTART_KEY);
5386
+ if (followUp) more.push(FOLLOWUP_KEY);
5321
5387
  if (unknown) more.push(UNKNOWN_KEY);
5322
5388
  if (updates) more.push(UPDATES_KEY);
5323
5389
  return {
@@ -5327,6 +5393,7 @@ function marketHintOf(input) {
5327
5393
  };
5328
5394
  }
5329
5395
  if (restart) {
5396
+ if (followUp) more.push(FOLLOWUP_KEY);
5330
5397
  if (unknown) more.push(UNKNOWN_KEY);
5331
5398
  if (updates) more.push(UPDATES_KEY);
5332
5399
  return {
@@ -5335,6 +5402,15 @@ function marketHintOf(input) {
5335
5402
  ...more.length === 0 ? {} : { moreKeys: more }
5336
5403
  };
5337
5404
  }
5405
+ if (followUp) {
5406
+ if (unknown) more.push(UNKNOWN_KEY);
5407
+ if (updates) more.push(UPDATES_KEY);
5408
+ return {
5409
+ labelKey: FOLLOWUP_KEY,
5410
+ tone: "warning",
5411
+ ...more.length === 0 ? {} : { moreKeys: more }
5412
+ };
5413
+ }
5338
5414
  if (unknown) {
5339
5415
  if (updates) more.push(UPDATES_KEY);
5340
5416
  return {
@@ -5630,114 +5706,118 @@ function useMarketTransient(input) {
5630
5706
  };
5631
5707
  }
5632
5708
  var MarketPage_module_default = {
5633
- marketList: "_marketList_9dzu9_1",
5634
- marketRow: "_marketRow_9dzu9_10",
5635
- marketIcon: "_marketIcon_9dzu9_20",
5636
- marketMain: "_marketMain_9dzu9_32",
5637
- marketName: "_marketName_9dzu9_39",
5638
- marketStatus: "_marketStatus_9dzu9_48",
5639
- marketStateText: "_marketStateText_9dzu9_58",
5640
- marketSep: "_marketSep_9dzu9_62",
5641
- marketReason: "_marketReason_9dzu9_66",
5642
- marketVersion: "_marketVersion_9dzu9_72",
5643
- marketLocalTag: "_marketLocalTag_9dzu9_94",
5644
- marketEnd: "_marketEnd_9dzu9_105",
5645
- marketSwitchSeat: "_marketSwitchSeat_9dzu9_112",
5646
- marketActions: "_marketActions_9dzu9_125",
5647
- marketUpdateAction: "_marketUpdateAction_9dzu9_131",
5648
- marketSelfDivider: "_marketSelfDivider_9dzu9_137",
5649
- marketSection: "_marketSection_9dzu9_143",
5650
- marketSectionHead: "_marketSectionHead_9dzu9_150",
5651
- marketSectionIcon: "_marketSectionIcon_9dzu9_156",
5652
- marketSectionTitle: "_marketSectionTitle_9dzu9_163",
5653
- marketSectionCount: "_marketSectionCount_9dzu9_169",
5654
- marketSectionQuiet: "_marketSectionQuiet_9dzu9_175",
5655
- marketProgress: "_marketProgress_9dzu9_188",
5656
- marketNote: "_marketNote_9dzu9_198",
5657
- marketFailure: "_marketFailure_9dzu9_205",
5658
- marketEmpty: "_marketEmpty_9dzu9_212",
5659
- marketPage: "_marketPage_9dzu9_217",
5660
- marketPageHead: "_marketPageHead_9dzu9_235",
5661
- marketPageTitle: "_marketPageTitle_9dzu9_243",
5662
- marketPageIntro: "_marketPageIntro_9dzu9_248",
5663
- marketPageTools: "_marketPageTools_9dzu9_254",
5664
- marketPanel: "_marketPanel_9dzu9_263",
5665
- marketTabs: "_marketTabs_9dzu9_273",
5666
- marketTabList: "_marketTabList_9dzu9_278",
5667
- marketIconButton: "_marketIconButton_9dzu9_283",
5668
- marketIconWrap: "_marketIconWrap_9dzu9_308",
5669
- marketIconButtonSpinning: "_marketIconButtonSpinning_9dzu9_312",
5670
- "wb-spin": "_wb-spin_9dzu9_1",
5671
- marketAddButton: "_marketAddButton_9dzu9_316",
5672
- marketEmptyTitle: "_marketEmptyTitle_9dzu9_333",
5673
- discoverPage: "_discoverPage_9dzu9_347",
5674
- discoverBar: "_discoverBar_9dzu9_354",
5675
- discoverTools: "_discoverTools_9dzu9_361",
5676
- discoverMarket: "_discoverMarket_9dzu9_367",
5677
- discoverMarketButton: "_discoverMarketButton_9dzu9_372",
5678
- discoverMarketName: "_discoverMarketName_9dzu9_379",
5679
- discoverLabels: "_discoverLabels_9dzu9_385",
5680
- discoverSort: "_discoverSort_9dzu9_390",
5681
- discoverRefresh: "_discoverRefresh_9dzu9_395",
5682
- discoverSearch: "_discoverSearch_9dzu9_399",
5683
- discoverChips: "_discoverChips_9dzu9_440",
5684
- discoverList: "_discoverList_9dzu9_447",
5685
- discoverCard: "_discoverCard_9dzu9_456",
5686
- discoverArtwork: "_discoverArtwork_9dzu9_470",
5687
- discoverArtworkImage: "_discoverArtworkImage_9dzu9_482",
5688
- discoverMain: "_discoverMain_9dzu9_486",
5689
- discoverTitleRow: "_discoverTitleRow_9dzu9_494",
5690
- discoverCardOpen: "_discoverCardOpen_9dzu9_502",
5691
- discoverStrong: "_discoverStrong_9dzu9_533",
5692
- discoverDesc: "_discoverDesc_9dzu9_539",
5693
- discoverMeta: "_discoverMeta_9dzu9_548",
5694
- discoverMuted: "_discoverMuted_9dzu9_555",
5695
- discoverEnd: "_discoverEnd_9dzu9_561",
5696
- discoverBlocked: "_discoverBlocked_9dzu9_570",
5697
- discoverEmpty: "_discoverEmpty_9dzu9_575",
5698
- discoverEmptyTitle: "_discoverEmptyTitle_9dzu9_584",
5699
- discoverDetail: "_discoverDetail_9dzu9_594",
5700
- discoverCrumb: "_discoverCrumb_9dzu9_600",
5701
- discoverCrumbIcon: "_discoverCrumbIcon_9dzu9_623",
5702
- discoverDetailHead: "_discoverDetailHead_9dzu9_627",
5703
- discoverDetailTitle: "_discoverDetailTitle_9dzu9_633",
5704
- discoverDetailText: "_discoverDetailText_9dzu9_639",
5705
- discoverDetailPanel: "_discoverDetailPanel_9dzu9_646",
5706
- discoverDetailTabs: "_discoverDetailTabs_9dzu9_653",
5707
- discoverDetailTabList: "_discoverDetailTabList_9dzu9_658",
5708
- discoverDocBody: "_discoverDocBody_9dzu9_663",
5709
- discoverDocNotice: "_discoverDocNotice_9dzu9_668",
5710
- discoverSection: "_discoverSection_9dzu9_674",
5711
- discoverSectionTitle: "_discoverSectionTitle_9dzu9_681",
5712
- discoverFacts: "_discoverFacts_9dzu9_687",
5713
- discoverFactRow: "_discoverFactRow_9dzu9_692",
5714
- discoverFactKind: "_discoverFactKind_9dzu9_702",
5715
- discoverFactValue: "_discoverFactValue_9dzu9_708",
5716
- discoverCode: "_discoverCode_9dzu9_716",
5717
- discoverTags: "_discoverTags_9dzu9_725",
5718
- discoverLink: "_discoverLink_9dzu9_732",
5719
- discoverVersions: "_discoverVersions_9dzu9_742",
5720
- discoverVersionRow: "_discoverVersionRow_9dzu9_750",
5721
- discoverVersionName: "_discoverVersionName_9dzu9_758",
5722
- discoverError: "_discoverError_9dzu9_763",
5723
- discoverFailure: "_discoverFailure_9dzu9_772",
5724
- discoverNotice: "_discoverNotice_9dzu9_778",
5725
- discoverMore: "_discoverMore_9dzu9_796",
5726
- discoverDialog: "_discoverDialog_9dzu9_800",
5727
- discoverDialogBody: "_discoverDialogBody_9dzu9_804",
5728
- discoverSourceList: "_discoverSourceList_9dzu9_810",
5729
- discoverSourceRow: "_discoverSourceRow_9dzu9_818",
5730
- discoverSourceError: "_discoverSourceError_9dzu9_826",
5731
- discoverSourceForm: "_discoverSourceForm_9dzu9_832",
5732
- discoverGrow: "_discoverGrow_9dzu9_838",
5733
- discoverField: "_discoverField_9dzu9_843",
5734
- discoverFieldLabel: "_discoverFieldLabel_9dzu9_849",
5735
- discoverConfirmHead: "_discoverConfirmHead_9dzu9_854",
5736
- discoverSkeletonFill: "_discoverSkeletonFill_9dzu9_860",
5737
- "wb-skeleton": "_wb-skeleton_9dzu9_1",
5738
- discoverSkeletonBar: "_discoverSkeletonBar_9dzu9_869",
5739
- discoverSkeletonTitle: "_discoverSkeletonTitle_9dzu9_876",
5740
- discoverSkeletonDesc: "_discoverSkeletonDesc_9dzu9_880"
5709
+ marketList: "_marketList_bnt61_1",
5710
+ marketRow: "_marketRow_bnt61_10",
5711
+ marketIcon: "_marketIcon_bnt61_20",
5712
+ marketMain: "_marketMain_bnt61_32",
5713
+ marketName: "_marketName_bnt61_39",
5714
+ marketStatus: "_marketStatus_bnt61_48",
5715
+ marketStateText: "_marketStateText_bnt61_58",
5716
+ marketSep: "_marketSep_bnt61_62",
5717
+ marketReason: "_marketReason_bnt61_66",
5718
+ marketVersion: "_marketVersion_bnt61_72",
5719
+ marketLocalTag: "_marketLocalTag_bnt61_94",
5720
+ marketEnd: "_marketEnd_bnt61_105",
5721
+ marketSwitchSeat: "_marketSwitchSeat_bnt61_112",
5722
+ marketActions: "_marketActions_bnt61_125",
5723
+ marketUpdateAction: "_marketUpdateAction_bnt61_131",
5724
+ marketSelfDivider: "_marketSelfDivider_bnt61_137",
5725
+ marketSection: "_marketSection_bnt61_143",
5726
+ marketSectionHead: "_marketSectionHead_bnt61_150",
5727
+ marketSectionIcon: "_marketSectionIcon_bnt61_156",
5728
+ marketSectionTitle: "_marketSectionTitle_bnt61_163",
5729
+ marketSectionCount: "_marketSectionCount_bnt61_169",
5730
+ marketSectionQuiet: "_marketSectionQuiet_bnt61_175",
5731
+ marketProgress: "_marketProgress_bnt61_188",
5732
+ marketNote: "_marketNote_bnt61_198",
5733
+ marketFailure: "_marketFailure_bnt61_205",
5734
+ marketEmpty: "_marketEmpty_bnt61_212",
5735
+ marketPage: "_marketPage_bnt61_217",
5736
+ marketPageHead: "_marketPageHead_bnt61_235",
5737
+ marketPageTitle: "_marketPageTitle_bnt61_243",
5738
+ marketPageIntro: "_marketPageIntro_bnt61_248",
5739
+ marketPageTools: "_marketPageTools_bnt61_254",
5740
+ marketPanel: "_marketPanel_bnt61_263",
5741
+ marketTabs: "_marketTabs_bnt61_273",
5742
+ marketTabList: "_marketTabList_bnt61_278",
5743
+ marketIconButton: "_marketIconButton_bnt61_283",
5744
+ marketIconWrap: "_marketIconWrap_bnt61_308",
5745
+ marketIconButtonSpinning: "_marketIconButtonSpinning_bnt61_312",
5746
+ "wb-spin": "_wb-spin_bnt61_1",
5747
+ marketAddButton: "_marketAddButton_bnt61_316",
5748
+ marketEmptyTitle: "_marketEmptyTitle_bnt61_333",
5749
+ discoverPage: "_discoverPage_bnt61_347",
5750
+ discoverBar: "_discoverBar_bnt61_354",
5751
+ discoverTools: "_discoverTools_bnt61_361",
5752
+ discoverMarket: "_discoverMarket_bnt61_367",
5753
+ discoverMarketButton: "_discoverMarketButton_bnt61_372",
5754
+ discoverMarketName: "_discoverMarketName_bnt61_379",
5755
+ discoverLabels: "_discoverLabels_bnt61_385",
5756
+ discoverSort: "_discoverSort_bnt61_390",
5757
+ discoverRefresh: "_discoverRefresh_bnt61_395",
5758
+ discoverSearch: "_discoverSearch_bnt61_399",
5759
+ discoverChips: "_discoverChips_bnt61_440",
5760
+ discoverList: "_discoverList_bnt61_447",
5761
+ discoverCard: "_discoverCard_bnt61_456",
5762
+ discoverArtwork: "_discoverArtwork_bnt61_470",
5763
+ discoverArtworkImage: "_discoverArtworkImage_bnt61_482",
5764
+ discoverMain: "_discoverMain_bnt61_486",
5765
+ discoverTitleRow: "_discoverTitleRow_bnt61_494",
5766
+ discoverCardOpen: "_discoverCardOpen_bnt61_502",
5767
+ discoverStrong: "_discoverStrong_bnt61_533",
5768
+ discoverDesc: "_discoverDesc_bnt61_539",
5769
+ discoverMeta: "_discoverMeta_bnt61_548",
5770
+ discoverMuted: "_discoverMuted_bnt61_555",
5771
+ discoverEnd: "_discoverEnd_bnt61_561",
5772
+ discoverBlocked: "_discoverBlocked_bnt61_570",
5773
+ discoverEmpty: "_discoverEmpty_bnt61_575",
5774
+ discoverEmptyTitle: "_discoverEmptyTitle_bnt61_584",
5775
+ discoverDetail: "_discoverDetail_bnt61_594",
5776
+ discoverCrumb: "_discoverCrumb_bnt61_600",
5777
+ discoverCrumbIcon: "_discoverCrumbIcon_bnt61_623",
5778
+ discoverDetailHead: "_discoverDetailHead_bnt61_627",
5779
+ discoverDetailTitle: "_discoverDetailTitle_bnt61_633",
5780
+ discoverDetailText: "_discoverDetailText_bnt61_639",
5781
+ discoverDetailPanel: "_discoverDetailPanel_bnt61_646",
5782
+ discoverDetailTabs: "_discoverDetailTabs_bnt61_653",
5783
+ discoverDetailTabList: "_discoverDetailTabList_bnt61_658",
5784
+ discoverDocBody: "_discoverDocBody_bnt61_663",
5785
+ discoverDocNotice: "_discoverDocNotice_bnt61_668",
5786
+ discoverSection: "_discoverSection_bnt61_674",
5787
+ discoverSectionTitle: "_discoverSectionTitle_bnt61_681",
5788
+ discoverFacts: "_discoverFacts_bnt61_687",
5789
+ discoverFactRow: "_discoverFactRow_bnt61_692",
5790
+ discoverFactKind: "_discoverFactKind_bnt61_702",
5791
+ discoverFactValue: "_discoverFactValue_bnt61_708",
5792
+ discoverCode: "_discoverCode_bnt61_716",
5793
+ discoverTags: "_discoverTags_bnt61_725",
5794
+ discoverLink: "_discoverLink_bnt61_732",
5795
+ discoverVersions: "_discoverVersions_bnt61_742",
5796
+ discoverVersionRow: "_discoverVersionRow_bnt61_750",
5797
+ discoverVersionName: "_discoverVersionName_bnt61_758",
5798
+ discoverError: "_discoverError_bnt61_763",
5799
+ discoverFailure: "_discoverFailure_bnt61_772",
5800
+ discoverLoading: "_discoverLoading_bnt61_778",
5801
+ discoverNotice: "_discoverNotice_bnt61_787",
5802
+ discoverMore: "_discoverMore_bnt61_805",
5803
+ discoverDialog: "_discoverDialog_bnt61_809",
5804
+ discoverDialogBody: "_discoverDialogBody_bnt61_813",
5805
+ discoverSourceList: "_discoverSourceList_bnt61_819",
5806
+ discoverSourceRow: "_discoverSourceRow_bnt61_827",
5807
+ discoverSourceCurrent: "_discoverSourceCurrent_bnt61_836",
5808
+ discoverSourceLoading: "_discoverSourceLoading_bnt61_843",
5809
+ discoverSourceHint: "_discoverSourceHint_bnt61_853",
5810
+ discoverSourceError: "_discoverSourceError_bnt61_867",
5811
+ discoverSourceForm: "_discoverSourceForm_bnt61_873",
5812
+ discoverGrow: "_discoverGrow_bnt61_879",
5813
+ discoverField: "_discoverField_bnt61_884",
5814
+ discoverFieldLabel: "_discoverFieldLabel_bnt61_890",
5815
+ discoverConfirmHead: "_discoverConfirmHead_bnt61_895",
5816
+ discoverSkeletonFill: "_discoverSkeletonFill_bnt61_901",
5817
+ "wb-skeleton": "_wb-skeleton_bnt61_1",
5818
+ discoverSkeletonBar: "_discoverSkeletonBar_bnt61_910",
5819
+ discoverSkeletonTitle: "_discoverSkeletonTitle_bnt61_917",
5820
+ discoverSkeletonDesc: "_discoverSkeletonDesc_bnt61_921"
5741
5821
  };
5742
5822
  //#endregion
5743
5823
  //#region src/app/layouts/market/discover-states.tsx
@@ -5761,6 +5841,13 @@ function DiscoverSkeleton({ label }) {
5761
5841
  function DiscoverEmptyText({ text }) {
5762
5842
  return /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverMuted }, text);
5763
5843
  }
5844
+ function DiscoverLoading({ label }) {
5845
+ return /* @__PURE__ */ (0, react.createElement)("p", {
5846
+ className: MarketPage_module_default.discoverLoading,
5847
+ role: "status",
5848
+ "aria-live": "polite"
5849
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), label);
5850
+ }
5764
5851
  function DiscoverFailure({ t, text, onRetry }) {
5765
5852
  return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverFailure }, /* @__PURE__ */ (0, react.createElement)("p", {
5766
5853
  className: MarketPage_module_default.discoverError,
@@ -5829,6 +5916,18 @@ function sharedRowKind(row) {
5829
5916
  return row.kind === "extension" ? "plugin" : "lib";
5830
5917
  }
5831
5918
  //#endregion
5919
+ //#region src/app/layouts/rightbar/market-names.ts
5920
+ function namesOf(t, modules, titleOf) {
5921
+ const shown = /* @__PURE__ */ new Map();
5922
+ for (const module of modules) {
5923
+ const key = unitTitleKey(module.unit);
5924
+ const live = t(key);
5925
+ const name = live !== key && live !== "" ? live : titleOf(module.title);
5926
+ if (name !== "") shown.set(module.unit, name);
5927
+ }
5928
+ return shown;
5929
+ }
5930
+ //#endregion
5832
5931
  //#region src/app/layouts/rightbar/market-view-text.ts
5833
5932
  var PROGRESS_KEY = {
5834
5933
  install: "panels.market.installing",
@@ -5839,7 +5938,9 @@ var PROGRESS_KEY = {
5839
5938
  "update-dependency": "panels.market.updating",
5840
5939
  "update-plugin": "panels.market.updating",
5841
5940
  "uninstall-plugin": "panels.market.uninstalling",
5842
- "update-workbench": "panels.market.updating"
5941
+ "update-workbench": "panels.market.updating",
5942
+ "migrate-workbench": "panels.market.migrating",
5943
+ "dismiss-followup": "panels.market.dismissing"
5843
5944
  };
5844
5945
  var ACTION_LABEL_KEY = {
5845
5946
  install: "panels.market.install",
@@ -5850,7 +5951,9 @@ var ACTION_LABEL_KEY = {
5850
5951
  "update-dependency": "panels.market.update",
5851
5952
  "update-plugin": "panels.market.update",
5852
5953
  "uninstall-plugin": "panels.market.uninstall",
5853
- "update-workbench": "panels.market.update"
5954
+ "update-workbench": "panels.market.update",
5955
+ "migrate-workbench": "panels.market.migrateAction",
5956
+ "dismiss-followup": "panels.market.dismissFollowUp"
5854
5957
  };
5855
5958
  function holdOf(pending, application) {
5856
5959
  if (pending === null || pending.row === void 0) return void 0;
@@ -5898,12 +6001,9 @@ function withPinnedRow(rows, pinned) {
5898
6001
  function marketFootVisible(shown, installed) {
5899
6002
  return shown.length > 0 || installed.length > 0;
5900
6003
  }
5901
- function useMarketTitles(manifests, mocked) {
5902
- const [titles, setTitles] = (0, react.useState)(/* @__PURE__ */ new Map());
5903
- (0, react.useEffect)(() => {
5904
- if (!mocked) setTitles((known) => mergeTitles(known, manifests));
5905
- }, [manifests, mocked]);
5906
- return titles;
6004
+ var NO_NAMES = /* @__PURE__ */ new Map();
6005
+ function marketNamesOf(t, modules, titleOf, mocked) {
6006
+ return mocked ? NO_NAMES : namesOf(t, modules, titleOf);
5907
6007
  }
5908
6008
  function useHeldRow(pending, backInRoster) {
5909
6009
  const [held, setHeld] = (0, react.useState)(void 0);
@@ -5939,10 +6039,11 @@ function pendingRowOf(input) {
5939
6039
  const { pending, removing } = input;
5940
6040
  if (removing === null || pending === null) return void 0;
5941
6041
  if (input.rows.some((row) => row.id === removing)) return void 0;
6042
+ const name = pending.label ?? input.names.get(removing);
5942
6043
  return {
5943
6044
  id: removing,
5944
- titleKey: pending.titleKey ?? input.titles.get(removing) ?? removing,
5945
- ...pending.label === void 0 ? {} : { label: pending.label },
6045
+ titleKey: pending.titleKey ?? removing,
6046
+ ...name === void 0 ? {} : { label: name },
5946
6047
  state: "installed",
5947
6048
  canInstall: false,
5948
6049
  canUpdate: false,
@@ -6059,49 +6160,120 @@ var updateActions = [
6059
6160
  "update-plugin",
6060
6161
  "update-workbench"
6061
6162
  ];
6163
+ function MigrationConfirm({ t, onConfirm, onCancel }) {
6164
+ const [acknowledged, setAcknowledged] = (0, react.useState)(false);
6165
+ return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
6166
+ open: true,
6167
+ title: t("panels.market.migrateConfirmTitle"),
6168
+ description: t("panels.market.migrateConfirmDetail"),
6169
+ acknowledgeLabel: t("panels.market.migrateConfirmAck"),
6170
+ cancelLabel: t("panels.market.confirmNo"),
6171
+ closeLabel: t("panels.market.confirmNo"),
6172
+ confirmLabel: t("panels.market.migrateConfirmYes"),
6173
+ acknowledged,
6174
+ onAcknowledgedChange: setAcknowledged,
6175
+ onCancel,
6176
+ onConfirm
6177
+ });
6178
+ }
6179
+ function DismissFollowUpConfirm({ t, onConfirm, onCancel }) {
6180
+ const [acknowledged, setAcknowledged] = (0, react.useState)(false);
6181
+ return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
6182
+ open: true,
6183
+ title: t("panels.market.dismissFollowUpTitle"),
6184
+ description: t("panels.market.dismissFollowUpDetail"),
6185
+ acknowledgeLabel: t("panels.market.dismissFollowUpAck"),
6186
+ cancelLabel: t("panels.market.confirmNo"),
6187
+ closeLabel: t("panels.market.confirmNo"),
6188
+ confirmLabel: t("panels.market.dismissFollowUpYes"),
6189
+ acknowledged,
6190
+ onAcknowledgedChange: setAcknowledged,
6191
+ onCancel,
6192
+ onConfirm
6193
+ });
6194
+ }
6195
+ function MarketLineDialogs({ t, migrationOpen, dismissOpen, onMigrationCancel, onMigrationConfirm, onDismissCancel, onDismissConfirm }) {
6196
+ return /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, migrationOpen ? /* @__PURE__ */ (0, react.createElement)(MigrationConfirm, {
6197
+ t,
6198
+ onCancel: onMigrationCancel,
6199
+ onConfirm: onMigrationConfirm
6200
+ }) : null, dismissOpen ? /* @__PURE__ */ (0, react.createElement)(DismissFollowUpConfirm, {
6201
+ t,
6202
+ onCancel: onDismissCancel,
6203
+ onConfirm: onDismissConfirm
6204
+ }) : null);
6205
+ }
6206
+ function MarketLineStatus({ t, row, quiet }) {
6207
+ const stateText = t(MARKET_STATE_KEY[row.state]);
6208
+ const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
6209
+ if (quiet) return null;
6210
+ return /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketStatus }, row.state === "checking" ? /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }) : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
6211
+ state: MARKET_DOT[row.state],
6212
+ size: 9
6213
+ }), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketStateText }, stateText), row.hint === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
6214
+ className: MarketPage_module_default.marketSep,
6215
+ "aria-hidden": "true"
6216
+ }, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, t(row.hint))), noteText === null ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
6217
+ className: MarketPage_module_default.marketSep,
6218
+ "aria-hidden": "true"
6219
+ }, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, noteText)));
6220
+ }
6062
6221
  function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
6063
6222
  const running = pending !== null && pending.id === row.id ? pending : null;
6064
6223
  const locked = pending !== null;
6224
+ const [migrationOpen, setMigrationOpen] = (0, react.useState)(false);
6225
+ const [dismissOpen, setDismissOpen] = (0, react.useState)(false);
6065
6226
  const quiet = row.workbench === true && row.state === "installed" && row.hint === void 0;
6066
6227
  const actions = marketActions$1(row);
6067
6228
  const switchLocked = marketSwitchLocked(row);
6068
- const stateText = t(MARKET_STATE_KEY[row.state]);
6069
- const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
6070
6229
  return /* @__PURE__ */ (0, react.createElement)("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ (0, react.createElement)("span", {
6071
6230
  className: MarketPage_module_default.marketIcon,
6072
6231
  "aria-hidden": "true"
6073
6232
  }, packageIcon(marketRowKind(row))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketName }, marketRowTitle(row, t), row.versionLabel === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketVersion }, row.versionLabel), row.version === void 0 || row.versionLabel !== void 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketVersion }, row.version.installed !== void 0 && row.version.latest !== void 0 && row.version.installed !== row.version.latest ? t("panels.market.versionArrow", {
6074
6233
  from: row.version.installed,
6075
6234
  to: row.version.latest
6076
- }) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null), quiet ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketStatus }, row.state === "checking" ? /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }) : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
6077
- state: MARKET_DOT[row.state],
6078
- size: 9
6079
- }), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketStateText }, stateText), row.hint === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
6080
- className: MarketPage_module_default.marketSep,
6081
- "aria-hidden": "true"
6082
- }, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, t(row.hint))), noteText === null ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
6083
- className: MarketPage_module_default.marketSep,
6084
- "aria-hidden": "true"
6085
- }, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, noteText)))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
6235
+ }) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null), /* @__PURE__ */ (0, react.createElement)(MarketLineStatus, {
6236
+ t,
6237
+ row,
6238
+ quiet
6239
+ })), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
6086
6240
  const danger = dangerActions.includes(action);
6087
6241
  const update = updateActions.includes(action);
6088
6242
  return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
6089
6243
  key: action,
6090
6244
  type: "button",
6091
6245
  size: "sm",
6092
- variant: action === "install" ? "primary" : "outline",
6246
+ variant: action === "install" || action === "migrate-workbench" ? "primary" : "outline",
6093
6247
  className: danger ? "wb-dangerAction" : update ? MarketPage_module_default.marketUpdateAction : void 0,
6094
6248
  icon: danger ? /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconTrashOutlineRegular, { size: 13 }) : void 0,
6095
6249
  "aria-label": danger ? t("panels.market.uninstallLabel", { name: marketRowTitle(row, t) }) : void 0,
6096
6250
  disabled: locked,
6097
- onClick: () => onAct(action)
6251
+ onClick: () => {
6252
+ if (action === "migrate-workbench") setMigrationOpen(true);
6253
+ else if (action === "dismiss-followup") setDismissOpen(true);
6254
+ else onAct(action);
6255
+ }
6098
6256
  }, t(ACTION_LABEL_KEY[action]));
6099
6257
  })), row.defaultShown === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(Tip, { label: t(switchLocked ? "panels.market.defaultLocked" : "panels.market.defaultHint") }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketSwitchSeat }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Switch, {
6100
6258
  checked: row.defaultShown,
6101
6259
  disabled: boardBusy === true || locked || switchLocked,
6102
6260
  label: `${marketRowTitle(row, t)} · ${t("panels.market.defaultLabel")}`,
6103
6261
  onChange: (next) => onDefault?.(next)
6104
- })))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure));
6262
+ })))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure), /* @__PURE__ */ (0, react.createElement)(MarketLineDialogs, {
6263
+ t,
6264
+ migrationOpen,
6265
+ dismissOpen,
6266
+ onMigrationCancel: () => setMigrationOpen(false),
6267
+ onMigrationConfirm: () => {
6268
+ setMigrationOpen(false);
6269
+ onAct("migrate-workbench");
6270
+ },
6271
+ onDismissCancel: () => setDismissOpen(false),
6272
+ onDismissConfirm: () => {
6273
+ setDismissOpen(false);
6274
+ onAct("dismiss-followup");
6275
+ }
6276
+ }));
6105
6277
  }
6106
6278
  function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy }) {
6107
6279
  if (rows.length === 0) return null;
@@ -6416,10 +6588,13 @@ function marketActOf(options) {
6416
6588
  seats.setConfirming(null);
6417
6589
  seats.setFailed(null);
6418
6590
  seats.setNotice(null);
6419
- const outcome = await send(action === "update-dependency" ? {
6591
+ const outcome = await send(action === "dismiss-followup" ? {
6592
+ action,
6593
+ id: row?.followUp?.id ?? ""
6594
+ } : action === "update-dependency" ? {
6420
6595
  action,
6421
6596
  id
6422
- } : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" ? {
6597
+ } : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" || action === "migrate-workbench" ? {
6423
6598
  action,
6424
6599
  name: row?.pkg ?? ""
6425
6600
  } : {
@@ -6437,6 +6612,21 @@ function marketActOf(options) {
6437
6612
  return;
6438
6613
  }
6439
6614
  const value = outcome.value;
6615
+ if (action === "dismiss-followup") {
6616
+ onChanged({ force: true });
6617
+ seats.setPending(null);
6618
+ seats.setHeld(void 0);
6619
+ seats.setNotice(t("panels.market.dismissed"));
6620
+ return;
6621
+ }
6622
+ if (action === "migrate-workbench") {
6623
+ const added = recordOf(value)?.["added"];
6624
+ onChanged({ force: true });
6625
+ seats.setPending(null);
6626
+ seats.setHeld(void 0);
6627
+ seats.setNotice(t("panels.market.migrateDone", { added: typeof added === "number" ? String(added) : "0" }));
6628
+ return;
6629
+ }
6440
6630
  const change = changeOf(value);
6441
6631
  const failure = updateVerdictText(updateVerdictOf({
6442
6632
  action,
@@ -6560,8 +6750,8 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
6560
6750
  }));
6561
6751
  }
6562
6752
  function useMarketScene(input) {
6563
- const { manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
6564
- const titles = useMarketTitles(manifests, mock !== void 0);
6753
+ const { t, titleOf, manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
6754
+ const names = marketNamesOf(t, installed ?? [], titleOf, mock !== void 0);
6565
6755
  const catalog = mock?.manifests ?? manifests;
6566
6756
  const marketable = mock === void 0 ? marketCatalog(manifests, installable) : catalog;
6567
6757
  const effective = mock === void 0 ? capabilities : mock.capabilities;
@@ -6575,13 +6765,13 @@ function useMarketScene(input) {
6575
6765
  const pinned = pinnedRowOf(pending, steady.held);
6576
6766
  const busyId = heldIdOf(pending, steady.held);
6577
6767
  return {
6578
- titles,
6768
+ names,
6579
6769
  catalog,
6580
6770
  effective,
6581
6771
  updateMap,
6582
6772
  rows,
6583
6773
  shared,
6584
- 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),
6774
+ 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),
6585
6775
  byDefault,
6586
6776
  steady,
6587
6777
  pinned,
@@ -6589,12 +6779,14 @@ function useMarketScene(input) {
6589
6779
  busyId
6590
6780
  };
6591
6781
  }
6592
- function MarketView({ t, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
6782
+ function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
6593
6783
  const { pending, setPending, confirming, setConfirming, failed, setFailed, notice, setNotice } = useMarketTransient({
6594
6784
  mock,
6595
6785
  onPending
6596
6786
  });
6597
- const { titles, effective, updateMap, rows, shared, installedList, byDefault, steady, pinned, removing, busyId } = useMarketScene({
6787
+ const { names, effective, updateMap, rows, shared, installedList, byDefault, steady, pinned, removing, busyId } = useMarketScene({
6788
+ t,
6789
+ titleOf,
6598
6790
  manifests,
6599
6791
  installable,
6600
6792
  capabilities,
@@ -6639,7 +6831,7 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
6639
6831
  pending,
6640
6832
  removing,
6641
6833
  rows,
6642
- titles
6834
+ names
6643
6835
  });
6644
6836
  const self = workbenchRow(mock === void 0 ? workbench : mock.workbench);
6645
6837
  const shown = withPinnedRow(pendingRow === void 0 ? rows : [...rows, pendingRow], pinned);
@@ -6908,7 +7100,7 @@ function sourceFromUrl(raw) {
6908
7100
  if (url === "" || url.includes("#") || hasCredentials(url)) return { ok: false };
6909
7101
  if (HTTP.test(url)) {
6910
7102
  const asGit = REPO_FILE.test(url);
6911
- const label = hostOf(url);
7103
+ const label = asGit ? sourceSuffix(url) || hostOf(url) : hostOf(url);
6912
7104
  if (label === "") return { ok: false };
6913
7105
  return {
6914
7106
  ok: true,
@@ -6941,6 +7133,13 @@ function sameSourceUrl(left, right) {
6941
7133
  function sourceSuffix(url) {
6942
7134
  return (withoutTrailingSlash(url).split(/[/:]/).filter((part) => part !== "").pop() ?? "").replace(/\.git$/, "");
6943
7135
  }
7136
+ function sourceTransport(url) {
7137
+ if (GIT_SSH.test(url) || /^ssh:\/\//i.test(url) || /^git\+ssh:\/\//i.test(url)) return "ssh";
7138
+ if (/^git:\/\//i.test(url)) return "git";
7139
+ if (/^https:\/\//i.test(url)) return "https";
7140
+ if (/^http:\/\//i.test(url)) return "http";
7141
+ return "";
7142
+ }
6944
7143
  function sourceLabelsOf(sources) {
6945
7144
  const counts = /* @__PURE__ */ new Map();
6946
7145
  for (const source of sources) counts.set(source.label, (counts.get(source.label) ?? 0) + 1);
@@ -6951,7 +7150,8 @@ function sourceLabelsOf(sources) {
6951
7150
  continue;
6952
7151
  }
6953
7152
  const suffix = sourceSuffix(source.url);
6954
- labels.set(source.id, suffix === "" ? source.url : `${source.label} · ${suffix}`);
7153
+ const detail = suffix !== "" && suffix !== source.label ? suffix : sourceTransport(source.url);
7154
+ labels.set(source.id, detail === "" ? source.url : `${detail} · ${source.label}`);
6955
7155
  }
6956
7156
  return labels;
6957
7157
  }
@@ -7078,11 +7278,15 @@ function DiscoverVersions({ t, locale, entry, onInstall }) {
7078
7278
  var MARKET_DISCOVER_ROUTE = "panels/market-discover";
7079
7279
  var MARKET_DOC_ROUTE = "panels/market-doc";
7080
7280
  var MARKET_PUBLISH_PREVIEW_ROUTE = "panels/market-publish-preview";
7281
+ var MARKET_SOURCES_ROUTE = "panels/market-sources";
7081
7282
  //#endregion
7082
7283
  //#region src/shared/hooks/market-queries.ts
7083
7284
  function readMarketDiscover(options = {}) {
7084
7285
  return apiGet(MARKET_DISCOVER_ROUTE, options.force === true ? { force: "1" } : {});
7085
7286
  }
7287
+ function readMarketSources() {
7288
+ return apiGet(MARKET_SOURCES_ROUTE);
7289
+ }
7086
7290
  function readMarketDoc(name, version, kind) {
7087
7291
  return apiGet(MARKET_DOC_ROUTE, {
7088
7292
  name,
@@ -7090,10 +7294,11 @@ function readMarketDoc(name, version, kind) {
7090
7294
  kind
7091
7295
  });
7092
7296
  }
7093
- function readPublishPreview(unit, version) {
7297
+ function readPublishPreview(unit, version, author) {
7094
7298
  return apiGet(MARKET_PUBLISH_PREVIEW_ROUTE, {
7095
7299
  unit,
7096
- ...version === void 0 || version === "" ? {} : { version }
7300
+ ...version === void 0 || version === "" ? {} : { version },
7301
+ ...author === void 0 || author === "" ? {} : { author }
7097
7302
  });
7098
7303
  }
7099
7304
  //#endregion
@@ -7347,6 +7552,7 @@ function DiscoverSourcesDialog(props) {
7347
7552
  const [url, setUrl] = (0, react.useState)("");
7348
7553
  const [problem, setProblem] = (0, react.useState)(null);
7349
7554
  const pending = props.busy || props.adding;
7555
+ const selectedVisible = props.sources.some((source) => source.id === props.selected);
7350
7556
  const add = () => {
7351
7557
  if (pending) return;
7352
7558
  const parsed = sourceFromUrl(url);
@@ -7369,13 +7575,29 @@ function DiscoverSourcesDialog(props) {
7369
7575
  closeLabel: t("panels.discover.close"),
7370
7576
  description: t("panels.discover.sourcesIntro"),
7371
7577
  className: MarketPage_module_default.discoverDialog
7372
- }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDialogBody }, props.sources.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("ul", {
7578
+ }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDialogBody }, props.loading && !selectedVisible ? props.slow ? /* @__PURE__ */ (0, react.createElement)("p", {
7579
+ className: MarketPage_module_default.discoverNotice,
7580
+ role: "note"
7581
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
7582
+ size: 14,
7583
+ "aria-hidden": "true"
7584
+ }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.slowHint"))) : /* @__PURE__ */ (0, react.createElement)(DiscoverLoading, { label: t("panels.discover.loading") }) : null, props.sources.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("ul", {
7373
7585
  className: MarketPage_module_default.discoverSourceList,
7374
7586
  "aria-label": t("panels.discover.sourcesLabel")
7375
7587
  }, props.sources.map((source) => /* @__PURE__ */ (0, react.createElement)("li", {
7376
7588
  key: source.id,
7377
7589
  className: MarketPage_module_default.discoverSourceRow
7378
- }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverMeta }, source.url), props.problem?.id === source.id ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
7590
+ }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverMeta }, source.url), !props.loading && props.problem?.id === source.id ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), source.id === props.selected ? props.loading ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceLoading }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), t("panels.discover.loading")) : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceCurrent }, t("panels.discover.sourceCurrent")) : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
7591
+ type: "button",
7592
+ variant: "ghost",
7593
+ size: "sm",
7594
+ "aria-label": t("panels.discover.useSourceNamed", { label: source.label }),
7595
+ disabled: pending,
7596
+ onClick: () => {
7597
+ props.onSelect(source.id);
7598
+ props.onClose();
7599
+ }
7600
+ }, t("panels.discover.useSource")), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
7379
7601
  label: t("panels.discover.removeSource"),
7380
7602
  side: "bottom",
7381
7603
  portal: true,
@@ -7388,7 +7610,13 @@ function DiscoverSourcesDialog(props) {
7388
7610
  "aria-label": t("panels.discover.removeSourceNamed", { url: source.url }),
7389
7611
  disabled: pending,
7390
7612
  onClick: () => props.onRemove(source.id)
7391
- }))))), /* @__PURE__ */ (0, react.createElement)("form", {
7613
+ })), source.id === props.selected && props.loading && props.slow ? /* @__PURE__ */ (0, react.createElement)("span", {
7614
+ className: MarketPage_module_default.discoverSourceHint,
7615
+ role: "note"
7616
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
7617
+ size: 12,
7618
+ "aria-hidden": "true"
7619
+ }), t("panels.discover.slowHint")) : null))), /* @__PURE__ */ (0, react.createElement)("form", {
7392
7620
  className: MarketPage_module_default.discoverSourceForm,
7393
7621
  onSubmit: (event) => {
7394
7622
  event.preventDefault();
@@ -7431,12 +7659,16 @@ function DiscoverDialogs({ t, d }) {
7431
7659
  t,
7432
7660
  open: d.manageOpen,
7433
7661
  sources: d.sources,
7662
+ selected: d.selected,
7663
+ loading: d.loading,
7664
+ slow: d.slow,
7434
7665
  problem: d.problem,
7435
7666
  busy: d.busy,
7436
7667
  adding: d.addingSource,
7437
7668
  onClose: () => d.setManageOpen(false),
7438
7669
  onAdd: d.addSource,
7439
- onRemove: d.removeSourceById
7670
+ onRemove: d.removeSourceById,
7671
+ onSelect: d.selectSource
7440
7672
  }), /* @__PURE__ */ (0, react.createElement)(DiscoverConfirm, {
7441
7673
  t,
7442
7674
  locale: d.locale,
@@ -7533,6 +7765,7 @@ function DiscoverToolbar(props) {
7533
7765
  value: text,
7534
7766
  placeholder: t("panels.discover.search"),
7535
7767
  "aria-label": t("panels.discover.search"),
7768
+ disabled: props.loading,
7536
7769
  onChange: (event) => setText(event.currentTarget.value)
7537
7770
  }), props.labels.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
7538
7771
  className: MarketPage_module_default.discoverLabels,
@@ -7581,6 +7814,7 @@ function DiscoverToolbar(props) {
7581
7814
  variant: "ghost",
7582
7815
  "aria-haspopup": "menu",
7583
7816
  "aria-expanded": open === "sort",
7817
+ disabled: props.loading,
7584
7818
  onClick: () => setOpen(open === "sort" ? null : "sort")
7585
7819
  }, t("panels.discover.sortWith", { label: sortName }), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, {
7586
7820
  size: 12,
@@ -7619,6 +7853,12 @@ var SHIPPED = [
7619
7853
  "restart-required",
7620
7854
  "overridden"
7621
7855
  ];
7856
+ function sourceRowsOf(sources) {
7857
+ return sources.map((source) => ({
7858
+ ...source,
7859
+ writable: source.kind === "http" ? false : null
7860
+ }));
7861
+ }
7622
7862
  function installVerdictOf(value, t) {
7623
7863
  const change = changeOf(value);
7624
7864
  if (change === void 0) return { kind: "quiet" };
@@ -7632,6 +7872,7 @@ function installVerdictOf(value, t) {
7632
7872
  function useDiscover(t, active, onInstalled) {
7633
7873
  const [payload, setPayload] = (0, react.useState)(null);
7634
7874
  const [loading, setLoading] = (0, react.useState)(true);
7875
+ const [slow, setSlow] = (0, react.useState)(false);
7635
7876
  const [failure, setFailure] = (0, react.useState)(null);
7636
7877
  const [query, setQuery] = (0, react.useState)("");
7637
7878
  const [category, setCategory] = (0, react.useState)(null);
@@ -7644,7 +7885,10 @@ function useDiscover(t, active, onInstalled) {
7644
7885
  const [choice, setChoice] = (0, react.useState)(null);
7645
7886
  const [notice, setNotice] = (0, react.useState)(null);
7646
7887
  const [addingSource, setAddingSource] = (0, react.useState)(false);
7888
+ const [knownSources, setKnownSources] = (0, react.useState)(null);
7647
7889
  const loaded = (0, react.useRef)(false);
7890
+ const loadTicket = (0, react.useRef)(0);
7891
+ const sourceTicket = (0, react.useRef)(0);
7648
7892
  const locale = (0, react.useMemo)(() => localeNow(), []);
7649
7893
  const sources = useHostWrite({
7650
7894
  channel: "actions",
@@ -7655,11 +7899,27 @@ function useDiscover(t, active, onInstalled) {
7655
7899
  channel: "provision",
7656
7900
  networkText: t("panels.discover.failed")
7657
7901
  });
7902
+ const loadSources = (0, react.useCallback)(async () => {
7903
+ const ticket = sourceTicket.current + 1;
7904
+ sourceTicket.current = ticket;
7905
+ const response = await readMarketSources().catch(() => null);
7906
+ if (sourceTicket.current !== ticket) return;
7907
+ if (response === null || !response.ok) return;
7908
+ setKnownSources({
7909
+ sources: sourceRowsOf(response.sources),
7910
+ selected: response.selected
7911
+ });
7912
+ }, []);
7658
7913
  const load = (0, react.useCallback)(async (force = false) => {
7914
+ const ticket = loadTicket.current + 1;
7915
+ loadTicket.current = ticket;
7659
7916
  setLoading(true);
7917
+ setSlow(false);
7660
7918
  setFailure(null);
7661
7919
  const response = await readMarketDiscover({ force }).catch(() => null);
7920
+ if (loadTicket.current !== ticket) return;
7662
7921
  setLoading(false);
7922
+ setSlow(false);
7663
7923
  if (response === null || !response.ok) {
7664
7924
  setFailure(t("panels.discover.unreadable"));
7665
7925
  return;
@@ -7667,11 +7927,29 @@ function useDiscover(t, active, onInstalled) {
7667
7927
  setPayload(response);
7668
7928
  setLimit(50);
7669
7929
  }, [t]);
7930
+ const beginSwitch = () => {
7931
+ loadTicket.current += 1;
7932
+ sourceTicket.current += 1;
7933
+ setFailure(null);
7934
+ setPayload(null);
7935
+ setLoading(true);
7936
+ setSlow(false);
7937
+ };
7670
7938
  (0, react.useEffect)(() => {
7671
7939
  if (!active || loaded.current) return;
7672
7940
  loaded.current = true;
7941
+ loadSources();
7673
7942
  load();
7674
- }, [active, load]);
7943
+ }, [
7944
+ active,
7945
+ load,
7946
+ loadSources
7947
+ ]);
7948
+ (0, react.useEffect)(() => {
7949
+ if (!loading) return void 0;
7950
+ const timer = setTimeout(() => setSlow(true), 8e3);
7951
+ return () => clearTimeout(timer);
7952
+ }, [loading]);
7675
7953
  (0, react.useEffect)(() => subscribeFactRevision(CAPABILITY_FACT, () => {
7676
7954
  if (!loaded.current) return;
7677
7955
  load(true);
@@ -7725,6 +8003,8 @@ function useDiscover(t, active, onInstalled) {
7725
8003
  const done = typeof value?.["branch"] === "string" ? value["branch"] : branch;
7726
8004
  setInitOpen(false);
7727
8005
  setNotice(t("panels.discover.initDone", { branch: done }));
8006
+ beginSwitch();
8007
+ await loadSources();
7728
8008
  await load(true);
7729
8009
  });
7730
8010
  };
@@ -7742,8 +8022,11 @@ function useDiscover(t, active, onInstalled) {
7742
8022
  id
7743
8023
  },
7744
8024
  select: true
7745
- }).then(async (outcome) => {
7746
- if (outcome.ok) await load(true);
8025
+ }).then((outcome) => {
8026
+ if (!outcome.ok) return;
8027
+ beginSwitch();
8028
+ loadSources();
8029
+ load(true);
7747
8030
  }).finally(() => setAddingSource(false));
7748
8031
  };
7749
8032
  const removeSourceById = (id) => {
@@ -7755,6 +8038,8 @@ function useDiscover(t, active, onInstalled) {
7755
8038
  }).then(async (outcome) => {
7756
8039
  if (!outcome.ok) return;
7757
8040
  setDetail(null);
8041
+ beginSwitch();
8042
+ await loadSources();
7758
8043
  await load(true);
7759
8044
  });
7760
8045
  };
@@ -7767,11 +8052,23 @@ function useDiscover(t, active, onInstalled) {
7767
8052
  setSelectedLabels([]);
7768
8053
  setSort("default");
7769
8054
  setDetail(null);
8055
+ beginSwitch();
8056
+ setKnownSources((current) => current === null ? current : {
8057
+ sources: current.sources,
8058
+ selected: id
8059
+ });
7770
8060
  sources.send({
7771
8061
  action: "select",
7772
8062
  id
7773
8063
  }).then(async (outcome) => {
7774
- if (outcome.ok) await load(true);
8064
+ if (!outcome.ok) {
8065
+ setLoading(false);
8066
+ setSlow(false);
8067
+ loadSources();
8068
+ return;
8069
+ }
8070
+ await loadSources();
8071
+ await load(true);
7775
8072
  });
7776
8073
  };
7777
8074
  const install = () => {
@@ -7806,9 +8103,10 @@ function useDiscover(t, active, onInstalled) {
7806
8103
  locale,
7807
8104
  payload,
7808
8105
  loading,
8106
+ slow,
7809
8107
  failure,
7810
- sources: payload?.sources ?? [],
7811
- selected: payload?.selected ?? null,
8108
+ sources: payload?.sources ?? knownSources?.sources ?? [],
8109
+ selected: payload?.selected ?? knownSources?.selected ?? null,
7812
8110
  entries,
7813
8111
  shown,
7814
8112
  total: sorted.length,
@@ -7879,35 +8177,45 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
7879
8177
  t,
7880
8178
  d
7881
8179
  });
7882
- if (d.payload === null) return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, d.loading ? /* @__PURE__ */ (0, react.createElement)(DiscoverSkeleton, { label: t("panels.discover.loading") }) : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
8180
+ const slowHint = !d.manageOpen && d.loading && d.slow ? /* @__PURE__ */ (0, react.createElement)("p", {
8181
+ className: MarketPage_module_default.discoverNotice,
8182
+ role: "note"
8183
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
8184
+ size: 14,
8185
+ "aria-hidden": "true"
8186
+ }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.slowHint"))) : null;
8187
+ if (d.payload === null) return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, d.sources.length === 0 ? null : toolbar, d.loading ? /* @__PURE__ */ (0, react.createElement)(DiscoverSkeleton, { label: t("panels.discover.loading") }) : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
7883
8188
  t,
7884
8189
  text: t("panels.discover.sourcesFailed"),
7885
8190
  onRetry: d.reload
7886
- }), dialogs);
8191
+ }), slowHint, d.writeFailed === null ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverError }, d.writeFailed), dialogs);
7887
8192
  if (d.payload.state === "no-source") return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, /* @__PURE__ */ (0, react.createElement)(DiscoverNoSource, {
7888
8193
  t,
7889
8194
  onAdd: () => d.setManageOpen(true)
7890
8195
  }), dialogs);
7891
- const readFailed = d.payload.state === "invalid" ? t("panels.discover.invalid") : d.payload.state === "unreadable" ? t("panels.discover.unreadable") : null;
8196
+ const failed = d.payload.state === "invalid" || d.payload.state === "unreadable";
8197
+ const readFailed = !d.loading && failed ? d.payload.state === "invalid" ? t("panels.discover.invalid") : t("panels.discover.unreadable") : null;
8198
+ const uninitialized = d.loading ? null : d.uninitialized;
8199
+ const retrying = d.loading && failed;
7892
8200
  const emptyText = unfiltered({
7893
8201
  query: d.query,
7894
8202
  category: d.category,
7895
8203
  labels: d.selectedLabels
7896
8204
  }) ? t("panels.discover.empty") : t("panels.discover.noMatch");
7897
- return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.payload.stale === true ? /* @__PURE__ */ (0, react.createElement)("p", {
8205
+ return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.loading && !d.manageOpen ? /* @__PURE__ */ (0, react.createElement)(DiscoverLoading, { label: t("panels.discover.loading") }) : null, slowHint, !d.loading && d.payload.stale === true ? /* @__PURE__ */ (0, react.createElement)("p", {
7898
8206
  className: MarketPage_module_default.discoverNotice,
7899
8207
  role: "note"
7900
8208
  }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
7901
8209
  size: 14,
7902
8210
  "aria-hidden": "true"
7903
- }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null, d.uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
8211
+ }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null, uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
7904
8212
  t,
7905
8213
  text: readFailed,
7906
8214
  onRetry: d.reload
7907
8215
  }) : /* @__PURE__ */ (0, react.createElement)(DiscoverUninitialized, {
7908
8216
  t,
7909
- path: d.uninitialized.path,
7910
- empty: d.uninitialized.empty,
8217
+ path: uninitialized.path,
8218
+ empty: uninitialized.empty,
7911
8219
  onInit: () => d.setInitOpen(true)
7912
8220
  }), d.notice === null ? null : /* @__PURE__ */ (0, react.createElement)("p", {
7913
8221
  className: MarketPage_module_default.discoverNotice,
@@ -7926,7 +8234,7 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
7926
8234
  version
7927
8235
  }),
7928
8236
  onShowInstalled
7929
- }) : readFailed !== null || d.uninitialized !== null ? null : d.shown.length === 0 ? /* @__PURE__ */ (0, react.createElement)(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ (0, react.createElement)(DiscoverRows, {
8237
+ }) : readFailed !== null || uninitialized !== null || retrying ? null : d.shown.length === 0 ? /* @__PURE__ */ (0, react.createElement)(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ (0, react.createElement)(DiscoverRows, {
7930
8238
  t,
7931
8239
  locale: d.locale,
7932
8240
  entries: d.shown,
@@ -8707,7 +9015,7 @@ function newRequestId() {
8707
9015
  return crypto.randomUUID();
8708
9016
  }
8709
9017
  function useAddModule(options) {
8710
- const { open, onInstalled, failedText } = options;
9018
+ const { onInstalled, failedText } = options;
8711
9019
  const [spec, setSpec] = (0, react.useState)("");
8712
9020
  const [choice, setChoice] = (0, react.useState)({
8713
9021
  kind: "default",
@@ -8738,7 +9046,6 @@ function useAddModule(options) {
8738
9046
  networkText: failedText
8739
9047
  });
8740
9048
  (0, react.useEffect)(() => {
8741
- if (!open) return void 0;
8742
9049
  let alive = true;
8743
9050
  readBundleRegistries().then((response) => {
8744
9051
  if (!alive) return;
@@ -8747,19 +9054,8 @@ function useAddModule(options) {
8747
9054
  return () => {
8748
9055
  alive = false;
8749
9056
  };
8750
- }, [open]);
9057
+ }, []);
8751
9058
  const registry = registryOf(choice, custom);
8752
- (0, react.useEffect)(() => {
8753
- if (open) return;
8754
- generationRef.current += 1;
8755
- setGuideOpen(false);
8756
- setRegistryOpen(false);
8757
- setProblem(null);
8758
- setPreview(null);
8759
- setOutcome(null);
8760
- setFailure(null);
8761
- setPhase("idle");
8762
- }, [open]);
8763
9059
  const check = (0, react.useCallback)(() => {
8764
9060
  const wanted = spec.trim();
8765
9061
  if (wanted === "") return;
@@ -8896,15 +9192,21 @@ function useAddModule(options) {
8896
9192
  //#endregion
8897
9193
  //#region src/app/layouts/market/AddModuleDialog.tsx
8898
9194
  function AddModuleDialog({ t, open, onClose, onInstalled }) {
9195
+ if (!open) return null;
9196
+ return /* @__PURE__ */ (0, react.createElement)(AddModuleContent, {
9197
+ t,
9198
+ onClose,
9199
+ onInstalled
9200
+ });
9201
+ }
9202
+ function AddModuleContent({ t, onClose, onInstalled }) {
8899
9203
  const real = useAddModule({
8900
- open,
8901
9204
  onInstalled,
8902
9205
  failedText: t("panels.failed")
8903
9206
  });
8904
9207
  const devAdd = devSurface.useStrips("addModule", []);
8905
9208
  const mock = devAdd.current;
8906
9209
  const state = mock === void 0 ? real : devSurface.addModuleState(real, mock);
8907
- if (!open) return null;
8908
9210
  const installing = state.phase === "installing";
8909
9211
  const checking = state.phase === "inspecting";
8910
9212
  const empty = state.spec.trim() === "";
@@ -8964,7 +9266,7 @@ function AddModuleDialog({ t, open, onClose, onInstalled }) {
8964
9266
  onClick: () => state.install()
8965
9267
  }, t("panels.market.add.retry")) : null) : null);
8966
9268
  return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
8967
- open,
9269
+ open: true,
8968
9270
  onClose: () => {
8969
9271
  if (!installing) onClose();
8970
9272
  },
@@ -9037,7 +9339,7 @@ function makeMarketEntryIcon(units) {
9037
9339
  return /* @__PURE__ */ (0, react.createElement)(IconModules, { size });
9038
9340
  };
9039
9341
  }
9040
- function MarketPanel({ t, units }) {
9342
+ function MarketPanel({ t, units, titleOf }) {
9041
9343
  const manifests = useLiveManifests(units);
9042
9344
  const installable = useInstallableUnits(units);
9043
9345
  const { capabilities, checkedAt, checking, forceProbe, reload: reloadCapability } = useCapabilityMap(0);
@@ -9135,6 +9437,7 @@ function MarketPanel({ t, units }) {
9135
9437
  }, /* @__PURE__ */ (0, react.createElement)(MarketView, {
9136
9438
  key: `${mock?.id ?? "real-market"}-${mockNonce}`,
9137
9439
  t,
9440
+ titleOf,
9138
9441
  manifests,
9139
9442
  installable,
9140
9443
  capabilities,
@@ -9170,6 +9473,10 @@ function MarketPanel({ t, units }) {
9170
9473
  }
9171
9474
  function registerMarketPanel(ctx, units) {
9172
9475
  const t = ctx.locale.bind(LOCALE_NS);
9476
+ const titleOf = (title) => title === void 0 ? "" : ctx.locale.resolveText?.({
9477
+ zh: title.zh,
9478
+ en: title.en
9479
+ }) ?? title.zh;
9173
9480
  ctx.slots.inject("sidebar.panellist", () => ctx.slots.register({
9174
9481
  name: "sidebar.panellist",
9175
9482
  id: MARKET_PANEL_ID,
@@ -9181,7 +9488,10 @@ function registerMarketPanel(ctx, units) {
9181
9488
  name: "main",
9182
9489
  key: MARKET_PANEL_ID,
9183
9490
  locale: LOCALE_NS,
9184
- inject: () => ({ units })
9491
+ inject: () => ({
9492
+ units,
9493
+ titleOf
9494
+ })
9185
9495
  }, MarketPanel));
9186
9496
  }
9187
9497
  //#endregion
@@ -9233,6 +9543,14 @@ function flush() {
9233
9543
  }).catch(() => void 0);
9234
9544
  }
9235
9545
  //#endregion
9546
+ //#region src/shared/hooks/resource-view.ts
9547
+ var IDLE = { phase: "idle" };
9548
+ var LOADING = { phase: "loading" };
9549
+ function resourceViewOf(enabled, current, identity) {
9550
+ if (!enabled) return IDLE;
9551
+ return current.identity === identity ? current.state : LOADING;
9552
+ }
9553
+ //#endregion
9236
9554
  //#region src/shared/hooks/use-api-resource.ts
9237
9555
  var use_api_resource_exports = /* @__PURE__ */ __exportAll({
9238
9556
  readKeyOf: () => readKeyOf,
@@ -9304,7 +9622,10 @@ function useApiResource(route, query, refreshToken, options = {}) {
9304
9622
  const identity = resourceIdentity(route, query, options.key);
9305
9623
  const factRev = useFactRevision(options.fact ?? factOfRoute(route));
9306
9624
  const key = readKeyOf(identity, refreshToken, factRev);
9307
- const [state, setState] = (0, react.useState)(() => enabled ? { phase: "loading" } : { phase: "idle" });
9625
+ const [current, setCurrent] = (0, react.useState)(() => ({
9626
+ identity,
9627
+ state: enabled ? LOADING : IDLE
9628
+ }));
9308
9629
  const lastIdentity = (0, react.useRef)(null);
9309
9630
  const queryRef = (0, react.useRef)(query);
9310
9631
  (0, react.useEffect)(() => {
@@ -9313,17 +9634,23 @@ function useApiResource(route, query, refreshToken, options = {}) {
9313
9634
  (0, react.useEffect)(() => {
9314
9635
  if (!enabled) {
9315
9636
  lastIdentity.current = null;
9316
- setState({ phase: "idle" });
9317
9637
  return;
9318
9638
  }
9319
9639
  let cancelled = false;
9640
+ const put = (state) => setCurrent({
9641
+ identity,
9642
+ state
9643
+ });
9320
9644
  const sameIdentity = lastIdentity.current === identity;
9321
9645
  lastIdentity.current = identity;
9322
- setState((prev) => sameIdentity && prev.value !== void 0 ? {
9323
- phase: "loading",
9324
- value: prev.value,
9325
- ...prev.at === void 0 ? {} : { at: prev.at }
9326
- } : { phase: "loading" });
9646
+ setCurrent((prev) => ({
9647
+ identity,
9648
+ state: sameIdentity && prev.state.value !== void 0 ? {
9649
+ phase: "loading",
9650
+ value: prev.state.value,
9651
+ ...prev.state.at === void 0 ? {} : { at: prev.state.at }
9652
+ } : LOADING
9653
+ }));
9327
9654
  const flight = requestResource(route, queryRef.current, key);
9328
9655
  const owner = options.report === false ? null : unitOfRoute(route);
9329
9656
  if (owner !== null) reportPanelRead({
@@ -9334,7 +9661,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
9334
9661
  flight.task.then((response) => {
9335
9662
  if (cancelled) return;
9336
9663
  if (response.ok) {
9337
- setState({
9664
+ put({
9338
9665
  phase: "ready",
9339
9666
  value: response,
9340
9667
  at: Date.now()
@@ -9346,7 +9673,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
9346
9673
  });
9347
9674
  return;
9348
9675
  }
9349
- setState({
9676
+ put({
9350
9677
  phase: "error",
9351
9678
  error: response.error
9352
9679
  });
@@ -9362,7 +9689,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
9362
9689
  }).catch((reason) => {
9363
9690
  if (cancelled) return;
9364
9691
  const message = reason instanceof Error ? reason.message : String(reason);
9365
- setState({
9692
+ put({
9366
9693
  phase: "error",
9367
9694
  error: {
9368
9695
  code: "network",
@@ -9393,7 +9720,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
9393
9720
  options.fact,
9394
9721
  options.report
9395
9722
  ]);
9396
- return state;
9723
+ return resourceViewOf(enabled, current, identity);
9397
9724
  }
9398
9725
  //#endregion
9399
9726
  //#region src/shared/hooks/use-diy-debug.ts
@@ -10440,6 +10767,26 @@ function assembleClientUnits(registry) {
10440
10767
  for (const face of CLIENT_UNITS) registry.register(face);
10441
10768
  }
10442
10769
  //#endregion
10770
+ //#region src/app/units/unit-titles.ts
10771
+ var UNIT_TITLES_OWNER = "dsh-workbench";
10772
+ function unitTitlesOf(manifests) {
10773
+ const zh = {};
10774
+ const en = {};
10775
+ for (const manifest of manifests) {
10776
+ const title = manifest.title;
10777
+ if (title === void 0 || title.zh.trim() === "" || title.en.trim() === "") continue;
10778
+ zh[unitTitleKey(manifest.id)] = title.zh;
10779
+ en[unitTitleKey(manifest.id)] = title.en;
10780
+ }
10781
+ return {
10782
+ unit: UNIT_TITLES_OWNER,
10783
+ messages: {
10784
+ zh,
10785
+ en
10786
+ }
10787
+ };
10788
+ }
10789
+ //#endregion
10443
10790
  //#region src/kernel/client/board-registry.ts
10444
10791
  function createBoardRegistry() {
10445
10792
  const modules = [];
@@ -10515,6 +10862,10 @@ function createClientUnitRegistry(options = {}) {
10515
10862
  let installableIds = null;
10516
10863
  let revision = 0;
10517
10864
  let manifestsCache;
10865
+ let titleSignature = "";
10866
+ function titlesOf(manifests) {
10867
+ return manifests.flatMap((manifest) => manifest.title === void 0 ? [] : [`${manifest.id}=${manifest.title.zh}/${manifest.title.en}`]).join("|");
10868
+ }
10518
10869
  function notify() {
10519
10870
  revision += 1;
10520
10871
  for (const listener of [...listeners]) try {
@@ -10594,7 +10945,10 @@ function createClientUnitRegistry(options = {}) {
10594
10945
  for (const entry of registrations) {
10595
10946
  const next = known.get(entry.unit);
10596
10947
  if (entry.mounted === null) {
10597
- if (next !== void 0 && attach(entry)) changed = true;
10948
+ if (next !== void 0) {
10949
+ attach(entry);
10950
+ changed = true;
10951
+ }
10598
10952
  continue;
10599
10953
  }
10600
10954
  if (next === void 0) {
@@ -10603,6 +10957,11 @@ function createClientUnitRegistry(options = {}) {
10603
10957
  changed = true;
10604
10958
  }
10605
10959
  }
10960
+ const titles = titlesOf(manifests);
10961
+ if (titles !== titleSignature) {
10962
+ titleSignature = titles;
10963
+ changed = true;
10964
+ }
10606
10965
  if (!changed) return;
10607
10966
  manifestsCache = void 0;
10608
10967
  notify();
@@ -11373,6 +11732,7 @@ function publishRows(args, preview, t) {
11373
11732
  const unit = textOf(args, "unit");
11374
11733
  const target = textOf(args, "target");
11375
11734
  const version = textOf(args, "version");
11735
+ const author = textOf(args, "author");
11376
11736
  const rows = [
11377
11737
  {
11378
11738
  label: t("approval.publish.module"),
@@ -11388,7 +11748,7 @@ function publishRows(args, preview, t) {
11388
11748
  },
11389
11749
  {
11390
11750
  label: t("approval.publish.author"),
11391
- value: preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
11751
+ value: author !== "" ? author : preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
11392
11752
  }
11393
11753
  ];
11394
11754
  const market = preview?.market;
@@ -11435,17 +11795,22 @@ function PublishChangelogSeat({ changelog, t }) {
11435
11795
  function PublishApprovalSeat({ args, t }) {
11436
11796
  const unit = textOf(args, "unit");
11437
11797
  const version = textOf(args, "version");
11798
+ const author = textOf(args, "author");
11438
11799
  const [preview, setPreview] = (0, react.useState)(() => unit === "" ? null : void 0);
11439
11800
  (0, react.useEffect)(() => {
11440
11801
  if (unit === "") return;
11441
11802
  let live = true;
11442
- readPublishPreview(unit, version).then((response) => {
11803
+ readPublishPreview(unit, version, author).then((response) => {
11443
11804
  if (live) setPreview(response.ok ? response.preview : null);
11444
11805
  });
11445
11806
  return () => {
11446
11807
  live = false;
11447
11808
  };
11448
- }, [unit, version]);
11809
+ }, [
11810
+ unit,
11811
+ version,
11812
+ author
11813
+ ]);
11449
11814
  return (0, react.createElement)(ApprovalPlan, { rows: publishRows(args, preview, t) }, (0, react.createElement)(PublishChangelogSeat, {
11450
11815
  changelog: preview?.changelog,
11451
11816
  t
@@ -12210,10 +12575,10 @@ function dismissPanelByPointer(next, scope, onOpenChange) {
12210
12575
  //#region src/app/layouts/rightbar/PanelModules.tsx
12211
12576
  function PanelModules({ t, open, onOpenChange, enabledUnits, workspace, refreshToken, manifests, onOpenMarket }) {
12212
12577
  const { capabilities, checkedAt, forceProbe } = useCapabilityMap(refreshToken);
12213
- const [decided, setDecided] = (0, react.useState)(false);
12578
+ const decided = (0, react.useRef)(false);
12214
12579
  (0, react.useEffect)(() => {
12215
- if (!open || decided) return;
12216
- setDecided(true);
12580
+ if (!open || decided.current) return;
12581
+ decided.current = true;
12217
12582
  if (!shouldProbeOnEnter({
12218
12583
  checkedAt,
12219
12584
  now: Date.now(),
@@ -12223,7 +12588,6 @@ function PanelModules({ t, open, onOpenChange, enabledUnits, workspace, refreshT
12223
12588
  forceProbe();
12224
12589
  }, [
12225
12590
  open,
12226
- decided,
12227
12591
  checkedAt,
12228
12592
  forceProbe
12229
12593
  ]);
@@ -14363,7 +14727,7 @@ function messagesOf(units) {
14363
14727
  ...face.messages === void 0 ? {} : { messages: face.messages }
14364
14728
  }));
14365
14729
  }
14366
- 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*/";
14730
+ var COMPONENT_CSS_MARKER = ".wb-activityBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding-top: var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-activityBlock:first-child {\n padding-top: 0;\n border-top: none;\n}\n\n.wb-activityBlockHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8);\n}\n\n.wb-activityLine {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-activityLineText {\n flex: none;\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n max-height: var(--wb-len-72);\n overflow-y: auto;\n}\n\n.wb-activityLineAt {\n flex: none;\n margin-left: auto;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-activityLine > .wb-activityLineAt,\n.wb-activityLine > .wb-activityLineActions {\n margin-left: auto;\n}\n\n.wb-activityLine > .wb-activityLineAt + .wb-activityLineActions {\n margin-left: 0;\n}\n\n.wb-activityLineActions {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n.wb-activityActionFailed {\n color: var(--dsw-alias-state-error-primary);\n}\n.wb-note {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-problem {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalCommand {\n max-width: 100%;\n}\n.wb-approvalPlan {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-approvalHint {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-approvalRows {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n}\n.wb-approvalRow {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n.wb-approvalLabel {\n flex: none;\n width: var(--wb-len-56);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-approvalValue {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalWarn {\n color: var(--dsw-alias-label-secondary);\n}\n.wb-cardHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-8) var(--wb-card-gutter);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-cardTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardMeta {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-cardMeta::before {\n content: '\\00b7';\n margin-right: var(--wb-len-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen ~ .wb-cardRefresh {\n margin-left: 0;\n}\n\n.wb-cardOpen:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh {\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardRefresh:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-cardGear {\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-3);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardGear:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n.wb-card {\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: none;\n}\n.wb-cardBody {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-card-gutter);\n font-size: var(--dsw-font-xxs-12-font-size);\n}\n.wb-cardBleed {\n margin-inline: calc(-1 * var(--wb-card-gutter));\n}\n._anchor_yq4s2_1 {\n display: contents;\n}\n.wb-spinner {\n display: inline-flex;\n align-items: center;\n flex: none;\n}\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n background: transparent;\n}\n\n.wb-choiceMenu[data-variant='boxed'] {\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-choiceOption {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-choiceOptionOn {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-checkbox {\n position: absolute;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.wb-checkboxBox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xs);\n corner-shape: round;\n color: var(--dsw-alias-label-primary-foreground);\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-choiceOption:hover .wb-checkboxBox {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-checkbox:checked + .wb-checkboxBox {\n border-color: var(--dsw-alias-brand-primary);\n background: var(--dsw-alias-brand-primary);\n}\n\n.wb-checkbox:disabled + .wb-checkboxBox {\n cursor: default;\n}\n\n.wb-checkbox:focus-visible + .wb-checkboxBox {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n.wb-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceOption:has(:disabled) {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-choiceOption:has(:disabled),\n.wb-choiceOption:has(:disabled):hover {\n background: transparent;\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.wb-choiceLabelText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceLabel:has(.wb-choiceDescription) .wb-choiceLabelText {\n overflow: visible;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.wb-choiceDescription {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n.wb-choiceLoading {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-choiceLoadingText {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceEmpty {\n display: flex;\n align-items: center;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio {\n appearance: none;\n -webkit-appearance: none;\n flex: none;\n box-sizing: border-box;\n width: var(--wb-len-12);\n height: var(--wb-len-12);\n margin: 0;\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: 50%;\n corner-shape: round;\n background-color: transparent;\n cursor: pointer;\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-radio:not(:checked):hover {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio:checked {\n border-color: var(--dsw-alias-brand-primary);\n background-image: radial-gradient(\n circle at center,\n var(--dsw-alias-brand-primary) 0 3px,\n transparent 3px\n );\n}\n\n.wb-radio:disabled {\n cursor: default;\n}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-formActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n\n.wb-formActionDanger {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-rows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n}\n.wb-rows > :not(.wb-row) {\n grid-column: 1 / -1;\n}\n.wb-row {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: baseline;\n gap: var(--wb-len-8);\n padding: var(--wb-len-4) 0;\n}\n.wb-row + .wb-row {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.wb-rowKey {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-rowValue {\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-rows > .wb-row {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-rows > .wb-row {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-confirmBar {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n width: 100%;\n box-sizing: border-box;\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-confirmBarTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 600;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-confirmBarHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n.wb-field {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n.wb-fieldLabel {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-fieldHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-field:has(:disabled) .wb-fieldLabel {\n opacity: 0.4;\n}\n.wb-formRows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-12);\n}\n\n.wb-formRows > :not(.wb-formRow) {\n grid-column: 1 / -1;\n}\n\n.wb-formRow {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: center;\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-8);\n}\n\n.wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n align-items: stretch;\n gap: var(--wb-len-6);\n}\n\n.wb-formRows > .wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.wb-formLabel {\n justify-self: start;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: nowrap;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formLabel {\n white-space: normal;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formHint,\n.wb-formRow[data-layout='stacked'] .wb-formProblem {\n grid-column: 1 / -1;\n}\n\n.wb-formControl {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.wb-formControl\n > :where(\n .wb-selectAnchor,\n .wb-choiceMenu,\n input:not(\n [type='checkbox'],\n [type='radio'],\n [type='button'],\n [type='submit'],\n [type='reset'],\n [type='image'],\n [type='color'],\n [type='range']\n ),\n select,\n textarea\n ) {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n}\n\n.wb-formHint {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-formProblem {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(.wb-formProblem) .wb-formLabel {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(:disabled) .wb-formLabel {\n opacity: 0.4;\n}\n\n.wb-formRows > .wb-formRow {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-formRows > .wb-formRow {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-form {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n width: 100%;\n}\n:where(.wb-link) {\n margin-left: var(--wb-len-2);\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n white-space: nowrap;\n vertical-align: baseline;\n}\n\n:where(.wb-link:hover) {\n text-decoration: underline;\n}\n\n:where(.wb-link:focus-visible) {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n.wb-longTask {\n padding-top: var(--wb-len-12);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n.wb-longTaskHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n}\n\n.wb-longTaskLink {\n flex: none;\n}\n\n.wb-longTaskHeadline {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-longTaskProblem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-longTaskDump {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-longTaskDump pre {\n margin: var(--wb-len-4) 0 0;\n max-height: var(--wb-len-220);\n overflow: auto;\n}\n\n.wb-longTaskStop {\n display: inline-flex;\n flex: none;\n align-items: center;\n align-self: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n padding: 0;\n margin-left: auto;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-longTaskStop:hover:not(:disabled),\n.wb-longTaskStop:focus-visible {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStop:disabled {\n cursor: default;\n}\n\n.wb-longTaskStopArmed,\n.wb-longTaskStopArmed:hover:not(:disabled),\n.wb-longTaskStopArmed:focus-visible {\n gap: var(--wb-len-4);\n width: auto;\n padding: 0 var(--wb-len-7);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStopLabel {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n.wb-longTaskStopWhy {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-centered.wb-centeredCompact {\n flex: none;\n min-height: 0;\n gap: var(--wb-len-8);\n padding: var(--wb-len-20) var(--wb-len-16);\n}\n\n.wb-centered.wb-centeredCompact .wb-centeredHero {\n margin-bottom: var(--wb-len-4);\n}\n\n.wb-skeleton {\n display: flex;\n flex-direction: column;\n}\n\n.wb-skeletonRow {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-skeletonRow + .wb-skeletonRow::before {\n content: '';\n align-self: stretch;\n height: var(--wb-len-0-5);\n margin: 0 var(--wb-len-8) var(--wb-len-neg-0-5);\n background: var(--dsw-alias-border-l2);\n}\n\n.wb-skeletonBar {\n display: block;\n height: var(--wb-len-13);\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-bg-skeleton);\n animation: wb-skeleton-pulse var(--wb-dur-1-4) var(--ds-ease-in-out) infinite;\n}\n\n.wb-skeletonBarTitle {\n width: 62%;\n}\n\n.wb-skeletonBarMeta {\n width: 32%;\n height: var(--wb-len-10);\n}\n\n.wb-skeletonRow:nth-child(2n) .wb-skeletonBarTitle {\n width: 74%;\n}\n\n.wb-skeletonRow:nth-child(3n) .wb-skeletonBarTitle {\n width: 52%;\n}\n\n@keyframes wb-skeleton-pulse {\n 50% {\n opacity: 0.45;\n }\n}\n\n.wb-centered {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: var(--wb-len-14);\n flex: 1;\n min-height: var(--wb-len-240);\n padding: 0 var(--wb-len-24) var(--wb-len-24);\n text-align: center;\n}\n\n.wb-centeredHero {\n display: flex;\n margin-bottom: var(--wb-len-16);\n color: var(--dsw-alias-label-dimmed);\n}\n\n.wb-centeredTitle {\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-centeredHint {\n max-width: var(--wb-len-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-centeredDetail {\n max-width: var(--wb-len-320);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-dimmed);\n word-break: break-all;\n}\n\n.wb-centeredAction {\n display: flex;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n@media (prefers-reduced-motion: reduce) {\n .wb-skeletonBar {\n animation: none;\n }}\n.wb-textField {\n box-sizing: border-box;\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n outline: none;\n}\n\n.wb-textField:focus {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-textField:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-textField[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-textField[aria-invalid='true']:focus {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n:where(.wb-textField) {\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n}\n:where(.wb-selectTrigger) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n text-align: left;\n cursor: pointer;\n}\n\n.wb-selectTrigger:focus-visible {\n outline: none;\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true']:focus-visible {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-selectLoading:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: none;\n background: transparent;\n font-size: var(--wb-font-row);\n}\n\n.wb-selectGhost:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-selectGhost:focus-visible {\n outline: var(--dsw-focus-ring-width) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n border-color: transparent;\n box-shadow: none;\n}\n\n.wb-selectIconOnly {\n width: var(--wb-len-36);\n height: var(--wb-len-36);\n min-height: 0;\n gap: 0;\n padding: 0;\n justify-content: center;\n}\n\n.wb-selectReveal {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.wb-selectIconOnly .wb-selectIcon {\n width: 100%;\n height: 100%;\n}\n\n.wb-selectAnchor {\n display: block;\n width: 100%;\n}\n\n.wb-selectIcon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectValue {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n.wb-selectPlaceholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectChevron {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n.wb-selectMenu {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n max-height: min(var(--wb-len-320), calc(100vh - var(--wb-len-24)));\n}\n\n:where(.wb-selectSearch) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n.wb-selectSearch:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectSearch.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-selectSearch.wb-selectGhost:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: none;\n}\n\n.wb-selectSearchIcon {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-textField.wb-selectSearchInput {\n flex: 1;\n min-width: 0;\n min-height: 0;\n padding: 0;\n border: none;\n background: transparent;\n}\n\n.wb-textField.wb-selectSearchInput:focus {\n box-shadow: none;\n}\n\n.wb-selectFallback {\n width: 100%;\n}\n\n.wb-selectHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\nsection.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-len-16);\n border: 0;\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-settings-card-fill);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.wb-settings .wb-settingsTitle {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-strong-14-font-size);\n line-height: var(--wb-line-24);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\n.wb-stateBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-stateBlockTitle {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n.wb-stateBlockHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-stateBlockActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n.wb-stateBlockResolving {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._marketList_bnt61_1 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._marketRow_bnt61_10 {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n column-gap: var(--wb-len-14);\n row-gap: var(--wb-len-4);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-lg);\n}\n\n._marketIcon_bnt61_20 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_bnt61_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_bnt61_39 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketStatus_bnt61_48 {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketStateText_bnt61_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_bnt61_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_bnt61_66 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._marketName_bnt61_39 ._marketVersion_bnt61_72 {\n margin-left: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n}\n\n._marketVersion_bnt61_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_bnt61_72::before {\n content: '';\n display: inline-block;\n width: var(--wb-len-1);\n height: var(--wb-len-10);\n margin: 0 var(--wb-len-8) 0 var(--wb-len-2);\n vertical-align: -1px;\n background: var(--dsw-alias-border-l2);\n}\n\n._marketLocalTag_bnt61_94 {\n margin-left: var(--wb-len-8);\n padding: 0 var(--wb-len-6);\n border: var(--wb-len-1) solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n}\n\n._marketEnd_bnt61_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_bnt61_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_bnt61_112::before {\n content: '';\n width: 0;\n height: var(--wb-len-14);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketActions_bnt61_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_bnt61_131 {\n color: var(--dsw-alias-state-warn-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._marketSelfDivider_bnt61_137 {\n height: 0;\n margin-top: calc(0px - var(--wb-len-16));\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_bnt61_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_bnt61_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_bnt61_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_bnt61_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_bnt61_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionQuiet_bnt61_175 ._marketSectionTitle_bnt61_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_bnt61_175 ._marketName_bnt61_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_bnt61_175 ._marketIcon_bnt61_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_bnt61_188 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-height: var(--wb-len-32);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketNote_bnt61_198 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_bnt61_205 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._marketEmpty_bnt61_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_bnt61_217 {\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-32);\n padding: 0 clamp(var(--wb-len-24), 4vw, var(--wb-len-48)) var(--wb-len-48);\n overflow-x: hidden;\n overflow-y: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_bnt61_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_bnt61_235 {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-16);\n padding-top: var(--wb-len-28);\n}\n\n._marketPageTitle_bnt61_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_bnt61_248 {\n margin: var(--wb-len-4) 0 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketPageTools_bnt61_254 {\n flex: none;\n align-self: center;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--wb-len-16);\n}\n\n._marketPanel_bnt61_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_bnt61_263[hidden] {\n display: none;\n}\n\n._marketTabs_bnt61_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_bnt61_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_bnt61_283 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n color: var(--dsw-alias-label-caption);\n cursor: pointer;\n}\n\n._marketIconButton_bnt61_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_bnt61_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_bnt61_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_bnt61_312 svg {\n animation: _wb-spin_bnt61_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_bnt61_316 {\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n border-radius: var(--dsw-radius-md);\n}\n\n._marketEmpty_bnt61_212 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) var(--wb-len-16);\n text-align: center;\n}\n\n._marketEmptyTitle_bnt61_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_bnt61_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_bnt61_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_bnt61_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_bnt61_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_bnt61_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_bnt61_372 {\n min-width: 0;\n max-width: var(--wb-len-240);\n margin-left: calc(0px - var(--wb-len-8));\n font-weight: 500;\n}\n\n._discoverMarketName_bnt61_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_bnt61_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_bnt61_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_bnt61_395 {\n flex: none;\n}\n\n._discoverSearch_bnt61_399 {\n box-sizing: border-box;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_bnt61_361 {\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(var(--wb-len-120), 1fr) auto;\n grid-template-areas:\n 'market search refresh'\n 'labels sort sort';\n }\n\n ._discoverMarket_bnt61_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_bnt61_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_bnt61_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_bnt61_399 {\n grid-area: search;\n }\n\n ._discoverSort_bnt61_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_bnt61_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_bnt61_440 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_bnt61_447 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._discoverCard_bnt61_456 {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n margin: 0 calc(0px - var(--wb-len-8));\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCard_bnt61_456:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_bnt61_470 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverArtworkImage_bnt61_482 {\n object-fit: contain;\n}\n\n._discoverMain_bnt61_486 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_bnt61_494 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverCardOpen_bnt61_502 {\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n}\n\n._discoverCardOpen_bnt61_502::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_bnt61_502:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_bnt61_502:focus-visible::after {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverStrong_bnt61_533 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_bnt61_539 {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverMeta_bnt61_548 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._discoverMuted_bnt61_555 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_bnt61_561 {\n position: relative;\n z-index: var(--wb-z-10);\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverBlocked_bnt61_570 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_bnt61_575 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) 0;\n text-align: center;\n}\n\n._discoverEmptyTitle_bnt61_584 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_bnt61_575 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_bnt61_594 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_bnt61_600 {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n padding: 0;\n border: 0;\n background: 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: var(--wb-font-12-5);\n cursor: pointer;\n}\n\n._discoverCrumb_bnt61_600:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_bnt61_600:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverCrumbIcon_bnt61_623 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_bnt61_627 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_bnt61_633 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_bnt61_639 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._discoverDetailPanel_bnt61_646 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_bnt61_653 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_bnt61_658 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_bnt61_663 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_bnt61_668 {\n margin: var(--wb-len-16) 0 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverSection_bnt61_674 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_bnt61_681 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_bnt61_687 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_bnt61_692 {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--wb-len-16);\n min-height: var(--wb-len-44);\n padding: var(--wb-len-8) var(--wb-len-2);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverFactKind_bnt61_702 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_bnt61_708 {\n min-width: 0;\n margin: 0;\n text-align: end;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n}\n\n._discoverCode_bnt61_716 {\n padding: var(--wb-len-2) var(--wb-len-6);\n border-radius: var(--wb-radius-6);\n background: var(--dsw-alias-bg-module-platform);\n font-family: var(--ds-font-family-code);\n font-size: var(--dsw-font-xxs-12-font-size);\n box-decoration-break: clone;\n}\n\n._discoverTags_bnt61_725 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_bnt61_732 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_bnt61_732:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_bnt61_742 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_bnt61_750 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverVersionName_bnt61_758 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_bnt61_763 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverFailure_bnt61_772 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_bnt61_778 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverNotice_bnt61_787 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverNotice_bnt61_787 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_bnt61_805 {\n align-self: center;\n}\n\n._discoverDialog_bnt61_809 {\n width: min(var(--wb-len-480), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_bnt61_813 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_bnt61_819 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_bnt61_827 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceCurrent_bnt61_836 {\n flex: none;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceLoading_bnt61_843 {\n display: flex;\n flex: none;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceHint_bnt61_853 {\n display: flex;\n flex-basis: 100%;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverSourceHint_bnt61_853 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_bnt61_867 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_bnt61_873 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_bnt61_879 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_bnt61_884 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_bnt61_890 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_bnt61_895 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_bnt61_901 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_bnt61_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_bnt61_470._discoverSkeletonFill_bnt61_901 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_bnt61_910 {\n display: block;\n height: var(--wb-len-12);\n margin: var(--wb-len-4) 0;\n border-radius: var(--dsw-radius-xs);\n}\n\n._discoverSkeletonTitle_bnt61_917 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_bnt61_921 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_bnt61_1 {\n 0% {\n opacity: 1;\n }\n 40% {\n opacity: 0.6;\n }\n 80%,\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._discoverSkeletonFill_bnt61_901 {\n animation: none;\n }\n}\n\n._foot_1ud1j_1 {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._footText_1ud1j_13 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1ud1j_18 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._wide_1lv8f_1 {\n justify-content: center;\n width: 100%;\n height: var(--wb-len-40);\n border-radius: var(--dsw-radius-md);\n}\n\n._dialog_1lv8f_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1lv8f_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1lv8f_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1lv8f_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1lv8f_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._input_1lv8f_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1lv8f_45 {\n height: var(--wb-len-32);\n margin-left: var(--wb-len-26);\n padding: 0 var(--wb-len-10);\n}\n\n._options_1lv8f_51 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8) var(--wb-len-12);\n}\n\n._guideToggle_1lv8f_59 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-4);\n align-self: flex-start;\n margin-top: var(--wb-len-4);\n padding: 0;\n border: 0;\n background: transparent;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._guideToggle_1lv8f_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1lv8f_59 svg,\n._registryToggle_1lv8f_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1lv8f_59[aria-expanded='true'] svg,\n._registryToggle_1lv8f_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1lv8f_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1lv8f_78 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n height: var(--wb-len-26);\n padding: 0 var(--wb-len-8) 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n font: inherit;\n font-size: var(--wb-font-12-5);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._registryToggle_1lv8f_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1lv8f_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1lv8f_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1lv8f_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1lv8f_45 {\n position: fixed;\n z-index: var(--wb-z-1100);\n box-sizing: border-box;\n width: min(var(--wb-len-440), 100vw - var(--wb-len-24));\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-12);\n border: 0;\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-2);\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l3);\n box-shadow: var(--dsw-elevation-prominent);\n}\n\n._registryOption_1lv8f_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid transparent;\n border-radius: var(--dsw-radius-lg);\n cursor: pointer;\n}\n\nlabel._registryOption_1lv8f_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1lv8f_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1lv8f_143[data-checked='true'] {\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._registryOption_1lv8f_143 input[type='radio'] {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._registryTitle_1lv8f_179 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n font: var(--dsw-font-xs-13);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n._registryHint_1lv8f_189 {\n margin-left: var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._inputError_1lv8f_197 {\n margin: var(--wb-len-neg-4) 0 0 var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._guide_1lv8f_59 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._guideList_1lv8f_214 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._guideItem_1lv8f_223 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0;\n}\n\n._guideIndex_1lv8f_230 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._guideMain_1lv8f_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1lv8f_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1lv8f_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1lv8f_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1lv8f_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1lv8f_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1lv8f_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1lv8f_285 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0 var(--wb-len-4);\n text-align: center;\n}\n\n._heroIcon_1lv8f_294 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-44);\n height: var(--wb-len-44);\n color: var(--dsw-alias-label-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1lv8f_311 {\n margin: 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n._wizardTitle_1lv8f_319 {\n margin: 0;\n font-size: var(--wb-font-18);\n line-height: var(--wb-len-26);\n font-weight: 600;\n}\n\n._subject_1lv8f_326 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n text-align: center;\n}\n\n._subjectName_1lv8f_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1lv8f_343,\n._subjectDesc_1lv8f_344 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._result_1lv8f_351,\n._resultWarn_1lv8f_352 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._resultWarn_1lv8f_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._resultMeta_1lv8f_365 {\n margin: 0;\n padding: 0 var(--wb-len-12);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._approval_1lv8f_373 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-state-warn-primary);\n border-radius: var(--dsw-radius-lg);\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._approvalTitle_1lv8f_383 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._approvalText_1lv8f_390 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1lv8f_396 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n font-weight: 600;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._note_1lv8f_403 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._noteWarn_1lv8f_410 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1lv8f_414 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1lv8f_418 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._detailLabel_1lv8f_425 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1lv8f_425 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-3);\n font-family: var(--dsw-font-mono, monospace);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n._note_1enlz_1 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._note_1enlz_1 > svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n._slot_1t7dx_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1t7dx_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1t7dx_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1t7dx_31 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._paused_1t7dx_35 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._trouble_1t7dx_39 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._pulse_1t7dx_43 {\n animation: _wb-debug-breathe_1t7dx_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-debug-breathe_1t7dx_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1t7dx_43 {\n animation: none;\n }\n}\n\n._entry_1t7dx_64 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1t7dx_71 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1t7dx_78 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1t7dx_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: 0;\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n}\n\n._act_1t7dx_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1t7dx_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._actStop_1t7dx_110:hover,\n._actStop_1t7dx_110:focus-visible {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._actArmed_1t7dx_115,\n._actArmed_1t7dx_115:hover,\n._actArmed_1t7dx_115:focus-visible {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n width: auto;\n color: var(--dsw-alias-state-error-primary);\n gap: var(--wb-len-4);\n padding: 0 var(--wb-len-7);\n}\n\n._actLabel_1t7dx_125 {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._entryLine_1t7dx_131 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1t7dx_138 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1t7dx_150 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1t7dx_156 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1t7dx_162 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._slot_1gkj9_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1gkj9_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1gkj9_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1gkj9_31 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._done_1gkj9_35 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._pulse_1gkj9_39 {\n animation: _wb-record-breathe_1gkj9_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-record-breathe_1gkj9_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1gkj9_39 {\n animation: none;\n }\n}\n\n._entry_1gkj9_60 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1gkj9_67 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1gkj9_74 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1gkj9_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-22);\n padding: 0 var(--wb-len-7);\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._act_1gkj9_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1gkj9_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._entryLine_1gkj9_108 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1gkj9_115 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1gkj9_127 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1gkj9_133 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1gkj9_139 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._item_lyox9_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n}\n\n._item_lyox9_1 + ._item_lyox9_1 {\n padding-top: var(--wb-len-14);\n border-top: var(--wb-len-0-5) solid var(--dsw-alias-settings-card-stroke);\n}\n\n._head_lyox9_12 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._title_lyox9_19 {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._description_lyox9_31 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._rows_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._row_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-settings-card-stroke);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-settings-card-fill);\n}\n\n._head_85r3w_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._pick_85r3w_27 {\n flex: 0 1 auto;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._pick_85r3w_27 > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._code_85r3w_39 {\n --dsl-code-block-background: var(--dsw-alias-bg-layer-1);\n margin: 0;\n}\n\n._missing_85r3w_44,\n._conflict_85r3w_45 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-warn-primary);\n}\n._body_11oac_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._sources_11oac_7 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._sourcesLabel_11oac_14 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\nbutton._sourceOn_11oac_19 {\n border-color: var(--dsw-alias-brand-primary);\n}\n._sourceCount_11oac_22 {\n margin-left: var(--wb-len-4);\n font-variant-numeric: tabular-nums;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._reading_11oac_29 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._status_11oac_35 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failure_11oac_45 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n column-gap: var(--wb-len-10);\n row-gap: var(--wb-len-2);\n color: var(--dsw-alias-state-error-primary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n\n._failureTitle_11oac_55 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._failureHint_11oac_62 {\n grid-column: 1;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failureAction_11oac_67 {\n grid-column: 2;\n grid-row: 1;\n justify-self: end;\n}\n\n._foot_11oac_73 {\n display: flex;\n justify-content: flex-end;\n}\n._body_lox98_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._field_lox98_7 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._input_lox98_13 {\n width: 100%;\n}\n\n._label_lox98_17 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\n._hint_lox98_22 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._copy_lox98_28 {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-8) var(--wb-len-16);\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n._copy_lox98_28 legend {\n padding: 0;\n margin-bottom: var(--wb-len-6);\n}\n\n._actions_lox98_42 {\n display: flex;\n justify-content: flex-end;\n}\n\n._commandLabel_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n}\n\n._command_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow-wrap: anywhere;\n}\n._body_zi2j5_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._lead_zi2j5_7 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._title_zi2j5_14 {\n font-size: var(--wb-font-18);\n line-height: var(--wb-line-24);\n}\n._hint_zyzt3_1[hidden],\n._actions_zyzt3_2[hidden],\n._progress_zyzt3_3[hidden],\n._commandRow_zyzt3_4[hidden],\n._bridge_zyzt3_5[hidden],\n._raw_zyzt3_6[hidden] {\n display: none;\n}\n\n._gate_zyzt3_10 {\n position: fixed;\n inset: 0;\n z-index: var(--wb-z-top);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--wb-len-24);\n background: var(--dsw-alias-bg-base);\n}\n\n._card_zyzt3_21 {\n width: 100%;\n max-width: var(--wb-len-420);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-16);\n text-align: center;\n}\n\n._card_zyzt3_21:has(._actions_zyzt3_2:not([hidden])),\n._card_zyzt3_21:has(._bridge_zyzt3_5:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_zyzt3_36 {\n margin: 0;\n font-size: var(--dsw-font-base-16-font-size);\n line-height: var(--wb-line-24);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._steps_zyzt3_51 {\n list-style: none;\n margin: var(--wb-len-6) 0 0;\n padding: 0;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n text-align: left;\n}\n\n._step_zyzt3_51 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-6) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._step_zyzt3_51[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_zyzt3_78 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-14);\n height: var(--wb-len-14);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._step_zyzt3_51[data-status='ok'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_zyzt3_51[data-status='warn'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_zyzt3_51[data-status='failed'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_zyzt3_103 {\n flex: none;\n}\n\n._detail_zyzt3_107 {\n margin-left: auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._progress_zyzt3_3 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._elapsed_zyzt3_125 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._error_zyzt3_133 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n max-height: var(--wb-len-120);\n overflow: auto;\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n white-space: pre-wrap;\n word-break: break-all;\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._commandRow_zyzt3_4 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n margin: 0 0 var(--wb-len-8);\n padding-right: var(--wb-len-4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._copy_zyzt3_159 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._copy_zyzt3_159:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_zyzt3_4 {\n flex: 1;\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-primary);\n}\n\n._buttons_zyzt3_192 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_zyzt3_199 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n justify-content: center;\n background: var(--dsw-alias-bg-base);\n}\n\n._button_zyzt3_192 {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._button_zyzt3_192:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_zyzt3_192:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_zyzt3_2,\n._bridge_zyzt3_5 {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-14) var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-1);\n text-align: left;\n}\n\n._fixTitle_zyzt3_250 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._actions_zyzt3_2 ._hint_zyzt3_1,\n._bridge_zyzt3_5 ._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._actions_zyzt3_2 ._commandRow_zyzt3_4,\n._bridge_zyzt3_5 ._commandRow_zyzt3_4 {\n margin: 0;\n}\n\n._actions_zyzt3_2 ._buttons_zyzt3_192,\n._bridge_zyzt3_5 ._buttons_zyzt3_192 {\n justify-content: flex-start;\n}\n\n._raw_zyzt3_6 {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_zyzt3_286 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_zyzt3_2 ._error_zyzt3_133,\n._bridge_zyzt3_5 ._error_zyzt3_133 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_zyzt3_296 {\n margin: 0;\n padding-left: var(--wb-len-18);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._bridgeLine_zyzt3_296 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_zyzt3_313 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_zyzt3_313::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_zyzt3_313:hover {\n text-decoration: underline;\n}\n\n._loading_zyzt3_327 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_zyzt3_327[hidden] {\n display: none;\n}\n\n._loadingMotion_zyzt3_336 {\n transform-origin: center;\n animation: _wb-spin_zyzt3_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_zyzt3_341,\n._loadingArc_zyzt3_342 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_zyzt3_341 {\n opacity: 0.25;\n}\n\n._loadingArc_zyzt3_342 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_zyzt3_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_zyzt3_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_zyzt3_1 {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }\n to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._loadingMotion_zyzt3_336,\n ._loadingArc_zyzt3_342 {\n animation: none;\n }\n}\n._changelog_1q6pj_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-10);\n min-width: 0;\n}\n\n._changelogTitle_1q6pj_9 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._changelogMissing_1q6pj_15 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._changelogBody_1q6pj_21 {\n max-height: var(--wb-len-320);\n overflow: auto;\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n}\n._group_1hxis_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n}\n\n._button_1hxis_7 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n}\n\n._button_1hxis_7:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._active_1hxis_19 {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._icon_1hxis_23 {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._icon_1hxis_23 svg {\n display: block;\n width: var(--wb-len-15);\n height: var(--wb-len-15);\n}\n\n._mirror_1hxis_35 {\n transform: scaleX(-1);\n}\n._stripTabs_1dqp4_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n min-width: 0;\n overflow: hidden;\n}\n\n._tab_1dqp4_9 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: none;\n font: inherit;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-16);\n max-width: 100%;\n}\n\n._tabActive_1dqp4_25 {\n color: var(--dsw-alias-label-primary);\n}\n\n._tabQuiet_1dqp4_29 {\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._tabQuiet_1dqp4_29:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._tabTitle_1dqp4_39 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._sep_1dqp4_49 {\n flex: none;\n color: var(--dsw-alias-label-dimmed);\n}\n._trigger_15ptp_1 {\n display: flex;\n align-items: center;\n}\n\n._pop_15ptp_6 {\n position: absolute;\n top: calc(var(--wb-len-38) + var(--wb-len-8));\n right: var(--wb-len-6);\n z-index: var(--wb-z-30);\n width: min(var(--wb-len-360), calc(100% - var(--wb-len-12)));\n max-width: calc(100vw - var(--wb-len-48));\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-2);\n box-shadow: var(--dsw-shadow-lv3);\n overflow: hidden;\n}\n\n._head_15ptp_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10) var(--wb-len-12) var(--wb-len-9) var(--wb-len-14);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._title_15ptp_28 {\n flex: 1;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._rowControls_15ptp_36 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._reset_15ptp_43 {\n flex: none;\n padding: var(--wb-len-3) var(--wb-len-8);\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._reset_15ptp_43:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_15ptp_43:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_15ptp_65 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._row_15ptp_36 {\n position: relative;\n display: grid;\n grid-template-columns: 12px minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-sm);\n cursor: default;\n}\n\n._rowDragging_15ptp_85 {\n cursor: grabbing;\n}\n\n._rowBlocked_15ptp_89 {\n cursor: not-allowed;\n}\n\n._listDragging_15ptp_93 ._rowControls_15ptp_36 {\n pointer-events: none;\n}\n\n._row_15ptp_36:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOff_15ptp_101 {\n opacity: 0.55;\n}\n\n._rowOff_15ptp_101:hover {\n opacity: 1;\n}\n\n._rowOver_15ptp_109::before {\n content: '';\n position: absolute;\n top: var(--wb-len-neg-3);\n left: var(--wb-len-8);\n right: var(--wb-len-8);\n height: var(--wb-len-2);\n background: var(--dsw-alias-brand-primary);\n}\n\n._ghost_15ptp_119 {\n position: fixed;\n z-index: var(--wb-z-40);\n pointer-events: none;\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--wb-static-shadow-ghost);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n}\n\n._grip_15ptp_134 {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: center;\n color: var(--dsw-alias-label-tertiary);\n user-select: none;\n cursor: grab;\n touch-action: none;\n}\n\n._gripDragging_15ptp_144 {\n cursor: grabbing;\n}\n\n._gripBlocked_15ptp_148 {\n cursor: not-allowed;\n}\n\n._label_15ptp_152 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_15ptp_159 {\n min-width: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n\n._error_15ptp_170 {\n margin: 0;\n padding: 0 var(--wb-len-14) var(--wb-len-10);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._dep_15ptp_178 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n}\n\n._group_15ptp_186 {\n padding-top: var(--wb-len-6);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._groupTitle_15ptp_191 {\n margin: 0;\n padding: var(--wb-len-2) var(--wb-len-8) 0 var(--wb-len-14);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n font-weight: 400;\n color: var(--dsw-alias-label-tertiary);\n}\n._panel_1whum_1 {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: var(--wb-z-10);\n visibility: hidden;\n}\n\n._panel_1whum_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1whum_1[data-open] {\n visibility: visible;\n}\n\n._columns_1whum_18 {\n display: block;\n column-gap: var(--wb-len-12);\n}\n\n._cell_1whum_23 {\n display: flow-root;\n min-width: 0;\n break-inside: avoid;\n margin-bottom: var(--wb-len-12);\n}\n._root_1cmz0_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._rail_1cmz0_7 {\n margin: 0 0 var(--wb-len-4);\n}\n\n._glyphBox_1cmz0_11 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n._glyph_1cmz0_11 {\n position: relative;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._glyphActive_1cmz0_30 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1cmz0_34 {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n._dir_1cmz0_45 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1cmz0_53 {\n flex: 0 1 auto;\n max-width: 50%;\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._triggerName_1cmz0_34 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._row_1cmz0_66 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1cmz0_74 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n margin-inline-start: auto;\n}\n\n._trailing_1cmz0_74 ._rowAction_1cmz0_84 {\n width: var(--wb-len-20);\n min-width: var(--wb-len-20);\n height: var(--wb-len-20);\n min-height: var(--wb-len-20);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n}\n\n._row_1cmz0_66 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1cmz0_97 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n._dot_sosf1_1 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n._overlay_sosf1_8 {\n position: absolute;\n inset-block-start: var(--wb-len-neg-3);\n inset-inline-end: var(--wb-len-neg-3);\n}\n._tag_g9dg8_1 {\n flex: none;\n margin-inline-start: auto;\n}\n._dialog_1vye5_1 {\n width: min(var(--wb-len-420), 100%);\n}\n\n._stack_1vye5_5 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._input_1vye5_12 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-12);\n}\n\n._meta_1vye5_18 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n._dot_14w1n_1 {\n display: inline-flex;\n align-items: center;\n}\n\n._hover_14w1n_6 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._blocker_1oaj0_1 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-20) var(--wb-len-16);\n text-align: center;\n}\n\n._icon_1oaj0_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_1oaj0_15 {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_1oaj0_23 {\n margin: 0;\n max-width: var(--wb-len-42em);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n text-wrap: pretty;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 {\n align-items: flex-start;\n gap: var(--wb-len-6);\n padding: var(--wb-len-4) 0 var(--wb-len-2);\n text-align: left;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._title_1oaj0_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._hint_1oaj0_23 {\n max-width: 100%;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._actions_1oaj0_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._raw_1oaj0_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_1oaj0_48 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-6);\n}\n\n._raw_1oaj0_52 {\n margin-top: var(--wb-len-10);\n width: 100%;\n max-width: var(--wb-len-360);\n text-align: left;\n}\n\n._notice_1oaj0_71 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--wb-len-10);\n margin: 0 0 var(--wb-len-10);\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-left: 2px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._notice_1oaj0_71._noticeFlat_1oaj0_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_1oaj0_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_1oaj0_98 {\n font-size: var(--wb-font-12-5);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._noticeHint_1oaj0_105 {\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._noticeActions_1oaj0_112 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-neg-2);\n}\n\n._failure_1oaj0_119 {\n margin: var(--wb-len-8) 0 0;\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._failureDetail_1oaj0_127 {\n display: block;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-label-tertiary);\n white-space: pre-wrap;\n}\n\n._inlineAction_1oaj0_134 {\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n._inlineAction_1oaj0_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n._rawText_1oaj0_146 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
14367
14731
  function workbenchCss() {
14368
14732
  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}`;
14369
14733
  }
@@ -14415,7 +14779,7 @@ function mount(ctx) {
14415
14779
  let disposeDictionary;
14416
14780
  const publish = () => {
14417
14781
  disposeDictionary?.();
14418
- const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, messagesOf(units.all()));
14782
+ const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, [unitTitlesOf(units.manifests()), ...messagesOf(units.all())]);
14419
14783
  for (const problem of problems) console.warn(`[dsh-workbench] 套件 ${problem.unit} 的文案没并进来(只有它少了这几句):${problem.reason}`);
14420
14784
  disposeDictionary = ctx.locale.register(LOCALE_NS, merged);
14421
14785
  };