@dickpy/dsh-imagegen 1.5.5 → 1.5.7

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.
package/lib/client.js CHANGED
@@ -485,7 +485,7 @@ window.__ModuleLoader__.load({
485
485
  "canvas.untitled": "未命名画布",
486
486
  "canvas.imageNode": "图片节点",
487
487
  "canvas.textNode": "文本节点",
488
- "canvas.fromGallery": "画廊图片",
488
+ "canvas.fromGallery": "素材库图片",
489
489
  "canvas.fromHistory": "历史图片",
490
490
  "canvas.project": "画布项目",
491
491
  "canvas.newCanvas": "新建画布",
@@ -493,7 +493,15 @@ window.__ModuleLoader__.load({
493
493
  "canvas.deleteCanvasConfirm": "再点一次确认删除",
494
494
  "canvas.rename": "重命名画布",
495
495
  "canvas.renameHint": "双击重命名",
496
- "canvas.background": "切换画布背景",
496
+ "canvas.background": "画布背景",
497
+ "canvas.backgroundDots": "点阵",
498
+ "canvas.backgroundLines": "网格线",
499
+ "canvas.backgroundDiagonal": "斜线",
500
+ "canvas.backgroundChecker": "棋盘格",
501
+ "canvas.backgroundBlank": "空白",
502
+ "canvas.backgroundUpload": "上传自定义背景…",
503
+ "canvas.backgroundRemove": "移除自定义背景",
504
+ "canvas.templateLibrary": "模板库(选择提示词生成文本+配置节点)",
497
505
  "canvas.undo": "撤销 (Ctrl+Z)",
498
506
  "canvas.redo": "重做 (Ctrl+Shift+Z)",
499
507
  "canvas.saving": "保存中…",
@@ -543,7 +551,11 @@ window.__ModuleLoader__.load({
543
551
  "canvas.close": "关闭",
544
552
  "canvas.tabUpload": "上传",
545
553
  "canvas.tabHistory": "历史记录",
546
- "canvas.tabGallery": "画廊",
554
+ "canvas.tabGallery": "素材库",
555
+ "canvas.imageMenuUpload": "上传本地图片",
556
+ "canvas.imageMenuAssets": "从素材库选择",
557
+ "canvas.imageMenuHistory": "从历史记录选择",
558
+ "canvas.imageMenuGenerate": "AI 生成新图",
547
559
  "canvas.tabGenerate": "AI 生成",
548
560
  "canvas.dropHint": "图片拖动到此处即可添加",
549
561
  "canvas.dropSub": "支持多选,PNG / JPG / WebP / GIF",
@@ -610,6 +622,8 @@ window.__ModuleLoader__.load({
610
622
  "prompt.placeholder": "描述你想要的画面,例如:一只戴着宇航员头盔的橘猫,在月球上举起望远镜,水彩风格,柔和光线…",
611
623
  "prompt.required": "请输入提示词",
612
624
  "prompt.count": "{count}",
625
+ "prompt.countLimit": "{count} / {limit}",
626
+ "prompt.overLimit": "超出该模型 {limit} 字符的提示词上限,请精简后再生成",
613
627
  "prompt.enhance": "增强",
614
628
  "prompt.enhancing": "增强中…",
615
629
  "prompt.enhanceHint": "使用已配置的对话模型扩写提示词",
@@ -688,14 +702,18 @@ window.__ModuleLoader__.load({
688
702
  "history.ratio": "比例筛选",
689
703
  "history.allModels": "全部模型",
690
704
  "history.allRatios": "全部比例",
691
- "gallery.title": "画廊",
705
+ "gallery.title": "素材库",
692
706
  "gallery.categories": "分类",
693
- "gallery.all": "全部作品",
707
+ "gallery.all": "全部素材",
708
+ "gallery.upload": "上传素材",
709
+ "gallery.uploadModel": "本地上传",
710
+ "gallery.uploaded": "素材已入库",
711
+ "gallery.uploadHint": "把本地图保存进素材库,画布随时可用",
694
712
  "gallery.gpt": "gpt-image-2",
695
713
  "gallery.grok": "grok-imagine-image",
696
714
  "gallery.ratio": "画面比例",
697
715
  "gallery.tags": "标签",
698
- "gallery.filterHint": "按生成模式、模型和比例筛选画廊",
716
+ "gallery.filterHint": "按生成模式、模型和比例筛选素材",
699
717
  "gallery.count": "· 共 {count} 幅",
700
718
  "gallery.viewMode": "视图模式",
701
719
  "gallery.masonry": "瀑布流",
@@ -717,16 +735,16 @@ window.__ModuleLoader__.load({
717
735
  "gallery.downloadSelected": "下载所选",
718
736
  "gallery.exportJson": "导出 JSON",
719
737
  "gallery.select": "选择作品",
720
- "gallery.add": "加入画廊",
721
- "gallery.added": "已加入画廊",
722
- "gallery.already": "已在画廊中",
723
- "gallery.delete": "移出画廊",
738
+ "gallery.add": "加入素材库",
739
+ "gallery.added": "已加入素材库",
740
+ "gallery.already": "已在素材库中",
741
+ "gallery.delete": "移出素材库",
724
742
  "gallery.openFolder": "打开文件夹",
725
- "gallery.clear": "清空画廊",
743
+ "gallery.clear": "清空素材库",
726
744
  "gallery.openFolderHint": "在系统的文件管理器中打开图片保存目录(~/.dsh/dsh-imagegen)",
727
- "gallery.clearConfirm": "确定要清空整个画廊吗?此操作不可撤销。",
728
- "gallery.empty": "画廊还是空的,把喜欢的图片加入进来吧",
729
- "gallery.viewing": "画廊 · {time}",
745
+ "gallery.clearConfirm": "确定要清空整个素材库吗?此操作不可撤销。",
746
+ "gallery.empty": "素材库还是空的,把喜欢的图片加入进来吧",
747
+ "gallery.viewing": "素材库 · {time}",
730
748
  "preview.title": "图片预览",
731
749
  "preview.open": "点击预览",
732
750
  "preview.close": "关闭",
@@ -783,6 +801,8 @@ window.__ModuleLoader__.load({
783
801
  "settings.removeModel": "移除模型",
784
802
  "settings.optional": "可选",
785
803
  "settings.moreOptions": "更多设置",
804
+ "settings.localStoragePath": "本地图片存储目录",
805
+ "settings.localStoragePathHint": "生成历史、素材库和无限画布图片统一保存到此目录;留空使用默认的 ~/.dsh/dsh-imagegen。",
786
806
  "settings.storageTitle": "对象存储同步",
787
807
  "settings.storageEnabled": "启用对象存储同步",
788
808
  "settings.storageHint": "图片保存到本地后,异步上传一份到 S3 兼容对象存储(腾讯云 COS / 阿里云 OSS / 七牛云 S3 / MinIO / R2 等)",
@@ -796,8 +816,8 @@ window.__ModuleLoader__.load({
796
816
  "settings.storageAccessKeyHint": "S3 兼容密钥 ID(COS SecretId / OSS AccessKeyId / 七牛 AK)",
797
817
  "settings.storageSecretKey": "Secret Key",
798
818
  "settings.storageSecretKeyHint": "S3 兼容密钥,仅保存在本机设置文档",
799
- "settings.storageSyncGallery": "同步画廊图片",
800
- "settings.storageSyncGalleryHint": "加入画廊的图片自动上传",
819
+ "settings.storageSyncGallery": "同步素材库图片",
820
+ "settings.storageSyncGalleryHint": "加入素材库的图片自动上传",
801
821
  "settings.storageSyncHistory": "同步历史记录图片",
802
822
  "settings.storageSyncHistoryHint": "所有生成结果也一并上传(数量可能较大)",
803
823
  "settings.storageTest": "测试连接",
@@ -895,7 +915,7 @@ window.__ModuleLoader__.load({
895
915
  "channels.statusIncomplete": "配置未完成",
896
916
  "channels.edit": "编辑",
897
917
  "channels.delete": "删除",
898
- "channels.deleteConfirmTitle": "删除渠道「{name}」?该渠道的密钥将被移除;历史与画廊中的记录仍会保留。",
918
+ "channels.deleteConfirmTitle": "删除渠道「{name}」?该渠道的密钥将被移除;历史与素材库中的记录仍会保留。",
899
919
  "channels.confirm": "确认删除",
900
920
  "channels.cancel": "取消",
901
921
  "channels.editorTitle": "渠道",
@@ -966,7 +986,15 @@ window.__ModuleLoader__.load({
966
986
  "canvas.deleteCanvasConfirm": "Click again to confirm",
967
987
  "canvas.rename": "Rename canvas",
968
988
  "canvas.renameHint": "Double-click to rename",
969
- "canvas.background": "Cycle canvas background",
989
+ "canvas.background": "Canvas background",
990
+ "canvas.backgroundDots": "Dots",
991
+ "canvas.backgroundLines": "Grid lines",
992
+ "canvas.backgroundDiagonal": "Diagonal",
993
+ "canvas.backgroundChecker": "Checkerboard",
994
+ "canvas.backgroundBlank": "Blank",
995
+ "canvas.backgroundUpload": "Upload custom background…",
996
+ "canvas.backgroundRemove": "Remove custom background",
997
+ "canvas.templateLibrary": "Template library (pick a prompt to create text + config nodes)",
970
998
  "canvas.undo": "Undo (Ctrl+Z)",
971
999
  "canvas.redo": "Redo (Ctrl+Shift+Z)",
972
1000
  "canvas.saving": "Saving…",
@@ -1016,7 +1044,11 @@ window.__ModuleLoader__.load({
1016
1044
  "canvas.close": "Close",
1017
1045
  "canvas.tabUpload": "Upload",
1018
1046
  "canvas.tabHistory": "History",
1019
- "canvas.tabGallery": "Gallery",
1047
+ "canvas.tabGallery": "Assets",
1048
+ "canvas.imageMenuUpload": "Upload local image",
1049
+ "canvas.imageMenuAssets": "Pick from assets",
1050
+ "canvas.imageMenuHistory": "Pick from history",
1051
+ "canvas.imageMenuGenerate": "Generate with AI",
1020
1052
  "canvas.tabGenerate": "AI generate",
1021
1053
  "canvas.dropHint": "Drop images here to add them",
1022
1054
  "canvas.dropSub": "Multiple files, PNG / JPG / WebP / GIF",
@@ -1083,6 +1115,8 @@ window.__ModuleLoader__.load({
1083
1115
  "prompt.placeholder": "Describe the picture you want, e.g. an orange cat in an astronaut helmet raising a telescope on the moon, watercolor style, soft light…",
1084
1116
  "prompt.required": "Enter a prompt first",
1085
1117
  "prompt.count": "{count}",
1118
+ "prompt.countLimit": "{count} / {limit}",
1119
+ "prompt.overLimit": "Over this model’s {limit}-character prompt limit; please shorten it",
1086
1120
  "prompt.enhance": "Enhance",
1087
1121
  "prompt.enhancing": "Enhancing…",
1088
1122
  "prompt.enhanceHint": "Expand the prompt with the configured chat model",
@@ -1161,9 +1195,13 @@ window.__ModuleLoader__.load({
1161
1195
  "history.ratio": "Ratio filter",
1162
1196
  "history.allModels": "All models",
1163
1197
  "history.allRatios": "All ratios",
1164
- "gallery.title": "Gallery",
1198
+ "gallery.title": "Assets",
1165
1199
  "gallery.categories": "Categories",
1166
- "gallery.all": "All works",
1200
+ "gallery.all": "All assets",
1201
+ "gallery.upload": "Upload",
1202
+ "gallery.uploadModel": "Local upload",
1203
+ "gallery.uploaded": "Asset saved",
1204
+ "gallery.uploadHint": "Save local images for reuse on the canvas",
1167
1205
  "gallery.gpt": "gpt-image-2",
1168
1206
  "gallery.grok": "grok-imagine-image",
1169
1207
  "gallery.ratio": "Aspect ratio",
@@ -1256,6 +1294,8 @@ window.__ModuleLoader__.load({
1256
1294
  "settings.removeModel": "Remove model",
1257
1295
  "settings.optional": "Optional",
1258
1296
  "settings.moreOptions": "More settings",
1297
+ "settings.localStoragePath": "Local image storage directory",
1298
+ "settings.localStoragePathHint": "History, assets and canvas images share this directory; leave empty for the default ~/.dsh/dsh-imagegen.",
1259
1299
  "settings.storageTitle": "Object storage sync",
1260
1300
  "settings.storageEnabled": "Enable object storage sync",
1261
1301
  "settings.storageHint": "After images land locally, mirror them to an S3-compatible store (Tencent COS / Alibaba OSS / Qiniu S3 / MinIO / R2 …)",
@@ -1440,7 +1480,15 @@ window.__ModuleLoader__.load({
1440
1480
  "canvas.deleteCanvasConfirm": "Нажмите ещё раз для подтверждения",
1441
1481
  "canvas.rename": "Переименовать холст",
1442
1482
  "canvas.renameHint": "Двойной клик — переименовать",
1443
- "canvas.background": "Сменить фон холста",
1483
+ "canvas.background": "Фон холста",
1484
+ "canvas.backgroundDots": "Точки",
1485
+ "canvas.backgroundLines": "Сетка",
1486
+ "canvas.backgroundDiagonal": "Диагональ",
1487
+ "canvas.backgroundChecker": "Шахматка",
1488
+ "canvas.backgroundBlank": "Пустой",
1489
+ "canvas.backgroundUpload": "Загрузить свой фон…",
1490
+ "canvas.backgroundRemove": "Убрать свой фон",
1491
+ "canvas.templateLibrary": "Библиотека шаблонов (выберите промпт — создадутся текстовый узел и узел конфигурации)",
1444
1492
  "canvas.undo": "Отменить (Ctrl+Z)",
1445
1493
  "canvas.redo": "Повторить (Ctrl+Shift+Z)",
1446
1494
  "canvas.saving": "Сохранение…",
@@ -1490,7 +1538,11 @@ window.__ModuleLoader__.load({
1490
1538
  "canvas.close": "Закрыть",
1491
1539
  "canvas.tabUpload": "Загрузка",
1492
1540
  "canvas.tabHistory": "История",
1493
- "canvas.tabGallery": "Галерея",
1541
+ "canvas.tabGallery": "Материалы",
1542
+ "canvas.imageMenuUpload": "Загрузить локальное изображение",
1543
+ "canvas.imageMenuAssets": "Выбрать из материалов",
1544
+ "canvas.imageMenuHistory": "Выбрать из истории",
1545
+ "canvas.imageMenuGenerate": "Создать через AI",
1494
1546
  "canvas.tabGenerate": "AI-генерация",
1495
1547
  "canvas.dropHint": "Перетащите изображения сюда",
1496
1548
  "canvas.dropSub": "Несколько файлов, PNG / JPG / WebP / GIF",
@@ -1557,6 +1609,8 @@ window.__ModuleLoader__.load({
1557
1609
  "prompt.placeholder": "Опишите желаемое изображение, например: рыжий кот в шлеме космонавта смотрит в телескоп на Луне, акварель, мягкий свет…",
1558
1610
  "prompt.required": "Введите промпт",
1559
1611
  "prompt.count": "{count}",
1612
+ "prompt.countLimit": "{count} / {limit}",
1613
+ "prompt.overLimit": "Превышен лимит промпта для этой модели ({limit} символов); сократите текст",
1560
1614
  "prompt.enhance": "Улучш.",
1561
1615
  "prompt.enhancing": "Улучшаем…",
1562
1616
  "prompt.enhanceHint": "Развернуть краткий промпт через настроенную диалоговую модель",
@@ -1635,9 +1689,13 @@ window.__ModuleLoader__.load({
1635
1689
  "history.ratio": "Фильтр по пропорциям",
1636
1690
  "history.allModels": "Все модели",
1637
1691
  "history.allRatios": "Все пропорции",
1638
- "gallery.title": "Галерея",
1692
+ "gallery.title": "Материалы",
1639
1693
  "gallery.categories": "Категории",
1640
- "gallery.all": "Все работы",
1694
+ "gallery.all": "Все материалы",
1695
+ "gallery.upload": "Загрузить",
1696
+ "gallery.uploadModel": "Локальный файл",
1697
+ "gallery.uploaded": "Материал добавлен",
1698
+ "gallery.uploadHint": "Сохраните локальные изображения для холста",
1641
1699
  "gallery.gpt": "gpt-image-2",
1642
1700
  "gallery.grok": "grok-imagine-image",
1643
1701
  "gallery.ratio": "Пропорции",
@@ -1730,6 +1788,8 @@ window.__ModuleLoader__.load({
1730
1788
  "settings.removeModel": "Удалить модель",
1731
1789
  "settings.optional": "необязательно",
1732
1790
  "settings.moreOptions": "Дополнительно",
1791
+ "settings.localStoragePath": "Локальная папка изображений",
1792
+ "settings.localStoragePathHint": "История, материалы и холст используют эту папку; пусто — ~/.dsh/dsh-imagegen.",
1733
1793
  "settings.storageTitle": "Синхронизация с объектным хранилищем",
1734
1794
  "settings.storageEnabled": "Включить синхронизацию",
1735
1795
  "settings.storageHint": "После сохранения локально изображения выгружаются в S3-совместимое хранилище (Tencent COS / Alibaba OSS / Qiniu S3 / MinIO / R2…)",
@@ -1948,51 +2008,51 @@ window.__ModuleLoader__.load({
1948
2008
  document.head.appendChild(tag);
1949
2009
  }
1950
2010
  var templates_module_css_default = {
1951
- "meta": "o0mAxG_meta",
1952
- "notice": "o0mAxG_notice",
2011
+ "dsh-imagegen-templates-spin": "o0mAxG_dsh-imagegen-templates-spin",
2012
+ "detailOverlay": "o0mAxG_detailOverlay",
2013
+ "sourceTabCount": "o0mAxG_sourceTabCount",
2014
+ "thumbWrap": "o0mAxG_thumbWrap",
2015
+ "state": "o0mAxG_state",
2016
+ "cardTitle": "o0mAxG_cardTitle",
1953
2017
  "sourceLink": "o0mAxG_sourceLink",
1954
- "cardBody": "o0mAxG_cardBody",
2018
+ "detailTitle": "o0mAxG_detailTitle",
2019
+ "detailActions": "o0mAxG_detailActions",
1955
2020
  "categoryPill": "o0mAxG_categoryPill",
1956
- "header": "o0mAxG_header",
1957
- "close": "o0mAxG_close",
1958
- "headerActions": "o0mAxG_headerActions",
1959
- "thumb": "o0mAxG_thumb",
1960
- "shell": "o0mAxG_shell",
1961
- "dsh-imagegen-templates-spin": "o0mAxG_dsh-imagegen-templates-spin",
1962
- "featuredBadge": "o0mAxG_featuredBadge",
1963
- "search": "o0mAxG_search",
2021
+ "attribution": "o0mAxG_attribution",
2022
+ "title": "o0mAxG_title",
1964
2023
  "favStar": "o0mAxG_favStar",
1965
2024
  "cardMeta": "o0mAxG_cardMeta",
1966
- "footer": "o0mAxG_footer",
1967
- "detailInfo": "o0mAxG_detailInfo",
1968
2025
  "detailMeta": "o0mAxG_detailMeta",
2026
+ "detailImage": "o0mAxG_detailImage",
2027
+ "shell": "o0mAxG_shell",
2028
+ "thumbPlaceholder": "o0mAxG_thumbPlaceholder",
1969
2029
  "categoryRow": "o0mAxG_categoryRow",
1970
- "heading": "o0mAxG_heading",
1971
- "detailPrompt": "o0mAxG_detailPrompt",
1972
- "detailTitle": "o0mAxG_detailTitle",
1973
- "overlay": "o0mAxG_overlay",
1974
2030
  "detailMedia": "o0mAxG_detailMedia",
1975
2031
  "sourceTab": "o0mAxG_sourceTab",
1976
- "grid": "o0mAxG_grid",
1977
- "attribution": "o0mAxG_attribution",
2032
+ "search": "o0mAxG_search",
2033
+ "sourceTabs": "o0mAxG_sourceTabs",
2034
+ "thumb": "o0mAxG_thumb",
2035
+ "cardBody": "o0mAxG_cardBody",
2036
+ "footer": "o0mAxG_footer",
1978
2037
  "cardCategory": "o0mAxG_cardCategory",
1979
- "sourceTabCount": "o0mAxG_sourceTabCount",
2038
+ "detailInfo": "o0mAxG_detailInfo",
2039
+ "meta": "o0mAxG_meta",
2040
+ "cardSource": "o0mAxG_cardSource",
1980
2041
  "detailLink": "o0mAxG_detailLink",
1981
- "toolbar": "o0mAxG_toolbar",
1982
- "detailActions": "o0mAxG_detailActions",
1983
2042
  "body": "o0mAxG_body",
1984
- "title": "o0mAxG_title",
1985
- "spinner": "o0mAxG_spinner",
1986
- "thumbPlaceholder": "o0mAxG_thumbPlaceholder",
1987
- "cardSource": "o0mAxG_cardSource",
2043
+ "header": "o0mAxG_header",
2044
+ "heading": "o0mAxG_heading",
2045
+ "toolbar": "o0mAxG_toolbar",
2046
+ "grid": "o0mAxG_grid",
2047
+ "detailPrompt": "o0mAxG_detailPrompt",
2048
+ "notice": "o0mAxG_notice",
2049
+ "overlay": "o0mAxG_overlay",
2050
+ "card": "o0mAxG_card",
2051
+ "headerActions": "o0mAxG_headerActions",
1988
2052
  "detail": "o0mAxG_detail",
1989
- "thumbWrap": "o0mAxG_thumbWrap",
1990
- "cardTitle": "o0mAxG_cardTitle",
1991
- "detailImage": "o0mAxG_detailImage",
1992
- "state": "o0mAxG_state",
1993
- "detailOverlay": "o0mAxG_detailOverlay",
1994
- "sourceTabs": "o0mAxG_sourceTabs",
1995
- "card": "o0mAxG_card"
2053
+ "spinner": "o0mAxG_spinner",
2054
+ "featuredBadge": "o0mAxG_featuredBadge",
2055
+ "close": "o0mAxG_close"
1996
2056
  };
1997
2057
  //#endregion
1998
2058
  //#region src/client/TemplateLibrary.tsx
@@ -2620,18 +2680,18 @@ window.__ModuleLoader__.load({
2620
2680
  document.head.appendChild(tag);
2621
2681
  }
2622
2682
  var inspiration_module_css_default = {
2623
- "emptyTitle": "IgRnJG_emptyTitle",
2624
2683
  "thumbFallback": "IgRnJG_thumbFallback",
2625
- "spinner": "IgRnJG_spinner",
2684
+ "emptyHint": "IgRnJG_emptyHint",
2685
+ "tile": "IgRnJG_tile",
2626
2686
  "wrap": "IgRnJG_wrap",
2627
- "grid": "IgRnJG_grid",
2628
- "thumb": "IgRnJG_thumb",
2629
2687
  "thumbTitle": "IgRnJG_thumbTitle",
2688
+ "spinner": "IgRnJG_spinner",
2630
2689
  "dsh-imagegen-inspiration-spin": "IgRnJG_dsh-imagegen-inspiration-spin",
2631
2690
  "emptyIcon": "IgRnJG_emptyIcon",
2691
+ "emptyTitle": "IgRnJG_emptyTitle",
2632
2692
  "thumbWrap": "IgRnJG_thumbWrap",
2633
- "emptyHint": "IgRnJG_emptyHint",
2634
- "tile": "IgRnJG_tile",
2693
+ "grid": "IgRnJG_grid",
2694
+ "thumb": "IgRnJG_thumb",
2635
2695
  "title": "IgRnJG_title"
2636
2696
  };
2637
2697
  //#endregion
@@ -2780,7 +2840,7 @@ window.__ModuleLoader__.load({
2780
2840
  }
2781
2841
  //#endregion
2782
2842
  //#region \0dsh-css:E:\dsh-plugin\src\client\canvas-workspace.module.css.mjs
2783
- const css$3 = "._0yZr2a_root{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family,inherit);user-select:none;border-radius:10px;flex-direction:column;flex:auto;display:flex;position:relative;overflow:hidden}._0yZr2a_selectCursor{cursor:default}._0yZr2a_panCursor{cursor:grab}._0yZr2a_panCursor:active{cursor:grabbing}._0yZr2a_topBar{border-bottom:1px solid var(--dsw-alias-border-l1);z-index:40;background:var(--dsw-alias-bg-layer-1);flex:none;align-items:center;gap:8px;padding:8px 12px;display:flex}._0yZr2a_projectSelect{border:1px solid var(--dsw-alias-border-l1);max-width:180px;height:30px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;padding:0 8px;font-size:12.5px}._0yZr2a_titleButton{height:30px;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;cursor:text;background:0 0;border:1px solid #0000;border-radius:8px;max-width:260px;padding:0 10px;font-size:13px;font-weight:600;overflow:hidden}._0yZr2a_titleButton:hover{border-color:var(--dsw-alias-border-l1)}._0yZr2a_titleInput{border:1px solid var(--dsw-alias-brand-primary);height:30px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;outline:none;width:240px;padding:0 10px;font-size:13px;font-weight:600}._0yZr2a_topBarSpacer{flex:1}._0yZr2a_saveState{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11.5px}._0yZr2a_saveState[data-state=error]{color:var(--dsw-alias-label-error)}._0yZr2a_saveState[data-state=saving]{color:var(--dsw-alias-state-warn-primary,var(--dsw-alias-label-secondary))}._0yZr2a_iconButton{width:30px;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:none;justify-content:center;align-items:center;gap:5px;padding:0;display:inline-flex}._0yZr2a_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._0yZr2a_iconButton[data-active]{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 16%, transparent);color:var(--dsw-alias-brand-primary)}._0yZr2a_iconButton:disabled{opacity:.35;cursor:not-allowed}._0yZr2a_iconButton:disabled:hover{color:var(--dsw-alias-label-secondary);background:0 0}._0yZr2a_viewport{touch-action:none;flex:1;min-height:0;position:relative;overflow:hidden}._0yZr2a_grid{pointer-events:none;opacity:.5;position:absolute;inset:0}._0yZr2a_grid[data-mode=dots]{background-image:radial-gradient(circle, color-mix(in srgb, var(--dsw-alias-label-primary) 30%, transparent) 1.1px, transparent 1.4px)}._0yZr2a_grid[data-mode=lines]{background-image:linear-gradient(color-mix(in srgb, var(--dsw-alias-label-primary) 9%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--dsw-alias-label-primary) 9%, transparent) 1px, transparent 1px)}._0yZr2a_grid[data-mode=blank]{background-image:none}._0yZr2a_world{transform-origin:0 0;position:absolute;top:0;left:0}._0yZr2a_marquee{z-index:20;border:1px solid var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, transparent);pointer-events:none;border-radius:4px;position:absolute}._0yZr2a_node{border:1.5px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);cursor:grab;touch-action:none;border-radius:14px;flex-direction:column;display:flex;position:absolute;overflow:visible;box-shadow:0 8px 24px #0f172a1f}._0yZr2a_node:active{cursor:grabbing}._0yZr2a_nodeGlow{pointer-events:none;opacity:0;border-radius:18px;transition:opacity .15s;position:absolute;inset:-6px}._0yZr2a_nodeSelected{border-color:var(--dsw-alias-brand-primary);z-index:2}._0yZr2a_nodeSelected ._0yZr2a_nodeGlow{opacity:1;box-shadow:0 0 0 3px color-mix(in srgb, var(--dsw-alias-brand-primary) 22%, transparent)}._0yZr2a_nodeRelated{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 45%, transparent)}._0yZr2a_nodeConnectTarget{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 4px color-mix(in srgb, var(--dsw-alias-brand-primary) 26%, transparent)}._0yZr2a_nodeHeader{color:var(--dsw-alias-label-secondary);cursor:inherit;flex:none;align-items:center;gap:6px;padding:7px 12px 5px;font-size:11.5px;display:flex}._0yZr2a_nodeTitle{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}._0yZr2a_nodeSize{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;margin-left:auto;font-size:10.5px}._0yZr2a_nodeSpinner{border:1.5px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 30%, transparent);border-top-color:var(--dsw-alias-brand-primary);border-radius:50%;flex:none;width:11px;height:11px;animation:.8s linear infinite _0yZr2a_canvasSpin}._0yZr2a_nodeBody{background:color-mix(in srgb, var(--dsw-alias-label-primary) 6%, transparent);pointer-events:none;border-radius:9px;flex:1;justify-content:center;align-items:center;min-height:0;margin:0 8px 8px;display:flex;overflow:hidden}._0yZr2a_nodeBody img{object-fit:contain;width:100%;height:100%;display:block}._0yZr2a_nodeState,._0yZr2a_nodeStateError{color:var(--dsw-alias-label-secondary);text-align:center;pointer-events:auto;flex-direction:column;align-items:center;gap:8px;padding:12px;font-size:12px;display:flex}._0yZr2a_nodeStateError{color:var(--dsw-alias-label-error)}._0yZr2a_nodeStateError button{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:7px;padding:4px 12px;font-size:12px}._0yZr2a_nodeEmpty{border:1.5px dashed color-mix(in srgb, var(--dsw-alias-label-primary) 24%, transparent);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border-radius:9px;flex-direction:column;align-items:center;gap:8px;margin:6px;padding:14px;font-size:12px;display:flex}._0yZr2a_nodeEmpty:hover{border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-brand-primary)}._0yZr2a_textNode{cursor:default}._0yZr2a_imageNode ._0yZr2a_nodeBody{margin:6px}._0yZr2a_textArea{resize:none;min-height:0;color:var(--dsw-alias-label-primary);cursor:text;pointer-events:auto;background:0 0;border:none;outline:none;flex:1;margin:0 8px 8px;padding:4px 6px;font-size:13px;line-height:1.55}._0yZr2a_textArea::placeholder{color:var(--dsw-alias-label-tertiary)}._0yZr2a_dock{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 92%, transparent);backdrop-filter:blur(10px);border-radius:13px;align-items:center;gap:2px;padding:6px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0f172a24}._0yZr2a_dock ._0yZr2a_iconButton{width:34px;height:34px}._0yZr2a_dockDivider{background:var(--dsw-alias-border-l1);width:1px;height:18px;margin:0 4px}._0yZr2a_composer{z-index:35;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 96%, transparent);backdrop-filter:blur(10px);border-radius:14px;flex-direction:column;gap:8px;width:560px;padding:10px;display:flex;position:absolute;box-shadow:0 16px 44px #0f172a2e}._0yZr2a_composerPrompt{resize:none;width:100%;min-height:38px;max-height:120px;color:var(--dsw-alias-label-primary);cursor:text;background:0 0;border:none;outline:none;padding:2px 4px;font-size:13px;line-height:1.5}._0yZr2a_composerPrompt::placeholder{color:var(--dsw-alias-label-tertiary)}._0yZr2a_composerMeta{display:flex}._0yZr2a_composerChip{border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 45%, transparent);color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, transparent);border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:11px;display:inline-flex}._0yZr2a_composerControls{align-items:center;gap:6px;display:flex}._0yZr2a_composerControls select{border:1px solid var(--dsw-alias-border-l1);height:28px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:999px;min-width:0;max-width:128px;padding:0 8px;font-size:11.5px}._0yZr2a_composerSend{background:var(--dsw-alias-label-primary);width:34px;height:34px;color:var(--dsw-alias-bg-layer-1);cursor:pointer;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;margin-left:auto;display:inline-flex}._0yZr2a_composerSend:hover{opacity:.88}._0yZr2a_composerSend:disabled{opacity:.35;cursor:not-allowed}._0yZr2a_configNode{cursor:grab;padding:0 10px 10px}._0yZr2a_configNode ._0yZr2a_nodeHeader{padding:7px 2px 5px}._0yZr2a_configLinks{flex:none;margin:2px 0 8px;display:flex}._0yZr2a_configLinks ._0yZr2a_composerChip{padding:2px 8px;font-size:10.5px}._0yZr2a_configHint{min-height:0;color:var(--dsw-alias-label-tertiary);flex:1;margin:0;font-size:11px;line-height:1.55;overflow:auto}._0yZr2a_handle{background:var(--dsw-alias-bg-layer-1);border:2px solid var(--dsw-alias-brand-primary);opacity:0;cursor:crosshair;z-index:3;border-radius:50%;width:12px;height:12px;transition:opacity .12s,transform .12s;position:absolute;top:50%;transform:translateY(-50%)scale(.6)}._0yZr2a_handleLeft{left:-7px}._0yZr2a_handleRight{right:-7px}._0yZr2a_node:hover ._0yZr2a_handle,._0yZr2a_nodeSelected ._0yZr2a_handle,._0yZr2a_nodeConnectTarget ._0yZr2a_handle{opacity:1;transform:translateY(-50%)scale(1)}._0yZr2a_handle:hover{background:var(--dsw-alias-brand-primary)}._0yZr2a_resizeHandle{background:var(--dsw-alias-brand-primary);border:2px solid var(--dsw-alias-bg-layer-1);cursor:nwse-resize;z-index:3;border-radius:4px;width:14px;height:14px;position:absolute;bottom:-5px;right:-5px}._0yZr2a_hoverToolbar{border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 92%, transparent);opacity:0;pointer-events:none;z-index:4;border-radius:10px;gap:2px;padding:4px;transition:opacity .12s;display:flex;position:absolute;top:-36px;left:50%;transform:translate(-50%);box-shadow:0 8px 22px #0f172a24}._0yZr2a_node:hover ._0yZr2a_hoverToolbar,._0yZr2a_nodeSelected ._0yZr2a_hoverToolbar{opacity:1;pointer-events:auto}._0yZr2a_connectionLayer{pointer-events:none;z-index:0;position:absolute;overflow:visible}._0yZr2a_connectionPath{fill:none;stroke:color-mix(in srgb, var(--dsw-alias-label-primary) 38%, transparent);stroke-width:2px;stroke-opacity:.85;pointer-events:none}._0yZr2a_connectionActive{stroke:var(--dsw-alias-brand-primary);stroke-width:3px;stroke-opacity:1;filter:drop-shadow(0 0 6px color-mix(in srgb, var(--dsw-alias-brand-primary) 45%, transparent))}._0yZr2a_connectionPreview{fill:none;stroke:var(--dsw-alias-brand-primary);stroke-width:2px;stroke-dasharray:5 5;pointer-events:none}._0yZr2a_emptyHint{text-align:center;color:var(--dsw-alias-label-tertiary);pointer-events:none;z-index:5;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}._0yZr2a_emptyHint strong{color:var(--dsw-alias-label-secondary);font-size:16px}._0yZr2a_emptyHint span{max-width:320px;font-size:12.5px;line-height:1.6}._0yZr2a_zoomDock{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 88%, transparent);backdrop-filter:blur(10px);border-radius:12px;align-items:center;gap:6px;padding:6px 8px;display:flex;position:absolute;bottom:14px;left:14px;box-shadow:0 10px 30px #0f172a1f}._0yZr2a_zoomDock input[type=range]{width:96px;accent-color:var(--dsw-alias-brand-primary)}._0yZr2a_zoomValue{text-align:right;width:40px;color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:11.5px}._0yZr2a_minimap{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 88%, transparent);backdrop-filter:blur(10px);border-radius:12px;width:220px;height:150px;position:absolute;bottom:62px;left:14px;overflow:hidden;box-shadow:0 10px 30px #0f172a1f}._0yZr2a_minimapCanvas{cursor:crosshair;width:100%;height:100%;position:relative}._0yZr2a_minimapNode{opacity:.8;border-radius:2px;position:absolute}._0yZr2a_minimapImage{background:var(--dsw-alias-brand-primary)}._0yZr2a_minimapText{background:color-mix(in srgb, var(--dsw-alias-label-primary) 40%, transparent)}._0yZr2a_minimapSelected{outline:1.5px solid var(--dsw-alias-brand-primary)}._0yZr2a_minimapViewport{border:1.5px solid var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent);pointer-events:none;border-radius:2px;position:absolute}._0yZr2a_inspectorRow{gap:8px;display:flex}._0yZr2a_inspectorRow>*{flex:1;min-width:0}._0yZr2a_contextMenu{z-index:90;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 96%, transparent);border-radius:11px;flex-direction:column;min-width:176px;padding:5px;display:flex;position:fixed;box-shadow:0 16px 40px #0f172a33}._0yZr2a_contextMenu button{color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:7px;align-items:center;gap:8px;padding:7px 10px;font-size:12.5px;display:flex}._0yZr2a_contextMenu button:hover{background:var(--dsw-alias-interactive-bg-hover)}._0yZr2a_contextMenu button[data-danger]{color:var(--dsw-alias-label-error)}._0yZr2a_errorToast{z-index:60;border:1px solid color-mix(in srgb, var(--dsw-alias-label-error) 35%, transparent);background:color-mix(in srgb, var(--dsw-alias-label-error) 12%, var(--dsw-alias-bg-layer-1));max-width:min(560px,80%);color:var(--dsw-alias-label-error);border-radius:10px;align-items:center;gap:10px;padding:9px 12px;font-size:12.5px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 12px 30px #0f172a2e}._0yZr2a_errorToast button{color:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:2px;display:inline-flex}._0yZr2a_modalBackdrop{z-index:70;background:color-mix(in srgb, var(--dsw-alias-label-primary) 32%, transparent);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}._0yZr2a_picker{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:14px;flex-direction:column;width:min(720px,92%);max-height:84%;display:flex;overflow:hidden;box-shadow:0 24px 60px #0f172a42}._0yZr2a_pickerHeader{border-bottom:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:center;padding:12px 14px;font-size:14px;display:flex}._0yZr2a_pickerHeader button{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:18px}._0yZr2a_pickerTabs{gap:4px;padding:10px 14px 0;display:flex}._0yZr2a_pickerTabs button{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px 8px 0 0;padding:7px 12px;font-size:12.5px}._0yZr2a_pickerTabs button[data-active]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-brand-primary)}._0yZr2a_pickerBody{flex:1;min-height:0;padding:14px;overflow:auto}._0yZr2a_pickerGrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}._0yZr2a_pickerCard{border:1.5px solid var(--dsw-alias-border-l1);cursor:pointer;text-align:left;color:var(--dsw-alias-label-primary);background:0 0;border-radius:10px;flex-direction:column;gap:6px;padding:6px;display:flex}._0yZr2a_pickerCard[data-selected]{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-alias-brand-primary) 25%, transparent)}._0yZr2a_pickerCard img{object-fit:cover;border-radius:7px;width:100%;height:110px}._0yZr2a_pickerCardPrompt{text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}._0yZr2a_pickerCard small{color:var(--dsw-alias-label-tertiary);font-size:10.5px}._0yZr2a_pickerFooter{color:var(--dsw-alias-label-secondary);justify-content:space-between;align-items:center;padding-top:12px;font-size:12.5px;display:flex}._0yZr2a_pickerFooter button,._0yZr2a_generateForm button{background:var(--dsw-alias-brand-primary);height:32px;color:var(--dsw-alias-bg-base,#fff);cursor:pointer;border:none;border-radius:8px;align-items:center;gap:6px;padding:0 16px;font-size:12.5px;font-weight:600;display:inline-flex}._0yZr2a_pickerFooter button:disabled,._0yZr2a_generateForm button:disabled{opacity:.45;cursor:not-allowed}._0yZr2a_uploadBox{border:1.5px dashed color-mix(in srgb, var(--dsw-alias-label-primary) 22%, transparent);min-height:220px;color:var(--dsw-alias-label-secondary);cursor:pointer;text-align:center;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}._0yZr2a_uploadBox:hover{border-color:var(--dsw-alias-brand-primary)}._0yZr2a_uploadBox input{display:none}._0yZr2a_uploadBox small{color:var(--dsw-alias-label-tertiary);font-size:11px}._0yZr2a_uploadIcon{color:var(--dsw-alias-brand-primary)}._0yZr2a_generateForm{flex-direction:column;gap:10px;display:flex}._0yZr2a_generateForm textarea{resize:vertical;border:1px solid var(--dsw-alias-border-l1);min-height:110px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:9px;outline:none;padding:8px 10px;font-size:12.5px}._0yZr2a_generateForm select{border:1px solid var(--dsw-alias-border-l1);height:30px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;padding:0 8px;font-size:12.5px}@keyframes _0yZr2a_canvasSpin{to{transform:rotate(360deg)}}";
2843
+ const css$3 = "._0yZr2a_root{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family,inherit);user-select:none;border-radius:10px;flex-direction:column;flex:auto;display:flex;position:relative;overflow:hidden}._0yZr2a_selectCursor{cursor:default}._0yZr2a_panCursor{cursor:grab}._0yZr2a_panCursor:active{cursor:grabbing}._0yZr2a_topBar{border-bottom:1px solid var(--dsw-alias-border-l1);z-index:40;background:var(--dsw-alias-bg-layer-1);flex:none;align-items:center;gap:8px;padding:8px 12px;display:flex}._0yZr2a_projectSelect{border:1px solid var(--dsw-alias-border-l1);max-width:180px;height:30px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;padding:0 8px;font-size:12.5px}._0yZr2a_titleButton{height:30px;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;cursor:text;background:0 0;border:1px solid #0000;border-radius:8px;max-width:260px;padding:0 10px;font-size:13px;font-weight:600;overflow:hidden}._0yZr2a_titleButton:hover{border-color:var(--dsw-alias-border-l1)}._0yZr2a_titleInput{border:1px solid var(--dsw-alias-brand-primary);height:30px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;outline:none;width:240px;padding:0 10px;font-size:13px;font-weight:600}._0yZr2a_topBarSpacer{flex:1}._0yZr2a_saveState{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11.5px}._0yZr2a_saveState[data-state=error]{color:var(--dsw-alias-label-error)}._0yZr2a_saveState[data-state=saving]{color:var(--dsw-alias-state-warn-primary,var(--dsw-alias-label-secondary))}._0yZr2a_iconButton{width:30px;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:none;justify-content:center;align-items:center;gap:5px;padding:0;display:inline-flex}._0yZr2a_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._0yZr2a_iconButton[data-active]{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 16%, transparent);color:var(--dsw-alias-brand-primary)}._0yZr2a_iconButton:disabled{opacity:.35;cursor:not-allowed}._0yZr2a_iconButton:disabled:hover{color:var(--dsw-alias-label-secondary);background:0 0}._0yZr2a_viewport{touch-action:none;flex:1;min-height:0;position:relative;overflow:hidden}._0yZr2a_grid{pointer-events:none;opacity:.5;position:absolute;inset:0}._0yZr2a_grid[data-mode=dots]{background-image:radial-gradient(circle, color-mix(in srgb, var(--dsw-alias-label-primary) 30%, transparent) 1.1px, transparent 1.4px)}._0yZr2a_grid[data-mode=lines]{background-image:linear-gradient(color-mix(in srgb, var(--dsw-alias-label-primary) 9%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--dsw-alias-label-primary) 9%, transparent) 1px, transparent 1px)}._0yZr2a_grid[data-mode=blank]{background-image:none}._0yZr2a_grid[data-mode=diagonal]{background-image:repeating-linear-gradient(45deg, color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent) 0 1px, transparent 1px 16px)}._0yZr2a_grid[data-mode=checker]{background-image:conic-gradient(color-mix(in srgb, var(--dsw-alias-label-primary) 7%, transparent) 90deg, transparent 90deg 180deg, color-mix(in srgb, var(--dsw-alias-label-primary) 7%, transparent) 180deg 270deg, transparent 270deg);background-size:48px 48px}._0yZr2a_grid[data-mode=image]{background-image:none}._0yZr2a_gridScrim{background:var(--dsw-alias-bg-layer-1);opacity:.6;position:absolute;inset:0}._0yZr2a_backgroundMenu{z-index:45;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 96%, transparent);border-radius:11px;flex-direction:column;min-width:168px;padding:5px;display:flex;position:absolute;transform:translate(-50%,-100%);box-shadow:0 16px 40px #0f172a33}._0yZr2a_backgroundMenu button{color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:7px;justify-content:space-between;align-items:center;padding:7px 10px;font-size:12.5px;display:flex}._0yZr2a_backgroundMenu button:hover{background:var(--dsw-alias-interactive-bg-hover)}._0yZr2a_backgroundMenu button[data-active]{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 12%, transparent)}._0yZr2a_backgroundMenuDivider{background:var(--dsw-alias-border-l1);height:1px;margin:4px 6px}._0yZr2a_world{transform-origin:0 0;position:absolute;top:0;left:0}._0yZr2a_marquee{z-index:20;border:1px solid var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, transparent);pointer-events:none;border-radius:4px;position:absolute}._0yZr2a_node{border:1.5px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);cursor:grab;touch-action:none;border-radius:14px;flex-direction:column;display:flex;position:absolute;overflow:visible;box-shadow:0 8px 24px #0f172a1f}._0yZr2a_node:active{cursor:grabbing}._0yZr2a_nodeGlow{pointer-events:none;opacity:0;border-radius:18px;transition:opacity .15s;position:absolute;inset:-6px}._0yZr2a_nodeSelected{border-color:var(--dsw-alias-brand-primary);z-index:2}._0yZr2a_nodeSelected ._0yZr2a_nodeGlow{opacity:1;box-shadow:0 0 0 3px color-mix(in srgb, var(--dsw-alias-brand-primary) 22%, transparent)}._0yZr2a_nodeRelated{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 45%, transparent)}._0yZr2a_nodeConnectTarget{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 4px color-mix(in srgb, var(--dsw-alias-brand-primary) 26%, transparent)}._0yZr2a_nodeHeader{color:var(--dsw-alias-label-secondary);cursor:inherit;flex:none;align-items:center;gap:6px;padding:7px 12px 5px;font-size:11.5px;display:flex}._0yZr2a_nodeTitle{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}._0yZr2a_nodeSize{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;margin-left:auto;font-size:10.5px}._0yZr2a_nodeSpinner{border:1.5px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 30%, transparent);border-top-color:var(--dsw-alias-brand-primary);border-radius:50%;flex:none;width:11px;height:11px;animation:.8s linear infinite _0yZr2a_canvasSpin}._0yZr2a_nodeBody{background:color-mix(in srgb, var(--dsw-alias-label-primary) 6%, transparent);pointer-events:none;border-radius:9px;flex:1;justify-content:center;align-items:center;min-height:0;margin:0 8px 8px;display:flex;overflow:hidden}._0yZr2a_nodeBody img{object-fit:contain;width:100%;height:100%;display:block}._0yZr2a_imageInfo{z-index:2;background:color-mix(in srgb, var(--dsw-alias-label-primary) 62%, transparent);color:var(--dsw-alias-bg-layer-1);pointer-events:none;backdrop-filter:blur(3px);text-overflow:ellipsis;white-space:nowrap;border-radius:6px;max-width:calc(100% - 90px);padding:3px 8px;font-size:10.5px;line-height:1.4;position:absolute;top:6px;overflow:hidden}._0yZr2a_imageInfoLeft{font-weight:600;left:6px}._0yZr2a_imageInfoRight{font-variant-numeric:tabular-nums;opacity:.85;left:auto;right:6px}._0yZr2a_nodeState,._0yZr2a_nodeStateError{color:var(--dsw-alias-label-secondary);text-align:center;pointer-events:auto;flex-direction:column;align-items:center;gap:8px;padding:12px;font-size:12px;display:flex}._0yZr2a_nodeStateError{color:var(--dsw-alias-label-error)}._0yZr2a_nodeStateError button{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:7px;padding:4px 12px;font-size:12px}._0yZr2a_nodeEmpty{border:1.5px dashed color-mix(in srgb, var(--dsw-alias-label-primary) 24%, transparent);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border-radius:9px;flex-direction:column;align-items:center;gap:8px;margin:6px;padding:14px;font-size:12px;display:flex}._0yZr2a_nodeEmpty:hover{border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-brand-primary)}._0yZr2a_textNode{cursor:default}._0yZr2a_imageNode ._0yZr2a_nodeBody{margin:6px}._0yZr2a_textArea{resize:none;min-height:0;color:var(--dsw-alias-label-primary);cursor:text;pointer-events:auto;background:0 0;border:none;outline:none;flex:1;margin:0 8px 8px;padding:4px 6px;font-size:13px;line-height:1.55}._0yZr2a_textArea::placeholder{color:var(--dsw-alias-label-tertiary)}._0yZr2a_dock{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 92%, transparent);backdrop-filter:blur(10px);border-radius:13px;align-items:center;gap:2px;padding:6px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0f172a24}._0yZr2a_dock ._0yZr2a_iconButton{border-radius:11px;width:40px;height:40px;transition:transform .18s cubic-bezier(.34,1.9,.64,1),background .15s,color .15s,box-shadow .18s;position:relative;overflow:hidden}._0yZr2a_dock ._0yZr2a_iconButton:before{content:\"\";background:linear-gradient(105deg, transparent, color-mix(in srgb, currentColor 26%, transparent), transparent);opacity:0;pointer-events:none;width:65%;position:absolute;top:-4px;bottom:-4px;left:-150%;transform:skew(-18deg)}._0yZr2a_dock ._0yZr2a_iconButton:not(:disabled):hover{transform:translateY(calc(-3px - var(--dock-lift,0px)));box-shadow:0 6px 14px color-mix(in srgb, var(--dsw-alias-label-primary) 20%, transparent)}._0yZr2a_dock ._0yZr2a_iconButton:not(:disabled):hover:before{animation:.55s forwards _0yZr2a_dockShine}._0yZr2a_dock ._0yZr2a_iconButton:not(:disabled):active{transform:translateY(-1px)scale(.96)}@keyframes _0yZr2a_dockShine{0%{opacity:1;left:-150%}to{opacity:1;left:170%}}._0yZr2a_dock ._0yZr2a_iconButton[data-active],._0yZr2a_dock ._0yZr2a_iconButton[data-active]:hover{background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-1)}._0yZr2a_dockDivider{background:var(--dsw-alias-border-l1);width:1px;height:18px;margin:0 4px}._0yZr2a_composer{z-index:35;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 96%, transparent);backdrop-filter:blur(10px);border-radius:14px;flex-direction:column;gap:8px;width:560px;padding:10px;display:flex;position:absolute;box-shadow:0 16px 44px #0f172a2e}._0yZr2a_composerPrompt{resize:none;width:100%;min-height:38px;max-height:120px;color:var(--dsw-alias-label-primary);cursor:text;background:0 0;border:none;outline:none;padding:2px 4px;font-size:13px;line-height:1.5}._0yZr2a_composerPrompt::placeholder{color:var(--dsw-alias-label-tertiary)}._0yZr2a_composerMeta{display:flex}._0yZr2a_composerChip{border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 45%, transparent);color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, transparent);border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:11px;display:inline-flex}._0yZr2a_composerControls{align-items:center;gap:6px;display:flex}._0yZr2a_composerControls select{border:1px solid var(--dsw-alias-border-l1);height:28px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:999px;min-width:0;max-width:128px;padding:0 8px;font-size:11.5px}._0yZr2a_composerSend{background:var(--dsw-alias-label-primary);width:34px;height:34px;color:var(--dsw-alias-bg-layer-1);cursor:pointer;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;margin-left:auto;display:inline-flex}._0yZr2a_composerSend:hover{opacity:.88}._0yZr2a_composerSend:disabled{opacity:.35;cursor:not-allowed}._0yZr2a_configNode{cursor:grab;padding:0 14px 14px}._0yZr2a_configNode ._0yZr2a_nodeHeader{padding:10px 2px 6px;font-size:12px}._0yZr2a_configLinks{flex:none;align-items:center;margin:4px 0 10px;display:flex}._0yZr2a_configLinks ._0yZr2a_composerChip{padding:3px 10px;font-size:11px}._0yZr2a_configHint{min-height:0;color:var(--dsw-alias-label-tertiary);flex:1;margin:0;font-size:11.5px;line-height:1.7;overflow:auto}._0yZr2a_handle{background:var(--dsw-alias-bg-layer-1);border:2px solid var(--dsw-alias-brand-primary);opacity:0;cursor:crosshair;z-index:3;border-radius:50%;width:12px;height:12px;transition:opacity .12s,transform .12s;position:absolute;top:50%;transform:translateY(-50%)scale(.6)}._0yZr2a_handleLeft{left:-7px}._0yZr2a_handleRight{right:-7px}._0yZr2a_node:hover ._0yZr2a_handle,._0yZr2a_nodeSelected ._0yZr2a_handle,._0yZr2a_nodeConnectTarget ._0yZr2a_handle{opacity:1;transform:translateY(-50%)scale(1)}._0yZr2a_handle:hover{background:var(--dsw-alias-brand-primary)}._0yZr2a_resizeHandle{background:var(--dsw-alias-brand-primary);border:2px solid var(--dsw-alias-bg-layer-1);cursor:nwse-resize;z-index:3;border-radius:4px;width:14px;height:14px;position:absolute;bottom:-5px;right:-5px}._0yZr2a_hoverToolbar{border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 92%, transparent);opacity:0;pointer-events:none;z-index:4;border-radius:10px;gap:2px;padding:4px;transition:opacity .12s;display:flex;position:absolute;top:-36px;left:50%;transform:translate(-50%);box-shadow:0 8px 22px #0f172a24}._0yZr2a_node:hover ._0yZr2a_hoverToolbar,._0yZr2a_nodeSelected ._0yZr2a_hoverToolbar{opacity:1;pointer-events:auto}._0yZr2a_connectionLayer{pointer-events:none;z-index:0;position:absolute;overflow:visible}._0yZr2a_connectionPath{fill:none;stroke:color-mix(in srgb, var(--dsw-alias-label-primary) 38%, transparent);stroke-width:2px;stroke-opacity:.85;pointer-events:none}._0yZr2a_connectionActive{stroke:var(--dsw-alias-brand-primary);stroke-width:3px;stroke-opacity:1;filter:drop-shadow(0 0 6px color-mix(in srgb, var(--dsw-alias-brand-primary) 45%, transparent))}._0yZr2a_connectionPreview{fill:none;stroke:var(--dsw-alias-brand-primary);stroke-width:2px;stroke-dasharray:5 5;pointer-events:none}._0yZr2a_emptyHint{text-align:center;color:var(--dsw-alias-label-tertiary);pointer-events:none;z-index:5;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}._0yZr2a_emptyHint strong{color:var(--dsw-alias-label-secondary);font-size:16px}._0yZr2a_emptyHint span{max-width:320px;font-size:12.5px;line-height:1.6}._0yZr2a_zoomDock{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 88%, transparent);backdrop-filter:blur(10px);border-radius:12px;align-items:center;gap:6px;padding:6px 8px;display:flex;position:absolute;bottom:14px;left:14px;box-shadow:0 10px 30px #0f172a1f}._0yZr2a_zoomDock input[type=range]{width:96px;accent-color:var(--dsw-alias-brand-primary)}._0yZr2a_zoomValue{text-align:right;width:40px;color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:11.5px}._0yZr2a_minimap{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 88%, transparent);backdrop-filter:blur(10px);border-radius:12px;width:220px;height:150px;position:absolute;bottom:62px;left:14px;overflow:hidden;box-shadow:0 10px 30px #0f172a1f}._0yZr2a_minimapCanvas{cursor:crosshair;width:100%;height:100%;position:relative}._0yZr2a_minimapNode{opacity:.8;border-radius:2px;position:absolute}._0yZr2a_minimapImage{background:var(--dsw-alias-brand-primary)}._0yZr2a_minimapText{background:color-mix(in srgb, var(--dsw-alias-label-primary) 40%, transparent)}._0yZr2a_minimapSelected{outline:1.5px solid var(--dsw-alias-brand-primary)}._0yZr2a_minimapViewport{border:1.5px solid var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent);pointer-events:none;border-radius:2px;position:absolute}._0yZr2a_inspectorRow{gap:8px;display:flex}._0yZr2a_inspectorRow>*{flex:1;min-width:0}._0yZr2a_contextMenu{z-index:90;border:1px solid var(--dsw-alias-border-l1);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 96%, transparent);border-radius:11px;flex-direction:column;min-width:176px;padding:5px;display:flex;position:fixed;box-shadow:0 16px 40px #0f172a33}._0yZr2a_contextMenu button{color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:7px;align-items:center;gap:8px;padding:7px 10px;font-size:12.5px;display:flex}._0yZr2a_contextMenu button:hover{background:var(--dsw-alias-interactive-bg-hover)}._0yZr2a_contextMenu button[data-danger]{color:var(--dsw-alias-label-error)}._0yZr2a_errorToast{z-index:60;border:1px solid color-mix(in srgb, var(--dsw-alias-label-error) 35%, transparent);background:color-mix(in srgb, var(--dsw-alias-label-error) 12%, var(--dsw-alias-bg-layer-1));max-width:min(560px,80%);color:var(--dsw-alias-label-error);border-radius:10px;align-items:center;gap:10px;padding:9px 12px;font-size:12.5px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 12px 30px #0f172a2e}._0yZr2a_errorToast button{color:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:2px;display:inline-flex}._0yZr2a_modalBackdrop{z-index:70;background:color-mix(in srgb, var(--dsw-alias-label-primary) 32%, transparent);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}._0yZr2a_picker{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:14px;flex-direction:column;width:min(720px,92%);max-height:84%;display:flex;overflow:hidden;box-shadow:0 24px 60px #0f172a42}._0yZr2a_pickerHeader{border-bottom:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:center;padding:12px 14px;font-size:14px;display:flex}._0yZr2a_pickerHeader button{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:18px}._0yZr2a_pickerTabs{gap:4px;padding:10px 14px 0;display:flex}._0yZr2a_pickerTabs button{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px 8px 0 0;padding:7px 12px;font-size:12.5px}._0yZr2a_pickerTabs button[data-active]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-brand-primary)}._0yZr2a_pickerBody{flex:1;min-height:0;padding:14px;overflow:auto}._0yZr2a_pickerGrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}._0yZr2a_pickerCard{border:1.5px solid var(--dsw-alias-border-l1);cursor:pointer;text-align:left;color:var(--dsw-alias-label-primary);background:0 0;border-radius:10px;flex-direction:column;gap:6px;padding:6px;display:flex}._0yZr2a_pickerCard[data-selected]{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-alias-brand-primary) 25%, transparent)}._0yZr2a_pickerCard img{object-fit:cover;border-radius:7px;width:100%;height:110px}._0yZr2a_pickerCardPrompt{text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}._0yZr2a_pickerCard small{color:var(--dsw-alias-label-tertiary);font-size:10.5px}._0yZr2a_pickerFooter{color:var(--dsw-alias-label-secondary);justify-content:space-between;align-items:center;padding-top:12px;font-size:12.5px;display:flex}._0yZr2a_pickerFooter button,._0yZr2a_generateForm button{background:var(--dsw-alias-brand-primary);height:32px;color:var(--dsw-alias-bg-base,#fff);cursor:pointer;border:none;border-radius:8px;align-items:center;gap:6px;padding:0 16px;font-size:12.5px;font-weight:600;display:inline-flex}._0yZr2a_pickerFooter button:disabled,._0yZr2a_generateForm button:disabled{opacity:.45;cursor:not-allowed}._0yZr2a_uploadBox{border:1.5px dashed color-mix(in srgb, var(--dsw-alias-label-primary) 22%, transparent);min-height:220px;color:var(--dsw-alias-label-secondary);cursor:pointer;text-align:center;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}._0yZr2a_uploadBox:hover{border-color:var(--dsw-alias-brand-primary)}._0yZr2a_uploadBox input{display:none}._0yZr2a_uploadBox small{color:var(--dsw-alias-label-tertiary);font-size:11px}._0yZr2a_uploadIcon{color:var(--dsw-alias-brand-primary)}._0yZr2a_generateForm{flex-direction:column;gap:10px;display:flex}._0yZr2a_generateForm textarea{resize:vertical;border:1px solid var(--dsw-alias-border-l1);min-height:110px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:9px;outline:none;padding:8px 10px;font-size:12.5px}._0yZr2a_generateForm select{border:1px solid var(--dsw-alias-border-l1);height:30px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;padding:0 8px;font-size:12.5px}@keyframes _0yZr2a_canvasSpin{to{transform:rotate(360deg)}}";
2784
2844
  const tagId$3 = "@dickpy/dsh-imagegen/canvas-workspace.module.css";
2785
2845
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
2786
2846
  const tag = document.createElement("style");
@@ -2790,82 +2850,89 @@ window.__ModuleLoader__.load({
2790
2850
  document.head.appendChild(tag);
2791
2851
  }
2792
2852
  var canvas_workspace_module_css_default = {
2793
- "composerSend": "_0yZr2a_composerSend",
2794
- "projectSelect": "_0yZr2a_projectSelect",
2795
- "nodeGlow": "_0yZr2a_nodeGlow",
2796
- "nodeHeader": "_0yZr2a_nodeHeader",
2797
- "world": "_0yZr2a_world",
2798
- "nodeStateError": "_0yZr2a_nodeStateError",
2799
- "textArea": "_0yZr2a_textArea",
2800
- "pickerHeader": "_0yZr2a_pickerHeader",
2801
- "pickerGrid": "_0yZr2a_pickerGrid",
2802
- "pickerCardPrompt": "_0yZr2a_pickerCardPrompt",
2803
- "dockDivider": "_0yZr2a_dockDivider",
2853
+ "errorToast": "_0yZr2a_errorToast",
2854
+ "pickerCard": "_0yZr2a_pickerCard",
2855
+ "nodeSelected": "_0yZr2a_nodeSelected",
2856
+ "minimapText": "_0yZr2a_minimapText",
2857
+ "connectionLayer": "_0yZr2a_connectionLayer",
2858
+ "nodeBody": "_0yZr2a_nodeBody",
2859
+ "hoverToolbar": "_0yZr2a_hoverToolbar",
2860
+ "pickerFooter": "_0yZr2a_pickerFooter",
2861
+ "gridScrim": "_0yZr2a_gridScrim",
2862
+ "panCursor": "_0yZr2a_panCursor",
2863
+ "dockShine": "_0yZr2a_dockShine",
2864
+ "minimapNode": "_0yZr2a_minimapNode",
2804
2865
  "root": "_0yZr2a_root",
2805
- "minimap": "_0yZr2a_minimap",
2806
- "uploadIcon": "_0yZr2a_uploadIcon",
2807
2866
  "nodeConnectTarget": "_0yZr2a_nodeConnectTarget",
2867
+ "iconButton": "_0yZr2a_iconButton",
2868
+ "dock": "_0yZr2a_dock",
2869
+ "contextMenu": "_0yZr2a_contextMenu",
2870
+ "nodeTitle": "_0yZr2a_nodeTitle",
2871
+ "projectSelect": "_0yZr2a_projectSelect",
2872
+ "viewport": "_0yZr2a_viewport",
2873
+ "nodeEmpty": "_0yZr2a_nodeEmpty",
2874
+ "modalBackdrop": "_0yZr2a_modalBackdrop",
2875
+ "textNode": "_0yZr2a_textNode",
2876
+ "composer": "_0yZr2a_composer",
2877
+ "dockDivider": "_0yZr2a_dockDivider",
2808
2878
  "nodeSpinner": "_0yZr2a_nodeSpinner",
2809
- "minimapViewport": "_0yZr2a_minimapViewport",
2810
- "handleRight": "_0yZr2a_handleRight",
2879
+ "emptyHint": "_0yZr2a_emptyHint",
2880
+ "resizeHandle": "_0yZr2a_resizeHandle",
2881
+ "connectionActive": "_0yZr2a_connectionActive",
2811
2882
  "configHint": "_0yZr2a_configHint",
2883
+ "picker": "_0yZr2a_picker",
2884
+ "zoomDock": "_0yZr2a_zoomDock",
2885
+ "configLinks": "_0yZr2a_configLinks",
2886
+ "world": "_0yZr2a_world",
2887
+ "uploadBox": "_0yZr2a_uploadBox",
2888
+ "imageNode": "_0yZr2a_imageNode",
2889
+ "handle": "_0yZr2a_handle",
2890
+ "imageInfoRight": "_0yZr2a_imageInfoRight",
2891
+ "pickerCardPrompt": "_0yZr2a_pickerCardPrompt",
2812
2892
  "nodeSize": "_0yZr2a_nodeSize",
2813
- "viewport": "_0yZr2a_viewport",
2814
- "titleButton": "_0yZr2a_titleButton",
2815
- "node": "_0yZr2a_node",
2816
- "hoverToolbar": "_0yZr2a_hoverToolbar",
2893
+ "generateForm": "_0yZr2a_generateForm",
2894
+ "nodeRelated": "_0yZr2a_nodeRelated",
2895
+ "imageInfoLeft": "_0yZr2a_imageInfoLeft",
2896
+ "minimapImage": "_0yZr2a_minimapImage",
2897
+ "composerPrompt": "_0yZr2a_composerPrompt",
2817
2898
  "canvasSpin": "_0yZr2a_canvasSpin",
2818
- "handle": "_0yZr2a_handle",
2899
+ "nodeState": "_0yZr2a_nodeState",
2900
+ "configNode": "_0yZr2a_configNode",
2901
+ "connectionPath": "_0yZr2a_connectionPath",
2902
+ "pickerTabs": "_0yZr2a_pickerTabs",
2903
+ "pickerGrid": "_0yZr2a_pickerGrid",
2904
+ "uploadIcon": "_0yZr2a_uploadIcon",
2819
2905
  "composerChip": "_0yZr2a_composerChip",
2820
- "uploadBox": "_0yZr2a_uploadBox",
2906
+ "handleLeft": "_0yZr2a_handleLeft",
2821
2907
  "marquee": "_0yZr2a_marquee",
2822
- "generateForm": "_0yZr2a_generateForm",
2908
+ "composerControls": "_0yZr2a_composerControls",
2909
+ "titleButton": "_0yZr2a_titleButton",
2910
+ "minimap": "_0yZr2a_minimap",
2911
+ "grid": "_0yZr2a_grid",
2912
+ "handleRight": "_0yZr2a_handleRight",
2823
2913
  "minimapSelected": "_0yZr2a_minimapSelected",
2824
- "topBarSpacer": "_0yZr2a_topBarSpacer",
2825
- "imageNode": "_0yZr2a_imageNode",
2826
- "nodeTitle": "_0yZr2a_nodeTitle",
2827
- "handleLeft": "_0yZr2a_handleLeft",
2828
- "zoomDock": "_0yZr2a_zoomDock",
2829
- "dock": "_0yZr2a_dock",
2830
- "connectionActive": "_0yZr2a_connectionActive",
2831
- "pickerFooter": "_0yZr2a_pickerFooter",
2832
- "topBar": "_0yZr2a_topBar",
2833
- "nodeEmpty": "_0yZr2a_nodeEmpty",
2834
- "textNode": "_0yZr2a_textNode",
2835
- "minimapImage": "_0yZr2a_minimapImage",
2836
- "pickerTabs": "_0yZr2a_pickerTabs",
2837
- "saveState": "_0yZr2a_saveState",
2838
- "iconButton": "_0yZr2a_iconButton",
2839
- "connectionPreview": "_0yZr2a_connectionPreview",
2840
- "nodeSelected": "_0yZr2a_nodeSelected",
2841
- "connectionLayer": "_0yZr2a_connectionLayer",
2842
- "titleInput": "_0yZr2a_titleInput",
2843
- "zoomValue": "_0yZr2a_zoomValue",
2844
2914
  "inspectorRow": "_0yZr2a_inspectorRow",
2845
- "panCursor": "_0yZr2a_panCursor",
2846
- "grid": "_0yZr2a_grid",
2847
- "composerControls": "_0yZr2a_composerControls",
2848
- "composerMeta": "_0yZr2a_composerMeta",
2849
- "resizeHandle": "_0yZr2a_resizeHandle",
2850
- "nodeBody": "_0yZr2a_nodeBody",
2851
- "minimapText": "_0yZr2a_minimapText",
2852
- "nodeRelated": "_0yZr2a_nodeRelated",
2853
- "errorToast": "_0yZr2a_errorToast",
2854
- "pickerCard": "_0yZr2a_pickerCard",
2855
- "picker": "_0yZr2a_picker",
2856
- "emptyHint": "_0yZr2a_emptyHint",
2857
- "contextMenu": "_0yZr2a_contextMenu",
2858
- "nodeState": "_0yZr2a_nodeState",
2915
+ "backgroundMenu": "_0yZr2a_backgroundMenu",
2916
+ "titleInput": "_0yZr2a_titleInput",
2859
2917
  "pickerBody": "_0yZr2a_pickerBody",
2860
- "configNode": "_0yZr2a_configNode",
2918
+ "textArea": "_0yZr2a_textArea",
2919
+ "node": "_0yZr2a_node",
2920
+ "composerSend": "_0yZr2a_composerSend",
2921
+ "saveState": "_0yZr2a_saveState",
2922
+ "nodeStateError": "_0yZr2a_nodeStateError",
2923
+ "composerMeta": "_0yZr2a_composerMeta",
2924
+ "topBarSpacer": "_0yZr2a_topBarSpacer",
2925
+ "nodeGlow": "_0yZr2a_nodeGlow",
2926
+ "imageInfo": "_0yZr2a_imageInfo",
2927
+ "backgroundMenuDivider": "_0yZr2a_backgroundMenuDivider",
2928
+ "connectionPreview": "_0yZr2a_connectionPreview",
2929
+ "nodeHeader": "_0yZr2a_nodeHeader",
2930
+ "topBar": "_0yZr2a_topBar",
2861
2931
  "selectCursor": "_0yZr2a_selectCursor",
2862
- "connectionPath": "_0yZr2a_connectionPath",
2863
- "configLinks": "_0yZr2a_configLinks",
2864
- "composer": "_0yZr2a_composer",
2865
- "minimapNode": "_0yZr2a_minimapNode",
2866
- "composerPrompt": "_0yZr2a_composerPrompt",
2932
+ "zoomValue": "_0yZr2a_zoomValue",
2933
+ "pickerHeader": "_0yZr2a_pickerHeader",
2867
2934
  "minimapCanvas": "_0yZr2a_minimapCanvas",
2868
- "modalBackdrop": "_0yZr2a_modalBackdrop"
2935
+ "minimapViewport": "_0yZr2a_minimapViewport"
2869
2936
  };
2870
2937
  //#endregion
2871
2938
  //#region src/client/CanvasWorkspace.tsx
@@ -2887,6 +2954,10 @@ window.__ModuleLoader__.load({
2887
2954
  height: 150
2888
2955
  };
2889
2956
  const CONFIG_NODE_SIZE = {
2957
+ width: 320,
2958
+ height: 190
2959
+ };
2960
+ const LEGACY_CONFIG_NODE_SIZE = {
2890
2961
  width: 240,
2891
2962
  height: 96
2892
2963
  };
@@ -2963,6 +3034,19 @@ window.__ModuleLoader__.load({
2963
3034
  maxY: -Infinity
2964
3035
  });
2965
3036
  }
3037
+ /** Enlarge config nodes still stored at the pre-expansion default so the
3038
+ * roomier layout applies to existing canvases too. */
3039
+ function normalizeConfigNodeSizes(document) {
3040
+ const nodes = document.nodes.map((node) => node.type === "config" && node.width === LEGACY_CONFIG_NODE_SIZE.width && node.height === LEGACY_CONFIG_NODE_SIZE.height ? {
3041
+ ...node,
3042
+ width: CONFIG_NODE_SIZE.width,
3043
+ height: CONFIG_NODE_SIZE.height
3044
+ } : node);
3045
+ return nodes === document.nodes ? document : {
3046
+ ...document,
3047
+ nodes
3048
+ };
3049
+ }
2966
3050
  function summaryOf(document) {
2967
3051
  return {
2968
3052
  id: document.id,
@@ -2994,10 +3078,10 @@ window.__ModuleLoader__.load({
2994
3078
  y: node.y + node.height / 2
2995
3079
  };
2996
3080
  }
2997
- function ToolbarIcon({ name }) {
3081
+ function ToolbarIcon({ name, size = 16 }) {
2998
3082
  const common = {
2999
- width: 16,
3000
- height: 16,
3083
+ width: size,
3084
+ height: size,
3001
3085
  viewBox: "0 0 16 16",
3002
3086
  fill: "none",
3003
3087
  stroke: "currentColor",
@@ -3068,11 +3152,17 @@ window.__ModuleLoader__.load({
3068
3152
  });
3069
3153
  if (name === "background") return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
3070
3154
  ...common,
3071
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
3072
- cx: "8",
3073
- cy: "8",
3074
- r: "5.5"
3075
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M8 2.5v11M2.5 8h11M4 4.3c2.4 1.9 5.6 1.9 8 0M4 11.7c2.4-1.9 5.6-1.9 8 0" })]
3155
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
3156
+ x: "2",
3157
+ y: "4.5",
3158
+ width: "10.5",
3159
+ height: "9",
3160
+ rx: "1.5"
3161
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M4.5 2h10a1.5 1.5 0 0 1 1.5 1.5V11M4.5 10.5l2.6-2.8 2.1 2.2 2.3-2.4 1.5 1.5" })]
3162
+ });
3163
+ if (name === "template") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
3164
+ ...common,
3165
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M8 3.6C6.9 2.5 5 2 2.5 2v10.6c2.5 0 4.4.5 5.5 1.6 1.1-1.1 3-1.6 5.5-1.6V2C11 2 9.1 2.5 8 3.6zM8 3.6V14" })
3076
3166
  });
3077
3167
  if (name === "download") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
3078
3168
  ...common,
@@ -3114,7 +3204,12 @@ window.__ModuleLoader__.load({
3114
3204
  title: props.label,
3115
3205
  disabled: props.disabled,
3116
3206
  onClick: props.onClick,
3117
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToolbarIcon, { name: props.name })
3207
+ onMouseEnter: props.onMouseEnter,
3208
+ onMouseLeave: props.onMouseLeave,
3209
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToolbarIcon, {
3210
+ name: props.name,
3211
+ size: props.size
3212
+ })
3118
3213
  });
3119
3214
  }
3120
3215
  function CanvasWorkspace(props) {
@@ -3136,6 +3231,44 @@ window.__ModuleLoader__.load({
3136
3231
  const [createMenu, setCreateMenu] = (0, react.useState)(null);
3137
3232
  const [minimapOpen, setMinimapOpen] = (0, react.useState)(true);
3138
3233
  const [pickerOpen, setPickerOpen] = (0, react.useState)(false);
3234
+ const [backgroundMenu, setBackgroundMenu] = (0, react.useState)(null);
3235
+ const [imageMenu, setImageMenu] = (0, react.useState)(null);
3236
+ const menuCloseTimer = (0, react.useRef)(null);
3237
+ const clearMenuCloseTimer = () => {
3238
+ if (menuCloseTimer.current !== null) {
3239
+ window.clearTimeout(menuCloseTimer.current);
3240
+ menuCloseTimer.current = null;
3241
+ }
3242
+ };
3243
+ const scheduleMenuClose = (0, react.useCallback)(() => {
3244
+ clearMenuCloseTimer();
3245
+ menuCloseTimer.current = window.setTimeout(() => {
3246
+ setBackgroundMenu(null);
3247
+ setImageMenu(null);
3248
+ }, 280);
3249
+ }, []);
3250
+ /** Open one dock menu anchored to its button (root-relative) and close the
3251
+ * other: the two menus are mutually exclusive. */
3252
+ const openDockMenu = (0, react.useCallback)((kind, button) => {
3253
+ clearMenuCloseTimer();
3254
+ const bounds = button.getBoundingClientRect();
3255
+ const rootRect = rootRef.current?.getBoundingClientRect();
3256
+ const screen = {
3257
+ x: bounds.left + bounds.width / 2 - (rootRect?.left ?? 0),
3258
+ y: bounds.top - (rootRect?.top ?? 0)
3259
+ };
3260
+ if (kind === "image") {
3261
+ setImageMenu(screen);
3262
+ setBackgroundMenu(null);
3263
+ } else {
3264
+ setBackgroundMenu(screen);
3265
+ setImageMenu(null);
3266
+ }
3267
+ }, []);
3268
+ const [libraryOpen, setLibraryOpen] = (0, react.useState)(false);
3269
+ const [pickerTab, setPickerTab] = (0, react.useState)("upload");
3270
+ const backgroundFileRef = (0, react.useRef)(null);
3271
+ const imageFileRef = (0, react.useRef)(null);
3139
3272
  const [renamingTitle, setRenamingTitle] = (0, react.useState)(false);
3140
3273
  const [confirmDeleteProject, setConfirmDeleteProject] = (0, react.useState)(false);
3141
3274
  const [saveState, setSaveState] = (0, react.useState)("loading");
@@ -3147,6 +3280,7 @@ window.__ModuleLoader__.load({
3147
3280
  const [composerQuality, setComposerQuality] = (0, react.useState)("auto");
3148
3281
  const [composerCount, setComposerCount] = (0, react.useState)(1);
3149
3282
  const [composerBusy, setComposerBusy] = (0, react.useState)(false);
3283
+ const rootRef = (0, react.useRef)(null);
3150
3284
  const viewportRef = (0, react.useRef)(null);
3151
3285
  const documentRef = (0, react.useRef)(null);
3152
3286
  const selectedIdsRef = (0, react.useRef)(selectedIds);
@@ -3452,10 +3586,20 @@ window.__ModuleLoader__.load({
3452
3586
  setComposerBusy(true);
3453
3587
  try {
3454
3588
  let image;
3589
+ let images;
3455
3590
  let refName;
3456
3591
  if (baseAsset !== void 0) {
3457
3592
  image = await assetToDataUrl(baseAsset);
3458
3593
  refName = "canvas-reference.png";
3594
+ const extras = [];
3595
+ for (const reference of referenceImages.slice(1, 4)) {
3596
+ const asset = usableAsset(reference);
3597
+ if (asset === void 0) continue;
3598
+ try {
3599
+ extras.push(await assetToDataUrl(asset));
3600
+ } catch {}
3601
+ }
3602
+ if (extras.length > 0) images = extras;
3459
3603
  }
3460
3604
  const footprint = nodeSizeFromRatio(composerSize, IMAGE_NODE_SIZE);
3461
3605
  const request = {
@@ -3471,6 +3615,7 @@ window.__ModuleLoader__.load({
3471
3615
  image,
3472
3616
  refName
3473
3617
  },
3618
+ ...images === void 0 ? {} : { images },
3474
3619
  canvas: {
3475
3620
  canvasId: current.id,
3476
3621
  ...target === null ? {} : {
@@ -3566,10 +3711,20 @@ window.__ModuleLoader__.load({
3566
3711
  const baseAsset = references[0] !== void 0 ? usableAsset(references[0]) : void 0;
3567
3712
  try {
3568
3713
  let image;
3714
+ let images;
3569
3715
  let refName;
3570
3716
  if (baseAsset !== void 0) {
3571
3717
  image = await assetToDataUrl(baseAsset);
3572
3718
  refName = "canvas-reference.png";
3719
+ const extras = [];
3720
+ for (const reference of references.slice(1, 4)) {
3721
+ const asset = usableAsset(reference);
3722
+ if (asset === void 0) continue;
3723
+ try {
3724
+ extras.push(await assetToDataUrl(asset));
3725
+ } catch {}
3726
+ }
3727
+ if (extras.length > 0) images = extras;
3573
3728
  }
3574
3729
  const request = {
3575
3730
  mode: image === void 0 ? "text" : "edit",
@@ -3584,6 +3739,7 @@ window.__ModuleLoader__.load({
3584
3739
  image,
3585
3740
  refName
3586
3741
  },
3742
+ ...images === void 0 ? {} : { images },
3587
3743
  canvas: {
3588
3744
  canvasId: current.id,
3589
3745
  sourceNodeId: references[0]?.id ?? sourceId,
@@ -3800,7 +3956,7 @@ window.__ModuleLoader__.load({
3800
3956
  const first = list[0] === void 0 ? await api.canvasCreate(tt("canvas.untitled")) : await api.canvasRead(list[0].id);
3801
3957
  if (disposed) return;
3802
3958
  setProjects(list[0] === void 0 ? [summaryOf(first)] : list);
3803
- setDocument(first);
3959
+ setDocument(normalizeConfigNodeSizes(first));
3804
3960
  syncedRef.current = JSON.stringify(first);
3805
3961
  setSaveState("saved");
3806
3962
  }).catch((caught) => {
@@ -3875,6 +4031,8 @@ window.__ModuleLoader__.load({
3875
4031
  if (event.key === "Escape") {
3876
4032
  setContextMenu(null);
3877
4033
  setCreateMenu(null);
4034
+ setBackgroundMenu(null);
4035
+ setImageMenu(null);
3878
4036
  if (!isEditingTarget(event.target)) {
3879
4037
  setSelectedIds(/* @__PURE__ */ new Set());
3880
4038
  setSelectedConnectionId(null);
@@ -3979,6 +4137,10 @@ window.__ModuleLoader__.load({
3979
4137
  const target = event.target instanceof Element ? event.target : null;
3980
4138
  setContextMenu(null);
3981
4139
  setCreateMenu(null);
4140
+ if (!target?.closest("[data-canvas-no-zoom]")) {
4141
+ setBackgroundMenu(null);
4142
+ setImageMenu(null);
4143
+ }
3982
4144
  const isBackground = target?.closest("[data-node-id],[data-connection-hit]") === null;
3983
4145
  if (event.button === 1 || event.button === 0 && (tool === "pan" || temporaryPanTool) && isBackground) {
3984
4146
  event.preventDefault();
@@ -4333,7 +4495,7 @@ window.__ModuleLoader__.load({
4333
4495
  const selectProject = (0, react.useCallback)(async (id) => {
4334
4496
  try {
4335
4497
  const next = await api.canvasRead(id);
4336
- setDocument(next);
4498
+ setDocument(normalizeConfigNodeSizes(next));
4337
4499
  setSelectedIds(/* @__PURE__ */ new Set());
4338
4500
  setSelectedConnectionId(null);
4339
4501
  syncedRef.current = JSON.stringify(next);
@@ -4380,12 +4542,80 @@ window.__ModuleLoader__.load({
4380
4542
  }, [document, selectedIds]);
4381
4543
  const cursorClass = tool === "pan" || temporaryPanTool ? canvas_workspace_module_css_default.panCursor : canvas_workspace_module_css_default.selectCursor;
4382
4544
  const backgroundMode = document?.background ?? "dots";
4383
- const cycleBackground = (0, react.useCallback)(() => {
4545
+ const setBackgroundMode = (0, react.useCallback)((mode) => {
4546
+ mutate((previous) => ({
4547
+ ...previous,
4548
+ background: mode,
4549
+ ...mode === "image" ? {} : { backgroundImage: void 0 }
4550
+ }));
4551
+ setBackgroundMenu(null);
4552
+ }, [mutate]);
4553
+ const uploadBackgroundImage = (0, react.useCallback)(async (file) => {
4554
+ try {
4555
+ const dataUrl = await new Promise((resolve, reject) => {
4556
+ const reader = new FileReader();
4557
+ reader.onload = () => resolve(String(reader.result));
4558
+ reader.onerror = () => reject(/* @__PURE__ */ new Error("读取图片失败"));
4559
+ reader.readAsDataURL(file);
4560
+ });
4561
+ const dimensions = await readImageSize(dataUrl);
4562
+ const asset = await api.canvasUpload(dataUrl, dimensions.width, dimensions.height, {
4563
+ origin: "upload",
4564
+ originId: "canvas-background"
4565
+ });
4566
+ mutate((previous) => ({
4567
+ ...previous,
4568
+ background: "image",
4569
+ backgroundImage: asset.url
4570
+ }));
4571
+ setBackgroundMenu(null);
4572
+ setError(null);
4573
+ } catch (caught) {
4574
+ setError(caught instanceof Error ? caught.message : String(caught));
4575
+ }
4576
+ }, [api, mutate]);
4577
+ const removeBackgroundImage = (0, react.useCallback)(() => {
4384
4578
  mutate((previous) => ({
4385
4579
  ...previous,
4386
- background: previous.background === "dots" ? "lines" : previous.background === "lines" ? "blank" : "dots"
4580
+ background: "dots",
4581
+ backgroundImage: void 0
4387
4582
  }));
4583
+ setBackgroundMenu(null);
4388
4584
  }, [mutate]);
4585
+ const applyTemplate = (0, react.useCallback)((prompt) => {
4586
+ const center = canvasCenter();
4587
+ const config = createConfigNode(center);
4588
+ const placed = {
4589
+ ...createTextNode(),
4590
+ x: Math.round(config.x - TEXT_NODE_SIZE.width - 80),
4591
+ y: Math.round(config.y + (config.height - TEXT_NODE_SIZE.height) / 2),
4592
+ metadata: {
4593
+ text: prompt,
4594
+ fontSize: 14
4595
+ }
4596
+ };
4597
+ mutate((previous) => ({
4598
+ ...previous,
4599
+ nodes: [
4600
+ ...previous.nodes,
4601
+ placed,
4602
+ config
4603
+ ],
4604
+ connections: [...previous.connections, {
4605
+ id: newId("edge"),
4606
+ fromNodeId: placed.id,
4607
+ toNodeId: config.id
4608
+ }]
4609
+ }));
4610
+ setSelectedIds(/* @__PURE__ */ new Set([config.id]));
4611
+ setSelectedConnectionId(null);
4612
+ setLibraryOpen(false);
4613
+ }, [
4614
+ canvasCenter,
4615
+ createConfigNode,
4616
+ createTextNode,
4617
+ mutate
4618
+ ]);
4389
4619
  const gridSize = GRID_SIZE * (document?.viewport.k ?? 1);
4390
4620
  const gridOffsetX = (document?.viewport.x ?? 0) % gridSize;
4391
4621
  const gridOffsetY = (document?.viewport.y ?? 0) % gridSize;
@@ -4453,9 +4683,25 @@ window.__ModuleLoader__.load({
4453
4683
  placeholder: tt("canvas.textPlaceholder"),
4454
4684
  onPointerDown: (event) => event.stopPropagation(),
4455
4685
  onChange: (event) => patchNode(node.id, { text: event.target.value })
4456
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
4686
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4457
4687
  className: canvas_workspace_module_css_default.nodeBody,
4458
- children: isGenerating ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4688
+ children: [hasImage ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4689
+ "aria-hidden": "true",
4690
+ children: [metadata.model !== void 0 && metadata.model !== "" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4691
+ className: `${canvas_workspace_module_css_default.imageInfo} ${canvas_workspace_module_css_default.imageInfoLeft}`,
4692
+ children: metadata.model
4693
+ }) : asset.origin === "gallery" || asset.origin === "history" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4694
+ className: `${canvas_workspace_module_css_default.imageInfo} ${canvas_workspace_module_css_default.imageInfoLeft}`,
4695
+ children: asset.origin === "gallery" ? tt("canvas.fromGallery") : tt("canvas.fromHistory")
4696
+ }) : null, asset !== void 0 && asset.width > 1 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4697
+ className: `${canvas_workspace_module_css_default.imageInfo} ${canvas_workspace_module_css_default.imageInfoRight}`,
4698
+ children: [
4699
+ asset.width,
4700
+ "×",
4701
+ asset.height
4702
+ ]
4703
+ }) : null]
4704
+ }) : null, isGenerating ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4459
4705
  className: canvas_workspace_module_css_default.nodeState,
4460
4706
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4461
4707
  className: canvas_workspace_module_css_default.spinner,
@@ -4478,9 +4724,9 @@ window.__ModuleLoader__.load({
4478
4724
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
4479
4725
  type: "button",
4480
4726
  className: canvas_workspace_module_css_default.nodeEmpty,
4481
- onClick: () => setPickerOpen(true),
4727
+ onClick: () => imageFileRef.current?.click(),
4482
4728
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToolbarIcon, { name: "image" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: tt("canvas.emptyImageNode") })]
4483
- })
4729
+ })]
4484
4730
  }),
4485
4731
  isSelected ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
4486
4732
  className: canvas_workspace_module_css_default.resizeHandle,
@@ -4584,10 +4830,11 @@ window.__ModuleLoader__.load({
4584
4830
  if (!composerVisible || document === null || composerTarget === null) return null;
4585
4831
  const linkedCount = composerReferenceCount + composerTextCount;
4586
4832
  const k = document.viewport.k;
4587
- const centerX = document.viewport.x + (composerTarget.x + composerTarget.width / 2) * k;
4833
+ const topOffset = viewportRef.current?.offsetTop ?? 0;
4834
+ const centerX = topOffset * 0 + document.viewport.x + (composerTarget.x + composerTarget.width / 2) * k;
4588
4835
  const clampedX = Math.min(Math.max(centerX, 292), Math.max(292, viewportSize.width - 292));
4589
- const belowY = document.viewport.y + (composerTarget.y + composerTarget.height) * k + 14;
4590
- const top = belowY > viewportSize.height - 170 ? Math.max(64, document.viewport.y + composerTarget.y * k - 158) : belowY;
4836
+ const belowY = topOffset + document.viewport.y + (composerTarget.y + composerTarget.height) * k + 14;
4837
+ const top = belowY > viewportSize.height + topOffset - 170 ? Math.max(64, topOffset + document.viewport.y + composerTarget.y * k - 158) : belowY;
4591
4838
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4592
4839
  className: canvas_workspace_module_css_default.composer,
4593
4840
  "data-canvas-no-zoom": "",
@@ -4941,6 +5188,7 @@ window.__ModuleLoader__.load({
4941
5188
  };
4942
5189
  })();
4943
5190
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
5191
+ ref: rootRef,
4944
5192
  className: canvas_workspace_module_css_default.root,
4945
5193
  "data-canvas-workspace": "",
4946
5194
  children: [
@@ -5001,23 +5249,6 @@ window.__ModuleLoader__.load({
5001
5249
  children: document?.title ?? ""
5002
5250
  }),
5003
5251
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: canvas_workspace_module_css_default.topBarSpacer }),
5004
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
5005
- name: "background",
5006
- label: tt("canvas.background"),
5007
- onClick: cycleBackground
5008
- }),
5009
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
5010
- name: "undo",
5011
- label: tt("canvas.undo"),
5012
- disabled: pastRef.current.length === 0,
5013
- onClick: undo
5014
- }),
5015
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
5016
- name: "redo",
5017
- label: tt("canvas.redo"),
5018
- disabled: futureRef.current.length === 0,
5019
- onClick: redo
5020
- }),
5021
5252
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5022
5253
  className: canvas_workspace_module_css_default.saveState,
5023
5254
  "data-state": saveState,
@@ -5058,12 +5289,17 @@ window.__ModuleLoader__.load({
5058
5289
  children: [
5059
5290
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5060
5291
  className: canvas_workspace_module_css_default.grid,
5061
- style: {
5292
+ style: backgroundMode === "image" && document?.backgroundImage ? {
5293
+ backgroundImage: `url(${document.backgroundImage})`,
5294
+ backgroundSize: "cover",
5295
+ backgroundPosition: "center"
5296
+ } : {
5062
5297
  backgroundSize: `${gridSize}px ${gridSize}px`,
5063
5298
  backgroundPosition: `${gridOffsetX}px ${gridOffsetY}px`
5064
5299
  },
5065
5300
  "data-mode": backgroundMode,
5066
- "aria-hidden": "true"
5301
+ "aria-hidden": "true",
5302
+ children: backgroundMode === "image" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: canvas_workspace_module_css_default.gridScrim }) : null
5067
5303
  }),
5068
5304
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5069
5305
  className: canvas_workspace_module_css_default.world,
@@ -5081,15 +5317,28 @@ window.__ModuleLoader__.load({
5081
5317
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5082
5318
  className: `${canvas_workspace_module_css_default.dock} ${cursorClass}`,
5083
5319
  "data-canvas-no-zoom": "",
5320
+ onPointerMove: (event) => {
5321
+ const buttons = [...event.currentTarget.querySelectorAll(".iconButton")];
5322
+ for (const button of buttons) {
5323
+ const rect = button.getBoundingClientRect();
5324
+ const distance = Math.abs(event.clientX - (rect.left + rect.width / 2)) / 40;
5325
+ button.style.setProperty("--dock-lift", `${Math.max(0, 4 - distance * 1.5)}px`);
5326
+ }
5327
+ },
5328
+ onPointerLeave: (event) => {
5329
+ for (const button of event.currentTarget.querySelectorAll(".iconButton")) button.style.removeProperty("--dock-lift");
5330
+ },
5084
5331
  children: [
5085
5332
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
5086
5333
  name: "select",
5334
+ size: 18,
5087
5335
  label: tt("canvas.toolSelect"),
5088
5336
  active: tool === "select",
5089
5337
  onClick: () => setTool("select")
5090
5338
  }),
5091
5339
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
5092
5340
  name: "pan",
5341
+ size: 18,
5093
5342
  label: tt("canvas.toolPan"),
5094
5343
  active: tool === "pan",
5095
5344
  onClick: () => setTool("pan")
@@ -5097,28 +5346,228 @@ window.__ModuleLoader__.load({
5097
5346
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: canvas_workspace_module_css_default.dockDivider }),
5098
5347
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
5099
5348
  name: "image",
5349
+ size: 18,
5100
5350
  label: tt("canvas.addImage"),
5101
- onClick: () => setPickerOpen(true)
5351
+ active: imageMenu !== null,
5352
+ onClick: (event) => openDockMenu("image", event.currentTarget),
5353
+ onMouseEnter: (event) => openDockMenu("image", event.currentTarget),
5354
+ onMouseLeave: scheduleMenuClose
5102
5355
  }),
5103
5356
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
5104
5357
  name: "text",
5358
+ size: 18,
5105
5359
  label: tt("canvas.addText"),
5106
5360
  onClick: () => placeNewNode(createTextNode())
5107
5361
  }),
5108
5362
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
5109
5363
  name: "sparkle",
5364
+ size: 18,
5110
5365
  label: tt("canvas.addConfigNode"),
5111
5366
  onClick: () => placeNewNode(createConfigNode())
5112
5367
  }),
5368
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
5369
+ name: "template",
5370
+ size: 18,
5371
+ label: tt("canvas.templateLibrary"),
5372
+ active: libraryOpen,
5373
+ onClick: () => setLibraryOpen((previous) => !previous)
5374
+ }),
5375
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: canvas_workspace_module_css_default.dockDivider }),
5376
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
5377
+ name: "background",
5378
+ size: 18,
5379
+ label: tt("canvas.background"),
5380
+ active: backgroundMenu !== null,
5381
+ onClick: (event) => openDockMenu("background", event.currentTarget),
5382
+ onMouseEnter: (event) => openDockMenu("background", event.currentTarget),
5383
+ onMouseLeave: scheduleMenuClose
5384
+ }),
5385
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
5386
+ name: "undo",
5387
+ size: 18,
5388
+ label: tt("canvas.undo"),
5389
+ disabled: pastRef.current.length === 0,
5390
+ onClick: undo
5391
+ }),
5392
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
5393
+ name: "redo",
5394
+ size: 18,
5395
+ label: tt("canvas.redo"),
5396
+ disabled: futureRef.current.length === 0,
5397
+ onClick: redo
5398
+ }),
5113
5399
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: canvas_workspace_module_css_default.dockDivider }),
5114
5400
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconButton, {
5115
5401
  name: "trash",
5402
+ size: 18,
5116
5403
  label: tt("canvas.delete"),
5117
5404
  disabled: selectedIds.size === 0 && selectedConnectionId === null,
5118
5405
  onClick: deleteSelection
5119
5406
  })
5120
5407
  ]
5121
5408
  }),
5409
+ imageMenu !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5410
+ className: canvas_workspace_module_css_default.backgroundMenu,
5411
+ style: {
5412
+ left: imageMenu.x,
5413
+ top: imageMenu.y - 10
5414
+ },
5415
+ "data-canvas-no-zoom": "",
5416
+ role: "menu",
5417
+ onMouseEnter: clearMenuCloseTimer,
5418
+ onMouseLeave: scheduleMenuClose,
5419
+ children: [
5420
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
5421
+ type: "button",
5422
+ role: "menuitem",
5423
+ onClick: () => {
5424
+ imageFileRef.current?.click();
5425
+ setImageMenu(null);
5426
+ },
5427
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToolbarIcon, {
5428
+ name: "image",
5429
+ size: 16
5430
+ }), tt("canvas.imageMenuUpload")]
5431
+ }),
5432
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
5433
+ type: "button",
5434
+ role: "menuitem",
5435
+ onClick: () => {
5436
+ setPickerTab("gallery");
5437
+ setPickerOpen(true);
5438
+ setImageMenu(null);
5439
+ },
5440
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToolbarIcon, {
5441
+ name: "template",
5442
+ size: 16
5443
+ }), tt("canvas.imageMenuAssets")]
5444
+ }),
5445
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
5446
+ type: "button",
5447
+ role: "menuitem",
5448
+ onClick: () => {
5449
+ setPickerTab("history");
5450
+ setPickerOpen(true);
5451
+ setImageMenu(null);
5452
+ },
5453
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToolbarIcon, {
5454
+ name: "undo",
5455
+ size: 16
5456
+ }), tt("canvas.imageMenuHistory")]
5457
+ }),
5458
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
5459
+ type: "button",
5460
+ role: "menuitem",
5461
+ onClick: () => {
5462
+ setPickerTab("generate");
5463
+ setPickerOpen(true);
5464
+ setImageMenu(null);
5465
+ },
5466
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ToolbarIcon, {
5467
+ name: "sparkle",
5468
+ size: 16
5469
+ }), tt("canvas.imageMenuGenerate")]
5470
+ })
5471
+ ]
5472
+ }) : null,
5473
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
5474
+ ref: imageFileRef,
5475
+ type: "file",
5476
+ accept: "image/png,image/jpeg,image/webp,image/gif",
5477
+ multiple: true,
5478
+ hidden: true,
5479
+ onChange: (event) => {
5480
+ const files = [...event.target.files ?? []].filter((file) => file.type.startsWith("image/"));
5481
+ event.target.value = "";
5482
+ if (files.length === 0) return;
5483
+ const world = canvasCenter();
5484
+ Promise.all(files.map(async (file) => {
5485
+ const dataUrl = await new Promise((resolve, reject) => {
5486
+ const reader = new FileReader();
5487
+ reader.onload = () => resolve(String(reader.result));
5488
+ reader.onerror = () => reject(/* @__PURE__ */ new Error("读取图片失败"));
5489
+ reader.readAsDataURL(file);
5490
+ });
5491
+ const dimensions = await readImageSize(dataUrl);
5492
+ return api.canvasUpload(dataUrl, dimensions.width, dimensions.height, {
5493
+ origin: "upload",
5494
+ originId: file.name
5495
+ });
5496
+ })).then((assets) => {
5497
+ const current = documentRef.current;
5498
+ const selectedId = selectedIdsRef.current.size === 1 ? [...selectedIdsRef.current][0] : void 0;
5499
+ const selectedNode = current?.nodes.find((node) => node.id === selectedId);
5500
+ if (selectedNode?.type === "image" && usableAsset(selectedNode) === void 0 && assets[0] !== void 0) {
5501
+ mutate((previous) => ({
5502
+ ...previous,
5503
+ nodes: previous.nodes.map((node) => node.id === selectedNode.id ? {
5504
+ ...node,
5505
+ width: sizeForAsset(assets[0]).width,
5506
+ height: sizeForAsset(assets[0]).height,
5507
+ metadata: {
5508
+ ...nodeMetadata(node),
5509
+ asset: assets[0],
5510
+ status: "success",
5511
+ error: void 0
5512
+ }
5513
+ } : node)
5514
+ }));
5515
+ if (assets.length > 1) addAssets(assets.slice(1), world);
5516
+ } else addAssets(assets, world);
5517
+ }).catch((caught) => setError(caught instanceof Error ? caught.message : String(caught)));
5518
+ }
5519
+ }),
5520
+ backgroundMenu !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5521
+ className: canvas_workspace_module_css_default.backgroundMenu,
5522
+ style: {
5523
+ left: backgroundMenu.x,
5524
+ top: backgroundMenu.y - 10
5525
+ },
5526
+ "data-canvas-no-zoom": "",
5527
+ role: "menu",
5528
+ onMouseEnter: clearMenuCloseTimer,
5529
+ onMouseLeave: scheduleMenuClose,
5530
+ children: [
5531
+ [
5532
+ ["dots", tt("canvas.backgroundDots")],
5533
+ ["lines", tt("canvas.backgroundLines")],
5534
+ ["diagonal", tt("canvas.backgroundDiagonal")],
5535
+ ["checker", tt("canvas.backgroundChecker")],
5536
+ ["blank", tt("canvas.backgroundBlank")]
5537
+ ].map(([mode, label]) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5538
+ type: "button",
5539
+ role: "menuitem",
5540
+ "data-active": backgroundMode === mode ? "" : void 0,
5541
+ onClick: () => setBackgroundMode(mode),
5542
+ children: label
5543
+ }, mode)),
5544
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: canvas_workspace_module_css_default.backgroundMenuDivider }),
5545
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5546
+ type: "button",
5547
+ role: "menuitem",
5548
+ "data-active": backgroundMode === "image" ? "" : void 0,
5549
+ onClick: () => backgroundFileRef.current?.click(),
5550
+ children: tt("canvas.backgroundUpload")
5551
+ }),
5552
+ backgroundMode === "image" && document?.backgroundImage ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
5553
+ type: "button",
5554
+ role: "menuitem",
5555
+ onClick: removeBackgroundImage,
5556
+ children: tt("canvas.backgroundRemove")
5557
+ }) : null,
5558
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
5559
+ ref: backgroundFileRef,
5560
+ type: "file",
5561
+ accept: "image/png,image/jpeg,image/webp,image/gif",
5562
+ hidden: true,
5563
+ onChange: (event) => {
5564
+ const file = event.target.files?.[0];
5565
+ if (file !== void 0) uploadBackgroundImage(file);
5566
+ event.target.value = "";
5567
+ }
5568
+ })
5569
+ ]
5570
+ }) : null,
5122
5571
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5123
5572
  className: canvas_workspace_module_css_default.zoomDock,
5124
5573
  "data-canvas-no-zoom": "",
@@ -5152,6 +5601,11 @@ window.__ModuleLoader__.load({
5152
5601
  minimapOpen ? renderMinimap() : null,
5153
5602
  renderComposer(),
5154
5603
  renderContextMenu(),
5604
+ libraryOpen ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TemplateLibrary, {
5605
+ api,
5606
+ onClose: () => setLibraryOpen(false),
5607
+ onUse: applyTemplate
5608
+ }) : null,
5155
5609
  error !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5156
5610
  className: canvas_workspace_module_css_default.errorToast,
5157
5611
  role: "status",
@@ -5171,6 +5625,7 @@ window.__ModuleLoader__.load({
5171
5625
  defaultChannelId,
5172
5626
  canvasId: document?.id ?? "",
5173
5627
  connected,
5628
+ initialTab: pickerTab,
5174
5629
  onClose: () => setPickerOpen(false),
5175
5630
  onAssets: (assets) => {
5176
5631
  addAssets(assets);
@@ -5207,7 +5662,7 @@ window.__ModuleLoader__.load({
5207
5662
  }
5208
5663
  function ImagePicker(props) {
5209
5664
  const { api, history, gallery, imageModels, defaultChannelId, canvasId, connected, onClose, onAssets } = props;
5210
- const [tab, setTab] = (0, react.useState)("upload");
5665
+ const [tab, setTab] = (0, react.useState)(props.initialTab ?? "upload");
5211
5666
  const [selected, setSelected] = (0, react.useState)([]);
5212
5667
  const [dimensions, setDimensions] = (0, react.useState)({});
5213
5668
  const [prompt, setPrompt] = (0, react.useState)("");
@@ -5814,8 +6269,27 @@ window.__ModuleLoader__.load({
5814
6269
  supportsEdit: true,
5815
6270
  supportsAspectRatio: true,
5816
6271
  qualityTiers: ["auto"]
6272
+ },
6273
+ minimax: {
6274
+ label: "MiniMax",
6275
+ labelZh: "MiniMax 图像",
6276
+ known: true,
6277
+ supportsEdit: true,
6278
+ supportsAspectRatio: true,
6279
+ qualityTiers: ["auto"]
5817
6280
  }
5818
6281
  };
6282
+ /** Documented upstream prompt hard limits (UTF-16 code units). The engine
6283
+ * fast-fails on these before any network call and the panel counter shows
6284
+ * them live; families absent here have no documented limit. */
6285
+ const PROMPT_CHAR_LIMITS = { minimax: 1500 };
6286
+ /** The documented prompt character limit for a model id, or null when the
6287
+ * family has no known limit. Single source of truth for engine enforcement
6288
+ * and the panel's live counter. */
6289
+ function promptCharLimit(model) {
6290
+ const { family } = describeModel(model);
6291
+ return (family !== "unknown" ? PROMPT_CHAR_LIMITS[family] : void 0) ?? null;
6292
+ }
5819
6293
  /** Official Gemini image ids served by Nano Banana gateways. */
5820
6294
  const NANOBANANA_GEMINI_IDS = /* @__PURE__ */ new Set([
5821
6295
  "gemini-3-pro-image",
@@ -5856,6 +6330,10 @@ window.__ModuleLoader__.load({
5856
6330
  family: "qwen",
5857
6331
  ...ENTRIES.qwen
5858
6332
  };
6333
+ if (/^(?:minimax[-_/])?image-\d+/i.test(id)) return {
6334
+ family: "minimax",
6335
+ ...ENTRIES.minimax
6336
+ };
5859
6337
  return {
5860
6338
  family: "unknown",
5861
6339
  label: "unknown",
@@ -5872,7 +6350,7 @@ window.__ModuleLoader__.load({
5872
6350
  const CHAT_IMAGE_EVENT = "dsh-imagegen:chat-images";
5873
6351
  //#endregion
5874
6352
  //#region \0dsh-css:E:\dsh-plugin\src\client\panel.module.css.mjs
5875
- const css$2 = "[data-pane=conversation],[class*=centerCol]{min-width:0;min-height:0;position:relative}[data-dsh-imagegen-view]{z-index:60;background:var(--dsw-alias-bg-base);grid-area:1/1;min-width:0;min-height:0;display:none;position:relative}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation],html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]{grid-template-columns:minmax(0, 1fr) 8px minmax(320px, clamp(320px, var(--dsh-imagegen-chat-width,36%), 70%));background:var(--dsw-alias-border-l1);grid-template-rows:minmax(0,1fr);gap:1px;overflow:hidden;display:grid!important}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-dsh-imagegen-view]{display:block}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-slot=conversation]{background:var(--dsw-alias-bg-base);grid-area:1/3;align-items:stretch;width:auto;min-width:0;min-height:0;overflow:hidden;display:flex!important}html[data-dsh-imagegen-active] [data-slot=conversation]>[data-phase]{flex:auto;align-self:stretch;width:100%;min-width:0;max-width:none}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-dsh-imagegen-chat-resizer]{grid-area:1/2}.Yvqh9W_chatResizer{z-index:70;width:8px;min-width:8px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-border-l1);cursor:col-resize;touch-action:none;justify-content:center;align-items:center;display:none;position:relative}.Yvqh9W_chatResizer:before{content:\"\";opacity:.55;background:currentColor;border-radius:3px;width:3px;height:36px}.Yvqh9W_chatResizer:hover,.Yvqh9W_chatResizer:focus-visible{color:var(--dsw-alias-brand-primary);background:var(--dsw-alias-bg-layer-2);outline:none}html[data-dsh-imagegen-active] [data-dsh-imagegen-chat-resizer]{display:flex!important}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation]>:not([data-dsh-imagegen-view]):not([data-slot=conversation]):not([data-dsh-imagegen-chat-resizer]),html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]>:not([data-dsh-imagegen-view]):not([data-slot=conversation]):not([data-dsh-imagegen-chat-resizer]),html[data-dsh-imagegen-active] [data-dsh-imagegen-sidebar-root]>:not([data-dsh-imagegen-session-tabs]):not([class*=logoRow]):not([class*=regionArea]):not([class*=footArea]){display:none!important}@media (width<=760px){html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation],html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]{grid-template-rows:minmax(0,1fr) minmax(340px,.9fr);grid-template-columns:minmax(0,1fr);overflow-y:auto}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-slot=conversation]{grid-area:2/1}html[data-dsh-imagegen-active] [data-dsh-imagegen-chat-resizer]{display:none!important}}.Yvqh9W_entry{width:100%;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:0 12px;font-size:13px;display:flex}.Yvqh9W_entry:hover{background:var(--dsw-specific-sidebar-nav-item-hover);color:var(--dsw-alias-label-primary)}.Yvqh9W_entry[data-active]{background:var(--dsw-specific-sidebar-nav-item-active);color:var(--dsw-alias-label-primary);font-weight:600}.Yvqh9W_entryIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.Yvqh9W_entryLabel{text-overflow:ellipsis;overflow:hidden}.Yvqh9W_sessionTabs{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:9px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:2px;width:100%;min-width:0;padding:3px;display:grid}.Yvqh9W_sessionTab{min-width:0;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;white-space:nowrap;background:0 0;border:0;border-radius:7px;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:12px;display:inline-flex}[data-sidebar-collapsed] .Yvqh9W_sessionTabs{background:0 0;border:none;border-radius:0;flex-direction:column;gap:6px;width:auto;padding:0;display:flex}[data-sidebar-collapsed] .Yvqh9W_sessionTab{border-radius:9px;width:34px;height:34px;padding:0;font-size:0}[data-sidebar-collapsed] .Yvqh9W_sessionTabLabel{display:none}.Yvqh9W_sessionTab:hover,.Yvqh9W_sessionTab[data-active]{color:var(--dsw-alias-label-primary);background:var(--dsw-specific-sidebar-nav-item-active)}.Yvqh9W_sessionTabIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.Yvqh9W_sessionTabLabel{text-overflow:ellipsis;min-width:0;overflow:hidden}[class*=regionArea]{min-height:0;position:relative}.Yvqh9W_sidebarHistoryHost{z-index:30;background:var(--dsw-alias-bg-base);min-width:0;min-height:0;padding:6px 4px;display:none;position:absolute;inset:0;overflow:hidden}html[data-dsh-imagegen-active] .Yvqh9W_sidebarHistoryHost{display:flex}.Yvqh9W_sidebarHistoryHost .Yvqh9W_history{background:0 0;border:0;border-radius:8px;width:100%;height:100%}[data-dsh-frame][data-sidebar-collapsed] .Yvqh9W_sidebarHistoryHost{display:none}[data-dsh-frame][data-sidebar-collapsed] .Yvqh9W_entry{justify-content:center;width:100%;padding:0}[data-dsh-frame][data-sidebar-collapsed] .Yvqh9W_entryLabel{display:none}.Yvqh9W_view{width:100%;min-width:0;min-height:0;overflow:hidden}.Yvqh9W_panel,.Yvqh9W_panel *,.Yvqh9W_panel :before,.Yvqh9W_panel :after{box-sizing:border-box}.Yvqh9W_panel{background:var(--dsw-alias-bg-base);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family);flex-direction:column;gap:10px;padding:14px 16px 16px;display:flex;position:relative;overflow:hidden}.Yvqh9W_panelHeader{flex:none;justify-content:space-between;align-items:center;gap:12px;display:flex;position:relative}.Yvqh9W_panelHeading{align-items:baseline;gap:10px;min-width:0;display:flex}.Yvqh9W_panelTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;margin:0;font-size:16px;font-weight:700}.Yvqh9W_githubLink{width:22px;height:22px;color:var(--dsw-alias-label-secondary);border-radius:6px;flex:none;justify-content:center;align-items:center;text-decoration:none;transition:color .12s,background .12s;display:inline-flex}.Yvqh9W_githubLink:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_connectionStatus{border:1px solid var(--dsw-alias-label-error);height:28px;color:var(--dsw-alias-label-error);font:inherit;white-space:nowrap;background:0 0;border-radius:8px;flex:none;align-items:center;gap:6px;padding:0 10px;font-size:12px;line-height:1;display:inline-flex}.Yvqh9W_connectionStatus[data-connected=true]{border-color:var(--dsw-alias-state-success-primary);color:var(--dsw-alias-state-success-primary)}.Yvqh9W_connectionDot{background:currentColor;border-radius:50%;width:6px;height:6px}.Yvqh9W_updateBanner{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-primary);overflow-wrap:anywhere;border-radius:10px;flex:none;justify-content:space-between;align-items:center;gap:12px;padding:7px 10px 7px 12px;font-size:12px;line-height:1.5;display:flex}.Yvqh9W_updateBanner[data-kind=ok]{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}.Yvqh9W_updateText{min-width:0}.Yvqh9W_updateActions{flex:none;align-items:center;gap:10px;display:inline-flex}.Yvqh9W_updateRelease{color:inherit;text-underline-offset:2px;white-space:nowrap;text-decoration:underline}@media (width<=700px){.Yvqh9W_panelHeader{align-items:flex-start}.Yvqh9W_panelHeading{flex-direction:column;align-items:flex-start;gap:2px}.Yvqh9W_updateBanner{flex-direction:column;align-items:flex-start}.Yvqh9W_updateActions{justify-content:space-between;width:100%}}.Yvqh9W_studio{flex:1;min-width:0;min-height:0;display:flex}.Yvqh9W_generation{gap:14px;width:100%;min-width:0;min-height:0;display:flex}.Yvqh9W_generation[data-workspace=canvas]{height:100%;display:flex}.Yvqh9W_generation[data-workspace=canvas]>.Yvqh9W_config,.Yvqh9W_generation[data-workspace=canvas]>.Yvqh9W_canvas{display:none!important}.Yvqh9W_config{width:clamp(240px, var(--dsh-imagegen-config-width,300px), 480px);flex-direction:column;flex:none;gap:12px;min-width:240px;max-width:480px;height:100%;min-height:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_configHeader{flex:none;justify-content:flex-end;min-height:28px;display:flex}.Yvqh9W_configToggle{border:1px solid var(--dsw-alias-border-l1);width:28px;height:28px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;padding:0;display:inline-flex}.Yvqh9W_configToggle:hover,.Yvqh9W_configToggle:focus-visible{border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-brand-primary);outline:none}.Yvqh9W_config[data-collapsed=true]{gap:0;width:38px;min-width:38px;max-width:38px}.Yvqh9W_config[data-collapsed=true] .Yvqh9W_configHeader{justify-content:center}.Yvqh9W_config[data-collapsed=true]>:not(.Yvqh9W_configHeader){display:none}.Yvqh9W_configScroll{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:12px;min-height:0;padding-right:2px;display:flex;overflow-y:auto}.Yvqh9W_configScroll::-webkit-scrollbar{width:8px}.Yvqh9W_configScroll::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_canvas{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:12px;flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_taskTray{z-index:6;border:1px solid var(--dsw-alias-border-l2);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 92%, transparent);backdrop-filter:blur(10px);border-radius:9px;flex-direction:column;width:min(360px,100% - 24px);max-height:calc(100% - 24px);display:flex;position:absolute;top:12px;right:12px;overflow:hidden;box-shadow:0 8px 24px #0000001f}.Yvqh9W_taskTray[data-open=false]{width:auto;max-width:calc(100% - 24px)}.Yvqh9W_taskTrayHeader{min-height:34px;color:var(--dsw-alias-label-primary);border-bottom:1px solid var(--dsw-alias-border-l1);align-items:stretch;font-size:12px;font-weight:600;display:flex}.Yvqh9W_taskTray[data-open=false] .Yvqh9W_taskTrayHeader{border-bottom:0}.Yvqh9W_taskTrayToggle{min-width:0;color:inherit;cursor:pointer;font:inherit;font-size:inherit;font-weight:inherit;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:8px;padding:8px 10px;display:flex}.Yvqh9W_taskTrayToggle:hover{background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_taskTrayCount{min-width:18px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);text-align:center;border-radius:999px;padding:1px 5px;font-size:11px;font-weight:500}.Yvqh9W_taskTrayChevron{color:var(--dsw-alias-label-tertiary);margin-left:auto;font-size:12px;font-weight:400}.Yvqh9W_taskTrayClose{border:0;border-left:1px solid var(--dsw-alias-border-l1);width:32px;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;background:0 0;font-size:17px}.Yvqh9W_taskTrayClose:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_taskTray[data-open=false] .Yvqh9W_taskTrayToggle{min-height:34px}.Yvqh9W_taskRows{min-height:0;overflow-y:auto}.Yvqh9W_taskTray[data-open=false] .Yvqh9W_taskRows{display:none}.Yvqh9W_taskRow{border-top:1px solid var(--dsw-alias-border-l1);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:7px;padding:7px 10px;display:grid}.Yvqh9W_taskRow:first-of-type{border-top:0}.Yvqh9W_taskStatus{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11px}.Yvqh9W_taskRow[data-status=running] .Yvqh9W_taskStatus{color:var(--dsw-alias-brand-primary)}.Yvqh9W_taskRow[data-status=failed] .Yvqh9W_taskStatus{color:var(--dsw-alias-label-error)}.Yvqh9W_taskPrompt{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.Yvqh9W_taskRow button{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;border:0;border-radius:5px;padding:2px 7px;font-size:11px}.Yvqh9W_taskRow button:hover{color:var(--dsw-alias-brand-primary)}.Yvqh9W_configGuide{z-index:1100;background:#00000059;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.Yvqh9W_configGuideBody{border:1px solid var(--dsw-alias-border-l2);width:min(360px,100%);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);border-radius:10px;flex-direction:column;gap:12px;padding:18px;display:flex;box-shadow:0 14px 40px #0003}.Yvqh9W_configGuideBody span{color:var(--dsw-alias-label-secondary);font-size:13px;line-height:1.55}.Yvqh9W_configGuideBody button{min-height:30px;color:var(--dsw-alias-bg-layer-1);background:var(--dsw-alias-brand-primary);cursor:pointer;font:inherit;border:0;border-radius:7px;align-self:flex-end;padding:0 12px;font-size:12px}.Yvqh9W_history{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:12px;flex-direction:column;width:auto;min-width:0;max-width:none;min-height:0;display:flex;overflow:hidden}.Yvqh9W_historyHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.Yvqh9W_historyHeaderActions{flex:none;align-items:center;gap:6px;display:flex}.Yvqh9W_historyFilters{border-bottom:1px solid var(--dsw-alias-border-l1);grid-template-columns:1fr 1fr;gap:6px;padding:8px 10px;display:grid}.Yvqh9W_historySearch,.Yvqh9W_historyFilters select,.Yvqh9W_gallerySearch{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);min-width:0;min-height:29px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);font:inherit;border-radius:7px;padding:0 8px;font-size:11px}.Yvqh9W_historySearch{grid-column:1/-1}.Yvqh9W_gallerySearch{width:156px}.Yvqh9W_galleryTagInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:130px;min-height:29px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);font:inherit;border-radius:7px;padding:0 8px;font-size:11px}.Yvqh9W_galleryBulkButton{border:1px solid var(--dsw-alias-border-l2);min-height:29px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;font:inherit;border-radius:7px;padding:0 8px;font-size:11px}.Yvqh9W_galleryBulkButton:hover:not(:disabled){color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryBulkButton:disabled{opacity:.45;cursor:default}.Yvqh9W_historyTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600}.Yvqh9W_historyNew{width:26px;height:26px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:7px;justify-content:center;align-items:center;padding:0;display:inline-flex}.Yvqh9W_historyNew:hover{color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_historyClear{font:inherit;color:var(--dsw-alias-label-tertiary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:999px;padding:2px 8px;font-size:11.5px}.Yvqh9W_historyClear:hover{color:var(--dsw-alias-label-error);border-color:var(--dsw-alias-label-error)}.Yvqh9W_historyList{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:8px;min-height:0;padding:10px;display:flex;overflow-y:auto}.Yvqh9W_historyList::-webkit-scrollbar{width:8px}.Yvqh9W_historyList::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_historyEmpty{text-align:center;color:var(--dsw-alias-label-tertiary);flex:1;justify-content:center;align-items:center;padding:20px;font-size:12px;line-height:1.6;display:flex}.Yvqh9W_historyItem{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:10px;flex-direction:column;flex:none;gap:6px;padding:8px;display:flex}.Yvqh9W_historyItem:hover{border-color:var(--dsw-alias-border-l2)}.Yvqh9W_historyItem[data-active]{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_historyMain{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:flex-start;gap:8px;min-width:0;padding:0;display:flex}.Yvqh9W_historyThumb{object-fit:cover;background:var(--dsw-alias-bg-base);border-radius:8px;flex:none;width:52px;height:52px}.Yvqh9W_historyThumbPlaceholder{background:var(--dsw-alias-bg-layer-3);border-radius:8px;flex:none;width:52px;height:52px}.Yvqh9W_historyInfo{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.Yvqh9W_historyPrompt{color:var(--dsw-alias-label-primary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.4;display:-webkit-box;overflow:hidden}.Yvqh9W_historyMeta{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.Yvqh9W_historyActions{justify-content:flex-end;gap:4px;display:flex}.Yvqh9W_historyIconAction{width:26px;height:24px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;padding:0;display:inline-flex}.Yvqh9W_historyIconAction:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_historyIconAction:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_historyIconAction:disabled{opacity:.5;cursor:default}.Yvqh9W_historyIconAction[data-danger]:hover{color:var(--dsw-alias-state-error);background:color-mix(in srgb, var(--dsw-alias-state-error) 10%, transparent)}.Yvqh9W_card{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:12px;flex-direction:column;flex:none;gap:10px;padding:12px;display:flex}.Yvqh9W_ecommerceWorkspace{flex-direction:column;gap:18px;max-width:760px;margin:0 auto;padding:10px 8px 18px;display:flex}.Yvqh9W_ecommerceSection{border:none;border-bottom:1px solid var(--dsw-alias-border-l1);background:0 0;border-radius:0;flex-direction:column;gap:10px;padding:0 0 16px;display:flex}.Yvqh9W_ecommerceSection:last-of-type{border-bottom:none;padding-bottom:4px}.Yvqh9W_ecommerceSection h3{align-items:baseline;gap:7px;margin:0 0 2px;font-size:14px;font-weight:650;display:flex}.Yvqh9W_ecommerceSectionHint{color:var(--dsw-alias-label-tertiary);font-size:11px;font-weight:400}.Yvqh9W_ecommerceSection input:not([type=checkbox]),.Yvqh9W_ecommerceSection select,.Yvqh9W_ecommerceSection textarea{box-sizing:border-box;width:100%;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);font:inherit;border-radius:9px;padding:9px 11px}.Yvqh9W_ecommerceSection input:not([type=checkbox]):focus-visible,.Yvqh9W_ecommerceSection select:focus-visible,.Yvqh9W_ecommerceSection textarea:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_ecommerceSection textarea{resize:vertical;min-height:68px;line-height:1.5}.Yvqh9W_ecommerceField{flex-direction:column;gap:5px;min-width:0;display:flex}.Yvqh9W_ecommerceFieldLabel{color:var(--dsw-alias-label-secondary);font-size:11.5px}.Yvqh9W_ecommerceParamGrid{grid-template-columns:1fr 1fr;gap:12px 10px;display:grid}.Yvqh9W_ecommerceUploadHero{border:1.5px dashed var(--dsw-alias-border-l2);min-height:78px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;text-align:center;background:0 0;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:12px;display:flex}.Yvqh9W_ecommerceUploadHero:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_ecommerceUploadHero:focus-visible,.Yvqh9W_ecommerceAssetAdd:focus-visible,.Yvqh9W_ecommerceSlotCard:focus-visible,.Yvqh9W_ecommerceAdvancedToggle:focus-visible,.Yvqh9W_ecommerceAsset button:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.Yvqh9W_ecommerceUploadHero span{font-size:12px}.Yvqh9W_ecommerceUploadHero small{color:var(--dsw-alias-label-tertiary);font-size:10.5px}.Yvqh9W_ecommerceStructureGrid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.Yvqh9W_ecommerceSlotCard{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);height:34px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;font-size:12px;display:flex;position:relative}.Yvqh9W_ecommerceSlotCard:hover{border-color:var(--dsw-alias-label-dimmed)}.Yvqh9W_ecommerceSlotCard[data-active]{background:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-base);font-weight:600}.Yvqh9W_ecommerceSlotCount{background:var(--dsw-alias-brand-primary);color:#fff;text-align:center;border-radius:8px;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:600;line-height:16px;position:absolute;top:-6px;right:-6px}.Yvqh9W_ecommerceRefRow{grid-template-columns:64px 1fr;align-items:center;gap:8px;display:grid}.Yvqh9W_ecommerceRefRow>span{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommercePrimaryAction{border-radius:999px;width:100%;height:38px;font-size:13.5px}.Yvqh9W_previewBadge{background:var(--dsw-alias-brand-primary);color:#fff;letter-spacing:.02em;border-radius:4px;margin-left:5px;padding:0 4px;font-size:9px;font-weight:700;line-height:13px}.Yvqh9W_ecommercePlanNote{color:var(--dsw-alias-label-secondary);font-size:11.5px;line-height:1.5}.Yvqh9W_ecommercePlanWarn{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);border-radius:6px;padding:6px 8px;font-size:11.5px;line-height:1.5}.Yvqh9W_ecommerceAssets{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.Yvqh9W_ecommerceAsset{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-3);border-radius:8px;flex-direction:column;gap:3px;padding:4px;display:flex;position:relative}.Yvqh9W_ecommerceAsset img{object-fit:cover;border-radius:5px;width:100%;height:44px}.Yvqh9W_ecommerceAsset select{width:100%;min-width:0;padding:2px;font-size:10px}.Yvqh9W_ecommerceAsset button{color:#fff;cursor:pointer;text-align:center;background:#0000008c;border:none;border-radius:50%;width:16px;height:16px;padding:0;font-size:11px;line-height:15px;position:absolute;top:7px;right:7px}.Yvqh9W_ecommerceAsset button:hover{background:#000c}.Yvqh9W_ecommerceAssetAdd{border:1.5px dashed var(--dsw-alias-border-l2);min-height:78px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.Yvqh9W_ecommerceAssetAdd:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed)}.Yvqh9W_ecommerceAssetAdd span{font-size:16px;line-height:1}.Yvqh9W_ecommerceAssetAdd small{font-size:10px}.Yvqh9W_ecommerceAdvancedToggle{width:100%;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:none;justify-content:space-between;align-items:center;padding:0;font-size:12.5px;display:flex}.Yvqh9W_ecommerceAdvancedToggle:hover{color:var(--dsw-alias-label-primary)}.Yvqh9W_ecommerceAdvancedChevron{font-size:11px}.Yvqh9W_ecommerceAdvancedBody{flex-direction:column;gap:8px;margin-top:8px;display:flex}.Yvqh9W_ecommerceFooterBody{flex-direction:column;gap:8px;display:flex}.Yvqh9W_ecommercePlanMini{border:1px solid var(--dsw-alias-brand-primary);border-radius:10px;flex-direction:column;gap:6px;padding:10px;display:flex}.Yvqh9W_ecommercePlanMini>strong{font-size:12.5px}.Yvqh9W_ecommercePlanList{flex-direction:column;gap:3px;max-height:116px;display:flex;overflow-y:auto}.Yvqh9W_ecommercePlanList>div{color:var(--dsw-alias-label-secondary);justify-content:space-between;gap:12px;font-size:11.5px;display:flex}.Yvqh9W_ecommercePlanBack{color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;font-size:12px}.Yvqh9W_ecommercePlanBack:hover{color:var(--dsw-alias-label-primary)}.Yvqh9W_ecommerceFooterHint{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommerceResults{flex-direction:column;gap:14px;width:100%;margin:0 auto;padding:16px 18px;display:flex;overflow-y:auto}.Yvqh9W_ecommerceResultsHeader{justify-content:space-between;align-items:center;gap:12px;display:flex}.Yvqh9W_ecommerceResultsHeader h3{margin:0;font-size:15px}.Yvqh9W_ecommerceResultsHeader>div:first-child{align-items:baseline;gap:10px;display:flex}.Yvqh9W_ecommerceResultsHeader span{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommerceResultsActions{gap:8px;display:flex}.Yvqh9W_ecommerceResultsEmpty{color:var(--dsw-alias-label-tertiary);text-align:center;border:1.5px dashed var(--dsw-alias-border-l2);border-radius:12px;padding:32px 16px;font-size:13px}.Yvqh9W_ecommerceGroups{flex-direction:column;gap:16px;display:flex}.Yvqh9W_ecommerceGroup{background:0 0;border:none;border-radius:0;flex-direction:column;gap:8px;padding:0;display:flex}.Yvqh9W_ecommerceGroup>header{align-items:center;gap:10px;font-size:13px;display:flex}.Yvqh9W_ecommerceGroup>header strong{font-size:13px}.Yvqh9W_ecommerceGroup>header span{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommerceGroup>header button{margin-left:auto}.Yvqh9W_ecommerceGroupGrid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.Yvqh9W_ecommerceTaskCard{aspect-ratio:1;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-3);border-radius:10px;justify-content:center;align-items:center;width:100%;min-height:0;padding:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_ecommerceTaskCard[data-status=failed],.Yvqh9W_ecommerceTaskCard[data-status=cancelled]{color:var(--dsw-alias-label-tertiary);font-size:12px}.Yvqh9W_ecommerceTaskCard .Yvqh9W_imageCard{border:none;border-radius:0;width:100%;height:100%;margin:0}.Yvqh9W_ecommerceTaskCard .Yvqh9W_image{object-fit:cover;width:100%;height:100%}.Yvqh9W_ecommerceResultBadge{color:#fff;pointer-events:none;background:#0000008c;border-radius:999px;padding:0 7px;font-size:10px;line-height:16px;position:absolute;top:6px;left:6px}.Yvqh9W_ecommerceTaskActions{opacity:0;background:linear-gradient(#0000,#0000008c);justify-content:center;gap:4px;padding:10px 4px 5px;transition:opacity .12s;display:flex;position:absolute;bottom:0;left:0;right:0}.Yvqh9W_ecommerceTaskCard:hover .Yvqh9W_ecommerceTaskActions{opacity:1}.Yvqh9W_ecommerceActionChip{color:#111;cursor:pointer;white-space:nowrap;background:#ffffffeb;border:none;border-radius:6px;padding:0 6px;font-size:10px;font-weight:500;line-height:18px;text-decoration:none}.Yvqh9W_ecommerceActionChip:hover{background:#fff}.Yvqh9W_ecommerceActionChip:disabled{opacity:.5;cursor:default}.Yvqh9W_ecommerceTaskState{color:var(--dsw-alias-label-secondary);text-align:center;word-break:break-all;flex-direction:column;gap:3px;padding:10px 8px;font-size:11px;display:flex}.Yvqh9W_ecommerceTaskState b{color:var(--dsw-alias-label-primary);font-size:12px}.Yvqh9W_topNav{flex:none;justify-content:center;align-items:center;gap:2px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.Yvqh9W_topNavItem{height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:none;border-radius:999px;align-items:center;gap:4px;padding:0 14px;font-size:13px;display:inline-flex}.Yvqh9W_topNavItem,.Yvqh9W_topNavItem span{white-space:nowrap}.Yvqh9W_topNavItem:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_topNavItem[data-active]{background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-base);font-weight:600}.Yvqh9W_topNavDivider{background:var(--dsw-alias-border-l2);width:1px;height:16px;margin:0 8px}.Yvqh9W_panelHeaderActions{align-items:center;gap:10px;display:inline-flex}.Yvqh9W_chatToggle{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;border-radius:999px;align-items:center;gap:5px;padding:0 10px;font-size:12px;display:inline-flex}.Yvqh9W_chatToggle:hover{color:var(--dsw-alias-label-primary)}.Yvqh9W_chatToggle[data-open=true]{color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}html[data-dsh-imagegen-chat-collapsed][data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation],html[data-dsh-imagegen-chat-collapsed][data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]{grid-template-columns:minmax(0,1fr)}html[data-dsh-imagegen-chat-collapsed][data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-slot=conversation],html[data-dsh-imagegen-chat-collapsed] [data-dsh-imagegen-chat-resizer]{display:none!important}.Yvqh9W_configResizer{cursor:col-resize;z-index:6;width:6px;height:100%;position:absolute;top:0;right:0}.Yvqh9W_configResizer:hover{background:linear-gradient(90deg, transparent, var(--dsw-alias-border-l2))}.Yvqh9W_config[data-collapsed=true] .Yvqh9W_configResizer{display:none}.Yvqh9W_modeRow{align-items:center;gap:8px;display:flex}.Yvqh9W_modePill{flex:1;justify-content:center;height:28px;font-size:12.5px}.Yvqh9W_modePill,.Yvqh9W_modePill span,.Yvqh9W_modePill div{white-space:nowrap;min-width:0}.Yvqh9W_uploadBox{min-height:128px;color:var(--dsw-alias-label-secondary);border:1.5px dashed var(--dsw-alias-border-l2);cursor:pointer;font:inherit;text-align:center;background:0 0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:16px;font-size:12.5px;display:flex}.Yvqh9W_uploadBox:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_uploadBox:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_uploadIcon{color:var(--dsw-alias-label-tertiary);display:inline-flex}.Yvqh9W_uploadHint{color:var(--dsw-alias-label-tertiary);font-size:11px}.Yvqh9W_reference{flex-direction:column;gap:8px;display:flex}.Yvqh9W_referenceImage{object-fit:contain;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l1);border-radius:10px;width:100%;max-height:176px}.Yvqh9W_referenceActions{gap:8px;display:flex}.Yvqh9W_hiddenFile{display:none}.Yvqh9W_prompt{width:100%;min-height:120px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);resize:vertical;box-sizing:border-box;border-radius:10px;outline:none;padding:10px 12px;font-family:inherit;font-size:13px;line-height:1.6}.Yvqh9W_prompt:focus-visible{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_prompt::placeholder{color:var(--dsw-alias-label-tertiary)}.Yvqh9W_promptFooter{justify-content:space-between;align-items:center;gap:8px;margin-top:-6px;display:flex}.Yvqh9W_templatesButton{border:1px solid var(--dsw-alias-brand-primary);background:linear-gradient(135deg, color-mix(in srgb, var(--dsw-alias-brand-primary) 14%, transparent), color-mix(in srgb, var(--dsw-alias-brand-primary) 5%, transparent));height:26px;color:var(--dsw-alias-brand-primary);cursor:pointer;box-shadow:0 1px 0 color-mix(in srgb, var(--dsw-alias-brand-primary) 22%, transparent);border-radius:999px;align-items:center;gap:6px;padding:0 12px;font-family:inherit;font-size:12px;font-weight:600;transition:transform .12s,box-shadow .12s,background .12s;display:inline-flex}.Yvqh9W_templatesButton svg{flex:none}.Yvqh9W_templatesButton:hover{background:linear-gradient(135deg, color-mix(in srgb, var(--dsw-alias-brand-primary) 24%, transparent), color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, transparent));color:var(--dsw-alias-brand-primary);box-shadow:0 2px 6px color-mix(in srgb, var(--dsw-alias-brand-primary) 30%, transparent);transform:translateY(-1px)}.Yvqh9W_templatesButton:active{transform:translateY(0)}.Yvqh9W_enhanceButton{border:1px solid var(--dsw-alias-border-l2);height:26px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);font:inherit;cursor:pointer;border-radius:999px;margin-left:auto;padding:0 11px;font-size:12px}.Yvqh9W_enhanceButton:hover:not(:disabled){color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_enhanceButton:disabled{opacity:.5;cursor:default}.Yvqh9W_promptCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:11px}.Yvqh9W_paramGroup{flex-direction:column;gap:8px;display:flex}.Yvqh9W_paramLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}.Yvqh9W_optionRow{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_optionGrid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.Yvqh9W_optionPill{justify-content:center}.Yvqh9W_paramHint{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:1.45}.Yvqh9W_footer{border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;flex:none;align-items:stretch;gap:8px;padding:10px 2px 0 0;display:flex}.Yvqh9W_modelWrap{flex-direction:column;gap:5px;min-width:0;display:flex}.Yvqh9W_modelLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}.Yvqh9W_modelSelect{width:100%;height:36px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;text-align:left;border-radius:18px;outline:none;justify-content:space-between;align-items:center;gap:8px;padding:0 12px;font-family:inherit;font-size:13px;display:flex}.Yvqh9W_modelSelect:focus-visible{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_modelSelect:disabled{opacity:.55;cursor:default}.Yvqh9W_modelMenu{min-width:0;display:block;position:relative}.Yvqh9W_modelMenuList{z-index:40;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;bottom:calc(100% + 6px);left:0;right:0;overflow:hidden;box-shadow:0 -8px 24px #0000002e}.Yvqh9W_modelMenuItem{width:100%;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;border-radius:8px;padding:7px 10px;font-size:13px;display:block;overflow:hidden}.Yvqh9W_modelMenuItem:hover{background:var(--dsw-alias-bg-hover)}.Yvqh9W_modelMenuItem[data-selected]{color:var(--dsw-alias-brand-primary);background:var(--dsw-alias-bg-layer-1);font-weight:600}.Yvqh9W_generateButton{width:100%}.Yvqh9W_generateInner{align-items:center;gap:7px;display:inline-flex}.Yvqh9W_canvasState{text-align:center;color:var(--dsw-alias-label-tertiary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex}.Yvqh9W_canvasStateTitle{color:var(--dsw-alias-label-secondary);font-size:14px;font-weight:600}.Yvqh9W_canvasStateHint{max-width:380px;font-size:12px;line-height:1.6}.Yvqh9W_canvasEmptyIcon{color:var(--dsw-alias-label-tertiary);margin-bottom:4px;display:inline-flex}.Yvqh9W_canvasError{color:var(--dsw-alias-label-error);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-label-error);overflow-wrap:anywhere;border-radius:10px;flex:none;margin:14px;padding:10px 14px;font-size:12.5px;line-height:1.6}.Yvqh9W_canvasBody{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:10px;min-height:0;padding:14px;display:flex;overflow-y:auto}.Yvqh9W_canvasBody::-webkit-scrollbar{width:8px}.Yvqh9W_canvasBody::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_canvasMeta{color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:8px;font-size:12px;display:flex}.Yvqh9W_canvasHistoryTag{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px}.Yvqh9W_grid{flex:1;grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-height:0;display:grid}.Yvqh9W_grid[data-count=\"1\"] .Yvqh9W_imageCard{grid-area:1/1/3/3}.Yvqh9W_imageCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);cursor:zoom-in;border-radius:12px;flex-direction:column;min-height:0;margin:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_imageCard:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_image{object-fit:cover;background:var(--dsw-alias-bg-base);flex:1;width:100%;min-height:0;display:block}.Yvqh9W_imageCaption{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;border-top:1px solid var(--dsw-alias-border-l1);padding:7px 10px;font-size:11px;line-height:1.5;overflow:hidden}.Yvqh9W_download{color:#fff;opacity:0;backdrop-filter:blur(4px);background:#0f1218d1;border:1px solid #ffffff9e;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;text-decoration:none;transition:opacity .12s;position:absolute;top:8px;right:8px;box-shadow:0 2px 8px #00000047}.Yvqh9W_imageCard:hover .Yvqh9W_download{opacity:1}.Yvqh9W_download:hover{background:#0f1218f0}.Yvqh9W_download:focus-visible{opacity:1;outline-offset:2px;outline:2px solid #fff}.Yvqh9W_galleryAdd{font:inherit;color:#fff;cursor:pointer;opacity:0;backdrop-filter:blur(4px);background:#0f1218d1;border:1px solid #ffffff9e;border-radius:999px;align-items:center;gap:5px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;transition:opacity .12s;display:inline-flex;position:absolute;top:8px;left:8px;box-shadow:0 2px 8px #00000047}.Yvqh9W_imageCard:hover .Yvqh9W_galleryAdd{opacity:1}.Yvqh9W_galleryAdd:hover{background:#0f1218f0}.Yvqh9W_galleryAdd:focus-visible{opacity:1;outline-offset:2px;outline:2px solid #fff}.Yvqh9W_galleryAdd:disabled{opacity:.4;cursor:default}.Yvqh9W_conversationAdd{color:#fff;cursor:pointer;font:inherit;opacity:0;backdrop-filter:blur(4px);background:#0f1218d1;border:1px solid #ffffff9e;border-radius:999px;align-items:center;gap:5px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;transition:opacity .12s;display:inline-flex;position:absolute;top:38px;left:8px;box-shadow:0 2px 8px #00000047}.Yvqh9W_imageCard:hover .Yvqh9W_conversationAdd,.Yvqh9W_conversationAdd:focus-visible{opacity:1}.Yvqh9W_conversationAdd:hover{background:#0f1218f0}.Yvqh9W_conversationAdd:focus-visible{opacity:1;outline-offset:2px;outline:2px solid #fff}.Yvqh9W_conversationAdd:disabled{opacity:.4;cursor:default}.Yvqh9W_zoomHint{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-mask-1);border:1px solid var(--dsw-alias-border-l2);opacity:0;backdrop-filter:blur(4px);pointer-events:none;border-radius:999px;align-items:center;gap:5px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;transition:opacity .12s;display:inline-flex;position:absolute;bottom:8px;left:8px}.Yvqh9W_imageCard:hover .Yvqh9W_zoomHint{opacity:1}.Yvqh9W_spinner,.Yvqh9W_bigSpinner{border:2px solid;border-top-color:#0000;border-radius:50%;flex:none;animation:.8s linear infinite Yvqh9W_dshImageGenSpin;display:inline-block}.Yvqh9W_spinner{width:11px;height:11px}.Yvqh9W_bigSpinner{width:30px;height:30px;color:var(--dsw-alias-state-business-primary);border-width:3px;margin-bottom:6px}.Yvqh9W_lightbox{z-index:1000;backdrop-filter:blur(6px);background:#000000b8;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.Yvqh9W_lightboxClose{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;display:inline-flex;position:absolute;top:16px;right:16px}.Yvqh9W_lightboxClose:hover{background:#ffffff42}.Yvqh9W_lightboxNav{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;border-radius:50%;justify-content:center;align-items:center;width:42px;height:42px;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.Yvqh9W_lightboxNav:hover{background:#ffffff42}.Yvqh9W_lightboxNav[data-dir=prev]{left:max(20px,50% - 640px)}.Yvqh9W_lightboxNav[data-dir=next]{right:max(20px,50% - 640px)}.Yvqh9W_lightboxFigure{flex-direction:column;gap:10px;width:min(1100px,100vw - 160px);max-width:min(1100px,100vw - 160px);height:min(820px,100vh - 48px);min-height:0;margin:0;display:flex}.Yvqh9W_lightboxStage{background:#ffffff0a;border-radius:10px;flex:1;min-height:0;position:relative;overflow:auto}.Yvqh9W_lightboxScaleFrame{justify-content:center;align-items:center;min-width:100%;min-height:100%;display:flex}.Yvqh9W_lightboxImage{object-fit:contain;border-radius:10px;max-width:100%;max-height:100%;display:block;box-shadow:0 24px 80px #00000080}.Yvqh9W_lightboxTools{justify-content:center;align-items:center;gap:6px;display:flex}.Yvqh9W_lightboxTool,.Yvqh9W_lightboxZoomLevel,.Yvqh9W_lightboxCopy{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;justify-content:center;align-items:center;display:inline-flex}.Yvqh9W_lightboxTool,.Yvqh9W_lightboxZoomLevel{height:32px}.Yvqh9W_lightboxTool{border-radius:50%;width:32px}.Yvqh9W_lightboxZoomLevel{min-width:58px;font:inherit;font-variant-numeric:tabular-nums;border-radius:999px;padding:0 9px;font-size:12px}.Yvqh9W_lightboxTool:hover,.Yvqh9W_lightboxZoomLevel:hover,.Yvqh9W_lightboxCopy:hover{background:#ffffff42}.Yvqh9W_lightboxCaptionRow{align-items:flex-start;gap:8px;min-width:0;display:flex}.Yvqh9W_lightboxCaption{color:#ffffffe6;-webkit-line-clamp:3;-webkit-box-orient:vertical;flex:1;min-width:0;font-size:12px;line-height:1.6;display:-webkit-box;overflow:hidden}.Yvqh9W_lightboxCopy{min-height:28px;font:inherit;white-space:nowrap;border-radius:999px;flex:none;gap:5px;padding:4px 9px;font-size:12px}.Yvqh9W_lightboxMeta{justify-content:space-between;align-items:center;gap:12px;display:flex}.Yvqh9W_lightboxIndex{color:#fffc;font-variant-numeric:tabular-nums;font-size:12px}.Yvqh9W_lightboxActions{align-items:center;gap:8px;display:inline-flex}.Yvqh9W_lightboxDownload,.Yvqh9W_lightboxEdit{font:inherit;color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;border-radius:999px;padding:4px 14px;font-size:12.5px;font-weight:500;text-decoration:none}.Yvqh9W_lightboxDownload:hover,.Yvqh9W_lightboxEdit:hover{background:#ffffff42}.Yvqh9W_lightboxEdit{color:#fff;background:#ffffff24;border:1px solid #ffffff47;border-radius:999px}@media (width<=720px){.Yvqh9W_lightbox{padding:16px}.Yvqh9W_lightboxFigure{width:calc(100vw - 32px);max-width:none}.Yvqh9W_lightboxNav[data-dir=prev]{left:20px}.Yvqh9W_lightboxNav[data-dir=next]{right:20px}.Yvqh9W_lightboxCaptionRow,.Yvqh9W_lightboxMeta{flex-direction:column;align-items:stretch}.Yvqh9W_lightboxCopy,.Yvqh9W_lightboxActions{align-self:flex-end}}@keyframes Yvqh9W_dshImageGenSpin{to{transform:rotate(360deg)}}.Yvqh9W_galleryToast{z-index:30;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-mask-1);border:1px solid var(--dsw-alias-border-l2);backdrop-filter:blur(6px);pointer-events:none;border-radius:999px;align-items:center;gap:7px;padding:6px 16px;font-size:13px;font-weight:500;animation:.16s ease-out Yvqh9W_dshImageGenToastIn;display:inline-flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000038}@keyframes Yvqh9W_dshImageGenToastIn{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.Yvqh9W_conversationToast{z-index:30;border:1px solid var(--dsw-alias-border-l2);max-width:calc(100% - 32px);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-mask-1);pointer-events:none;backdrop-filter:blur(6px);border-radius:999px;align-items:center;gap:7px;padding:6px 16px;font-size:13px;font-weight:500;animation:.16s ease-out Yvqh9W_dshImageGenToastIn;display:inline-flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000038}@media (prefers-reduced-motion:reduce){.Yvqh9W_download,.Yvqh9W_spinner,.Yvqh9W_bigSpinner{transition:none;animation-duration:1.5s}}.Yvqh9W_config[data-gallery=true] .Yvqh9W_configScroll>:not(:first-child),.Yvqh9W_config[data-gallery=true] .Yvqh9W_footer,.Yvqh9W_canvas[data-gallery=true]>.Yvqh9W_canvasState,.Yvqh9W_canvas[data-gallery=true]>.Yvqh9W_canvasError,.Yvqh9W_canvas[data-gallery=true]>.Yvqh9W_canvasBody,.Yvqh9W_studio:has(.Yvqh9W_config[data-gallery=true])>.Yvqh9W_history{display:none}.Yvqh9W_config[data-gallery=true] .Yvqh9W_configScroll{flex:none;order:1;display:flex;overflow:visible}.Yvqh9W_config[data-gallery=true] .Yvqh9W_galleryFilters{flex:1;order:2;min-height:0}.Yvqh9W_galleryFilters{padding:18px 14px;overflow:hidden auto}.Yvqh9W_galleryFilterHeading{color:var(--dsw-alias-label-tertiary);margin:0 4px 10px;font-size:12px;font-weight:600}.Yvqh9W_galleryFilter{width:100%;min-height:34px;color:var(--dsw-alias-label-secondary);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:9px;justify-content:space-between;align-items:center;padding:0 10px;display:flex}.Yvqh9W_galleryFilter:hover,.Yvqh9W_galleryFilter[data-active]{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent)}.Yvqh9W_galleryFilterCount{min-width:20px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);text-align:center;border-radius:999px;padding:1px 6px;font-size:11px}.Yvqh9W_galleryFilterDivider{background:var(--dsw-alias-border-l1);height:1px;margin:18px 4px}.Yvqh9W_galleryRatioList{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_galleryRatio{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;border:0;border-radius:999px;padding:6px 10px;font-size:12px}.Yvqh9W_galleryRatio[data-active]{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 13%, transparent)}.Yvqh9W_galleryTagFilterList{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_galleryTagFilter{border:1px solid var(--dsw-alias-border-l1);min-width:0;max-width:100%;min-height:27px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;border-radius:6px;align-items:center;gap:5px;padding:0 8px;font-size:11px;display:inline-flex}.Yvqh9W_galleryTagFilter span:first-child{text-overflow:ellipsis;white-space:nowrap;max-width:112px;overflow:hidden}.Yvqh9W_galleryTagFilter span:last-child{color:var(--dsw-alias-label-tertiary);font-size:10px}.Yvqh9W_galleryTagFilter:hover,.Yvqh9W_galleryTagFilter[data-active]{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent)}.Yvqh9W_galleryFilterNote{color:var(--dsw-alias-label-quaternary);margin:20px 4px 0;font-size:11px;line-height:1.5}.Yvqh9W_galleryWorkspace{box-sizing:border-box;flex-direction:column;width:100%;min-width:0;height:100%;min-height:0;padding:22px 24px 26px;display:flex;position:absolute;inset:0;overflow:hidden}.Yvqh9W_galleryToolbar{flex:none;justify-content:space-between;align-items:center;gap:16px;min-width:0;margin-bottom:18px;display:flex}.Yvqh9W_galleryHeading{color:var(--dsw-alias-label-primary);margin:0;font-size:20px;font-weight:700;display:inline}.Yvqh9W_galleryCount{color:var(--dsw-alias-label-tertiary);margin-left:8px;font-size:13px}.Yvqh9W_galleryToolbarActions{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.Yvqh9W_gallerySelectMode,.Yvqh9W_galleryBulkButton,.Yvqh9W_gallerySelectionClear{border:1px solid var(--dsw-alias-border-l1);min-height:30px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;font:inherit;border-radius:7px;padding:0 10px;font-size:12px}.Yvqh9W_gallerySelectMode:hover,.Yvqh9W_gallerySelectMode[data-active],.Yvqh9W_galleryBulkButton:hover:not(:disabled){color:var(--dsw-alias-brand-primary);border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 38%, var(--dsw-alias-border-l1));background:color-mix(in srgb, var(--dsw-alias-brand-primary) 11%, transparent)}.Yvqh9W_galleryBulkButton:disabled{cursor:not-allowed;opacity:.45}.Yvqh9W_gallerySelectionBar{border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 35%, var(--dsw-alias-border-l1));background:color-mix(in srgb, var(--dsw-alias-brand-primary) 7%, var(--dsw-alias-bg-layer-1));border-radius:9px;flex:none;align-items:center;gap:10px;min-width:0;margin:-4px 0 16px;padding:10px 12px;display:flex}.Yvqh9W_gallerySelectionBar strong{color:var(--dsw-alias-brand-primary);flex:none;font-size:12px}.Yvqh9W_gallerySelectionClear{margin-left:auto}.Yvqh9W_gallerySelectionClear:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_galleryTagInput,.Yvqh9W_gallerySearch{border:1px solid var(--dsw-alias-border-l1);min-width:0;height:30px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);font:inherit;border-radius:7px;outline:none;padding:0 10px;font-size:12px}.Yvqh9W_galleryTagInput{flex:190px}.Yvqh9W_galleryTagInput:focus,.Yvqh9W_gallerySearch:focus{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryViewToggle{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:9px;padding:3px;display:flex}.Yvqh9W_galleryViewToggle button,.Yvqh9W_gallerySort,.Yvqh9W_galleryClear{min-height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:7px;padding:0 10px;font-size:12px}.Yvqh9W_galleryViewToggle button[data-active],.Yvqh9W_galleryViewToggle button:hover,.Yvqh9W_gallerySort:hover,.Yvqh9W_galleryClear:hover{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 11%, transparent)}.Yvqh9W_gallerySort{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1)}.Yvqh9W_galleryClear{border:1px solid var(--dsw-alias-border-l1)}.Yvqh9W_compareControl{flex-direction:column;gap:6px;margin:0 0 10px;display:flex}.Yvqh9W_compareToggle,.Yvqh9W_compareModelChoices label{color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:6px;font-size:12px;display:flex}.Yvqh9W_compareToggle input,.Yvqh9W_compareModelChoices input{accent-color:var(--dsw-alias-brand-primary)}.Yvqh9W_compareModelChoices{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_compareModelChoices label{border:1px solid var(--dsw-alias-border-l1);border-radius:5px;padding:4px 6px;font-size:10px}.Yvqh9W_comparisonBoard{z-index:4;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:8px;flex-direction:column;display:flex;position:absolute;inset:14px;overflow:hidden;box-shadow:0 8px 24px #0000001f}.Yvqh9W_comparisonBoard>header{border-bottom:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.Yvqh9W_comparisonBoard>header div{align-items:baseline;gap:7px;display:flex}.Yvqh9W_comparisonBoard>header strong{color:var(--dsw-alias-label-primary);font-size:13px}.Yvqh9W_comparisonBoard>header span{color:var(--dsw-alias-label-tertiary);font-size:11px}.Yvqh9W_comparisonBoard>header button{border:1px solid var(--dsw-alias-border-l1);min-height:28px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;border-radius:5px;padding:0 9px;font-size:11px}.Yvqh9W_comparisonGrid{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;min-height:0;padding:12px;display:grid;overflow:auto}.Yvqh9W_comparisonGrid article{flex-direction:column;gap:7px;min-width:0;height:100%;min-height:0;display:flex}.Yvqh9W_comparisonGrid article>strong{color:var(--dsw-alias-label-primary);font-size:12px}.Yvqh9W_comparisonImageButton{cursor:zoom-in;background:var(--dsw-alias-bg-base);border:0;flex:1;width:100%;min-height:0;padding:0;display:flex;overflow:hidden}.Yvqh9W_comparisonImageButton:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.Yvqh9W_comparisonGrid article>span{min-height:0;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);flex:1;place-items:center;font-size:12px;display:grid}.Yvqh9W_comparisonGrid img{object-fit:contain;background:var(--dsw-alias-bg-base);flex:1;width:100%;height:100%;min-height:0;max-height:none;display:block}.Yvqh9W_comparisonFullscreen{z-index:1200;background:#000000eb;padding:54px 24px 24px;position:fixed;inset:0;overflow:auto}.Yvqh9W_comparisonFullscreenGrid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start;gap:18px;min-height:100%;display:grid}.Yvqh9W_comparisonFullscreen figure{min-width:0;margin:0}.Yvqh9W_comparisonFullscreen figcaption{color:#fff;margin-bottom:8px;font-size:13px;font-weight:600}.Yvqh9W_comparisonFullscreen img{background:#111;width:100%;margin-bottom:10px;display:block}.Yvqh9W_historyItem[data-comparison]{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 55%, var(--dsw-alias-border-l1))}.Yvqh9W_galleryMasonry{box-sizing:border-box;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex:auto;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:max-content;align-content:start;gap:16px;width:100%;min-width:0;max-width:100%;height:0;min-height:0;padding:2px 8px 16px 2px;display:grid;overflow:hidden scroll}.Yvqh9W_galleryMasonry::-webkit-scrollbar{width:8px}.Yvqh9W_galleryMasonry::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_galleryCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:14px;width:100%;margin:0;display:block;position:relative;overflow:hidden;box-shadow:0 5px 18px #18203612}.Yvqh9W_galleryCard[data-selected]{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-alias-brand-primary) 26%, transparent), 0 5px 18px #18203612}.Yvqh9W_gallerySelect{z-index:2;cursor:pointer;background:#00000094;border:1px solid #ffffffbf;border-radius:7px;place-items:center;width:26px;height:26px;display:grid;position:absolute;top:9px;right:9px}.Yvqh9W_gallerySelect input{width:16px;height:16px;accent-color:var(--dsw-alias-brand-primary);cursor:pointer;margin:0}.Yvqh9W_galleryImageButton{background:var(--dsw-alias-bg-base);cursor:zoom-in;border:0;width:100%;padding:0;display:block;position:relative}.Yvqh9W_galleryImageButton[data-selecting]{cursor:pointer}.Yvqh9W_galleryImage{aspect-ratio:4/3;object-fit:cover;width:100%;display:block}.Yvqh9W_galleryMasonry[data-view=masonry] .Yvqh9W_galleryCard:nth-child(3n+1) .Yvqh9W_galleryImage{aspect-ratio:4/5}.Yvqh9W_galleryMasonry[data-view=masonry] .Yvqh9W_galleryCard:nth-child(3n+2) .Yvqh9W_galleryImage{aspect-ratio:4/3}.Yvqh9W_galleryMasonry[data-view=masonry] .Yvqh9W_galleryCard:nth-child(3n) .Yvqh9W_galleryImage{aspect-ratio:3/4}.Yvqh9W_galleryBadge{color:#fff;backdrop-filter:blur(4px);background:#121724c2;border-radius:999px;padding:4px 9px;font-size:11px;position:absolute;top:10px;left:10px}.Yvqh9W_galleryCardActions{padding:8px 12px 0;display:flex}.Yvqh9W_galleryCardAction{border:1px solid var(--dsw-alias-border-l2);width:100%;min-width:0;min-height:28px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;white-space:nowrap;border-radius:7px;justify-content:center;align-items:center;gap:4px;padding:0 4px;font-size:10px;font-weight:500;display:inline-flex}.Yvqh9W_galleryCardAction:hover,.Yvqh9W_galleryCardAction:focus-visible{border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-brand-primary);outline:none}.Yvqh9W_galleryCardAction:disabled{cursor:wait;opacity:.55}.Yvqh9W_galleryCardFooter{align-items:center;gap:9px;min-width:0;padding:10px 12px;display:flex}.Yvqh9W_galleryAvatar{color:#fff;background:var(--dsw-alias-brand-primary);border-radius:50%;flex:none;place-items:center;width:27px;height:27px;font-size:12px;font-weight:700;display:grid}.Yvqh9W_galleryCardInfo{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.Yvqh9W_galleryCardInfo strong,.Yvqh9W_galleryCardInfo small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.Yvqh9W_galleryCardInfo strong{color:var(--dsw-alias-label-primary);font-size:12px}.Yvqh9W_galleryCardInfo small{color:var(--dsw-alias-label-tertiary);font-size:10px}.Yvqh9W_galleryTags{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.Yvqh9W_galleryTags button{max-width:96px;min-height:19px;color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent);cursor:pointer;font:inherit;text-overflow:ellipsis;white-space:nowrap;border:0;border-radius:4px;padding:1px 6px;font-size:10px;line-height:1.35;overflow:hidden}.Yvqh9W_galleryTags button:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 17%, transparent)}.Yvqh9W_galleryTags .Yvqh9W_galleryTagEdit{color:var(--dsw-alias-label-tertiary);background:0 0;flex:none}.Yvqh9W_galleryTagEditor{align-items:center;gap:6px;padding:0 12px 10px 48px;display:flex}.Yvqh9W_galleryTagEditor input{border:1px solid var(--dsw-alias-border-l2);min-width:0;height:27px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);font:inherit;border-radius:6px;outline:none;flex:1;padding:0 8px;font-size:11px}.Yvqh9W_galleryTagEditor input:focus{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryTagEditor button{border:1px solid var(--dsw-alias-border-l2);height:27px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;font:inherit;border-radius:6px;padding:0 8px;font-size:11px}.Yvqh9W_galleryTagEditor button[type=submit]{color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryRemove{width:24px;height:24px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;padding:0;font-size:18px}.Yvqh9W_galleryRemove:hover{color:var(--dsw-alias-state-error);background:var(--dsw-alias-bg-layer-2)}@media (width<=760px){.Yvqh9W_ecommerceParamGrid{grid-template-columns:1fr}.Yvqh9W_ecommerceStructureGrid,.Yvqh9W_ecommerceAssets{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=420px){.Yvqh9W_ecommerceWorkspace{padding-inline:2px}.Yvqh9W_ecommerceStructureGrid,.Yvqh9W_ecommerceAssets{grid-template-columns:1fr}}@media (width<=1100px){.Yvqh9W_galleryMasonry{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.Yvqh9W_studio{grid-template-rows:minmax(220px,36%) minmax(0,1fr);grid-template-columns:minmax(0,1fr);overflow-y:auto}.Yvqh9W_history{grid-area:1/1;min-height:220px}.Yvqh9W_generation{flex-direction:column;grid-area:2/1;min-height:0}.Yvqh9W_config{width:auto;max-width:none;height:auto;min-height:0}.Yvqh9W_config[data-gallery=true]{flex:none}.Yvqh9W_canvas{min-height:560px}.Yvqh9W_galleryToolbar{flex-direction:column;align-items:flex-start}.Yvqh9W_galleryToolbarActions{flex-wrap:wrap;width:100%}.Yvqh9W_galleryMasonry{grid-template-columns:1fr}}";
6353
+ const css$2 = "[data-pane=conversation],[class*=centerCol]{min-width:0;min-height:0;position:relative}[data-dsh-imagegen-view]{z-index:60;background:var(--dsw-alias-bg-base);grid-area:1/1;min-width:0;min-height:0;display:none;position:relative}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation],html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]{grid-template-columns:minmax(0, 1fr) 8px minmax(320px, clamp(320px, var(--dsh-imagegen-chat-width,36%), 70%));background:var(--dsw-alias-border-l1);grid-template-rows:minmax(0,1fr);gap:1px;overflow:hidden;display:grid!important}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-dsh-imagegen-view]{display:block}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-slot=conversation]{background:var(--dsw-alias-bg-base);grid-area:1/3;align-items:stretch;width:auto;min-width:0;min-height:0;overflow:hidden;display:flex!important}html[data-dsh-imagegen-active] [data-slot=conversation]>[data-phase]{flex:auto;align-self:stretch;width:100%;min-width:0;max-width:none}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-dsh-imagegen-chat-resizer]{grid-area:1/2}.Yvqh9W_chatResizer{z-index:70;width:8px;min-width:8px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-border-l1);cursor:col-resize;touch-action:none;justify-content:center;align-items:center;display:none;position:relative}.Yvqh9W_chatResizer:before{content:\"\";opacity:.55;background:currentColor;border-radius:3px;width:3px;height:36px}.Yvqh9W_chatResizer:hover,.Yvqh9W_chatResizer:focus-visible{color:var(--dsw-alias-brand-primary);background:var(--dsw-alias-bg-layer-2);outline:none}html[data-dsh-imagegen-active] [data-dsh-imagegen-chat-resizer]{display:flex!important}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation]>:not([data-dsh-imagegen-view]):not([data-slot=conversation]):not([data-dsh-imagegen-chat-resizer]),html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]>:not([data-dsh-imagegen-view]):not([data-slot=conversation]):not([data-dsh-imagegen-chat-resizer]),html[data-dsh-imagegen-active] [data-dsh-imagegen-sidebar-root]>:not([data-dsh-imagegen-session-tabs]):not([class*=logoRow]):not([class*=regionArea]):not([class*=footArea]){display:none!important}@media (width<=760px){html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation],html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]{grid-template-rows:minmax(0,1fr) minmax(340px,.9fr);grid-template-columns:minmax(0,1fr);overflow-y:auto}html[data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-slot=conversation]{grid-area:2/1}html[data-dsh-imagegen-active] [data-dsh-imagegen-chat-resizer]{display:none!important}}.Yvqh9W_entry{width:100%;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:0 12px;font-size:13px;display:flex}.Yvqh9W_entry:hover{background:var(--dsw-specific-sidebar-nav-item-hover);color:var(--dsw-alias-label-primary)}.Yvqh9W_entry[data-active]{background:var(--dsw-specific-sidebar-nav-item-active);color:var(--dsw-alias-label-primary);font-weight:600}.Yvqh9W_entryIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.Yvqh9W_entryLabel{text-overflow:ellipsis;overflow:hidden}.Yvqh9W_sessionTabs{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:9px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:2px;width:100%;min-width:0;padding:3px;display:grid}.Yvqh9W_sessionTab{min-width:0;height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;white-space:nowrap;background:0 0;border:0;border-radius:7px;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:12px;display:inline-flex}[data-sidebar-collapsed] .Yvqh9W_sessionTabs{background:0 0;border:none;border-radius:0;flex-direction:column;gap:6px;width:auto;padding:0;display:flex}[data-sidebar-collapsed] .Yvqh9W_sessionTab{border-radius:9px;width:34px;height:34px;padding:0;font-size:0}[data-sidebar-collapsed] .Yvqh9W_sessionTabLabel{display:none}.Yvqh9W_sessionTab:hover,.Yvqh9W_sessionTab[data-active]{color:var(--dsw-alias-label-primary);background:var(--dsw-specific-sidebar-nav-item-active)}.Yvqh9W_sessionTabIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.Yvqh9W_sessionTabLabel{text-overflow:ellipsis;min-width:0;overflow:hidden}[class*=regionArea]{min-height:0;position:relative}.Yvqh9W_sidebarHistoryHost{z-index:30;background:var(--dsw-alias-bg-base);min-width:0;min-height:0;padding:6px 4px;display:none;position:absolute;inset:0;overflow:hidden}html[data-dsh-imagegen-active] .Yvqh9W_sidebarHistoryHost{display:flex}.Yvqh9W_sidebarHistoryHost .Yvqh9W_history{background:0 0;border:0;border-radius:8px;width:100%;height:100%}[data-dsh-frame][data-sidebar-collapsed] .Yvqh9W_sidebarHistoryHost{display:none}[data-dsh-frame][data-sidebar-collapsed] .Yvqh9W_entry{justify-content:center;width:100%;padding:0}[data-dsh-frame][data-sidebar-collapsed] .Yvqh9W_entryLabel{display:none}.Yvqh9W_view{width:100%;min-width:0;min-height:0;overflow:hidden}.Yvqh9W_panel,.Yvqh9W_panel *,.Yvqh9W_panel :before,.Yvqh9W_panel :after{box-sizing:border-box}.Yvqh9W_panel{background:var(--dsw-alias-bg-base);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family);flex-direction:column;gap:10px;padding:14px 16px 16px;display:flex;position:relative;overflow:hidden}.Yvqh9W_panelHeader{flex:none;justify-content:space-between;align-items:center;gap:12px;display:flex;position:relative}.Yvqh9W_panelHeading{align-items:baseline;gap:10px;min-width:0;display:flex}.Yvqh9W_panelTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;margin:0;font-size:16px;font-weight:700}.Yvqh9W_githubLink{width:22px;height:22px;color:var(--dsw-alias-label-secondary);border-radius:6px;flex:none;justify-content:center;align-items:center;text-decoration:none;transition:color .12s,background .12s;display:inline-flex}.Yvqh9W_githubLink:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_connectionStatus{border:1px solid var(--dsw-alias-label-error);height:28px;color:var(--dsw-alias-label-error);font:inherit;white-space:nowrap;background:0 0;border-radius:8px;flex:none;align-items:center;gap:6px;padding:0 10px;font-size:12px;line-height:1;display:inline-flex}.Yvqh9W_connectionStatus[data-connected=true]{border-color:var(--dsw-alias-state-success-primary);color:var(--dsw-alias-state-success-primary)}.Yvqh9W_connectionDot{background:currentColor;border-radius:50%;width:6px;height:6px}.Yvqh9W_updateBanner{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-primary);overflow-wrap:anywhere;border-radius:10px;flex:none;justify-content:space-between;align-items:center;gap:12px;padding:7px 10px 7px 12px;font-size:12px;line-height:1.5;display:flex}.Yvqh9W_updateBanner[data-kind=ok]{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}.Yvqh9W_updateText{min-width:0}.Yvqh9W_updateActions{flex:none;align-items:center;gap:10px;display:inline-flex}.Yvqh9W_updateRelease{color:inherit;text-underline-offset:2px;white-space:nowrap;text-decoration:underline}@media (width<=700px){.Yvqh9W_panelHeader{align-items:flex-start}.Yvqh9W_panelHeading{flex-direction:column;align-items:flex-start;gap:2px}.Yvqh9W_updateBanner{flex-direction:column;align-items:flex-start}.Yvqh9W_updateActions{justify-content:space-between;width:100%}}.Yvqh9W_studio{flex:1;min-width:0;min-height:0;display:flex}.Yvqh9W_generation{gap:14px;width:100%;min-width:0;min-height:0;display:flex}.Yvqh9W_generation[data-workspace=canvas]{height:100%;display:flex}.Yvqh9W_generation[data-workspace=canvas]>.Yvqh9W_config,.Yvqh9W_generation[data-workspace=canvas]>.Yvqh9W_canvas{display:none!important}.Yvqh9W_config{width:clamp(240px, var(--dsh-imagegen-config-width,300px), 480px);flex-direction:column;flex:none;gap:12px;min-width:240px;max-width:480px;height:100%;min-height:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_configHeader{flex:none;justify-content:flex-end;min-height:28px;display:flex}.Yvqh9W_configToggle{border:1px solid var(--dsw-alias-border-l1);width:28px;height:28px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;padding:0;display:inline-flex}.Yvqh9W_configToggle:hover,.Yvqh9W_configToggle:focus-visible{border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-brand-primary);outline:none}.Yvqh9W_config[data-collapsed=true]{gap:0;width:38px;min-width:38px;max-width:38px}.Yvqh9W_config[data-collapsed=true] .Yvqh9W_configHeader{justify-content:center}.Yvqh9W_config[data-collapsed=true]>:not(.Yvqh9W_configHeader){display:none}.Yvqh9W_configScroll{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:12px;min-height:0;padding-right:2px;display:flex;overflow-y:auto}.Yvqh9W_configScroll::-webkit-scrollbar{width:8px}.Yvqh9W_configScroll::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_canvas{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:12px;flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_taskTray{z-index:6;border:1px solid var(--dsw-alias-border-l2);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1) 92%, transparent);backdrop-filter:blur(10px);border-radius:9px;flex-direction:column;width:min(360px,100% - 24px);max-height:calc(100% - 24px);display:flex;position:absolute;top:12px;right:12px;overflow:hidden;box-shadow:0 8px 24px #0000001f}.Yvqh9W_taskTray[data-open=false]{width:auto;max-width:calc(100% - 24px)}.Yvqh9W_taskTrayHeader{min-height:34px;color:var(--dsw-alias-label-primary);border-bottom:1px solid var(--dsw-alias-border-l1);align-items:stretch;font-size:12px;font-weight:600;display:flex}.Yvqh9W_taskTray[data-open=false] .Yvqh9W_taskTrayHeader{border-bottom:0}.Yvqh9W_taskTrayToggle{min-width:0;color:inherit;cursor:pointer;font:inherit;font-size:inherit;font-weight:inherit;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:8px;padding:8px 10px;display:flex}.Yvqh9W_taskTrayToggle:hover{background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_taskTrayCount{min-width:18px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);text-align:center;border-radius:999px;padding:1px 5px;font-size:11px;font-weight:500}.Yvqh9W_taskTrayChevron{color:var(--dsw-alias-label-tertiary);margin-left:auto;font-size:12px;font-weight:400}.Yvqh9W_taskTrayClose{border:0;border-left:1px solid var(--dsw-alias-border-l1);width:32px;color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;background:0 0;font-size:17px}.Yvqh9W_taskTrayClose:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_taskTray[data-open=false] .Yvqh9W_taskTrayToggle{min-height:34px}.Yvqh9W_taskRows{min-height:0;overflow-y:auto}.Yvqh9W_taskTray[data-open=false] .Yvqh9W_taskRows{display:none}.Yvqh9W_taskRow{border-top:1px solid var(--dsw-alias-border-l1);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:7px;padding:7px 10px;display:grid}.Yvqh9W_taskRow:first-of-type{border-top:0}.Yvqh9W_taskStatus{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:11px}.Yvqh9W_taskRow[data-status=running] .Yvqh9W_taskStatus{color:var(--dsw-alias-brand-primary)}.Yvqh9W_taskRow[data-status=failed] .Yvqh9W_taskStatus{color:var(--dsw-alias-label-error)}.Yvqh9W_taskPrompt{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.Yvqh9W_taskRow button{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;border:0;border-radius:5px;padding:2px 7px;font-size:11px}.Yvqh9W_taskRow button:hover{color:var(--dsw-alias-brand-primary)}.Yvqh9W_configGuide{z-index:1100;background:#00000059;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.Yvqh9W_configGuideBody{border:1px solid var(--dsw-alias-border-l2);width:min(360px,100%);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);border-radius:10px;flex-direction:column;gap:12px;padding:18px;display:flex;box-shadow:0 14px 40px #0003}.Yvqh9W_configGuideBody span{color:var(--dsw-alias-label-secondary);font-size:13px;line-height:1.55}.Yvqh9W_configGuideBody button{min-height:30px;color:var(--dsw-alias-bg-layer-1);background:var(--dsw-alias-brand-primary);cursor:pointer;font:inherit;border:0;border-radius:7px;align-self:flex-end;padding:0 12px;font-size:12px}.Yvqh9W_history{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:12px;flex-direction:column;width:auto;min-width:0;max-width:none;min-height:0;display:flex;overflow:hidden}.Yvqh9W_historyHeader{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.Yvqh9W_historyHeaderActions{flex:none;align-items:center;gap:6px;display:flex}.Yvqh9W_historyFilters{border-bottom:1px solid var(--dsw-alias-border-l1);grid-template-columns:1fr 1fr;gap:6px;padding:8px 10px;display:grid}.Yvqh9W_historySearch,.Yvqh9W_historyFilters select,.Yvqh9W_gallerySearch{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);min-width:0;min-height:29px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);font:inherit;border-radius:7px;padding:0 8px;font-size:11px}.Yvqh9W_historySearch{grid-column:1/-1}.Yvqh9W_gallerySearch{width:156px}.Yvqh9W_galleryTagInput{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:130px;min-height:29px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);font:inherit;border-radius:7px;padding:0 8px;font-size:11px}.Yvqh9W_galleryBulkButton{border:1px solid var(--dsw-alias-border-l2);min-height:29px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;font:inherit;border-radius:7px;padding:0 8px;font-size:11px}.Yvqh9W_galleryBulkButton:hover:not(:disabled){color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryBulkButton:disabled{opacity:.45;cursor:default}.Yvqh9W_historyTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600}.Yvqh9W_historyNew{width:26px;height:26px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:7px;justify-content:center;align-items:center;padding:0;display:inline-flex}.Yvqh9W_historyNew:hover{color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_historyClear{font:inherit;color:var(--dsw-alias-label-tertiary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:999px;padding:2px 8px;font-size:11.5px}.Yvqh9W_historyClear:hover{color:var(--dsw-alias-label-error);border-color:var(--dsw-alias-label-error)}.Yvqh9W_historyList{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:8px;min-height:0;padding:10px;display:flex;overflow-y:auto}.Yvqh9W_historyList::-webkit-scrollbar{width:8px}.Yvqh9W_historyList::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_historyEmpty{text-align:center;color:var(--dsw-alias-label-tertiary);flex:1;justify-content:center;align-items:center;padding:20px;font-size:12px;line-height:1.6;display:flex}.Yvqh9W_historyItem{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);border-radius:10px;flex-direction:column;flex:none;gap:6px;padding:8px;display:flex}.Yvqh9W_historyItem:hover{border-color:var(--dsw-alias-border-l2)}.Yvqh9W_historyItem[data-active]{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_historyMain{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:flex-start;gap:8px;min-width:0;padding:0;display:flex}.Yvqh9W_historyThumb{object-fit:cover;background:var(--dsw-alias-bg-base);border-radius:8px;flex:none;width:52px;height:52px}.Yvqh9W_historyThumbPlaceholder{background:var(--dsw-alias-bg-layer-3);border-radius:8px;flex:none;width:52px;height:52px}.Yvqh9W_historyInfo{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.Yvqh9W_historyPrompt{color:var(--dsw-alias-label-primary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.4;display:-webkit-box;overflow:hidden}.Yvqh9W_historyMeta{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.Yvqh9W_historyActions{justify-content:flex-end;gap:4px;display:flex}.Yvqh9W_historyIconAction{width:26px;height:24px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;padding:0;display:inline-flex}.Yvqh9W_historyIconAction:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_historyIconAction:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_historyIconAction:disabled{opacity:.5;cursor:default}.Yvqh9W_historyIconAction[data-danger]:hover{color:var(--dsw-alias-state-error);background:color-mix(in srgb, var(--dsw-alias-state-error) 10%, transparent)}.Yvqh9W_card{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:12px;flex-direction:column;flex:none;gap:10px;padding:12px;display:flex}.Yvqh9W_ecommerceWorkspace{flex-direction:column;gap:18px;max-width:760px;margin:0 auto;padding:10px 8px 18px;display:flex}.Yvqh9W_ecommerceSection{border:none;border-bottom:1px solid var(--dsw-alias-border-l1);background:0 0;border-radius:0;flex-direction:column;gap:10px;padding:0 0 16px;display:flex}.Yvqh9W_ecommerceSection:last-of-type{border-bottom:none;padding-bottom:4px}.Yvqh9W_ecommerceSection h3{align-items:baseline;gap:7px;margin:0 0 2px;font-size:14px;font-weight:650;display:flex}.Yvqh9W_ecommerceSectionHint{color:var(--dsw-alias-label-tertiary);font-size:11px;font-weight:400}.Yvqh9W_ecommerceSection input:not([type=checkbox]),.Yvqh9W_ecommerceSection select,.Yvqh9W_ecommerceSection textarea{box-sizing:border-box;width:100%;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);font:inherit;border-radius:9px;padding:9px 11px}.Yvqh9W_ecommerceSection input:not([type=checkbox]):focus-visible,.Yvqh9W_ecommerceSection select:focus-visible,.Yvqh9W_ecommerceSection textarea:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_ecommerceSection textarea{resize:vertical;min-height:68px;line-height:1.5}.Yvqh9W_ecommerceField{flex-direction:column;gap:5px;min-width:0;display:flex}.Yvqh9W_ecommerceFieldLabel{color:var(--dsw-alias-label-secondary);font-size:11.5px}.Yvqh9W_ecommerceParamGrid{grid-template-columns:1fr 1fr;gap:12px 10px;display:grid}.Yvqh9W_ecommerceUploadHero{border:1.5px dashed var(--dsw-alias-border-l2);min-height:78px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;text-align:center;background:0 0;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:12px;display:flex}.Yvqh9W_ecommerceUploadHero:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_ecommerceUploadHero:focus-visible,.Yvqh9W_ecommerceAssetAdd:focus-visible,.Yvqh9W_ecommerceSlotCard:focus-visible,.Yvqh9W_ecommerceAdvancedToggle:focus-visible,.Yvqh9W_ecommerceAsset button:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.Yvqh9W_ecommerceUploadHero span{font-size:12px}.Yvqh9W_ecommerceUploadHero small{color:var(--dsw-alias-label-tertiary);font-size:10.5px}.Yvqh9W_ecommerceStructureGrid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.Yvqh9W_ecommerceSlotCard{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);height:34px;color:var(--dsw-alias-label-primary);cursor:pointer;font:inherit;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;font-size:12px;display:flex;position:relative}.Yvqh9W_ecommerceSlotCard:hover{border-color:var(--dsw-alias-label-dimmed)}.Yvqh9W_ecommerceSlotCard[data-active]{background:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-base);font-weight:600}.Yvqh9W_ecommerceSlotCount{background:var(--dsw-alias-brand-primary);color:#fff;text-align:center;border-radius:8px;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:600;line-height:16px;position:absolute;top:-6px;right:-6px}.Yvqh9W_ecommerceRefRow{grid-template-columns:64px 1fr;align-items:center;gap:8px;display:grid}.Yvqh9W_ecommerceRefRow>span{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommercePrimaryAction{border-radius:999px;width:100%;height:38px;font-size:13.5px}.Yvqh9W_previewBadge{background:var(--dsw-alias-brand-primary);color:#fff;letter-spacing:.02em;border-radius:4px;margin-left:5px;padding:0 4px;font-size:9px;font-weight:700;line-height:13px}.Yvqh9W_ecommercePlanNote{color:var(--dsw-alias-label-secondary);font-size:11.5px;line-height:1.5}.Yvqh9W_ecommercePlanWarn{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);border-radius:6px;padding:6px 8px;font-size:11.5px;line-height:1.5}.Yvqh9W_ecommerceAssets{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.Yvqh9W_ecommerceAsset{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-3);border-radius:8px;flex-direction:column;gap:3px;padding:4px;display:flex;position:relative}.Yvqh9W_ecommerceAsset img{object-fit:cover;border-radius:5px;width:100%;height:44px}.Yvqh9W_ecommerceAsset select{width:100%;min-width:0;padding:2px;font-size:10px}.Yvqh9W_ecommerceAsset button{color:#fff;cursor:pointer;text-align:center;background:#0000008c;border:none;border-radius:50%;width:16px;height:16px;padding:0;font-size:11px;line-height:15px;position:absolute;top:7px;right:7px}.Yvqh9W_ecommerceAsset button:hover{background:#000c}.Yvqh9W_ecommerceAssetAdd{border:1.5px dashed var(--dsw-alias-border-l2);min-height:78px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.Yvqh9W_ecommerceAssetAdd:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed)}.Yvqh9W_ecommerceAssetAdd span{font-size:16px;line-height:1}.Yvqh9W_ecommerceAssetAdd small{font-size:10px}.Yvqh9W_ecommerceAdvancedToggle{width:100%;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:none;justify-content:space-between;align-items:center;padding:0;font-size:12.5px;display:flex}.Yvqh9W_ecommerceAdvancedToggle:hover{color:var(--dsw-alias-label-primary)}.Yvqh9W_ecommerceAdvancedChevron{font-size:11px}.Yvqh9W_ecommerceAdvancedBody{flex-direction:column;gap:8px;margin-top:8px;display:flex}.Yvqh9W_ecommerceFooterBody{flex-direction:column;gap:8px;display:flex}.Yvqh9W_ecommercePlanMini{border:1px solid var(--dsw-alias-brand-primary);border-radius:10px;flex-direction:column;gap:6px;padding:10px;display:flex}.Yvqh9W_ecommercePlanMini>strong{font-size:12.5px}.Yvqh9W_ecommercePlanList{flex-direction:column;gap:3px;max-height:116px;display:flex;overflow-y:auto}.Yvqh9W_ecommercePlanList>div{color:var(--dsw-alias-label-secondary);justify-content:space-between;gap:12px;font-size:11.5px;display:flex}.Yvqh9W_ecommercePlanBack{color:var(--dsw-alias-label-tertiary);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;font-size:12px}.Yvqh9W_ecommercePlanBack:hover{color:var(--dsw-alias-label-primary)}.Yvqh9W_ecommerceFooterHint{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommerceResults{flex-direction:column;gap:14px;width:100%;margin:0 auto;padding:16px 18px;display:flex;overflow-y:auto}.Yvqh9W_ecommerceResultsHeader{justify-content:space-between;align-items:center;gap:12px;display:flex}.Yvqh9W_ecommerceResultsHeader h3{margin:0;font-size:15px}.Yvqh9W_ecommerceResultsHeader>div:first-child{align-items:baseline;gap:10px;display:flex}.Yvqh9W_ecommerceResultsHeader span{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommerceResultsActions{gap:8px;display:flex}.Yvqh9W_ecommerceResultsEmpty{color:var(--dsw-alias-label-tertiary);text-align:center;border:1.5px dashed var(--dsw-alias-border-l2);border-radius:12px;padding:32px 16px;font-size:13px}.Yvqh9W_ecommerceGroups{flex-direction:column;gap:16px;display:flex}.Yvqh9W_ecommerceGroup{background:0 0;border:none;border-radius:0;flex-direction:column;gap:8px;padding:0;display:flex}.Yvqh9W_ecommerceGroup>header{align-items:center;gap:10px;font-size:13px;display:flex}.Yvqh9W_ecommerceGroup>header strong{font-size:13px}.Yvqh9W_ecommerceGroup>header span{color:var(--dsw-alias-label-secondary);font-size:12px}.Yvqh9W_ecommerceGroup>header button{margin-left:auto}.Yvqh9W_ecommerceGroupGrid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.Yvqh9W_ecommerceTaskCard{aspect-ratio:1;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-3);border-radius:10px;justify-content:center;align-items:center;width:100%;min-height:0;padding:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_ecommerceTaskCard[data-status=failed],.Yvqh9W_ecommerceTaskCard[data-status=cancelled]{color:var(--dsw-alias-label-tertiary);font-size:12px}.Yvqh9W_ecommerceTaskCard .Yvqh9W_imageCard{border:none;border-radius:0;width:100%;height:100%;margin:0}.Yvqh9W_ecommerceTaskCard .Yvqh9W_image{object-fit:cover;width:100%;height:100%}.Yvqh9W_ecommerceResultBadge{color:#fff;pointer-events:none;background:#0000008c;border-radius:999px;padding:0 7px;font-size:10px;line-height:16px;position:absolute;top:6px;left:6px}.Yvqh9W_ecommerceTaskActions{opacity:0;background:linear-gradient(#0000,#0000008c);justify-content:center;gap:4px;padding:10px 4px 5px;transition:opacity .12s;display:flex;position:absolute;bottom:0;left:0;right:0}.Yvqh9W_ecommerceTaskCard:hover .Yvqh9W_ecommerceTaskActions{opacity:1}.Yvqh9W_ecommerceActionChip{color:#111;cursor:pointer;white-space:nowrap;background:#ffffffeb;border:none;border-radius:6px;padding:0 6px;font-size:10px;font-weight:500;line-height:18px;text-decoration:none}.Yvqh9W_ecommerceActionChip:hover{background:#fff}.Yvqh9W_ecommerceActionChip:disabled{opacity:.5;cursor:default}.Yvqh9W_ecommerceTaskState{color:var(--dsw-alias-label-secondary);text-align:center;word-break:break-all;flex-direction:column;gap:3px;padding:10px 8px;font-size:11px;display:flex}.Yvqh9W_ecommerceTaskState b{color:var(--dsw-alias-label-primary);font-size:12px}.Yvqh9W_topNav{flex:none;justify-content:center;align-items:center;gap:2px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.Yvqh9W_topNavItem{height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:none;border-radius:999px;align-items:center;gap:4px;padding:0 14px;font-size:13px;display:inline-flex}.Yvqh9W_topNavItem,.Yvqh9W_topNavItem span{white-space:nowrap}.Yvqh9W_topNavItem:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_topNavItem[data-active]{background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-base);font-weight:600}.Yvqh9W_topNavDivider{background:var(--dsw-alias-border-l2);width:1px;height:16px;margin:0 8px}.Yvqh9W_panelHeaderActions{align-items:center;gap:10px;display:inline-flex}.Yvqh9W_chatToggle{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;border-radius:999px;align-items:center;gap:5px;padding:0 10px;font-size:12px;display:inline-flex}.Yvqh9W_chatToggle:hover{color:var(--dsw-alias-label-primary)}.Yvqh9W_chatToggle[data-open=true]{color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}html[data-dsh-imagegen-chat-collapsed][data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-pane=conversation],html[data-dsh-imagegen-chat-collapsed][data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [class*=centerCol]{grid-template-columns:minmax(0,1fr)}html[data-dsh-imagegen-chat-collapsed][data-dsh-imagegen-active]:not([data-dsh-taskboard-active]):not([data-dsh-ssh-active]) [data-slot=conversation],html[data-dsh-imagegen-chat-collapsed] [data-dsh-imagegen-chat-resizer]{display:none!important}.Yvqh9W_configResizer{cursor:col-resize;z-index:6;width:6px;height:100%;position:absolute;top:0;right:0}.Yvqh9W_configResizer:hover{background:linear-gradient(90deg, transparent, var(--dsw-alias-border-l2))}.Yvqh9W_config[data-collapsed=true] .Yvqh9W_configResizer{display:none}.Yvqh9W_modeRow{align-items:center;gap:8px;display:flex}.Yvqh9W_modePill{flex:1;justify-content:center;height:28px;font-size:12.5px}.Yvqh9W_modePill,.Yvqh9W_modePill span,.Yvqh9W_modePill div{white-space:nowrap;min-width:0}.Yvqh9W_uploadBox{min-height:128px;color:var(--dsw-alias-label-secondary);border:1.5px dashed var(--dsw-alias-border-l2);cursor:pointer;font:inherit;text-align:center;background:0 0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:16px;font-size:12.5px;display:flex}.Yvqh9W_uploadBox:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed);background:var(--dsw-alias-interactive-bg-hover)}.Yvqh9W_uploadBox:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_uploadIcon{color:var(--dsw-alias-label-tertiary);display:inline-flex}.Yvqh9W_uploadHint{color:var(--dsw-alias-label-tertiary);font-size:11px}.Yvqh9W_reference{flex-direction:column;gap:8px;display:flex}.Yvqh9W_referenceImage{object-fit:contain;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l1);border-radius:10px;width:100%;max-height:176px}.Yvqh9W_referenceActions{gap:8px;display:flex}.Yvqh9W_hiddenFile{display:none}.Yvqh9W_prompt{width:100%;min-height:120px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);resize:vertical;box-sizing:border-box;border-radius:10px;outline:none;padding:10px 12px;font-family:inherit;font-size:13px;line-height:1.6}.Yvqh9W_prompt:focus-visible{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_prompt::placeholder{color:var(--dsw-alias-label-tertiary)}.Yvqh9W_promptFooter{justify-content:space-between;align-items:center;gap:8px;margin-top:-6px;display:flex}.Yvqh9W_templatesButton{border:1px solid var(--dsw-alias-brand-primary);background:linear-gradient(135deg, color-mix(in srgb, var(--dsw-alias-brand-primary) 14%, transparent), color-mix(in srgb, var(--dsw-alias-brand-primary) 5%, transparent));height:26px;color:var(--dsw-alias-brand-primary);cursor:pointer;box-shadow:0 1px 0 color-mix(in srgb, var(--dsw-alias-brand-primary) 22%, transparent);border-radius:999px;align-items:center;gap:6px;padding:0 12px;font-family:inherit;font-size:12px;font-weight:600;transition:transform .12s,box-shadow .12s,background .12s;display:inline-flex}.Yvqh9W_templatesButton svg{flex:none}.Yvqh9W_templatesButton:hover{background:linear-gradient(135deg, color-mix(in srgb, var(--dsw-alias-brand-primary) 24%, transparent), color-mix(in srgb, var(--dsw-alias-brand-primary) 8%, transparent));color:var(--dsw-alias-brand-primary);box-shadow:0 2px 6px color-mix(in srgb, var(--dsw-alias-brand-primary) 30%, transparent);transform:translateY(-1px)}.Yvqh9W_templatesButton:active{transform:translateY(0)}.Yvqh9W_enhanceButton{border:1px solid var(--dsw-alias-border-l2);height:26px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);font:inherit;cursor:pointer;border-radius:999px;margin-left:auto;padding:0 11px;font-size:12px}.Yvqh9W_enhanceButton:hover:not(:disabled){color:var(--dsw-alias-brand-primary);border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_enhanceButton:disabled{opacity:.5;cursor:default}.Yvqh9W_promptCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:11px}.Yvqh9W_promptCount[data-over]{color:var(--dsw-alias-status-danger,#e5484d);font-weight:600}.Yvqh9W_paramGroup{flex-direction:column;gap:8px;display:flex}.Yvqh9W_paramLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}.Yvqh9W_optionRow{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_optionGrid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.Yvqh9W_optionPill{justify-content:center}.Yvqh9W_paramHint{color:var(--dsw-alias-label-tertiary);font-size:11px;line-height:1.45}.Yvqh9W_footer{border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;flex:none;align-items:stretch;gap:8px;padding:10px 2px 0 0;display:flex}.Yvqh9W_modelWrap{flex-direction:column;gap:5px;min-width:0;display:flex}.Yvqh9W_modelLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}.Yvqh9W_modelSelect{width:100%;height:36px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;text-align:left;border-radius:18px;outline:none;justify-content:space-between;align-items:center;gap:8px;padding:0 12px;font-family:inherit;font-size:13px;display:flex}.Yvqh9W_modelSelect:focus-visible{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_modelSelect:disabled{opacity:.55;cursor:default}.Yvqh9W_modelMenu{min-width:0;display:block;position:relative}.Yvqh9W_modelMenuList{z-index:40;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;bottom:calc(100% + 6px);left:0;right:0;overflow:hidden;box-shadow:0 -8px 24px #0000002e}.Yvqh9W_modelMenuItem{width:100%;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;border-radius:8px;padding:7px 10px;font-size:13px;display:block;overflow:hidden}.Yvqh9W_modelMenuItem:hover{background:var(--dsw-alias-bg-hover)}.Yvqh9W_modelMenuItem[data-selected]{color:var(--dsw-alias-brand-primary);background:var(--dsw-alias-bg-layer-1);font-weight:600}.Yvqh9W_generateButton{width:100%}.Yvqh9W_generateInner{align-items:center;gap:7px;display:inline-flex}.Yvqh9W_canvasState{text-align:center;color:var(--dsw-alias-label-tertiary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex}.Yvqh9W_canvasStateTitle{color:var(--dsw-alias-label-secondary);font-size:14px;font-weight:600}.Yvqh9W_canvasStateHint{max-width:380px;font-size:12px;line-height:1.6}.Yvqh9W_canvasEmptyIcon{color:var(--dsw-alias-label-tertiary);margin-bottom:4px;display:inline-flex}.Yvqh9W_canvasError{color:var(--dsw-alias-label-error);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-label-error);overflow-wrap:anywhere;border-radius:10px;flex:none;margin:14px;padding:10px 14px;font-size:12.5px;line-height:1.6}.Yvqh9W_canvasBody{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:10px;min-height:0;padding:14px;display:flex;overflow-y:auto}.Yvqh9W_canvasBody::-webkit-scrollbar{width:8px}.Yvqh9W_canvasBody::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_canvasMeta{color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:8px;font-size:12px;display:flex}.Yvqh9W_canvasHistoryTag{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px}.Yvqh9W_grid{flex:1;grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-height:0;display:grid}.Yvqh9W_grid[data-count=\"1\"] .Yvqh9W_imageCard{grid-area:1/1/3/3}.Yvqh9W_imageCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);cursor:zoom-in;border-radius:12px;flex-direction:column;min-height:0;margin:0;display:flex;position:relative;overflow:hidden}.Yvqh9W_imageCard:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Yvqh9W_image{object-fit:cover;background:var(--dsw-alias-bg-base);flex:1;width:100%;min-height:0;display:block}.Yvqh9W_imageCaption{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-overflow:ellipsis;border-top:1px solid var(--dsw-alias-border-l1);padding:7px 10px;font-size:11px;line-height:1.5;overflow:hidden}.Yvqh9W_download{color:#fff;opacity:0;backdrop-filter:blur(4px);background:#0f1218d1;border:1px solid #ffffff9e;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;text-decoration:none;transition:opacity .12s;position:absolute;top:8px;right:8px;box-shadow:0 2px 8px #00000047}.Yvqh9W_imageCard:hover .Yvqh9W_download{opacity:1}.Yvqh9W_download:hover{background:#0f1218f0}.Yvqh9W_download:focus-visible{opacity:1;outline-offset:2px;outline:2px solid #fff}.Yvqh9W_galleryAdd{font:inherit;color:#fff;cursor:pointer;opacity:0;backdrop-filter:blur(4px);background:#0f1218d1;border:1px solid #ffffff9e;border-radius:999px;align-items:center;gap:5px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;transition:opacity .12s;display:inline-flex;position:absolute;top:8px;left:8px;box-shadow:0 2px 8px #00000047}.Yvqh9W_imageCard:hover .Yvqh9W_galleryAdd{opacity:1}.Yvqh9W_galleryAdd:hover{background:#0f1218f0}.Yvqh9W_galleryAdd:focus-visible{opacity:1;outline-offset:2px;outline:2px solid #fff}.Yvqh9W_galleryAdd:disabled{opacity:.4;cursor:default}.Yvqh9W_conversationAdd{color:#fff;cursor:pointer;font:inherit;opacity:0;backdrop-filter:blur(4px);background:#0f1218d1;border:1px solid #ffffff9e;border-radius:999px;align-items:center;gap:5px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;transition:opacity .12s;display:inline-flex;position:absolute;top:38px;left:8px;box-shadow:0 2px 8px #00000047}.Yvqh9W_imageCard:hover .Yvqh9W_conversationAdd,.Yvqh9W_conversationAdd:focus-visible{opacity:1}.Yvqh9W_conversationAdd:hover{background:#0f1218f0}.Yvqh9W_conversationAdd:focus-visible{opacity:1;outline-offset:2px;outline:2px solid #fff}.Yvqh9W_conversationAdd:disabled{opacity:.4;cursor:default}.Yvqh9W_zoomHint{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-mask-1);border:1px solid var(--dsw-alias-border-l2);opacity:0;backdrop-filter:blur(4px);pointer-events:none;border-radius:999px;align-items:center;gap:5px;padding:2px 10px;font-size:12px;font-weight:500;line-height:20px;transition:opacity .12s;display:inline-flex;position:absolute;bottom:8px;left:8px}.Yvqh9W_imageCard:hover .Yvqh9W_zoomHint{opacity:1}.Yvqh9W_spinner,.Yvqh9W_bigSpinner{border:2px solid;border-top-color:#0000;border-radius:50%;flex:none;animation:.8s linear infinite Yvqh9W_dshImageGenSpin;display:inline-block}.Yvqh9W_spinner{width:11px;height:11px}.Yvqh9W_bigSpinner{width:30px;height:30px;color:var(--dsw-alias-state-business-primary);border-width:3px;margin-bottom:6px}.Yvqh9W_lightbox{z-index:1000;backdrop-filter:blur(6px);background:#000000b8;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.Yvqh9W_lightboxClose{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;display:inline-flex;position:absolute;top:16px;right:16px}.Yvqh9W_lightboxClose:hover{background:#ffffff42}.Yvqh9W_lightboxNav{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;border-radius:50%;justify-content:center;align-items:center;width:42px;height:42px;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.Yvqh9W_lightboxNav:hover{background:#ffffff42}.Yvqh9W_lightboxNav[data-dir=prev]{left:max(20px,50% - 640px)}.Yvqh9W_lightboxNav[data-dir=next]{right:max(20px,50% - 640px)}.Yvqh9W_lightboxFigure{flex-direction:column;gap:10px;width:min(1100px,100vw - 160px);max-width:min(1100px,100vw - 160px);height:min(820px,100vh - 48px);min-height:0;margin:0;display:flex}.Yvqh9W_lightboxStage{background:#ffffff0a;border-radius:10px;flex:1;min-height:0;position:relative;overflow:auto}.Yvqh9W_lightboxScaleFrame{justify-content:center;align-items:center;min-width:100%;min-height:100%;display:flex}.Yvqh9W_lightboxImage{object-fit:contain;border-radius:10px;max-width:100%;max-height:100%;display:block;box-shadow:0 24px 80px #00000080}.Yvqh9W_lightboxTools{justify-content:center;align-items:center;gap:6px;display:flex}.Yvqh9W_lightboxTool,.Yvqh9W_lightboxZoomLevel,.Yvqh9W_lightboxCopy{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;justify-content:center;align-items:center;display:inline-flex}.Yvqh9W_lightboxTool,.Yvqh9W_lightboxZoomLevel{height:32px}.Yvqh9W_lightboxTool{border-radius:50%;width:32px}.Yvqh9W_lightboxZoomLevel{min-width:58px;font:inherit;font-variant-numeric:tabular-nums;border-radius:999px;padding:0 9px;font-size:12px}.Yvqh9W_lightboxTool:hover,.Yvqh9W_lightboxZoomLevel:hover,.Yvqh9W_lightboxCopy:hover{background:#ffffff42}.Yvqh9W_lightboxCaptionRow{align-items:flex-start;gap:8px;min-width:0;display:flex}.Yvqh9W_lightboxCaption{color:#ffffffe6;-webkit-line-clamp:3;-webkit-box-orient:vertical;flex:1;min-width:0;font-size:12px;line-height:1.6;display:-webkit-box;overflow:hidden}.Yvqh9W_lightboxCopy{min-height:28px;font:inherit;white-space:nowrap;border-radius:999px;flex:none;gap:5px;padding:4px 9px;font-size:12px}.Yvqh9W_lightboxMeta{justify-content:space-between;align-items:center;gap:12px;display:flex}.Yvqh9W_lightboxIndex{color:#fffc;font-variant-numeric:tabular-nums;font-size:12px}.Yvqh9W_lightboxActions{align-items:center;gap:8px;display:inline-flex}.Yvqh9W_lightboxDownload,.Yvqh9W_lightboxEdit{font:inherit;color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff47;border-radius:999px;padding:4px 14px;font-size:12.5px;font-weight:500;text-decoration:none}.Yvqh9W_lightboxDownload:hover,.Yvqh9W_lightboxEdit:hover{background:#ffffff42}.Yvqh9W_lightboxEdit{color:#fff;background:#ffffff24;border:1px solid #ffffff47;border-radius:999px}@media (width<=720px){.Yvqh9W_lightbox{padding:16px}.Yvqh9W_lightboxFigure{width:calc(100vw - 32px);max-width:none}.Yvqh9W_lightboxNav[data-dir=prev]{left:20px}.Yvqh9W_lightboxNav[data-dir=next]{right:20px}.Yvqh9W_lightboxCaptionRow,.Yvqh9W_lightboxMeta{flex-direction:column;align-items:stretch}.Yvqh9W_lightboxCopy,.Yvqh9W_lightboxActions{align-self:flex-end}}@keyframes Yvqh9W_dshImageGenSpin{to{transform:rotate(360deg)}}.Yvqh9W_galleryToast{z-index:30;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-mask-1);border:1px solid var(--dsw-alias-border-l2);backdrop-filter:blur(6px);pointer-events:none;border-radius:999px;align-items:center;gap:7px;padding:6px 16px;font-size:13px;font-weight:500;animation:.16s ease-out Yvqh9W_dshImageGenToastIn;display:inline-flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000038}@keyframes Yvqh9W_dshImageGenToastIn{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.Yvqh9W_conversationToast{z-index:30;border:1px solid var(--dsw-alias-border-l2);max-width:calc(100% - 32px);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-mask-1);pointer-events:none;backdrop-filter:blur(6px);border-radius:999px;align-items:center;gap:7px;padding:6px 16px;font-size:13px;font-weight:500;animation:.16s ease-out Yvqh9W_dshImageGenToastIn;display:inline-flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000038}@media (prefers-reduced-motion:reduce){.Yvqh9W_download,.Yvqh9W_spinner,.Yvqh9W_bigSpinner{transition:none;animation-duration:1.5s}}.Yvqh9W_config[data-gallery=true] .Yvqh9W_configScroll{flex:none;order:1;display:flex;overflow:visible}.Yvqh9W_config[data-gallery=true] .Yvqh9W_galleryFilters{flex:1;order:2;min-height:0}.Yvqh9W_galleryFilters{padding:18px 14px;overflow:hidden auto}.Yvqh9W_galleryFilterHeading{color:var(--dsw-alias-label-tertiary);margin:0 4px 10px;font-size:12px;font-weight:600}.Yvqh9W_galleryFilter{width:100%;min-height:34px;color:var(--dsw-alias-label-secondary);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:9px;justify-content:space-between;align-items:center;padding:0 10px;display:flex}.Yvqh9W_galleryFilter:hover,.Yvqh9W_galleryFilter[data-active]{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent)}.Yvqh9W_galleryFilterCount{min-width:20px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);text-align:center;border-radius:999px;padding:1px 6px;font-size:11px}.Yvqh9W_galleryFilterDivider{background:var(--dsw-alias-border-l1);height:1px;margin:18px 4px}.Yvqh9W_galleryRatioList{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_galleryRatio{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;border:0;border-radius:999px;padding:6px 10px;font-size:12px}.Yvqh9W_galleryRatio[data-active]{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 13%, transparent)}.Yvqh9W_galleryTagFilterList{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_galleryTagFilter{border:1px solid var(--dsw-alias-border-l1);min-width:0;max-width:100%;min-height:27px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;border-radius:6px;align-items:center;gap:5px;padding:0 8px;font-size:11px;display:inline-flex}.Yvqh9W_galleryTagFilter span:first-child{text-overflow:ellipsis;white-space:nowrap;max-width:112px;overflow:hidden}.Yvqh9W_galleryTagFilter span:last-child{color:var(--dsw-alias-label-tertiary);font-size:10px}.Yvqh9W_galleryTagFilter:hover,.Yvqh9W_galleryTagFilter[data-active]{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent)}.Yvqh9W_galleryFilterNote{color:var(--dsw-alias-label-quaternary);margin:20px 4px 0;font-size:11px;line-height:1.5}.Yvqh9W_galleryWorkspace{box-sizing:border-box;flex-direction:column;width:100%;min-width:0;height:100%;min-height:0;padding:22px 24px 26px;display:flex;position:absolute;inset:0;overflow:hidden}.Yvqh9W_galleryToolbar{flex:none;justify-content:space-between;align-items:center;gap:16px;min-width:0;margin-bottom:18px;display:flex}.Yvqh9W_galleryHeading{color:var(--dsw-alias-label-primary);margin:0;font-size:20px;font-weight:700;display:inline}.Yvqh9W_galleryCount{color:var(--dsw-alias-label-tertiary);margin-left:8px;font-size:13px}.Yvqh9W_galleryToolbarActions{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.Yvqh9W_gallerySelectMode,.Yvqh9W_galleryBulkButton,.Yvqh9W_gallerySelectionClear{border:1px solid var(--dsw-alias-border-l1);min-height:30px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;font:inherit;border-radius:7px;padding:0 10px;font-size:12px}.Yvqh9W_gallerySelectMode:hover,.Yvqh9W_gallerySelectMode[data-active],.Yvqh9W_galleryBulkButton:hover:not(:disabled){color:var(--dsw-alias-brand-primary);border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 38%, var(--dsw-alias-border-l1));background:color-mix(in srgb, var(--dsw-alias-brand-primary) 11%, transparent)}.Yvqh9W_galleryBulkButton:disabled{cursor:not-allowed;opacity:.45}.Yvqh9W_gallerySelectionBar{border:1px solid color-mix(in srgb, var(--dsw-alias-brand-primary) 35%, var(--dsw-alias-border-l1));background:color-mix(in srgb, var(--dsw-alias-brand-primary) 7%, var(--dsw-alias-bg-layer-1));border-radius:9px;flex:none;align-items:center;gap:10px;min-width:0;margin:-4px 0 16px;padding:10px 12px;display:flex}.Yvqh9W_gallerySelectionBar strong{color:var(--dsw-alias-brand-primary);flex:none;font-size:12px}.Yvqh9W_gallerySelectionClear{margin-left:auto}.Yvqh9W_gallerySelectionClear:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.Yvqh9W_galleryTagInput,.Yvqh9W_gallerySearch{border:1px solid var(--dsw-alias-border-l1);min-width:0;height:30px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);font:inherit;border-radius:7px;outline:none;padding:0 10px;font-size:12px}.Yvqh9W_galleryTagInput{flex:190px}.Yvqh9W_galleryTagInput:focus,.Yvqh9W_gallerySearch:focus{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryViewToggle{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:9px;padding:3px;display:flex}.Yvqh9W_galleryViewToggle button,.Yvqh9W_gallerySort,.Yvqh9W_galleryClear{min-height:30px;color:var(--dsw-alias-label-secondary);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:7px;padding:0 10px;font-size:12px}.Yvqh9W_galleryViewToggle button[data-active],.Yvqh9W_galleryViewToggle button:hover,.Yvqh9W_gallerySort:hover,.Yvqh9W_galleryClear:hover{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 11%, transparent)}.Yvqh9W_gallerySort{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1)}.Yvqh9W_galleryClear{border:1px solid var(--dsw-alias-border-l1)}.Yvqh9W_compareControl{flex-direction:column;gap:6px;margin:0 0 10px;display:flex}.Yvqh9W_compareToggle,.Yvqh9W_compareModelChoices label{color:var(--dsw-alias-label-secondary);cursor:pointer;align-items:center;gap:6px;font-size:12px;display:flex}.Yvqh9W_compareToggle input,.Yvqh9W_compareModelChoices input{accent-color:var(--dsw-alias-brand-primary)}.Yvqh9W_compareModelChoices{flex-wrap:wrap;gap:6px;display:flex}.Yvqh9W_compareModelChoices label{border:1px solid var(--dsw-alias-border-l1);border-radius:5px;padding:4px 6px;font-size:10px}.Yvqh9W_comparisonBoard{z-index:4;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:8px;flex-direction:column;display:flex;position:absolute;inset:14px;overflow:hidden;box-shadow:0 8px 24px #0000001f}.Yvqh9W_comparisonBoard>header{border-bottom:1px solid var(--dsw-alias-border-l1);justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.Yvqh9W_comparisonBoard>header div{align-items:baseline;gap:7px;display:flex}.Yvqh9W_comparisonBoard>header strong{color:var(--dsw-alias-label-primary);font-size:13px}.Yvqh9W_comparisonBoard>header span{color:var(--dsw-alias-label-tertiary);font-size:11px}.Yvqh9W_comparisonBoard>header button{border:1px solid var(--dsw-alias-border-l1);min-height:28px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;border-radius:5px;padding:0 9px;font-size:11px}.Yvqh9W_comparisonGrid{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;min-height:0;padding:12px;display:grid;overflow:auto}.Yvqh9W_comparisonGrid article{flex-direction:column;gap:7px;min-width:0;height:100%;min-height:0;display:flex}.Yvqh9W_comparisonGrid article>strong{color:var(--dsw-alias-label-primary);font-size:12px}.Yvqh9W_comparisonImageButton{cursor:zoom-in;background:var(--dsw-alias-bg-base);border:0;flex:1;width:100%;min-height:0;padding:0;display:flex;overflow:hidden}.Yvqh9W_comparisonImageButton:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.Yvqh9W_comparisonGrid article>span{min-height:0;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);flex:1;place-items:center;font-size:12px;display:grid}.Yvqh9W_comparisonGrid img{object-fit:contain;background:var(--dsw-alias-bg-base);flex:1;width:100%;height:100%;min-height:0;max-height:none;display:block}.Yvqh9W_comparisonFullscreen{z-index:1200;background:#000000eb;padding:54px 24px 24px;position:fixed;inset:0;overflow:auto}.Yvqh9W_comparisonFullscreenGrid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start;gap:18px;min-height:100%;display:grid}.Yvqh9W_comparisonFullscreen figure{min-width:0;margin:0}.Yvqh9W_comparisonFullscreen figcaption{color:#fff;margin-bottom:8px;font-size:13px;font-weight:600}.Yvqh9W_comparisonFullscreen img{background:#111;width:100%;margin-bottom:10px;display:block}.Yvqh9W_historyItem[data-comparison]{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary) 55%, var(--dsw-alias-border-l1))}.Yvqh9W_galleryMasonry{box-sizing:border-box;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex:auto;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:max-content;align-content:start;gap:16px;width:100%;min-width:0;max-width:100%;height:0;min-height:0;padding:2px 8px 16px 2px;display:grid;overflow:hidden scroll}.Yvqh9W_galleryMasonry::-webkit-scrollbar{width:8px}.Yvqh9W_galleryMasonry::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Yvqh9W_galleryCard{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:14px;width:100%;margin:0;display:block;position:relative;overflow:hidden;box-shadow:0 5px 18px #18203612}.Yvqh9W_galleryCard[data-selected]{border-color:var(--dsw-alias-brand-primary);box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-alias-brand-primary) 26%, transparent), 0 5px 18px #18203612}.Yvqh9W_gallerySelect{z-index:2;cursor:pointer;background:#00000094;border:1px solid #ffffffbf;border-radius:7px;place-items:center;width:26px;height:26px;display:grid;position:absolute;top:9px;right:9px}.Yvqh9W_gallerySelect input{width:16px;height:16px;accent-color:var(--dsw-alias-brand-primary);cursor:pointer;margin:0}.Yvqh9W_galleryImageButton{background:var(--dsw-alias-bg-base);cursor:zoom-in;border:0;width:100%;padding:0;display:block;position:relative}.Yvqh9W_galleryImageButton[data-selecting]{cursor:pointer}.Yvqh9W_galleryImage{aspect-ratio:4/3;object-fit:cover;width:100%;display:block}.Yvqh9W_galleryMasonry[data-view=masonry] .Yvqh9W_galleryCard:nth-child(3n+1) .Yvqh9W_galleryImage{aspect-ratio:4/5}.Yvqh9W_galleryMasonry[data-view=masonry] .Yvqh9W_galleryCard:nth-child(3n+2) .Yvqh9W_galleryImage{aspect-ratio:4/3}.Yvqh9W_galleryMasonry[data-view=masonry] .Yvqh9W_galleryCard:nth-child(3n) .Yvqh9W_galleryImage{aspect-ratio:3/4}.Yvqh9W_galleryBadge{color:#fff;backdrop-filter:blur(4px);background:#121724c2;border-radius:999px;padding:4px 9px;font-size:11px;position:absolute;top:10px;left:10px}.Yvqh9W_galleryCardActions{padding:8px 12px 0;display:flex}.Yvqh9W_galleryCardAction{border:1px solid var(--dsw-alias-border-l2);width:100%;min-width:0;min-height:28px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);cursor:pointer;font:inherit;white-space:nowrap;border-radius:7px;justify-content:center;align-items:center;gap:4px;padding:0 4px;font-size:10px;font-weight:500;display:inline-flex}.Yvqh9W_galleryCardAction:hover,.Yvqh9W_galleryCardAction:focus-visible{border-color:var(--dsw-alias-brand-primary);color:var(--dsw-alias-brand-primary);outline:none}.Yvqh9W_galleryCardAction:disabled{cursor:wait;opacity:.55}.Yvqh9W_galleryCardFooter{align-items:center;gap:9px;min-width:0;padding:10px 12px;display:flex}.Yvqh9W_galleryAvatar{color:#fff;background:var(--dsw-alias-brand-primary);border-radius:50%;flex:none;place-items:center;width:27px;height:27px;font-size:12px;font-weight:700;display:grid}.Yvqh9W_galleryCardInfo{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.Yvqh9W_galleryCardInfo strong,.Yvqh9W_galleryCardInfo small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.Yvqh9W_galleryCardInfo strong{color:var(--dsw-alias-label-primary);font-size:12px}.Yvqh9W_galleryCardInfo small{color:var(--dsw-alias-label-tertiary);font-size:10px}.Yvqh9W_galleryTags{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.Yvqh9W_galleryTags button{max-width:96px;min-height:19px;color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 10%, transparent);cursor:pointer;font:inherit;text-overflow:ellipsis;white-space:nowrap;border:0;border-radius:4px;padding:1px 6px;font-size:10px;line-height:1.35;overflow:hidden}.Yvqh9W_galleryTags button:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 17%, transparent)}.Yvqh9W_galleryTags .Yvqh9W_galleryTagEdit{color:var(--dsw-alias-label-tertiary);background:0 0;flex:none}.Yvqh9W_galleryTagEditor{align-items:center;gap:6px;padding:0 12px 10px 48px;display:flex}.Yvqh9W_galleryTagEditor input{border:1px solid var(--dsw-alias-border-l2);min-width:0;height:27px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);font:inherit;border-radius:6px;outline:none;flex:1;padding:0 8px;font-size:11px}.Yvqh9W_galleryTagEditor input:focus{border-color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryTagEditor button{border:1px solid var(--dsw-alias-border-l2);height:27px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);cursor:pointer;font:inherit;border-radius:6px;padding:0 8px;font-size:11px}.Yvqh9W_galleryTagEditor button[type=submit]{color:var(--dsw-alias-brand-primary)}.Yvqh9W_galleryRemove{width:24px;height:24px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;padding:0;font-size:18px}.Yvqh9W_galleryRemove:hover{color:var(--dsw-alias-state-error);background:var(--dsw-alias-bg-layer-2)}@media (width<=760px){.Yvqh9W_ecommerceParamGrid{grid-template-columns:1fr}.Yvqh9W_ecommerceStructureGrid,.Yvqh9W_ecommerceAssets{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=420px){.Yvqh9W_ecommerceWorkspace{padding-inline:2px}.Yvqh9W_ecommerceStructureGrid,.Yvqh9W_ecommerceAssets{grid-template-columns:1fr}}@media (width<=1100px){.Yvqh9W_galleryMasonry{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.Yvqh9W_studio{grid-template-rows:minmax(220px,36%) minmax(0,1fr);grid-template-columns:minmax(0,1fr);overflow-y:auto}.Yvqh9W_history{grid-area:1/1;min-height:220px}.Yvqh9W_generation{flex-direction:column;grid-area:2/1;min-height:0}.Yvqh9W_config{width:auto;max-width:none;height:auto;min-height:0}.Yvqh9W_config[data-gallery=true]{flex:none}.Yvqh9W_canvas{min-height:560px}.Yvqh9W_galleryToolbar{flex-direction:column;align-items:flex-start}.Yvqh9W_galleryToolbarActions{flex-wrap:wrap;width:100%}.Yvqh9W_galleryMasonry{grid-template-columns:1fr}}";
5876
6354
  const tagId$2 = "@dickpy/dsh-imagegen/panel.module.css";
5877
6355
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
5878
6356
  const tag = document.createElement("style");
@@ -5882,226 +6360,226 @@ window.__ModuleLoader__.load({
5882
6360
  document.head.appendChild(tag);
5883
6361
  }
5884
6362
  var panel_module_css_default = {
6363
+ "spinner": "Yvqh9W_spinner",
6364
+ "sessionTab": "Yvqh9W_sessionTab",
6365
+ "lightboxZoomLevel": "Yvqh9W_lightboxZoomLevel",
6366
+ "ecommerceAsset": "Yvqh9W_ecommerceAsset",
6367
+ "lightboxCaption": "Yvqh9W_lightboxCaption",
6368
+ "galleryTagFilterList": "Yvqh9W_galleryTagFilterList",
6369
+ "topNav": "Yvqh9W_topNav",
6370
+ "comparisonGrid": "Yvqh9W_comparisonGrid",
6371
+ "history": "Yvqh9W_history",
6372
+ "taskTrayChevron": "Yvqh9W_taskTrayChevron",
6373
+ "ecommerceActionChip": "Yvqh9W_ecommerceActionChip",
5885
6374
  "historyHeader": "Yvqh9W_historyHeader",
5886
6375
  "uploadHint": "Yvqh9W_uploadHint",
5887
- "configToggle": "Yvqh9W_configToggle",
5888
- "generation": "Yvqh9W_generation",
5889
- "taskStatus": "Yvqh9W_taskStatus",
5890
- "comparisonGrid": "Yvqh9W_comparisonGrid",
5891
- "lightboxActions": "Yvqh9W_lightboxActions",
5892
- "lightboxClose": "Yvqh9W_lightboxClose",
5893
- "galleryCard": "Yvqh9W_galleryCard",
5894
- "referenceActions": "Yvqh9W_referenceActions",
5895
- "galleryAvatar": "Yvqh9W_galleryAvatar",
5896
- "taskRows": "Yvqh9W_taskRows",
5897
- "galleryCardInfo": "Yvqh9W_galleryCardInfo",
5898
- "lightboxZoomLevel": "Yvqh9W_lightboxZoomLevel",
5899
- "canvasHistoryTag": "Yvqh9W_canvasHistoryTag",
5900
- "imageCaption": "Yvqh9W_imageCaption",
5901
- "topNavDivider": "Yvqh9W_topNavDivider",
5902
- "compareControl": "Yvqh9W_compareControl",
5903
- "canvasError": "Yvqh9W_canvasError",
5904
- "ecommerceResultsHeader": "Yvqh9W_ecommerceResultsHeader",
5905
- "modelMenuItem": "Yvqh9W_modelMenuItem",
5906
- "lightboxCopy": "Yvqh9W_lightboxCopy",
5907
- "updateActions": "Yvqh9W_updateActions",
5908
- "taskTrayHeader": "Yvqh9W_taskTrayHeader",
5909
- "sidebarHistoryHost": "Yvqh9W_sidebarHistoryHost",
6376
+ "modelMenu": "Yvqh9W_modelMenu",
6377
+ "galleryViewToggle": "Yvqh9W_galleryViewToggle",
6378
+ "ecommerceRefRow": "Yvqh9W_ecommerceRefRow",
6379
+ "paramGroup": "Yvqh9W_paramGroup",
6380
+ "entryIcon": "Yvqh9W_entryIcon",
6381
+ "sessionTabIcon": "Yvqh9W_sessionTabIcon",
6382
+ "historyTitle": "Yvqh9W_historyTitle",
6383
+ "ecommerceSlotCard": "Yvqh9W_ecommerceSlotCard",
6384
+ "ecommerceStructureGrid": "Yvqh9W_ecommerceStructureGrid",
6385
+ "historyHeaderActions": "Yvqh9W_historyHeaderActions",
5910
6386
  "ecommerceUploadHero": "Yvqh9W_ecommerceUploadHero",
5911
- "uploadBox": "Yvqh9W_uploadBox",
6387
+ "previewBadge": "Yvqh9W_previewBadge",
6388
+ "templatesButton": "Yvqh9W_templatesButton",
6389
+ "canvasMeta": "Yvqh9W_canvasMeta",
6390
+ "canvasHistoryTag": "Yvqh9W_canvasHistoryTag",
6391
+ "lightboxCaptionRow": "Yvqh9W_lightboxCaptionRow",
6392
+ "historyThumbPlaceholder": "Yvqh9W_historyThumbPlaceholder",
6393
+ "ecommerceTaskCard": "Yvqh9W_ecommerceTaskCard",
6394
+ "lightboxMeta": "Yvqh9W_lightboxMeta",
6395
+ "panelHeader": "Yvqh9W_panelHeader",
6396
+ "panelHeading": "Yvqh9W_panelHeading",
6397
+ "taskPrompt": "Yvqh9W_taskPrompt",
5912
6398
  "ecommerceAdvancedBody": "Yvqh9W_ecommerceAdvancedBody",
6399
+ "updateRelease": "Yvqh9W_updateRelease",
6400
+ "promptFooter": "Yvqh9W_promptFooter",
6401
+ "galleryFilter": "Yvqh9W_galleryFilter",
5913
6402
  "connectionStatus": "Yvqh9W_connectionStatus",
5914
- "historyActions": "Yvqh9W_historyActions",
6403
+ "historySearch": "Yvqh9W_historySearch",
6404
+ "ecommerceResults": "Yvqh9W_ecommerceResults",
6405
+ "hiddenFile": "Yvqh9W_hiddenFile",
6406
+ "galleryHeading": "Yvqh9W_galleryHeading",
6407
+ "gallerySelectionClear": "Yvqh9W_gallerySelectionClear",
6408
+ "galleryWorkspace": "Yvqh9W_galleryWorkspace",
6409
+ "galleryImage": "Yvqh9W_galleryImage",
6410
+ "galleryCardAction": "Yvqh9W_galleryCardAction",
6411
+ "galleryAvatar": "Yvqh9W_galleryAvatar",
5915
6412
  "ecommerceWorkspace": "Yvqh9W_ecommerceWorkspace",
5916
- "modelLabel": "Yvqh9W_modelLabel",
5917
- "lightboxCaption": "Yvqh9W_lightboxCaption",
5918
- "dshImageGenToastIn": "Yvqh9W_dshImageGenToastIn",
5919
- "ecommerceFooterHint": "Yvqh9W_ecommerceFooterHint",
5920
- "galleryToolbar": "Yvqh9W_galleryToolbar",
5921
- "historyThumb": "Yvqh9W_historyThumb",
5922
- "galleryMasonry": "Yvqh9W_galleryMasonry",
5923
- "galleryBulkButton": "Yvqh9W_galleryBulkButton",
5924
- "taskRow": "Yvqh9W_taskRow",
5925
- "historyItem": "Yvqh9W_historyItem",
5926
- "paramLabel": "Yvqh9W_paramLabel",
5927
- "lightbox": "Yvqh9W_lightbox",
5928
- "configHeader": "Yvqh9W_configHeader",
5929
6413
  "panel": "Yvqh9W_panel",
5930
- "studio": "Yvqh9W_studio",
5931
- "canvas": "Yvqh9W_canvas",
5932
- "taskTrayClose": "Yvqh9W_taskTrayClose",
5933
- "ecommerceSlotCard": "Yvqh9W_ecommerceSlotCard",
5934
- "hiddenFile": "Yvqh9W_hiddenFile",
5935
- "sessionTab": "Yvqh9W_sessionTab",
5936
- "paramHint": "Yvqh9W_paramHint",
5937
- "reference": "Yvqh9W_reference",
5938
- "modelMenuList": "Yvqh9W_modelMenuList",
5939
- "galleryRatioList": "Yvqh9W_galleryRatioList",
5940
- "topNav": "Yvqh9W_topNav",
5941
- "galleryTagFilterList": "Yvqh9W_galleryTagFilterList",
5942
- "card": "Yvqh9W_card",
5943
- "ecommerceSectionHint": "Yvqh9W_ecommerceSectionHint",
5944
- "historyHeaderActions": "Yvqh9W_historyHeaderActions",
5945
- "ecommerceRefRow": "Yvqh9W_ecommerceRefRow",
5946
- "historyMeta": "Yvqh9W_historyMeta",
5947
- "templatesButton": "Yvqh9W_templatesButton",
5948
- "lightboxStage": "Yvqh9W_lightboxStage",
5949
- "ecommerceAsset": "Yvqh9W_ecommerceAsset",
5950
- "lightboxImage": "Yvqh9W_lightboxImage",
5951
- "topNavItem": "Yvqh9W_topNavItem",
5952
- "configScroll": "Yvqh9W_configScroll",
6414
+ "conversationAdd": "Yvqh9W_conversationAdd",
6415
+ "galleryToolbarActions": "Yvqh9W_galleryToolbarActions",
6416
+ "panelHeaderActions": "Yvqh9W_panelHeaderActions",
6417
+ "galleryCard": "Yvqh9W_galleryCard",
6418
+ "compareToggle": "Yvqh9W_compareToggle",
6419
+ "galleryCardInfo": "Yvqh9W_galleryCardInfo",
6420
+ "taskTrayHeader": "Yvqh9W_taskTrayHeader",
6421
+ "lightboxEdit": "Yvqh9W_lightboxEdit",
5953
6422
  "historyEmpty": "Yvqh9W_historyEmpty",
5954
- "lightboxTools": "Yvqh9W_lightboxTools",
5955
- "galleryTagFilter": "Yvqh9W_galleryTagFilter",
5956
- "gallerySelectionBar": "Yvqh9W_gallerySelectionBar",
6423
+ "updateText": "Yvqh9W_updateText",
6424
+ "comparisonFullscreenGrid": "Yvqh9W_comparisonFullscreenGrid",
6425
+ "modelMenuItem": "Yvqh9W_modelMenuItem",
6426
+ "historyNew": "Yvqh9W_historyNew",
6427
+ "grid": "Yvqh9W_grid",
5957
6428
  "historyPrompt": "Yvqh9W_historyPrompt",
5958
- "ecommerceSection": "Yvqh9W_ecommerceSection",
5959
- "referenceImage": "Yvqh9W_referenceImage",
5960
- "galleryToolbarActions": "Yvqh9W_galleryToolbarActions",
5961
- "historySearch": "Yvqh9W_historySearch",
5962
- "ecommerceAssets": "Yvqh9W_ecommerceAssets",
5963
- "ecommerceResultsEmpty": "Yvqh9W_ecommerceResultsEmpty",
5964
- "sessionTabLabel": "Yvqh9W_sessionTabLabel",
5965
- "galleryFilter": "Yvqh9W_galleryFilter",
5966
- "historyThumbPlaceholder": "Yvqh9W_historyThumbPlaceholder",
5967
6429
  "lightboxScaleFrame": "Yvqh9W_lightboxScaleFrame",
5968
- "galleryCount": "Yvqh9W_galleryCount",
5969
- "spinner": "Yvqh9W_spinner",
5970
- "gallerySort": "Yvqh9W_gallerySort",
5971
- "history": "Yvqh9W_history",
5972
- "previewBadge": "Yvqh9W_previewBadge",
5973
- "paramGroup": "Yvqh9W_paramGroup",
5974
- "ecommerceSlotCount": "Yvqh9W_ecommerceSlotCount",
5975
- "ecommerceGroups": "Yvqh9W_ecommerceGroups",
5976
- "grid": "Yvqh9W_grid",
5977
- "connectionDot": "Yvqh9W_connectionDot",
5978
- "updateRelease": "Yvqh9W_updateRelease",
6430
+ "conversationToast": "Yvqh9W_conversationToast",
6431
+ "galleryRemove": "Yvqh9W_galleryRemove",
6432
+ "modelSelect": "Yvqh9W_modelSelect",
6433
+ "optionGrid": "Yvqh9W_optionGrid",
6434
+ "canvasStateHint": "Yvqh9W_canvasStateHint",
6435
+ "lightboxImage": "Yvqh9W_lightboxImage",
6436
+ "ecommerceParamGrid": "Yvqh9W_ecommerceParamGrid",
6437
+ "configResizer": "Yvqh9W_configResizer",
5979
6438
  "comparisonBoard": "Yvqh9W_comparisonBoard",
5980
- "gallerySelect": "Yvqh9W_gallerySelect",
5981
- "galleryCardFooter": "Yvqh9W_galleryCardFooter",
6439
+ "lightbox": "Yvqh9W_lightbox",
6440
+ "ecommerceAssets": "Yvqh9W_ecommerceAssets",
6441
+ "galleryFilterDivider": "Yvqh9W_galleryFilterDivider",
6442
+ "galleryBadge": "Yvqh9W_galleryBadge",
6443
+ "ecommerceSlotCount": "Yvqh9W_ecommerceSlotCount",
5982
6444
  "galleryTags": "Yvqh9W_galleryTags",
5983
- "historyFilters": "Yvqh9W_historyFilters",
5984
- "sessionTabs": "Yvqh9W_sessionTabs",
5985
- "ecommercePlanBack": "Yvqh9W_ecommercePlanBack",
5986
- "historyMain": "Yvqh9W_historyMain",
5987
- "galleryRatio": "Yvqh9W_galleryRatio",
5988
- "galleryTagEdit": "Yvqh9W_galleryTagEdit",
5989
- "galleryCardActions": "Yvqh9W_galleryCardActions",
5990
- "ecommerceTaskCard": "Yvqh9W_ecommerceTaskCard",
5991
- "enhanceButton": "Yvqh9W_enhanceButton",
5992
- "taskTray": "Yvqh9W_taskTray",
5993
- "modePill": "Yvqh9W_modePill",
5994
- "configGuide": "Yvqh9W_configGuide",
5995
- "ecommerceGroupGrid": "Yvqh9W_ecommerceGroupGrid",
5996
- "ecommercePlanMini": "Yvqh9W_ecommercePlanMini",
5997
- "gallerySelectMode": "Yvqh9W_gallerySelectMode",
5998
- "galleryImage": "Yvqh9W_galleryImage",
5999
- "canvasBody": "Yvqh9W_canvasBody",
6000
- "ecommerceParamGrid": "Yvqh9W_ecommerceParamGrid",
6001
- "lightboxMeta": "Yvqh9W_lightboxMeta",
6002
- "ecommerceTaskState": "Yvqh9W_ecommerceTaskState",
6003
- "config": "Yvqh9W_config",
6004
- "optionPill": "Yvqh9W_optionPill",
6005
- "dshImageGenSpin": "Yvqh9W_dshImageGenSpin",
6006
- "gallerySelectionClear": "Yvqh9W_gallerySelectionClear",
6007
- "ecommerceResultBadge": "Yvqh9W_ecommerceResultBadge",
6008
- "taskTrayChevron": "Yvqh9W_taskTrayChevron",
6009
- "galleryFilterNote": "Yvqh9W_galleryFilterNote",
6010
- "updateBanner": "Yvqh9W_updateBanner",
6011
- "comparisonImageButton": "Yvqh9W_comparisonImageButton",
6012
- "ecommerceAdvancedChevron": "Yvqh9W_ecommerceAdvancedChevron",
6013
- "canvasMeta": "Yvqh9W_canvasMeta",
6014
- "promptFooter": "Yvqh9W_promptFooter",
6015
- "lightboxIndex": "Yvqh9W_lightboxIndex",
6016
- "historyIconAction": "Yvqh9W_historyIconAction",
6017
- "promptCount": "Yvqh9W_promptCount",
6018
- "galleryFilterHeading": "Yvqh9W_galleryFilterHeading",
6019
- "footer": "Yvqh9W_footer",
6020
- "conversationAdd": "Yvqh9W_conversationAdd",
6021
- "panelHeading": "Yvqh9W_panelHeading",
6022
- "lightboxDownload": "Yvqh9W_lightboxDownload",
6445
+ "lightboxClose": "Yvqh9W_lightboxClose",
6446
+ "configToggle": "Yvqh9W_configToggle",
6023
6447
  "generateInner": "Yvqh9W_generateInner",
6024
- "compareModelChoices": "Yvqh9W_compareModelChoices",
6025
- "galleryBadge": "Yvqh9W_galleryBadge",
6026
- "entryLabel": "Yvqh9W_entryLabel",
6027
- "ecommerceField": "Yvqh9W_ecommerceField",
6028
- "lightboxNav": "Yvqh9W_lightboxNav",
6029
- "galleryClear": "Yvqh9W_galleryClear",
6030
- "ecommerceFieldLabel": "Yvqh9W_ecommerceFieldLabel",
6031
- "ecommercePlanNote": "Yvqh9W_ecommercePlanNote",
6032
- "lightboxEdit": "Yvqh9W_lightboxEdit",
6033
- "githubLink": "Yvqh9W_githubLink",
6448
+ "zoomHint": "Yvqh9W_zoomHint",
6449
+ "panelTitle": "Yvqh9W_panelTitle",
6450
+ "topNavDivider": "Yvqh9W_topNavDivider",
6034
6451
  "taskTrayToggle": "Yvqh9W_taskTrayToggle",
6035
- "ecommerceAssetAdd": "Yvqh9W_ecommerceAssetAdd",
6036
- "modeRow": "Yvqh9W_modeRow",
6037
- "optionGrid": "Yvqh9W_optionGrid",
6038
- "historyList": "Yvqh9W_historyList",
6039
- "canvasStateHint": "Yvqh9W_canvasStateHint",
6040
- "ecommerceGroup": "Yvqh9W_ecommerceGroup",
6041
- "historyTitle": "Yvqh9W_historyTitle",
6042
- "sessionTabIcon": "Yvqh9W_sessionTabIcon",
6043
- "prompt": "Yvqh9W_prompt",
6044
- "modelMenu": "Yvqh9W_modelMenu",
6045
- "canvasEmptyIcon": "Yvqh9W_canvasEmptyIcon",
6452
+ "referenceImage": "Yvqh9W_referenceImage",
6453
+ "promptCount": "Yvqh9W_promptCount",
6454
+ "galleryAdd": "Yvqh9W_galleryAdd",
6455
+ "entry": "Yvqh9W_entry",
6456
+ "ecommerceResultsEmpty": "Yvqh9W_ecommerceResultsEmpty",
6457
+ "lightboxStage": "Yvqh9W_lightboxStage",
6458
+ "canvasError": "Yvqh9W_canvasError",
6046
6459
  "galleryFilters": "Yvqh9W_galleryFilters",
6047
- "galleryHeading": "Yvqh9W_galleryHeading",
6048
- "zoomHint": "Yvqh9W_zoomHint",
6049
- "ecommercePrimaryAction": "Yvqh9W_ecommercePrimaryAction",
6050
- "galleryTagInput": "Yvqh9W_galleryTagInput",
6051
- "taskPrompt": "Yvqh9W_taskPrompt",
6052
- "ecommerceAdvancedToggle": "Yvqh9W_ecommerceAdvancedToggle",
6053
- "ecommerceActionChip": "Yvqh9W_ecommerceActionChip",
6054
- "ecommerceStructureGrid": "Yvqh9W_ecommerceStructureGrid",
6055
- "ecommercePlanWarn": "Yvqh9W_ecommercePlanWarn",
6056
- "panelHeader": "Yvqh9W_panelHeader",
6057
- "chatResizer": "Yvqh9W_chatResizer",
6058
- "optionRow": "Yvqh9W_optionRow",
6059
6460
  "imageCard": "Yvqh9W_imageCard",
6060
- "panelTitle": "Yvqh9W_panelTitle",
6061
- "canvasStateTitle": "Yvqh9W_canvasStateTitle",
6062
- "download": "Yvqh9W_download",
6063
- "lightboxFigure": "Yvqh9W_lightboxFigure",
6064
- "updateText": "Yvqh9W_updateText",
6065
- "ecommerceResults": "Yvqh9W_ecommerceResults",
6066
- "gallerySearch": "Yvqh9W_gallerySearch",
6461
+ "canvasBody": "Yvqh9W_canvasBody",
6462
+ "lightboxTools": "Yvqh9W_lightboxTools",
6463
+ "historyThumb": "Yvqh9W_historyThumb",
6464
+ "galleryFilterHeading": "Yvqh9W_galleryFilterHeading",
6465
+ "galleryBulkButton": "Yvqh9W_galleryBulkButton",
6466
+ "canvasEmptyIcon": "Yvqh9W_canvasEmptyIcon",
6467
+ "modelWrap": "Yvqh9W_modelWrap",
6468
+ "ecommerceTaskActions": "Yvqh9W_ecommerceTaskActions",
6469
+ "galleryToolbar": "Yvqh9W_galleryToolbar",
6470
+ "historyIconAction": "Yvqh9W_historyIconAction",
6471
+ "ecommerceResultsHeader": "Yvqh9W_ecommerceResultsHeader",
6472
+ "gallerySelectionBar": "Yvqh9W_gallerySelectionBar",
6473
+ "ecommercePlanMini": "Yvqh9W_ecommercePlanMini",
6474
+ "ecommerceGroup": "Yvqh9W_ecommerceGroup",
6475
+ "taskStatus": "Yvqh9W_taskStatus",
6476
+ "connectionDot": "Yvqh9W_connectionDot",
6477
+ "ecommerceFooterHint": "Yvqh9W_ecommerceFooterHint",
6478
+ "generation": "Yvqh9W_generation",
6479
+ "taskTray": "Yvqh9W_taskTray",
6480
+ "galleryToast": "Yvqh9W_galleryToast",
6481
+ "galleryMasonry": "Yvqh9W_galleryMasonry",
6482
+ "ecommerceAdvancedToggle": "Yvqh9W_ecommerceAdvancedToggle",
6483
+ "galleryImageButton": "Yvqh9W_galleryImageButton",
6067
6484
  "historyInfo": "Yvqh9W_historyInfo",
6068
- "configResizer": "Yvqh9W_configResizer",
6069
- "lightboxTool": "Yvqh9W_lightboxTool",
6070
- "conversationToast": "Yvqh9W_conversationToast",
6071
- "galleryFilterDivider": "Yvqh9W_galleryFilterDivider",
6072
- "galleryWorkspace": "Yvqh9W_galleryWorkspace",
6485
+ "ecommerceAssetAdd": "Yvqh9W_ecommerceAssetAdd",
6486
+ "canvas": "Yvqh9W_canvas",
6487
+ "historyMeta": "Yvqh9W_historyMeta",
6488
+ "ecommercePlanBack": "Yvqh9W_ecommercePlanBack",
6489
+ "taskRow": "Yvqh9W_taskRow",
6490
+ "ecommerceTaskState": "Yvqh9W_ecommerceTaskState",
6491
+ "canvasStateTitle": "Yvqh9W_canvasStateTitle",
6492
+ "prompt": "Yvqh9W_prompt",
6493
+ "bigSpinner": "Yvqh9W_bigSpinner",
6494
+ "dshImageGenToastIn": "Yvqh9W_dshImageGenToastIn",
6495
+ "view": "Yvqh9W_view",
6073
6496
  "historyClear": "Yvqh9W_historyClear",
6497
+ "ecommerceSection": "Yvqh9W_ecommerceSection",
6498
+ "topNavItem": "Yvqh9W_topNavItem",
6499
+ "lightboxIndex": "Yvqh9W_lightboxIndex",
6500
+ "galleryFilterCount": "Yvqh9W_galleryFilterCount",
6501
+ "configHeader": "Yvqh9W_configHeader",
6502
+ "ecommerceField": "Yvqh9W_ecommerceField",
6503
+ "sidebarHistoryHost": "Yvqh9W_sidebarHistoryHost",
6504
+ "githubLink": "Yvqh9W_githubLink",
6505
+ "ecommercePlanNote": "Yvqh9W_ecommercePlanNote",
6506
+ "enhanceButton": "Yvqh9W_enhanceButton",
6507
+ "entryLabel": "Yvqh9W_entryLabel",
6508
+ "historyItem": "Yvqh9W_historyItem",
6509
+ "modeRow": "Yvqh9W_modeRow",
6510
+ "ecommerceAdvancedChevron": "Yvqh9W_ecommerceAdvancedChevron",
6074
6511
  "generateButton": "Yvqh9W_generateButton",
6075
- "galleryViewToggle": "Yvqh9W_galleryViewToggle",
6076
- "compareToggle": "Yvqh9W_compareToggle",
6077
- "ecommerceResultsActions": "Yvqh9W_ecommerceResultsActions",
6078
- "uploadIcon": "Yvqh9W_uploadIcon",
6079
- "comparisonFullscreen": "Yvqh9W_comparisonFullscreen",
6080
- "galleryImageButton": "Yvqh9W_galleryImageButton",
6081
- "galleryRemove": "Yvqh9W_galleryRemove",
6082
- "modelWrap": "Yvqh9W_modelWrap",
6512
+ "lightboxCopy": "Yvqh9W_lightboxCopy",
6513
+ "optionRow": "Yvqh9W_optionRow",
6514
+ "ecommerceResultBadge": "Yvqh9W_ecommerceResultBadge",
6515
+ "lightboxDownload": "Yvqh9W_lightboxDownload",
6516
+ "ecommerceFooterBody": "Yvqh9W_ecommerceFooterBody",
6517
+ "reference": "Yvqh9W_reference",
6518
+ "lightboxActions": "Yvqh9W_lightboxActions",
6519
+ "galleryRatioList": "Yvqh9W_galleryRatioList",
6520
+ "image": "Yvqh9W_image",
6521
+ "sessionTabs": "Yvqh9W_sessionTabs",
6522
+ "historyMain": "Yvqh9W_historyMain",
6523
+ "sessionTabLabel": "Yvqh9W_sessionTabLabel",
6524
+ "galleryTagInput": "Yvqh9W_galleryTagInput",
6525
+ "card": "Yvqh9W_card",
6526
+ "imageCaption": "Yvqh9W_imageCaption",
6527
+ "paramHint": "Yvqh9W_paramHint",
6528
+ "ecommerceSectionHint": "Yvqh9W_ecommerceSectionHint",
6529
+ "galleryFilterNote": "Yvqh9W_galleryFilterNote",
6530
+ "compareControl": "Yvqh9W_compareControl",
6531
+ "lightboxNav": "Yvqh9W_lightboxNav",
6532
+ "taskTrayClose": "Yvqh9W_taskTrayClose",
6533
+ "historyActions": "Yvqh9W_historyActions",
6083
6534
  "configGuideBody": "Yvqh9W_configGuideBody",
6084
- "galleryToast": "Yvqh9W_galleryToast",
6085
- "galleryCardAction": "Yvqh9W_galleryCardAction",
6086
- "image": "Yvqh9W_image",
6087
- "panelHeaderActions": "Yvqh9W_panelHeaderActions",
6088
- "modelSelect": "Yvqh9W_modelSelect",
6535
+ "updateActions": "Yvqh9W_updateActions",
6536
+ "uploadBox": "Yvqh9W_uploadBox",
6537
+ "galleryCardFooter": "Yvqh9W_galleryCardFooter",
6538
+ "ecommercePrimaryAction": "Yvqh9W_ecommercePrimaryAction",
6539
+ "uploadIcon": "Yvqh9W_uploadIcon",
6540
+ "paramLabel": "Yvqh9W_paramLabel",
6089
6541
  "canvasState": "Yvqh9W_canvasState",
6090
- "galleryAdd": "Yvqh9W_galleryAdd",
6091
- "historyNew": "Yvqh9W_historyNew",
6092
- "comparisonFullscreenGrid": "Yvqh9W_comparisonFullscreenGrid",
6093
- "galleryTagEditor": "Yvqh9W_galleryTagEditor",
6094
- "taskTrayCount": "Yvqh9W_taskTrayCount",
6095
- "view": "Yvqh9W_view",
6096
- "ecommercePlanList": "Yvqh9W_ecommercePlanList",
6097
- "entry": "Yvqh9W_entry",
6098
- "entryIcon": "Yvqh9W_entryIcon",
6099
- "ecommerceTaskActions": "Yvqh9W_ecommerceTaskActions",
6542
+ "dshImageGenSpin": "Yvqh9W_dshImageGenSpin",
6543
+ "ecommerceResultsActions": "Yvqh9W_ecommerceResultsActions",
6544
+ "ecommercePlanWarn": "Yvqh9W_ecommercePlanWarn",
6545
+ "chatResizer": "Yvqh9W_chatResizer",
6100
6546
  "chatToggle": "Yvqh9W_chatToggle",
6101
- "bigSpinner": "Yvqh9W_bigSpinner",
6102
- "lightboxCaptionRow": "Yvqh9W_lightboxCaptionRow",
6103
- "galleryFilterCount": "Yvqh9W_galleryFilterCount",
6104
- "ecommerceFooterBody": "Yvqh9W_ecommerceFooterBody"
6547
+ "galleryCount": "Yvqh9W_galleryCount",
6548
+ "config": "Yvqh9W_config",
6549
+ "modePill": "Yvqh9W_modePill",
6550
+ "gallerySelectMode": "Yvqh9W_gallerySelectMode",
6551
+ "gallerySort": "Yvqh9W_gallerySort",
6552
+ "configGuide": "Yvqh9W_configGuide",
6553
+ "ecommerceGroups": "Yvqh9W_ecommerceGroups",
6554
+ "taskRows": "Yvqh9W_taskRows",
6555
+ "galleryClear": "Yvqh9W_galleryClear",
6556
+ "comparisonImageButton": "Yvqh9W_comparisonImageButton",
6557
+ "compareModelChoices": "Yvqh9W_compareModelChoices",
6558
+ "comparisonFullscreen": "Yvqh9W_comparisonFullscreen",
6559
+ "ecommercePlanList": "Yvqh9W_ecommercePlanList",
6560
+ "galleryCardActions": "Yvqh9W_galleryCardActions",
6561
+ "lightboxTool": "Yvqh9W_lightboxTool",
6562
+ "galleryTagEdit": "Yvqh9W_galleryTagEdit",
6563
+ "studio": "Yvqh9W_studio",
6564
+ "ecommerceGroupGrid": "Yvqh9W_ecommerceGroupGrid",
6565
+ "galleryRatio": "Yvqh9W_galleryRatio",
6566
+ "historyFilters": "Yvqh9W_historyFilters",
6567
+ "gallerySearch": "Yvqh9W_gallerySearch",
6568
+ "configScroll": "Yvqh9W_configScroll",
6569
+ "optionPill": "Yvqh9W_optionPill",
6570
+ "lightboxFigure": "Yvqh9W_lightboxFigure",
6571
+ "referenceActions": "Yvqh9W_referenceActions",
6572
+ "taskTrayCount": "Yvqh9W_taskTrayCount",
6573
+ "updateBanner": "Yvqh9W_updateBanner",
6574
+ "footer": "Yvqh9W_footer",
6575
+ "modelMenuList": "Yvqh9W_modelMenuList",
6576
+ "galleryTagFilter": "Yvqh9W_galleryTagFilter",
6577
+ "galleryTagEditor": "Yvqh9W_galleryTagEditor",
6578
+ "ecommerceFieldLabel": "Yvqh9W_ecommerceFieldLabel",
6579
+ "historyList": "Yvqh9W_historyList",
6580
+ "gallerySelect": "Yvqh9W_gallerySelect",
6581
+ "modelLabel": "Yvqh9W_modelLabel",
6582
+ "download": "Yvqh9W_download"
6105
6583
  };
6106
6584
  //#endregion
6107
6585
  //#region src/client/ImageGenPanel.tsx
@@ -6595,6 +7073,7 @@ window.__ModuleLoader__.load({
6595
7073
  const [galleryAdding, setGalleryAdding] = (0, react.useState)(false);
6596
7074
  const [galleryMessage, setGalleryMessage] = (0, react.useState)(null);
6597
7075
  const [galleryFilter, setGalleryFilter] = (0, react.useState)("all");
7076
+ const galleryUploadRef = (0, react.useRef)(null);
6598
7077
  const [galleryRatio, setGalleryRatio] = (0, react.useState)("all");
6599
7078
  const [galleryTagFilter, setGalleryTagFilter] = (0, react.useState)(null);
6600
7079
  const [galleryView, setGalleryView] = (0, react.useState)("masonry");
@@ -7302,6 +7781,50 @@ window.__ModuleLoader__.load({
7302
7781
  setGalleryAdding(false);
7303
7782
  }
7304
7783
  };
7784
+ /** Save local image files into the asset library so the canvas and studio
7785
+ * can reuse them later; entries dedupe by content host-side. */
7786
+ const uploadGalleryFiles = async (files) => {
7787
+ if (files.length === 0 || galleryAdding) return;
7788
+ setGalleryAdding(true);
7789
+ try {
7790
+ let entries;
7791
+ for (const file of files) {
7792
+ const dataUrl = await new Promise((resolve, reject) => {
7793
+ const reader = new FileReader();
7794
+ reader.onload = () => resolve(String(reader.result));
7795
+ reader.onerror = () => reject(new Error(tt("canvas.dropSub")));
7796
+ reader.readAsDataURL(file);
7797
+ });
7798
+ const separator = dataUrl.indexOf(",");
7799
+ entries = (await api.galleryAppend({
7800
+ id: "",
7801
+ createdAt: Date.now(),
7802
+ mode: "text",
7803
+ model: tt("gallery.uploadModel"),
7804
+ prompt: file.name.replace(/\.[a-z0-9]+$/i, ""),
7805
+ size: "auto",
7806
+ quality: "auto",
7807
+ detail: "",
7808
+ n: 1,
7809
+ images: [{
7810
+ b64: separator >= 0 ? dataUrl.slice(separator + 1) : dataUrl,
7811
+ mime: file.type || "image/png"
7812
+ }]
7813
+ })).entries;
7814
+ }
7815
+ if (entries !== void 0) {
7816
+ setGallery(entries);
7817
+ setGalleryMessage(tt("gallery.uploaded"));
7818
+ window.setTimeout(() => {
7819
+ setGalleryMessage(null);
7820
+ }, 2200);
7821
+ }
7822
+ } catch (caught) {
7823
+ setError(errorMessage(caught));
7824
+ } finally {
7825
+ setGalleryAdding(false);
7826
+ }
7827
+ };
7305
7828
  /** Put a generated image into the native conversation composer. */
7306
7829
  const addImageToConversation = async (image, index, actionKey = index) => {
7307
7830
  if (addingToConversation !== null) return;
@@ -7474,7 +7997,9 @@ window.__ModuleLoader__.load({
7474
7997
  anchor.click();
7475
7998
  });
7476
7999
  };
7477
- const generateDisabled = submitting || modeModels.length === 0;
8000
+ const promptLimit = promptCharLimit(modeModels.includes(model) ? model : modeModels[0] ?? "");
8001
+ const promptOverLimit = promptLimit !== null && prompt.trim().length >= promptLimit;
8002
+ const generateDisabled = submitting || modeModels.length === 0 || promptOverLimit;
7478
8003
  const ecommerceSlots = ecommerce.slots.filter((slot) => slot.enabled && slot.count > 0);
7479
8004
  const ecommerceTotal = ecommerceSlots.reduce((total, slot) => total + slot.count, 0);
7480
8005
  const ecommerceGenerateDisabled = submitting || ecommerceGenerating || ecommerceSlots.length === 0 || ecommerce.productName.trim() === "" || ecommerce.language === "custom" && effectiveEcommerceLanguage(ecommerce) === "";
@@ -7839,6 +8364,8 @@ window.__ModuleLoader__.load({
7839
8364
  })
7840
8365
  ]
7841
8366
  });
8367
+ const isGallery = workspace === "normal" && tab === "gallery";
8368
+ const isGeneration = workspace === "normal" && tab !== "gallery";
7842
8369
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
7843
8370
  className: panel_module_css_default.panel,
7844
8371
  children: [
@@ -8021,7 +8548,7 @@ window.__ModuleLoader__.load({
8021
8548
  })
8022
8549
  })
8023
8550
  }),
8024
- workspace === "normal" && tab === "gallery" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8551
+ isGallery ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8025
8552
  className: panel_module_css_default.galleryFilters,
8026
8553
  children: [
8027
8554
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -8477,7 +9004,7 @@ window.__ModuleLoader__.load({
8477
9004
  })
8478
9005
  ]
8479
9006
  }) : null,
8480
- tab === "edit" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
9007
+ isGeneration && tab === "edit" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
8481
9008
  className: panel_module_css_default.card,
8482
9009
  children: [refImage === null ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
8483
9010
  type: "button",
@@ -8553,7 +9080,7 @@ window.__ModuleLoader__.load({
8553
9080
  }
8554
9081
  })]
8555
9082
  }) : null,
8556
- workspace === "normal" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
9083
+ isGeneration ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
8557
9084
  className: panel_module_css_default.card,
8558
9085
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
8559
9086
  className: panel_module_css_default.prompt,
@@ -8597,7 +9124,12 @@ window.__ModuleLoader__.load({
8597
9124
  }),
8598
9125
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8599
9126
  className: panel_module_css_default.promptCount,
8600
- children: tt("prompt.count", { count: prompt.length })
9127
+ "data-over": promptOverLimit ? "" : void 0,
9128
+ title: promptOverLimit ? tt("prompt.overLimit", { limit: promptLimit ?? 0 }) : void 0,
9129
+ children: promptLimit === null ? tt("prompt.count", { count: prompt.length }) : tt("prompt.countLimit", {
9130
+ count: prompt.length,
9131
+ limit: promptLimit
9132
+ })
8601
9133
  })
8602
9134
  ]
8603
9135
  })]
@@ -8742,7 +9274,7 @@ window.__ModuleLoader__.load({
8742
9274
  children: tt("ecommerce.preview")
8743
9275
  })] })
