dsh-config-manager 0.1.76 → 0.1.77

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 (71) hide show
  1. package/lib/adapters/plugin-data-declared.d.ts +12 -0
  2. package/lib/adapters/plugin-data-declared.js +57 -0
  3. package/lib/adapters/plugin-data.d.ts +4 -6
  4. package/lib/adapters/plugin-data.js +8 -36
  5. package/lib/adapters/plugins.js +92 -12
  6. package/lib/client.d.ts +104 -9
  7. package/lib/client.js +1796 -714
  8. package/lib/core/messages.d.ts +1 -0
  9. package/lib/core/messages.js +2 -0
  10. package/lib/core/rollback-attribution.d.ts +81 -0
  11. package/lib/core/rollback-attribution.js +236 -0
  12. package/lib/core/rollback-merge.d.ts +22 -0
  13. package/lib/core/rollback-merge.js +203 -0
  14. package/lib/core/rollback-point.d.ts +114 -0
  15. package/lib/core/rollback-point.js +534 -17
  16. package/lib/core/types.d.ts +18 -0
  17. package/lib/index.d.ts +26 -3
  18. package/lib/index.js +129 -16
  19. package/lib/routes/recovery.js +11 -0
  20. package/lib/schema/section-registry.js +5 -5
  21. package/lib/ui/badge-tone.d.ts +16 -0
  22. package/lib/ui/badge-tone.js +20 -0
  23. package/lib/ui/i18n.d.ts +4 -4
  24. package/lib/ui/i18n.js +8 -8
  25. package/lib/ui/rollback-view.d.ts +95 -0
  26. package/lib/ui/rollback-view.js +55 -0
  27. package/lib/ui/selection-model.d.ts +140 -1
  28. package/lib/ui/selection-model.js +241 -9
  29. package/package.json +1 -1
  30. package/src/adapters/plugin-data-declared.ts +60 -0
  31. package/src/adapters/plugin-data.ts +7 -33
  32. package/src/adapters/plugins.ts +98 -13
  33. package/src/adapters/units.test.ts +26 -0
  34. package/src/client/chat/ChatEntryView.tsx +147 -46
  35. package/src/client/chat/chat-entry-view.test.ts +277 -1
  36. package/src/client/chat/chat-entry-view.ts +98 -4
  37. package/src/client/chat/chat-node-registration.ts +71 -0
  38. package/src/client/chat/chat-slots.ts +30 -12
  39. package/src/client/common/ContentPicker.tsx +581 -175
  40. package/src/client/common/host-primitives.ts +64 -1
  41. package/src/client/common/ui.tsx +17 -3
  42. package/src/client/config-manager.module.css +630 -397
  43. package/src/client/css-scale-guard.test.ts +41 -3
  44. package/src/client/css-token-guard.test.ts +10 -4
  45. package/src/client/export/ExportView.tsx +2 -0
  46. package/src/client/index.ts +15 -3
  47. package/src/client/locales.ts +54 -10
  48. package/src/client/recovery/RollbackCard.tsx +56 -2
  49. package/src/client/recovery/RollbackDiffPane.tsx +5 -0
  50. package/src/client/recovery/RollbackFileChanges.tsx +46 -2
  51. package/src/client/recovery/recovery-locales.ts +22 -0
  52. package/src/client/recovery/rollback-file-changes.test.ts +1 -1
  53. package/src/core/messages.ts +2 -0
  54. package/src/core/rollback-attribution.test.ts +120 -0
  55. package/src/core/rollback-attribution.ts +267 -0
  56. package/src/core/rollback-merge.test.ts +133 -0
  57. package/src/core/rollback-merge.ts +213 -0
  58. package/src/core/rollback-point.test.ts +412 -0
  59. package/src/core/rollback-point.ts +560 -20
  60. package/src/core/types.ts +19 -0
  61. package/src/index.facade.test.ts +60 -0
  62. package/src/index.ts +133 -19
  63. package/src/routes/recovery.ts +11 -0
  64. package/src/schema/section-registry.ts +5 -5
  65. package/src/ui/badge-tone.test.ts +23 -0
  66. package/src/ui/badge-tone.ts +27 -0
  67. package/src/ui/i18n.ts +8 -8
  68. package/src/ui/rollback-view.test.ts +27 -0
  69. package/src/ui/rollback-view.ts +139 -0
  70. package/src/ui/selection-model.test.ts +240 -2
  71. package/src/ui/selection-model.ts +349 -1
package/lib/client.js CHANGED
@@ -116,7 +116,7 @@ const SECTION_REGISTRY = {
116
116
  },
117
117
  plugins: {
118
118
  id: "plugins",
119
- displayName: "Plugins",
119
+ displayName: "Plugin list",
120
120
  group: "extensions",
121
121
  payload: {
122
122
  kind: "array",
@@ -234,7 +234,7 @@ const SECTION_REGISTRY = {
234
234
  },
235
235
  pluginFiles: {
236
236
  id: "pluginFiles",
237
- displayName: "Other Plugins' Loose Files",
237
+ displayName: "Plugin config files",
238
238
  group: "extensions",
239
239
  payload: {
240
240
  kind: "files",
@@ -296,7 +296,7 @@ const SECTION_REGISTRY = {
296
296
  },
297
297
  self: {
298
298
  id: "self",
299
- displayName: "This Plugin's Own Config",
299
+ displayName: "Config Manager settings",
300
300
  group: "extensions",
301
301
  payload: {
302
302
  kind: "files",
@@ -312,7 +312,7 @@ const SECTION_REGISTRY = {
312
312
  },
313
313
  pluginData: {
314
314
  id: "pluginData",
315
- displayName: "Other Plugins' Data",
315
+ displayName: "Plugin data dirs",
316
316
  group: "extensions",
317
317
  payload: {
318
318
  kind: "files",
@@ -328,7 +328,7 @@ const SECTION_REGISTRY = {
328
328
  },
329
329
  pluginAssets: {
330
330
  id: "pluginAssets",
331
- displayName: "Other Plugins' Large Files",
331
+ displayName: "Plugin large files",
332
332
  group: "extensions",
333
333
  payload: {
334
334
  kind: "files",
@@ -1218,10 +1218,10 @@ const uiZh = {
1218
1218
  "export.category.settings": "DSH 全局设置(namespace 分区,redacted)",
1219
1219
  "export.category.providers": "LLM Provider / Model / 默认模型 / BaseURL",
1220
1220
  "export.category.plugins": "已安装插件清单与启用状态(不含二进制)",
1221
- "export.category.pluginFiles": "其他插件放在 ~/.dsh 根下的零散配置文件(白名单 + plugin-config/ 目录,整文件复制)",
1222
- "export.category.self": "本插件自身配置(同步/自动同步/分区选择/UI 偏好/市场;sync-*.json 等,不含凭据值)",
1223
- "export.category.pluginData": "其他插件在系统主目录下的数据(如 ~/.dsh-wallpaper-engine、~/.mnemon 的配置与状态;可再生成缓存绝不收录)",
1224
- "export.category.pluginAssets": "其他插件的大体积文件(上传的壁纸、本地数据库等;默认不勾选)",
1221
+ "export.category.pluginFiles": "插件放在 ~/.dsh 根下的配置文件(白名单 + plugin-config/ 目录,整文件复制)",
1222
+ "export.category.self": "配置管理器自身的设置(同步/自动同步/分区选择/UI 偏好/市场;sync-*.json 等,不含凭据值)",
1223
+ "export.category.pluginData": "插件在系统主目录下的数据(如 ~/.dsh-wallpaper-engine、~/.mnemon 的配置与状态;可再生成缓存绝不收录)",
1224
+ "export.category.pluginAssets": "插件的大体积文件(上传的壁纸、本地数据库等;默认不勾选)",
1225
1225
  "export.category.mcp": "MCP 服务器组合配置(需重启生效)",
1226
1226
  "export.category.prompts": "System Prompt / Plan Mode 提示",
1227
1227
  "export.category.skills": "用户技能文件(~/.dsh/skills)",
@@ -1755,10 +1755,10 @@ const uiEn = {
1755
1755
  "export.category.settings": "Global DSH settings (namespace sections, redacted)",
1756
1756
  "export.category.providers": "LLM providers / models / default model / base URL",
1757
1757
  "export.category.plugins": "Installed plugin list and enablement (binaries excluded)",
1758
- "export.category.pluginFiles": "Other plugins' loose config files at the ~/.dsh root (allowlist + plugin-config/, copied whole)",
1759
- "export.category.self": "This plugin's own config (sync / autosync / section selection / UI prefs / market; sync-*.json etc., no credential values)",
1760
- "export.category.pluginData": "Other plugins' data under the system home directory (e.g. the config/state of ~/.dsh-wallpaper-engine and ~/.mnemon; regenerable caches are never included)",
1761
- "export.category.pluginAssets": "Other plugins' large files (uploaded wallpapers, local databases, ...; not selected by default)",
1758
+ "export.category.pluginFiles": "Plugin config files at the ~/.dsh root (allowlist + plugin-config/, copied whole)",
1759
+ "export.category.self": "Config Manager's own settings (sync / autosync / section selection / UI prefs / market; sync-*.json etc., no credential values)",
1760
+ "export.category.pluginData": "Plugin data under the system home directory (e.g. the config/state of ~/.dsh-wallpaper-engine and ~/.mnemon; regenerable caches are never included)",
1761
+ "export.category.pluginAssets": "Plugins' large files (uploaded wallpapers, local databases, ...; not selected by default)",
1762
1762
  "export.category.mcp": "MCP server composition (restart required)",
1763
1763
  "export.category.prompts": "System prompt / Plan Mode prompts",
1764
1764
  "export.category.skills": "Your skill files (~/.dsh/skills)",
@@ -3641,6 +3641,256 @@ function effectiveImportPlan(plan, zipPath, state) {
3641
3641
  const selection = effectiveImportSelection(plan, zipPath, state);
3642
3642
  return plan === null || selection === null ? null : buildSelectedPlan(plan, selection);
3643
3643
  }
3644
+ /**
3645
+ * 合并进「按插件看」那棵树的分区(导出选择器里「插件与扩展」组的成员)。
3646
+ *
3647
+ * 这四项的归属键只有 npm 包名(plugin:<包名> ↔ 来源注册表的 packages);self(配置管理器设置)
3648
+ * **不在**这里 —— 它不是插件,仍按普通分区行渲染。清单顺序仍由调用方给的节点顺序决定
3649
+ * (宿主目录已按 EXPORT_GROUPS 排好,树只在第一个成员处渲染一次)。
3650
+ */
3651
+ const PLUGIN_TREE_SECTIONS = [
3652
+ "plugins",
3653
+ "pluginFiles",
3654
+ "pluginData",
3655
+ "pluginAssets"
3656
+ ];
3657
+ /** 该分区是否合并进「按插件看」的树(见 PLUGIN_TREE_SECTIONS)。 */
3658
+ function isPluginTreeSection(section) {
3659
+ return PLUGIN_TREE_SECTIONS.includes(section);
3660
+ }
3661
+ /** 插件单元 id 前缀(与 adapters/units.ts 的 `plugin:<包名>` 同一命名空间) */
3662
+ const PLUGIN_UNIT_PREFIX = "plugin:";
3663
+ /** 把一条区域引用投影成叶子(按该分区清单是否到货决定 present / unread / absent)。 */
3664
+ function areaLeaf(node, ref) {
3665
+ const unitId = ref.section + ":" + ref.relPath;
3666
+ const kind = ref.role === "assets" ? "assets" : "config";
3667
+ const unit = node?.units.find((u) => u.id === unitId);
3668
+ if (unit === void 0) return {
3669
+ kind,
3670
+ section: ref.section,
3671
+ unitId,
3672
+ label: ref.relPath,
3673
+ sizeBytes: 0,
3674
+ state: node === void 0 || node.unitsUnread === true ? "unread" : "absent"
3675
+ };
3676
+ return {
3677
+ kind,
3678
+ section: ref.section,
3679
+ unitId,
3680
+ label: ref.relPath,
3681
+ ...unit.detail !== void 0 ? { detail: unit.detail } : {},
3682
+ sizeBytes: unit.sizeBytes,
3683
+ state: "present"
3684
+ };
3685
+ }
3686
+ /** 把选择器分区模型投影成「按插件看」的树(纯函数)。 */
3687
+ function pluginTree(nodes) {
3688
+ const bySection = /* @__PURE__ */ new Map();
3689
+ for (const n of nodes) bySection.set(n.section, n);
3690
+ const pluginsNode = bySection.get("plugins");
3691
+ const entries = [];
3692
+ const extras = [];
3693
+ for (const unit of pluginsNode?.units ?? []) {
3694
+ if (!unit.id.startsWith(PLUGIN_UNIT_PREFIX)) {
3695
+ extras.push(unit);
3696
+ continue;
3697
+ }
3698
+ const name = unit.id.slice(7);
3699
+ const main = {
3700
+ kind: "plugin",
3701
+ section: "plugins",
3702
+ unitId: unit.id,
3703
+ label: unit.label,
3704
+ ...unit.detail !== void 0 ? { detail: unit.detail } : {},
3705
+ sizeBytes: unit.sizeBytes,
3706
+ state: "present"
3707
+ };
3708
+ const areas = (unit.relatedAreas ?? []).map((ref) => areaLeaf(bySection.get(ref.section), ref));
3709
+ entries.push({
3710
+ name,
3711
+ main,
3712
+ areas,
3713
+ leaves: [main, ...areas]
3714
+ });
3715
+ }
3716
+ const buckets = [];
3717
+ const pluginExtras = bySection.get("plugins");
3718
+ if (pluginExtras !== void 0) buckets.push({
3719
+ section: "plugins",
3720
+ loaded: pluginExtras.unitsUnread !== true,
3721
+ units: extras
3722
+ });
3723
+ /**
3724
+ * 只留一个桶:pluginFiles。
3725
+ *
3726
+ * 它没有任何包名信息(白名单文件 + `plugin-config/<任意目录名>/`),按目录名猜包名 = 猜错就在树里
3727
+ * 勾错东西 ⇒ 整块归「未归属」。**pluginData / pluginAssets 里没被插件声明认领的单元不再单列
3728
+ * 「遗留数据」桶**(用户 2026-10-17 明确要求:不需要看到这些)—— 它们仍会随该分区整体勾选导出,
3729
+ * 只是不在插件树里单开一行。
3730
+ */
3731
+ for (const id of ["pluginFiles"]) {
3732
+ const node = bySection.get(id);
3733
+ if (node === void 0) continue;
3734
+ buckets.push({
3735
+ section: id,
3736
+ loaded: node.unitsUnread !== true,
3737
+ units: node.units
3738
+ });
3739
+ }
3740
+ return {
3741
+ pluginsLoaded: pluginsNode !== void 0 && pluginsNode.unitsUnread !== true,
3742
+ entries,
3743
+ buckets
3744
+ };
3745
+ }
3746
+ /** 树上的搜索过滤:插件名命中 → 保留它全部叶子;否则只保留标签命中的叶子;桶按单元标签过滤。 */
3747
+ function filterPluginTree(tree, query) {
3748
+ const q = query.trim().toLowerCase();
3749
+ if (q === "") return tree;
3750
+ const hit = (text) => text.toLowerCase().includes(q);
3751
+ const entries = tree.entries.map((e) => hit(e.name) ? e : {
3752
+ ...e,
3753
+ leaves: e.leaves.filter((l) => hit(l.label) || hit(l.detail ?? ""))
3754
+ }).filter((e) => hit(e.name) || e.leaves.length > 0);
3755
+ const buckets = tree.buckets.map((b) => ({
3756
+ ...b,
3757
+ units: b.units.filter((u) => hit(u.label) || hit(u.detail ?? ""))
3758
+ })).filter((b) => b.units.length > 0);
3759
+ return {
3760
+ ...tree,
3761
+ entries,
3762
+ buckets
3763
+ };
3764
+ }
3765
+ /** 该插件节点下**真实可勾选**的叶子(unread / absent 不参与勾选)。 */
3766
+ function pluginEntryLeaves(entry) {
3767
+ return entry.leaves.filter((l) => l.state === "present");
3768
+ }
3769
+ /**
3770
+ * 该插件名下**已知**的叶子(存在 + 还没读到清单的区域声明)。
3771
+ *
3772
+ * 计数与三态用它,**不用 pluginEntryLeaves(只含 present)**:否则「已选 n/m」会随清单到货跳动 ——
3773
+ * 折叠时显示 1/1、展开(触发了读取)后变成 1/3,用户看到的是「数字自己变了」(2026-10-17 实测反馈)。
3774
+ * absent(注册表说有、盘上确实没有)不计入:它永远不可勾,算进去只会让分母虚高。
3775
+ */
3776
+ function pluginEntryKnownLeaves(entry) {
3777
+ return entry.leaves.filter((l) => l.state !== "absent");
3778
+ }
3779
+ function pluginEntryTotalCount(entry) {
3780
+ return pluginEntryKnownLeaves(entry).length;
3781
+ }
3782
+ function pluginEntrySelectedCount(sel, entry) {
3783
+ return pluginEntryLeaves(entry).reduce((n, l) => n + (unitChecked(sel, l.section, l.unitId) ? 1 : 0), 0);
3784
+ }
3785
+ /**
3786
+ * 插件节点三态(与分区/分组同一套口径,但分母用**已知**叶子)。
3787
+ *
3788
+ * 还有区域没读到(unread)时最多只能是 `partial`:那些单元此刻勾不上,
3789
+ * 报「全选」会让用户以为已经全带上(真正补齐见 ContentPicker 的待补勾队列)。
3790
+ */
3791
+ function pluginEntryPickState(sel, entry) {
3792
+ const known = pluginEntryKnownLeaves(entry);
3793
+ if (known.length === 0) return "none";
3794
+ const picked = pluginEntrySelectedCount(sel, entry);
3795
+ if (picked === 0) return "none";
3796
+ return picked === known.length ? "all" : "partial";
3797
+ }
3798
+ /**
3799
+ * 插件节点级勾选:把它名下**存在的**单元一起勾 / 取消。
3800
+ *
3801
+ * 逐个走 toggleUnit:分区未勾时「勾一个单元 = 只勾这一个」的既有语义因此自动生效,
3802
+ * 不会因为一键操作就把整个 pluginData / pluginAssets 分区静默全选。
3803
+ */
3804
+ function togglePluginEntry(sel, nodes, entry, checked) {
3805
+ let out = sel;
3806
+ for (const leaf of pluginEntryLeaves(entry)) out = toggleUnit(out, nodes, leaf.unitId, checked);
3807
+ return out;
3808
+ }
3809
+ /** 树上所有**真实可勾选**的叶子(各插件名下存在单元的合计;不含未归属 / 遗留数据桶)。 */
3810
+ function pluginTreeLeaves(tree) {
3811
+ return tree.entries.flatMap((e) => pluginEntryLeaves(e));
3812
+ }
3813
+ /** 树上**已知**的叶子(存在 + 未读取;不含 absent)—— 一级区块的计数与三态用它,口径同插件节点。 */
3814
+ function pluginTreeKnownLeaves(tree) {
3815
+ return tree.entries.flatMap((e) => pluginEntryKnownLeaves(e));
3816
+ }
3817
+ function pluginTreeTotalCount(tree) {
3818
+ return pluginTreeKnownLeaves(tree).length;
3819
+ }
3820
+ function pluginTreeSelectedCount(sel, tree) {
3821
+ return pluginTreeLeaves(tree).reduce((n, l) => n + (unitChecked(sel, l.section, l.unitId) ? 1 : 0), 0);
3822
+ }
3823
+ /**
3824
+ * 「插件」一级区块(把全部插件收在一个可折叠区块里)的三态。
3825
+ *
3826
+ * 只算**插件名下真实存在的叶子**:未归属 / 遗留数据是「无法归属的东西」,不参与这个勾选框 ——
3827
+ * 否则「全选所有插件」会顺手把没人认领的散落配置一起带上。
3828
+ */
3829
+ function pluginTreePickState(sel, tree) {
3830
+ const known = pluginTreeKnownLeaves(tree);
3831
+ if (known.length === 0) return "none";
3832
+ const picked = pluginTreeSelectedCount(sel, tree);
3833
+ if (picked === 0) return "none";
3834
+ return picked === known.length ? "all" : "partial";
3835
+ }
3836
+ /** 一级区块勾选:把所有插件名下存在的单元一起勾 / 取消(逐个走 toggleUnit;含未归属桶吗?不含)。 */
3837
+ function togglePluginTree(sel, nodes, tree, checked) {
3838
+ let out = sel;
3839
+ for (const leaf of pluginTreeLeaves(tree)) out = toggleUnit(out, nodes, leaf.unitId, checked);
3840
+ return out;
3841
+ }
3842
+ /**
3843
+ * 展开「插件」一级区块前还需要读取哪些分区的清单(惰性)。
3844
+ *
3845
+ * **插件清单自己没读到也要报**(否则一级区块展开后只有一句「先读取插件分区」却没有入口)。
3846
+ */
3847
+ function pluginTreeUnreadSections(tree) {
3848
+ const out = tree.pluginsLoaded ? [] : ["plugins"];
3849
+ for (const entry of tree.entries) for (const s of pluginEntryUnreadSections(entry)) if (!out.includes(s)) out.push(s);
3850
+ for (const bucket of tree.buckets) if (!bucket.loaded && !out.includes(bucket.section)) out.push(bucket.section);
3851
+ return out;
3852
+ }
3853
+ /**
3854
+ * 待补勾的出队判定(纯函数,node 可测)。
3855
+ *
3856
+ * 背景:清单是**惰性**读取的 —— 用户勾「插件」一级区块或某个插件时,它名下可能还有区域没读到
3857
+ * (unread),那些单元此刻勾不上。若就此结束,用户会以为「全带上了」,实际包里少了数据目录/大文件。
3858
+ * 调用方在点击时先勾已知的、把没到齐的键入队;清单到货(nodes 变化)后再调本函数补齐。
3859
+ *
3860
+ * 判据 = 该节点名下**已无 unread 叶子**(`pluginEntryUnreadSections` / `pluginsLoaded`):
3861
+ * 到齐 → 出队并补齐;没到齐 → 留在队列里继续等(绝不猜成「已勾」)。
3862
+ */
3863
+ function applyPluginPendingChecks(sel, nodes, tree, pending) {
3864
+ const remaining = [];
3865
+ let out = sel;
3866
+ for (const p of pending) {
3867
+ if (p.kind === "root") {
3868
+ if (!tree.pluginsLoaded || tree.entries.some((e) => pluginEntryUnreadSections(e).length > 0)) {
3869
+ remaining.push(p);
3870
+ continue;
3871
+ }
3872
+ out = togglePluginTree(out, nodes, tree, true);
3873
+ continue;
3874
+ }
3875
+ const entry = tree.entries.find((e) => e.name === p.key);
3876
+ if (entry === void 0) continue;
3877
+ if (pluginEntryUnreadSections(entry).length > 0) {
3878
+ remaining.push(p);
3879
+ continue;
3880
+ }
3881
+ out = togglePluginEntry(out, nodes, entry, true);
3882
+ }
3883
+ return {
3884
+ selection: out,
3885
+ remaining
3886
+ };
3887
+ }
3888
+ /** 勾上该插件前还需要读取哪些分区的清单(展开/点击时触发惰性读取)。 */
3889
+ function pluginEntryUnreadSections(entry) {
3890
+ const out = [];
3891
+ for (const leaf of entry.leaves) if (leaf.state === "unread" && !out.includes(leaf.section)) out.push(leaf.section);
3892
+ return out;
3893
+ }
3644
3894
  //#endregion
3645
3895
  //#region src/ui/session-format-disposition.ts
3646
3896
  /**
@@ -14445,7 +14695,7 @@ function getState(open) {
14445
14695
  __name(getState, "getState");
14446
14696
  //#endregion
14447
14697
  //#region \0config-manager-css:/home/runner/work/dsh-config-manager/dsh-config-manager/src/client/config-manager.module.css.js
14448
- const css = "._367UGW_section{height:100%;min-height:0;font-family:var(--dsw-font-family);color:var(--dsw-alias-label-primary);flex-direction:column;font-size:12.5px;line-height:1.5;display:flex;position:relative;overflow:hidden}body{--cm-disk-card-h:420px;--cm-text-1:var(--dsw-alias-label-primary);--cm-text-2:var(--dsw-alias-label-secondary);--cm-text-3:var(--dsw-alias-label-tertiary);--cm-text-on-accent:var(--dsw-alias-label-primary-foreground);--cm-surface-1:var(--dsw-alias-bg-layer-1);--cm-surface-2:var(--dsw-alias-bg-layer-2);--cm-surface-hover:var(--dsw-alias-interactive-bg-hover);--cm-line-1:var(--dsw-alias-border-l1);--cm-line-2:var(--dsw-alias-border-l2);--cm-input-bg:var(--dsw-specific-input-major);--cm-chat-bubble:var(--dsw-specific-bubble,color-mix(in srgb, var(--cm-text-1) 12%, transparent));--cm-accent:var(--dsw-alias-state-business-primary);--cm-accent-fill:var(--dsw-alias-button-info-fill);--cm-accent-hover:var(--dsw-alias-button-info-hover);--cm-ok:var(--dsw-alias-state-success-primary);--cm-info:var(--dsw-alias-state-info-primary);--cm-warn:var(--dsw-alias-state-warn-primary);--cm-error:var(--dsw-alias-state-error-primary);--cm-fs-meta:11px;--cm-fs-table:12px;--cm-fs-base:12.5px;--cm-fs-title:13px;--cm-sp-1:2px;--cm-sp-2:4px;--cm-sp-3:6px;--cm-sp-4:8px;--cm-sp-5:10px;--cm-sp-6:12px;--cm-sp-7:14px;--cm-sp-8:16px;--cm-sp-9:24px;--cm-r-1:4px;--cm-r-2:6px;--cm-r-3:8px;--cm-r-pill:999px;--cm-h-sm:24px;--cm-h-md:28px;--cm-h-lg:32px;--cm-shadow-1:0 10px 26px color-mix(in srgb, var(--dsw-alias-bg-base) 45%, transparent);--cm-shadow-2:0 12px 32px color-mix(in srgb, var(--dsw-alias-bg-base) 40%, transparent);--cm-ring:0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);--cm-ring-strong:0 0 0 2px color-mix(in srgb, var(--cm-accent) 55%, transparent);--cm-z-raise:1;--cm-z-sticky:2;--cm-z-task:90;--cm-z-mask:100;--cm-z-modal:101;--cm-z-pop:110;--cm-z-toast:120;--cm-motion-fast:.12s;--cm-motion-base:.18s;--cm-motion-slow:.3s;--cm-motion-ease-out:cubic-bezier(.16, 1, .3, 1);--cm-motion-ease-in-out:cubic-bezier(.4, 0, .6, 1)}._367UGW_section :is(button,a,input,select,textarea,[role=tab]){transition-property:background-color,border-color,color;transition-duration:var(--cm-motion-fast);transition-timing-function:ease}._367UGW_section :is(button,a,input,select,textarea,[role=tab]):focus-visible{outline:2px solid var(--cm-accent);outline-offset:2px}._367UGW_mono{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_section svg{color:inherit;flex:none}._367UGW_shellNav{flex:none;align-items:center;gap:8px;padding:8px;display:flex}._367UGW_navStrip{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;flex:auto;align-items:center;gap:2px;min-width:0;padding:2px;display:flex;overflow:hidden}._367UGW_navTab,._367UGW_navMore{height:24px;font:inherit;color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;flex:none;align-items:center;gap:4px;padding:0 10px;font-size:12px;font-weight:500;display:inline-flex;position:relative}._367UGW_navTab:hover,._367UGW_navMore:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}._367UGW_navTab:focus-visible,._367UGW_navMore:focus-visible{outline:2px solid var(--cm-accent);outline-offset:1px;border-radius:6px}._367UGW_navTab[data-active],._367UGW_navMore[data-active]{background:color-mix(in srgb, var(--cm-accent) 16%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--cm-accent) 45%, transparent);color:var(--dsw-alias-label-primary);font-weight:600}._367UGW_navDot{background:var(--cm-error);border-radius:50%;flex:none;width:6px;height:6px}._367UGW_navMoreRoot{flex:none}._367UGW_navMeasure{visibility:hidden;pointer-events:none;align-items:center;gap:2px;padding:2px;display:flex;position:absolute;top:0;left:-9999px}._367UGW_navActions{flex:none;align-items:center;gap:4px;margin-left:4px;display:flex}._367UGW_navActions ._367UGW_ghostButton[data-active]{border-color:color-mix(in srgb, var(--cm-accent) 55%, transparent);color:var(--cm-accent)}._367UGW_iconBtn{width:26px;height:26px;font:inherit;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-self:center;align-items:center;padding:0;font-size:13px;line-height:1.25;display:inline-flex}._367UGW_iconBtn:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._367UGW_iconBtn:focus-visible{outline:2px solid var(--cm-accent);outline-offset:1px}._367UGW_iconBtn:disabled{opacity:.45;cursor:default}._367UGW_iconBtn[data-size=sm]{border-radius:4px;width:18px;height:18px}._367UGW_iconBtn[data-active]{background:color-mix(in srgb, var(--cm-accent) 14%, transparent);color:var(--cm-accent)}._367UGW_iconBtn[data-danger]{color:var(--cm-error)}._367UGW_iconBtn[data-danger]:hover{background:color-mix(in srgb, var(--cm-error) 12%, transparent);border-color:var(--cm-error);color:var(--cm-error)}._367UGW_shellMain{overscroll-behavior:contain;flex-direction:column;flex:auto;min-height:0;display:flex;overflow-y:auto}._367UGW_pagePad{min-height:0;animation:_367UGW_pageEnter var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;flex:auto;padding:12px 16px 16px;display:flex}@keyframes _367UGW_pageEnter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}._367UGW_snapshotList>*,._367UGW_dataTable tbody tr{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out) both}._367UGW_snapshotList>:nth-child(2),._367UGW_dataTable tbody tr:nth-child(2){animation-delay:24ms}._367UGW_snapshotList>:nth-child(3),._367UGW_dataTable tbody tr:nth-child(3){animation-delay:48ms}._367UGW_snapshotList>:nth-child(4),._367UGW_dataTable tbody tr:nth-child(4){animation-delay:72ms}._367UGW_snapshotList>:nth-child(n+5),._367UGW_dataTable tbody tr:nth-child(n+5){animation-delay:96ms}@keyframes _367UGW_itemEnter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}._367UGW_viewEnter{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;flex:auto;gap:10px;min-height:0;display:flex}._367UGW_collapse{visibility:hidden;transition:grid-template-rows var(--cm-motion-base) var(--cm-motion-ease-out), visibility 0s linear var(--cm-motion-base);grid-template-rows:0fr;display:grid}._367UGW_collapse[data-open]{visibility:visible;transition:grid-template-rows var(--cm-motion-base) var(--cm-motion-ease-out), visibility 0s;grid-template-rows:1fr}._367UGW_collapseInner{min-height:0;overflow:hidden}._367UGW_shellContent{flex-direction:column;flex:auto;min-height:0;display:flex;position:relative}._367UGW_taskPanel{z-index:var(--cm-z-task);background:var(--dsw-alias-bg-layer-1);min-height:0;animation:_367UGW_taskPanelIn var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;display:flex;position:absolute;inset:0}@keyframes _367UGW_taskPanelIn{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}._367UGW_taskHead{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:8px;height:44px;padding:0 12px;display:flex}._367UGW_taskTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;font-weight:700;overflow:hidden}._367UGW_taskBody{overscroll-behavior:contain;flex:auto;min-height:0;padding:12px 16px 16px;overflow-y:auto}@media (prefers-reduced-motion:reduce){._367UGW_taskPanel{animation:none}}._367UGW_statusBar{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);height:28px;color:var(--dsw-alias-label-tertiary);white-space:nowrap;border-radius:8px;flex:none;align-items:center;gap:10px;margin:0 8px 8px;padding:0 10px;font-size:11px;display:flex;overflow:hidden}._367UGW_bannerSlot{padding:8px 12px 0}._367UGW_syncChannelBody{margin-top:10px}._367UGW_syncChannelBody ._367UGW_collapseInner{flex-direction:column;gap:10px;display:flex}._367UGW_statusTask{color:var(--dsw-alias-label-secondary);font-weight:600}._367UGW_statusProgress{background:color-mix(in srgb, var(--cm-accent) 20%, transparent);border-radius:999px;flex:none;width:60px;height:4px;display:inline-block;position:relative;overflow:hidden}._367UGW_statusProgress:after{content:\"\";background:var(--cm-accent);width:40%;animation:_367UGW_statusIndeterminate 1.2s var(--cm-motion-ease-in-out) infinite;border-radius:999px;position:absolute;inset:0 auto 0 0}@keyframes _367UGW_statusIndeterminate{0%{transform:translate(-100%)}to{transform:translate(250%)}}._367UGW_statusDot{background:var(--dsw-alias-label-tertiary);width:7px;height:7px;transition:background-color var(--cm-motion-fast) ease;border-radius:50%;flex:none;display:inline-block}._367UGW_statusDot[data-kind=ok]{background:var(--cm-ok)}._367UGW_statusDot[data-kind=info]{background:var(--cm-accent)}._367UGW_statusDot[data-kind=warn]{background:var(--cm-warn)}._367UGW_statusDot[data-kind=error]{background:var(--cm-error)}._367UGW_statusDot[data-pulse]{animation:1.2s ease-in-out infinite _367UGW_statusPulse}@keyframes _367UGW_statusPulse{0%,to{opacity:1}50%{opacity:.35}}._367UGW_statusText{text-overflow:ellipsis;min-width:0;overflow:hidden}._367UGW_statusSpacer{flex:auto}._367UGW_statusMeta{color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_primaryButton,._367UGW_ghostButton,._367UGW_dangerButton{height:28px;font:inherit;white-space:nowrap;cursor:pointer;user-select:none;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:12.5px;font-weight:600;line-height:1.25;display:inline-flex}._367UGW_primaryButton{background:var(--cm-accent-fill);color:var(--cm-text-on-accent)}._367UGW_primaryButton:hover:not(:disabled){background:var(--cm-accent-hover)}._367UGW_ghostButton{border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);background:0 0}._367UGW_ghostButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}._367UGW_dangerButton{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent);color:var(--cm-error);background:0 0}._367UGW_dangerButton:hover:not(:disabled){background:color-mix(in srgb, var(--cm-error) 12%, transparent);border-color:var(--cm-error)}._367UGW_primaryButton:focus-visible,._367UGW_ghostButton:focus-visible,._367UGW_dangerButton:focus-visible{outline:2px solid var(--cm-accent);outline-offset:1px}._367UGW_primaryButton:disabled,._367UGW_ghostButton:disabled,._367UGW_dangerButton:disabled{opacity:.45;cursor:default}._367UGW_primaryButton[data-size=sm],._367UGW_ghostButton[data-size=sm],._367UGW_dangerButton[data-size=sm]{border-radius:6px;height:24px;padding:0 8px;font-size:11px}._367UGW_input{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-specific-input-major);height:28px;font:inherit;color:var(--dsw-alias-label-primary);box-sizing:border-box;border-radius:6px;padding:0 8px;font-size:12.5px}._367UGW_field>._367UGW_input,._367UGW_field>._367UGW_selectRoot{width:100%;position:relative}._367UGW_input::placeholder{color:var(--dsw-alias-label-tertiary)}._367UGW_input:hover{border-color:color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2))}._367UGW_input:focus{border-color:var(--cm-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);outline:none}._367UGW_input:disabled{opacity:.5;cursor:default}._367UGW_input[type=password]{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}._367UGW_selectRoot{vertical-align:middle;min-width:0;max-width:100%;font-size:12.5px;display:inline-block;position:relative}._367UGW_selectTrigger{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-specific-input-major);width:100%;height:28px;font:inherit;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;transition:border-color var(--cm-motion-fast) ease, box-shadow var(--cm-motion-fast) ease;border-radius:6px;align-items:center;gap:6px;padding:0 8px;font-size:12.5px;display:flex}._367UGW_selectTrigger:hover{border-color:color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2))}._367UGW_selectTrigger:focus-visible,._367UGW_selectRoot[data-open] ._367UGW_selectTrigger{border-color:var(--cm-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);outline:none}._367UGW_selectTrigger:disabled{opacity:.5;cursor:default}._367UGW_selectLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._367UGW_selectChevron{color:var(--dsw-alias-label-secondary);transition:transform var(--cm-motion-fast) var(--cm-motion-ease-out);flex:none}._367UGW_selectRoot[data-open] ._367UGW_selectChevron{transform:rotate(180deg)}._367UGW_selectMenu{z-index:var(--cm-z-pop);box-sizing:border-box;overscroll-behavior:contain;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);max-width:260px;max-height:220px;box-shadow:0 10px 26px color-mix(in srgb, var(--dsw-alias-bg-base) 45%, transparent);transform-origin:top;animation:_367UGW_selectMenuIn var(--cm-motion-fast) var(--cm-motion-ease-out);border-radius:8px;padding:4px;position:absolute;overflow-y:auto}._367UGW_selectRoot[data-align=end] ._367UGW_selectMenu{left:auto;right:0}._367UGW_selectMenuPortal{pointer-events:auto;visibility:hidden}._367UGW_selectMenuPortal[data-ready]{visibility:visible}@keyframes _367UGW_selectMenuIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}._367UGW_selectOption{color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:6px 8px;font-size:12.5px;display:flex}._367UGW_selectOption[data-active]{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_selectOption[aria-selected=true],._367UGW_selectOption[aria-checked=true]{color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 10%, transparent);box-shadow:inset 2px 0 0 var(--cm-accent);font-weight:600}._367UGW_selectOption[data-disabled]{opacity:.45;cursor:default}._367UGW_selectOptionLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._367UGW_libraryFilters{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;flex:none;align-items:center;gap:2px;margin-top:8px;padding:2px;display:flex;overflow:hidden}._367UGW_libraryFilter{height:24px;font:inherit;color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;flex:none;align-items:center;gap:4px;padding:0 8px;font-size:12px;display:inline-flex}._367UGW_libraryFilter:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_libraryFilter[data-active]{color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 16%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--cm-accent) 45%, transparent);font-weight:600}._367UGW_libraryFilterCount{color:var(--dsw-alias-label-tertiary);font-size:11px}._367UGW_libraryFilter[data-active] ._367UGW_libraryFilterCount{color:inherit}._367UGW_librarySearch{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-specific-input-major);width:100%;height:28px;font:inherit;color:var(--dsw-alias-label-primary);border-radius:6px;flex:none;margin-top:8px;padding:0 8px;font-size:12.5px}._367UGW_librarySearch:focus-visible{border-color:var(--cm-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);outline:none}._367UGW_libraryFooter{border-top:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:8px;margin-top:8px;padding-top:8px;display:flex}._367UGW_libraryCount{color:var(--dsw-alias-label-secondary);font-size:12px}._367UGW_artifactList{overscroll-behavior:contain;flex:auto;min-height:0;margin:0;padding:0;list-style:none;overflow-y:auto}._367UGW_libraryListState{flex-direction:column;flex:auto;justify-content:center;min-height:0;display:flex}._367UGW_artifactRow{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 60%, transparent)}._367UGW_artifactRow:last-child{border-bottom:none}._367UGW_artifactRow[data-expanded]{background:color-mix(in srgb, var(--cm-accent) 5%, transparent)}._367UGW_artifactRowHead{box-sizing:border-box;cursor:pointer;align-items:center;gap:8px;min-height:52px;padding:8px 10px;display:flex}._367UGW_artifactRowHead:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_artifactExpand{width:20px;height:20px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}._367UGW_artifactExpand:focus-visible{outline:2px solid var(--cm-accent);outline-offset:1px}._367UGW_artifactMain{flex:auto;min-width:0}._367UGW_artifactTitle{align-items:center;gap:6px;min-width:0;display:flex}._367UGW_artifactName{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:600;overflow:hidden}._367UGW_artifactMeta{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:11px;overflow:hidden}._367UGW_artifactBadges,._367UGW_artifactActions{flex:none;align-items:center;gap:4px;display:flex}._367UGW_artifactDetailWrap{transition:grid-template-rows var(--cm-motion-base) var(--cm-motion-ease-out);grid-template-rows:0fr;display:grid}._367UGW_artifactRow[data-expanded] ._367UGW_artifactDetailWrap{grid-template-rows:1fr}._367UGW_artifactDetailInner{min-height:0;transition:padding var(--cm-motion-base) var(--cm-motion-ease-out);padding:0 10px 0 38px;overflow:hidden}._367UGW_artifactRow[data-expanded] ._367UGW_artifactDetailInner{padding:2px 10px 10px 38px}._367UGW_artifactDetailInner>*{opacity:0;transition:opacity var(--cm-motion-fast) var(--cm-motion-ease-out)}._367UGW_artifactRow[data-expanded] ._367UGW_artifactDetailInner>*{opacity:1;transition-delay:60ms}._367UGW_artifactRow:not([data-expanded]) ._367UGW_artifactDetailInner>*{transition-delay:0s}._367UGW_paletteInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-specific-input-major);width:100%;height:32px;font:inherit;color:var(--dsw-alias-label-primary);border-radius:6px;padding:0 10px;font-size:13px}._367UGW_paletteInput:focus-visible{border-color:var(--cm-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);outline:none}._367UGW_paletteList{overscroll-behavior:contain;max-height:280px;margin-top:8px;overflow-y:auto}._367UGW_paletteGroup{letter-spacing:.02em;color:var(--dsw-alias-label-tertiary);user-select:none;padding:8px 8px 4px;font-size:11px;font-weight:500}._367UGW_paletteGroup:not([data-first]){border-top:1px solid var(--dsw-alias-border-l1);margin-top:4px}._367UGW_paletteItem{color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:6px 8px;font-size:12.5px;display:flex}._367UGW_paletteItem[data-active]{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_paletteItem[data-disabled]{opacity:.45;cursor:default}._367UGW_paletteItemLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._367UGW_paletteItemGroup{color:var(--dsw-alias-label-tertiary);flex:none;font-size:11px}._367UGW_paletteEmpty{color:var(--dsw-alias-label-tertiary);padding:10px 8px;font-size:12.5px}._367UGW_paletteHint{border-top:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);margin-top:8px;padding-top:6px;font-size:11px}._367UGW_checkboxRow,._367UGW_radioLabel{cursor:pointer;color:var(--dsw-alias-label-primary);align-items:flex-start;gap:6px;font-size:12.5px;display:flex}._367UGW_checkboxRow input,._367UGW_radioLabel input{width:14px;height:14px;accent-color:var(--cm-accent);cursor:pointer;flex:none;margin:2px 0 0}._367UGW_checkboxRow input:focus-visible,._367UGW_radioLabel input:focus-visible{outline:2px solid var(--cm-accent);outline-offset:2px}._367UGW_badge{white-space:nowrap;border:1px solid var(--dsw-alias-border-l2);height:18px;color:var(--dsw-alias-label-secondary);border-radius:8px;align-items:center;gap:4px;padding:0 6px;font-size:11px;font-weight:600;line-height:1.25;display:inline-flex}._367UGW_banner{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);box-sizing:border-box;border-radius:8px;flex-wrap:wrap;align-items:center;gap:6px 10px;width:100%;margin:0 0 10px;padding:8px 12px;font-size:12.5px;display:flex}._367UGW_banner[data-kind=ok]{border-color:color-mix(in srgb, var(--cm-ok) 35%, transparent);background:color-mix(in srgb, var(--cm-ok) 9%, transparent)}._367UGW_banner[data-kind=info]{border-color:color-mix(in srgb, var(--cm-accent) 30%, transparent);background:color-mix(in srgb, var(--cm-accent) 8%, transparent)}._367UGW_banner[data-kind=warn]{border-color:color-mix(in srgb, var(--cm-warn) 40%, transparent);background:color-mix(in srgb, var(--cm-warn) 9%, transparent)}._367UGW_banner[data-kind=error]{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent);background:color-mix(in srgb, var(--cm-error) 9%, transparent)}._367UGW_spinnerWrap{vertical-align:middle;align-items:center;gap:6px;display:inline-flex}._367UGW_spinner{vertical-align:middle;transform-origin:50%;flex:none;width:13px;height:13px;animation:.7s linear infinite _367UGW_spin;display:inline-block}._367UGW_spinnerTrack{fill:none;stroke:color-mix(in srgb, currentColor 30%, transparent);stroke-width:3px}._367UGW_spinnerArc{fill:none;stroke:currentColor;stroke-width:3px;stroke-linecap:round}@keyframes _367UGW_spin{to{transform:rotate(360deg)}}._367UGW_spinnerLabel{color:inherit;opacity:.85;font-size:12px}._367UGW_skeletonRoot{flex-direction:column;gap:8px;width:100%;margin-top:8px;display:flex}._367UGW_skeletonBars,._367UGW_skeletonCards{flex-direction:column;gap:8px;display:flex}._367UGW_skeletonBar{background-color:color-mix(in srgb, var(--dsw-alias-label-tertiary) 14%, transparent);background-image:linear-gradient(90deg, transparent, color-mix(in srgb, var(--dsw-alias-label-tertiary) 26%, transparent), transparent);animation:_367UGW_skeletonShimmer 1.3s var(--cm-motion-ease-in-out) infinite;background-position:-160px 0;background-repeat:no-repeat;background-size:160px 100%;border-radius:4px;display:block}@keyframes _367UGW_skeletonShimmer{to{background-position:calc(100% + 160px) 0}}._367UGW_skeletonTitle{border-radius:6px;width:42%;height:13px}._367UGW_skeletonLine{height:11px}._367UGW_skeletonBlock{border-radius:8px;height:46px}._367UGW_skeletonRow{border-radius:6px;height:30px}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4n+2){width:92%}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4n+3){width:78%}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4n){width:64%}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(2){animation-delay:60ms}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(3){animation-delay:.12s}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4){animation-delay:.18s}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(n+5){animation-delay:.24s}._367UGW_skeletonCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;flex-direction:column;gap:8px;padding:12px;display:flex}._367UGW_skeletonCard>._367UGW_skeletonBar:nth-child(2){width:84%}._367UGW_skeletonCard>._367UGW_skeletonBar:nth-child(3){width:56%}._367UGW_skeletonTable{border:1px solid var(--dsw-alias-border-l1);border-radius:8px;overflow:hidden}._367UGW_skeletonTableRow{border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:10px;padding:8px 10px;display:flex}._367UGW_skeletonTableRow:last-child{border-bottom:none}._367UGW_skeletonTableCell{flex:1 1 0;height:11px}._367UGW_skeletonTableCell:first-child{flex:0 0 40%}._367UGW_skeletonTableCell:last-child{flex:0 0 20%}._367UGW_skeletonCaption{color:var(--dsw-alias-label-tertiary);font-size:11px}._367UGW_card{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;margin:0 0 10px;padding:12px}._367UGW_groupLabel{letter-spacing:.02em;color:var(--dsw-alias-label-tertiary);margin-bottom:8px;font-size:11px;font-weight:700;display:block}._367UGW_groupHeader{align-items:baseline;gap:8px;margin-bottom:10px;display:flex}._367UGW_groupHeader ._367UGW_groupLabel{white-space:nowrap;flex:none;margin-bottom:0}._367UGW_groupNote{color:var(--dsw-alias-label-tertiary);font-size:11px}._367UGW_groupItems{flex-direction:column;gap:6px;display:flex}._367UGW_sectionOptionRow{flex-direction:column;gap:4px;display:flex}._367UGW_field{flex-direction:column;gap:4px;margin:0 0 10px;display:flex}._367UGW_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:11px;font-weight:600}._367UGW_hint{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:1.5}._367UGW_formError{color:var(--cm-error);font-size:11px}._367UGW_infoHint{vertical-align:middle;align-items:center;display:inline-flex}._367UGW_infoHintBtn{width:18px;height:18px;font:inherit;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;line-height:1.25;display:inline-flex}._367UGW_infoHintBtn:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._367UGW_infoHintBtn[data-open]:focus-visible{outline:2px solid var(--cm-accent);outline-offset:1px}._367UGW_infoHintBtn[data-open]{color:var(--dsw-alias-label-primary)}._367UGW_infoHintBtn[data-pinned]{background:color-mix(in srgb, var(--cm-accent) 14%, transparent);color:var(--cm-accent)}._367UGW_infoHintBubble{z-index:var(--cm-z-pop);box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);max-width:min(260px,100vw - 24px);max-height:min(480px,100vh - 16px);box-shadow:0 10px 26px color-mix(in srgb, var(--dsw-alias-bg-base) 45%, transparent);color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;pointer-events:none;visibility:hidden;border-radius:8px;padding:8px 10px;font-size:11px;line-height:1.5;position:fixed;overflow-y:auto}._367UGW_infoHintBubble[data-ready]{visibility:visible;animation:_367UGW_infoHintIn var(--cm-motion-fast) var(--cm-motion-ease-out);transform-origin:top}._367UGW_infoHintBubble[data-ready][data-side=top]{transform-origin:bottom}@keyframes _367UGW_infoHintIn{0%{opacity:0}to{opacity:1}}._367UGW_controlRow{align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_sectionTitleBlock{min-width:0;margin:0 0 10px}._367UGW_sectionTitleRow{align-items:center;gap:8px;min-width:0;display:flex}._367UGW_sectionTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:13px;font-weight:700;line-height:1.5}._367UGW_sectionSubtitle{color:var(--dsw-alias-label-tertiary);margin:1px 0 0;font-size:11px}._367UGW_empty{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);border:1px dashed var(--dsw-alias-border-l2);text-align:center;color:var(--dsw-alias-label-tertiary);box-sizing:border-box;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:100%;padding:24px 16px;font-size:12px;display:flex}._367UGW_emptySteps{margin:2px 0 10px}._367UGW_tableWrap{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;margin-bottom:10px;overflow:hidden}._367UGW_tableFixed th,._367UGW_tableFixed td{padding-left:12px;padding-right:12px}._367UGW_tableScroll{max-height:420px;overflow:auto}._367UGW_dataTable{border-collapse:collapse;width:100%;font-size:12px}._367UGW_dataTable th,._367UGW_dataTable td{box-sizing:border-box}._367UGW_tableFixed{table-layout:fixed}._367UGW_tableFixed td,._367UGW_tableFixed th{text-overflow:ellipsis;overflow:hidden}._367UGW_tableCompact th,._367UGW_tableCompact td{padding-left:8px;padding-right:8px}._367UGW_dataTable td._367UGW_dim{white-space:nowrap}._367UGW_dataTable th{z-index:var(--cm-z-raise);text-align:left;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border-bottom:1px solid var(--dsw-alias-border-l1);white-space:nowrap;padding:6px 10px;font-size:11px;font-weight:600;position:sticky;top:0}._367UGW_dataTable td{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 55%, transparent);vertical-align:middle;color:var(--dsw-alias-label-primary);padding:6px 10px}._367UGW_dataTable tbody tr:last-child td{border-bottom:none}._367UGW_dataTable tbody tr{transition:background-color .1s ease-out}._367UGW_dataTable tbody tr:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_dataTable tbody tr[data-selected]{background:color-mix(in srgb, var(--cm-accent) 9%, transparent)}._367UGW_dataTable ._367UGW_num{text-align:right;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}._367UGW_dataTable ._367UGW_dim{color:var(--dsw-alias-label-secondary)}._367UGW_dataTable ._367UGW_cellActions{text-align:right;white-space:nowrap}._367UGW_dataTable td._367UGW_cellActions{text-overflow:clip;overflow:visible}._367UGW_rowActions{align-items:center;gap:2px;display:inline-flex}._367UGW_cellMain{flex-direction:column;justify-content:center;gap:1px;min-width:0;min-height:30px;display:flex}._367UGW_cellTitle{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}._367UGW_cellMeta{color:var(--dsw-alias-label-tertiary);align-items:center;gap:6px;min-width:0;font-size:11px;display:inline-flex;overflow:hidden}._367UGW_cellMetaNoteText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}._367UGW_actionRow ._367UGW_banner{flex:auto;min-width:0;margin:0}._367UGW_warnText{color:var(--cm-warn)}._367UGW_kvRow{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 55%, transparent);align-items:baseline;gap:10px;min-width:0;padding:4px 0;font-size:12px;display:flex}._367UGW_kvRow:last-child{border-bottom:none}._367UGW_kvRow+._367UGW_actionRow{margin-top:8px}._367UGW_kvKey{width:88px;color:var(--dsw-alias-label-tertiary);flex:none;font-size:11px}._367UGW_kvValue{overflow-wrap:anywhere;flex:auto;min-width:0}._367UGW_kvValue._367UGW_mono{color:var(--dsw-alias-label-secondary);font-size:12px}._367UGW_segGroup,._367UGW_modeTabs{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);border-radius:8px;align-items:center;gap:2px;margin:0 0 10px;padding:2px;display:inline-flex}._367UGW_segItem,._367UGW_modeTab{height:22px;font:inherit;color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;align-items:center;gap:4px;padding:0 8px;font-size:11px;font-weight:500;display:inline-flex}._367UGW_segItem:hover,._367UGW_modeTab:hover{color:var(--dsw-alias-label-primary)}._367UGW_segItem:focus-visible,._367UGW_modeTab:focus-visible{outline:2px solid var(--cm-accent);outline-offset:1px}._367UGW_segItem[data-active],._367UGW_modeTab[data-active]{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);box-shadow:0 0 0 1px var(--dsw-alias-border-l1);font-weight:600}._367UGW_modeHint{color:var(--dsw-alias-label-tertiary);margin:-4px 0 10px;font-size:11px}._367UGW_stepperDot,._367UGW_stepperLabel{transition:background-color var(--cm-motion-fast) ease, border-color var(--cm-motion-fast) ease, color var(--cm-motion-fast) ease}._367UGW_stepper{scrollbar-width:none;align-items:center;padding:2px 0;display:flex;overflow-x:auto}._367UGW_stepper::-webkit-scrollbar{display:none}._367UGW_stepperStep{flex:none;align-items:center;gap:4px;display:inline-flex}._367UGW_stepperDot{border:1.5px solid var(--dsw-alias-border-l2);width:17px;height:17px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:inline-flex}._367UGW_stepperDot[data-state=current]{border-color:var(--cm-accent);background:var(--cm-accent);color:var(--dsw-alias-label-primary-foreground)}._367UGW_stepperDot[data-state=done]{background:color-mix(in srgb, var(--cm-ok) 16%, transparent);color:var(--cm-ok);border-color:#0000}._367UGW_stepperLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11px}._367UGW_stepperStep[data-state=current] ._367UGW_stepperLabel{color:var(--dsw-alias-label-primary);font-weight:600}._367UGW_stepperStep[data-state=done] ._367UGW_stepperLabel{color:var(--dsw-alias-label-secondary)}._367UGW_stepperConnector{background:var(--dsw-alias-border-l2);flex:none;width:14px;height:1.5px;margin:0 4px}._367UGW_stepperStep[data-state=done] ._367UGW_stepperConnector{background:color-mix(in srgb, var(--cm-ok) 45%, transparent)}._367UGW_progressBlock{margin:0 0 10px}._367UGW_progressTrack{background:color-mix(in srgb, var(--dsw-alias-border-l1) 80%, transparent);border-radius:4px;height:5px;position:relative;overflow:hidden}._367UGW_progressBar{background:var(--cm-accent);transition:width var(--cm-motion-slow) var(--cm-motion-ease-out);border-radius:4px;position:absolute;inset:0 auto 0 0}._367UGW_progressBarDone{background:var(--cm-ok)}._367UGW_progressBarFailed{background:var(--cm-error)}._367UGW_progressIndeterminate{background:var(--cm-accent);width:34%;animation:_367UGW_indet 1.15s var(--cm-motion-ease-in-out) infinite;border-radius:4px;position:absolute;top:0;bottom:0}@keyframes _367UGW_indet{0%{left:-34%}to{left:100%}}._367UGW_progressMeta{color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;margin-top:4px;font-size:11px;display:flex}._367UGW_progressLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}._367UGW_progressPercent{color:var(--dsw-alias-label-tertiary);flex:none;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_progressBadge{color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:4px;font-size:11px;display:inline-flex}._367UGW_progressBadgeCount{background:color-mix(in srgb, var(--cm-info) 14%, transparent);color:var(--dsw-alias-label-secondary);border-radius:8px;padding:0 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_progressBadgeSection{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_progressDetail{color:var(--dsw-alias-label-tertiary);margin-top:2px;font-size:11px}._367UGW_planScroll,._367UGW_reportScroll,._367UGW_confirmScroll,._367UGW_pullScroll,._367UGW_diffScroll,._367UGW_historyScroll,._367UGW_consultScroll{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);border-radius:8px;max-height:380px;overflow:auto}._367UGW_consultScroll{padding:0 6px}._367UGW_logScroll{background:var(--dsw-alias-bg-base);max-height:220px;overflow:auto}._367UGW_dialogMask{z-index:var(--cm-z-mask);background:color-mix(in srgb, var(--dsw-alias-bg-base) 55%, transparent);animation:_367UGW_maskIn var(--cm-motion-fast) var(--cm-motion-ease-out);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}@keyframes _367UGW_maskIn{0%{opacity:0}to{opacity:1}}._367UGW_dialogContentCenter{z-index:var(--cm-z-modal);animation:_367UGW_dialogIn var(--cm-motion-base) var(--cm-motion-ease-out);position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes _367UGW_dialogIn{0%{opacity:0;transform:translate(-50%,-50%)translateY(4px)}to{opacity:1;transform:translate(-50%,-50%)translateY(0)}}._367UGW_dialogMask[data-state=closed]{animation:_367UGW_maskOut var(--cm-motion-fast) var(--cm-motion-ease-out)}._367UGW_dialogContentCenter[data-state=closed]{animation:_367UGW_dialogOut var(--cm-motion-fast) var(--cm-motion-ease-out)}@keyframes _367UGW_maskOut{to{opacity:0}}@keyframes _367UGW_dialogOut{to{opacity:0;transform:translate(-50%,-50%)scale(.98)}}._367UGW_dialogCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);width:min(640px,100vw - 48px,95%);max-width:calc(100vw - 48px);max-height:min(600px,100vh - 64px,92%);box-shadow:0 12px 32px color-mix(in srgb, var(--dsw-alias-bg-base) 40%, transparent);border-radius:8px;flex-direction:column;display:flex}._367UGW_dialogHeader{color:var(--dsw-alias-label-primary);padding:12px 16px 0;font-size:13px;font-weight:700}._367UGW_dialogHeaderRow{align-items:center;gap:8px;padding:12px 14px 0;display:flex}._367UGW_dialogHeaderRow ._367UGW_dialogHeader{padding:0}._367UGW_dialogClose{margin-left:auto}._367UGW_dialogBody{min-height:0;color:var(--dsw-alias-label-secondary);flex:auto;padding:8px 16px 12px;font-size:12.5px;overflow-y:auto}._367UGW_dialogBodyScroll{max-height:460px;overflow-y:auto}._367UGW_dialogWide{width:min(720px,100vw - 48px,96%);max-height:min(620px,100vh - 64px,92%)}._367UGW_dialogFooter{border-top:1px solid var(--dsw-alias-border-l1);justify-content:flex-end;gap:8px;margin:0;padding:10px 16px 14px}._367UGW_updateVersionRow{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}._367UGW_updateVersionArrow{color:var(--dsw-alias-label-tertiary)}._367UGW_updateVersionTarget{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600}._367UGW_updateNotesLoading{justify-content:center;padding:24px 0;display:flex}._367UGW_toastViewport{z-index:var(--cm-z-toast);pointer-events:none;flex-direction:column;align-items:flex-end;gap:8px;max-width:calc(100% - 20px);display:flex;position:absolute;bottom:42px;right:10px}._367UGW_toast{pointer-events:auto;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);width:fit-content;max-width:340px;box-shadow:0 8px 24px color-mix(in srgb, var(--dsw-alias-bg-base) 45%, transparent);color:var(--dsw-alias-label-primary);animation:_367UGW_toastIn var(--cm-motion-base) var(--cm-motion-ease-out);border-radius:8px;align-items:flex-start;gap:8px;padding:8px 10px;font-size:12px;line-height:1.5;display:flex}@keyframes _367UGW_toastIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}._367UGW_toast[data-kind=ok]{border-color:color-mix(in srgb, var(--cm-ok) 40%, transparent)}._367UGW_toast[data-kind=ok] ._367UGW_toastGlyph{color:var(--cm-ok)}._367UGW_toast[data-kind=info] ._367UGW_toastGlyph{color:var(--cm-accent)}._367UGW_toast[data-kind=warn]{border-color:color-mix(in srgb, var(--cm-warn) 40%, transparent)}._367UGW_toast[data-kind=warn] ._367UGW_toastGlyph{color:var(--cm-warn)}._367UGW_toast[data-kind=error]{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent)}._367UGW_toast[data-kind=error] ._367UGW_toastGlyph{color:var(--cm-error)}._367UGW_toastGlyph{flex:none;margin-top:1px;display:inline-flex}._367UGW_toastText{word-break:break-word;min-width:0}._367UGW_toast>button{flex:none;width:18px;height:18px;margin-left:2px}._367UGW_statusAction{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;min-width:0;padding:0;display:inline-flex}._367UGW_statusAction:hover{color:var(--dsw-alias-label-primary);text-decoration:underline}._367UGW_statusAction:focus-visible{outline:2px solid var(--cm-accent);outline-offset:1px;border-radius:4px}._367UGW_runsCenter{flex-direction:column;gap:10px;display:flex}._367UGW_runsSummary{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_runsSummaryTitle{color:var(--dsw-alias-label-primary);font-size:12px;font-weight:700}._367UGW_runsCardHead{flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px;display:flex}._367UGW_runsCardTitle{color:var(--dsw-alias-label-primary);font-size:12.5px;font-weight:600}._367UGW_runsWarnNote{border:1px solid color-mix(in srgb, var(--cm-warn) 45%, transparent);background:color-mix(in srgb, var(--cm-warn) 10%, transparent);color:var(--dsw-alias-label-secondary);border-radius:6px;margin:8px 0 0;padding:6px 8px;font-size:11px}._367UGW_runsWarnNoteDetail{color:var(--dsw-alias-label-tertiary);margin:4px 0 0}._367UGW_runsCardTime{color:var(--dsw-alias-label-tertiary);white-space:nowrap;margin-left:auto;font-size:11px}._367UGW_runsCounts{color:var(--dsw-alias-label-tertiary);margin:8px 0 0;font-size:11px}._367UGW_runsLogTail{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);max-height:108px;color:var(--dsw-alias-label-secondary);border-radius:6px;margin:8px 0 0;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.5;overflow-y:auto}._367UGW_runsLogLine{white-space:pre-wrap;word-break:break-all}._367UGW_runsCardActions{flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 0;display:flex}._367UGW_runsOption{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);width:100%;font:inherit;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;border-radius:8px;flex-direction:column;gap:2px;margin:0 0 8px;padding:8px 10px;display:flex}._367UGW_runsOption:hover{border-color:var(--cm-accent)}._367UGW_runsOption:focus-visible{outline:2px solid var(--cm-accent);outline-offset:1px}._367UGW_runsOption[data-active]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 8%, transparent)}._367UGW_runsOptionTitle{align-items:center;gap:6px;font-size:12.5px;font-weight:600;display:flex}._367UGW_runsOptionDesc{color:var(--dsw-alias-label-tertiary);font-size:11px}._367UGW_runsOptionTag{background:color-mix(in srgb, var(--cm-accent) 14%, transparent);color:var(--cm-accent);border-radius:999px;padding:0 4px;font-size:11px;font-weight:600}._367UGW_actionRow{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_actionRowTop{flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0;display:flex}._367UGW_snapshotPickerHint{margin-top:4px;margin-bottom:10px}._367UGW_headRow{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_headRow ._367UGW_groupLabel{margin-bottom:0}._367UGW_authorRow{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}._367UGW_authorRow ._367UGW_groupLabel{margin-bottom:0}._367UGW_marketFilterGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:8px;display:grid}._367UGW_marketFilterSearch{grid-column:1/-1}._367UGW_marketFilterMeta{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}._367UGW_statStrip{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;flex-wrap:wrap;flex:none;align-items:stretch;gap:6px 0;min-height:32px;margin-bottom:10px;display:flex}._367UGW_statStrip>:last-child{padding-right:8px}._367UGW_statStrip[data-tone=error]{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent);background:color-mix(in srgb, var(--cm-error) 7%, transparent)}._367UGW_statStrip[data-tone=warn]{border-color:color-mix(in srgb, var(--cm-warn) 40%, transparent);background:color-mix(in srgb, var(--cm-warn) 6%, transparent)}._367UGW_statHealth{color:var(--dsw-alias-label-primary);white-space:nowrap;flex:none;align-items:center;gap:6px;padding:4px 8px;font-size:12px;font-weight:600;display:flex}._367UGW_statHealthAction{font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;font-size:12px;font-weight:600}._367UGW_statHealthAction:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_statHealthAction:focus-visible{outline:2px solid var(--cm-accent);outline-offset:-2px;border-radius:6px}._367UGW_statSeg{border:none;border-left:1px solid var(--dsw-alias-border-l1);font:inherit;color:var(--dsw-alias-label-secondary);white-space:nowrap;cursor:pointer;background:0 0;flex:none;align-items:center;gap:6px;padding:4px 8px;font-size:11px;display:flex}._367UGW_statSeg>span:first-child{color:var(--dsw-alias-label-tertiary)}._367UGW_statSeg:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._367UGW_statSeg:hover>span:first-child{color:var(--dsw-alias-label-secondary)}._367UGW_statSeg:focus-visible{outline:2px solid var(--cm-accent);outline-offset:-2px}._367UGW_statSeg b{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:700}._367UGW_statSegDim{color:var(--dsw-alias-label-tertiary)}._367UGW_toolRow{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}._367UGW_infoValue{flex:auto;align-items:center;gap:8px;min-width:0;display:inline-flex}._367UGW_infoValue ._367UGW_mono{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}._367UGW_copyBtn{width:20px;height:20px;font:inherit;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;font-size:11px;line-height:1.25;display:inline-flex}._367UGW_copyBtn:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._367UGW_copyBtn:focus-visible{outline:2px solid var(--cm-accent);outline-offset:1px}._367UGW_activityRow ._367UGW_copyBtn{opacity:0}._367UGW_activityRow:hover ._367UGW_copyBtn,._367UGW_activityRow ._367UGW_copyBtn:focus-visible{opacity:1}._367UGW_activityCard{flex-direction:column;min-height:0;margin-bottom:0;display:flex}._367UGW_diskUsageCard{height:var(--cm-disk-card-h);min-height:var(--cm-disk-card-h);max-height:var(--cm-disk-card-h)}._367UGW_diskUsageScroll{flex:auto;min-height:0;max-height:none}._367UGW_activityHeader{align-items:center;gap:8px;margin-bottom:8px;display:flex}._367UGW_activityTitle{letter-spacing:.02em;color:var(--dsw-alias-label-tertiary);flex:auto;font-size:11px;font-weight:700}._367UGW_activityRows{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);border-radius:8px;flex:auto;min-height:0;overflow-y:auto}._367UGW_activityRow{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 55%, transparent);grid-template-columns:72px minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:4px 10px;font-size:12px;line-height:1.5;display:grid}._367UGW_activityRow:last-child{border-bottom:none}._367UGW_activityTime{color:var(--dsw-alias-label-tertiary);white-space:nowrap;justify-self:end;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.5}._367UGW_activityKind{color:var(--dsw-alias-label-tertiary);white-space:nowrap;flex:none;font-size:11px;line-height:1.5}._367UGW_activitySummary{min-width:0;color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.5;display:inline-flex}._367UGW_activitySummaryText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_activityBadge{flex:none;justify-content:flex-end;align-items:center;line-height:1.5;display:inline-flex}._367UGW_activityResultOk{color:var(--dsw-alias-label-tertiary);white-space:nowrap;align-items:center;gap:4px;font-size:11px;line-height:1.5;display:inline-flex}._367UGW_factGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px 12px;display:grid}._367UGW_factCell{flex-direction:column;gap:2px;min-width:0;display:flex}._367UGW_factLabel{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11px}._367UGW_factValue{color:var(--dsw-alias-label-primary);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}._367UGW_sectionGrid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:0 24px;display:grid}._367UGW_sectionRow{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 55%, transparent);grid-template-columns:minmax(0,1fr) auto 56px;align-items:center;gap:10px;min-width:0;padding:4px 0;font-size:12px;display:grid}._367UGW_sectionRow:nth-last-child(-n+2){border-bottom:none}._367UGW_sectionName{min-width:0;color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;overflow:hidden}._367UGW_sectionCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;justify-self:end;font-size:11px}._367UGW_sectionSize{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;justify-self:end;font-size:11px}._367UGW_activityEmpty{color:var(--dsw-alias-label-tertiary);text-align:center;padding:16px;font-size:11px}._367UGW_snapshotList{flex-direction:column;gap:10px;margin-bottom:12px;display:flex}._367UGW_snapshotRow{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;align-items:center;gap:10px;padding:12px 14px;display:flex}._367UGW_snapshotRow[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 7%, transparent)}._367UGW_snapshotRowHeader{align-items:center;gap:8px;font-size:12px;display:flex}._367UGW_snapshotRowMain{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-weight:500;overflow:hidden}._367UGW_snapshotRowText{flex-direction:column;flex:auto;gap:4px;min-width:0;display:flex}._367UGW_snapshotRowName{word-break:break-all;font-size:12.5px;font-weight:500;line-height:1.5}._367UGW_snapshotRowMeta{min-width:0;color:var(--dsw-alias-label-secondary);align-items:center;gap:10px;font-size:12px;display:flex}._367UGW_snapshotRowBadges{flex:none;align-items:center;gap:6px;display:inline-flex}._367UGW_snapshotRowIssues{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._367UGW_snapshotRowFacts{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;flex:none}._367UGW_snapshotList._367UGW_reportScroll{background:var(--dsw-alias-bg-layer-2);margin-bottom:0;padding:10px 12px 10px 10px}._367UGW_reasonList{flex-direction:column;flex-basis:100%;gap:4px;min-width:0;display:flex}._367UGW_reasonLine{align-items:baseline;gap:6px;min-width:0;display:flex}._367UGW_reasonLine>span:first-child{overflow-wrap:anywhere;min-width:0}._367UGW_viewBody{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}._367UGW_resultScroll{flex:auto;min-height:0;overflow-y:auto}._367UGW_resultFooter{border-top:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;margin:10px 0 0;padding-top:10px}._367UGW_fillCard{flex:auto;margin-bottom:0}._367UGW_fillViewport{flex-direction:column;flex:auto;min-height:0;margin-bottom:0;display:flex}._367UGW_fillViewport ._367UGW_tableScroll{flex:auto;max-height:none}._367UGW_compositionViewport{flex:auto;min-height:0;overflow:auto}._367UGW_sparseFill{flex-direction:column;flex:auto;justify-content:flex-start;align-items:flex-start;gap:10px;min-height:280px;display:flex}._367UGW_pickerRoot{flex-direction:column;gap:8px;min-width:0;display:flex;position:relative}._367UGW_pickerOverlay{z-index:var(--cm-z-sticky);animation:_367UGW_maskIn var(--cm-motion-fast) var(--cm-motion-ease-out);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 62%, transparent);backdrop-filter:blur(1px);border-radius:8px;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}._367UGW_pickerToolbar{align-items:center;gap:8px;min-width:0;display:flex}._367UGW_pickerToolbar ._367UGW_input{flex:auto;min-width:0}._367UGW_pickerList{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;max-height:320px;padding:4px 10px;overflow:auto}._367UGW_pickerModalBody{flex-direction:column;gap:8px;height:min(420px,62vh);min-height:0;display:flex}._367UGW_pickerModalBody ._367UGW_pickerRoot{flex:auto;min-height:0}._367UGW_pickerModalBody ._367UGW_pickerList{scrollbar-gutter:stable;flex:auto;min-height:0;max-height:none}._367UGW_pickerGroup+._367UGW_pickerGroup{border-top:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 55%, transparent)}._367UGW_pickerUnit{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);align-items:center;min-width:0;padding:2px 0 2px 16px;display:flex}._367UGW_pickerUnitName{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:280px;font-size:12px;overflow:hidden}._367UGW_pickerTreeRow{align-items:center;gap:4px;min-width:0;padding:4px 0;display:flex}._367UGW_pickerTreeRow>:last-child{flex:auto;min-width:0}._367UGW_pickerChevronSpacer{flex:none;width:18px;height:18px;display:inline-block}._367UGW_pickerSubgroup{padding-left:18px}._367UGW_pickerSubgroupName{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:11px;font-weight:600;overflow:hidden}._367UGW_pickerUnitNested{gap:4px;padding-left:18px}._367UGW_pickerMore{justify-content:center;padding:4px 0 2px 16px;display:flex}._367UGW_pickerUnitDetail{max-width:220px;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}._367UGW_pickerCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}._367UGW_pickerFooter{border-top:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-secondary);padding-top:6px;font-size:11px}._367UGW_optionsRow{align-items:center;gap:16px;display:flex;& ._367UGW_noticeSlot{flex-direction:column;justify-content:center;min-height:40px;display:flex}& ._367UGW_noticeSlot ._367UGW_banner{margin:0}& ._367UGW_noticeLine{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}margin-bottom:4px}._367UGW_groupList{flex-direction:column;gap:8px;margin-bottom:10px;display:flex}._367UGW_groupCard{margin:0}._367UGW_categoryItem{flex-wrap:wrap;align-items:baseline;gap:8px;min-width:0;display:flex}._367UGW_categoryName{color:var(--dsw-alias-label-primary);flex:none;font-weight:500}._367UGW_categoryDesc{color:var(--dsw-alias-label-tertiary);min-width:0;font-size:11px}._367UGW_optionsCard{margin:0 0 10px}._367UGW_secretFields ._367UGW_field{margin-bottom:0}._367UGW_groupHintRow{margin-bottom:10px}._367UGW_secretFields{background:0 0;border:none;border-radius:0;grid-template-columns:1fr 1fr;gap:0 10px;margin:6px 0 10px;padding:0;display:grid}._367UGW_warnList{color:var(--dsw-alias-label-secondary);margin:4px 0 0;padding-left:18px;font-size:11px}._367UGW_wizardStepperRow{align-items:center;gap:10px;margin-bottom:10px;display:flex}._367UGW_conflictDetail{margin-top:2px}._367UGW_conflictList{flex-direction:column;gap:8px;margin-bottom:10px;display:flex}._367UGW_conflictItem{border:1px solid color-mix(in srgb, var(--cm-warn) 35%, transparent);background:var(--dsw-alias-bg-layer-2);border-radius:8px;padding:10px 12px}._367UGW_conflictHead{align-items:center;gap:8px;margin-bottom:6px;font-size:12px;display:flex}._367UGW_conflictId{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}._367UGW_conflictOptions{flex-wrap:wrap;gap:4px 14px;margin-top:6px;display:flex}._367UGW_conflictChoices{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}._367UGW_choiceCard{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-secondary);cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:8px 10px;font-size:12px;font-weight:500;transition:border-color .12s ease-out,background-color .12s ease-out;display:flex}._367UGW_choiceCard:hover{border-color:color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2))}._367UGW_choiceCard:focus-within{outline:2px solid var(--cm-accent);outline-offset:1px}._367UGW_choiceCard[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 9%, transparent);color:var(--dsw-alias-label-primary)}._367UGW_choiceCard input{width:13px;height:13px;accent-color:var(--cm-accent);flex:none;margin:0}._367UGW_choiceTitle{min-width:0}._367UGW_conflictDetail{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;white-space:normal;border-radius:6px;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}._367UGW_conflictPrefix{color:var(--dsw-alias-label-tertiary);margin-bottom:4px}._367UGW_conflictLine{align-items:baseline;gap:8px;padding:4px 0;display:flex}._367UGW_conflictLine+._367UGW_conflictLine{border-top:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 55%, transparent)}._367UGW_conflictLineLabel{min-width:56px;color:var(--dsw-alias-label-tertiary);flex:none;font-weight:600}._367UGW_conflictLineValue{overflow-wrap:anywhere;flex:auto;min-width:0}._367UGW_pathMappingList{flex-direction:column;gap:6px;margin-bottom:10px;display:flex}._367UGW_pathRow{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;flex-direction:column;align-items:stretch;gap:8px;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;display:flex}._367UGW_pathOld,._367UGW_pathNew{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);overflow-wrap:anywhere;border-radius:6px;flex-direction:column;flex:auto;width:100%;min-width:0;padding:4px 8px;display:flex}._367UGW_pathValue{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:2px 0 0}._367UGW_pathIssueKind{flex:none}._367UGW_secretsList{flex-direction:column;display:flex}._367UGW_snapshotPickerRow{flex-wrap:nowrap;align-items:flex-end;gap:8px;margin-top:10px;margin-bottom:10px;display:flex}._367UGW_snapshotPickerRow ._367UGW_field{margin-bottom:0}._367UGW_pickerAction{flex:none;align-items:center;display:inline-flex}._367UGW_logPanel{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);border-radius:8px;margin-bottom:10px;overflow:hidden}._367UGW_logHeader{border-bottom:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);align-items:center;gap:8px;padding:6px 10px;font-size:11px;font-weight:600;display:flex}._367UGW_logLine{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;padding:1px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.5}._367UGW_logCounts{color:var(--dsw-alias-label-tertiary);font-weight:500}._367UGW_logFilterButton{font:inherit;color:var(--cm-accent);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:11px}._367UGW_logFilterButton[data-active]{color:var(--dsw-alias-label-primary);font-weight:700}._367UGW_logEntry+._367UGW_logEntry{border-top:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 55%, transparent)}._367UGW_logLine[data-level=fail]{color:var(--cm-error)}._367UGW_logLine[data-level=warn]{color:var(--cm-warn)}._367UGW_logLine[data-level=ok]{color:var(--cm-ok)}._367UGW_logLine[data-level=skip]{color:var(--dsw-alias-label-tertiary)}._367UGW_logLine[data-level=running]{color:var(--dsw-alias-label-primary)}._367UGW_logDetail{color:var(--dsw-alias-label-tertiary);white-space:pre-wrap;overflow-wrap:anywhere;padding:0 10px 0 22px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.5}._367UGW_logDetail[data-kind=command]{color:var(--dsw-alias-label-secondary)}._367UGW_logEmpty{color:var(--dsw-alias-label-tertiary);text-align:center;padding:12px;font-size:11px}._367UGW_logJumpButton{font:inherit;color:var(--cm-accent);cursor:pointer;background:0 0;border:none;margin-left:auto;padding:0 4px;font-size:11px}._367UGW_reportView{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;margin-bottom:10px;overflow:hidden}._367UGW_reportList{flex-direction:column;display:flex}._367UGW_confirmItem{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 50%, transparent);padding:8px 10px}._367UGW_confirmItem:last-child{border-bottom:none}._367UGW_confirmItemHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_confirmItemDesc{min-width:0;color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;flex:200px;font-size:12.5px}._367UGW_confirmItemHead+._367UGW_conflictItem{margin-top:8px}._367UGW_reportBlock{margin-bottom:10px}._367UGW_reportProblemRow{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 50%, transparent);padding:6px 10px}._367UGW_reportProblemRow:last-child{border-bottom:none}._367UGW_reportProblemHead{align-items:center;gap:6px;display:flex}._367UGW_reportProblemText{color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}._367UGW_reportProblemReason{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin-top:2px;font-size:11px;line-height:1.5}._367UGW_reportSectionRow{align-items:center;gap:6px;padding:4px 0;display:flex}._367UGW_reportWarningRow{color:var(--cm-warn);overflow-wrap:anywhere;padding:2px 10px;font-size:11px;line-height:1.5}._367UGW_reportDetails{color:var(--dsw-alias-label-tertiary);margin-top:4px;font-size:11px}._367UGW_reportDetails>summary{cursor:pointer;color:var(--dsw-alias-label-secondary);padding:2px 0}._367UGW_reportDetails ._367UGW_reportScroll{margin-top:6px}._367UGW_reportView ._367UGW_reportScroll{background:0 0;border:none;border-radius:0}._367UGW_reportBody{flex-direction:column;gap:2px;padding:8px 12px;display:flex}._367UGW_reportHeadline{color:var(--dsw-alias-label-primary);margin-bottom:2px;font-size:12.5px;font-weight:600}._367UGW_reportText{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:8px 12px;font-size:12px}._367UGW_reportFooter{border-top:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);align-items:center;gap:8px;padding:8px 12px;display:flex}._367UGW_errorBanner{border:1px solid color-mix(in srgb, var(--cm-error) 45%, transparent);background:color-mix(in srgb, var(--cm-error) 8%, transparent);border-radius:8px;align-items:flex-start;gap:8px;margin:0 0 10px;padding:8px 12px;font-size:12px;display:flex}._367UGW_errorTitle{color:var(--cm-error);font-weight:600}._367UGW_errorLine{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--dsw-alias-label-secondary);margin:0}._367UGW_errorList{margin:4px 0 0;padding-left:18px;font-size:11px}._367UGW_errorItem{overflow-wrap:anywhere}._367UGW_errorReason{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0;color:var(--dsw-alias-label-tertiary);margin:0}._367UGW_errorFooter{margin-top:6px}._367UGW_errorAction{margin-right:8px}._367UGW_errorActionLabel{color:var(--cm-accent)}._367UGW_inspectGroup{margin-bottom:10px}._367UGW_kindTag{background:var(--dsw-alias-interactive-bg-hover);height:16px;color:var(--dsw-alias-label-secondary);white-space:nowrap;border-radius:4px;align-items:center;padding:0 6px;font-size:11px;font-weight:600;display:inline-flex}._367UGW_kindTagOk{background:color-mix(in srgb, var(--cm-ok) 13%, transparent);color:var(--cm-ok)}._367UGW_kindTagInfo{background:color-mix(in srgb, var(--cm-accent) 13%, transparent);color:var(--cm-accent)}._367UGW_kindTagWarn{background:color-mix(in srgb, var(--cm-warn) 13%, transparent);color:var(--cm-warn)}._367UGW_kindTagError{background:color-mix(in srgb, var(--cm-error) 13%, transparent);color:var(--cm-error)}._367UGW_restorePlan{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;gap:10px;display:flex}._367UGW_restorePlanList{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}._367UGW_restorePlanRow,._367UGW_restorePlanRowStatic{border-radius:6px;align-items:center;gap:8px;width:100%;padding:4px 6px;display:flex}._367UGW_restorePlanRow{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none}._367UGW_restorePlanRow:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_restorePlanRow:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 55%, transparent);outline:none}._367UGW_restorePlanPath{min-width:0;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;overflow:hidden}._367UGW_restorePlanStat{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}._367UGW_restorePlanChevron{color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_restorePlanNote{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;padding:0 6px 4px 24px;font-size:11px}._367UGW_restorePlanGroupHead{align-items:center;gap:8px;margin:0 0 4px;display:flex}._367UGW_restorePlanGroupHead ._367UGW_groupLabel{margin-bottom:0;display:inline}._367UGW_diffGroupToggle{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;padding:0;font-size:11px;font-weight:700}._367UGW_diffGroupToggle:hover{color:var(--dsw-alias-label-primary)}._367UGW_diffGroupToggle:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 55%, transparent);border-radius:4px;outline:none}._367UGW_diffStatTotal{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}._367UGW_diffStatAdd{color:var(--cm-ok)}._367UGW_diffStatDel{color:var(--cm-error)}._367UGW_rollbackTabIcon{flex:none;align-items:center;margin-right:6px;display:inline-flex}._367UGW_diffFileHead{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:8px;padding:2px 6px;font-size:12px;line-height:1.5;display:flex}._367UGW_diffFilePath{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-secondary);flex:auto;overflow:hidden}._367UGW_diffFileStat{font-variant-numeric:tabular-nums;flex:none}._367UGW_diffPane{margin:2px 0 8px}._367UGW_diffPaneFill{flex-direction:column;height:100%;min-height:0;margin:0;display:flex}._367UGW_diffPane ._367UGW_diffScroll{max-height:min(80vh,800px)}._367UGW_dialogCard ._367UGW_diffPane ._367UGW_diffScroll{max-height:380px}._367UGW_diffPaneFill ._367UGW_diffScroll{flex:auto;min-height:0;max-height:calc(100vh - 90px)}._367UGW_diffTable{border-collapse:collapse;table-layout:fixed;width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.5}._367UGW_diffNoColW3{width:calc(3ch + 18px)}._367UGW_diffNoColW4{width:calc(4ch + 18px)}._367UGW_diffNoColW5{width:calc(5ch + 18px)}._367UGW_diffNoColW6{width:calc(6ch + 18px)}._367UGW_diffNoHead{border-bottom:1px solid var(--dsw-alias-border-l1);border-right:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);text-align:left;padding:2px 6px;font-size:11px;font-weight:600;line-height:1.5}._367UGW_diffNoHead+._367UGW_diffNoHead{border-left:1px solid var(--dsw-alias-border-l1)}._367UGW_diffHunkRow td{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-tertiary);padding:2px 6px}._367UGW_diffTable tbody td:nth-child(3),._367UGW_diffHunkRow td+td{border-left:1px solid var(--dsw-alias-border-l1)}._367UGW_diffNo{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-align:right;vertical-align:top;user-select:none;padding:1px 4px}._367UGW_diffNoDel{background:color-mix(in srgb, var(--cm-error) 12%, transparent);color:var(--cm-error);box-shadow:inset 3px 0 0 var(--cm-error)}._367UGW_diffNoAdd{background:color-mix(in srgb, var(--cm-ok) 12%, transparent);color:var(--cm-ok);box-shadow:inset 3px 0 0 var(--cm-ok)}._367UGW_diffCell{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;vertical-align:top;padding:1px 6px}._367UGW_diffCellAdd{background:color-mix(in srgb, var(--cm-ok) 12%, transparent)}._367UGW_diffCellDel{background:color-mix(in srgb, var(--cm-error) 12%, transparent)}._367UGW_nextStepsGroup{margin-bottom:10px}._367UGW_nextStepsList{max-height:132px;overflow-y:auto}._367UGW_rollbackBox{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);border-radius:8px;margin-bottom:10px;padding:8px 10px}._367UGW_statRow{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}._367UGW_statRow:not(:last-child){margin-bottom:10px}._367UGW_consultSection{margin-top:10px}._367UGW_consultSection:first-of-type{margin-top:8px}._367UGW_consultSection ._367UGW_statRow{margin-top:0}._367UGW_hiddenFile{display:none}._367UGW_cliName,._367UGW_cliCommand{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}._367UGW_cliCommand{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0}._367UGW_historyGroup{margin-bottom:12px}._367UGW_historyRow{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 55%, transparent);align-items:flex-start;gap:8px;padding:6px 8px;font-size:12px;display:flex}._367UGW_historyRow:last-child{border-bottom:none}._367UGW_historyRowMain{flex:auto;min-width:0}._367UGW_historyMeta{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:2px;display:flex}._367UGW_historySummary{overflow-wrap:anywhere;color:var(--dsw-alias-label-secondary);display:block}._367UGW_historyTime{color:var(--dsw-alias-label-tertiary);flex:none;padding-top:1px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}._367UGW_historySections{color:var(--dsw-alias-label-tertiary);font-size:11px}._367UGW_profileRow{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;margin-bottom:6px;padding:8px 12px}._367UGW_profileRow[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 7%, transparent)}._367UGW_profileRowHeader{align-items:center;gap:8px;font-size:12px;display:flex}._367UGW_profileRowMain{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-weight:500;overflow:hidden}button._367UGW_profileRowMain{font:inherit;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:flex-start;gap:2px;padding:0;display:flex}._367UGW_profileRowTitle{align-items:center;gap:6px;min-width:0;max-width:100%;display:flex}._367UGW_profileRowName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_profileRowMeta{max-width:100%;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:400;display:block;overflow:hidden}._367UGW_detailLines{flex-direction:column;gap:2px;min-width:0;font-size:11px;display:flex}button._367UGW_profileRowMain:hover{color:var(--cm-accent)}._367UGW_listHeaderRow{align-items:center;gap:8px;margin:0 0 8px;display:flex}._367UGW_listHeaderRow ._367UGW_groupLabel{margin-bottom:0}._367UGW_listHeaderRow ._367UGW_cellMeta{flex:auto;min-width:0}._367UGW_badgeRow{flex:none;align-items:center;gap:4px;display:inline-flex}._367UGW_actionRow[data-inline]{flex:none;margin:0}._367UGW_aboutLinkRow{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_aboutAuthor{color:var(--cm-accent);overflow-wrap:anywhere;font-size:12.5px;font-weight:600;text-decoration:none}._367UGW_aboutAuthor:hover{text-decoration:underline}._367UGW_aboutAuthor:focus-visible{outline:2px solid var(--cm-accent);outline-offset:1px;border-radius:4px}._367UGW_consultDimension{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 55%, transparent);padding:6px 0;font-size:12px}._367UGW_consultDimension:last-child{border-bottom:none}._367UGW_severityError{color:var(--cm-error);font-weight:600}._367UGW_viewBody{gap:10px}._367UGW_viewBody>*{margin-bottom:0}._367UGW_viewBody>._367UGW_statRow{margin-top:0;margin-bottom:0}._367UGW_viewBody:after{content:\"\";flex:none;height:8px}@media (width<=900px){._367UGW_secretFields{grid-template-columns:1fr}._367UGW_pagePad{padding:10px 12px 12px}}._367UGW_marketReviewPage{flex-direction:column;flex:1 0 auto;gap:10px;min-height:200px;display:flex}._367UGW_marketReviewPage ._367UGW_pickerRoot{flex:auto}._367UGW_marketReviewScroll,._367UGW_marketReviewPage ._367UGW_pickerList{scrollbar-gutter:stable;flex:auto;min-height:200px;max-height:800px;overflow:auto}._367UGW_marketReviewScroll{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);border-radius:8px;padding:6px 10px}@media (prefers-reduced-motion:reduce){._367UGW_toast,._367UGW_statusDot[data-pulse],._367UGW_pagePad,._367UGW_dialogMask,._367UGW_dialogContentCenter,._367UGW_snapshotList>*,._367UGW_dataTable tbody tr,._367UGW_viewEnter,._367UGW_pickerOverlay,._367UGW_pickerUnit,._367UGW_banner,._367UGW_empty{animation:none}._367UGW_statusDot,._367UGW_stepperDot,._367UGW_stepperLabel{transition:none}._367UGW_selectMenu,._367UGW_selectChevron{transition:none;animation:none}._367UGW_artifactDetailWrap,._367UGW_artifactDetailWrap>*{transition:none}._367UGW_dialogMask[data-state=closed],._367UGW_dialogContentCenter[data-state=closed],._367UGW_restorePlan,._367UGW_infoHintBubble{animation:none}._367UGW_collapse{transition:none}._367UGW_skeletonBar{background-image:none;animation:none}}._367UGW_sourceList{flex-direction:column;gap:6px;margin-bottom:10px;display:flex}._367UGW_sourceRow{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;align-items:flex-start;gap:8px;min-width:0;padding:8px 10px;display:flex}._367UGW_sourceRow[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 7%, transparent)}._367UGW_sourceRow[data-disabled]{opacity:.7}._367UGW_sourceRowMain{flex:auto;min-width:0}._367UGW_sourceRowHead{align-items:center;gap:8px;min-width:0;display:flex}._367UGW_sourceRowName{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;font-weight:600;overflow:hidden}._367UGW_sourceRowHead>:not(._367UGW_sourceRowName){flex:none}._367UGW_sourcePaths{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;margin-top:4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.5;display:block}._367UGW_skipList{color:var(--dsw-alias-label-secondary);flex-direction:column;gap:4px;margin:6px 0 0;padding:0;font-size:11px;display:flex}._367UGW_skipRow{flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0;display:flex}._367UGW_skipCode{background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 12%, transparent);color:var(--dsw-alias-label-secondary);white-space:nowrap;border-radius:4px;flex:none;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}._367UGW_skipText{overflow-wrap:anywhere;flex:auto;min-width:0}._367UGW_skipMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;font-size:11px}._367UGW_chatEntryScope{--cm-text-1:var(--dsw-alias-label-primary);--cm-text-3:var(--dsw-alias-label-tertiary);--cm-surface-2:var(--dsw-alias-bg-layer-2);--cm-chat-bubble:var(--dsw-specific-bubble,color-mix(in srgb, var(--cm-text-1) 12%, transparent));--cm-line-1:var(--dsw-alias-border-l1);--cm-line-2:var(--dsw-alias-border-l2);--cm-fs-meta:11px;--cm-fs-base:12.5px;--cm-sp-2:4px;--cm-sp-3:6px;--cm-sp-4:8px;--cm-sp-5:10px;--cm-sp-6:12px;--cm-sp-8:16px;--cm-r-2:6px;--cm-r-3:8px;min-width:0;color:var(--cm-text-1);font-size:var(--cm-fs-base);line-height:1.5;display:block}._367UGW_chatEntryRow{align-items:flex-end;gap:var(--cm-sp-3);flex-direction:column;display:flex}._367UGW_chatEntryStack{align-items:flex-end;gap:var(--cm-sp-4);flex-direction:column;min-width:0;max-width:min(620px,82%);display:flex}._367UGW_chatBubble{gap:var(--cm-sp-3);max-width:100%;padding:var(--cm-sp-5) var(--cm-sp-8);border-radius:var(--cm-r-3);background:var(--cm-chat-bubble);color:var(--cm-text-1);white-space:pre-wrap;word-break:break-word;flex-direction:column;display:flex}._367UGW_chatBubbleText{white-space:pre-wrap;word-break:break-word}._367UGW_chatFallbackBubble{border-left:2px solid var(--cm-text-1)}._367UGW_chatAttachmentRow{justify-content:flex-end;align-items:flex-end;gap:var(--cm-sp-2);flex-wrap:wrap;min-width:0;display:flex}._367UGW_chatFileCard{align-items:center;gap:var(--cm-sp-3);max-width:100%;padding:var(--cm-sp-2) var(--cm-sp-4);border:.5px solid var(--cm-line-2);border-radius:var(--cm-r-2);background:var(--cm-surface-2);font-size:var(--cm-fs-meta);display:inline-flex}._367UGW_chatFileExt{padding:0 var(--cm-sp-2);border-radius:var(--cm-r-2);background:var(--cm-line-1);color:var(--cm-text-1);font-size:var(--cm-fs-meta);letter-spacing:.02em;flex:none}._367UGW_chatFileName{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}._367UGW_chatFileMeta{color:var(--cm-text-3);font-size:var(--cm-fs-meta);flex:none}._367UGW_chatRawBlock{font-size:var(--cm-fs-meta);color:var(--cm-text-3)}._367UGW_chatRawSummary{cursor:pointer}._367UGW_chatRawPre{max-height:220px;margin:var(--cm-sp-2) 0 0;padding:var(--cm-sp-3);border-radius:var(--cm-r-2);background:var(--cm-surface-2);color:var(--cm-text-3);white-space:pre-wrap;word-break:break-all;overflow:auto}._367UGW_chatEntryActions{align-items:center;gap:var(--cm-sp-2);display:flex}._367UGW_chatEntryTime{color:var(--cm-text-3);font-size:var(--cm-fs-meta)}._367UGW_chatEntryNotice{max-width:min(620px,82%);color:var(--cm-text-3);font-size:var(--cm-fs-meta)}._367UGW_chatEntryReference{color:var(--cm-text-3);font-size:var(--cm-fs-meta)}._367UGW_chatActionBtn{border-radius:var(--cm-r-2);width:24px;height:24px;color:var(--cm-text-3);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}._367UGW_chatActionBtn:hover{background:var(--cm-line-1);color:var(--cm-text-1)}._367UGW_chatActionBtn:disabled{color:var(--cm-text-3);opacity:.5;cursor:not-allowed}._367UGW_rollbackFileList{margin-top:var(--cm-sp-2);flex-direction:column;display:flex}._367UGW_rollbackFileRow{align-items:center;gap:var(--cm-sp-3);padding:var(--cm-sp-3) 0 var(--cm-sp-3) var(--cm-sp-2);grid-template-columns:auto minmax(0,1fr) auto;display:grid;position:relative}._367UGW_rollbackFileRow:before{content:\"\";left:0;top:var(--cm-sp-2);bottom:var(--cm-sp-2);background:var(--cm-info);width:2px;position:absolute}._367UGW_rollbackFileRow[data-kind=create]:before{background:var(--cm-ok)}._367UGW_rollbackFileRow[data-kind=delete]:before{background:var(--cm-error)}._367UGW_rollbackFileRow:not([data-kind]):before{display:none}._367UGW_rollbackFileIcon{flex:none;align-items:center;display:inline-flex}._367UGW_rollbackFilePath{min-width:0;color:var(--cm-text-1);font-size:var(--cm-fs-table);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}._367UGW_rollbackFileDir{color:var(--cm-text-3);transition:color var(--cm-motion-fast) ease}._367UGW_rollbackFileStat{justify-content:flex-end;justify-self:end;align-items:baseline;gap:var(--cm-sp-2);display:inline-flex}._367UGW_rollbackAdded{color:var(--cm-ok);font-size:var(--cm-fs-table);font-variant-numeric:tabular-nums;flex:none}._367UGW_rollbackRemoved{color:var(--cm-error);font-size:var(--cm-fs-table);font-variant-numeric:tabular-nums;flex:none}._367UGW_rollbackDeleted{color:var(--cm-error);font-size:var(--cm-fs-table);flex:none}._367UGW_rollbackFilePath:is(button){font:inherit;font-size:var(--cm-fs-table);color:var(--cm-text-1);text-align:left;cursor:pointer;transition:color var(--cm-motion-fast) ease;background:0 0;border:0;padding:0}._367UGW_rollbackFilePath:is(button):hover:not(:disabled),._367UGW_rollbackFilePath:is(button):focus-visible,._367UGW_rollbackFilePath:is(button):hover:not(:disabled) ._367UGW_rollbackFileDir,._367UGW_rollbackFilePath:is(button):focus-visible ._367UGW_rollbackFileDir{color:var(--cm-accent)}._367UGW_rollbackFilePath:is(button):disabled{color:var(--cm-text-1);cursor:not-allowed;opacity:.7}._367UGW_previewChoiceRow{justify-content:space-between;align-items:baseline;gap:var(--cm-sp-4);margin:0 0 var(--cm-sp-2);display:flex}._367UGW_previewScope{align-items:baseline;gap:var(--cm-sp-3);font-size:var(--cm-fs-meta);color:var(--cm-text-2);font-variant-numeric:tabular-nums;flex:none;display:inline-flex}._367UGW_previewScopeStats{align-items:baseline;gap:var(--cm-sp-3);display:inline-flex}._367UGW_previewScope[data-off=true] ._367UGW_previewScopeStats{color:var(--cm-text-3);opacity:.75}._367UGW_previewScopeOff{color:var(--cm-text-3)}._367UGW_inlineDiffBox{gap:var(--cm-sp-2);margin-top:var(--cm-sp-2);padding:var(--cm-sp-2);border:1px solid var(--cm-line-1);border-radius:var(--cm-r-2);flex-direction:column;display:flex}._367UGW_rollbackWarnings{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}._367UGW_rollbackToolbar{align-items:center;gap:8px;margin-bottom:8px;display:flex}._367UGW_rollbackSummary{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:12px;font-weight:600}._367UGW_rollbackScroll{padding:8px}._367UGW_rollbackGroup{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;flex-direction:column;flex:auto;gap:8px;min-height:0;padding:8px 10px;display:flex}._367UGW_rollbackGroupHead{border-bottom:1px solid var(--dsw-alias-border-l1);flex-wrap:wrap;align-items:center;gap:6px;padding-bottom:6px;display:flex}._367UGW_rollbackGroupTitle{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;font-size:12px;font-weight:600}._367UGW_rollbackGroupUnit{text-overflow:ellipsis;white-space:nowrap;text-align:right;min-width:0;color:var(--dsw-alias-label-tertiary);flex:auto;margin-left:auto;font-size:11px;overflow:hidden}._367UGW_rollbackPoints{flex-direction:column;gap:6px;display:flex}._367UGW_rollbackPoint{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);border-left-width:2px;border-radius:8px;flex-direction:column;gap:4px;padding:8px 10px;display:flex}._367UGW_rollbackPoint[data-kind=auto]{border-left-color:var(--cm-ok)}._367UGW_rollbackPoint[data-kind=guard]{border-left-color:var(--cm-info)}._367UGW_rollbackPoint[data-kind=unknown]{border-left-color:var(--cm-text-3)}._367UGW_rollbackPointTop{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_rollbackPointTurn{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:12px;font-weight:600}._367UGW_rollbackPointActions{flex:none;align-items:center;gap:6px;margin-left:auto;display:flex}._367UGW_rollbackPointMeta{color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;align-items:center;gap:6px;font-size:11px;line-height:1.5;display:flex}._367UGW_rollbackMetaDot{color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_rollbackLedger{align-items:stretch;gap:10px;height:340px;display:flex}._367UGW_rollbackSessions{flex-direction:column;flex:0 0 148px;gap:4px;height:100%;display:flex;overflow:auto}._367UGW_rollbackSessionItem{text-align:left;border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-2);background:var(--dsw-alias-bg-base);width:100%;color:var(--dsw-alias-label-secondary);cursor:pointer;flex-direction:column;gap:2px;padding:6px 8px;display:flex}._367UGW_rollbackSessionItem:hover{background:var(--dsw-alias-bg-layer-2)}._367UGW_rollbackSessionItem[data-active]{border-color:var(--cm-accent);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary)}._367UGW_rollbackSessionId{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}._367UGW_rollbackSessionMeta{color:var(--dsw-alias-label-tertiary);align-items:center;gap:2px;font-size:11px;line-height:1.5;display:flex}._367UGW_rollbackLedgerMain{flex-direction:column;flex:auto;gap:8px;min-width:0;height:100%;display:flex}._367UGW_rollbackPointsScroll{flex:auto;min-height:0;padding:8px;overflow:auto}._367UGW_rollbackPointNote{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;overflow:hidden}._367UGW_shHeaderTrailing{align-items:center;gap:8px;margin-left:auto;display:inline-flex}._367UGW_shHeaderTrailing~._367UGW_dialogClose{margin-left:0}._367UGW_shSummary{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;flex-direction:column;gap:10px;margin:0 0 10px;padding:12px 14px;display:flex}._367UGW_shMetrics{flex-wrap:wrap;align-items:flex-end;gap:8px 24px;display:flex}._367UGW_shMetric{flex-direction:column;gap:2px;min-width:0;display:flex}._367UGW_shMetricValue{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:13px;font-weight:600;line-height:1.25}._367UGW_shMetricLabel{color:var(--dsw-alias-label-tertiary);font-size:11px}._367UGW_shMetric[data-tone=warn] ._367UGW_shMetricValue{color:var(--cm-warn)}._367UGW_shMetric[data-tone=ok] ._367UGW_shMetricValue{color:var(--cm-ok)}._367UGW_shSeverities{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_shSeverity{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-secondary);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:2px 8px;font-size:11px;line-height:1.5;display:inline-flex}._367UGW_shSeverityCount{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}._367UGW_shSeverity[data-severity=blocksStartup],._367UGW_shSeverity[data-severity=unloadable]{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent)}._367UGW_shSeverity[data-severity=nextRequestFails],._367UGW_shSeverity[data-severity=invisible]{border-color:color-mix(in srgb, var(--cm-warn) 45%, transparent)}._367UGW_shNotes{border-top:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 60%, transparent);flex-direction:column;gap:4px;padding-top:8px;display:flex}._367UGW_shSectionHead{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_shSectionHead ._367UGW_groupLabel{margin-bottom:0}._367UGW_shSectionTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600;line-height:1.25}._367UGW_snapshotList._367UGW_shScroll{background:var(--dsw-alias-bg-base);padding:8px}._367UGW_shRow{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-left-width:2px;border-radius:8px;flex-direction:column;gap:4px;padding:8px 10px;display:flex}._367UGW_shRow[data-severity=blocksStartup],._367UGW_shRow[data-severity=unloadable]{border-left-color:var(--cm-error)}._367UGW_shRow[data-severity=nextRequestFails],._367UGW_shRow[data-severity=invisible]{border-left-color:var(--cm-warn)}._367UGW_shRow[data-severity=ok]{border-left-color:var(--cm-ok)}._367UGW_shRowTop{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_shRowId{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary);flex:auto;font-size:12px;font-weight:600;overflow:hidden}._367UGW_shRowActions{flex:none;align-items:center;gap:6px;margin-left:auto;display:flex}._367UGW_shRowMeta{color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;align-items:center;gap:6px;font-size:11px;line-height:1.5;display:flex}._367UGW_shIssue{background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 12%, transparent);color:var(--dsw-alias-label-secondary);border-radius:4px;align-items:center;padding:2px 6px;display:inline-flex}._367UGW_shRowFacts{white-space:nowrap;font-variant-numeric:tabular-nums;flex:none;margin-left:auto}._367UGW_shMetaDot{color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_shLines{flex-direction:column;gap:4px;display:flex}._367UGW_shPanel{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);border-radius:8px;margin:0 0 10px;padding:10px 12px}._367UGW_shPanelHead{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;display:flex}._367UGW_shPanelTitle{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary);flex:auto;font-size:12px;font-weight:600;overflow:hidden}._367UGW_shCommands{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:8px;margin:0 0 10px;padding:0;list-style:none;overflow:hidden}._367UGW_shCommand{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 50%, transparent);align-items:center;gap:8px;padding:8px 10px;display:flex}._367UGW_shCommand:last-child{border-bottom:none}._367UGW_shCommand code{overflow-wrap:anywhere;min-width:0;color:var(--dsw-alias-label-secondary);flex:auto;font-size:11px}";
14698
+ const css = "._367UGW_section{height:100%;min-height:0;font-family:var(--dsw-font-family);font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);flex-direction:column;line-height:1.5;display:flex;position:relative;overflow:hidden}body{--cm-disk-card-h:420px;--cm-text-1:var(--dsw-alias-label-primary);--cm-text-2:var(--dsw-alias-label-secondary);--cm-text-3:var(--dsw-alias-label-tertiary);--cm-text-on-accent:var(--dsw-alias-label-primary-foreground);--cm-surface-1:var(--dsw-alias-bg-layer-1);--cm-surface-2:var(--dsw-alias-bg-layer-2);--cm-surface-hover:var(--dsw-alias-interactive-bg-hover);--cm-line-1:var(--dsw-alias-border-l1);--cm-line-2:var(--dsw-alias-border-l2);--cm-input-bg:var(--dsw-specific-input-major);--cm-chat-bubble:var(--dsw-specific-bubble,color-mix(in srgb, var(--cm-text-1) 12%, transparent));--cm-accent:var(--dsw-alias-state-business-primary);--cm-accent-fill:var(--dsw-alias-button-info-fill);--cm-accent-hover:var(--dsw-alias-button-info-hover);--cm-ok:var(--dsw-alias-state-success-primary);--cm-info:var(--cm-accent);--cm-warn:var(--dsw-alias-state-warn-primary);--cm-error:var(--dsw-alias-state-error-primary);--cm-idle:var(--dsw-alias-state-idle-primary,var(--dsw-alias-label-tertiary));--cm-brand:var(--dsw-alias-brand-primary,var(--cm-accent));--cm-warn-label:var(--dsw-alias-state-warn-label,var(--cm-warn));--cm-fs-meta:var(--dsw-font-xxxs-11-font-size,11px);--cm-fs-table:var(--dsw-font-xxs-12-font-size,12px);--cm-fs-base:12.5px;--cm-fs-title:var(--dsw-font-xs-13-font-size,13px);--cm-sp-1:2px;--cm-sp-2:4px;--cm-sp-3:6px;--cm-sp-4:8px;--cm-sp-5:10px;--cm-sp-6:12px;--cm-sp-7:14px;--cm-sp-8:16px;--cm-sp-9:24px;--cm-r-1:var(--dsw-radius-xs,4px);--cm-r-2:var(--dsw-radius-sm,8px);--cm-r-3:var(--dsw-radius-md,12px);--cm-r-surface:var(--dsw-radius-lg,16px);--cm-r-pill:999px;--cm-h-sm:24px;--cm-h-md:28px;--cm-h-lg:32px;--cm-menu-surface:var(--dsw-menu-surface-fill,var(--dsw-alias-bg-layer-2));--cm-menu-backdrop:var(--dsw-menu-backdrop-filter,none);--cm-menu-icon:var(--dsw-alias-menu-icon,var(--dsw-alias-label-secondary));--cm-tooltip-bg:var(--dsw-alias-tooltip-bg,var(--dsw-alias-bg-layer-2));--cm-tooltip-fg:var(--dsw-static-neutral-bluish-00,var(--dsw-alias-label-primary));--cm-toast-bg:var(--dsw-alias-toast-bg,var(--dsw-alias-bg-layer-2));--cm-toast-fg:var(--dsw-alias-toast-label,var(--dsw-alias-label-primary));--cm-mask:var(--dsw-alias-bg-mask-1,color-mix(in srgb, var(--dsw-alias-bg-base) 55%, transparent));--cm-mask-blur:var(--dsw-mask-blur,none);--cm-skeleton:var(--dsw-alias-bg-skeleton,color-mix(in srgb, var(--dsw-alias-label-tertiary) 14%, transparent));--cm-hover:var(--dsw-alias-interactive-bg-hover);--cm-active:var(--dsw-alias-interactive-bg-active,var(--dsw-alias-interactive-bg-hover));--cm-hover-danger:var(--dsw-alias-interactive-bg-hover-danger,color-mix(in srgb, var(--cm-error) 12%, transparent));--cm-ghost-active-fill:var(--dsw-alias-button-ghost-active-fill,color-mix(in srgb, var(--cm-accent) 16%, transparent));--cm-ghost-active-border:var(--dsw-alias-button-ghost-active-border,color-mix(in srgb, var(--cm-accent) 45%, transparent));--cm-primary-fill:var(--dsw-alias-button-primary-fill,var(--cm-accent-fill));--cm-primary-hover:var(--dsw-alias-button-primary-hover,var(--cm-accent-hover));--cm-shadow-1:var(--dsw-elevation-soft,0 10px 26px color-mix(in srgb, var(--dsw-alias-bg-base) 45%, transparent));--cm-shadow-2:var(--dsw-elevation-prominent,0 12px 32px color-mix(in srgb, var(--dsw-alias-bg-base) 40%, transparent));--cm-focus-width:var(--dsw-focus-ring-width,2px);--cm-focus-color:var(--dsw-focus-ring-color,var(--cm-accent));--cm-z-raise:1;--cm-z-sticky:2;--cm-z-task:90;--cm-z-mask:100;--cm-z-modal:101;--cm-z-pop:110;--cm-z-toast:120;--cm-motion-fast:.12s;--cm-motion-base:.18s;--cm-motion-slow:.3s;--cm-motion-ease-out:cubic-bezier(.16, 1, .3, 1);--cm-motion-ease-in-out:cubic-bezier(.4, 0, .6, 1)}._367UGW_section :is(button,a,input,select,textarea,[role=tab]){transition-property:background-color,border-color,color;transition-duration:var(--cm-motion-fast);transition-timing-function:ease}._367UGW_section :is(button,a,input,select,textarea,[role=tab]):focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:2px}._367UGW_mono{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_section svg{color:inherit;flex:none}._367UGW_shellNav{flex:none;align-items:center;gap:8px;padding:8px;display:flex}._367UGW_navStrip{border-radius:var(--cm-r-3);background:var(--cm-hover);border:none;flex:auto;align-items:center;gap:2px;min-width:0;padding:2px;display:flex;overflow:hidden}._367UGW_navTab,._367UGW_navMore{border-radius:var(--cm-r-2);height:24px;font:inherit;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;flex:none;align-items:center;gap:4px;padding:0 10px;font-weight:500;display:inline-flex;position:relative}._367UGW_navTab:hover,._367UGW_navMore:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}._367UGW_navTab:focus-visible,._367UGW_navMore:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px;border-radius:var(--cm-r-2)}._367UGW_navTab[data-active],._367UGW_navMore[data-active]{background:var(--cm-ghost-active-fill);box-shadow:inset 0 0 0 1px var(--cm-ghost-active-border);color:var(--dsw-alias-label-primary);font-weight:600}._367UGW_navDot{background:var(--cm-error);border-radius:50%;flex:none;width:6px;height:6px}._367UGW_navMoreRoot{flex:none}._367UGW_navMeasure{visibility:hidden;pointer-events:none;align-items:center;gap:2px;padding:2px;display:flex;position:absolute;top:0;left:-9999px}._367UGW_navActions{flex:none;align-items:center;gap:4px;margin-left:4px;display:flex}._367UGW_navActions ._367UGW_ghostButton[data-active]{border-color:color-mix(in srgb, var(--cm-accent) 55%, transparent);color:var(--cm-accent)}._367UGW_iconBtn{border-radius:var(--cm-r-2);width:28px;height:28px;font:inherit;font-size:var(--cm-fs-title);color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-self:center;align-items:center;padding:0;line-height:1.25;display:inline-flex}._367UGW_iconBtn:hover{background:var(--cm-hover);color:var(--dsw-alias-label-primary)}._367UGW_iconBtn:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_iconBtn:disabled{opacity:.4;cursor:default}._367UGW_iconBtn[data-size=sm]{border-radius:var(--cm-r-1);width:18px;height:18px}._367UGW_iconBtn[data-active]{background:var(--cm-ghost-active-fill);box-shadow:inset 0 0 0 1px var(--cm-ghost-active-border);color:var(--cm-accent)}._367UGW_iconBtn[data-danger]{color:var(--cm-error)}._367UGW_iconBtn[data-danger]:hover{background:color-mix(in srgb, var(--cm-error) 12%, transparent);border-color:var(--cm-error);color:var(--cm-error)}._367UGW_shellMain{overscroll-behavior:contain;flex-direction:column;flex:auto;min-height:0;display:flex;overflow-y:auto}._367UGW_pagePad{min-height:0;animation:_367UGW_pageEnter var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;flex:auto;padding:12px 16px 16px;display:flex}@keyframes _367UGW_pageEnter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}._367UGW_snapshotList>*,._367UGW_dataTable tbody tr{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out) both}._367UGW_snapshotList>:nth-child(2),._367UGW_dataTable tbody tr:nth-child(2){animation-delay:24ms}._367UGW_snapshotList>:nth-child(3),._367UGW_dataTable tbody tr:nth-child(3){animation-delay:48ms}._367UGW_snapshotList>:nth-child(4),._367UGW_dataTable tbody tr:nth-child(4){animation-delay:72ms}._367UGW_snapshotList>:nth-child(n+5),._367UGW_dataTable tbody tr:nth-child(n+5){animation-delay:96ms}@keyframes _367UGW_itemEnter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}._367UGW_viewEnter{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;flex:auto;gap:10px;min-height:0;display:flex}._367UGW_collapse{visibility:hidden;transition:grid-template-rows var(--cm-motion-base) var(--cm-motion-ease-out), visibility 0s linear var(--cm-motion-base);grid-template-rows:0fr;display:grid}._367UGW_collapse[data-open]{visibility:visible;transition:grid-template-rows var(--cm-motion-base) var(--cm-motion-ease-out), visibility 0s;grid-template-rows:1fr}._367UGW_collapseInner{min-height:0;overflow:hidden}._367UGW_shellContent{flex-direction:column;flex:auto;min-height:0;display:flex;position:relative}._367UGW_taskPanel{z-index:var(--cm-z-task);background:var(--dsw-alias-bg-layer-1);min-height:0;animation:_367UGW_taskPanelIn var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;display:flex;position:absolute;inset:0}@keyframes _367UGW_taskPanelIn{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}._367UGW_taskHead{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:8px;height:44px;padding:0 12px;display:flex}._367UGW_taskTitle{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:700;overflow:hidden}._367UGW_taskBody{overscroll-behavior:contain;flex:auto;min-height:0;padding:12px 16px 16px;overflow-y:auto}@media (prefers-reduced-motion:reduce){._367UGW_taskPanel{animation:none}}._367UGW_statusBar{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);height:28px;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap;flex:none;align-items:center;gap:10px;margin:0 8px 8px;padding:0 10px;display:flex;overflow:hidden}._367UGW_bannerSlot{padding:8px 12px 0}._367UGW_syncChannelBody{margin-top:10px}._367UGW_syncChannelBody ._367UGW_collapseInner{flex-direction:column;gap:10px;display:flex}._367UGW_statusTask{color:var(--dsw-alias-label-secondary);font-weight:600}._367UGW_statusProgress{background:color-mix(in srgb, var(--cm-accent) 20%, transparent);border-radius:999px;flex:none;width:60px;height:4px;display:inline-block;position:relative;overflow:hidden}._367UGW_statusProgress:after{content:\"\";background:var(--cm-accent);width:40%;animation:_367UGW_statusIndeterminate 1.2s var(--cm-motion-ease-in-out) infinite;border-radius:999px;position:absolute;inset:0 auto 0 0}@keyframes _367UGW_statusIndeterminate{0%{transform:translate(-100%)}to{transform:translate(250%)}}._367UGW_statusDot{width:10px;height:10px;color:var(--cm-idle);transition:color var(--cm-motion-fast) ease;border-radius:50%;flex:none;display:inline-block}._367UGW_statusDot[data-kind=ok]{color:var(--cm-ok)}._367UGW_statusDot[data-kind=info]{color:var(--cm-accent)}._367UGW_statusDot[data-kind=warn]{color:var(--cm-warn)}._367UGW_statusDot[data-kind=error]{color:var(--cm-error)}._367UGW_statusDot[data-pulse]{animation:1.2s ease-in-out infinite _367UGW_statusPulse}._367UGW_statusDot:after{content:\"\";background:currentColor;border-radius:50%;width:60%;height:60%;margin:20%;display:block}@keyframes _367UGW_statusPulse{0%,to{opacity:1}50%{opacity:.35}}._367UGW_statusText{text-overflow:ellipsis;min-width:0;overflow:hidden}._367UGW_statusSpacer{flex:auto}._367UGW_statusMeta{color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_primaryButton,._367UGW_ghostButton,._367UGW_dangerButton{border-radius:var(--cm-r-2);height:28px;font:inherit;font-size:var(--cm-fs-table);white-space:nowrap;cursor:pointer;user-select:none;border:.5px solid #0000;justify-content:center;align-items:center;gap:4px;padding:0 10px;font-weight:500;line-height:1.25;display:inline-flex}._367UGW_primaryButton{background:var(--cm-primary-fill);color:var(--cm-text-on-accent)}._367UGW_primaryButton:hover:not(:disabled){background:var(--cm-primary-hover)}._367UGW_ghostButton{border-color:var(--dsw-alias-border-l3);color:var(--dsw-alias-label-primary);background:0 0}._367UGW_ghostButton:hover:not(:disabled){background:var(--cm-hover)}._367UGW_ghostButton:active:not(:disabled){background:var(--cm-active)}._367UGW_dangerButton{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent);color:var(--cm-error);background:0 0}._367UGW_dangerButton:hover:not(:disabled){background:var(--cm-hover-danger);border-color:var(--cm-error)}._367UGW_primaryButton:focus-visible,._367UGW_ghostButton:focus-visible,._367UGW_dangerButton:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_primaryButton:disabled,._367UGW_ghostButton:disabled,._367UGW_dangerButton:disabled{opacity:.4;cursor:default}._367UGW_primaryButton[data-size=sm],._367UGW_ghostButton[data-size=sm],._367UGW_dangerButton[data-size=sm]{height:24px;font-size:var(--cm-fs-meta);border-radius:var(--cm-r-2);padding:0 8px}._367UGW_input{border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--cm-r-2);background:var(--dsw-specific-input-major);height:28px;font:inherit;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);box-sizing:border-box;padding:0 8px}._367UGW_field>._367UGW_input,._367UGW_field>._367UGW_selectRoot{width:100%;position:relative}._367UGW_input::placeholder{color:var(--dsw-alias-label-dimmed)}._367UGW_input:hover{border-color:color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2))}._367UGW_input:focus{border-color:var(--cm-accent);outline:none}._367UGW_input:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}._367UGW_input[type=password]{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table)}._367UGW_selectRoot{vertical-align:middle;min-width:0;max-width:100%;font-size:var(--cm-fs-base);display:inline-block;position:relative}._367UGW_selectTrigger{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l4);border-radius:var(--cm-r-2);background:var(--dsw-specific-input-major);width:100%;height:28px;font:inherit;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;transition:border-color var(--cm-motion-fast) ease, box-shadow var(--cm-motion-fast) ease;align-items:center;gap:6px;padding:0 8px;display:flex}._367UGW_selectTrigger:hover{border-color:color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2))}._367UGW_selectTrigger:focus-visible,._367UGW_selectRoot[data-open] ._367UGW_selectTrigger{border-color:var(--cm-accent);outline:none}._367UGW_selectTrigger:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}._367UGW_selectLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._367UGW_selectChevron{color:var(--dsw-alias-label-secondary);transition:transform var(--cm-motion-fast) var(--cm-motion-ease-out);flex:none}._367UGW_selectRoot[data-open] ._367UGW_selectChevron{transform:rotate(180deg)}._367UGW_selectMenu{z-index:var(--cm-z-pop);box-sizing:border-box;overscroll-behavior:contain;border-radius:var(--cm-r-surface);background:var(--cm-menu-surface);max-width:260px;max-height:220px;backdrop-filter:var(--cm-menu-backdrop);box-shadow:var(--cm-shadow-2);transform-origin:top;animation:_367UGW_selectMenuIn var(--cm-motion-fast) var(--cm-motion-ease-out);border:0;padding:4px;position:absolute;overflow-y:auto}._367UGW_selectRoot[data-align=end] ._367UGW_selectMenu{left:auto;right:0}._367UGW_selectMenuPortal{pointer-events:auto;visibility:hidden}._367UGW_selectMenuPortal[data-ready]{visibility:visible}@keyframes _367UGW_selectMenuIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}._367UGW_selectOption{border-radius:var(--cm-r-3);font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}._367UGW_selectOption[data-active]{background:var(--cm-hover)}._367UGW_selectOption[aria-selected=true],._367UGW_selectOption[aria-checked=true]{color:var(--cm-accent);background:var(--cm-ghost-active-fill);box-shadow:inset 2px 0 0 var(--cm-accent);font-weight:600}._367UGW_selectOption[data-disabled]{opacity:.4;cursor:default}._367UGW_selectOptionLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._367UGW_libraryFilters{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex:none;align-items:center;gap:2px;margin-top:8px;padding:2px;display:flex;overflow:hidden}._367UGW_libraryFilter{border-radius:var(--cm-r-2);height:24px;font:inherit;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;flex:none;align-items:center;gap:4px;padding:0 8px;display:inline-flex}._367UGW_libraryFilter:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_libraryFilter[data-active]{color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 16%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--cm-accent) 45%, transparent);font-weight:600}._367UGW_libraryFilterCount{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_libraryFilter[data-active] ._367UGW_libraryFilterCount{color:inherit}._367UGW_librarySearch{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-2);background:var(--dsw-specific-input-major);width:100%;height:28px;font:inherit;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);flex:none;margin-top:8px;padding:0 8px}._367UGW_librarySearch:focus-visible{border-color:var(--cm-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);outline:none}._367UGW_libraryFooter{border-top:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;gap:8px;margin-top:8px;padding-top:8px;display:flex}._367UGW_libraryCount{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary)}._367UGW_artifactList{overscroll-behavior:contain;flex:auto;min-height:0;margin:0;padding:0;list-style:none;overflow-y:auto}._367UGW_libraryListState{flex-direction:column;flex:auto;justify-content:center;min-height:0;display:flex}._367UGW_artifactRow{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 60%, transparent)}._367UGW_artifactRow:last-child{border-bottom:none}._367UGW_artifactRow[data-expanded]{background:color-mix(in srgb, var(--cm-accent) 5%, transparent)}._367UGW_artifactRowHead{box-sizing:border-box;cursor:pointer;align-items:center;gap:8px;min-height:52px;padding:8px 10px;display:flex}._367UGW_artifactRowHead:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_artifactExpand{border-radius:var(--cm-r-1);width:20px;height:20px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}._367UGW_artifactExpand:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_artifactMain{flex:auto;min-width:0}._367UGW_artifactTitle{align-items:center;gap:6px;min-width:0;display:flex}._367UGW_artifactName{font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}._367UGW_artifactMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;overflow:hidden}._367UGW_artifactBadges,._367UGW_artifactActions{flex:none;align-items:center;gap:4px;display:flex}._367UGW_artifactDetailWrap{transition:grid-template-rows var(--cm-motion-base) var(--cm-motion-ease-out);grid-template-rows:0fr;display:grid}._367UGW_artifactRow[data-expanded] ._367UGW_artifactDetailWrap{grid-template-rows:1fr}._367UGW_artifactDetailInner{min-height:0;transition:padding var(--cm-motion-base) var(--cm-motion-ease-out);padding:0 10px 0 38px;overflow:hidden}._367UGW_artifactRow[data-expanded] ._367UGW_artifactDetailInner{padding:2px 10px 10px 38px}._367UGW_artifactDetailInner>*{opacity:0;transition:opacity var(--cm-motion-fast) var(--cm-motion-ease-out)}._367UGW_artifactRow[data-expanded] ._367UGW_artifactDetailInner>*{opacity:1;transition-delay:60ms}._367UGW_artifactRow:not([data-expanded]) ._367UGW_artifactDetailInner>*{transition-delay:0s}._367UGW_paletteInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-2);background:var(--dsw-specific-input-major);width:100%;height:32px;font:inherit;font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);padding:0 10px}._367UGW_paletteInput:focus-visible{border-color:var(--cm-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);outline:none}._367UGW_paletteList{overscroll-behavior:contain;max-height:280px;margin-top:8px;overflow-y:auto}._367UGW_paletteGroup{font-size:var(--cm-fs-meta);letter-spacing:.02em;color:var(--dsw-alias-label-tertiary);user-select:none;padding:8px 8px 4px;font-weight:500}._367UGW_paletteGroup:not([data-first]){border-top:1px solid var(--dsw-alias-border-l1);margin-top:4px}._367UGW_paletteItem{border-radius:var(--cm-r-2);font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}._367UGW_paletteItem[data-active]{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_paletteItem[data-disabled]{opacity:.45;cursor:default}._367UGW_paletteItemLabel{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._367UGW_paletteItemGroup{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_paletteEmpty{font-size:var(--cm-fs-base);color:var(--dsw-alias-label-tertiary);padding:10px 8px}._367UGW_paletteHint{border-top:1px solid var(--dsw-alias-border-l1);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin-top:8px;padding-top:6px}._367UGW_checkboxRow,._367UGW_radioLabel{cursor:pointer;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);align-items:flex-start;gap:6px;display:flex}._367UGW_checkboxRow input,._367UGW_radioLabel input{width:16px;height:16px;accent-color:var(--cm-brand);cursor:pointer;flex:none;margin:2px 0 0}._367UGW_checkboxRow input:focus-visible,._367UGW_radioLabel input:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:2px}._367UGW_badge{border-radius:var(--cm-r-pill);height:19px;font-size:var(--cm-fs-meta);white-space:nowrap;color:var(--dsw-alias-label-tertiary);border:none;align-items:center;gap:4px;padding:0 8px;font-weight:500;line-height:1.25;display:inline-flex}._367UGW_badge[data-kind=ok]{background:color-mix(in srgb, var(--cm-ok) 10%, transparent);color:var(--cm-ok)}._367UGW_badge[data-kind=info]{background:color-mix(in srgb, var(--cm-accent) 10%, transparent);color:var(--cm-accent)}._367UGW_badge[data-kind=warn]{background:color-mix(in srgb, var(--cm-warn) 12%, transparent);color:var(--cm-warn)}._367UGW_badge[data-kind=error]{background:color-mix(in srgb, var(--cm-error) 10%, transparent);color:var(--cm-error)}._367UGW_badgeHost{align-items:center;display:inline-flex}._367UGW_banner{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);border-radius:var(--cm-r-3);border:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);font-size:var(--cm-fs-base);box-sizing:border-box;flex-wrap:wrap;align-items:center;gap:6px 10px;width:100%;margin:0 0 10px;padding:8px 12px;display:flex}._367UGW_banner[data-kind=ok]{border-color:color-mix(in srgb, var(--cm-ok) 35%, transparent);background:color-mix(in srgb, var(--cm-ok) 10%, transparent)}._367UGW_banner[data-kind=info]{border-color:color-mix(in srgb, var(--cm-accent) 30%, transparent);background:color-mix(in srgb, var(--cm-accent) 10%, transparent)}._367UGW_banner[data-kind=warn]{border-color:color-mix(in srgb, var(--cm-warn) 40%, transparent);background:color-mix(in srgb, var(--cm-warn) 12%, transparent)}._367UGW_banner[data-kind=error]{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent);background:color-mix(in srgb, var(--cm-error) 10%, transparent)}._367UGW_spinnerWrap{vertical-align:middle;align-items:center;gap:6px;display:inline-flex}._367UGW_spinner{vertical-align:middle;transform-origin:50%;flex:none;width:13px;height:13px;animation:.7s linear infinite _367UGW_spin;display:inline-block}._367UGW_spinnerTrack{fill:none;stroke:color-mix(in srgb, currentColor 30%, transparent);stroke-width:3px}._367UGW_spinnerArc{fill:none;stroke:currentColor;stroke-width:3px;stroke-linecap:round}@keyframes _367UGW_spin{to{transform:rotate(360deg)}}._367UGW_spinnerLabel{font-size:var(--cm-fs-table);color:inherit;opacity:.85}._367UGW_skeletonRoot{flex-direction:column;gap:8px;width:100%;margin-top:8px;display:flex}._367UGW_skeletonBars,._367UGW_skeletonCards{flex-direction:column;gap:8px;display:flex}._367UGW_skeletonBar{border-radius:var(--cm-r-1);background-color:var(--cm-skeleton);background-image:linear-gradient(90deg, transparent, color-mix(in srgb, var(--dsw-alias-label-tertiary) 26%, transparent), transparent);animation:_367UGW_skeletonShimmer 1.3s var(--cm-motion-ease-in-out) infinite;background-position:-160px 0;background-repeat:no-repeat;background-size:160px 100%;display:block}@keyframes _367UGW_skeletonShimmer{to{background-position:calc(100% + 160px) 0}}._367UGW_skeletonTitle{border-radius:var(--cm-r-2);width:42%;height:13px}._367UGW_skeletonLine{height:11px}._367UGW_skeletonBlock{border-radius:var(--cm-r-3);height:46px}._367UGW_skeletonRow{border-radius:var(--cm-r-2);height:30px}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4n+2){width:92%}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4n+3){width:78%}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4n){width:64%}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(2){animation-delay:60ms}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(3){animation-delay:.12s}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(4){animation-delay:.18s}._367UGW_skeletonBars>._367UGW_skeletonBar:nth-child(n+5){animation-delay:.24s}._367UGW_skeletonCard{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex-direction:column;gap:8px;padding:12px;display:flex}._367UGW_skeletonCard>._367UGW_skeletonBar:nth-child(2){width:84%}._367UGW_skeletonCard>._367UGW_skeletonBar:nth-child(3){width:56%}._367UGW_skeletonTable{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);overflow:hidden}._367UGW_skeletonTableRow{border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:10px;padding:8px 10px;display:flex}._367UGW_skeletonTableRow:last-child{border-bottom:none}._367UGW_skeletonTableCell{flex:1 1 0;height:11px}._367UGW_skeletonTableCell:first-child{flex:0 0 40%}._367UGW_skeletonTableCell:last-child{flex:0 0 20%}._367UGW_skeletonCaption{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_card{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin:0 0 10px;padding:12px}._367UGW_groupLabel{font-size:var(--cm-fs-meta);letter-spacing:.02em;color:var(--dsw-alias-label-tertiary);margin-bottom:8px;font-weight:700;display:block}._367UGW_groupHeader{align-items:baseline;gap:8px;margin-bottom:10px;display:flex}._367UGW_groupHeader ._367UGW_groupLabel{white-space:nowrap;flex:none;margin-bottom:0}._367UGW_groupNote{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_groupItems{flex-direction:column;gap:6px;display:flex}._367UGW_sectionOptionRow{flex-direction:column;gap:4px;display:flex}._367UGW_field{flex-direction:column;gap:4px;margin:0 0 10px;display:flex}._367UGW_fieldLabel{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);font-weight:600}._367UGW_hint{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);line-height:1.5}._367UGW_formError{font-size:var(--cm-fs-meta);color:var(--cm-error)}._367UGW_infoHint{vertical-align:middle;align-items:center;display:inline-flex}._367UGW_infoHintBtn{border-radius:var(--cm-r-1);width:18px;height:18px;font:inherit;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;line-height:1.25;display:inline-flex}._367UGW_infoHintBtn:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._367UGW_infoHintBtn[data-open]:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_infoHintBtn[data-open]{color:var(--dsw-alias-label-primary)}._367UGW_infoHintBtn[data-pinned]{background:color-mix(in srgb, var(--cm-accent) 14%, transparent);color:var(--cm-accent)}._367UGW_infoHintBubble{z-index:var(--cm-z-pop);box-sizing:border-box;border-radius:var(--cm-r-2);background:var(--cm-tooltip-bg);max-width:min(260px,100vw - 24px);max-height:min(480px,100vh - 16px);box-shadow:var(--cm-shadow-1);color:var(--cm-tooltip-fg);font-size:var(--cm-fs-table);white-space:pre-wrap;overflow-wrap:anywhere;pointer-events:none;visibility:hidden;border:0;padding:8px 10px;line-height:1.5;position:fixed;overflow-y:auto}._367UGW_infoHintBubble[data-ready]{visibility:visible;animation:_367UGW_infoHintIn var(--cm-motion-fast) var(--cm-motion-ease-out);transform-origin:top}._367UGW_infoHintBubble[data-ready][data-side=top]{transform-origin:bottom}@keyframes _367UGW_infoHintIn{0%{opacity:0}to{opacity:1}}._367UGW_controlRow{align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_sectionTitleBlock{min-width:0;margin:0 0 10px}._367UGW_sectionTitleRow{align-items:center;gap:8px;min-width:0;display:flex}._367UGW_sectionTitle{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);margin:0;font-weight:700;line-height:1.5}._367UGW_sectionSubtitle{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin:1px 0 0}._367UGW_empty{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);border:1px dashed var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);text-align:center;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-tertiary);box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:100%;padding:24px 16px;display:flex}._367UGW_emptySteps{margin:2px 0 10px}._367UGW_tableWrap{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin-bottom:10px;overflow:hidden}._367UGW_tableFixed th,._367UGW_tableFixed td{padding-left:12px;padding-right:12px}._367UGW_tableScroll{max-height:420px;overflow:auto}._367UGW_dataTable{border-collapse:collapse;width:100%;font-size:var(--cm-fs-table)}._367UGW_dataTable th,._367UGW_dataTable td{box-sizing:border-box}._367UGW_tableFixed{table-layout:fixed}._367UGW_tableFixed td,._367UGW_tableFixed th{text-overflow:ellipsis;overflow:hidden}._367UGW_tableCompact th,._367UGW_tableCompact td{padding-left:8px;padding-right:8px}._367UGW_dataTable td._367UGW_dim{white-space:nowrap}._367UGW_dataTable th{z-index:var(--cm-z-raise);text-align:left;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border-bottom:.5px solid var(--dsw-alias-border-l2);white-space:nowrap;padding:6px 10px;font-weight:600;position:sticky;top:0}._367UGW_dataTable td{border-bottom:.5px solid var(--dsw-alias-border-l2);vertical-align:middle;color:var(--dsw-alias-label-primary);padding:6px 10px}._367UGW_dataTable tbody tr:last-child td{border-bottom:none}._367UGW_dataTable tbody tr{transition:background-color .1s ease-out}._367UGW_dataTable tbody tr:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_dataTable tbody tr[data-selected]{background:color-mix(in srgb, var(--cm-accent) 9%, transparent)}._367UGW_dataTable ._367UGW_num{text-align:right;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table);white-space:nowrap}._367UGW_dataTable ._367UGW_dim{color:var(--dsw-alias-label-secondary)}._367UGW_dataTable ._367UGW_cellActions{text-align:right;white-space:nowrap}._367UGW_dataTable td._367UGW_cellActions{text-overflow:clip;overflow:visible}._367UGW_rowActions{align-items:center;gap:2px;display:inline-flex}._367UGW_cellMain{flex-direction:column;justify-content:center;gap:1px;min-width:0;min-height:30px;display:flex}._367UGW_cellTitle{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}._367UGW_cellMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);align-items:center;gap:6px;min-width:0;display:inline-flex;overflow:hidden}._367UGW_cellMetaNoteText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}._367UGW_actionRow ._367UGW_banner{flex:auto;min-width:0;margin:0}._367UGW_warnText{color:var(--cm-warn)}._367UGW_kvRow{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);align-items:baseline;gap:10px;min-width:0;padding:4px 0;display:flex}._367UGW_kvRow:last-child{border-bottom:none}._367UGW_kvRow+._367UGW_actionRow{margin-top:8px}._367UGW_checkboxRow+._367UGW_actionRow{margin-top:10px}._367UGW_kvKey{width:88px;color:var(--dsw-alias-label-tertiary);font-size:var(--cm-fs-meta);flex:none}._367UGW_kvValue{overflow-wrap:anywhere;flex:auto;min-width:0}._367UGW_kvValue._367UGW_mono{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary)}._367UGW_segGroup,._367UGW_modeTabs{border-radius:var(--cm-r-3);background:var(--cm-hover);border:none;align-items:center;gap:2px;margin:0 0 10px;padding:2px;display:inline-flex}._367UGW_segItem,._367UGW_modeTab{border-radius:var(--cm-r-2);height:24px;font:inherit;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;align-items:center;gap:4px;padding:0 10px;font-weight:500;display:inline-flex}._367UGW_segItem:hover,._367UGW_modeTab:hover{color:var(--dsw-alias-label-primary)}._367UGW_segItem:focus-visible,._367UGW_modeTab:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_segItem[data-active],._367UGW_modeTab[data-active]{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);box-shadow:var(--cm-shadow-1);font-weight:500}._367UGW_modeHint{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin:-4px 0 10px}._367UGW_stepperDot,._367UGW_stepperLabel{transition:background-color var(--cm-motion-fast) ease, border-color var(--cm-motion-fast) ease, color var(--cm-motion-fast) ease}._367UGW_stepper{scrollbar-width:none;align-items:center;padding:2px 0;display:flex;overflow-x:auto}._367UGW_stepper::-webkit-scrollbar{display:none}._367UGW_stepperStep{flex:none;align-items:center;gap:4px;display:inline-flex}._367UGW_stepperDot{border:1.5px solid var(--dsw-alias-border-l2);width:17px;height:17px;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:700;display:inline-flex}._367UGW_stepperDot[data-state=current]{border-color:var(--cm-accent);background:var(--cm-accent);color:var(--dsw-alias-label-primary-foreground)}._367UGW_stepperDot[data-state=done]{background:color-mix(in srgb, var(--cm-ok) 16%, transparent);color:var(--cm-ok);border-color:#0000}._367UGW_stepperLabel{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap}._367UGW_stepperStep[data-state=current] ._367UGW_stepperLabel{color:var(--dsw-alias-label-primary);font-weight:600}._367UGW_stepperStep[data-state=done] ._367UGW_stepperLabel{color:var(--dsw-alias-label-secondary)}._367UGW_stepperConnector{background:var(--dsw-alias-border-l2);flex:none;width:14px;height:1.5px;margin:0 4px}._367UGW_stepperStep[data-state=done] ._367UGW_stepperConnector{background:color-mix(in srgb, var(--cm-ok) 45%, transparent)}._367UGW_progressBlock{margin:0 0 10px}._367UGW_progressTrack{border-radius:var(--cm-r-1);background:color-mix(in srgb, var(--dsw-alias-border-l1) 80%, transparent);height:5px;position:relative;overflow:hidden}._367UGW_progressBar{border-radius:var(--cm-r-1);background:var(--cm-accent);transition:width var(--cm-motion-slow) var(--cm-motion-ease-out);position:absolute;inset:0 auto 0 0}._367UGW_progressBarDone{background:var(--cm-ok)}._367UGW_progressBarFailed{background:var(--cm-error)}._367UGW_progressIndeterminate{border-radius:var(--cm-r-1);background:var(--cm-accent);width:34%;animation:_367UGW_indet 1.15s var(--cm-motion-ease-in-out) infinite;position:absolute;top:0;bottom:0}@keyframes _367UGW_indet{0%{left:-34%}to{left:100%}}._367UGW_progressMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);align-items:center;gap:8px;margin-top:4px;display:flex}._367UGW_progressLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}._367UGW_progressPercent{color:var(--dsw-alias-label-tertiary);flex:none;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_progressBadge{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:4px;display:inline-flex}._367UGW_progressBadgeCount{border-radius:var(--cm-r-3);background:color-mix(in srgb, var(--cm-info) 14%, transparent);color:var(--dsw-alias-label-secondary);padding:0 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_progressBadgeSection{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}._367UGW_progressDetail{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin-top:2px}._367UGW_planScroll,._367UGW_reportScroll,._367UGW_confirmScroll,._367UGW_pullScroll,._367UGW_diffScroll,._367UGW_historyScroll,._367UGW_consultScroll{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);max-height:380px;overflow:auto}._367UGW_consultScroll{padding:0 6px}._367UGW_logScroll{background:var(--dsw-alias-bg-base);max-height:220px;overflow:auto}._367UGW_dialogMask{z-index:var(--cm-z-mask);background:var(--cm-mask);backdrop-filter:var(--cm-mask-blur);animation:_367UGW_maskIn var(--cm-motion-fast) var(--cm-motion-ease-out);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}@keyframes _367UGW_maskIn{0%{opacity:0}to{opacity:1}}._367UGW_dialogContentCenter{z-index:var(--cm-z-modal);animation:_367UGW_dialogIn var(--cm-motion-base) var(--cm-motion-ease-out);position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes _367UGW_dialogIn{0%{opacity:0;transform:translate(-50%,-50%)translateY(4px)}to{opacity:1;transform:translate(-50%,-50%)translateY(0)}}._367UGW_dialogMask[data-state=closed]{animation:_367UGW_maskOut var(--cm-motion-fast) var(--cm-motion-ease-out)}._367UGW_dialogContentCenter[data-state=closed]{animation:_367UGW_dialogOut var(--cm-motion-fast) var(--cm-motion-ease-out)}@keyframes _367UGW_maskOut{to{opacity:0}}@keyframes _367UGW_dialogOut{to{opacity:0;transform:translate(-50%,-50%)scale(.98)}}._367UGW_dialogCard{border-radius:var(--cm-r-surface);background:var(--dsw-alias-bg-layer-2);width:min(640px,100vw - 48px,95%);max-width:calc(100vw - 48px);max-height:min(600px,100vh - 64px,92%);box-shadow:var(--cm-shadow-2);border:0;flex-direction:column;display:flex}._367UGW_dialogHeader{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);padding:12px 16px 0;font-weight:500}._367UGW_dialogHeaderRow{align-items:center;gap:8px;padding:12px 14px 0;display:flex}._367UGW_dialogHeaderRow ._367UGW_dialogHeader{padding:0}._367UGW_dialogClose{margin-left:auto}._367UGW_dialogBody{min-height:0;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-secondary);flex:auto;padding:8px 16px 12px;overflow-y:auto}._367UGW_dialogBodyScroll{max-height:460px;overflow-y:auto}._367UGW_dialogWide{width:min(720px,100vw - 48px,96%);max-height:min(620px,100vh - 64px,92%)}._367UGW_dialogFooter{border-top:.5px solid var(--dsw-alias-border-l2);justify-content:flex-end;gap:8px;margin:0;padding:10px 16px 14px}._367UGW_updateVersionRow{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}._367UGW_updateVersionArrow{color:var(--dsw-alias-label-tertiary)}._367UGW_updateVersionTarget{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);font-weight:600}._367UGW_updateNotesLoading{justify-content:center;padding:24px 0;display:flex}._367UGW_toastViewport{z-index:var(--cm-z-toast);pointer-events:none;flex-direction:column;align-items:flex-end;gap:8px;max-width:calc(100% - 20px);display:flex;position:absolute;bottom:42px;right:10px}._367UGW_toast{pointer-events:auto;border-radius:var(--cm-r-surface);background:var(--cm-toast-bg);width:fit-content;max-width:420px;box-shadow:var(--cm-shadow-2);font-size:var(--cm-fs-title);color:var(--cm-toast-fg);animation:_367UGW_toastIn var(--cm-motion-base) var(--cm-motion-ease-out);border:0;align-items:flex-start;gap:8px;padding:12px 16px;line-height:1.5;display:flex}@keyframes _367UGW_toastIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}._367UGW_toast[data-kind=ok] ._367UGW_toastGlyph{color:var(--cm-ok)}._367UGW_toast[data-kind=info] ._367UGW_toastGlyph{color:var(--cm-accent)}._367UGW_toast[data-kind=warn] ._367UGW_toastGlyph{color:var(--cm-warn-label)}._367UGW_toast[data-kind=error] ._367UGW_toastGlyph{color:var(--cm-error)}._367UGW_toastGlyph{flex:none;margin-top:1px;display:inline-flex}._367UGW_toastText{word-break:break-word;min-width:0}._367UGW_toast>button{flex:none;width:18px;height:18px;margin-left:2px}._367UGW_statusAction{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;min-width:0;padding:0;display:inline-flex}._367UGW_statusAction:hover{color:var(--dsw-alias-label-primary);text-decoration:underline}._367UGW_statusAction:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px;border-radius:var(--cm-r-1)}._367UGW_runsCenter{flex-direction:column;gap:10px;display:flex}._367UGW_runsSummary{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_runsSummaryTitle{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);font-weight:700}._367UGW_runsCardHead{flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px;display:flex}._367UGW_runsCardTitle{font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);font-weight:600}._367UGW_runsWarnNote{border:1px solid color-mix(in srgb, var(--cm-warn) 45%, transparent);border-radius:var(--cm-r-2);background:color-mix(in srgb, var(--cm-warn) 10%, transparent);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);margin:8px 0 0;padding:6px 8px}._367UGW_runsWarnNoteDetail{color:var(--dsw-alias-label-tertiary);margin:4px 0 0}._367UGW_runsCardTime{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap;margin-left:auto}._367UGW_runsCounts{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin:8px 0 0}._367UGW_runsLogTail{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-2);background:var(--dsw-alias-bg-base);max-height:108px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);margin:8px 0 0;padding:6px 8px;line-height:1.5;overflow-y:auto}._367UGW_runsLogLine{white-space:pre-wrap;word-break:break-all}._367UGW_runsCardActions{flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 0;display:flex}._367UGW_runsOption{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);width:100%;font:inherit;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;flex-direction:column;gap:2px;margin:0 0 8px;padding:8px 10px;display:flex}._367UGW_runsOption:hover{border-color:var(--cm-accent)}._367UGW_runsOption:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_runsOption[data-active]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 8%, transparent)}._367UGW_runsOptionTitle{font-size:var(--cm-fs-base);align-items:center;gap:6px;font-weight:600;display:flex}._367UGW_runsOptionDesc{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_runsOptionTag{font-size:var(--cm-fs-meta);background:color-mix(in srgb, var(--cm-accent) 14%, transparent);color:var(--cm-accent);border-radius:999px;padding:0 4px;font-weight:600}._367UGW_actionRow{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_actionRowTop{flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0;display:flex}._367UGW_snapshotPickerHint{margin-top:4px;margin-bottom:10px}._367UGW_headRow{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_headRow ._367UGW_groupLabel{margin-bottom:0}._367UGW_authorRow{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}._367UGW_authorRow ._367UGW_groupLabel{margin-bottom:0}._367UGW_marketFilterGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:8px;display:grid}._367UGW_marketFilterSearch{grid-column:1/-1}._367UGW_marketFilterMeta{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}._367UGW_statStrip{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex-wrap:wrap;flex:none;align-items:stretch;gap:6px 0;min-height:32px;margin-bottom:10px;display:flex}._367UGW_statStrip>:last-child{padding-right:8px}._367UGW_statStrip[data-tone=error]{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent);background:color-mix(in srgb, var(--cm-error) 7%, transparent)}._367UGW_statStrip[data-tone=warn]{border-color:color-mix(in srgb, var(--cm-warn) 40%, transparent);background:color-mix(in srgb, var(--cm-warn) 6%, transparent)}._367UGW_statHealth{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);white-space:nowrap;flex:none;align-items:center;gap:6px;padding:4px 8px;font-weight:600;display:flex}._367UGW_statHealthAction{font:inherit;font-size:var(--cm-fs-table);cursor:pointer;text-align:left;background:0 0;border:none;font-weight:600}._367UGW_statHealthAction:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_statHealthAction:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:-2px;border-radius:var(--cm-r-2)}._367UGW_statSeg{border:none;border-left:1px solid var(--dsw-alias-border-l1);font:inherit;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);white-space:nowrap;cursor:pointer;background:0 0;flex:none;align-items:center;gap:6px;padding:4px 8px;display:flex}._367UGW_statSeg>span:first-child{color:var(--dsw-alias-label-tertiary)}._367UGW_statSeg:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._367UGW_statSeg:hover>span:first-child{color:var(--dsw-alias-label-secondary)}._367UGW_statSeg:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:-2px}._367UGW_statSeg b{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:700}._367UGW_statSegDim{color:var(--dsw-alias-label-tertiary)}._367UGW_toolRow{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}._367UGW_infoValue{flex:auto;align-items:center;gap:8px;min-width:0;display:inline-flex}._367UGW_infoValue ._367UGW_mono{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_copyBtn{border-radius:var(--cm-r-1);width:20px;height:20px;font:inherit;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;line-height:1.25;display:inline-flex}._367UGW_copyBtn:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._367UGW_copyBtn:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_activityRow ._367UGW_copyBtn{opacity:0}._367UGW_activityRow:hover ._367UGW_copyBtn,._367UGW_activityRow ._367UGW_copyBtn:focus-visible{opacity:1}._367UGW_activityCard{flex-direction:column;min-height:0;margin-bottom:0;display:flex}._367UGW_diskUsageCard{height:var(--cm-disk-card-h);min-height:var(--cm-disk-card-h);max-height:var(--cm-disk-card-h)}._367UGW_diskUsageScroll{flex:auto;min-height:0;max-height:none}._367UGW_activityHeader{align-items:center;gap:8px;margin-bottom:8px;display:flex}._367UGW_activityTitle{font-size:var(--cm-fs-meta);letter-spacing:.02em;color:var(--dsw-alias-label-tertiary);flex:auto;font-weight:700}._367UGW_activityRows{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);flex:auto;min-height:0;overflow-y:auto}._367UGW_activityRow{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);grid-template-columns:72px minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:4px 10px;line-height:1.5;display:grid}._367UGW_activityRow:last-child{border-bottom:none}._367UGW_activityTime{color:var(--dsw-alias-label-tertiary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;line-height:1.5;font-size:var(--cm-fs-meta);white-space:nowrap;justify-self:end}._367UGW_activityKind{color:var(--dsw-alias-label-tertiary);line-height:1.5;font-size:var(--cm-fs-meta);white-space:nowrap;flex:none}._367UGW_activitySummary{min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;line-height:1.5;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;display:inline-flex}._367UGW_activitySummaryText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_activityBadge{flex:none;justify-content:flex-end;align-items:center;line-height:1.5;display:inline-flex}._367UGW_activityResultOk{line-height:1.5;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap;align-items:center;gap:4px;display:inline-flex}._367UGW_factGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px 12px;display:grid}._367UGW_factCell{flex-direction:column;gap:2px;min-width:0;display:flex}._367UGW_factLabel{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:nowrap}._367UGW_factValue{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}._367UGW_sectionGrid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:0 24px;display:grid}._367UGW_sectionRow{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);grid-template-columns:minmax(0,1fr) auto 56px;align-items:center;gap:10px;min-width:0;padding:4px 0;display:grid}._367UGW_sectionRow:nth-last-child(-n+2){border-bottom:none}._367UGW_sectionName{min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_sectionCount{color:var(--dsw-alias-label-tertiary);font-size:var(--cm-fs-meta);font-variant-numeric:tabular-nums;white-space:nowrap;justify-self:end}._367UGW_sectionSize{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;justify-self:end}._367UGW_activityEmpty{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-align:center;padding:16px}._367UGW_snapshotList{flex-direction:column;gap:10px;margin-bottom:12px;display:flex}._367UGW_snapshotRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);align-items:center;gap:10px;padding:12px 14px;display:flex}._367UGW_snapshotRow[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 7%, transparent)}._367UGW_snapshotRowHeader{font-size:var(--cm-fs-table);align-items:center;gap:8px;display:flex}._367UGW_snapshotRowMain{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-weight:500;overflow:hidden}._367UGW_snapshotRowText{flex-direction:column;flex:auto;gap:4px;min-width:0;display:flex}._367UGW_snapshotRowName{font-weight:500;font-size:var(--cm-fs-base);word-break:break-all;line-height:1.5}._367UGW_snapshotRowMeta{min-width:0;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);align-items:center;gap:10px;display:flex}._367UGW_snapshotRowBadges{flex:none;align-items:center;gap:6px;display:inline-flex}._367UGW_snapshotRowIssues{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}._367UGW_snapshotRowFacts{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;flex:none}._367UGW_snapshotList._367UGW_reportScroll{background:var(--dsw-alias-bg-layer-2);margin-bottom:0;padding:10px 12px 10px 10px}._367UGW_reasonList{flex-direction:column;flex-basis:100%;gap:4px;min-width:0;display:flex}._367UGW_reasonLine{align-items:baseline;gap:6px;min-width:0;display:flex}._367UGW_reasonLine>span:first-child{overflow-wrap:anywhere;min-width:0}._367UGW_viewBody{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}._367UGW_resultScroll{flex:auto;min-height:0;overflow-y:auto}._367UGW_resultFooter{border-top:1px solid var(--dsw-alias-border-l1);flex:none;align-items:center;margin:10px 0 0;padding-top:10px}._367UGW_fillCard{flex:auto;margin-bottom:0}._367UGW_fillViewport{flex-direction:column;flex:auto;min-height:0;margin-bottom:0;display:flex}._367UGW_fillViewport ._367UGW_tableScroll{flex:auto;max-height:none}._367UGW_compositionViewport{flex:auto;min-height:0;overflow:auto}._367UGW_sparseFill{flex-direction:column;flex:auto;justify-content:flex-start;align-items:flex-start;gap:10px;min-height:280px;display:flex}._367UGW_pickerRoot{flex-direction:column;gap:8px;min-width:0;display:flex;position:relative}._367UGW_pickerOverlay{z-index:var(--cm-z-sticky);animation:_367UGW_maskIn var(--cm-motion-fast) var(--cm-motion-ease-out);border-radius:var(--cm-r-3);background:color-mix(in srgb, var(--dsw-alias-bg-layer-2) 62%, transparent);backdrop-filter:blur(1px);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}._367UGW_pickerToolbar{align-items:center;gap:8px;min-width:0;display:flex}._367UGW_pickerToolbar ._367UGW_input{flex:auto;min-width:0}._367UGW_pickerList{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);max-height:320px;padding:4px 10px;overflow:auto}._367UGW_pickerModalBody{flex-direction:column;gap:8px;height:min(420px,62vh);min-height:0;display:flex}._367UGW_pickerModalBody ._367UGW_pickerRoot{flex:auto;min-height:0}._367UGW_pickerModalBody ._367UGW_pickerList{scrollbar-gutter:stable;flex:auto;min-height:0;max-height:none}._367UGW_pickerGroup+._367UGW_pickerGroup{border-top:.5px solid var(--dsw-alias-border-l2)}._367UGW_pickerUnit{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);align-items:center;min-width:0;padding:2px 0 2px 16px;display:flex}._367UGW_pickerUnitName{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:280px;overflow:hidden}._367UGW_pickerTreeRow{align-items:center;gap:4px;min-width:0;padding:4px 0;display:flex}._367UGW_pickerTreeRow>:last-child{flex:auto;min-width:0}._367UGW_pickerChevronSpacer{flex:none;width:18px;height:18px;display:inline-block}._367UGW_pickerGroupTitle{border-top:1px solid var(--dsw-alias-border-l2);align-items:center;gap:6px;padding:8px 0 4px;display:flex}._367UGW_pickerGroupTitle:first-child{border-top:none;padding-top:0}._367UGW_pickerGroupTitleName{font-size:var(--cm-fs-meta);letter-spacing:.02em;color:var(--dsw-alias-label-secondary);font-weight:600}._367UGW_pickerSubgroup{padding-left:18px}._367UGW_pickerSubgroupName{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}._367UGW_pickerChildren{border-left:1px solid var(--dsw-alias-border-l1);margin-left:8px;padding-left:4px}._367UGW_pickerUnitNested{gap:4px}._367UGW_pickerMore{justify-content:center;padding:4px 0 2px 16px;display:flex}._367UGW_pickerUnitDetail{max-width:220px;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_pickerCount{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap}._367UGW_pickerFooter{border-top:1px solid var(--dsw-alias-border-l1);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);padding-top:6px}._367UGW_optionsRow{align-items:center;gap:16px;display:flex;& ._367UGW_noticeSlot{flex-direction:column;justify-content:center;min-height:40px;display:flex}& ._367UGW_noticeSlot ._367UGW_banner{margin:0}& ._367UGW_noticeLine{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}margin-bottom:4px}._367UGW_groupList{flex-direction:column;gap:8px;margin-bottom:10px;display:flex}._367UGW_groupCard{margin:0}._367UGW_categoryItem{flex-wrap:wrap;align-items:baseline;gap:8px;min-width:0;display:flex}._367UGW_categoryName{color:var(--dsw-alias-label-primary);flex:none;font-weight:500}._367UGW_categoryDesc{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);min-width:0}._367UGW_optionsCard{margin:0 0 10px}._367UGW_secretFields ._367UGW_field{margin-bottom:0}._367UGW_groupHintRow{margin-bottom:10px}._367UGW_secretFields{background:0 0;border:none;border-radius:0;grid-template-columns:1fr 1fr;gap:0 10px;margin:6px 0 10px;padding:0;display:grid}._367UGW_warnList{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);margin:4px 0 0;padding-left:18px}._367UGW_wizardStepperRow{align-items:center;gap:10px;margin-bottom:10px;display:flex}._367UGW_conflictDetail{margin-top:2px}._367UGW_conflictList{flex-direction:column;gap:8px;margin-bottom:10px;display:flex}._367UGW_conflictItem{border:1px solid color-mix(in srgb, var(--cm-warn) 35%, transparent);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);padding:10px 12px}._367UGW_conflictHead{font-size:var(--cm-fs-table);align-items:center;gap:8px;margin-bottom:6px;display:flex}._367UGW_conflictId{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}._367UGW_conflictOptions{flex-wrap:wrap;gap:4px 14px;margin-top:6px;display:flex}._367UGW_conflictChoices{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}._367UGW_choiceCard{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:6px;padding:8px 10px;font-weight:500;transition:border-color .12s ease-out,background-color .12s ease-out;display:flex}._367UGW_choiceCard:hover{border-color:color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2))}._367UGW_choiceCard:focus-within{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px}._367UGW_choiceCard[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 9%, transparent);color:var(--dsw-alias-label-primary)}._367UGW_choiceCard input{width:13px;height:13px;accent-color:var(--cm-accent);flex:none;margin:0}._367UGW_choiceTitle{min-width:0}._367UGW_conflictDetail{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-2);background:var(--dsw-alias-bg-base);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;white-space:normal;padding:8px 10px}._367UGW_conflictPrefix{color:var(--dsw-alias-label-tertiary);margin-bottom:4px}._367UGW_conflictLine{align-items:baseline;gap:8px;padding:4px 0;display:flex}._367UGW_conflictLine+._367UGW_conflictLine{border-top:.5px solid var(--dsw-alias-border-l2)}._367UGW_conflictLineLabel{min-width:56px;color:var(--dsw-alias-label-tertiary);flex:none;font-weight:600}._367UGW_conflictLineValue{overflow-wrap:anywhere;flex:auto;min-width:0}._367UGW_pathMappingList{flex-direction:column;gap:6px;margin-bottom:10px;display:flex}._367UGW_pathRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);flex-direction:column;align-items:stretch;gap:8px;padding:8px 10px;display:flex}._367UGW_pathOld,._367UGW_pathNew{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-2);background:var(--dsw-alias-bg-base);overflow-wrap:anywhere;flex-direction:column;flex:auto;width:100%;min-width:0;padding:4px 8px;display:flex}._367UGW_pathValue{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:2px 0 0}._367UGW_pathIssueKind{flex:none}._367UGW_secretsList{flex-direction:column;display:flex}._367UGW_snapshotPickerRow{flex-wrap:nowrap;align-items:flex-end;gap:8px;margin-top:10px;margin-bottom:10px;display:flex}._367UGW_snapshotPickerRow ._367UGW_field{margin-bottom:0}._367UGW_pickerAction{flex:none;align-items:center;display:inline-flex}._367UGW_logPanel{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);margin-bottom:10px;overflow:hidden}._367UGW_logHeader{border-bottom:1px solid var(--dsw-alias-border-l1);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);align-items:center;gap:8px;padding:6px 10px;font-weight:600;display:flex}._367UGW_logLine{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;padding:1px 10px;line-height:1.5}._367UGW_logCounts{color:var(--dsw-alias-label-tertiary);font-weight:500}._367UGW_logFilterButton{font:inherit;font-size:var(--cm-fs-meta);color:var(--cm-accent);cursor:pointer;background:0 0;border:none;padding:0 4px}._367UGW_logFilterButton[data-active]{color:var(--dsw-alias-label-primary);font-weight:700}._367UGW_logEntry+._367UGW_logEntry{border-top:.5px solid var(--dsw-alias-border-l2)}._367UGW_logLine[data-level=fail]{color:var(--cm-error)}._367UGW_logLine[data-level=warn]{color:var(--cm-warn)}._367UGW_logLine[data-level=ok]{color:var(--cm-ok)}._367UGW_logLine[data-level=skip]{color:var(--dsw-alias-label-tertiary)}._367UGW_logLine[data-level=running]{color:var(--dsw-alias-label-primary)}._367UGW_logDetail{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);white-space:pre-wrap;overflow-wrap:anywhere;padding:0 10px 0 22px;line-height:1.5}._367UGW_logDetail[data-kind=command]{color:var(--dsw-alias-label-secondary)}._367UGW_logEmpty{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-align:center;padding:12px}._367UGW_logJumpButton{font:inherit;font-size:var(--cm-fs-meta);color:var(--cm-accent);cursor:pointer;background:0 0;border:none;margin-left:auto;padding:0 4px}._367UGW_reportView{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin-bottom:10px;overflow:hidden}._367UGW_reportList{flex-direction:column;display:flex}._367UGW_confirmItem{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 50%, transparent);padding:8px 10px}._367UGW_confirmItem:last-child{border-bottom:none}._367UGW_confirmItemHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_confirmItemDesc{min-width:0;font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;flex:200px}._367UGW_confirmItemHead+._367UGW_conflictItem{margin-top:8px}._367UGW_reportBlock{margin-bottom:10px}._367UGW_reportProblemRow{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 50%, transparent);padding:6px 10px}._367UGW_reportProblemRow:last-child{border-bottom:none}._367UGW_reportProblemHead{align-items:center;gap:6px;display:flex}._367UGW_reportProblemText{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);overflow-wrap:anywhere}._367UGW_reportProblemReason{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin-top:2px;line-height:1.5}._367UGW_reportSectionRow{align-items:center;gap:6px;padding:4px 0;display:flex}._367UGW_reportWarningRow{font-size:var(--cm-fs-meta);color:var(--cm-warn);overflow-wrap:anywhere;padding:2px 10px;line-height:1.5}._367UGW_reportDetails{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);margin-top:4px}._367UGW_reportDetails>summary{cursor:pointer;color:var(--dsw-alias-label-secondary);padding:2px 0}._367UGW_reportDetails ._367UGW_reportScroll{margin-top:6px}._367UGW_reportView ._367UGW_reportScroll{background:0 0;border:none;border-radius:0}._367UGW_reportBody{flex-direction:column;gap:2px;padding:8px 12px;display:flex}._367UGW_reportHeadline{font-size:var(--cm-fs-base);color:var(--dsw-alias-label-primary);margin-bottom:2px;font-weight:600}._367UGW_reportText{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:8px 12px}._367UGW_reportFooter{border-top:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);align-items:center;gap:8px;padding:8px 12px;display:flex}._367UGW_errorBanner{border:1px solid color-mix(in srgb, var(--cm-error) 45%, transparent);border-radius:var(--cm-r-3);background:color-mix(in srgb, var(--cm-error) 8%, transparent);font-size:var(--cm-fs-table);align-items:flex-start;gap:8px;margin:0 0 10px;padding:8px 12px;display:flex}._367UGW_errorTitle{color:var(--cm-error);font-weight:600}._367UGW_errorLine{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--dsw-alias-label-secondary);margin:0}._367UGW_errorList{font-size:var(--cm-fs-meta);margin:4px 0 0;padding-left:18px}._367UGW_errorItem{overflow-wrap:anywhere}._367UGW_errorReason{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0;color:var(--dsw-alias-label-tertiary);margin:0}._367UGW_errorFooter{margin-top:6px}._367UGW_errorAction{margin-right:8px}._367UGW_errorActionLabel{color:var(--cm-accent)}._367UGW_inspectGroup{margin-bottom:10px}._367UGW_kindTag{border-radius:var(--cm-r-1);background:var(--dsw-alias-interactive-bg-hover);height:16px;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);white-space:nowrap;align-items:center;padding:0 6px;font-weight:600;display:inline-flex}._367UGW_kindTagOk{background:color-mix(in srgb, var(--cm-ok) 13%, transparent);color:var(--cm-ok)}._367UGW_kindTagInfo{background:color-mix(in srgb, var(--cm-accent) 13%, transparent);color:var(--cm-accent)}._367UGW_kindTagWarn{background:color-mix(in srgb, var(--cm-warn) 13%, transparent);color:var(--cm-warn)}._367UGW_kindTagError{background:color-mix(in srgb, var(--cm-error) 13%, transparent);color:var(--cm-error)}._367UGW_restorePlan{animation:_367UGW_itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);flex-direction:column;gap:10px;display:flex}._367UGW_restorePlanList{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}._367UGW_restorePlanRow,._367UGW_restorePlanRowStatic{border-radius:var(--cm-r-2);align-items:center;gap:8px;width:100%;padding:4px 6px;display:flex}._367UGW_restorePlanRow{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none}._367UGW_restorePlanRow:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_restorePlanRow:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 55%, transparent);outline:none}._367UGW_restorePlanPath{min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}._367UGW_restorePlanStat{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}._367UGW_restorePlanChevron{color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_restorePlanNote{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;padding:0 6px 4px 24px}._367UGW_restorePlanGroupHead{align-items:center;gap:8px;margin:0 0 4px;display:flex}._367UGW_restorePlanGroupHead ._367UGW_groupLabel{margin-bottom:0;display:inline}._367UGW_diffGroupToggle{color:var(--dsw-alias-label-secondary);font-size:var(--cm-fs-meta);cursor:pointer;background:0 0;border:none;padding:0;font-weight:700}._367UGW_diffGroupToggle:hover{color:var(--dsw-alias-label-primary)}._367UGW_diffGroupToggle:focus-visible{border-radius:var(--cm-r-1);box-shadow:0 0 0 2px color-mix(in srgb, var(--cm-accent) 55%, transparent);outline:none}._367UGW_diffStatTotal{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);font-variant-numeric:tabular-nums}._367UGW_diffStatAdd{color:var(--cm-ok)}._367UGW_diffStatDel{color:var(--cm-error)}._367UGW_rollbackTabIcon{flex:none;align-items:center;margin-right:6px;display:inline-flex}._367UGW_diffFileHead{border-bottom:1px solid var(--dsw-alias-border-l1);font-size:var(--cm-fs-table);flex:none;align-items:center;gap:8px;padding:2px 6px;line-height:1.5;display:flex}._367UGW_diffFilePath{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-secondary);flex:auto;overflow:hidden}._367UGW_diffFileStat{font-variant-numeric:tabular-nums;flex:none}._367UGW_diffPane{margin:2px 0 8px}._367UGW_diffPaneFill{flex-direction:column;height:100%;min-height:0;margin:0;display:flex}._367UGW_diffPane ._367UGW_diffScroll{max-height:min(80vh,800px)}._367UGW_dialogCard ._367UGW_diffPane ._367UGW_diffScroll{max-height:380px}._367UGW_diffPaneFill ._367UGW_diffScroll{flex:auto;min-height:0;max-height:calc(100vh - 90px)}._367UGW_diffTable{border-collapse:collapse;table-layout:fixed;width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-table);line-height:1.5}._367UGW_diffNoColW3{width:calc(3ch + 18px)}._367UGW_diffNoColW4{width:calc(4ch + 18px)}._367UGW_diffNoColW5{width:calc(5ch + 18px)}._367UGW_diffNoColW6{width:calc(6ch + 18px)}._367UGW_diffNoHead{border-bottom:1px solid var(--dsw-alias-border-l1);border-right:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);font-size:var(--cm-fs-meta);text-align:left;padding:2px 6px;font-weight:600;line-height:1.5}._367UGW_diffNoHead+._367UGW_diffNoHead{border-left:1px solid var(--dsw-alias-border-l1)}._367UGW_diffHunkRow td{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-tertiary);padding:2px 6px}._367UGW_diffTable tbody td:nth-child(3),._367UGW_diffHunkRow td+td{border-left:1px solid var(--dsw-alias-border-l1)}._367UGW_diffNo{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-align:right;vertical-align:top;user-select:none;padding:1px 4px}._367UGW_diffNoDel{background:color-mix(in srgb, var(--cm-error) 12%, transparent);color:var(--cm-error);box-shadow:inset 3px 0 0 var(--cm-error)}._367UGW_diffNoAdd{background:color-mix(in srgb, var(--cm-ok) 12%, transparent);color:var(--cm-ok);box-shadow:inset 3px 0 0 var(--cm-ok)}._367UGW_diffCell{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;vertical-align:top;padding:1px 6px}._367UGW_diffCellAdd{background:color-mix(in srgb, var(--cm-ok) 12%, transparent)}._367UGW_diffCellDel{background:color-mix(in srgb, var(--cm-error) 12%, transparent)}._367UGW_nextStepsGroup{margin-bottom:10px}._367UGW_nextStepsList{max-height:132px;overflow-y:auto}._367UGW_rollbackBox{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);margin-bottom:10px;padding:8px 10px}._367UGW_statRow{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}._367UGW_statRow:not(:last-child){margin-bottom:10px}._367UGW_consultSection{margin-top:10px}._367UGW_consultSection:first-of-type{margin-top:8px}._367UGW_consultSection ._367UGW_statRow{margin-top:0}._367UGW_hiddenFile{display:none}._367UGW_cliName,._367UGW_cliCommand{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta)}._367UGW_cliCommand{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0}._367UGW_historyGroup{margin-bottom:12px}._367UGW_historyRow{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);align-items:flex-start;gap:8px;padding:6px 8px;display:flex}._367UGW_historyRow:last-child{border-bottom:none}._367UGW_historyRowMain{flex:auto;min-width:0}._367UGW_historyMeta{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:2px;display:flex}._367UGW_historySummary{overflow-wrap:anywhere;color:var(--dsw-alias-label-secondary);display:block}._367UGW_historyTime{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex:none;padding-top:1px}._367UGW_historySections{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_profileRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin-bottom:6px;padding:8px 12px}._367UGW_profileRow[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 7%, transparent)}._367UGW_profileRowHeader{font-size:var(--cm-fs-table);align-items:center;gap:8px;display:flex}._367UGW_profileRowMain{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-weight:500;overflow:hidden}button._367UGW_profileRowMain{font:inherit;color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:flex-start;gap:2px;padding:0;display:flex}._367UGW_profileRowTitle{align-items:center;gap:6px;min-width:0;max-width:100%;display:flex}._367UGW_profileRowName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_profileRowMeta{max-width:100%;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-weight:400;display:block;overflow:hidden}._367UGW_detailLines{font-size:var(--cm-fs-meta);flex-direction:column;gap:2px;min-width:0;display:flex}button._367UGW_profileRowMain:hover{color:var(--cm-accent)}._367UGW_listHeaderRow{align-items:center;gap:8px;margin:0 0 8px;display:flex}._367UGW_listHeaderRow ._367UGW_groupLabel{margin-bottom:0}._367UGW_listHeaderRow ._367UGW_cellMeta{flex:auto;min-width:0}._367UGW_badgeRow{flex:none;align-items:center;gap:4px;display:inline-flex}._367UGW_actionRow[data-inline]{flex:none;margin:0}._367UGW_aboutLinkRow{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_aboutAuthor{font-size:var(--cm-fs-base);color:var(--cm-accent);overflow-wrap:anywhere;font-weight:600;text-decoration:none}._367UGW_aboutAuthor:hover{text-decoration:underline}._367UGW_aboutAuthor:focus-visible{outline:var(--cm-focus-width) solid var(--cm-focus-color);outline-offset:1px;border-radius:var(--cm-r-1)}._367UGW_consultDimension{border-bottom:.5px solid var(--dsw-alias-border-l2);font-size:var(--cm-fs-table);padding:6px 0}._367UGW_consultDimension:last-child{border-bottom:none}._367UGW_severityError{color:var(--cm-error);font-weight:600}._367UGW_viewBody{gap:10px}._367UGW_viewBody>*{margin-bottom:0}._367UGW_viewBody>._367UGW_statRow{margin-top:0;margin-bottom:0}._367UGW_viewBody:after{content:\"\";flex:none;height:8px}@media (width<=900px){._367UGW_secretFields{grid-template-columns:1fr}._367UGW_pagePad{padding:10px 12px 12px}}._367UGW_marketReviewPage{flex-direction:column;flex:1 0 auto;gap:10px;min-height:200px;display:flex}._367UGW_marketReviewPage ._367UGW_pickerRoot{flex:auto}._367UGW_marketReviewScroll,._367UGW_marketReviewPage ._367UGW_pickerList{scrollbar-gutter:stable;flex:auto;min-height:200px;max-height:800px;overflow:auto}._367UGW_marketReviewScroll{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);padding:6px 10px}@media (prefers-reduced-motion:reduce){._367UGW_toast,._367UGW_statusDot[data-pulse],._367UGW_pagePad,._367UGW_dialogMask,._367UGW_dialogContentCenter,._367UGW_snapshotList>*,._367UGW_dataTable tbody tr,._367UGW_viewEnter,._367UGW_pickerOverlay,._367UGW_pickerUnit,._367UGW_banner,._367UGW_empty{animation:none}._367UGW_statusDot,._367UGW_stepperDot,._367UGW_stepperLabel{transition:none}._367UGW_selectMenu,._367UGW_selectChevron{transition:none;animation:none}._367UGW_artifactDetailWrap,._367UGW_artifactDetailWrap>*{transition:none}._367UGW_dialogMask[data-state=closed],._367UGW_dialogContentCenter[data-state=closed],._367UGW_restorePlan,._367UGW_infoHintBubble{animation:none}._367UGW_collapse{transition:none}._367UGW_skeletonBar{background-image:none;animation:none}}._367UGW_sourceList{flex-direction:column;gap:6px;margin-bottom:10px;display:flex}._367UGW_sourceRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);align-items:flex-start;gap:8px;min-width:0;padding:8px 10px;display:flex}._367UGW_sourceRow[data-selected]{border-color:var(--cm-accent);background:color-mix(in srgb, var(--cm-accent) 7%, transparent)}._367UGW_sourceRow[data-disabled]{opacity:.7}._367UGW_sourceRowMain{flex:auto;min-width:0}._367UGW_sourceRowHead{align-items:center;gap:8px;min-width:0;display:flex}._367UGW_sourceRowName{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}._367UGW_sourceRowHead>:not(._367UGW_sourceRowName){flex:none}._367UGW_sourcePaths{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;margin-top:4px;line-height:1.5;display:block}._367UGW_skipList{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);flex-direction:column;gap:4px;margin:6px 0 0;padding:0;display:flex}._367UGW_skipRow{flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0;display:flex}._367UGW_skipCode{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--cm-fs-meta);border-radius:var(--cm-r-1);background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 12%, transparent);color:var(--dsw-alias-label-secondary);white-space:nowrap;flex:none;padding:1px 4px}._367UGW_skipText{overflow-wrap:anywhere;flex:auto;min-width:0}._367UGW_skipMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none}._367UGW_chatEntryScope{--cm-text-1:var(--dsw-alias-label-primary);--cm-text-3:var(--dsw-alias-label-tertiary);--cm-surface-2:var(--dsw-alias-bg-layer-2);--cm-chat-bubble:var(--dsw-specific-bubble,color-mix(in srgb, var(--cm-text-1) 12%, transparent));--cm-line-1:var(--dsw-alias-border-l1);--cm-line-2:var(--dsw-alias-border-l2);--cm-fs-meta:11px;--cm-fs-base:var(--dsh-content-font-size,14px);--cm-lh-base:calc(22px + var(--dsh-content-font-delta,0px));--cm-text-2:var(--dsw-alias-label-secondary);--cm-r-chat:var(--dsw-radius-xl,20px);--cm-r-act:var(--dsw-radius-sm,8px);--cm-chat-card-bg:var(--dsw-specific-input-major,transparent);--cm-chat-hover-bg:var(--dsw-alias-interactive-bg-hover,var(--cm-line-1));--cm-fs-second:var(--dsh-content-font-size-secondary,13px);--cm-lh-second:calc(24px + var(--dsh-content-font-delta,0px));--cm-lh-ref:calc(18px + var(--dsh-content-font-delta-secondary,0px));--cm-fs-card:14px;--cm-lh-card:22px;--cm-lh-meta:15px;--cm-chat-action:calc(28px + var(--dsh-content-font-delta,0px));--cm-chat-glyph:calc(15px + var(--dsh-content-font-delta,0px));--cm-sp-2:4px;--cm-sp-3:6px;--cm-sp-4:8px;--cm-sp-5:10px;--cm-sp-6:12px;--cm-sp-8:16px;--cm-r-2:6px;--cm-r-3:8px;min-width:0;color:var(--cm-text-1);font-size:var(--cm-fs-base);line-height:var(--cm-lh-base);display:block}._367UGW_chatEntryRow{align-items:flex-end;gap:var(--cm-sp-3);flex-direction:column;display:flex}._367UGW_chatEntryStack{align-items:flex-end;gap:var(--cm-sp-4);min-width:0;max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%);flex-direction:column;display:flex}._367UGW_chatBubble{max-width:100%;padding:var(--cm-sp-5) var(--cm-sp-8);border-radius:var(--cm-r-chat);background:var(--cm-chat-bubble);color:var(--cm-text-1);white-space:pre-wrap;word-break:break-word}._367UGW_chatBubbleText{white-space:pre-wrap;word-break:break-word}._367UGW_chatFallbackBubble{border-left:2px solid var(--cm-text-1)}._367UGW_chatAttachmentRow{justify-content:flex-end;gap:var(--cm-sp-4);flex-wrap:wrap;max-width:100%;display:flex}._367UGW_chatFileCard{align-items:center;gap:var(--cm-sp-5);box-sizing:border-box;width:240px;min-height:64px;padding:var(--cm-sp-4) var(--cm-sp-6);border:.5px solid var(--cm-line-2);border-radius:var(--cm-r-chat);background:var(--cm-chat-card-bg);flex:0 0 240px;display:inline-flex}._367UGW_chatFileIcon{flex:none;width:28px;height:28px}._367UGW_chatFileContent{flex-direction:column;flex:1;min-width:0;display:flex}._367UGW_chatFileExt{border-radius:var(--cm-r-2);background:var(--cm-line-1);min-width:28px;height:28px;color:var(--cm-text-1);font-size:var(--cm-fs-meta);letter-spacing:.02em;flex:none;justify-content:center;align-items:center;display:inline-flex}._367UGW_chatFileName{color:var(--cm-text-1);font-size:var(--cm-fs-card);font-weight:500;line-height:var(--cm-lh-card);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_chatFileMeta{color:var(--cm-text-3);font-size:12px;line-height:var(--cm-lh-meta);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_chatRawBlock{font-size:var(--cm-fs-meta);color:var(--cm-text-3)}._367UGW_chatRawSummary{cursor:pointer}._367UGW_chatRawPre{max-height:220px;margin:var(--cm-sp-2) 0 0;padding:var(--cm-sp-3);border-radius:var(--cm-r-2);background:var(--cm-surface-2);color:var(--cm-text-3);white-space:pre-wrap;word-break:break-all;overflow:auto}._367UGW_chatEntryActions{align-items:center;gap:var(--cm-sp-4);height:var(--cm-chat-action);margin-top:var(--cm-sp-2);margin-left:calc(-1 * var(--cm-sp-3));display:flex}._367UGW_chatEntryTime{color:var(--cm-text-3);font-size:var(--cm-fs-second);line-height:var(--cm-lh-second);white-space:nowrap;padding-right:var(--cm-sp-6)}._367UGW_chatEntryNotice{max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%);color:var(--cm-text-3);font-size:var(--cm-fs-meta)}._367UGW_chatEntryReference{color:var(--cm-text-3);font-size:var(--cm-fs-second);line-height:var(--cm-lh-ref)}._367UGW_chatActionBtn{width:var(--cm-chat-action);height:var(--cm-chat-action);padding:var(--cm-sp-3);border-radius:var(--cm-r-act);color:var(--cm-text-3);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex}._367UGW_chatActionBtn svg{width:var(--cm-chat-glyph);height:var(--cm-chat-glyph)}._367UGW_chatActionBtn:hover{background:var(--cm-chat-hover-bg);color:var(--cm-text-2)}@media (hover:hover){:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])) ._367UGW_chatEntryActions{opacity:0;transition:opacity var(--cm-motion-fast)}:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])):hover ._367UGW_chatEntryActions,:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])):focus-within ._367UGW_chatEntryActions{opacity:1}}._367UGW_chatActionBtn:disabled{color:var(--cm-text-3);opacity:.5;cursor:not-allowed}._367UGW_rollbackFileList{margin-top:var(--cm-sp-2);flex-direction:column;display:flex}._367UGW_rollbackFileRow{align-items:center;gap:var(--cm-sp-3);padding:var(--cm-sp-3) 0 var(--cm-sp-3) var(--cm-sp-2);grid-template-columns:auto minmax(0,1fr) auto;display:grid;position:relative}._367UGW_rollbackFileRow:before{content:\"\";left:0;top:var(--cm-sp-2);bottom:var(--cm-sp-2);background:var(--cm-info);width:2px;position:absolute}._367UGW_rollbackFileRow[data-kind=create]:before{background:var(--cm-ok)}._367UGW_rollbackFileRow[data-kind=delete]:before{background:var(--cm-error)}._367UGW_rollbackFileRow:not([data-kind]):before{display:none}._367UGW_rollbackFileIcon{flex:none;align-items:center;display:inline-flex}._367UGW_rollbackFilePath{min-width:0;color:var(--cm-text-1);font-size:var(--cm-fs-table);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}._367UGW_rollbackFileDir{color:var(--cm-text-3);transition:color var(--cm-motion-fast) ease}._367UGW_rollbackFileStat{justify-content:flex-end;justify-self:end;align-items:baseline;gap:var(--cm-sp-2);display:inline-flex}._367UGW_rollbackAdded{color:var(--cm-ok);font-size:var(--cm-fs-table);font-variant-numeric:tabular-nums;flex:none}._367UGW_rollbackRemoved{color:var(--cm-error);font-size:var(--cm-fs-table);font-variant-numeric:tabular-nums;flex:none}._367UGW_rollbackDeleted{color:var(--cm-error);font-size:var(--cm-fs-table);flex:none}._367UGW_rollbackFilePath:is(button){font:inherit;font-size:var(--cm-fs-table);color:var(--cm-text-1);text-align:left;cursor:pointer;transition:color var(--cm-motion-fast) ease;background:0 0;border:0;padding:0}._367UGW_rollbackFilePath:is(button):hover:not(:disabled),._367UGW_rollbackFilePath:is(button):focus-visible,._367UGW_rollbackFilePath:is(button):hover:not(:disabled) ._367UGW_rollbackFileDir,._367UGW_rollbackFilePath:is(button):focus-visible ._367UGW_rollbackFileDir{color:var(--cm-accent)}._367UGW_rollbackFilePath:is(button):disabled{color:var(--cm-text-1);cursor:not-allowed;opacity:.7}._367UGW_previewChoiceRow{justify-content:space-between;align-items:baseline;gap:var(--cm-sp-4);margin:0 0 var(--cm-sp-2);display:flex}._367UGW_previewScope{align-items:baseline;gap:var(--cm-sp-3);font-size:var(--cm-fs-meta);color:var(--cm-text-2);font-variant-numeric:tabular-nums;flex:none;display:inline-flex}._367UGW_previewScopeStats{align-items:baseline;gap:var(--cm-sp-3);display:inline-flex}._367UGW_previewScope[data-off=true] ._367UGW_previewScopeStats{color:var(--cm-text-3);opacity:.75}._367UGW_previewScopeOff{color:var(--cm-text-3)}._367UGW_inlineDiffBox{gap:var(--cm-sp-2);margin-top:var(--cm-sp-2);padding:var(--cm-sp-2);border:1px solid var(--cm-line-1);border-radius:var(--cm-r-2);flex-direction:column;display:flex}._367UGW_rollbackWarnings{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}._367UGW_rollbackToolbar{align-items:center;gap:8px;margin-bottom:8px;display:flex}._367UGW_rollbackSummary{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-weight:600}._367UGW_rollbackScroll{padding:8px}._367UGW_rollbackGroup{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex-direction:column;flex:auto;gap:8px;min-height:0;padding:8px 10px;display:flex}._367UGW_rollbackGroupHead{border-bottom:1px solid var(--dsw-alias-border-l1);flex-wrap:wrap;align-items:center;gap:6px;padding-bottom:6px;display:flex}._367UGW_rollbackGroupTitle{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;font-weight:600}._367UGW_rollbackGroupUnit{text-overflow:ellipsis;white-space:nowrap;text-align:right;min-width:0;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex:auto;margin-left:auto;overflow:hidden}._367UGW_rollbackPoints{flex-direction:column;gap:6px;display:flex}._367UGW_rollbackPoint{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);border-left-width:2px;flex-direction:column;gap:4px;padding:8px 10px;display:flex}._367UGW_rollbackPoint[data-kind=auto]{border-left-color:var(--cm-ok)}._367UGW_rollbackPoint[data-kind=guard]{border-left-color:var(--cm-info)}._367UGW_rollbackPoint[data-kind=unknown]{border-left-color:var(--cm-text-3)}._367UGW_rollbackPointTop{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_rollbackPointTurn{font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}._367UGW_rollbackPointActions{flex:none;align-items:center;gap:6px;margin-left:auto;display:flex}._367UGW_rollbackPointMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;align-items:center;gap:6px;line-height:1.5;display:flex}._367UGW_rollbackMetaDot{color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_rollbackLedger{align-items:stretch;gap:10px;height:340px;display:flex}._367UGW_rollbackSessions{flex-direction:column;flex:0 0 148px;gap:4px;height:100%;display:flex;overflow:auto}._367UGW_rollbackSessionItem{text-align:left;border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-2);background:var(--dsw-alias-bg-base);width:100%;color:var(--dsw-alias-label-secondary);cursor:pointer;flex-direction:column;gap:2px;padding:6px 8px;display:flex}._367UGW_rollbackSessionItem:hover{background:var(--dsw-alias-bg-layer-2)}._367UGW_rollbackSessionItem[data-active]{border-color:var(--cm-accent);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary)}._367UGW_rollbackSessionId{font-size:var(--cm-fs-table);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._367UGW_rollbackSessionMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);align-items:center;gap:2px;line-height:1.5;display:flex}._367UGW_rollbackLedgerMain{flex-direction:column;flex:auto;gap:8px;min-width:0;height:100%;display:flex}._367UGW_rollbackPointsScroll{flex:auto;min-height:0;padding:8px;overflow:auto}._367UGW_rollbackPointNote{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;overflow:hidden}._367UGW_shHeaderTrailing{align-items:center;gap:8px;margin-left:auto;display:inline-flex}._367UGW_shHeaderTrailing~._367UGW_dialogClose{margin-left:0}._367UGW_shSummary{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);flex-direction:column;gap:10px;margin:0 0 10px;padding:12px 14px;display:flex}._367UGW_shMetrics{flex-wrap:wrap;align-items:flex-end;gap:8px 24px;display:flex}._367UGW_shMetric{flex-direction:column;gap:2px;min-width:0;display:flex}._367UGW_shMetricValue{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600;line-height:1.25}._367UGW_shMetricLabel{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary)}._367UGW_shMetric[data-tone=warn] ._367UGW_shMetricValue{color:var(--cm-warn)}._367UGW_shMetric[data-tone=ok] ._367UGW_shMetricValue{color:var(--cm-ok)}._367UGW_shSeverities{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_shSeverity{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:2px 8px;line-height:1.5;display:inline-flex}._367UGW_shSeverityCount{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-weight:600}._367UGW_shSeverity[data-severity=blocksStartup],._367UGW_shSeverity[data-severity=unloadable]{border-color:color-mix(in srgb, var(--cm-error) 45%, transparent)}._367UGW_shSeverity[data-severity=nextRequestFails],._367UGW_shSeverity[data-severity=invisible]{border-color:color-mix(in srgb, var(--cm-warn) 45%, transparent)}._367UGW_shNotes{border-top:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 60%, transparent);flex-direction:column;gap:4px;padding-top:8px;display:flex}._367UGW_shSectionHead{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;display:flex}._367UGW_shSectionHead ._367UGW_groupLabel{margin-bottom:0}._367UGW_shSectionTitle{font-size:var(--cm-fs-title);color:var(--dsw-alias-label-primary);font-weight:600;line-height:1.25}._367UGW_snapshotList._367UGW_shScroll{background:var(--dsw-alias-bg-base);padding:8px}._367UGW_shRow{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);border-left-width:2px;flex-direction:column;gap:4px;padding:8px 10px;display:flex}._367UGW_shRow[data-severity=blocksStartup],._367UGW_shRow[data-severity=unloadable]{border-left-color:var(--cm-error)}._367UGW_shRow[data-severity=nextRequestFails],._367UGW_shRow[data-severity=invisible]{border-left-color:var(--cm-warn)}._367UGW_shRow[data-severity=ok]{border-left-color:var(--cm-ok)}._367UGW_shRowTop{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_shRowId{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);flex:auto;font-weight:600;overflow:hidden}._367UGW_shRowActions{flex:none;align-items:center;gap:6px;margin-left:auto;display:flex}._367UGW_shRowMeta{font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-tertiary);flex-wrap:wrap;align-items:center;gap:6px;line-height:1.5;display:flex}._367UGW_shIssue{border-radius:var(--cm-r-1);background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 12%, transparent);color:var(--dsw-alias-label-secondary);align-items:center;padding:2px 6px;display:inline-flex}._367UGW_shRowFacts{white-space:nowrap;font-variant-numeric:tabular-nums;flex:none;margin-left:auto}._367UGW_shMetaDot{color:var(--dsw-alias-label-tertiary);flex:none}._367UGW_shLines{flex-direction:column;gap:4px;display:flex}._367UGW_shPanel{border:1px solid var(--dsw-alias-border-l2);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-base);margin:0 0 10px;padding:10px 12px}._367UGW_shPanelHead{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;display:flex}._367UGW_shPanelTitle{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--cm-fs-table);color:var(--dsw-alias-label-primary);flex:auto;font-weight:600;overflow:hidden}._367UGW_shCommands{border:1px solid var(--dsw-alias-border-l1);border-radius:var(--cm-r-3);background:var(--dsw-alias-bg-layer-2);margin:0 0 10px;padding:0;list-style:none;overflow:hidden}._367UGW_shCommand{border-bottom:1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 50%, transparent);align-items:center;gap:8px;padding:8px 10px;display:flex}._367UGW_shCommand:last-child{border-bottom:none}._367UGW_shCommand code{overflow-wrap:anywhere;min-width:0;font-size:var(--cm-fs-meta);color:var(--dsw-alias-label-secondary);flex:auto}";
14449
14699
  const tagId = "dsh-config-manager/config-manager.module.css";
14450
14700
  if (typeof document !== "undefined" && document.querySelector("style[data-tag=\"dsh-config-manager/config-manager.module.css\"]") === null) {
14451
14701
  const tag = document.createElement("style");
@@ -14455,522 +14705,528 @@ if (typeof document !== "undefined" && document.querySelector("style[data-tag=\"
14455
14705
  document.head.appendChild(tag);
14456
14706
  }
14457
14707
  var config_manager_module_css_default = {
14458
- "restorePlanChevron": "_367UGW_restorePlanChevron",
14459
- "diskUsageScroll": "_367UGW_diskUsageScroll",
14460
- "skeletonCaption": "_367UGW_skeletonCaption",
14461
- "conflictChoices": "_367UGW_conflictChoices",
14462
- "runsCardActions": "_367UGW_runsCardActions",
14463
- "sectionTitleRow": "_367UGW_sectionTitleRow",
14464
- "sectionCount": "_367UGW_sectionCount",
14465
- "diffPaneFill": "_367UGW_diffPaneFill",
14466
- "diffNo": "_367UGW_diffNo",
14467
- "logPanel": "_367UGW_logPanel",
14708
+ "chatEntryActions": "_367UGW_chatEntryActions",
14709
+ "updateNotesLoading": "_367UGW_updateNotesLoading",
14710
+ "reportDetails": "_367UGW_reportDetails",
14711
+ "selectTrigger": "_367UGW_selectTrigger",
14712
+ "runsCardTime": "_367UGW_runsCardTime",
14713
+ "historyMeta": "_367UGW_historyMeta",
14714
+ "activityEmpty": "_367UGW_activityEmpty",
14715
+ "rollbackPointNote": "_367UGW_rollbackPointNote",
14468
14716
  "progressBar": "_367UGW_progressBar",
14469
- "restorePlan": "_367UGW_restorePlan",
14470
- "spinnerLabel": "_367UGW_spinnerLabel",
14471
- "paletteItemGroup": "_367UGW_paletteItemGroup",
14472
- "rollbackGroupTitle": "_367UGW_rollbackGroupTitle",
14473
- "skeletonRoot": "_367UGW_skeletonRoot",
14474
- "shSeverity": "_367UGW_shSeverity",
14475
- "sectionOptionRow": "_367UGW_sectionOptionRow",
14476
- "taskHead": "_367UGW_taskHead",
14477
- "categoryName": "_367UGW_categoryName",
14478
- "tableWrap": "_367UGW_tableWrap",
14479
- "viewEnter": "_367UGW_viewEnter",
14480
- "progressPercent": "_367UGW_progressPercent",
14481
- "diskUsageCard": "_367UGW_diskUsageCard",
14482
- "snapshotPickerRow": "_367UGW_snapshotPickerRow",
14717
+ "mono": "_367UGW_mono",
14718
+ "factCell": "_367UGW_factCell",
14719
+ "badgeHost": "_367UGW_badgeHost",
14720
+ "errorTitle": "_367UGW_errorTitle",
14721
+ "artifactActions": "_367UGW_artifactActions",
14722
+ "rollbackPointTurn": "_367UGW_rollbackPointTurn",
14723
+ "skeletonTitle": "_367UGW_skeletonTitle",
14724
+ "historyTime": "_367UGW_historyTime",
14725
+ "shRowId": "_367UGW_shRowId",
14726
+ "updateVersionArrow": "_367UGW_updateVersionArrow",
14727
+ "sectionTitle": "_367UGW_sectionTitle",
14728
+ "kvKey": "_367UGW_kvKey",
14729
+ "historyScroll": "_367UGW_historyScroll",
14730
+ "pickerModalBody": "_367UGW_pickerModalBody",
14731
+ "reportProblemRow": "_367UGW_reportProblemRow",
14732
+ "pickerMore": "_367UGW_pickerMore",
14733
+ "sourceRowMain": "_367UGW_sourceRowMain",
14483
14734
  "diffNoDel": "_367UGW_diffNoDel",
14484
- "rollbackFileRow": "_367UGW_rollbackFileRow",
14485
- "paletteItem": "_367UGW_paletteItem",
14486
- "modeTab": "_367UGW_modeTab",
14487
- "runsLogTail": "_367UGW_runsLogTail",
14488
- "pickerSubgroup": "_367UGW_pickerSubgroup",
14489
- "progressLabel": "_367UGW_progressLabel",
14490
- "noticeLine": "_367UGW_noticeLine",
14491
- "dialogHeaderRow": "_367UGW_dialogHeaderRow",
14492
- "navActions": "_367UGW_navActions",
14493
- "warnText": "_367UGW_warnText",
14494
- "previewChoiceRow": "_367UGW_previewChoiceRow",
14495
- "pickerList": "_367UGW_pickerList",
14735
+ "cellActions": "_367UGW_cellActions",
14736
+ "controlRow": "_367UGW_controlRow",
14737
+ "libraryFooter": "_367UGW_libraryFooter",
14738
+ "conflictId": "_367UGW_conflictId",
14739
+ "dialogCard": "_367UGW_dialogCard",
14496
14740
  "sparseFill": "_367UGW_sparseFill",
14741
+ "errorLine": "_367UGW_errorLine",
14742
+ "chatFileMeta": "_367UGW_chatFileMeta",
14743
+ "groupItems": "_367UGW_groupItems",
14744
+ "navMoreRoot": "_367UGW_navMoreRoot",
14745
+ "modeTabs": "_367UGW_modeTabs",
14746
+ "runsSummary": "_367UGW_runsSummary",
14747
+ "errorReason": "_367UGW_errorReason",
14748
+ "severityError": "_367UGW_severityError",
14749
+ "chatEntryRow": "_367UGW_chatEntryRow",
14750
+ "selectOptionLabel": "_367UGW_selectOptionLabel",
14751
+ "diffFileStat": "_367UGW_diffFileStat",
14752
+ "progressBadgeCount": "_367UGW_progressBadgeCount",
14753
+ "spinnerWrap": "_367UGW_spinnerWrap",
14754
+ "categoryName": "_367UGW_categoryName",
14755
+ "hint": "_367UGW_hint",
14756
+ "restorePlanNote": "_367UGW_restorePlanNote",
14757
+ "taskHead": "_367UGW_taskHead",
14758
+ "previewScopeStats": "_367UGW_previewScopeStats",
14759
+ "selectMenuPortal": "_367UGW_selectMenuPortal",
14760
+ "compositionViewport": "_367UGW_compositionViewport",
14761
+ "secretFields": "_367UGW_secretFields",
14762
+ "reportFooter": "_367UGW_reportFooter",
14763
+ "dialogHeader": "_367UGW_dialogHeader",
14764
+ "diffTable": "_367UGW_diffTable",
14765
+ "factGrid": "_367UGW_factGrid",
14766
+ "field": "_367UGW_field",
14767
+ "shRowActions": "_367UGW_shRowActions",
14768
+ "nextStepsGroup": "_367UGW_nextStepsGroup",
14769
+ "sectionSubtitle": "_367UGW_sectionSubtitle",
14770
+ "rollbackWarnings": "_367UGW_rollbackWarnings",
14771
+ "conflictDetail": "_367UGW_conflictDetail",
14772
+ "restorePlanPath": "_367UGW_restorePlanPath",
14773
+ "sectionName": "_367UGW_sectionName",
14774
+ "rollbackFileIcon": "_367UGW_rollbackFileIcon",
14775
+ "shMetrics": "_367UGW_shMetrics",
14776
+ "shSectionTitle": "_367UGW_shSectionTitle",
14777
+ "profileRowHeader": "_367UGW_profileRowHeader",
14778
+ "artifactMeta": "_367UGW_artifactMeta",
14779
+ "shCommands": "_367UGW_shCommands",
14497
14780
  "rollbackPoint": "_367UGW_rollbackPoint",
14498
- "rollbackGroupHead": "_367UGW_rollbackGroupHead",
14499
- "pathRow": "_367UGW_pathRow",
14500
- "errorAction": "_367UGW_errorAction",
14501
- "cellActions": "_367UGW_cellActions",
14502
- "reportScroll": "_367UGW_reportScroll",
14503
- "factLabel": "_367UGW_factLabel",
14781
+ "cellMain": "_367UGW_cellMain",
14782
+ "toastText": "_367UGW_toastText",
14783
+ "previewChoiceRow": "_367UGW_previewChoiceRow",
14784
+ "shRowTop": "_367UGW_shRowTop",
14785
+ "sectionOptionRow": "_367UGW_sectionOptionRow",
14786
+ "activityTime": "_367UGW_activityTime",
14787
+ "warnText": "_367UGW_warnText",
14788
+ "pickerOverlay": "_367UGW_pickerOverlay",
14789
+ "rollbackPointTop": "_367UGW_rollbackPointTop",
14790
+ "dim": "_367UGW_dim",
14791
+ "detailLines": "_367UGW_detailLines",
14792
+ "listHeaderRow": "_367UGW_listHeaderRow",
14793
+ "skeletonCards": "_367UGW_skeletonCards",
14504
14794
  "iconBtn": "_367UGW_iconBtn",
14505
- "viewBody": "_367UGW_viewBody",
14506
- "shMetricLabel": "_367UGW_shMetricLabel",
14795
+ "conflictHead": "_367UGW_conflictHead",
14796
+ "snapshotRowMeta": "_367UGW_snapshotRowMeta",
14797
+ "diffPaneFill": "_367UGW_diffPaneFill",
14798
+ "chatBubbleText": "_367UGW_chatBubbleText",
14799
+ "conflictOptions": "_367UGW_conflictOptions",
14800
+ "libraryFilterCount": "_367UGW_libraryFilterCount",
14801
+ "reportProblemReason": "_367UGW_reportProblemReason",
14802
+ "reasonList": "_367UGW_reasonList",
14803
+ "rollbackTabIcon": "_367UGW_rollbackTabIcon",
14804
+ "shMetric": "_367UGW_shMetric",
14805
+ "warnList": "_367UGW_warnList",
14806
+ "sourceList": "_367UGW_sourceList",
14807
+ "skipList": "_367UGW_skipList",
14808
+ "diffFilePath": "_367UGW_diffFilePath",
14809
+ "collapse": "_367UGW_collapse",
14810
+ "categoryDesc": "_367UGW_categoryDesc",
14811
+ "navMore": "_367UGW_navMore",
14812
+ "progressBlock": "_367UGW_progressBlock",
14813
+ "collapseInner": "_367UGW_collapseInner",
14814
+ "rollbackDeleted": "_367UGW_rollbackDeleted",
14815
+ "diffPane": "_367UGW_diffPane",
14816
+ "conflictLine": "_367UGW_conflictLine",
14817
+ "runsOption": "_367UGW_runsOption",
14818
+ "diffCell": "_367UGW_diffCell",
14819
+ "restorePlanRow": "_367UGW_restorePlanRow",
14820
+ "confirmItemHead": "_367UGW_confirmItemHead",
14821
+ "statusAction": "_367UGW_statusAction",
14822
+ "profileRowMain": "_367UGW_profileRowMain",
14823
+ "badgeRow": "_367UGW_badgeRow",
14824
+ "reportView": "_367UGW_reportView",
14825
+ "skipRow": "_367UGW_skipRow",
14507
14826
  "reportList": "_367UGW_reportList",
14508
- "chatFileExt": "_367UGW_chatFileExt",
14509
- "factGrid": "_367UGW_factGrid",
14510
- "snapshotPickerHint": "_367UGW_snapshotPickerHint",
14827
+ "reportProblemHead": "_367UGW_reportProblemHead",
14828
+ "librarySearch": "_367UGW_librarySearch",
14829
+ "reportBody": "_367UGW_reportBody",
14511
14830
  "diffFileHead": "_367UGW_diffFileHead",
14512
- "diffHunkRow": "_367UGW_diffHunkRow",
14513
- "authorRow": "_367UGW_authorRow",
14514
- "dialogWide": "_367UGW_dialogWide",
14515
- "nextStepsList": "_367UGW_nextStepsList",
14516
- "dialogBody": "_367UGW_dialogBody",
14517
- "marketFilterGrid": "_367UGW_marketFilterGrid",
14518
- "modeHint": "_367UGW_modeHint",
14831
+ "statusMeta": "_367UGW_statusMeta",
14832
+ "pathOld": "_367UGW_pathOld",
14833
+ "navActions": "_367UGW_navActions",
14834
+ "taskPanel": "_367UGW_taskPanel",
14519
14835
  "diffStatTotal": "_367UGW_diffStatTotal",
14520
- "chatFallbackBubble": "_367UGW_chatFallbackBubble",
14836
+ "progressMeta": "_367UGW_progressMeta",
14837
+ "toast": "_367UGW_toast",
14838
+ "logEmpty": "_367UGW_logEmpty",
14839
+ "inlineDiffBox": "_367UGW_inlineDiffBox",
14840
+ "shellMain": "_367UGW_shellMain",
14841
+ "skipMeta": "_367UGW_skipMeta",
14842
+ "profileRowMeta": "_367UGW_profileRowMeta",
14843
+ "dialogBody": "_367UGW_dialogBody",
14844
+ "cliName": "_367UGW_cliName",
14845
+ "wizardStepperRow": "_367UGW_wizardStepperRow",
14846
+ "maskIn": "_367UGW_maskIn",
14847
+ "consultDimension": "_367UGW_consultDimension",
14848
+ "progressTrack": "_367UGW_progressTrack",
14849
+ "historyGroup": "_367UGW_historyGroup",
14850
+ "statusBar": "_367UGW_statusBar",
14851
+ "rollbackSummary": "_367UGW_rollbackSummary",
14852
+ "badge": "_367UGW_badge",
14853
+ "toastViewport": "_367UGW_toastViewport",
14854
+ "statSegDim": "_367UGW_statSegDim",
14855
+ "rollbackFileRow": "_367UGW_rollbackFileRow",
14856
+ "restorePlanList": "_367UGW_restorePlanList",
14857
+ "authorRow": "_367UGW_authorRow",
14521
14858
  "diffStatDel": "_367UGW_diffStatDel",
14859
+ "cliCommand": "_367UGW_cliCommand",
14860
+ "restorePlan": "_367UGW_restorePlan",
14861
+ "marketReviewPage": "_367UGW_marketReviewPage",
14862
+ "kvValue": "_367UGW_kvValue",
14863
+ "rollbackMetaDot": "_367UGW_rollbackMetaDot",
14864
+ "snapshotRow": "_367UGW_snapshotRow",
14865
+ "shCommand": "_367UGW_shCommand",
14866
+ "progressBadgeSection": "_367UGW_progressBadgeSection",
14867
+ "pathRow": "_367UGW_pathRow",
14868
+ "diffNoColW4": "_367UGW_diffNoColW4",
14869
+ "shScroll": "_367UGW_shScroll",
14870
+ "taskPanelIn": "_367UGW_taskPanelIn",
14871
+ "errorFooter": "_367UGW_errorFooter",
14872
+ "logEntry": "_367UGW_logEntry",
14873
+ "statusDot": "_367UGW_statusDot",
14874
+ "viewBody": "_367UGW_viewBody",
14875
+ "skeletonRoot": "_367UGW_skeletonRoot",
14876
+ "errorAction": "_367UGW_errorAction",
14877
+ "input": "_367UGW_input",
14878
+ "libraryListState": "_367UGW_libraryListState",
14879
+ "selectMenu": "_367UGW_selectMenu",
14880
+ "resultScroll": "_367UGW_resultScroll",
14881
+ "restorePlanChevron": "_367UGW_restorePlanChevron",
14882
+ "sourceRowName": "_367UGW_sourceRowName",
14883
+ "pathMappingList": "_367UGW_pathMappingList",
14884
+ "shMetricValue": "_367UGW_shMetricValue",
14885
+ "logScroll": "_367UGW_logScroll",
14886
+ "runsCardActions": "_367UGW_runsCardActions",
14887
+ "modeHint": "_367UGW_modeHint",
14888
+ "reportProblemText": "_367UGW_reportProblemText",
14889
+ "chatRawPre": "_367UGW_chatRawPre",
14890
+ "empty": "_367UGW_empty",
14891
+ "pageEnter": "_367UGW_pageEnter",
14892
+ "shSeverities": "_367UGW_shSeverities",
14893
+ "shPanel": "_367UGW_shPanel",
14894
+ "kindTagError": "_367UGW_kindTagError",
14895
+ "statRow": "_367UGW_statRow",
14896
+ "navStrip": "_367UGW_navStrip",
14522
14897
  "rollbackBox": "_367UGW_rollbackBox",
14523
- "selectChevron": "_367UGW_selectChevron",
14524
- "rollbackSessions": "_367UGW_rollbackSessions",
14525
- "groupHintRow": "_367UGW_groupHintRow",
14526
- "syncChannelBody": "_367UGW_syncChannelBody",
14527
- "spinnerTrack": "_367UGW_spinnerTrack",
14528
- "tableCompact": "_367UGW_tableCompact",
14898
+ "dialogFooter": "_367UGW_dialogFooter",
14899
+ "dialogBodyScroll": "_367UGW_dialogBodyScroll",
14900
+ "activitySummaryText": "_367UGW_activitySummaryText",
14901
+ "taskTitle": "_367UGW_taskTitle",
14902
+ "groupHeader": "_367UGW_groupHeader",
14903
+ "optionsCard": "_367UGW_optionsCard",
14904
+ "logCounts": "_367UGW_logCounts",
14905
+ "statStrip": "_367UGW_statStrip",
14906
+ "chatFileExt": "_367UGW_chatFileExt",
14907
+ "rollbackScroll": "_367UGW_rollbackScroll",
14908
+ "shSeverityCount": "_367UGW_shSeverityCount",
14909
+ "cellMeta": "_367UGW_cellMeta",
14910
+ "statusProgress": "_367UGW_statusProgress",
14911
+ "libraryCount": "_367UGW_libraryCount",
14912
+ "statusTask": "_367UGW_statusTask",
14913
+ "sectionTitleRow": "_367UGW_sectionTitleRow",
14914
+ "banner": "_367UGW_banner",
14529
14915
  "statSeg": "_367UGW_statSeg",
14530
- "taskBody": "_367UGW_taskBody",
14531
- "progressBadge": "_367UGW_progressBadge",
14916
+ "aboutAuthor": "_367UGW_aboutAuthor",
14917
+ "skeletonTableRow": "_367UGW_skeletonTableRow",
14918
+ "conflictItem": "_367UGW_conflictItem",
14919
+ "confirmItem": "_367UGW_confirmItem",
14920
+ "logJumpButton": "_367UGW_logJumpButton",
14921
+ "dialogMask": "_367UGW_dialogMask",
14922
+ "shIssue": "_367UGW_shIssue",
14923
+ "pickerRoot": "_367UGW_pickerRoot",
14924
+ "rollbackSessions": "_367UGW_rollbackSessions",
14925
+ "artifactBadges": "_367UGW_artifactBadges",
14926
+ "runsLogTail": "_367UGW_runsLogTail",
14927
+ "selectLabel": "_367UGW_selectLabel",
14532
14928
  "runsLogLine": "_367UGW_runsLogLine",
14533
- "fillCard": "_367UGW_fillCard",
14534
14929
  "kindTagInfo": "_367UGW_kindTagInfo",
14535
- "skeletonShimmer": "_367UGW_skeletonShimmer",
14536
- "profileRowMain": "_367UGW_profileRowMain",
14537
- "historyRow": "_367UGW_historyRow",
14538
- "marketReviewScroll": "_367UGW_marketReviewScroll",
14539
- "chatBubbleText": "_367UGW_chatBubbleText",
14540
- "resultScroll": "_367UGW_resultScroll",
14541
- "rollbackScroll": "_367UGW_rollbackScroll",
14542
- "activityKind": "_367UGW_activityKind",
14543
- "severityError": "_367UGW_severityError",
14544
- "rollbackPointTurn": "_367UGW_rollbackPointTurn",
14545
- "historyGroup": "_367UGW_historyGroup",
14546
- "skeletonTitle": "_367UGW_skeletonTitle",
14547
- "infoHintIn": "_367UGW_infoHintIn",
14548
- "shNotes": "_367UGW_shNotes",
14549
- "reportProblemRow": "_367UGW_reportProblemRow",
14550
- "profileRowTitle": "_367UGW_profileRowTitle",
14551
- "libraryListState": "_367UGW_libraryListState",
14552
- "dialogContentCenter": "_367UGW_dialogContentCenter",
14553
- "factCell": "_367UGW_factCell",
14554
- "cellTitle": "_367UGW_cellTitle",
14555
- "activityTime": "_367UGW_activityTime",
14556
- "num": "_367UGW_num",
14557
- "sectionGrid": "_367UGW_sectionGrid",
14558
- "navMore": "_367UGW_navMore",
14559
- "rollbackWarnings": "_367UGW_rollbackWarnings",
14560
- "dialogOut": "_367UGW_dialogOut",
14561
- "consultScroll": "_367UGW_consultScroll",
14562
- "previewScopeOff": "_367UGW_previewScopeOff",
14563
- "artifactMain": "_367UGW_artifactMain",
14564
- "selectOption": "_367UGW_selectOption",
14565
- "paletteHint": "_367UGW_paletteHint",
14566
- "statHealthAction": "_367UGW_statHealthAction",
14567
- "card": "_367UGW_card",
14568
- "navMeasure": "_367UGW_navMeasure",
14569
- "groupLabel": "_367UGW_groupLabel",
14570
- "kvRow": "_367UGW_kvRow",
14571
- "diffFileStat": "_367UGW_diffFileStat",
14572
- "navDot": "_367UGW_navDot",
14573
- "diffNoColW6": "_367UGW_diffNoColW6",
14930
+ "pickerAction": "_367UGW_pickerAction",
14931
+ "dataTable": "_367UGW_dataTable",
14932
+ "runsOptionDesc": "_367UGW_runsOptionDesc",
14933
+ "reportHeadline": "_367UGW_reportHeadline",
14934
+ "pathNew": "_367UGW_pathNew",
14935
+ "indet": "_367UGW_indet",
14936
+ "skeletonCard": "_367UGW_skeletonCard",
14937
+ "skeletonCaption": "_367UGW_skeletonCaption",
14938
+ "spinnerTrack": "_367UGW_spinnerTrack",
14939
+ "conflictChoices": "_367UGW_conflictChoices",
14940
+ "snapshotRowHeader": "_367UGW_snapshotRowHeader",
14941
+ "skeletonRow": "_367UGW_skeletonRow",
14574
14942
  "artifactRowHead": "_367UGW_artifactRowHead",
14575
- "libraryFilter": "_367UGW_libraryFilter",
14576
- "errorList": "_367UGW_errorList",
14577
- "taskPanelIn": "_367UGW_taskPanelIn",
14578
- "selectMenuPortal": "_367UGW_selectMenuPortal",
14579
- "pathValue": "_367UGW_pathValue",
14580
- "runsCardHead": "_367UGW_runsCardHead",
14581
- "runsCardTime": "_367UGW_runsCardTime",
14582
- "shRowId": "_367UGW_shRowId",
14583
- "spinnerWrap": "_367UGW_spinnerWrap",
14584
- "rollbackFileStat": "_367UGW_rollbackFileStat",
14585
- "runsCardTitle": "_367UGW_runsCardTitle",
14586
- "historySections": "_367UGW_historySections",
14587
- "maskIn": "_367UGW_maskIn",
14588
- "rollbackLedger": "_367UGW_rollbackLedger",
14589
- "profileRow": "_367UGW_profileRow",
14590
- "sectionTitle": "_367UGW_sectionTitle",
14591
- "infoValue": "_367UGW_infoValue",
14592
- "rollbackLedgerMain": "_367UGW_rollbackLedgerMain",
14593
- "chatAttachmentRow": "_367UGW_chatAttachmentRow",
14594
- "shellNav": "_367UGW_shellNav",
14595
- "historyScroll": "_367UGW_historyScroll",
14596
- "skeletonTable": "_367UGW_skeletonTable",
14597
- "reportSectionRow": "_367UGW_reportSectionRow",
14598
- "diffTable": "_367UGW_diffTable",
14943
+ "progressIndeterminate": "_367UGW_progressIndeterminate",
14599
14944
  "diffStatAdd": "_367UGW_diffStatAdd",
14600
- "stepperLabel": "_367UGW_stepperLabel",
14601
- "reportText": "_367UGW_reportText",
14602
- "diffFilePath": "_367UGW_diffFilePath",
14603
- "chatEntryReference": "_367UGW_chatEntryReference",
14604
- "toastText": "_367UGW_toastText",
14605
- "logEmpty": "_367UGW_logEmpty",
14606
- "conflictLine": "_367UGW_conflictLine",
14607
- "collapseInner": "_367UGW_collapseInner",
14608
- "chatFileMeta": "_367UGW_chatFileMeta",
14609
- "skeletonCard": "_367UGW_skeletonCard",
14610
- "rollbackFileIcon": "_367UGW_rollbackFileIcon",
14611
- "logScroll": "_367UGW_logScroll",
14612
- "profileRowMeta": "_367UGW_profileRowMeta",
14613
- "dim": "_367UGW_dim",
14614
- "cellMeta": "_367UGW_cellMeta",
14615
- "snapshotList": "_367UGW_snapshotList",
14616
- "pathIssueKind": "_367UGW_pathIssueKind",
14617
- "headRow": "_367UGW_headRow",
14945
+ "pickerToolbar": "_367UGW_pickerToolbar",
14946
+ "rollbackFileStat": "_367UGW_rollbackFileStat",
14618
14947
  "chatRawBlock": "_367UGW_chatRawBlock",
14619
- "categoryDesc": "_367UGW_categoryDesc",
14620
- "errorTitle": "_367UGW_errorTitle",
14621
- "shLines": "_367UGW_shLines",
14622
- "logCounts": "_367UGW_logCounts",
14623
- "restorePlanGroupHead": "_367UGW_restorePlanGroupHead",
14624
- "confirmItem": "_367UGW_confirmItem",
14625
- "artifactActions": "_367UGW_artifactActions",
14626
- "selectTrigger": "_367UGW_selectTrigger",
14627
- "pathMappingList": "_367UGW_pathMappingList",
14628
- "pickerUnitDetail": "_367UGW_pickerUnitDetail",
14629
- "errorFooter": "_367UGW_errorFooter",
14630
- "rollbackPoints": "_367UGW_rollbackPoints",
14631
- "conflictItem": "_367UGW_conflictItem",
14632
- "libraryFooter": "_367UGW_libraryFooter",
14633
- "chatEntryRow": "_367UGW_chatEntryRow",
14634
- "activitySummaryText": "_367UGW_activitySummaryText",
14635
- "runsSummary": "_367UGW_runsSummary",
14636
- "dialogMask": "_367UGW_dialogMask",
14637
- "hiddenFile": "_367UGW_hiddenFile",
14638
- "paletteGroup": "_367UGW_paletteGroup",
14639
- "statusText": "_367UGW_statusText",
14640
- "stepperDot": "_367UGW_stepperDot",
14641
- "chatEntryScope": "_367UGW_chatEntryScope",
14642
- "chatRawSummary": "_367UGW_chatRawSummary",
14643
- "skipText": "_367UGW_skipText",
14644
- "consultDimension": "_367UGW_consultDimension",
14645
- "conflictId": "_367UGW_conflictId",
14646
- "chatBubble": "_367UGW_chatBubble",
14647
- "modeTabs": "_367UGW_modeTabs",
14648
- "shCommand": "_367UGW_shCommand",
14649
- "shSeverities": "_367UGW_shSeverities",
14650
- "rollbackToolbar": "_367UGW_rollbackToolbar",
14651
- "noticeSlot": "_367UGW_noticeSlot",
14652
- "diffNoHead": "_367UGW_diffNoHead",
14653
- "diffCellAdd": "_367UGW_diffCellAdd",
14654
- "infoHint": "_367UGW_infoHint",
14655
- "chatFileName": "_367UGW_chatFileName",
14656
- "runsWarnNoteDetail": "_367UGW_runsWarnNoteDetail",
14657
- "progressDetail": "_367UGW_progressDetail",
14658
- "segGroup": "_367UGW_segGroup",
14948
+ "snapshotList": "_367UGW_snapshotList",
14949
+ "rollbackRemoved": "_367UGW_rollbackRemoved",
14950
+ "runsOptionTag": "_367UGW_runsOptionTag",
14951
+ "toolRow": "_367UGW_toolRow",
14659
14952
  "toastGlyph": "_367UGW_toastGlyph",
14953
+ "artifactRow": "_367UGW_artifactRow",
14954
+ "rollbackLedger": "_367UGW_rollbackLedger",
14660
14955
  "radioLabel": "_367UGW_radioLabel",
14661
- "sectionSubtitle": "_367UGW_sectionSubtitle",
14662
- "updateVersionArrow": "_367UGW_updateVersionArrow",
14663
- "reportHeadline": "_367UGW_reportHeadline",
14664
- "historyMeta": "_367UGW_historyMeta",
14665
- "reasonLine": "_367UGW_reasonLine",
14666
- "activityCard": "_367UGW_activityCard",
14667
- "pickerUnitName": "_367UGW_pickerUnitName",
14668
- "pickerUnitNested": "_367UGW_pickerUnitNested",
14669
- "stepperStep": "_367UGW_stepperStep",
14670
- "activityRow": "_367UGW_activityRow",
14671
- "rollbackSessionItem": "_367UGW_rollbackSessionItem",
14672
- "shSectionHead": "_367UGW_shSectionHead",
14673
- "confirmItemHead": "_367UGW_confirmItemHead",
14674
14956
  "checkboxRow": "_367UGW_checkboxRow",
14675
- "sourceRow": "_367UGW_sourceRow",
14676
- "chatEntryActions": "_367UGW_chatEntryActions",
14677
- "restorePlanList": "_367UGW_restorePlanList",
14678
- "ghostButton": "_367UGW_ghostButton",
14679
- "artifactList": "_367UGW_artifactList",
14957
+ "progressDetail": "_367UGW_progressDetail",
14958
+ "runsSummaryTitle": "_367UGW_runsSummaryTitle",
14959
+ "section": "_367UGW_section",
14960
+ "kindTagWarn": "_367UGW_kindTagWarn",
14961
+ "maskOut": "_367UGW_maskOut",
14680
14962
  "primaryButton": "_367UGW_primaryButton",
14681
- "formError": "_367UGW_formError",
14682
- "listHeaderRow": "_367UGW_listHeaderRow",
14683
- "tableScroll": "_367UGW_tableScroll",
14684
- "mono": "_367UGW_mono",
14685
- "skipMeta": "_367UGW_skipMeta",
14686
- "shMetrics": "_367UGW_shMetrics",
14687
- "rowActions": "_367UGW_rowActions",
14688
- "pickerFooter": "_367UGW_pickerFooter",
14689
- "bannerSlot": "_367UGW_bannerSlot",
14690
- "conflictLineValue": "_367UGW_conflictLineValue",
14963
+ "infoHintBubble": "_367UGW_infoHintBubble",
14964
+ "planScroll": "_367UGW_planScroll",
14965
+ "pickerSubgroup": "_367UGW_pickerSubgroup",
14966
+ "logPanel": "_367UGW_logPanel",
14967
+ "segGroup": "_367UGW_segGroup",
14968
+ "navMeasure": "_367UGW_navMeasure",
14969
+ "sectionSize": "_367UGW_sectionSize",
14970
+ "paletteHint": "_367UGW_paletteHint",
14971
+ "statusPulse": "_367UGW_statusPulse",
14972
+ "runsCenter": "_367UGW_runsCenter",
14973
+ "groupNote": "_367UGW_groupNote",
14974
+ "infoHintIn": "_367UGW_infoHintIn",
14975
+ "skipCode": "_367UGW_skipCode",
14976
+ "kvRow": "_367UGW_kvRow",
14977
+ "dialogWide": "_367UGW_dialogWide",
14978
+ "secretsList": "_367UGW_secretsList",
14979
+ "chatFileIcon": "_367UGW_chatFileIcon",
14980
+ "num": "_367UGW_num",
14981
+ "pickerGroup": "_367UGW_pickerGroup",
14982
+ "reportText": "_367UGW_reportText",
14983
+ "inspectGroup": "_367UGW_inspectGroup",
14984
+ "progressBarFailed": "_367UGW_progressBarFailed",
14985
+ "tableCompact": "_367UGW_tableCompact",
14986
+ "pullScroll": "_367UGW_pullScroll",
14987
+ "categoryItem": "_367UGW_categoryItem",
14988
+ "rollbackPointMeta": "_367UGW_rollbackPointMeta",
14989
+ "shPanelTitle": "_367UGW_shPanelTitle",
14990
+ "marketFilterGrid": "_367UGW_marketFilterGrid",
14691
14991
  "activitySummary": "_367UGW_activitySummary",
14692
- "maskOut": "_367UGW_maskOut",
14693
- "cellMain": "_367UGW_cellMain",
14694
- "pathOld": "_367UGW_pathOld",
14695
- "statSegDim": "_367UGW_statSegDim",
14696
- "pickerRoot": "_367UGW_pickerRoot",
14697
- "previewScope": "_367UGW_previewScope",
14698
- "rollbackSummary": "_367UGW_rollbackSummary",
14699
- "snapshotRowIssues": "_367UGW_snapshotRowIssues",
14700
- "stepper": "_367UGW_stepper",
14701
- "wizardStepperRow": "_367UGW_wizardStepperRow",
14702
- "shRow": "_367UGW_shRow",
14703
- "shCommands": "_367UGW_shCommands",
14704
- "statusIndeterminate": "_367UGW_statusIndeterminate",
14992
+ "errorBanner": "_367UGW_errorBanner",
14705
14993
  "artifactTitle": "_367UGW_artifactTitle",
14706
- "paletteItemLabel": "_367UGW_paletteItemLabel",
14707
- "restorePlanStat": "_367UGW_restorePlanStat",
14708
- "logFilterButton": "_367UGW_logFilterButton",
14709
- "pickerTreeRow": "_367UGW_pickerTreeRow",
14710
- "historyRowMain": "_367UGW_historyRowMain",
14711
- "emptySteps": "_367UGW_emptySteps",
14712
- "rollbackPointsScroll": "_367UGW_rollbackPointsScroll",
14713
- "rollbackFileList": "_367UGW_rollbackFileList",
14714
- "shPanelTitle": "_367UGW_shPanelTitle",
14715
- "conflictOptions": "_367UGW_conflictOptions",
14716
- "snapshotRowBadges": "_367UGW_snapshotRowBadges",
14717
- "activityEmpty": "_367UGW_activityEmpty",
14718
- "chatActionBtn": "_367UGW_chatActionBtn",
14719
- "statusBar": "_367UGW_statusBar",
14994
+ "artifactDetailInner": "_367UGW_artifactDetailInner",
14995
+ "artifactDetailWrap": "_367UGW_artifactDetailWrap",
14996
+ "navDot": "_367UGW_navDot",
14720
14997
  "copyBtn": "_367UGW_copyBtn",
14721
- "kindTagError": "_367UGW_kindTagError",
14722
- "pickerUnit": "_367UGW_pickerUnit",
14723
- "optionsCard": "_367UGW_optionsCard",
14724
- "sectionRow": "_367UGW_sectionRow",
14725
- "rollbackFileDir": "_367UGW_rollbackFileDir",
14726
- "shIssue": "_367UGW_shIssue",
14727
- "sourceRowHead": "_367UGW_sourceRowHead",
14728
- "errorLine": "_367UGW_errorLine",
14729
- "errorItem": "_367UGW_errorItem",
14730
- "reportProblemReason": "_367UGW_reportProblemReason",
14731
- "diffNoColW4": "_367UGW_diffNoColW4",
14732
- "selectMenu": "_367UGW_selectMenu",
14733
- "tableFixed": "_367UGW_tableFixed",
14734
- "navTab": "_367UGW_navTab",
14735
- "pickerToolbar": "_367UGW_pickerToolbar",
14736
- "progressBarFailed": "_367UGW_progressBarFailed",
14737
- "selectLabel": "_367UGW_selectLabel",
14738
- "sourcePaths": "_367UGW_sourcePaths",
14739
- "selectOptionLabel": "_367UGW_selectOptionLabel",
14740
- "secretsList": "_367UGW_secretsList",
14741
- "chatEntryTime": "_367UGW_chatEntryTime",
14742
- "kindTagOk": "_367UGW_kindTagOk",
14743
- "skeletonBlock": "_367UGW_skeletonBlock",
14744
- "chatFileCard": "_367UGW_chatFileCard",
14745
- "statusPulse": "_367UGW_statusPulse",
14746
- "runsWarnNote": "_367UGW_runsWarnNote",
14747
- "actionRowTop": "_367UGW_actionRowTop",
14748
- "diffScroll": "_367UGW_diffScroll",
14749
- "spinner": "_367UGW_spinner",
14750
- "progressBlock": "_367UGW_progressBlock",
14751
- "shRowActions": "_367UGW_shRowActions",
14752
- "diffCellDel": "_367UGW_diffCellDel",
14753
- "diffPane": "_367UGW_diffPane",
14754
- "shSectionTitle": "_367UGW_shSectionTitle",
14755
- "rollbackGroupUnit": "_367UGW_rollbackGroupUnit",
14756
- "artifactBadges": "_367UGW_artifactBadges",
14757
- "rollbackPointTop": "_367UGW_rollbackPointTop",
14758
- "skeletonRow": "_367UGW_skeletonRow",
14759
- "stepperConnector": "_367UGW_stepperConnector",
14760
- "snapshotRowFacts": "_367UGW_snapshotRowFacts",
14761
- "errorBanner": "_367UGW_errorBanner",
14762
- "diffNoAdd": "_367UGW_diffNoAdd",
14763
- "progressBarDone": "_367UGW_progressBarDone",
14764
- "librarySearch": "_367UGW_librarySearch",
14765
- "shSummary": "_367UGW_shSummary",
14766
- "updateVersionTarget": "_367UGW_updateVersionTarget",
14767
- "pathNew": "_367UGW_pathNew",
14768
- "dialogCard": "_367UGW_dialogCard",
14769
- "paletteList": "_367UGW_paletteList",
14770
- "toastIn": "_367UGW_toastIn",
14771
- "snapshotRowText": "_367UGW_snapshotRowText",
14772
- "artifactExpand": "_367UGW_artifactExpand",
14773
- "statusAction": "_367UGW_statusAction",
14998
+ "pickerList": "_367UGW_pickerList",
14999
+ "noticeLine": "_367UGW_noticeLine",
14774
15000
  "actionRow": "_367UGW_actionRow",
14775
- "progressIndeterminate": "_367UGW_progressIndeterminate",
14776
- "toolRow": "_367UGW_toolRow",
14777
- "sectionSize": "_367UGW_sectionSize",
14778
- "pickerOverlay": "_367UGW_pickerOverlay",
14779
- "detailLines": "_367UGW_detailLines",
14780
- "shMetric": "_367UGW_shMetric",
14781
- "snapshotRowMeta": "_367UGW_snapshotRowMeta",
14782
- "cliCommand": "_367UGW_cliCommand",
14783
- "restorePlanRow": "_367UGW_restorePlanRow",
14784
- "reportDetails": "_367UGW_reportDetails",
14785
- "restorePlanPath": "_367UGW_restorePlanPath",
14786
- "conflictHead": "_367UGW_conflictHead",
14787
- "spin": "_367UGW_spin",
14788
- "aboutLinkRow": "_367UGW_aboutLinkRow",
14789
- "statusMeta": "_367UGW_statusMeta",
14790
- "pickerChevronSpacer": "_367UGW_pickerChevronSpacer",
14791
- "groupHeader": "_367UGW_groupHeader",
14792
- "statusProgress": "_367UGW_statusProgress",
14793
- "artifactName": "_367UGW_artifactName",
14794
- "planScroll": "_367UGW_planScroll",
14795
- "updateNotesLoading": "_367UGW_updateNotesLoading",
14796
- "snapshotRowHeader": "_367UGW_snapshotRowHeader",
14797
- "conflictLineLabel": "_367UGW_conflictLineLabel",
14798
- "infoHintBubble": "_367UGW_infoHintBubble",
14799
- "marketReviewPage": "_367UGW_marketReviewPage",
14800
- "fillViewport": "_367UGW_fillViewport",
14801
- "collapse": "_367UGW_collapse",
14802
- "empty": "_367UGW_empty",
14803
- "errorActionLabel": "_367UGW_errorActionLabel",
14804
- "rollbackGroup": "_367UGW_rollbackGroup",
14805
- "field": "_367UGW_field",
14806
- "reportProblemText": "_367UGW_reportProblemText",
14807
- "shPanelHead": "_367UGW_shPanelHead",
14808
- "paletteInput": "_367UGW_paletteInput",
14809
- "cliName": "_367UGW_cliName",
14810
- "pickerCount": "_367UGW_pickerCount",
14811
- "restorePlanRowStatic": "_367UGW_restorePlanRowStatic",
14812
- "infoHintBtn": "_367UGW_infoHintBtn",
14813
- "taskTitle": "_367UGW_taskTitle",
15001
+ "diffScroll": "_367UGW_diffScroll",
15002
+ "statusText": "_367UGW_statusText",
15003
+ "activityTitle": "_367UGW_activityTitle",
14814
15004
  "optionsRow": "_367UGW_optionsRow",
14815
- "diffNoColW3": "_367UGW_diffNoColW3",
14816
- "progressTrack": "_367UGW_progressTrack",
14817
- "skeletonCards": "_367UGW_skeletonCards",
14818
- "confirmScroll": "_367UGW_confirmScroll",
14819
- "pullScroll": "_367UGW_pullScroll",
14820
- "nextStepsGroup": "_367UGW_nextStepsGroup",
14821
- "shMetricValue": "_367UGW_shMetricValue",
14822
- "snapshotRowMain": "_367UGW_snapshotRowMain",
14823
- "selectMenuIn": "_367UGW_selectMenuIn",
14824
- "indet": "_367UGW_indet",
14825
- "shMetaDot": "_367UGW_shMetaDot",
14826
- "logEntry": "_367UGW_logEntry",
14827
- "skeletonTableRow": "_367UGW_skeletonTableRow",
15005
+ "conflictList": "_367UGW_conflictList",
15006
+ "artifactMain": "_367UGW_artifactMain",
15007
+ "dialogContentCenter": "_367UGW_dialogContentCenter",
15008
+ "consultSection": "_367UGW_consultSection",
15009
+ "shSectionHead": "_367UGW_shSectionHead",
15010
+ "runsCardHead": "_367UGW_runsCardHead",
15011
+ "spinner": "_367UGW_spinner",
15012
+ "chatRawSummary": "_367UGW_chatRawSummary",
15013
+ "bannerSlot": "_367UGW_bannerSlot",
15014
+ "card": "_367UGW_card",
15015
+ "tableFixed": "_367UGW_tableFixed",
14828
15016
  "diffGroupToggle": "_367UGW_diffGroupToggle",
14829
- "shPanel": "_367UGW_shPanel",
14830
- "rollbackSessionId": "_367UGW_rollbackSessionId",
14831
- "updateVersionRow": "_367UGW_updateVersionRow",
14832
- "section": "_367UGW_section",
14833
- "runsSummaryTitle": "_367UGW_runsSummaryTitle",
14834
- "runsOption": "_367UGW_runsOption",
14835
- "statStrip": "_367UGW_statStrip",
14836
- "shRowTop": "_367UGW_shRowTop",
14837
- "activityResultOk": "_367UGW_activityResultOk",
14838
- "skeletonTableCell": "_367UGW_skeletonTableCell",
14839
- "reportBody": "_367UGW_reportBody",
14840
- "shRowMeta": "_367UGW_shRowMeta",
14841
- "skipRow": "_367UGW_skipRow",
14842
- "chatRawPre": "_367UGW_chatRawPre",
14843
- "navMoreRoot": "_367UGW_navMoreRoot",
14844
- "marketFilterMeta": "_367UGW_marketFilterMeta",
14845
- "rollbackDeleted": "_367UGW_rollbackDeleted",
14846
- "shHeaderTrailing": "_367UGW_shHeaderTrailing",
15017
+ "progressLabel": "_367UGW_progressLabel",
15018
+ "rowActions": "_367UGW_rowActions",
15019
+ "reportWarningRow": "_367UGW_reportWarningRow",
15020
+ "conflictLineLabel": "_367UGW_conflictLineLabel",
14847
15021
  "resultFooter": "_367UGW_resultFooter",
15022
+ "consultScroll": "_367UGW_consultScroll",
15023
+ "errorItem": "_367UGW_errorItem",
15024
+ "chatEntryStack": "_367UGW_chatEntryStack",
15025
+ "runsOptionTitle": "_367UGW_runsOptionTitle",
15026
+ "shRowFacts": "_367UGW_shRowFacts",
15027
+ "nextStepsList": "_367UGW_nextStepsList",
14848
15028
  "confirmItemDesc": "_367UGW_confirmItemDesc",
14849
- "kindTagWarn": "_367UGW_kindTagWarn",
14850
- "shellMain": "_367UGW_shellMain",
14851
- "conflictList": "_367UGW_conflictList",
14852
- "sourceRowName": "_367UGW_sourceRowName",
14853
- "statHealth": "_367UGW_statHealth",
14854
- "statusDot": "_367UGW_statusDot",
14855
- "factValue": "_367UGW_factValue",
14856
- "activityHeader": "_367UGW_activityHeader",
15029
+ "updateVersionTarget": "_367UGW_updateVersionTarget",
15030
+ "rollbackLedgerMain": "_367UGW_rollbackLedgerMain",
15031
+ "spinnerLabel": "_367UGW_spinnerLabel",
15032
+ "chatEntryNotice": "_367UGW_chatEntryNotice",
15033
+ "viewEnter": "_367UGW_viewEnter",
15034
+ "diskUsageCard": "_367UGW_diskUsageCard",
15035
+ "paletteEmpty": "_367UGW_paletteEmpty",
15036
+ "taskBody": "_367UGW_taskBody",
15037
+ "paletteItem": "_367UGW_paletteItem",
15038
+ "logDetail": "_367UGW_logDetail",
15039
+ "sectionGrid": "_367UGW_sectionGrid",
15040
+ "aboutLinkRow": "_367UGW_aboutLinkRow",
15041
+ "rollbackFileList": "_367UGW_rollbackFileList",
15042
+ "rollbackPoints": "_367UGW_rollbackPoints",
15043
+ "infoHint": "_367UGW_infoHint",
15044
+ "rollbackAdded": "_367UGW_rollbackAdded",
15045
+ "modeTab": "_367UGW_modeTab",
15046
+ "errorList": "_367UGW_errorList",
15047
+ "skeletonTableCell": "_367UGW_skeletonTableCell",
14857
15048
  "segItem": "_367UGW_segItem",
14858
- "runsOptionTitle": "_367UGW_runsOptionTitle",
14859
- "categoryItem": "_367UGW_categoryItem",
14860
- "toastViewport": "_367UGW_toastViewport",
14861
- "pickerModalBody": "_367UGW_pickerModalBody",
14862
- "warnList": "_367UGW_warnList",
14863
- "diffNoColW5": "_367UGW_diffNoColW5",
14864
- "dialogHeader": "_367UGW_dialogHeader",
14865
- "shSeverityCount": "_367UGW_shSeverityCount",
14866
- "conflictPrefix": "_367UGW_conflictPrefix",
14867
- "artifactRow": "_367UGW_artifactRow",
14868
- "badge": "_367UGW_badge",
14869
- "rollbackPointNote": "_367UGW_rollbackPointNote",
14870
- "spinnerArc": "_367UGW_spinnerArc",
14871
- "kvValue": "_367UGW_kvValue",
14872
- "kindTag": "_367UGW_kindTag",
15049
+ "shSeverity": "_367UGW_shSeverity",
15050
+ "artifactList": "_367UGW_artifactList",
15051
+ "cellTitle": "_367UGW_cellTitle",
15052
+ "sourcePaths": "_367UGW_sourcePaths",
15053
+ "chatEntryScope": "_367UGW_chatEntryScope",
15054
+ "pathValue": "_367UGW_pathValue",
15055
+ "chatEntryTime": "_367UGW_chatEntryTime",
15056
+ "rollbackSessionMeta": "_367UGW_rollbackSessionMeta",
14873
15057
  "historySummary": "_367UGW_historySummary",
15058
+ "chatEntryReference": "_367UGW_chatEntryReference",
15059
+ "snapshotRowText": "_367UGW_snapshotRowText",
15060
+ "fieldLabel": "_367UGW_fieldLabel",
15061
+ "fillCard": "_367UGW_fillCard",
15062
+ "pickerUnitDetail": "_367UGW_pickerUnitDetail",
15063
+ "pickerTreeRow": "_367UGW_pickerTreeRow",
15064
+ "chatFileName": "_367UGW_chatFileName",
15065
+ "shRow": "_367UGW_shRow",
15066
+ "cellMetaNoteText": "_367UGW_cellMetaNoteText",
15067
+ "chatActionBtn": "_367UGW_chatActionBtn",
15068
+ "groupLabel": "_367UGW_groupLabel",
15069
+ "progressBadge": "_367UGW_progressBadge",
15070
+ "paletteItemGroup": "_367UGW_paletteItemGroup",
15071
+ "skeletonShimmer": "_367UGW_skeletonShimmer",
15072
+ "stepperConnector": "_367UGW_stepperConnector",
15073
+ "dangerButton": "_367UGW_dangerButton",
15074
+ "marketFilterMeta": "_367UGW_marketFilterMeta",
15075
+ "sectionRow": "_367UGW_sectionRow",
15076
+ "skeletonBar": "_367UGW_skeletonBar",
15077
+ "paletteItemLabel": "_367UGW_paletteItemLabel",
14874
15078
  "choiceTitle": "_367UGW_choiceTitle",
14875
- "activityBadge": "_367UGW_activityBadge",
14876
- "rollbackRemoved": "_367UGW_rollbackRemoved",
14877
- "kvKey": "_367UGW_kvKey",
14878
- "rollbackMetaDot": "_367UGW_rollbackMetaDot",
14879
- "sourceRowMain": "_367UGW_sourceRowMain",
14880
- "controlRow": "_367UGW_controlRow",
14881
- "groupNote": "_367UGW_groupNote",
14882
- "logDetail": "_367UGW_logDetail",
14883
- "reasonList": "_367UGW_reasonList",
14884
- "skeletonBars": "_367UGW_skeletonBars",
14885
- "chatEntryStack": "_367UGW_chatEntryStack",
14886
- "groupList": "_367UGW_groupList",
14887
- "selectRoot": "_367UGW_selectRoot",
14888
- "runsOptionDesc": "_367UGW_runsOptionDesc",
14889
- "pickerSubgroupName": "_367UGW_pickerSubgroupName",
14890
- "compositionViewport": "_367UGW_compositionViewport",
14891
- "rollbackPointMeta": "_367UGW_rollbackPointMeta",
14892
- "libraryCount": "_367UGW_libraryCount",
14893
- "runsOptionTag": "_367UGW_runsOptionTag",
15079
+ "sectionTitleBlock": "_367UGW_sectionTitleBlock",
15080
+ "chatFileContent": "_367UGW_chatFileContent",
14894
15081
  "statusSpacer": "_367UGW_statusSpacer",
14895
- "runsCenter": "_367UGW_runsCenter",
14896
- "inspectGroup": "_367UGW_inspectGroup",
15082
+ "factValue": "_367UGW_factValue",
15083
+ "rollbackGroupHead": "_367UGW_rollbackGroupHead",
15084
+ "hiddenFile": "_367UGW_hiddenFile",
15085
+ "navTab": "_367UGW_navTab",
15086
+ "groupHintRow": "_367UGW_groupHintRow",
15087
+ "reportBlock": "_367UGW_reportBlock",
14897
15088
  "rollbackFilePath": "_367UGW_rollbackFilePath",
15089
+ "shNotes": "_367UGW_shNotes",
15090
+ "pickerChildren": "_367UGW_pickerChildren",
15091
+ "logFilterButton": "_367UGW_logFilterButton",
15092
+ "skeletonBars": "_367UGW_skeletonBars",
15093
+ "pickerChevronSpacer": "_367UGW_pickerChevronSpacer",
15094
+ "pickerSubgroupName": "_367UGW_pickerSubgroupName",
15095
+ "sectionCount": "_367UGW_sectionCount",
15096
+ "pickerFooter": "_367UGW_pickerFooter",
15097
+ "snapshotPickerHint": "_367UGW_snapshotPickerHint",
15098
+ "pickerGroupTitle": "_367UGW_pickerGroupTitle",
15099
+ "spin": "_367UGW_spin",
15100
+ "statHealthAction": "_367UGW_statHealthAction",
15101
+ "diffCellAdd": "_367UGW_diffCellAdd",
15102
+ "rollbackSessionId": "_367UGW_rollbackSessionId",
15103
+ "tableScroll": "_367UGW_tableScroll",
15104
+ "selectRoot": "_367UGW_selectRoot",
14898
15105
  "profileRowName": "_367UGW_profileRowName",
14899
- "snapshotRowName": "_367UGW_snapshotRowName",
14900
- "dialogBodyScroll": "_367UGW_dialogBodyScroll",
14901
- "conflictDetail": "_367UGW_conflictDetail",
14902
- "reportFooter": "_367UGW_reportFooter",
14903
- "logHeader": "_367UGW_logHeader",
14904
- "logJumpButton": "_367UGW_logJumpButton",
14905
- "fieldLabel": "_367UGW_fieldLabel",
14906
- "sectionTitleBlock": "_367UGW_sectionTitleBlock",
14907
- "pickerAction": "_367UGW_pickerAction",
14908
- "dialogFooter": "_367UGW_dialogFooter",
14909
- "activityRows": "_367UGW_activityRows",
14910
- "banner": "_367UGW_banner",
14911
- "groupCard": "_367UGW_groupCard",
15106
+ "sourceRow": "_367UGW_sourceRow",
14912
15107
  "itemEnter": "_367UGW_itemEnter",
14913
- "skeletonLine": "_367UGW_skeletonLine",
14914
- "marketFilterSearch": "_367UGW_marketFilterSearch",
14915
- "choiceCard": "_367UGW_choiceCard",
14916
- "rollbackTabIcon": "_367UGW_rollbackTabIcon",
14917
- "input": "_367UGW_input",
14918
- "taskPanel": "_367UGW_taskPanel",
14919
- "sourceList": "_367UGW_sourceList",
14920
- "snapshotRow": "_367UGW_snapshotRow",
14921
- "shRowFacts": "_367UGW_shRowFacts",
14922
- "aboutAuthor": "_367UGW_aboutAuthor",
14923
- "pickerMore": "_367UGW_pickerMore",
14924
- "profileRowHeader": "_367UGW_profileRowHeader",
14925
- "statusTask": "_367UGW_statusTask",
14926
- "chatEntryNotice": "_367UGW_chatEntryNotice",
14927
- "paletteEmpty": "_367UGW_paletteEmpty",
14928
- "toast": "_367UGW_toast",
14929
- "runsCounts": "_367UGW_runsCounts",
14930
- "previewScopeStats": "_367UGW_previewScopeStats",
14931
- "sectionName": "_367UGW_sectionName",
14932
- "skipList": "_367UGW_skipList",
14933
- "diffCell": "_367UGW_diffCell",
14934
15108
  "shellContent": "_367UGW_shellContent",
14935
- "progressBadgeSection": "_367UGW_progressBadgeSection",
15109
+ "historyRow": "_367UGW_historyRow",
15110
+ "chatFallbackBubble": "_367UGW_chatFallbackBubble",
15111
+ "previewScope": "_367UGW_previewScope",
15112
+ "rollbackPointsScroll": "_367UGW_rollbackPointsScroll",
15113
+ "pickerUnitName": "_367UGW_pickerUnitName",
15114
+ "infoValue": "_367UGW_infoValue",
14936
15115
  "logLine": "_367UGW_logLine",
14937
- "badgeRow": "_367UGW_badgeRow",
14938
- "artifactDetailWrap": "_367UGW_artifactDetailWrap",
14939
- "progressMeta": "_367UGW_progressMeta",
14940
- "rollbackPointActions": "_367UGW_rollbackPointActions",
14941
- "inlineDiffBox": "_367UGW_inlineDiffBox",
14942
- "shScroll": "_367UGW_shScroll",
14943
- "skipCode": "_367UGW_skipCode",
14944
- "libraryFilterCount": "_367UGW_libraryFilterCount",
14945
- "statRow": "_367UGW_statRow",
14946
- "pageEnter": "_367UGW_pageEnter",
14947
- "artifactDetailInner": "_367UGW_artifactDetailInner",
14948
- "groupItems": "_367UGW_groupItems",
14949
- "dataTable": "_367UGW_dataTable",
15116
+ "reportScroll": "_367UGW_reportScroll",
15117
+ "groupCard": "_367UGW_groupCard",
15118
+ "activityBadge": "_367UGW_activityBadge",
15119
+ "choiceCard": "_367UGW_choiceCard",
15120
+ "errorActionLabel": "_367UGW_errorActionLabel",
15121
+ "tableWrap": "_367UGW_tableWrap",
15122
+ "pickerUnitNested": "_367UGW_pickerUnitNested",
15123
+ "stepperDot": "_367UGW_stepperDot",
15124
+ "diffNoColW3": "_367UGW_diffNoColW3",
15125
+ "reportSectionRow": "_367UGW_reportSectionRow",
15126
+ "runsWarnNote": "_367UGW_runsWarnNote",
15127
+ "runsWarnNoteDetail": "_367UGW_runsWarnNoteDetail",
15128
+ "snapshotRowName": "_367UGW_snapshotRowName",
15129
+ "actionRowTop": "_367UGW_actionRowTop",
14950
15130
  "libraryFilters": "_367UGW_libraryFilters",
14951
- "restorePlanNote": "_367UGW_restorePlanNote",
14952
- "dialogIn": "_367UGW_dialogIn",
14953
- "consultSection": "_367UGW_consultSection",
14954
- "historyTime": "_367UGW_historyTime",
14955
- "hint": "_367UGW_hint",
14956
- "skeletonBar": "_367UGW_skeletonBar",
14957
- "pickerGroup": "_367UGW_pickerGroup",
14958
- "artifactMeta": "_367UGW_artifactMeta",
15131
+ "artifactExpand": "_367UGW_artifactExpand",
15132
+ "fillViewport": "_367UGW_fillViewport",
15133
+ "shMetricLabel": "_367UGW_shMetricLabel",
15134
+ "skeletonLine": "_367UGW_skeletonLine",
15135
+ "noticeSlot": "_367UGW_noticeSlot",
15136
+ "chatFileCard": "_367UGW_chatFileCard",
15137
+ "rollbackGroup": "_367UGW_rollbackGroup",
15138
+ "conflictLineValue": "_367UGW_conflictLineValue",
15139
+ "pickerCount": "_367UGW_pickerCount",
15140
+ "diffNoHead": "_367UGW_diffNoHead",
15141
+ "restorePlanGroupHead": "_367UGW_restorePlanGroupHead",
15142
+ "selectOption": "_367UGW_selectOption",
15143
+ "statHealth": "_367UGW_statHealth",
15144
+ "pathIssueKind": "_367UGW_pathIssueKind",
14959
15145
  "pagePad": "_367UGW_pagePad",
14960
- "secretFields": "_367UGW_secretFields",
14961
- "reportWarningRow": "_367UGW_reportWarningRow",
14962
- "dangerButton": "_367UGW_dangerButton",
14963
- "cellMetaNoteText": "_367UGW_cellMetaNoteText",
15146
+ "snapshotRowBadges": "_367UGW_snapshotRowBadges",
15147
+ "shRowMeta": "_367UGW_shRowMeta",
15148
+ "toastIn": "_367UGW_toastIn",
15149
+ "rollbackToolbar": "_367UGW_rollbackToolbar",
15150
+ "factLabel": "_367UGW_factLabel",
15151
+ "dialogOut": "_367UGW_dialogOut",
15152
+ "paletteList": "_367UGW_paletteList",
15153
+ "spinnerArc": "_367UGW_spinnerArc",
15154
+ "dialogHeaderRow": "_367UGW_dialogHeaderRow",
15155
+ "syncChannelBody": "_367UGW_syncChannelBody",
15156
+ "snapshotRowFacts": "_367UGW_snapshotRowFacts",
15157
+ "logHeader": "_367UGW_logHeader",
15158
+ "shMetaDot": "_367UGW_shMetaDot",
15159
+ "selectMenuIn": "_367UGW_selectMenuIn",
15160
+ "historyRowMain": "_367UGW_historyRowMain",
15161
+ "libraryFilter": "_367UGW_libraryFilter",
15162
+ "profileRowTitle": "_367UGW_profileRowTitle",
15163
+ "emptySteps": "_367UGW_emptySteps",
15164
+ "kindTagOk": "_367UGW_kindTagOk",
15165
+ "formError": "_367UGW_formError",
15166
+ "marketReviewScroll": "_367UGW_marketReviewScroll",
15167
+ "diffNoAdd": "_367UGW_diffNoAdd",
15168
+ "confirmScroll": "_367UGW_confirmScroll",
15169
+ "shellNav": "_367UGW_shellNav",
15170
+ "shLines": "_367UGW_shLines",
15171
+ "progressBarDone": "_367UGW_progressBarDone",
15172
+ "progressPercent": "_367UGW_progressPercent",
15173
+ "statusIndeterminate": "_367UGW_statusIndeterminate",
15174
+ "stepper": "_367UGW_stepper",
15175
+ "ghostButton": "_367UGW_ghostButton",
15176
+ "conflictPrefix": "_367UGW_conflictPrefix",
15177
+ "runsCounts": "_367UGW_runsCounts",
15178
+ "diffNo": "_367UGW_diffNo",
15179
+ "rollbackPointActions": "_367UGW_rollbackPointActions",
14964
15180
  "dialogClose": "_367UGW_dialogClose",
14965
- "reportBlock": "_367UGW_reportBlock",
14966
- "reportView": "_367UGW_reportView",
14967
- "activityTitle": "_367UGW_activityTitle",
14968
- "progressBadgeCount": "_367UGW_progressBadgeCount",
14969
- "errorReason": "_367UGW_errorReason",
14970
- "navStrip": "_367UGW_navStrip",
14971
- "rollbackAdded": "_367UGW_rollbackAdded",
14972
- "rollbackSessionMeta": "_367UGW_rollbackSessionMeta",
14973
- "reportProblemHead": "_367UGW_reportProblemHead"
15181
+ "groupList": "_367UGW_groupList",
15182
+ "skipText": "_367UGW_skipText",
15183
+ "previewScopeOff": "_367UGW_previewScopeOff",
15184
+ "skeletonBlock": "_367UGW_skeletonBlock",
15185
+ "rollbackGroupUnit": "_367UGW_rollbackGroupUnit",
15186
+ "kindTag": "_367UGW_kindTag",
15187
+ "restorePlanStat": "_367UGW_restorePlanStat",
15188
+ "activityCard": "_367UGW_activityCard",
15189
+ "snapshotPickerRow": "_367UGW_snapshotPickerRow",
15190
+ "rollbackFileDir": "_367UGW_rollbackFileDir",
15191
+ "stepperStep": "_367UGW_stepperStep",
15192
+ "stepperLabel": "_367UGW_stepperLabel",
15193
+ "activityRow": "_367UGW_activityRow",
15194
+ "diffHunkRow": "_367UGW_diffHunkRow",
15195
+ "artifactName": "_367UGW_artifactName",
15196
+ "infoHintBtn": "_367UGW_infoHintBtn",
15197
+ "skeletonTable": "_367UGW_skeletonTable",
15198
+ "activityRows": "_367UGW_activityRows",
15199
+ "diffCellDel": "_367UGW_diffCellDel",
15200
+ "profileRow": "_367UGW_profileRow",
15201
+ "marketFilterSearch": "_367UGW_marketFilterSearch",
15202
+ "headRow": "_367UGW_headRow",
15203
+ "activityKind": "_367UGW_activityKind",
15204
+ "activityResultOk": "_367UGW_activityResultOk",
15205
+ "sourceRowHead": "_367UGW_sourceRowHead",
15206
+ "historySections": "_367UGW_historySections",
15207
+ "restorePlanRowStatic": "_367UGW_restorePlanRowStatic",
15208
+ "rollbackGroupTitle": "_367UGW_rollbackGroupTitle",
15209
+ "paletteGroup": "_367UGW_paletteGroup",
15210
+ "pickerUnit": "_367UGW_pickerUnit",
15211
+ "shHeaderTrailing": "_367UGW_shHeaderTrailing",
15212
+ "diffNoColW5": "_367UGW_diffNoColW5",
15213
+ "updateVersionRow": "_367UGW_updateVersionRow",
15214
+ "paletteInput": "_367UGW_paletteInput",
15215
+ "snapshotRowIssues": "_367UGW_snapshotRowIssues",
15216
+ "diffNoColW6": "_367UGW_diffNoColW6",
15217
+ "rollbackSessionItem": "_367UGW_rollbackSessionItem",
15218
+ "activityHeader": "_367UGW_activityHeader",
15219
+ "shPanelHead": "_367UGW_shPanelHead",
15220
+ "runsCardTitle": "_367UGW_runsCardTitle",
15221
+ "reasonLine": "_367UGW_reasonLine",
15222
+ "pickerGroupTitleName": "_367UGW_pickerGroupTitleName",
15223
+ "diskUsageScroll": "_367UGW_diskUsageScroll",
15224
+ "chatBubble": "_367UGW_chatBubble",
15225
+ "shSummary": "_367UGW_shSummary",
15226
+ "selectChevron": "_367UGW_selectChevron",
15227
+ "chatAttachmentRow": "_367UGW_chatAttachmentRow",
15228
+ "dialogIn": "_367UGW_dialogIn",
15229
+ "snapshotRowMain": "_367UGW_snapshotRowMain"
14974
15230
  };
14975
15231
  //#endregion
14976
15232
  //#region src/client/common/Modal.tsx
@@ -15458,6 +15714,67 @@ function CommandPalette({ open, onClose, commands, ctx, onRun, t }) {
15458
15714
  });
15459
15715
  }
15460
15716
  //#endregion
15717
+ //#region src/ui/badge-tone.ts
15718
+ /** 四态 → 原生 tone(ok=success / warn=warning / error=danger / info=info)。 */
15719
+ const BADGE_TONE = {
15720
+ ok: "success",
15721
+ info: "info",
15722
+ warn: "warning",
15723
+ error: "danger"
15724
+ };
15725
+ /** 取某个四态对应的原生 tone;未知输入按 info 处理(调用方给的是字面量联合,此为防御)。 */
15726
+ function badgeTone(kind) {
15727
+ return BADGE_TONE[kind] ?? "info";
15728
+ }
15729
+ //#endregion
15730
+ //#region src/client/common/host-primitives.ts
15731
+ let cached;
15732
+ /** 取一次宿主原语包(**每个进程只试一次**,失败记 null 不再重试)。 */
15733
+ function hostPrimitives() {
15734
+ if (cached !== void 0) return cached;
15735
+ cached = null;
15736
+ try {
15737
+ const loaded = typeof require === "function" ? require("@deepseek-ai/dsh-client-ui-primitives") : null;
15738
+ if (loaded !== null && typeof loaded === "object") cached = loaded;
15739
+ } catch {
15740
+ cached = null;
15741
+ }
15742
+ return cached;
15743
+ }
15744
+ /** DSH 自带的文件类型图标(拿不到回 null,调用方回落自己的画法)。 */
15745
+ function hostFileTypeIcon() {
15746
+ const icon = hostPrimitives()?.FileTypeIcon;
15747
+ if (typeof icon === "function" || typeof icon === "object") return icon;
15748
+ return null;
15749
+ }
15750
+ /**
15751
+ * DSH 自带的只读标签(徽章):与宿主同一颗组件、同一套调色板,拿不到回 null
15752
+ * (调用方回落本仓库的 `.badge[data-kind]` 样式)。
15753
+ */
15754
+ function hostTag() {
15755
+ const tag = hostPrimitives()?.Tag;
15756
+ if (typeof tag === "function" || typeof tag === "object") return tag;
15757
+ return null;
15758
+ }
15759
+ /**
15760
+ * DSH 自带的图标组件(按导出名取;拿不到回 null ⇒ 调用方回落本仓库的图标)。
15761
+ *
15762
+ * 为什么按名字取而不是顶层 import:与 FileTypeIcon / projectUserText 同一条纪律(老宿主没有
15763
+ * 这份模块表,顶层 import 会把整个浏览器半打挂);**为什么要用宿主图标**(2026-10-17 用户要求):
15764
+ * 复制按钮在 DSH 里是 `IconCopyOutlineRegular → IconCheckOutlineRegular` 的**瞬时切换**(无形变动画),
15765
+ * 回退用 `IconRefreshOutlineRegular` —— 与动作行同框时字形、描边、视觉重量才与原生一致。
15766
+ */
15767
+ function hostIcon(name) {
15768
+ const icon = hostPrimitives()?.[name];
15769
+ if (typeof icon === "function" || typeof icon === "object") return icon;
15770
+ return null;
15771
+ }
15772
+ /** DSH 自带的用户正文投影(把会话引用/斜杠名渲染成 chip;拿不到回 null)。 */
15773
+ function hostUserTextProjector() {
15774
+ const project = hostPrimitives()?.projectUserText;
15775
+ return typeof project === "function" ? project : null;
15776
+ }
15777
+ //#endregion
15461
15778
  //#region src/client/common/ui.tsx
15462
15779
  /**
15463
15780
  * 统一按钮(primary=主操作 / ghost=次操作 / danger=危险操作)。
@@ -15546,10 +15863,30 @@ function StatusDot({ kind = "idle", pulse }) {
15546
15863
  "aria-hidden": "true"
15547
15864
  });
15548
15865
  }
15549
- /** 状态徽章(info=业务色 / ok=成功 / warn=警告 / error=错误)。 */
15866
+ /**
15867
+ * 状态徽章(info=业务色 / ok=成功 / warn=警告 / error=错误)。
15868
+ *
15869
+ * **优先复用宿主的 `Tag`**(DSH 原生只读标签,与设置页/插件清单里那枚同源):四态映射到
15870
+ * 原生调色板的 success / info / warning / danger(映射表在 `src/ui/badge-tone.ts`,可单测)。
15871
+ * 拿不到原生包(老宿主)时回落本仓库的 `.badge[data-kind]` —— 两条路径的语义由**同一张表**给出。
15872
+ * 原生 Tag 没有 title 入参:需要悬停提示时套一层 inline-flex 的 wrapper,不改变布局。
15873
+ */
15550
15874
  function Badge({ kind = "info", children, title }) {
15875
+ const DshTag = hostTag();
15876
+ if (DshTag !== null) {
15877
+ const tag = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DshTag, {
15878
+ tone: badgeTone(kind),
15879
+ children
15880
+ });
15881
+ return title === void 0 ? tag : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
15882
+ className: config_manager_module_css_default.badgeHost,
15883
+ title,
15884
+ children: tag
15885
+ });
15886
+ }
15551
15887
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
15552
- className: `${config_manager_module_css_default.badge} ${config_manager_module_css_default[`badge${kind[0].toUpperCase()}${kind.slice(1)}`] ?? ""}`,
15888
+ className: config_manager_module_css_default.badge,
15889
+ "data-kind": kind,
15553
15890
  title,
15554
15891
  children
15555
15892
  });
@@ -16129,20 +16466,20 @@ const zh$4 = {
16129
16466
  "section.settings": "设置",
16130
16467
  "section.ui": "UI 偏好",
16131
16468
  "section.providers": "Provider 与模型",
16132
- "section.plugins": "插件",
16469
+ "section.plugins": "插件清单",
16133
16470
  "section.mcp": "MCP 服务器",
16134
16471
  "section.prompts": "提示词",
16135
16472
  "section.skills": "技能",
16136
16473
  "section.agentPresets": "Agent 预设",
16137
16474
  "section.agentInstructions": "全局指令",
16138
16475
  "section.workspaces": "工作区",
16139
- "section.pluginFiles": "其他插件零散文件",
16476
+ "section.pluginFiles": "插件散落配置",
16140
16477
  "section.credentialsStatus": "凭据状态",
16141
16478
  "section.secrets": "密钥",
16142
16479
  "section.sessions": "历史会话",
16143
- "section.self": "本插件自身配置",
16144
- "section.pluginData": "其他插件数据",
16145
- "section.pluginAssets": "其他插件大文件",
16480
+ "section.self": "配置管理器设置",
16481
+ "section.pluginData": "插件数据目录",
16482
+ "section.pluginAssets": "插件大文件",
16146
16483
  "view.about": "关于",
16147
16484
  "about.snippet.environment": "### 环境 / Environment",
16148
16485
  "about.releaseNotes.rateLimited": "GitHub API 速率限制(Rate limit exceeded),请稍后再试或直接在 GitHub 上查看。",
@@ -16282,6 +16619,26 @@ const zh$4 = {
16282
16619
  "picker.sensitive": "敏感",
16283
16620
  "picker.showAll": "显示全部(共 {count} 条)",
16284
16621
  "picker.summaryImport": "将导入 {sections} 个分区 · {units} 个条目",
16622
+ "picker.pluginRoot": "插件",
16623
+ "picker.pluginLeafPlugin": "插件清单条目",
16624
+ "picker.pluginLeafConfig": "数据目录(配置)",
16625
+ "picker.pluginLeafAssets": "大文件(壁纸 / 数据库)",
16626
+ "picker.pluginAreaUnread": "未读取",
16627
+ "picker.pluginAreaAbsent": "无内容",
16628
+ "picker.pluginViewEmpty": "插件清单还没读到,先读取「插件」分区。",
16629
+ "picker.bucketPlugins": "插件分区的其他条目(补丁行 / pnpm-workspace.yaml)",
16630
+ "picker.bucketLooseFiles": "未归属到插件的配置(~/.dsh 根)",
16631
+ "picker.bucketHint": "这些条目没有可证明的插件归属,不猜;展开可逐条勾选。",
16632
+ "picker.groupHint.extensions": "这一组里的插件分区合并成一棵按插件分组的树:默认只显示一个「插件」区块,展开它才列出各个插件,插件名下面是它的清单条目、数据目录与大文件。只显示能证明的归属(内置来源表 + 插件自述 dsh.dataDirs)——「插件散落配置」没有包名信息,因此留在「未归属」里;带「设备相关」的分区默认不勾选,跨设备导入时可能不适用。",
16633
+ "group.general": "通用",
16634
+ "group.ai": "AI",
16635
+ "group.extensions": "插件与扩展",
16636
+ "group.mcp": "MCP / 工具",
16637
+ "group.customization": "定制",
16638
+ "group.automation": "自动化",
16639
+ "group.workspace": "工作区",
16640
+ "group.ui": "界面",
16641
+ "group.optional": "可选数据",
16285
16642
  "import.nothingSelected": "当前没有勾选任何要导入的内容,请把需要导入的分区或条目勾上。",
16286
16643
  "import.excludedByUser": "本次有 {count} 项被你取消勾选:未导入,也未进快照。",
16287
16644
  "import.consult.hint": "只读分析:先看结论与依据,确认后再选择要导入的内容。",
@@ -17007,20 +17364,20 @@ const en$4 = {
17007
17364
  "section.settings": "Settings",
17008
17365
  "section.ui": "UI Preferences",
17009
17366
  "section.providers": "Providers & Models",
17010
- "section.plugins": "Plugins",
17367
+ "section.plugins": "Plugin list",
17011
17368
  "section.mcp": "MCP Servers",
17012
17369
  "section.prompts": "Prompts",
17013
17370
  "section.skills": "Skills",
17014
17371
  "section.agentPresets": "Agent Presets",
17015
17372
  "section.agentInstructions": "Agent Instructions",
17016
17373
  "section.workspaces": "Workspaces",
17017
- "section.pluginFiles": "Other Plugins' Loose Files",
17374
+ "section.pluginFiles": "Plugin config files",
17018
17375
  "section.credentialsStatus": "Credentials Status",
17019
17376
  "section.secrets": "Secrets",
17020
17377
  "section.sessions": "Sessions",
17021
- "section.self": "This Plugin's Own Config",
17022
- "section.pluginData": "Other Plugins' Data",
17023
- "section.pluginAssets": "Other Plugins' Large Files",
17378
+ "section.self": "Config Manager settings",
17379
+ "section.pluginData": "Plugin data dirs",
17380
+ "section.pluginAssets": "Plugin large files",
17024
17381
  "view.about": "About",
17025
17382
  "about.snippet.environment": "### Environment",
17026
17383
  "about.releaseNotes.rateLimited": "GitHub API rate limit exceeded — please try again later, or view the release notes directly on GitHub.",
@@ -17160,6 +17517,26 @@ const en$4 = {
17160
17517
  "picker.sensitive": "Sensitive",
17161
17518
  "picker.showAll": "Show all ({count})",
17162
17519
  "picker.summaryImport": "Will import {sections} section(s) · {units} item(s)",
17520
+ "picker.pluginRoot": "Plugins",
17521
+ "picker.pluginLeafPlugin": "Plugin list entry",
17522
+ "picker.pluginLeafConfig": "Data dir (config)",
17523
+ "picker.pluginLeafAssets": "Large files (wallpapers / databases)",
17524
+ "picker.pluginAreaUnread": "Not read yet",
17525
+ "picker.pluginAreaAbsent": "No content",
17526
+ "picker.pluginViewEmpty": "The plugin list has not been read yet — read the \"Plugins\" section first.",
17527
+ "picker.bucketPlugins": "Other entries of the plugins section (patch lines / pnpm-workspace.yaml)",
17528
+ "picker.bucketLooseFiles": "Config not attributable to a plugin (~/.dsh root)",
17529
+ "picker.bucketHint": "These entries have no provable plugin ownership — we never guess; expand to tick them one by one.",
17530
+ "picker.groupHint.extensions": "The plugin sections in this group are merged into one tree grouped by plugin: by default you only see a single “Plugins” block — expand it to list the plugins, each with its list entry, data dirs and large files. Only provable ownership is shown (built-in source table + plugins that declare dsh.dataDirs) — ‘Plugin config files’ carries no package name and therefore stays under \"unowned\"; device-specific sections are unchecked by default and may not apply on another machine.",
17531
+ "group.general": "General",
17532
+ "group.ai": "AI",
17533
+ "group.extensions": "Extensions",
17534
+ "group.mcp": "MCP / Tools",
17535
+ "group.customization": "Customization",
17536
+ "group.automation": "Automation",
17537
+ "group.workspace": "Workspace",
17538
+ "group.ui": "UI",
17539
+ "group.optional": "Optional Data",
17163
17540
  "import.nothingSelected": "Nothing is selected to import — tick the sections or items you want to import.",
17164
17541
  "import.excludedByUser": "{count} item(s) were deselected: neither imported nor snapshotted.",
17165
17542
  "import.consult.hint": "Read-only analysis: review the verdict and its evidence first, then choose what to import.",
@@ -22701,6 +23078,28 @@ function kindLabel(kindKey, t) {
22701
23078
  */
22702
23079
  /** 单元名显示长度上限(配合 .pickerUnitName 的 CSS 省略做兜底;UI-16) */
22703
23080
  const UNIT_NAME_MAX = 44;
23081
+ /**
23082
+ * 「插件」一级区块在展开态表里的键(与插件包名、`bucket:<分区>` 共用 `expandedPlugins` 这张表)。
23083
+ * 默认折叠 —— 用户要求「所有插件收在一个叫插件的区块里,展开后才出现」。
23084
+ */
23085
+ const PLUGIN_ROOT_KEY = "plugin-root";
23086
+ /**
23087
+ * 分组标题的字典键(与 `ui/types.ts` 的 EXPORT_GROUPS 一一对应)。
23088
+ *
23089
+ * **顺序不在这里**:顺序由调用方给的节点顺序决定(宿主目录已按 EXPORT_GROUPS 排好),
23090
+ * 本表只负责「id → 本地化文案」这一件事(否则中英文界面会漂移)。
23091
+ */
23092
+ const GROUP_TITLE_KEY = {
23093
+ general: "group.general",
23094
+ ai: "group.ai",
23095
+ extensions: "group.extensions",
23096
+ mcp: "group.mcp",
23097
+ customization: "group.customization",
23098
+ automation: "group.automation",
23099
+ workspace: "group.workspace",
23100
+ ui: "group.ui",
23101
+ optional: "group.optional"
23102
+ };
22704
23103
  /** 单元列表容器 id(展开按钮的 aria-controls 指向它;UI-22) */
22705
23104
  function unitsId(section) {
22706
23105
  return `picker-units-${section}`;
@@ -22721,7 +23120,30 @@ function ContentPicker({ nodes, value, onChange, t, sectionLabel, loading = fals
22721
23120
  * 分组行的勾选框也照常可用(不必先展开就能整组选/取消)。
22722
23121
  */
22723
23122
  const [expandedGroups, setExpandedGroups] = (0, react.useState)({});
23123
+ /**
23124
+ * 「按插件看」的展开态(键 = 插件包名,或 \`bucket:<分区 id>\`)。
23125
+ * 默认全部折叠 —— 展开插件节点时才去读它涉及的 pluginData / pluginAssets 清单(惰性,见渲染处)。
23126
+ */
23127
+ const [expandedPlugins, setExpandedPlugins] = (0, react.useState)({});
23128
+ /**
23129
+ * 待补勾队列(键 = 「插件」一级区块或某个插件名)。
23130
+ *
23131
+ * 为什么需要它:分区清单是**惰性**读取的 —— 勾一级区块/插件时,它名下还有区域没读到(unread),
23132
+ * 那些单元此刻勾不上。若就此结束,用户会以为「全带上了」,实际包里少了数据目录/大文件。
23133
+ * 所以:先勾已知的 + 触发读取 + 入队;清单到货后(nodes 变化)自动补齐并出队。
23134
+ */
23135
+ const [pendingChecks, setPendingChecks] = (0, react.useState)([]);
22724
23136
  const visible = (0, react.useMemo)(() => filterSections(nodes, query), [nodes, query]);
23137
+ /** 「按插件看」的树:同一份 nodes 的第二个投影(纯函数在 src/ui/selection-model.ts) */
23138
+ /** 「按插件看」的完整树(无搜索过滤;纯函数在 src/ui/selection-model.ts) */
23139
+ const fullTree = (0, react.useMemo)(() => pluginTree(nodes), [nodes]);
23140
+ const filteredTree = (0, react.useMemo)(() => filterPluginTree(fullTree, query), [fullTree, query]);
23141
+ /**
23142
+ * 搜索把树过滤空时**回落到完整树**:分区名命中(如搜「插件数据目录」)应当仍能看到这一组,
23143
+ * 否则用户会在组标题下面看到一句「没有匹配」,而组里的分区明明就在那里。
23144
+ */
23145
+ const tree = filteredTree.entries.length === 0 && filteredTree.buckets.every((b) => b.units.length === 0) ? fullTree : filteredTree;
23146
+ const firstTreeSection = visible.filter((n) => isPluginTreeSection(n.section)).map((n) => n.section)[0];
22725
23147
  const summary = pickerSummary(value, nodes);
22726
23148
  /**
22727
23149
  * 未读到清单的分区数(在途 + 失败,去重;G-02):> 0 时 footer 合计必须标注
@@ -22743,6 +23165,422 @@ function ContentPicker({ nodes, value, onChange, t, sectionLabel, loading = fals
22743
23165
  };
22744
23166
  /** 该分区属于哪一侧(决定联动方向):会话侧 / 工作区侧 / 其它(两条都跑)。 */
22745
23167
  const focusOf = (section) => section === "sessions" ? "sessions" : section === "workspaces" ? "workspaces" : "both";
23168
+ /**
23169
+ * 待补勾:清单到货后把「勾一级区块/插件时还没读到」的单元补齐(见 pendingChecks 的注释)。
23170
+ *
23171
+ * 收敛判据是「该节点名下已无 unread 叶子」;只要还在读就一直排队,到齐后补一次并出队。
23172
+ * 幂等:补齐结果与当前选择等价时不写库(sameSelection),避免自激渲染。
23173
+ */
23174
+ (0, react.useEffect)(() => {
23175
+ if (pendingChecks.length === 0) return;
23176
+ const { selection, remaining } = applyPluginPendingChecks(value, nodes, tree, pendingChecks);
23177
+ setPendingChecks(remaining);
23178
+ if (!sameSelection(selection, value)) commit(selection);
23179
+ }, [
23180
+ pendingChecks,
23181
+ tree,
23182
+ nodes,
23183
+ value
23184
+ ]);
23185
+ /** 叶子的种类文案(模型不出文案;i18n 铁律)。 */
23186
+ const leafKindText = (kind) => kind === "plugin" ? t("picker.pluginLeafPlugin") : kind === "config" ? t("picker.pluginLeafConfig") : t("picker.pluginLeafAssets");
23187
+ /**
23188
+ * 桶的标题文案(无法归属到具体插件的整块分区 —— 不猜归属的结果必须显式说出来)。
23189
+ *
23190
+ * 只有两个桶:插件分区里的补丁行 / pnpm-workspace.yaml,以及 pluginFiles。两者都**不是插件**,
23191
+ * 因此不放进「插件」一级区块里。缺省回落分区显示名(新增桶时不会渲染出裸 key)。
23192
+ */
23193
+ const bucketLabel = (section) => section === "plugins" ? t("picker.bucketPlugins") : section === "pluginFiles" ? t("picker.bucketLooseFiles") : label(section);
23194
+ /**
23195
+ * 单个单元行(**唯一实现**:「按分区看」的单元与「按插件看」的桶共用同一个渲染)。
23196
+ *
23197
+ * G-01:单元名与 detail 都是**宿主下发的文本**(导入侧来自备份包内的单元名/会话名),
23198
+ * 必须同等待遇 —— 显示文本与 title 都先过 redact,且**先脱敏、后省略**(反过来的话,
23199
+ * 被截断的密钥不再匹配值形状模式而漏网)。
23200
+ */
23201
+ const renderUnitRow = (node, u, nested) => {
23202
+ const safeLabel = redact(u.label);
23203
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
23204
+ className: nested ? config_manager_module_css_default.pickerUnit + " " + config_manager_module_css_default.pickerUnitNested : config_manager_module_css_default.pickerUnit,
23205
+ children: [nested && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23206
+ className: config_manager_module_css_default.pickerChevronSpacer,
23207
+ "aria-hidden": "true"
23208
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Checkbox, {
23209
+ checked: unitChecked(value, node.section, u.id),
23210
+ onChange: (checked) => {
23211
+ commit(toggleUnit(value, nodes, u.id, checked), focusOf(node.section), {
23212
+ unitId: u.id,
23213
+ checked
23214
+ });
23215
+ },
23216
+ label: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
23217
+ className: config_manager_module_css_default.categoryItem,
23218
+ children: [
23219
+ u.blank === true ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23220
+ className: config_manager_module_css_default.pickerUnitName,
23221
+ title: safeLabel,
23222
+ children: t("picker.blankSession")
23223
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23224
+ className: config_manager_module_css_default.pickerUnitName,
23225
+ title: safeLabel,
23226
+ children: tailWeightedEllipsis(safeLabel, UNIT_NAME_MAX)
23227
+ }),
23228
+ u.lockedWith !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23229
+ title: t("picker.lockedHint"),
23230
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Badge, {
23231
+ kind: "warn",
23232
+ children: t("picker.locked")
23233
+ })
23234
+ }),
23235
+ u.fileCount !== void 0 && u.fileCount > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23236
+ className: config_manager_module_css_default.pickerCount,
23237
+ children: t("picker.fileCount", { count: String(u.fileCount) })
23238
+ }),
23239
+ unitBadge?.(node.section, u.id),
23240
+ u.detail !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23241
+ className: config_manager_module_css_default.pickerUnitDetail,
23242
+ children: redact(u.detail)
23243
+ }),
23244
+ u.sizeBytes > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23245
+ className: config_manager_module_css_default.sectionSize + " " + config_manager_module_css_default.mono,
23246
+ children: formatBytes$1(u.sizeBytes)
23247
+ })
23248
+ ]
23249
+ })
23250
+ })]
23251
+ }, u.id);
23252
+ };
23253
+ /**
23254
+ * 「插件与扩展」组里的四个插件分区合并渲染成的**一棵按插件分组的树**(用户要求:
23255
+ * 不再用「按分区 / 按插件」视图切换 —— 树就是这一组的渲染方式)。
23256
+ *
23257
+ * 只显示**能证明**的归属(宿主下发的 relatedAreas = 内置来源表 + 插件自述 dsh.dataDirs);
23258
+ * pluginFiles 没有任何包名信息,因此整块进「未归属」桶 —— 不猜,也不假装它属于某个插件。
23259
+ * 「注册表说它应该在哪儿」与「磁盘上确实有」分开渲染:unread 不可勾(展开时才去读),
23260
+ * absent 明确标「无内容」—— 否则会出现「勾了却没导出」的幽灵勾选(引擎只带走清单里真实存在的单元)。
23261
+ *
23262
+ * 纯展示:叶子仍是原来的单元 id,勾选仍走 toggleUnit / toggleSection(语义一字不改)。
23263
+ */
23264
+ const renderPluginTree = () => {
23265
+ /**
23266
+ * 「插件」一级区块(用户要求:所有插件先收在一个可折叠的区块里,展开才列出插件)。
23267
+ *
23268
+ * 默认**折叠**;**搜索时自动展开** —— 否则搜索结果会藏在折叠节点里,看起来像「没有匹配」。
23269
+ * 它的勾选框 = 所有插件名下**存在的**单元(逐个走 toggleUnit),与「未归属 / 遗留数据」桶无关:
23270
+ * 那两个桶是「无法归属的东西」,不该被「全选所有插件」顺手带上。
23271
+ */
23272
+ const rootKey = PLUGIN_ROOT_KEY;
23273
+ const rootOpen = expandedPlugins[rootKey] === true || query.trim() !== "";
23274
+ const rootState = pluginTreePickState(value, tree);
23275
+ const rootPicked = pluginTreeSelectedCount(value, tree);
23276
+ const rootTotal = pluginTreeTotalCount(tree);
23277
+ const rootSize = tree.entries.reduce((n, e) => n + e.leaves.reduce((m, l) => m + l.sizeBytes, 0), 0);
23278
+ const rootUnread = pluginTreeUnreadSections(tree);
23279
+ const body = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
23280
+ !tree.pluginsLoaded && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23281
+ className: config_manager_module_css_default.hint,
23282
+ children: t("picker.pluginViewEmpty")
23283
+ }),
23284
+ tree.pluginsLoaded && tree.entries.length === 0 && tree.buckets.every((b) => b.units.length === 0) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23285
+ className: config_manager_module_css_default.hint,
23286
+ children: t("picker.empty")
23287
+ }),
23288
+ tree.entries.map((entry) => {
23289
+ const open = expandedPlugins[entry.name] === true;
23290
+ const state = pluginEntryPickState(value, entry);
23291
+ const picked = pluginEntrySelectedCount(value, entry);
23292
+ const total = pluginEntryTotalCount(entry);
23293
+ const unread = pluginEntryUnreadSections(entry);
23294
+ const entrySize = entry.leaves.reduce((n, l) => n + l.sizeBytes, 0);
23295
+ const bodyId = "picker-plugin-" + entry.name;
23296
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
23297
+ className: config_manager_module_css_default.pickerGroup,
23298
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
23299
+ className: config_manager_module_css_default.pickerTreeRow,
23300
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
23301
+ type: "button",
23302
+ className: config_manager_module_css_default.iconBtn,
23303
+ "data-size": "sm",
23304
+ "aria-expanded": open,
23305
+ "aria-controls": bodyId,
23306
+ "aria-label": open ? t("picker.collapse") : t("picker.expand"),
23307
+ title: open ? t("picker.collapse") : t("picker.expand"),
23308
+ onClick: () => {
23309
+ if (!open) for (const s of unread) onRequestUnits?.(s);
23310
+ setExpandedPlugins({
23311
+ ...expandedPlugins,
23312
+ [entry.name]: !open
23313
+ });
23314
+ },
23315
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ExpandChevron, { open })
23316
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Checkbox, {
23317
+ checked: state === "all",
23318
+ onChange: (checked) => {
23319
+ if (!checked) {
23320
+ setPendingChecks((prev) => prev.filter((p) => p.key !== entry.name));
23321
+ commit(togglePluginEntry(value, nodes, entry, false));
23322
+ return;
23323
+ }
23324
+ for (const s of unread) onRequestUnits?.(s);
23325
+ if (unread.length > 0) setPendingChecks((prev) => prev.some((p) => p.key === entry.name) ? prev : [...prev, {
23326
+ key: entry.name,
23327
+ kind: "entry"
23328
+ }]);
23329
+ commit(togglePluginEntry(value, nodes, entry, true));
23330
+ },
23331
+ label: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
23332
+ className: config_manager_module_css_default.categoryItem,
23333
+ children: [
23334
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23335
+ className: config_manager_module_css_default.pickerUnitName,
23336
+ title: redact(entry.name),
23337
+ children: tailWeightedEllipsis(redact(entry.name), UNIT_NAME_MAX)
23338
+ }),
23339
+ state === "partial" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Badge, {
23340
+ kind: "info",
23341
+ children: t("picker.partial")
23342
+ }),
23343
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23344
+ className: config_manager_module_css_default.pickerCount,
23345
+ children: t("picker.selectedOf", {
23346
+ selected: String(picked),
23347
+ total: String(total)
23348
+ })
23349
+ }),
23350
+ entrySize > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23351
+ className: config_manager_module_css_default.sectionSize + " " + config_manager_module_css_default.mono,
23352
+ children: formatBytes$1(entrySize)
23353
+ }),
23354
+ unread.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23355
+ className: config_manager_module_css_default.pickerCount,
23356
+ children: t("picker.pluginAreaUnread")
23357
+ })
23358
+ ]
23359
+ })
23360
+ })]
23361
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Collapse, {
23362
+ open,
23363
+ id: bodyId,
23364
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
23365
+ className: config_manager_module_css_default.pickerChildren,
23366
+ children: entry.leaves.map((leaf) => {
23367
+ const kindText = leafKindText(leaf.kind);
23368
+ const leafName = leaf.kind === "plugin" ? kindText : kindText + " · " + redact(leaf.label);
23369
+ if (leaf.state !== "present") return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
23370
+ className: config_manager_module_css_default.pickerUnit + " " + config_manager_module_css_default.pickerUnitNested,
23371
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23372
+ className: config_manager_module_css_default.pickerChevronSpacer,
23373
+ "aria-hidden": "true"
23374
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
23375
+ className: config_manager_module_css_default.categoryItem,
23376
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23377
+ className: config_manager_module_css_default.pickerUnitName,
23378
+ title: redact(leaf.label),
23379
+ children: leafName
23380
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23381
+ className: config_manager_module_css_default.pickerCount,
23382
+ children: leaf.state === "unread" ? t("picker.pluginAreaUnread") : t("picker.pluginAreaAbsent")
23383
+ })]
23384
+ })]
23385
+ }, leaf.unitId);
23386
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
23387
+ className: config_manager_module_css_default.pickerUnit + " " + config_manager_module_css_default.pickerUnitNested,
23388
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23389
+ className: config_manager_module_css_default.pickerChevronSpacer,
23390
+ "aria-hidden": "true"
23391
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Checkbox, {
23392
+ checked: unitChecked(value, leaf.section, leaf.unitId),
23393
+ onChange: (checked) => {
23394
+ commit(toggleUnit(value, nodes, leaf.unitId, checked));
23395
+ },
23396
+ label: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
23397
+ className: config_manager_module_css_default.categoryItem,
23398
+ children: [
23399
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23400
+ className: config_manager_module_css_default.pickerUnitName,
23401
+ title: redact(leaf.label),
23402
+ children: leafName
23403
+ }),
23404
+ leaf.detail !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23405
+ className: config_manager_module_css_default.pickerUnitDetail,
23406
+ children: redact(leaf.detail)
23407
+ }),
23408
+ leaf.sizeBytes > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23409
+ className: config_manager_module_css_default.sectionSize + " " + config_manager_module_css_default.mono,
23410
+ children: formatBytes$1(leaf.sizeBytes)
23411
+ })
23412
+ ]
23413
+ })
23414
+ })]
23415
+ }, leaf.unitId);
23416
+ })
23417
+ })
23418
+ })]
23419
+ }, entry.name);
23420
+ })
23421
+ ] });
23422
+ const bucketsBody = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: tree.buckets.map((bucket) => {
23423
+ const node = nodes.find((n) => n.section === bucket.section);
23424
+ if (node === void 0) return null;
23425
+ const key = "bucket:" + bucket.section;
23426
+ const open = expandedPlugins[key] === true;
23427
+ const units = visibleUnits(bucket.units, showAllUnits[key] === true);
23428
+ const bodyId = "picker-bucket-" + bucket.section;
23429
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
23430
+ className: config_manager_module_css_default.pickerGroup,
23431
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
23432
+ className: config_manager_module_css_default.pickerTreeRow,
23433
+ children: [bucket.units.length > 0 || !bucket.loaded ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
23434
+ type: "button",
23435
+ className: config_manager_module_css_default.iconBtn,
23436
+ "data-size": "sm",
23437
+ "aria-expanded": open,
23438
+ "aria-controls": bodyId,
23439
+ "aria-label": open ? t("picker.collapse") : t("picker.expand"),
23440
+ title: open ? t("picker.collapse") : t("picker.expand"),
23441
+ onClick: () => {
23442
+ if (!open && !bucket.loaded) onRequestUnits?.(bucket.section);
23443
+ setExpandedPlugins({
23444
+ ...expandedPlugins,
23445
+ [key]: !open
23446
+ });
23447
+ },
23448
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ExpandChevron, { open })
23449
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23450
+ className: config_manager_module_css_default.pickerChevronSpacer,
23451
+ "aria-hidden": "true"
23452
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Checkbox, {
23453
+ checked: sectionPickState(value, node) === "all",
23454
+ onChange: (checked) => {
23455
+ commit(toggleSection(value, node, checked), focusOf(node.section));
23456
+ },
23457
+ label: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
23458
+ className: config_manager_module_css_default.categoryItem,
23459
+ children: [
23460
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23461
+ className: config_manager_module_css_default.pickerUnitName,
23462
+ children: bucketLabel(bucket.section)
23463
+ }),
23464
+ sectionPickState(value, node) === "partial" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Badge, {
23465
+ kind: "info",
23466
+ children: t("picker.partial")
23467
+ }),
23468
+ node.portability === "deviceSpecific" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Badge, {
23469
+ kind: "warn",
23470
+ children: t("picker.deviceSpecific")
23471
+ }),
23472
+ bucket.loaded && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23473
+ className: config_manager_module_css_default.pickerCount,
23474
+ children: t("picker.selectedOf", {
23475
+ selected: String(selectedUnitCount(value, node)),
23476
+ total: String(node.units.length === 0 ? node.count : node.units.length)
23477
+ })
23478
+ }),
23479
+ bucket.loaded && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InfoHint, {
23480
+ text: t("picker.bucketHint"),
23481
+ t
23482
+ })
23483
+ ]
23484
+ })
23485
+ })]
23486
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Collapse, {
23487
+ open,
23488
+ id: bodyId,
23489
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
23490
+ className: config_manager_module_css_default.pickerChildren,
23491
+ children: [units.shown.map((u) => renderUnitRow(node, u, true)), units.hidden > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
23492
+ className: config_manager_module_css_default.pickerMore,
23493
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
23494
+ type: "button",
23495
+ className: config_manager_module_css_default.ghostButton,
23496
+ "data-size": "sm",
23497
+ onClick: () => {
23498
+ setShowAllUnits({
23499
+ ...showAllUnits,
23500
+ [key]: true
23501
+ });
23502
+ },
23503
+ children: t("picker.showAll", { count: String(bucket.units.length) })
23504
+ })
23505
+ })]
23506
+ })
23507
+ })]
23508
+ }, key);
23509
+ }) });
23510
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
23511
+ className: config_manager_module_css_default.pickerGroup,
23512
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
23513
+ className: config_manager_module_css_default.pickerTreeRow,
23514
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
23515
+ type: "button",
23516
+ className: config_manager_module_css_default.iconBtn,
23517
+ "data-size": "sm",
23518
+ "aria-expanded": rootOpen,
23519
+ "aria-controls": "picker-plugin-root",
23520
+ "aria-label": rootOpen ? t("picker.collapse") : t("picker.expand"),
23521
+ title: rootOpen ? t("picker.collapse") : t("picker.expand"),
23522
+ onClick: () => {
23523
+ if (!rootOpen) for (const s of rootUnread) onRequestUnits?.(s);
23524
+ setExpandedPlugins({
23525
+ ...expandedPlugins,
23526
+ [rootKey]: !rootOpen
23527
+ });
23528
+ },
23529
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ExpandChevron, { open: rootOpen })
23530
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Checkbox, {
23531
+ checked: rootState === "all",
23532
+ onChange: (checked) => {
23533
+ if (!checked) {
23534
+ setPendingChecks((prev) => prev.filter((p) => p.kind !== "root"));
23535
+ commit(togglePluginTree(value, nodes, tree, false));
23536
+ return;
23537
+ }
23538
+ for (const s of rootUnread) onRequestUnits?.(s);
23539
+ if (!tree.pluginsLoaded || tree.entries.some((e) => pluginEntryUnreadSections(e).length > 0)) setPendingChecks((prev) => prev.some((p) => p.kind === "root") ? prev : [...prev, {
23540
+ key: rootKey,
23541
+ kind: "root"
23542
+ }]);
23543
+ commit(togglePluginTree(value, nodes, tree, true));
23544
+ },
23545
+ label: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
23546
+ className: config_manager_module_css_default.categoryItem,
23547
+ children: [
23548
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23549
+ className: config_manager_module_css_default.categoryName,
23550
+ children: t("picker.pluginRoot")
23551
+ }),
23552
+ rootState === "partial" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Badge, {
23553
+ kind: "info",
23554
+ children: t("picker.partial")
23555
+ }),
23556
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23557
+ className: config_manager_module_css_default.pickerCount,
23558
+ children: t("picker.selectedOf", {
23559
+ selected: String(rootPicked),
23560
+ total: String(rootTotal)
23561
+ })
23562
+ }),
23563
+ rootSize > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23564
+ className: config_manager_module_css_default.sectionSize + " " + config_manager_module_css_default.mono,
23565
+ children: formatBytes$1(rootSize)
23566
+ }),
23567
+ rootUnread.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23568
+ className: config_manager_module_css_default.pickerCount,
23569
+ children: t("picker.pluginAreaUnread")
23570
+ })
23571
+ ]
23572
+ })
23573
+ })]
23574
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Collapse, {
23575
+ open: rootOpen,
23576
+ id: "picker-plugin-root",
23577
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
23578
+ className: config_manager_module_css_default.pickerChildren,
23579
+ children: body
23580
+ })
23581
+ })]
23582
+ }), bucketsBody] });
23583
+ };
22746
23584
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
22747
23585
  className: config_manager_module_css_default.pickerRoot,
22748
23586
  children: [
@@ -22792,7 +23630,21 @@ function ContentPicker({ nodes, value, onChange, t, sectionLabel, loading = fals
22792
23630
  }),
22793
23631
  visible.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
22794
23632
  className: config_manager_module_css_default.pickerList,
22795
- children: visible.map((node) => {
23633
+ children: visible.map((node, nodeIndex) => {
23634
+ /**
23635
+ * 分组标题:只在**分组变化处**插一行(顺序 = 调用方给的顺序,UI 不重排)。
23636
+ * 没有 group 的调用方(导入向导 / 市场)整段不渲染 —— 行为逐像素不变。
23637
+ * 标题不是选项(DESIGN.md:更小更淡、不可选中、非首组起分隔线),
23638
+ * 因此这里用 span 而不是 Checkbox —— 免得被读成「灰掉的选项」。
23639
+ */
23640
+ const groupTitle = node.group !== void 0 && (nodeIndex === 0 || visible[nodeIndex - 1]?.group !== node.group) ? node.group : void 0;
23641
+ /**
23642
+ * 「插件与扩展」组里的四个插件分区(plugins / pluginFiles / pluginData / pluginAssets)
23643
+ * 合并成一棵按插件分组的树:只在其中**第一个出现**的分区处渲染一次(见 renderPluginTree),
23644
+ * 其余成员就地跳过 —— 顺序仍由调用方给的节点顺序决定,不引入第二个排序来源。
23645
+ * `self`(配置管理器设置)不在那四项里,照旧按普通分区行渲染。
23646
+ */
23647
+ if (isPluginTreeSection(node.section) && node.section !== firstTreeSection) return null;
22796
23648
  const state = sectionPickState(value, node);
22797
23649
  const open = expanded[node.section] === true;
22798
23650
  const picked = selectedUnitCount(value, node);
@@ -22814,7 +23666,16 @@ function ContentPicker({ nodes, value, onChange, t, sectionLabel, loading = fals
22814
23666
  };
22815
23667
  /** 本帧要渲染的单元(默认前 N 条;UI-15) */
22816
23668
  const units = visibleUnits(node.units, showAllUnits[node.section] === true);
22817
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
23669
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react.Fragment, { children: [groupTitle !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
23670
+ className: config_manager_module_css_default.pickerGroupTitle,
23671
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23672
+ className: config_manager_module_css_default.pickerGroupTitleName,
23673
+ children: t(GROUP_TITLE_KEY[groupTitle])
23674
+ }), groupTitle === "extensions" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InfoHint, {
23675
+ text: t("picker.groupHint.extensions"),
23676
+ t
23677
+ })]
23678
+ }), node.section === firstTreeSection ? renderPluginTree() : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
22818
23679
  className: config_manager_module_css_default.pickerGroup,
22819
23680
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
22820
23681
  className: config_manager_module_css_default.pickerTreeRow,
@@ -22882,138 +23743,87 @@ function ContentPicker({ nodes, value, onChange, t, sectionLabel, loading = fals
22882
23743
  ]
22883
23744
  })
22884
23745
  })]
22885
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Collapse, {
23746
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Collapse, {
22886
23747
  open,
22887
23748
  id: unitsId(node.section),
22888
- children: [groupUnits(units.shown).map((group, gi) => {
22889
- const groupState = groupPickState(value, group, node.section);
22890
- const groupPicked = groupSelectedCount(value, group, node.section);
22891
- const groupKey = node.section + ":" + (group.label ?? "__flat");
22892
- const groupOpen = group.label === null || expandedGroups[groupKey] === true;
22893
- const groupBodyId = "picker-units-" + node.section + "-g" + String(gi);
22894
- /**
22895
- * 单个单元行。G-01:单元名与 detail 都是**宿主下发的文本**(导入侧来自备份包内的
22896
- * 单元名/会话名),必须同等待遇 —— 显示文本与 title 都先过 redact,且
22897
- * **先脱敏、后省略**(反过来的话,被截断的密钥不再匹配值形状模式而漏网)。
22898
- */
22899
- const renderUnit = (u) => {
22900
- const safeLabel = redact(u.label);
22901
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
22902
- className: group.label !== null ? config_manager_module_css_default.pickerUnit + " " + config_manager_module_css_default.pickerUnitNested : config_manager_module_css_default.pickerUnit,
22903
- children: [group.label !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
22904
- className: config_manager_module_css_default.pickerChevronSpacer,
22905
- "aria-hidden": "true"
23749
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
23750
+ className: config_manager_module_css_default.pickerChildren,
23751
+ children: [groupUnits(units.shown).map((group, gi) => {
23752
+ const groupState = groupPickState(value, group, node.section);
23753
+ const groupPicked = groupSelectedCount(value, group, node.section);
23754
+ const groupKey = node.section + ":" + (group.label ?? "__flat");
23755
+ const groupOpen = group.label === null || expandedGroups[groupKey] === true;
23756
+ const groupBodyId = "picker-units-" + node.section + "-g" + String(gi);
23757
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [group.label !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
23758
+ className: config_manager_module_css_default.pickerTreeRow + " " + config_manager_module_css_default.pickerSubgroup,
23759
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
23760
+ type: "button",
23761
+ className: config_manager_module_css_default.iconBtn,
23762
+ "data-size": "sm",
23763
+ "aria-expanded": groupOpen,
23764
+ "aria-controls": groupBodyId,
23765
+ "aria-label": groupOpen ? t("picker.collapse") : t("picker.expand"),
23766
+ title: groupOpen ? t("picker.collapse") : t("picker.expand"),
23767
+ onClick: () => {
23768
+ setExpandedGroups({
23769
+ ...expandedGroups,
23770
+ [groupKey]: !groupOpen
23771
+ });
23772
+ },
23773
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ExpandChevron, { open: groupOpen })
22906
23774
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Checkbox, {
22907
- checked: unitChecked(value, node.section, u.id),
23775
+ checked: groupState === "all",
22908
23776
  onChange: (checked) => {
22909
- commit(toggleUnit(value, nodes, u.id, checked), focusOf(node.section), {
22910
- unitId: u.id,
22911
- checked
22912
- });
23777
+ commit(toggleUnitGroup(value, node, group, checked), focusOf(node.section));
22913
23778
  },
22914
23779
  label: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
22915
23780
  className: config_manager_module_css_default.categoryItem,
22916
23781
  children: [
22917
- u.blank === true ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
22918
- className: config_manager_module_css_default.pickerUnitName,
22919
- title: safeLabel,
22920
- children: t("picker.blankSession")
22921
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
22922
- className: config_manager_module_css_default.pickerUnitName,
22923
- title: safeLabel,
22924
- children: tailWeightedEllipsis(safeLabel, UNIT_NAME_MAX)
23782
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23783
+ className: config_manager_module_css_default.pickerSubgroupName,
23784
+ title: redact(group.label),
23785
+ children: redact(group.label)
22925
23786
  }),
22926
- u.lockedWith !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
22927
- title: t("picker.lockedHint"),
22928
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Badge, {
22929
- kind: "warn",
22930
- children: t("picker.locked")
22931
- })
23787
+ groupState === "partial" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Badge, {
23788
+ kind: "info",
23789
+ children: t("picker.partial")
22932
23790
  }),
22933
- u.fileCount !== void 0 && u.fileCount > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
23791
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
22934
23792
  className: config_manager_module_css_default.pickerCount,
22935
- children: t("picker.fileCount", { count: String(u.fileCount) })
22936
- }),
22937
- unitBadge?.(node.section, u.id),
22938
- u.detail !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
22939
- className: config_manager_module_css_default.pickerUnitDetail,
22940
- children: redact(u.detail)
22941
- }),
22942
- u.sizeBytes > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
22943
- className: config_manager_module_css_default.sectionSize + " " + config_manager_module_css_default.mono,
22944
- children: formatBytes$1(u.sizeBytes)
23793
+ children: t("picker.selectedOf", {
23794
+ selected: String(groupPicked),
23795
+ total: String(group.units.length)
23796
+ })
22945
23797
  })
22946
23798
  ]
22947
23799
  })
22948
23800
  })]
22949
- }, u.id);
22950
- };
22951
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [group.label !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
22952
- className: config_manager_module_css_default.pickerTreeRow + " " + config_manager_module_css_default.pickerSubgroup,
22953
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
23801
+ }), group.label === null ? group.units.map((u) => renderUnitRow(node, u, true)) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Collapse, {
23802
+ open: groupOpen,
23803
+ id: groupBodyId,
23804
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
23805
+ className: config_manager_module_css_default.pickerChildren,
23806
+ children: group.units.map((u) => renderUnitRow(node, u, true))
23807
+ })
23808
+ })] }, groupKey);
23809
+ }), units.hidden > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
23810
+ className: config_manager_module_css_default.pickerMore,
23811
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
22954
23812
  type: "button",
22955
- className: config_manager_module_css_default.iconBtn,
23813
+ className: config_manager_module_css_default.ghostButton,
22956
23814
  "data-size": "sm",
22957
- "aria-expanded": groupOpen,
22958
- "aria-controls": groupBodyId,
22959
- "aria-label": groupOpen ? t("picker.collapse") : t("picker.expand"),
22960
- title: groupOpen ? t("picker.collapse") : t("picker.expand"),
22961
23815
  onClick: () => {
22962
- setExpandedGroups({
22963
- ...expandedGroups,
22964
- [groupKey]: !groupOpen
23816
+ setShowAllUnits({
23817
+ ...showAllUnits,
23818
+ [node.section]: true
22965
23819
  });
22966
23820
  },
22967
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ExpandChevron, { open: groupOpen })
22968
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Checkbox, {
22969
- checked: groupState === "all",
22970
- onChange: (checked) => {
22971
- commit(toggleUnitGroup(value, node, group, checked), focusOf(node.section));
22972
- },
22973
- label: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
22974
- className: config_manager_module_css_default.categoryItem,
22975
- children: [
22976
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
22977
- className: config_manager_module_css_default.pickerSubgroupName,
22978
- title: redact(group.label),
22979
- children: redact(group.label)
22980
- }),
22981
- groupState === "partial" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Badge, {
22982
- kind: "info",
22983
- children: t("picker.partial")
22984
- }),
22985
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
22986
- className: config_manager_module_css_default.pickerCount,
22987
- children: t("picker.selectedOf", {
22988
- selected: String(groupPicked),
22989
- total: String(group.units.length)
22990
- })
22991
- })
22992
- ]
22993
- })
22994
- })]
22995
- }), group.label === null ? group.units.map(renderUnit) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Collapse, {
22996
- open: groupOpen,
22997
- id: groupBodyId,
22998
- children: group.units.map(renderUnit)
22999
- })] }, groupKey);
23000
- }), units.hidden > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
23001
- className: config_manager_module_css_default.pickerMore,
23002
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
23003
- type: "button",
23004
- className: config_manager_module_css_default.ghostButton,
23005
- "data-size": "sm",
23006
- onClick: () => {
23007
- setShowAllUnits({
23008
- ...showAllUnits,
23009
- [node.section]: true
23010
- });
23011
- },
23012
- children: t("picker.showAll", { count: String(node.units.length) })
23013
- })
23014
- })]
23821
+ children: t("picker.showAll", { count: String(node.units.length) })
23822
+ })
23823
+ })]
23824
+ })
23015
23825
  })]
23016
- }, node.section);
23826
+ })] }, node.section);
23017
23827
  })
23018
23828
  }),
23019
23829
  busy && !loading && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -23831,7 +24641,8 @@ function ExportView({ api, t }) {
23831
24641
  units: got?.items ?? [],
23832
24642
  unitsUnread: got === void 0,
23833
24643
  portability: c.portability,
23834
- sensitive: c.sensitive === true
24644
+ sensitive: c.sensitive === true,
24645
+ group: c.group
23835
24646
  };
23836
24647
  });
23837
24648
  /**
@@ -37733,6 +38544,51 @@ function rollbackPreviewScope(files, removals) {
37733
38544
  removals: removals.length
37734
38545
  };
37735
38546
  }
38547
+ /** 从预览推出可勾选行(只读;绝不改任何判定) */
38548
+ function rollbackSelectionRows(preview) {
38549
+ const files = preview?.workspace?.files;
38550
+ if (!Array.isArray(files)) return [];
38551
+ const out = [];
38552
+ for (const file of files) {
38553
+ if (file === null || typeof file !== "object") continue;
38554
+ const path = typeof file.path === "string" ? file.path : "";
38555
+ if (path === "") continue;
38556
+ const row = {
38557
+ path,
38558
+ parts: splitRollbackPath(path),
38559
+ foreign: file.foreign === true
38560
+ };
38561
+ if (row.foreign && typeof file.foreignSessionId === "string" && file.foreignSessionId !== "") row.foreignSessionId = file.foreignSessionId;
38562
+ out.push(row);
38563
+ }
38564
+ return out;
38565
+ }
38566
+ /**
38567
+ * 默认勾选 = **非 foreign** 的行(B 的自动隔离口径)。用户可在弹窗里逐个改回去。
38568
+ *
38569
+ * 为什么要在这里定而不在组件里:同一条默认值要在面板与聊天两个入口一致,
38570
+ * 且「默认排除别的会话的改动」是产品决定,必须可测。
38571
+ */
38572
+ function rollbackDefaultSelection(rows) {
38573
+ return rows.filter((row) => !row.foreign).map((row) => row.path);
38574
+ }
38575
+ /**
38576
+ * 勾选集 → `onlyPaths`:
38577
+ * · **全选**(含空清单)⇒ `null`(不传字段 = 走既有全量口径,老宿主也照样工作);
38578
+ * · 真的少勾 ⇒ 把选中的清单原样传给宿主(空数组由调用方拦:宿主侧它是 400)。
38579
+ */
38580
+ function rollbackOnlyPaths(rows, selected) {
38581
+ if (rows.length === 0) return null;
38582
+ const chosen = new Set(selected);
38583
+ const picked = rows.filter((row) => chosen.has(row.path)).map((row) => row.path);
38584
+ return picked.length === rows.length ? null : picked;
38585
+ }
38586
+ /** 该不该拦住提交:清单非空、却一个都没勾(宿主会把空数组当 400) */
38587
+ function rollbackSelectionBlocksSubmit(rows, selected) {
38588
+ if (rows.length === 0) return false;
38589
+ const chosen = new Set(selected);
38590
+ return !rows.some((row) => chosen.has(row.path));
38591
+ }
37736
38592
  /**
37737
38593
  * 差异无法逐行展示时的字典键(本层**只回键**,文案在字典里)。
37738
38594
  * 未知 / 缺失原因回落 null —— 调用方按「未知原因」出话,绝不回落成「没有差异」(那是另一件事)。
@@ -37911,7 +38767,14 @@ function rollbackRewindRows(result) {
37911
38767
  leftoversTruncated: segment.leftoversTruncated === true || segment.createdAfterTruncated === true,
37912
38768
  childSessionId,
37913
38769
  detail: redactLines(segment.detail),
37914
- guidance: rollbackGuidanceRows(segment.guidance)
38770
+ guidance: rollbackGuidanceRows(segment.guidance),
38771
+ foreignSkipped: numberOrNull(segment.foreignSkipped) ?? 0,
38772
+ selectionSkipped: numberOrNull(segment.selectionSkipped) ?? 0,
38773
+ mergedCount: numberOrNull(segment.mergedCount) ?? 0,
38774
+ conflictCount: numberOrNull(segment.conflictCount) ?? 0,
38775
+ conflictPaths: redactLines(segment.conflictPaths),
38776
+ unavailableCount: numberOrNull(segment.unavailableCount) ?? 0,
38777
+ concurrentCount: numberOrNull(segment.concurrentCount) ?? 0
37915
38778
  };
37916
38779
  });
37917
38780
  }
@@ -38854,6 +39717,19 @@ function chatNodeTurn(node) {
38854
39717
  status: typeof status === "string" ? status : null
38855
39718
  };
38856
39719
  }
39720
+ /**
39721
+ * 宿主 `conversation.chat.user.content`(Factory 位)的名字。
39722
+ *
39723
+ * 0.2.1-alpha.3 起用户气泡的正文/附件/引用**整体换轨**到这条 factory:图片位
39724
+ * `conversation.chat.user.images` 是它的 children(single/session),旧的 `conversation.message.images`
39725
+ * 与节点 props 上的 `renderMessageImages` 同时删除(本机解包 0.2.1-rc.2 实测:后者 0 次出现)。
39726
+ * 因此「接管 user 之后自己复刻气泡」这条路在 0.2.1 上拿不到图片位(issue #92)——正确做法是把正文
39727
+ * **委托回宿主自己的 content factory**,图片由 ui-attachment 在该 factory 的渲染上下文里 renderSlot。
39728
+ *
39729
+ * 老宿主(≤0.2.0)没有这条 factory:`FactoryOutlet` 在定义缺失时回落调用方给的 `options.fallback`
39730
+ * ⇒ 渲染层把**自绘气泡**当 fallback 传进去,0.1.x/0.2.0 的路径逐字不变(一个版本双栈兼容)。
39731
+ */
39732
+ const CHAT_USER_CONTENT_FACTORY = "conversation.chat.user.content";
38857
39733
  /** 宿主 `compactImages` 的同一口径:**附件总数**(图片 + 文件)> 1。 */
38858
39734
  function chatEntryCompactOf(view) {
38859
39735
  return view.attachments.length > 1;
@@ -38993,6 +39869,7 @@ function buildChatEntryBubble(content) {
38993
39869
  text,
38994
39870
  rawText: content,
38995
39871
  attachments: [],
39872
+ hostAttachments: [],
38996
39873
  images: [],
38997
39874
  files: [],
38998
39875
  raw: [],
@@ -39003,6 +39880,7 @@ function buildChatEntryBubble(content) {
39003
39880
  text: "",
39004
39881
  rawText: "",
39005
39882
  attachments: [],
39883
+ hostAttachments: [],
39006
39884
  images: [],
39007
39885
  files: [],
39008
39886
  raw: content === null || content === void 0 ? [] : [{
@@ -39014,6 +39892,7 @@ function buildChatEntryBubble(content) {
39014
39892
  const texts = [];
39015
39893
  const rawTexts = [];
39016
39894
  const attachments = [];
39895
+ const hostAttachments = [];
39017
39896
  const raw = [];
39018
39897
  content.forEach((block, index) => {
39019
39898
  const record = asRecord$1(block);
@@ -39028,6 +39907,10 @@ function buildChatEntryBubble(content) {
39028
39907
  kind: "image",
39029
39908
  image: { attachment: record["attachment"] }
39030
39909
  });
39910
+ hostAttachments.push({
39911
+ type: "image",
39912
+ image: { attachment: record["attachment"] }
39913
+ });
39031
39914
  return;
39032
39915
  }
39033
39916
  if (type === "file" && record?.["attachment"] !== void 0) {
@@ -39042,6 +39925,10 @@ function buildChatEntryBubble(content) {
39042
39925
  bytes: typeof bytes === "number" && Number.isFinite(bytes) ? bytes : null
39043
39926
  }
39044
39927
  });
39928
+ hostAttachments.push({
39929
+ type: "file",
39930
+ file: record["attachment"]
39931
+ });
39045
39932
  return;
39046
39933
  }
39047
39934
  raw.push({
@@ -39054,6 +39941,7 @@ function buildChatEntryBubble(content) {
39054
39941
  text,
39055
39942
  rawText: rawTexts.join(""),
39056
39943
  attachments,
39944
+ hostAttachments,
39057
39945
  images: attachments.flatMap((item) => item.kind === "image" ? [item.image] : []),
39058
39946
  files: attachments.flatMap((item) => item.kind === "file" ? [item.file] : []),
39059
39947
  raw,
@@ -39061,6 +39949,35 @@ function buildChatEntryBubble(content) {
39061
39949
  };
39062
39950
  }
39063
39951
  /**
39952
+ * 节点 data + 气泡视图 → 宿主 content factory 的入参(0.2.1+ 委托路径的**唯一**组装点)。
39953
+ *
39954
+ * 逐字对齐宿主 `UserStyleBubble` 的 `prepared` / `facts` 两段 useMemo:
39955
+ * · `content.text` = 未投影的文本拼接(宿主 factory 自己把它交给 `conversation.user.text` 投影成 chip);
39956
+ * · `content.attachments` = 宿主形状的有序附件(同一趟走查产出);
39957
+ * · `content.extraBlocks` = rest 块原样;
39958
+ * · `referenceLabels` / `sessionLabels` / `skillNames` **只在节点真的带了该字段时出现** ——
39959
+ * 宿主用「字段是否存在」区分「没带」与「空数组」,我们传 `[]` 会改变它的分支。
39960
+ *
39961
+ * 本函数不抛(读不到就按「没带」处理),与 buildChatEntryBubble 同一条纪律。
39962
+ */
39963
+ function buildHostUserContentInput(data, bubble) {
39964
+ const content = {
39965
+ text: bubble.rawText,
39966
+ attachments: bubble.hostAttachments,
39967
+ extraBlocks: bubble.raw.map((block) => block.payload)
39968
+ };
39969
+ const facts = {};
39970
+ if (data.referenceLabels !== null) {
39971
+ content.referenceLabels = data.referenceLabels;
39972
+ facts.sessionLabels = data.referenceLabels;
39973
+ }
39974
+ if (data.skillNames !== null) facts.skillNames = data.skillNames;
39975
+ return {
39976
+ content,
39977
+ facts
39978
+ };
39979
+ }
39980
+ /**
39064
39981
  * 有序附件 → 渲染计划(宿主 `attachments.map` 的逐字同构):
39065
39982
  * · **顺序 = content 原始顺序**(绝不重排成「先图片后文件」);
39066
39983
  * · 图片**每张一次** `renderMessageImages({ images: [image], align: 'end', compact })`
@@ -39196,13 +40113,15 @@ function shouldRetryChatPoint(lookup) {
39196
40113
  function buildChatEntryView(node) {
39197
40114
  const data = readChatEntryNodeData(node);
39198
40115
  const turn = chatNodeTurn(node);
40116
+ const bubble = buildChatEntryBubble(data.content);
39199
40117
  return {
39200
40118
  turnNumber: turn?.turn ?? null,
39201
40119
  turnStatus: turn?.status ?? null,
39202
- bubble: buildChatEntryBubble(data.content),
40120
+ bubble,
39203
40121
  clock: formatChatEntryClock(data.time),
39204
40122
  referenceLabels: data.referenceLabels ?? [],
39205
- skillNames: data.skillNames ?? []
40123
+ skillNames: data.skillNames ?? [],
40124
+ hostContent: buildHostUserContentInput(data, bubble)
39206
40125
  };
39207
40126
  }
39208
40127
  /**
@@ -39748,51 +40667,36 @@ function RollbackDiffPane({ state, rt, title, fill }) {
39748
40667
  children: key === null ? rt("rollback.diff.reason.unknown") : rt(rk$2(key))
39749
40668
  }));
39750
40669
  }
40670
+ if (diff.mergeSkipped === true) return shell(/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
40671
+ className: config_manager_module_css_default.hint,
40672
+ children: rt(rk$2("rollback.diff.skipped"))
40673
+ }));
39751
40674
  if (diff.identical) return shell(/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
39752
40675
  className: config_manager_module_css_default.hint,
39753
40676
  children: rt("rollback.diff.identical")
39754
40677
  }));
39755
40678
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
39756
40679
  className: fill === true ? config_manager_module_css_default.diffPane + " " + config_manager_module_css_default.diffPaneFill : config_manager_module_css_default.diffPane,
39757
- children: [diff.degraded && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
39758
- className: config_manager_module_css_default.hint,
39759
- children: rt("rollback.diff.degraded")
39760
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DiffTable, {
39761
- hunks: diff.hunks,
39762
- title,
39763
- beforeLabel: rt("rollback.diff.before"),
39764
- afterLabel: rt("rollback.diff.after"),
39765
- sanitize: redact
39766
- })]
40680
+ children: [
40681
+ diff.merged === true && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
40682
+ className: config_manager_module_css_default.hint,
40683
+ children: rt(rk$2("rollback.diff.merged"))
40684
+ }),
40685
+ diff.degraded && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
40686
+ className: config_manager_module_css_default.hint,
40687
+ children: rt("rollback.diff.degraded")
40688
+ }),
40689
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DiffTable, {
40690
+ hunks: diff.hunks,
40691
+ title,
40692
+ beforeLabel: rt("rollback.diff.before"),
40693
+ afterLabel: rt("rollback.diff.after"),
40694
+ sanitize: redact
40695
+ })
40696
+ ]
39767
40697
  });
39768
40698
  }
39769
40699
  //#endregion
39770
- //#region src/client/common/host-primitives.ts
39771
- let cached;
39772
- /** 取一次宿主原语包(**每个进程只试一次**,失败记 null 不再重试)。 */
39773
- function hostPrimitives() {
39774
- if (cached !== void 0) return cached;
39775
- cached = null;
39776
- try {
39777
- const loaded = typeof require === "function" ? require("@deepseek-ai/dsh-client-ui-primitives") : null;
39778
- if (loaded !== null && typeof loaded === "object") cached = loaded;
39779
- } catch {
39780
- cached = null;
39781
- }
39782
- return cached;
39783
- }
39784
- /** DSH 自带的文件类型图标(拿不到回 null,调用方回落自己的画法)。 */
39785
- function hostFileTypeIcon() {
39786
- const icon = hostPrimitives()?.FileTypeIcon;
39787
- if (typeof icon === "function" || typeof icon === "object") return icon;
39788
- return null;
39789
- }
39790
- /** DSH 自带的用户正文投影(把会话引用/斜杠名渲染成 chip;拿不到回 null)。 */
39791
- function hostUserTextProjector() {
39792
- const project = hostPrimitives()?.projectUserText;
39793
- return typeof project === "function" ? project : null;
39794
- }
39795
- //#endregion
39796
40700
  //#region src/client/chat/RollbackFileIcon.tsx
39797
40701
  /**
39798
40702
  * 最后的兜底:共享图标原语的通用「文件」图标(`common/Icon.tsx` 的 `name="file"`)。
@@ -39835,7 +40739,11 @@ const rk$1 = (key) => key;
39835
40739
  * (取值域在 src/ui/rollback-view.ts,契约里已有),**绝不**从 `added === 0` 反推删除 ——
39836
40740
  * 一个文件被清空成 0 行同样是 `+0 −N`,那是另一件事。
39837
40741
  */
39838
- function FileStat({ status, added, removed, unknown, deleted, rt }) {
40742
+ function FileStat({ status, added, removed, unknown, deleted, skipped, rt }) {
40743
+ if (skipped === true) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
40744
+ className: config_manager_module_css_default.hint,
40745
+ children: rt(rk$1("rollback.preview.file.skipped"))
40746
+ });
39839
40747
  if (status === "delete") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
39840
40748
  className: config_manager_module_css_default.rollbackDeleted,
39841
40749
  children: deleted
@@ -39853,7 +40761,9 @@ function FileStat({ status, added, removed, unknown, deleted, rt }) {
39853
40761
  })] });
39854
40762
  }
39855
40763
  /** 文件清单(改动行 + 删除行)。两处调用共用这一份渲染。 */
39856
- function RollbackFileChanges({ files, removals, rt, view, renderFileIcon }) {
40764
+ function RollbackFileChanges({ files, removals, rt, view, renderFileIcon, selection }) {
40765
+ const selectedSet = selection === void 0 ? null : new Set(selection.selected);
40766
+ const foreignSet = selection === void 0 ? null : new Set(selection.foreign);
39857
40767
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
39858
40768
  className: config_manager_module_css_default.rollbackFileList,
39859
40769
  role: "list",
@@ -39868,6 +40778,16 @@ function RollbackFileChanges({ files, removals, rt, view, renderFileIcon }) {
39868
40778
  role: "listitem",
39869
40779
  "data-kind": previewFileStatusKnown(file.status) ? file.status : void 0,
39870
40780
  children: [
40781
+ selection !== void 0 && selectedSet !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
40782
+ type: "checkbox",
40783
+ checked: selectedSet.has(file.path),
40784
+ disabled: selection.disabled,
40785
+ title: selection.toggleLabel(file.path),
40786
+ "aria-label": selection.toggleLabel(file.path),
40787
+ onChange: () => {
40788
+ selection.onToggle(file.path);
40789
+ }
40790
+ }),
39871
40791
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
39872
40792
  className: config_manager_module_css_default.rollbackFileIcon,
39873
40793
  "aria-hidden": "true",
@@ -39892,6 +40812,11 @@ function RollbackFileChanges({ files, removals, rt, view, renderFileIcon }) {
39892
40812
  },
39893
40813
  children: label
39894
40814
  }),
40815
+ selection !== void 0 && foreignSet !== null && foreignSet.has(file.path) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
40816
+ className: config_manager_module_css_default.hint,
40817
+ "data-foreign": "true",
40818
+ children: selection.foreignLabel
40819
+ }),
39895
40820
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
39896
40821
  className: config_manager_module_css_default.rollbackFileStat,
39897
40822
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FileStat, {
@@ -39900,6 +40825,7 @@ function RollbackFileChanges({ files, removals, rt, view, renderFileIcon }) {
39900
40825
  removed: file.removed,
39901
40826
  unknown: rt("rollback.preview.file.unknown"),
39902
40827
  deleted: rt(rk$1("rollback.preview.file.deleted")),
40828
+ skipped: file.skipped === true,
39903
40829
  rt
39904
40830
  })
39905
40831
  })
@@ -40017,6 +40943,11 @@ function RollbackCard({ recoveryApi, t }) {
40017
40943
  * (= 最新那条对话,见下方 activeGroup 的推导)。
40018
40944
  */
40019
40945
  const [selectedSession, setSelectedSession] = (0, react.useState)(null);
40946
+ /**
40947
+ * 路径级勾选(2026-10-17 定案 A):这次回退要恢复哪些文件。
40948
+ * 初值在**每次打开预览**时按引擎的归属标记重置(别的对话改过的默认不勾,见 rollbackSelectionRows)。
40949
+ */
40950
+ const [selectedPaths, setSelectedPaths] = (0, react.useState)([]);
40020
40951
  /** 「刷新」在途:**保留旧内容**,只把刷新按钮置为在途(见 load 的 keep 语义) */
40021
40952
  const [refreshing, setRefreshing] = (0, react.useState)(false);
40022
40953
  /** 开关(issue #88)在途:置灰防重复点击,但不改开关的显示值(值只在宿主确认后变) */
@@ -40091,6 +41022,7 @@ function RollbackCard({ recoveryApi, t }) {
40091
41022
  if (!mounted.current || previewSeq.current !== seq) return;
40092
41023
  setPreviewLoading(false);
40093
41024
  setPreview(res);
41025
+ setSelectedPaths(rollbackDefaultSelection(rollbackSelectionRows(res)));
40094
41026
  setMode(rollbackPreviewVerdict(res).mode);
40095
41027
  if (!res.ok) setActionError(t(dyn(rollbackCodeKey(res.code))));
40096
41028
  }, (err) => {
@@ -40148,7 +41080,8 @@ function RollbackCard({ recoveryApi, t }) {
40148
41080
  userConfirmed: true,
40149
41081
  mode,
40150
41082
  segments: rollbackModeSegments(mode),
40151
- allowPartial
41083
+ allowPartial,
41084
+ ...onlyPaths === null ? {} : { onlyPaths }
40152
41085
  }).then((res) => {
40153
41086
  if (!mounted.current) return;
40154
41087
  setBusy(false);
@@ -40264,6 +41197,11 @@ function RollbackCard({ recoveryApi, t }) {
40264
41197
  const previewGuidance = rollbackPreviewGuidance(preview);
40265
41198
  /** 会被**改动** / 会被**删除**的文件:与聊天里的回退预览同一对读法(引擎 preview.workspace 的同一份数据)。 */
40266
41199
  const previewFiles = readRollbackPreviewFiles(preview?.workspace);
41200
+ /** 可勾选行 / 勾选结果(判定全在 src/ui/rollback-view.ts) */
41201
+ const selectionRows = rollbackSelectionRows(preview);
41202
+ const selectionBlocked = rollbackSelectionBlocksSubmit(selectionRows, selectedPaths);
41203
+ const selectionForeign = selectionRows.filter((row) => row.foreign).map((row) => row.path);
41204
+ const onlyPaths = rollbackOnlyPaths(selectionRows, selectedPaths);
40267
41205
  const previewRemovals = readRollbackPreviewRemovals(preview?.workspace);
40268
41206
  /** 三个数字的口径与「文件行」同源(rollbackPreviewScope:行数只累加两侧都可信的那部分)。 */
40269
41207
  const previewScope = rollbackPreviewScope(previewFiles, previewRemovals);
@@ -40690,7 +41628,17 @@ function RollbackCard({ recoveryApi, t }) {
40690
41628
  files: previewFiles,
40691
41629
  removals: previewRemovals,
40692
41630
  rt: t,
40693
- view: fileView
41631
+ view: fileView,
41632
+ selection: {
41633
+ selected: selectedPaths,
41634
+ foreign: selectionForeign,
41635
+ foreignLabel: t("rollback.preview.select.foreign"),
41636
+ toggleLabel: (path) => t("rollback.preview.select.toggle", { path }),
41637
+ disabled: busy,
41638
+ onToggle: (path) => {
41639
+ setSelectedPaths((prev) => prev.includes(path) ? prev.filter((item) => item !== path) : [...prev, path]);
41640
+ }
41641
+ }
40694
41642
  })
40695
41643
  }),
40696
41644
  inlineDiff !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -40736,7 +41684,7 @@ function RollbackCard({ recoveryApi, t }) {
40736
41684
  children: [
40737
41685
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
40738
41686
  variant: "danger",
40739
- disabled: busy || !canRewind,
41687
+ disabled: busy || !canRewind || selectionBlocked,
40740
41688
  loading: busy,
40741
41689
  onClick: () => {
40742
41690
  setConfirmOpen(true);
@@ -40804,6 +41752,13 @@ function RollbackCard({ recoveryApi, t }) {
40804
41752
  leftovers: segment.leftoversCount
40805
41753
  }) }),
40806
41754
  segment.childSessionId !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("rollback.rewind.result.child", { id: segment.childSessionId }) }),
41755
+ segment.foreignSkipped > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("rollback.result.foreignSkipped", { n: segment.foreignSkipped }) }),
41756
+ segment.selectionSkipped > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("rollback.result.selectionSkipped", { n: segment.selectionSkipped }) }),
41757
+ segment.mergedCount > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("rollback.result.merged", { n: segment.mergedCount }) }),
41758
+ segment.conflictCount > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("rollback.result.conflict", { n: segment.conflictCount }) }),
41759
+ segment.unavailableCount > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("rollback.result.unavailable", { n: segment.unavailableCount }) }),
41760
+ segment.concurrentCount > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("rollback.result.concurrent", { n: segment.concurrentCount }) }),
41761
+ segment.conflictPaths.map((line) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: line }, "conflict:" + line)),
40807
41762
  segment.detail.map((line) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: line }, line)),
40808
41763
  segment.guidance.map((row) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [t(dyn(row.key)), row.detail !== null ? " — " + row.detail : ""] }, row.key + (row.detail ?? "")))
40809
41764
  ]
@@ -47794,6 +48749,14 @@ const zh$2 = {
47794
48749
  "rollback.preview.notice.skipped": "{n} 项在留点时被跳过(未记录;已计入证明名单 ⇒ 不参与删除判据)",
47795
48750
  "rollback.preview.notice.truncated": "该点捕获被上限截断(超单文件上限 / 字节预算 / 文件数预算);删除判据另看证明名单(路径索引)是否完整",
47796
48751
  "rollback.preview.files.title": "将被回退的文件:",
48752
+ "rollback.preview.select.foreign": "其它对话改过",
48753
+ "rollback.preview.select.toggle": "「{path}」:勾上则这次回退恢复它",
48754
+ "rollback.result.foreignSkipped": "{n} 个文件在留点后被其它对话改过,这次没有回退它们",
48755
+ "rollback.result.merged": "{n} 个文件已合并:撤销本次对话的改动,保留其它对话的改动",
48756
+ "rollback.result.conflict": "{n} 个文件两侧改到同一处,已保持原样 —— 需要你手工处理",
48757
+ "rollback.result.unavailable": "{n} 个文件无法安全撤销(缺少中间版本 / 二进制 / 差异过大),已保持原样",
48758
+ "rollback.result.concurrent": "{n} 个文件在回退过程中又被改过,已保持原样",
48759
+ "rollback.result.selectionSkipped": "{n} 个文件按你的勾选跳过了",
47797
48760
  "rollback.preview.files.empty": "工作区与该回退点一致,无需恢复",
47798
48761
  "rollback.preview.files.unavailable": "该回退点的工作区态没有可用的记录(原因:{reason}),无需恢复",
47799
48762
  "rollback.preview.files.unavailableSession": "该回退点的工作区态没有可用的记录(原因:{reason});会话仍会回退到该点之前",
@@ -47803,6 +48766,9 @@ const zh$2 = {
47803
48766
  "rollback.preview.file.removed": "−{n}",
47804
48767
  /** 整文件删除(用户 2026-10-12 第 6 条):写「删除」而不是 `+0 −N` —— 那是两件事。 */
47805
48768
  "rollback.preview.file.deleted": "删除",
48769
+ "rollback.preview.file.skipped": "不会改动(与其它对话的改动冲突,或无法安全合并)",
48770
+ "rollback.diff.merged": "下面是合并后的结果:撤销本对话的改动、保留其它对话的改动",
48771
+ "rollback.diff.skipped": "这次回退不会改动它(与其它对话的改动冲突,或无法安全合并)",
47806
48772
  "rollback.preview.file.unknown": "行数未统计",
47807
48773
  "rollback.preview.file.unknownHint": "这些文件的行数没有统计出来(文件过大、不是文本或内容副本读不出来)—— 回退仍会照常覆盖它们。",
47808
48774
  "rollback.diff.viewHint": "查看差异:{path}",
@@ -48324,6 +49290,14 @@ const en$2 = {
48324
49290
  "rollback.preview.notice.skipped": "{n} item(s) were skipped at capture time (not recorded; they are in the proof list, so they are outside the deletion test)",
48325
49291
  "rollback.preview.notice.truncated": "Capture was truncated by a limit (per-file / byte budget / file-count budget); whether anything is deleted also depends on whether the proof list (path index) is complete",
48326
49292
  "rollback.preview.files.title": "Files that will be rewound:",
49293
+ "rollback.preview.select.foreign": "Changed by another conversation",
49294
+ "rollback.preview.select.toggle": "\"{path}\": check to restore it in this rewind",
49295
+ "rollback.result.foreignSkipped": "{n} file(s) were changed by another conversation after this point; this rewind left them untouched",
49296
+ "rollback.result.merged": "{n} file(s) merged: the change from this conversation was reverted and the change from the other conversation was kept",
49297
+ "rollback.result.conflict": "{n} file(s) were changed on both sides in the same place and were left as they are — they need your decision",
49298
+ "rollback.result.unavailable": "{n} file(s) could not be reverted safely (no common ancestor / binary / diff too large) and were left as they are",
49299
+ "rollback.result.concurrent": "{n} file(s) changed again while this rewind was running and were left as they are",
49300
+ "rollback.result.selectionSkipped": "{n} file(s) skipped by your selection",
48327
49301
  "rollback.preview.files.empty": "The workspace already matches this rollback point, nothing to restore",
48328
49302
  "rollback.preview.files.unavailable": "The workspace state of this rollback point has no usable record (reason: {reason}), nothing to restore",
48329
49303
  "rollback.preview.files.unavailableSession": "The workspace state of this rollback point has no usable record (reason: {reason}); the session will still be rewound to before this point",
@@ -48332,6 +49306,9 @@ const en$2 = {
48332
49306
  "rollback.preview.file.added": "+{n}",
48333
49307
  "rollback.preview.file.removed": "−{n}",
48334
49308
  "rollback.preview.file.deleted": "Delete",
49309
+ "rollback.preview.file.skipped": "Left unchanged (conflicts with another conversation, or cannot be merged safely)",
49310
+ "rollback.diff.merged": "Below is the merged result: the change from this conversation is reverted and the change from the other conversation is kept",
49311
+ "rollback.diff.skipped": "This rewind will not change it (it conflicts with another conversation, or cannot be merged safely)",
48335
49312
  "rollback.preview.file.unknown": "line counts not measured",
48336
49313
  "rollback.preview.file.unknownHint": "Line counts could not be measured for these files (too large, not text, or the content copy is unreadable) — the rewind will still overwrite them.",
48337
49314
  "rollback.diff.viewHint": "View diff: {path}",
@@ -49282,9 +50259,15 @@ function RollbackReviewDialog({ sessionId, turn, port, rt, t, openChildSession,
49282
50259
  *
49283
50260
  * 为什么必须接管(而不是追加):该 key 没有 children 表(宿主只对 turn-tail 声明了子位),
49284
50261
  * framework 没有「往用户消息里加 UI」的位子;唯一合法做法是 priority -1 遮蔽宿主的
49285
- * `UserMessageNodeView`,然后在自己的渲染里把那条气泡**复刻**一遍(宿主组件 / CSS Modules
49286
- * 全是 ui-chat 私有、不可导入 —— 外观靠本仓库 CSS 逼近,图片**必须**走 owner 给的
49287
- * `renderMessageImages`)。
50262
+ * `UserMessageNodeView`,然后在自己的渲染里产出那条气泡。
50263
+ *
50264
+ * 正文**谁来画**在 0.2.1-alpha.3 换过一代(issue #92):宿主把图片位搬进
50265
+ * `conversation.chat.user.content` factory 的 children,并删掉了节点 props 上的 `renderMessageImages`。
50266
+ * 因此现在的口径是 **优先委托宿主的 content factory**(`renderFactorySlot(CHAT_USER_CONTENT_FACTORY, …)`),
50267
+ * 只有在宿主**没有**注册那条 factory 时(≤0.2.0)才回落到自绘气泡 —— 自绘气泡同时是那次调用的
50268
+ * `options.fallback`,所以三格(老宿主 / 新宿主 / 宿主中途撤掉 factory)都有确定行为,
50269
+ * 不会出现空白气泡。自绘那一格图片只能走 owner 的 `renderMessageImages`(宿主的 CSS Modules 与组件
50270
+ * 全是 ui-chat 私有、不可导入,外观靠本仓库 CSS 逼近)。
49288
50271
  *
49289
50272
  * 三件硬约束(本文件是它们的落点):
49290
50273
  * ① **用户消息绝不消失**:整个子树包在 `ChatEntryErrorBoundary` 里,抛错就降级成
@@ -49307,26 +50290,31 @@ const NEWLINE = String.fromCharCode(10);
49307
50290
  */
49308
50291
  function FileCard({ file, size }) {
49309
50292
  const DshIcon = hostFileTypeIcon();
50293
+ /**
50294
+ * 元信息 = 宿主 `.fileMeta` 的**同一组合**:大写的扩展名(≤8 字符)+ 体积文本,空格连接。
50295
+ * 宿主那行是「EXT SIZE」一行的次级小字(不是我们此前那个「文件名旁边挂一个体积」的排法)。
50296
+ */
50297
+ const meta = [file.ext === null ? "" : file.ext.toUpperCase().slice(0, 8), size ?? ""].filter((part) => part !== "").join(" ");
49310
50298
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
49311
50299
  className: config_manager_module_css_default.chatFileCard,
49312
50300
  title: file.name !== "" ? file.name : void 0,
49313
- children: [
49314
- DshIcon !== null && file.name !== "" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DshIcon, {
49315
- path: file.name,
49316
- size: 14
49317
- }) : file.ext !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
49318
- className: config_manager_module_css_default.chatFileExt,
49319
- children: file.ext
49320
- }),
49321
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
50301
+ children: [DshIcon !== null && file.name !== "" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DshIcon, {
50302
+ path: file.name,
50303
+ size: 28,
50304
+ className: config_manager_module_css_default.chatFileIcon
50305
+ }) : file.ext !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
50306
+ className: config_manager_module_css_default.chatFileExt,
50307
+ children: file.ext
50308
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
50309
+ className: config_manager_module_css_default.chatFileContent,
50310
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
49322
50311
  className: config_manager_module_css_default.chatFileName,
49323
50312
  children: file.name !== "" ? file.name : "?"
49324
- }),
49325
- size !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
50313
+ }), meta !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
49326
50314
  className: config_manager_module_css_default.chatFileMeta,
49327
- children: size
49328
- })
49329
- ]
50315
+ children: meta
50316
+ })]
50317
+ })]
49330
50318
  });
49331
50319
  }
49332
50320
  /** 未知块:宿主用 JsonBlock,这里用原生 `<details>` + 预格式化 JSON(零新增依赖、零新增通道)。 */
@@ -49363,15 +50351,24 @@ function ChatEntryCopyAction({ text, t }) {
49363
50351
  if (ok) setCopied(true);
49364
50352
  });
49365
50353
  }, [copied, text]);
50354
+ /**
50355
+ * 图标 = **DSH 原生那两颗**(2026-10-17 用户要求「复制 icon 与动画都用 DSH 原生的」):
50356
+ * 宿主 MessageIconActions 的复制反馈就是 `IconCopyOutlineRegular → IconCheckOutlineRegular` 的
50357
+ * **瞬时切换**(宿主 `.action svg` 没有任何 transition/animation —— 它的「动画」就是这一次换图)。
50358
+ * 本仓库的 `CopyStateIcon`(morphicons 形变)只在**拿不到宿主图标的老宿主**上兜底。
50359
+ */
50360
+ const HostCopyIcon = hostIcon("IconCopyOutlineRegular");
50361
+ const HostCheckIcon = hostIcon("IconCheckOutlineRegular");
49366
50362
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
49367
50363
  type: "button",
49368
50364
  className: config_manager_module_css_default.chatActionBtn,
49369
50365
  "aria-label": copied ? t("chat.entry.copied") : t("chat.entry.copy"),
49370
50366
  title: copied ? t("chat.entry.copied") : t("chat.entry.copy"),
49371
50367
  onClick: onCopy,
49372
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CopyStateIcon, {
50368
+ "data-copy-state": copied ? "copied" : "idle",
50369
+ children: HostCopyIcon !== null && HostCheckIcon !== null ? copied ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(HostCheckIcon, { size: 15 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(HostCopyIcon, { size: 15 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CopyStateIcon, {
49373
50370
  done: copied,
49374
- size: 13
50371
+ size: 15
49375
50372
  })
49376
50373
  });
49377
50374
  }
@@ -49395,7 +50392,10 @@ function ChatEntryCopyAction({ text, t }) {
49395
50392
  * 订阅入口可见性信号(issue #88)。
49396
50393
  *
49397
50394
  * 为什么要在组件里订阅而不是把开关当 prop 往下传:入口是**遮蔽宿主渲染器**注册的(无常),
49398
- * 开关变化时没有任何父级会重渲染它 —— DNS 状态只能靠这条信号推。订阅开销 = 一个 Set 里的回调。
50395
+ * 开关变化时没有任何父级会重渲染它 —— 状态只能靠这条信号推。订阅开销 = 一个 Set 里的回调。
50396
+ *
50397
+ * 2026-10-17 起登记本身随开关撤销(关闭 ⇒ 让出 user cell、本组件直接卸载,宿主原生气泡接管回来),
50398
+ * 所以这里是**兜底**:万一信号已翻转而本组件还活着,也绝不画出那颗按钮。
49399
50399
  */
49400
50400
  function useRollbackEntryEnabled() {
49401
50401
  const [value, setValue] = (0, react.useState)(() => isRollbackEntryEnabled());
@@ -49404,7 +50404,7 @@ function useRollbackEntryEnabled() {
49404
50404
  }), []);
49405
50405
  return value;
49406
50406
  }
49407
- function ChatEntryBody({ node, sessionId, openFile, openSkill, renderMessageImages, t, rt, port, openChildSession, archiveParentSession, startFreshSession, openDiff, fileIcon }) {
50407
+ function ChatEntryBody({ node, sessionId, openFile, openSkill, renderMessageImages, loadImage, renderFactorySlot, t, rt, port, openChildSession, archiveParentSession, startFreshSession, openDiff, fileIcon }) {
49408
50408
  const view = (0, react.useMemo)(() => buildChatEntryView(node), [node]);
49409
50409
  const [lookup, setLookup] = (0, react.useState)(null);
49410
50410
  /** 有界重试窗口是否还开着(**状态诚实**的唯一开关,R1)—— 由状态机的 `onState` 驱动。 */
@@ -49473,10 +50473,16 @@ function ChatEntryBody({ node, sessionId, openFile, openSkill, renderMessageImag
49473
50473
  setDialogTurn(button.turn);
49474
50474
  }, [button]);
49475
50475
  const bubble = view.bubble;
50476
+ /** 回退图标同样走宿主(`IconRefreshOutlineRegular`):与复制图标同一套字形/描边;拿不到回落 RefreshIcon。 */
50477
+ const HostRefreshIcon = hostIcon("IconRefreshOutlineRegular");
49476
50478
  /**
49477
50479
  * 附件按**content 原始顺序**输出(宿主 `attachments.map` 同构):图片走 owner 的
49478
50480
  * `renderMessageImages`(每张一次调用),文件走文件卡 —— 两类**共用同一条序列**,
49479
50481
  * 绝不重排成「先图片后文件」(t4 复核 D2)。
50482
+ *
50483
+ * 这条自绘路径**只在宿主没有 content factory 时**才会上屏(见下面的 `content`):
50484
+ * 0.2.1 起 `renderMessageImages` 已不存在,此时图片位置如实显示提示文本 —— 但那一格
50485
+ * 正常情况下走的是宿主自己的 factory,根本到不了这里。
49480
50486
  */
49481
50487
  const canRenderImages = typeof renderMessageImages === "function";
49482
50488
  const attachmentNodes = planChatEntryAttachments(bubble).map((item) => item.kind === "image" ? canRenderImages ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react.Fragment, { children: renderMessageImages(item.owner) }, "image:" + String(item.index)) : null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FileCard, {
@@ -49496,40 +50502,72 @@ function ChatEntryBody({ node, sessionId, openFile, openSkill, renderMessageImag
49496
50502
  openSkill
49497
50503
  });
49498
50504
  const reasonKey = button.kind === "disabled" ? button.key : null;
50505
+ /**
50506
+ * **自绘气泡**(= 0.2.1 之前那条路径,style 与宿主 .userStack/.bubble 逐条对齐见本文件头注释)。
50507
+ *
50508
+ * 两个身份:① 老宿主(≤0.2.0)没有 `conversation.chat.user.content` 这条 factory,正文由它承担;
50509
+ * ② 新宿主上它是那次 factory 调用的 **fallback** —— 定义缺失(或宿主中途撤掉)时由
50510
+ * `FactoryOutlet` 回落,用户消息因此**永远不会**变成空白。
50511
+ *
50512
+ * 图片:这条路径只能走 owner 的 `renderMessageImages`(0.2.1 起已不存在)⇒ 那一格如实显示提示文本,
50513
+ * 而不是静默消失;新宿主正常情况下根本不会渲染到这里(走的是宿主自己的 content factory)。
50514
+ */
50515
+ const ownContent = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
50516
+ className: config_manager_module_css_default.chatEntryStack,
50517
+ children: [
50518
+ hasAttachments && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
50519
+ className: config_manager_module_css_default.chatAttachmentRow,
50520
+ "data-message-attachments": "",
50521
+ children: attachmentNodes
50522
+ }),
50523
+ bubble.showBubble && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
50524
+ className: config_manager_module_css_default.chatBubble,
50525
+ children: [bubble.text !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
50526
+ className: config_manager_module_css_default.chatBubbleText,
50527
+ children: hostText === null ? bubble.text : hostText
50528
+ }), bubble.raw.map((block) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RawBlock, {
50529
+ payload: block.payload,
50530
+ label: t("chat.entry.extraBlock"),
50531
+ truncatedLabel: (total) => t("chat.entry.truncated", { total })
50532
+ }, "raw-" + block.id))]
50533
+ }),
50534
+ !canRenderImages && bubble.images.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
50535
+ className: config_manager_module_css_default.chatEntryNotice,
50536
+ children: t("chat.entry.noImageRenderer")
50537
+ }),
50538
+ view.referenceLabels.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
50539
+ className: config_manager_module_css_default.chatEntryReference,
50540
+ "data-ref-chip": "",
50541
+ children: t("chat.entry.referenceSummary", { labels: view.referenceLabels.join(t("chat.entry.referenceSeparator")) })
50542
+ })
50543
+ ]
50544
+ });
50545
+ /**
50546
+ * 正文 / 附件 / 引用(issue #92):**优先委托宿主自己的 content factory**。
50547
+ *
50548
+ * 为什么不能再自绘:0.2.1-alpha.3 起宿主把图片位搬进 `conversation.chat.user.content` 的 children
50549
+ * (`conversation.chat.user.images`),并在节点 props 上删掉了 `renderMessageImages` —— 自己复刻气泡
50550
+ * 就必然拿不到图片位。委托之后,图片由 ui-attachment 在该 factory 的渲染上下文里 renderSlot,
50551
+ * 正文/文件卡/引用/未知块也全部回到宿主实现 ⇒ 与宿主原生气泡**同构**,且以后宿主再改图片实现也不用跟。
50552
+ *
50553
+ * 入参逐字对齐宿主 `UserStyleBubble`(`content` / `loadImage` / `facts` / `interactive: true`),
50554
+ * 组装全在纯层 `buildHostUserContentInput`。**判据不是 `typeof renderFactorySlot === 'function'`** ——
50555
+ * 该席位在新旧宿主上都存在(ui-renderer 的 standardKit 无条件发放),真正的裁决点是这条 factory
50556
+ * 注册没注册:`FactoryOutlet` 在读不到定义时渲染我们给的 `fallback`(= 上面的自绘气泡)——
50557
+ * 于是「老宿主 ≤0.2.0」「新宿主 ≥0.2.1」「宿主中途撤掉 factory」三格都有确定行为,不必开两条发布线。
50558
+ * 调用本身不吃任何副作用,返回不透明 ReactNode(React 元素),空定义时是 fallback 的元素包装。
50559
+ */
50560
+ const content = typeof renderFactorySlot === "function" ? renderFactorySlot(CHAT_USER_CONTENT_FACTORY, {
50561
+ content: view.hostContent.content,
50562
+ loadImage,
50563
+ facts: view.hostContent.facts,
50564
+ interactive: true
50565
+ }, { fallback: ownContent }) : ownContent;
49499
50566
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
49500
50567
  className: config_manager_module_css_default.chatEntryScope,
49501
50568
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
49502
50569
  className: config_manager_module_css_default.chatEntryRow,
49503
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
49504
- className: config_manager_module_css_default.chatEntryStack,
49505
- children: [
49506
- hasAttachments && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
49507
- className: config_manager_module_css_default.chatAttachmentRow,
49508
- "data-message-attachments": "",
49509
- children: attachmentNodes
49510
- }),
49511
- bubble.showBubble && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
49512
- className: config_manager_module_css_default.chatBubble,
49513
- children: [bubble.text !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
49514
- className: config_manager_module_css_default.chatBubbleText,
49515
- children: hostText === null ? bubble.text : hostText
49516
- }), bubble.raw.map((block) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RawBlock, {
49517
- payload: block.payload,
49518
- label: t("chat.entry.extraBlock"),
49519
- truncatedLabel: (total) => t("chat.entry.truncated", { total })
49520
- }, "raw-" + block.id))]
49521
- }),
49522
- !canRenderImages && bubble.images.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
49523
- className: config_manager_module_css_default.chatEntryNotice,
49524
- children: t("chat.entry.noImageRenderer")
49525
- }),
49526
- view.referenceLabels.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
49527
- className: config_manager_module_css_default.chatEntryReference,
49528
- "data-ref-chip": "",
49529
- children: t("chat.entry.referenceSummary", { labels: view.referenceLabels.join(t("chat.entry.referenceSeparator")) })
49530
- })
49531
- ]
49532
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
50570
+ children: [content, /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
49533
50571
  className: config_manager_module_css_default.chatEntryActions,
49534
50572
  children: [
49535
50573
  view.clock !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
@@ -49549,7 +50587,7 @@ function ChatEntryBody({ node, sessionId, openFile, openSkill, renderMessageImag
49549
50587
  onClick: openDialog,
49550
50588
  "data-chat-entry-window-open": windowOpen ? "" : void 0,
49551
50589
  "data-chat-entry-window-closed": windowOpen ? void 0 : "",
49552
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RefreshIcon, { size: 13 })
50590
+ children: HostRefreshIcon === null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RefreshIcon, { size: 15 }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(HostRefreshIcon, { size: 15 })
49553
50591
  })
49554
50592
  ]
49555
50593
  })]
@@ -49653,6 +50691,11 @@ function ChatEntryNodeView(props) {
49653
50691
  * 2026-10-12(用户要求「聊天内回退入口只有每条用户消息」):旧的「整回合」档连同它的偏好模块
49654
50692
  * (`chat-entry-pref` / `chat-entry-mount`)与回合尾入口(`conversation.chat.turnTail`)一并删除 ——
49655
50693
  * 入口恒为每条用户消息气泡里的那一颗,于是这里不再有偏好门,也不再需要「切档时重新评估」的订阅。
50694
+ *
50695
+ * 2026-10-17(用户要求):开关**关闭时不得再接管用户消息气泡**。原实现是「登记常驻、只收起按钮」——
50696
+ * 功能关掉之后那条气泡仍由我们代画(即使正文已委托宿主 factory,外层壳与动作行仍是我们的)。
50697
+ * 现在登记本身随开关出现 / 撤销(`registerChatNodeEntryWhenEnabled`):关掉即让出 user cell,
50698
+ * 宿主 `UserMessageNodeView` 原样接管回来。
49656
50699
  */
49657
50700
  /** 诊断(ASCII,与界面文案无关;console.* 实参不触发 i18n 守卫)。 */
49658
50701
  function warnChatNode(message) {
@@ -49705,6 +50748,35 @@ function registerChatNodeEntry(options) {
49705
50748
  return () => {};
49706
50749
  }
49707
50750
  }
50751
+ function registerChatNodeEntryWhenEnabled(options) {
50752
+ /** 当前登记的解绑函数;null = 现在没有登记(= 宿主渲染器在渲染那条 cell)。 */
50753
+ let disposeEntry = null;
50754
+ const sync = () => {
50755
+ if (options.isEnabled() === true) {
50756
+ if (disposeEntry === null) disposeEntry = registerChatNodeEntry({
50757
+ probe: options.probe,
50758
+ register: options.register,
50759
+ ...options.warn === void 0 ? {} : { warn: options.warn }
50760
+ });
50761
+ return;
50762
+ }
50763
+ if (disposeEntry !== null) {
50764
+ const dispose = disposeEntry;
50765
+ disposeEntry = null;
50766
+ dispose();
50767
+ }
50768
+ };
50769
+ const unsubscribe = options.subscribe(sync);
50770
+ sync();
50771
+ return () => {
50772
+ unsubscribe();
50773
+ if (disposeEntry !== null) {
50774
+ const dispose = disposeEntry;
50775
+ disposeEntry = null;
50776
+ dispose();
50777
+ }
50778
+ };
50779
+ }
49708
50780
  //#endregion
49709
50781
  //#region src/client/chat/rollback-diff-tab.ts
49710
50782
  /**
@@ -50007,6 +51079,10 @@ function apply(ctx) {
50007
51079
  * 并留一条 warn 级日志便于排障。
50008
51080
  *
50009
51081
  * 判据读的是 storage 响应(`rollbackEntryVisible`:老宿主没有该字段 ⇒ 按「默认开」,与那一版语义一致)。
51082
+ *
51083
+ * 2026-10-17 起这条信号还决定**要不要接管用户消息气泡**(不再只是按钮可见性):信号为假时
51084
+ * `registerChatNodeEntryWhenEnabled` 一次都不登记,那条 cell 由宿主 `UserMessageNodeView` 原生渲染
51085
+ * —— 与「关掉功能后连查询都不发」同一条口径:关掉 = 整条入口链路不存在。
50010
51086
  */
50011
51087
  recoveryApi.rollbackPointStorage?.().then((status) => {
50012
51088
  setRollbackEntryEnabled(rollbackEntryVisible(status));
@@ -50101,10 +51177,14 @@ function apply(ctx) {
50101
51177
  * 宿主 UserMessageNodeView 是唯一合法做法,那条气泡由我们自复刻。依据(含 -1 为何是唯一合法优先级)
50102
51178
  * → `src/client/chat/chat-slots.ts` 头部注释。
50103
51179
  *
51180
+ * **开关关着就完全不接管**(2026-10-17 用户要求):登记由 `registerChatNodeEntryWhenEnabled` 驱动 ——
51181
+ * 关掉回合自动留点后让出 user cell,那条消息回到宿主原生气泡(旧实现是「登记常驻、只收起按钮」,
51182
+ * 气泡仍由我们代画,用户看到的就是「关掉了还在接管」)。开关重新打开时登记当场补上,不需要重载插件。
51183
+ *
50104
51184
  * 形态探测 + 失败软化在 `registerChatNodeEntry`:0.1.x 的 ui-chat 契约不同(非 keyed)或注册抛错,
50105
51185
  * 都只丢这一个入口,绝不打挂本插件其余槽位与宿主启动。
50106
51186
  */
50107
- ctx.slots.inject(CHAT_NODE_SLOT, () => registerChatNodeEntry({
51187
+ ctx.slots.inject(CHAT_NODE_SLOT, () => registerChatNodeEntryWhenEnabled({
50108
51188
  probe: {
50109
51189
  spec: (key) => ctx.slots.spec(key),
50110
51190
  entriesOfSlot: (key) => ctx.slots.entriesOfSlot?.(key)
@@ -50115,7 +51195,9 @@ function apply(ctx) {
50115
51195
  priority: -1,
50116
51196
  locale: CHAT_NS,
50117
51197
  inject: chatEntryInjected
50118
- }, ChatEntryNodeView)
51198
+ }, ChatEntryNodeView),
51199
+ isEnabled: isRollbackEntryEnabled,
51200
+ subscribe: subscribeRollbackEntryEnabled
50119
51201
  }));
50120
51202
  /**
50121
51203
  * ── 「查看」→ DSH 右侧栏「回滚差异」标签页(**只读**)──────────────────────────────