8744
9276
  }) : null,
8745
- workspace === "ecommerce" ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
9277
+ isGeneration ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
8746
9278
  className: panel_module_css_default.modelWrap,
8747
9279
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
8748
9280
  className: panel_module_css_default.modelLabel,
@@ -8790,8 +9322,8 @@ window.__ModuleLoader__.load({
8790
9322
  }, option))
8791
9323
  }) : null]
8792
9324
  })]
8793
- }),
8794
- workspace !== "ecommerce" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9325
+ }) : null,
9326
+ isGeneration ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8795
9327
  className: panel_module_css_default.compareControl,
8796
9328
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
8797
9329
  className: panel_module_css_default.compareToggle,
@@ -8815,7 +9347,7 @@ window.__ModuleLoader__.load({
8815
9347
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: option })] }, option))
8816
9348
  }) : null]
8817
9349
  }) : null,
8818
- workspace !== "ecommerce" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
9350
+ isGeneration ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
8819
9351
  variant: "primary",
8820
9352
  size: "md",
8821
9353
  className: panel_module_css_default.generateButton,
@@ -8850,9 +9382,9 @@ window.__ModuleLoader__.load({
8850
9382
  }) : null,
8851
9383
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
8852
9384
  className: panel_module_css_default.canvas,
8853
- "data-gallery": workspace === "normal" && tab === "gallery" ? "true" : void 0,
9385
+ "data-gallery": isGallery ? "true" : void 0,
8854
9386
  children: [
8855
- workspace === "normal" && tab === "gallery" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9387
+ isGallery ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
8856
9388
  className: panel_module_css_default.galleryWorkspace,
8857
9389
  children: [
8858
9390
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", {
@@ -8875,6 +9407,26 @@ window.__ModuleLoader__.load({
8875
9407
  placeholder: tt("gallery.search"),
8876
9408
  "aria-label": tt("gallery.search")
8877
9409
  }),
9410
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9411
+ type: "button",
9412
+ className: panel_module_css_default.gallerySelectMode,
9413
+ disabled: galleryAdding,
9414
+ title: tt("gallery.uploadHint"),
9415
+ onClick: () => galleryUploadRef.current?.click(),
9416
+ children: galleryAdding ? "…" : tt("gallery.upload")
9417
+ }),
9418
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9419
+ ref: galleryUploadRef,
9420
+ type: "file",
9421
+ accept: "image/png,image/jpeg,image/webp,image/gif",
9422
+ multiple: true,
9423
+ hidden: true,
9424
+ onChange: (event) => {
9425
+ const files = [...event.target.files ?? []];
9426
+ event.target.value = "";
9427
+ if (files.length > 0) uploadGalleryFiles(files);
9428
+ }
9429
+ }),
8878
9430
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
8879
9431
  type: "button",
8880
9432
  className: panel_module_css_default.gallerySelectMode,
@@ -9305,7 +9857,7 @@ window.__ModuleLoader__.load({
9305
9857
  }, group.label))
9306
9858
  })]
9307
9859
  }) : null,
9308
- (workspace === "ecommerce" || tab !== "gallery") && tasks.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
9860
+ !isGallery && tasks.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
9309
9861
  className: panel_module_css_default.taskTray,
9310
9862
  "data-open": taskTrayOpen ? "true" : "false",
9311
9863
  "aria-label": tt("tasks.title"),
@@ -9406,7 +9958,7 @@ window.__ModuleLoader__.load({
9406
9958
  })
9407
9959
  })]
9408
9960
  }) : null,
9409
- generating && comparison === null && workspace !== "ecommerce" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9961
+ generating && comparison === null && isGeneration ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9410
9962
  className: panel_module_css_default.canvasState,
9411
9963
  "data-generation-state": activeTask?.status ?? "submitting",
9412
9964
  role: "status",
@@ -9427,14 +9979,14 @@ window.__ModuleLoader__.load({
9427
9979
  role: "alert",
9428
9980
  children: tt("canvas.error", { error })
9429
9981
  }) : null,
9430
- !generating && !error && images.length === 0 && workspace !== "ecommerce" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InspirationGallery, {
9982
+ isGeneration && !generating && !error && images.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InspirationGallery, {
9431
9983
  api,
9432
9984
  onUse: (text) => {
9433
9985
  setPrompt(text);
9434
9986
  setError(null);
9435
9987
  }
9436
9988
  }) : null,
9437
- !generating && images.length > 0 && workspace !== "ecommerce" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9989
+ isGeneration && !generating && images.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9438
9990
  className: panel_module_css_default.canvasBody,
9439
9991
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9440
9992
  className: panel_module_css_default.canvasMeta,
@@ -10734,97 +11286,97 @@ window.__ModuleLoader__.load({
10734
11286
  document.head.appendChild(tag);
10735
11287
  }
10736
11288
  var settings_card_module_css_default = {
10737
- "presetList": "i1cc5G_presetList",
10738
- "versionLabel": "i1cc5G_versionLabel",
10739
- "badge": "i1cc5G_badge",
10740
- "textarea": "i1cc5G_textarea",
10741
- "editorTools": "i1cc5G_editorTools",
10742
- "modelArrow": "i1cc5G_modelArrow",
10743
- "invalid": "i1cc5G_invalid",
10744
- "modelCandidateLabel": "i1cc5G_modelCandidateLabel",
10745
11289
  "editorDivider": "i1cc5G_editorDivider",
10746
- "editorHeader": "i1cc5G_editorHeader",
10747
11290
  "channelList": "i1cc5G_channelList",
10748
- "chevron": "i1cc5G_chevron",
10749
- "chevronOpen": "i1cc5G_chevronOpen",
10750
- "presetMeta": "i1cc5G_presetMeta",
10751
- "editorBackdrop": "i1cc5G_editorBackdrop",
11291
+ "badge": "i1cc5G_badge",
11292
+ "name": "i1cc5G_name",
11293
+ "pending": "i1cc5G_pending",
11294
+ "modelRowInputs": "i1cc5G_modelRowInputs",
11295
+ "presetHint": "i1cc5G_presetHint",
10752
11296
  "modelFetchRow": "i1cc5G_modelFetchRow",
10753
- "hint": "i1cc5G_hint",
10754
- "channelAddRow": "i1cc5G_channelAddRow",
10755
- "modelRow": "i1cc5G_modelRow",
10756
- "inlineDisclosure": "i1cc5G_inlineDisclosure",
10757
- "editorFooter": "i1cc5G_editorFooter",
10758
11297
  "channelMain": "i1cc5G_channelMain",
10759
- "channelDotWarn": "i1cc5G_channelDotWarn",
10760
- "header": "i1cc5G_header",
10761
- "modelBadge": "i1cc5G_modelBadge",
10762
- "modelChoices": "i1cc5G_modelChoices",
10763
- "card": "i1cc5G_card",
10764
- "presetInline": "i1cc5G_presetInline",
11298
+ "head": "i1cc5G_head",
11299
+ "invalid": "i1cc5G_invalid",
11300
+ "channelMeta": "i1cc5G_channelMeta",
11301
+ "deleteConfirmText": "i1cc5G_deleteConfirmText",
11302
+ "modelArrow": "i1cc5G_modelArrow",
11303
+ "modelSection": "i1cc5G_modelSection",
11304
+ "modelRow": "i1cc5G_modelRow",
11305
+ "addModel": "i1cc5G_addModel",
11306
+ "modelRowRemove": "i1cc5G_modelRowRemove",
11307
+ "presetName": "i1cc5G_presetName",
11308
+ "description": "i1cc5G_description",
11309
+ "editorField": "i1cc5G_editorField",
10765
11310
  "versionRow": "i1cc5G_versionRow",
10766
- "channelDanger": "i1cc5G_channelDanger",
10767
- "editorSectionHeader": "i1cc5G_editorSectionHeader",
10768
- "versionValue": "i1cc5G_versionValue",
10769
- "readOnly": "i1cc5G_readOnly",
10770
- "modelRows": "i1cc5G_modelRows",
10771
- "footer": "i1cc5G_footer",
10772
- "sectionDivider": "i1cc5G_sectionDivider",
11311
+ "channelDotWarn": "i1cc5G_channelDotWarn",
10773
11312
  "channelAction": "i1cc5G_channelAction",
11313
+ "sectionHeader": "i1cc5G_sectionHeader",
11314
+ "modelFetch": "i1cc5G_modelFetch",
11315
+ "versionValue": "i1cc5G_versionValue",
11316
+ "detectOk": "i1cc5G_detectOk",
11317
+ "header": "i1cc5G_header",
10774
11318
  "headText": "i1cc5G_headText",
10775
- "sectionHint": "i1cc5G_sectionHint",
10776
- "optionalContent": "i1cc5G_optionalContent",
10777
- "editorClose": "i1cc5G_editorClose",
10778
- "label": "i1cc5G_label",
11319
+ "manualModelRow": "i1cc5G_manualModelRow",
11320
+ "modelCandidate": "i1cc5G_modelCandidate",
11321
+ "presetRow": "i1cc5G_presetRow",
11322
+ "presetMeta": "i1cc5G_presetMeta",
11323
+ "footer": "i1cc5G_footer",
11324
+ "channelHost": "i1cc5G_channelHost",
11325
+ "sectionTitle": "i1cc5G_sectionTitle",
10779
11326
  "input": "i1cc5G_input",
10780
- "channelSection": "i1cc5G_channelSection",
10781
11327
  "channelDotReady": "i1cc5G_channelDotReady",
10782
- "save": "i1cc5G_save",
10783
- "failed": "i1cc5G_failed",
10784
- "reset": "i1cc5G_reset",
10785
- "modelSummary": "i1cc5G_modelSummary",
10786
- "disclosure": "i1cc5G_disclosure",
10787
- "modelCandidate": "i1cc5G_modelCandidate",
10788
11328
  "channelAdd": "i1cc5G_channelAdd",
10789
- "editorPanel": "i1cc5G_editorPanel",
10790
- "manualModelRow": "i1cc5G_manualModelRow",
10791
- "detectOk": "i1cc5G_detectOk",
10792
- "modelRowBadges": "i1cc5G_modelRowBadges",
10793
- "presetName": "i1cc5G_presetName",
10794
- "name": "i1cc5G_name",
10795
- "sectionTitle": "i1cc5G_sectionTitle",
11329
+ "channelRow": "i1cc5G_channelRow",
11330
+ "reset": "i1cc5G_reset",
11331
+ "failed": "i1cc5G_failed",
11332
+ "editorBackdrop": "i1cc5G_editorBackdrop",
11333
+ "modelRows": "i1cc5G_modelRows",
11334
+ "presetList": "i1cc5G_presetList",
10796
11335
  "body": "i1cc5G_body",
10797
- "badges": "i1cc5G_badges",
10798
- "addModel": "i1cc5G_addModel",
10799
- "notExposed": "i1cc5G_notExposed",
10800
- "pending": "i1cc5G_pending",
10801
- "channelControls": "i1cc5G_channelControls",
10802
- "description": "i1cc5G_description",
10803
- "head": "i1cc5G_head",
11336
+ "sectionDivider": "i1cc5G_sectionDivider",
10804
11337
  "textareaInvalid": "i1cc5G_textareaInvalid",
10805
- "field": "i1cc5G_field",
11338
+ "modelCandidateLabel": "i1cc5G_modelCandidateLabel",
11339
+ "hint": "i1cc5G_hint",
10806
11340
  "inputInvalid": "i1cc5G_inputInvalid",
10807
- "modelChip": "i1cc5G_modelChip",
10808
- "discard": "i1cc5G_discard",
10809
- "channelName": "i1cc5G_channelName",
10810
- "channelMeta": "i1cc5G_channelMeta",
11341
+ "editorPanel": "i1cc5G_editorPanel",
11342
+ "card": "i1cc5G_card",
10811
11343
  "channelBadge": "i1cc5G_channelBadge",
10812
- "sectionHeader": "i1cc5G_sectionHeader",
10813
- "deleteConfirmText": "i1cc5G_deleteConfirmText",
10814
- "modelRowInputs": "i1cc5G_modelRowInputs",
11344
+ "editorSectionHeader": "i1cc5G_editorSectionHeader",
11345
+ "editorTools": "i1cc5G_editorTools",
10815
11346
  "spacer": "i1cc5G_spacer",
10816
- "modelRowRemove": "i1cc5G_modelRowRemove",
10817
- "presetInlineHeader": "i1cc5G_presetInlineHeader",
10818
- "editorField": "i1cc5G_editorField",
10819
- "select": "i1cc5G_select",
10820
- "modelCandidateList": "i1cc5G_modelCandidateList",
10821
- "presetRow": "i1cc5G_presetRow",
10822
- "channelRow": "i1cc5G_channelRow",
10823
- "channelHost": "i1cc5G_channelHost",
10824
- "modelSection": "i1cc5G_modelSection",
10825
- "presetHint": "i1cc5G_presetHint",
11347
+ "sectionHint": "i1cc5G_sectionHint",
11348
+ "modelChoices": "i1cc5G_modelChoices",
11349
+ "modelSummary": "i1cc5G_modelSummary",
11350
+ "channelDanger": "i1cc5G_channelDanger",
11351
+ "label": "i1cc5G_label",
11352
+ "modelBadge": "i1cc5G_modelBadge",
11353
+ "presetInline": "i1cc5G_presetInline",
11354
+ "chevron": "i1cc5G_chevron",
11355
+ "save": "i1cc5G_save",
11356
+ "editorHeader": "i1cc5G_editorHeader",
11357
+ "editorFooter": "i1cc5G_editorFooter",
11358
+ "readOnly": "i1cc5G_readOnly",
11359
+ "channelSection": "i1cc5G_channelSection",
11360
+ "versionLabel": "i1cc5G_versionLabel",
11361
+ "inlineDisclosure": "i1cc5G_inlineDisclosure",
10826
11362
  "channelEmpty": "i1cc5G_channelEmpty",
10827
- "modelFetch": "i1cc5G_modelFetch"
11363
+ "modelRowBadges": "i1cc5G_modelRowBadges",
11364
+ "badges": "i1cc5G_badges",
11365
+ "textarea": "i1cc5G_textarea",
11366
+ "modelChip": "i1cc5G_modelChip",
11367
+ "modelCandidateList": "i1cc5G_modelCandidateList",
11368
+ "channelAddRow": "i1cc5G_channelAddRow",
11369
+ "chevronOpen": "i1cc5G_chevronOpen",
11370
+ "select": "i1cc5G_select",
11371
+ "editorClose": "i1cc5G_editorClose",
11372
+ "optionalContent": "i1cc5G_optionalContent",
11373
+ "channelControls": "i1cc5G_channelControls",
11374
+ "presetInlineHeader": "i1cc5G_presetInlineHeader",
11375
+ "disclosure": "i1cc5G_disclosure",
11376
+ "field": "i1cc5G_field",
11377
+ "channelName": "i1cc5G_channelName",
11378
+ "discard": "i1cc5G_discard",
11379
+ "notExposed": "i1cc5G_notExposed"
10828
11380
  };
10829
11381
  //#endregion
10830
11382
  //#region src/client/SettingsCard.tsx
@@ -10856,6 +11408,7 @@ window.__ModuleLoader__.load({
10856
11408
  textField("promptApiUrl"),
10857
11409
  secretField("promptApiKey"),
10858
11410
  textField("promptModel"),
11411
+ textField("localStoragePath"),
10859
11412
  booleanField("storageEnabled"),
10860
11413
  textField("storageEndpoint"),
10861
11414
  textField("storageRegion"),
@@ -10879,6 +11432,7 @@ window.__ModuleLoader__.load({
10879
11432
  promptApiUrl: this.form.field("promptApiUrl"),
10880
11433
  promptApiKey: this.form.field("promptApiKey"),
10881
11434
  promptModel: this.form.field("promptModel"),
11435
+ localStoragePath: this.form.field("localStoragePath"),
10882
11436
  storageEnabled: this.form.field("storageEnabled"),
10883
11437
  storageEndpoint: this.form.field("storageEndpoint"),
10884
11438
  storageRegion: this.form.field("storageRegion"),
@@ -11395,6 +11949,20 @@ window.__ModuleLoader__.load({
11395
11949
  storageOpen ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11396
11950
  className: settings_card_module_css_default.optionalContent,
11397
11951
  children: [
11952
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ValueField, {
11953
+ id: "dsh-imagegen-settings-local-storage-path",
11954
+ label: t("settings.localStoragePath"),
11955
+ hint: t("settings.localStoragePathHint"),
11956
+ placeholder: "E:\\\\dsh-imagegen-data",
11957
+ ...fieldProps,
11958
+ ...state.localStoragePath,
11959
+ onEdit: (text) => {
11960
+ props.edit("localStoragePath", text);
11961
+ },
11962
+ onReset: () => {
11963
+ props.resetField("localStoragePath");
11964
+ }
11965
+ }),
11398
11966
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BooleanField, {
11399
11967
  id: "dsh-imagegen-settings-storage-enabled",
11400
11968
  label: t("settings.storageEnabled"),
@@ -12290,16 +12858,16 @@ window.__ModuleLoader__.load({
12290
12858
  document.head.appendChild(tag);
12291
12859
  }
12292
12860
  var image_toolview_module_css_default = {
12293
- "loading": "_3eGrYG_loading",
12294
- "image": "_3eGrYG_image",
12861
+ "error": "_3eGrYG_error",
12862
+ "imageLink": "_3eGrYG_imageLink",
12295
12863
  "header": "_3eGrYG_header",
12296
- "root": "_3eGrYG_root",
12297
12864
  "icon": "_3eGrYG_icon",
12865
+ "root": "_3eGrYG_root",
12866
+ "message": "_3eGrYG_message",
12298
12867
  "images": "_3eGrYG_images",
12299
- "error": "_3eGrYG_error",
12300
12868
  "status": "_3eGrYG_status",
12301
- "message": "_3eGrYG_message",
12302
- "imageLink": "_3eGrYG_imageLink"
12869
+ "loading": "_3eGrYG_loading",
12870
+ "image": "_3eGrYG_image"
12303
12871
  };
12304
12872
  //#endregion
12305
12873
  //#region src/client/image-toolview.tsx