evomeme 0.1.9 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/dist/canvas-public/app.js +509 -5999
  2. package/dist/canvas-public/assets/presets/catalog.json +47 -0
  3. package/dist/canvas-public/assets/presets/tiles/A_01_CaoDi.png +0 -0
  4. package/dist/canvas-public/assets/presets/tiles/A_02_ShaMo.png +0 -0
  5. package/dist/canvas-public/assets/presets/tiles/A_03_TianKong.png +0 -0
  6. package/dist/canvas-public/assets/presets/tiles/A_04_ShuiBo.png +0 -0
  7. package/dist/canvas-public/assets/presets/tiles/A_05_HaiMian.png +0 -0
  8. package/dist/canvas-public/assets/presets/tiles/A_06_MuDiBan.png +0 -0
  9. package/dist/canvas-public/assets/presets/tiles/A_07_ShiZhuan.png +0 -0
  10. package/dist/canvas-public/assets/presets/tiles/A_08_AnRongYan.png +0 -0
  11. package/dist/canvas-public/assets/presets/tiles/A_09_QingTaiShi.png +0 -0
  12. package/dist/canvas-public/assets/presets/tiles/A_10_ShenHai.png +0 -0
  13. package/dist/canvas-public/assets/presets/tiles/A_11_HuiYanShi.png +0 -0
  14. package/dist/canvas-public/assets/presets/tiles/A_12_HongTu.png +0 -0
  15. package/dist/canvas-public/assets/presets/tiles/A_13_GengDi.png +0 -0
  16. package/dist/canvas-public/assets/presets/tiles/A_14_HuoShanYan.png +0 -0
  17. package/dist/canvas-public/assets/presets/tiles/A_15_NiTu.png +0 -0
  18. package/dist/canvas-public/assets/presets/tiles/A_16_HuangSha.png +0 -0
  19. package/dist/canvas-public/assets/presets/tiles/A_17_CongLin.png +0 -0
  20. package/dist/canvas-public/assets/presets/tiles/A_18_ZiYanShi.png +0 -0
  21. package/dist/canvas-public/assets/presets/tiles/A_19_MoGuTu.png +0 -0
  22. package/dist/canvas-public/assets/presets/tiles/A_20_HuaDian.png +0 -0
  23. package/dist/canvas-public/assets/presets/tiles/A_21_HaiLang.png +0 -0
  24. package/dist/canvas-public/assets/presets/tiles/A_22_GanTu.png +0 -0
  25. package/dist/canvas-public/assets/presets/tiles/A_23_QingTaiShiBan.png +0 -0
  26. package/dist/canvas-public/assets/presets/tiles/A_24_XingKong.png +0 -0
  27. package/dist/canvas-public/assets/presets/tiles/A_25_MoFaFuWen.png +0 -0
  28. package/dist/canvas-public/assets/presets/tiles/A_26_ShiTuYeDi.png +0 -0
  29. package/dist/canvas-public/assets/presets/tiles/A_27_LanZhuan.png +0 -0
  30. package/dist/canvas-public/assets/presets/tiles/A_28_HongZhuan.png +0 -0
  31. package/dist/canvas-public/assets/presets/tiles/A_29_YueQiu.png +0 -0
  32. package/dist/canvas-public/assets/presets/tiles/A_30_JinShuGe.png +0 -0
  33. package/dist/canvas-public/assets/presets/tiles/A_31_JinShuJingGai.png +0 -0
  34. package/dist/canvas-public/assets/presets/tiles/A_32_ShuZiChuang.png +0 -0
  35. package/dist/canvas-public/canvas/actions.js +143 -0
  36. package/dist/canvas-public/canvas/camera.js +28 -0
  37. package/dist/canvas-public/canvas/chrome.js +13 -0
  38. package/dist/canvas-public/canvas/data.js +123 -0
  39. package/dist/canvas-public/canvas/dependencies.js +19 -0
  40. package/dist/canvas-public/canvas/interactions.js +544 -0
  41. package/dist/canvas-public/canvas/panel-resize.js +5 -0
  42. package/dist/canvas-public/canvas/renderer.js +297 -0
  43. package/dist/canvas-public/canvas/selection.js +62 -0
  44. package/dist/canvas-public/canvas/serialization.js +118 -0
  45. package/dist/canvas-public/canvas/sync.js +202 -0
  46. package/dist/canvas-public/core/api.js +27 -0
  47. package/dist/canvas-public/core/feature-registry.js +29 -0
  48. package/dist/canvas-public/core/feature-state.js +228 -0
  49. package/dist/canvas-public/core/layout.js +133 -0
  50. package/dist/canvas-public/core/operations.js +38 -0
  51. package/dist/canvas-public/core/project.js +203 -0
  52. package/dist/canvas-public/core/state.js +27 -0
  53. package/dist/canvas-public/dialogs/context-menu.js +118 -0
  54. package/dist/canvas-public/elements/base.js +100 -0
  55. package/dist/canvas-public/elements/connections.js +105 -0
  56. package/dist/canvas-public/elements/drag.js +53 -0
  57. package/dist/canvas-public/elements/image.js +259 -0
  58. package/dist/canvas-public/elements/loading-recovery.js +5 -0
  59. package/dist/canvas-public/elements/loading.js +21 -0
  60. package/dist/canvas-public/elements/map.js +64 -0
  61. package/dist/canvas-public/elements/registry.js +58 -0
  62. package/dist/canvas-public/elements/replacement.js +78 -0
  63. package/dist/canvas-public/elements/resize.js +210 -0
  64. package/dist/canvas-public/elements/task-pipeline.js +234 -0
  65. package/dist/canvas-public/elements/types.js +21 -0
  66. package/dist/canvas-public/elements/ui.js +14 -0
  67. package/dist/canvas-public/elements/video.js +64 -0
  68. package/dist/canvas-public/features/assets/local-assets.js +72 -0
  69. package/dist/canvas-public/features/assets/official-assets.js +538 -0
  70. package/dist/canvas-public/features/editing/canvas-size.js +532 -0
  71. package/dist/canvas-public/features/editing/color-key.js +469 -0
  72. package/dist/canvas-public/features/editing/cutout.js +20 -0
  73. package/dist/canvas-public/features/editing/interactive-image-editing.js +981 -0
  74. package/dist/canvas-public/features/editing/layer-decomposition.js +44 -0
  75. package/dist/canvas-public/features/editing/manual-split.js +114 -0
  76. package/dist/canvas-public/features/editing/perfect-pixel.js +336 -0
  77. package/dist/canvas-public/features/editing/scroll-preview.js +129 -0
  78. package/dist/canvas-public/features/editing/scroll-seam-elimination.js +71 -0
  79. package/dist/canvas-public/features/editing/seam-elimination.js +46 -0
  80. package/dist/canvas-public/features/editing/smart-split.js +48 -0
  81. package/dist/canvas-public/features/editing/source-preview.js +43 -0
  82. package/dist/canvas-public/features/editing/video-cycle.js +49 -0
  83. package/dist/canvas-public/features/editing/video-frames.js +35 -0
  84. package/dist/canvas-public/features/frame-editor/frame-editing.js +755 -0
  85. package/dist/canvas-public/features/frame-editor/frame-model.js +63 -0
  86. package/dist/canvas-public/features/frame-editor/playback.js +83 -0
  87. package/dist/canvas-public/features/frame-editor/preview.js +149 -0
  88. package/dist/canvas-public/features/generation/animation.js +272 -0
  89. package/dist/canvas-public/features/generation/asset-batch.js +102 -0
  90. package/dist/canvas-public/features/generation/direction.js +163 -0
  91. package/dist/canvas-public/features/generation/fields.js +73 -0
  92. package/dist/canvas-public/features/generation/game-ui.js +64 -0
  93. package/dist/canvas-public/features/generation/image.js +83 -0
  94. package/dist/canvas-public/features/generation/scroll-image.js +157 -0
  95. package/dist/canvas-public/features/generation/seamless-tile.js +52 -0
  96. package/dist/canvas-public/features/generation/tile-transition-atlas.js +79 -0
  97. package/dist/canvas-public/features/generation/video.js +105 -0
  98. package/dist/canvas-public/features/map/creation.js +73 -0
  99. package/dist/canvas-public/features/map/tile-map-editor.js +2518 -0
  100. package/dist/canvas-public/features/registry.js +59 -0
  101. package/dist/canvas-public/index.html +84 -259
  102. package/dist/canvas-public/inspector/controls.js +49 -0
  103. package/dist/canvas-public/inspector/frame-preview.js +11 -0
  104. package/dist/canvas-public/inspector/inspector.js +190 -0
  105. package/dist/canvas-public/inspector/media-inspector.js +517 -0
  106. package/dist/canvas-public/inspector/media-preview.js +56 -0
  107. package/dist/canvas-public/inspector/number-stepper.js +96 -0
  108. package/dist/canvas-public/inspector/resize.js +88 -0
  109. package/dist/canvas-public/inspector/scroll-preview.js +11 -0
  110. package/dist/canvas-public/inspector/ui-inspector.js +14 -0
  111. package/dist/canvas-public/language/en-US.js +1059 -0
  112. package/dist/canvas-public/language/index.js +79 -0
  113. package/dist/canvas-public/language/zh-CN.js +1059 -0
  114. package/dist/canvas-public/map/export.js +9 -0
  115. package/dist/canvas-public/map/inspector.js +8 -0
  116. package/dist/canvas-public/map/model.js +409 -0
  117. package/dist/canvas-public/map/tile-map-editor.js +2 -0
  118. package/dist/canvas-public/media/metadata.js +183 -0
  119. package/dist/canvas-public/media/support.js +183 -0
  120. package/dist/canvas-public/styles/base.css +49 -0
  121. package/dist/canvas-public/styles/canvas.css +127 -0
  122. package/dist/canvas-public/styles/controls.css +203 -0
  123. package/dist/canvas-public/styles/dialogs.css +521 -0
  124. package/dist/canvas-public/styles/feature-form.css +409 -0
  125. package/dist/canvas-public/styles/inspector.css +441 -0
  126. package/dist/canvas-public/styles/layout.css +344 -0
  127. package/dist/canvas-public/styles/map.css +11 -0
  128. package/dist/canvas-public/styles/nodes.css +636 -0
  129. package/dist/canvas-public/styles.css +9 -2247
  130. package/dist/canvas-public/ui/controls.js +222 -0
  131. package/dist/canvas-public/ui/elements.js +9 -0
  132. package/dist/canvas-public/ui/feature-controller.js +296 -0
  133. package/dist/canvas-public/ui/feature-form.js +401 -0
  134. package/dist/canvas-public/ui/settings.js +83 -0
  135. package/dist/canvas-public/ui/toolbar.js +55 -0
  136. package/dist/canvas-public/vendor/pixi-tilemap.js +126 -0
  137. package/dist/canvas-public/vendor/pixi.min.js +2340 -0
  138. package/dist/canvas-public/workers/color-key-worker.js +289 -0
  139. package/dist/canvas-public/workers/perfect-pixel-worker.js +510 -0
  140. package/dist/index.js +42236 -13382
  141. package/dist/skills/en-US/evomeme-canvas/SKILL.md +52 -0
  142. package/dist/skills/en-US/evomeme-canvas/agents/openai.yaml +7 -0
  143. package/dist/skills/en-US/evomeme-cloud-fs/SKILL.md +176 -0
  144. package/dist/skills/en-US/evomeme-cloud-fs/agents/openai.yaml +7 -0
  145. package/dist/skills/en-US/evomeme-cover/SKILL.md +132 -0
  146. package/dist/skills/en-US/evomeme-cover/agents/openai.yaml +7 -0
  147. package/dist/skills/en-US/evomeme-game-maker/SKILL.md +288 -0
  148. package/dist/skills/en-US/evomeme-game-maker/agents/openai.yaml +4 -0
  149. package/dist/skills/en-US/evomeme-login/SKILL.md +92 -0
  150. package/dist/skills/en-US/evomeme-login/agents/openai.yaml +7 -0
  151. package/dist/skills/en-US/evomeme-native-bridge-sdk/SKILL.md +286 -0
  152. package/dist/skills/en-US/evomeme-native-bridge-sdk/agents/openai.yaml +8 -0
  153. package/dist/skills/en-US/evomeme-tos-upload/SKILL.md +47 -0
  154. package/dist/skills/en-US/evomeme-tos-upload/agents/openai.yaml +5 -0
  155. package/dist/skills/en-US/evomeme-ui/SKILL.md +123 -0
  156. package/dist/skills/en-US/evomeme-ui/agents/openai.yaml +4 -0
  157. package/dist/skills/en-US/evomeme-ui/references/host-layout.md +69 -0
  158. package/dist/skills/en-US/game-art/SKILL.md +121 -0
  159. package/dist/skills/en-US/game-art/agents/openai.yaml +8 -0
  160. package/dist/skills/en-US/game-asset-align/SKILL.md +45 -0
  161. package/dist/skills/en-US/game-asset-align/agents/openai.yaml +8 -0
  162. package/dist/skills/en-US/game-asset-align/references/alignment-contract.md +61 -0
  163. package/dist/skills/en-US/game-asset-align/references/blender-scene-pipeline.md +45 -0
  164. package/dist/skills/en-US/game-asset-align/references/canonical-package.md +26 -0
  165. package/dist/skills/en-US/game-asset-align/references/engine-capabilities.md +14 -0
  166. package/dist/skills/en-US/game-asset-align/references/lightweight-review.md +32 -0
  167. package/dist/skills/en-US/game-asset-align/references/repair-policy.md +30 -0
  168. package/dist/skills/en-US/game-asset-align/references/tool-contract.md +39 -0
  169. package/dist/skills/en-US/game-asset-align/references/visual-review.md +26 -0
  170. package/dist/skills/en-US/game-asset-image-generator/SKILL.md +104 -0
  171. package/dist/skills/en-US/game-asset-image-generator/agents/openai.yaml +7 -0
  172. package/dist/skills/en-US/game-asset-image-generator/references/background.md +32 -0
  173. package/dist/skills/en-US/game-asset-image-generator/references/static-game-assets.md +38 -0
  174. package/dist/skills/en-US/game-audio/SKILL.md +82 -0
  175. package/dist/skills/en-US/game-audio/agents/openai.yaml +4 -0
  176. package/dist/skills/en-US/game-demo/SKILL.md +103 -0
  177. package/dist/skills/en-US/game-demo/agents/openai.yaml +7 -0
  178. package/dist/skills/en-US/game-maker/SKILL.md +111 -0
  179. package/dist/skills/en-US/game-maker/agents/openai.yaml +4 -0
  180. package/dist/skills/en-US/game-test/SKILL.md +58 -0
  181. package/dist/skills/en-US/game-test/agents/openai.yaml +7 -0
  182. package/dist/skills/en-US/game-ui/SKILL.md +177 -0
  183. package/dist/skills/en-US/game-ui/agents/openai.yaml +4 -0
  184. package/dist/skills/en-US/godot-3d-game/SKILL.md +39 -0
  185. package/dist/skills/en-US/godot-3d-game/agents/openai.yaml +8 -0
  186. package/dist/skills/en-US/godot-3d-game/references/alignment-gates.md +26 -0
  187. package/dist/skills/en-US/godot-3d-game/references/appearance-alignment.md +52 -0
  188. package/dist/skills/en-US/godot-3d-game/references/build-and-qa.md +22 -0
  189. package/dist/skills/en-US/godot-3d-game/references/canonical-asset-runtime.md +27 -0
  190. package/dist/skills/en-US/godot-3d-game/references/import-and-wrapper-scenes.md +20 -0
  191. package/dist/skills/en-US/godot-3d-game/references/physics-colliders.md +13 -0
  192. package/dist/skills/en-US/godot-3d-game/references/project-structure.md +22 -0
  193. package/dist/skills/en-US/godot-3d-game/references/skeleton-animation.md +16 -0
  194. package/dist/skills/en-US/phaser-2d-game/SKILL.md +127 -0
  195. package/dist/skills/en-US/phaser-2d-game/agents/openai.yaml +8 -0
  196. package/dist/skills/en-US/phaser-2d-game/references/engine-performance.md +64 -0
  197. package/dist/skills/en-US/phaser-2d-game/references/engine-physics.md +139 -0
  198. package/dist/skills/en-US/phaser-2d-game/references/engine-runtime.md +129 -0
  199. package/dist/skills/en-US/phaser-2d-game/references/engine-spritesheets.md +99 -0
  200. package/dist/skills/en-US/phaser-2d-game/references/engine-tilemaps.md +80 -0
  201. package/dist/skills/en-US/phaser-2d-game/references/file-structure.md +94 -0
  202. package/dist/skills/en-US/phaser-2d-graphics-builder/SKILL.md +68 -0
  203. package/dist/skills/en-US/phaser-2d-graphics-builder/agents/openai.yaml +7 -0
  204. package/dist/skills/en-US/threejs-3d-game/SKILL.md +117 -0
  205. package/dist/skills/en-US/threejs-3d-game/agents/openai.yaml +7 -0
  206. package/dist/skills/en-US/threejs-3d-game/references/engine-asset-pipeline.md +153 -0
  207. package/dist/skills/en-US/threejs-3d-game/references/engine-audio.md +70 -0
  208. package/dist/skills/en-US/threejs-3d-game/references/engine-input-camera.md +84 -0
  209. package/dist/skills/en-US/threejs-3d-game/references/engine-performance.md +96 -0
  210. package/dist/skills/en-US/threejs-3d-game/references/engine-physics.md +142 -0
  211. package/dist/skills/en-US/threejs-3d-game/references/engine-runtime.md +199 -0
  212. package/dist/skills/en-US/threejs-3d-game/references/file-structure.md +353 -0
  213. package/dist/skills/en-US/threejs-aaa-graphics-builder/SKILL.md +62 -0
  214. package/dist/skills/en-US/threejs-aaa-graphics-builder/agents/openai.yaml +7 -0
  215. package/{skills → dist/skills/zh-CN}/evomeme-cloud-fs/SKILL.md +4 -4
  216. package/{skills → dist/skills/zh-CN}/evomeme-cover/SKILL.md +1 -1
  217. package/{skills → dist/skills/zh-CN}/evomeme-game-maker/SKILL.md +91 -88
  218. package/{skills → dist/skills/zh-CN}/evomeme-tos-upload/SKILL.md +6 -5
  219. package/dist/skills/zh-CN/evomeme-ui/SKILL.md +123 -0
  220. package/dist/skills/zh-CN/evomeme-ui/agents/openai.yaml +4 -0
  221. package/dist/skills/zh-CN/evomeme-ui/references/host-layout.md +69 -0
  222. package/dist/skills/zh-CN/game-asset-align/SKILL.md +45 -0
  223. package/dist/skills/zh-CN/game-asset-align/agents/openai.yaml +8 -0
  224. package/dist/skills/zh-CN/game-asset-align/references/alignment-contract.md +61 -0
  225. package/dist/skills/zh-CN/game-asset-align/references/blender-scene-pipeline.md +45 -0
  226. package/dist/skills/zh-CN/game-asset-align/references/canonical-package.md +26 -0
  227. package/dist/skills/zh-CN/game-asset-align/references/engine-capabilities.md +14 -0
  228. package/dist/skills/zh-CN/game-asset-align/references/lightweight-review.md +32 -0
  229. package/dist/skills/zh-CN/game-asset-align/references/repair-policy.md +30 -0
  230. package/dist/skills/zh-CN/game-asset-align/references/tool-contract.md +39 -0
  231. package/dist/skills/zh-CN/game-asset-align/references/visual-review.md +26 -0
  232. package/{skills → dist/skills/zh-CN}/game-asset-image-generator/SKILL.md +1 -1
  233. package/dist/skills/zh-CN/game-audio/references/bgm-cdn.md +127 -0
  234. package/dist/skills/zh-CN/game-audio/references/sfx-cdn.md +77 -0
  235. package/dist/skills/zh-CN/game-test/references/checklists/playtest-qa.md +12 -0
  236. package/{skills → dist/skills/zh-CN}/game-ui/SKILL.md +9 -1
  237. package/dist/skills/zh-CN/game-ui/references/checklists/game-ui-quality.md +14 -0
  238. package/dist/skills/zh-CN/game-ui/references/checklists/hud-readability.md +12 -0
  239. package/dist/skills/zh-CN/game-ui/references/checklists/mobile-input.md +12 -0
  240. package/dist/skills/zh-CN/game-ui/references/checklists/responsive-ui-fit.md +12 -0
  241. package/dist/skills/zh-CN/game-ui/references/ui-patterns.md +140 -0
  242. package/dist/skills/zh-CN/game-ui/references/ui-prompt-templates.md +63 -0
  243. package/dist/skills/zh-CN/godot-3d-game/SKILL.md +39 -0
  244. package/dist/skills/zh-CN/godot-3d-game/agents/openai.yaml +8 -0
  245. package/dist/skills/zh-CN/godot-3d-game/references/alignment-gates.md +26 -0
  246. package/dist/skills/zh-CN/godot-3d-game/references/appearance-alignment.md +52 -0
  247. package/dist/skills/zh-CN/godot-3d-game/references/build-and-qa.md +22 -0
  248. package/dist/skills/zh-CN/godot-3d-game/references/canonical-asset-runtime.md +27 -0
  249. package/dist/skills/zh-CN/godot-3d-game/references/import-and-wrapper-scenes.md +20 -0
  250. package/dist/skills/zh-CN/godot-3d-game/references/physics-colliders.md +13 -0
  251. package/dist/skills/zh-CN/godot-3d-game/references/project-structure.md +22 -0
  252. package/dist/skills/zh-CN/godot-3d-game/references/skeleton-animation.md +16 -0
  253. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-1.jpeg +0 -0
  254. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-2.jpeg +0 -0
  255. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  256. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/compose-quality.md +10 -0
  257. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/performance-safe-visual-detail.md +9 -0
  258. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/premium-game-quality-gate.md +15 -0
  259. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/sprite-quality.md +10 -0
  260. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/technical-art-quality.md +9 -0
  261. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/visual-scorecard.md +9 -0
  262. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/compose-recipes.md +71 -0
  263. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/graphics-prompt-templates.md +33 -0
  264. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/implementation-blueprint.md +82 -0
  265. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/sprite-recipes.md +90 -0
  266. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/technical-art.md +67 -0
  267. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/vfx-recipes.md +67 -0
  268. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/visual-scorecard.md +129 -0
  269. package/{skills → dist/skills/zh-CN}/threejs-3d-game/SKILL.md +6 -2
  270. package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-asset-pipeline.md +52 -15
  271. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-1.jpg +0 -0
  272. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-2.jpg +0 -0
  273. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  274. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/aaa-game-quality-gate.md +23 -0
  275. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/aaa-visual-scorecard.md +19 -0
  276. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/material-lighting-quality.md +14 -0
  277. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/performance-safe-visual-detail.md +14 -0
  278. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/procedural-model-quality.md +15 -0
  279. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/technical-art-quality.md +17 -0
  280. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/graphics-prompt-templates.md +236 -0
  281. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/implementation-blueprint.md +161 -0
  282. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/model-recipes.md +146 -0
  283. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/render-recipes.md +90 -0
  284. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/shader-cookbook.md +292 -0
  285. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/technical-art.md +167 -0
  286. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/visual-scorecard.md +147 -0
  287. package/dist/stage-blender/bake_materials.py +102 -0
  288. package/dist/stage-blender/export_scene.py +275 -0
  289. package/dist/stage-blender/preview_camera.py +90 -0
  290. package/dist/stage-blender/repair_mesh.py +112 -0
  291. package/dist/stage-public/app.js +759 -0
  292. package/dist/stage-public/baked/bakePilot.js +44 -0
  293. package/dist/stage-public/baked/bakedScene.js +129 -0
  294. package/dist/stage-public/baked/sceneAppearance.js +225 -0
  295. package/dist/stage-public/baked/sceneCamera.js +45 -0
  296. package/dist/stage-public/comparison-contract.js +28 -0
  297. package/dist/stage-public/delivery.html +4 -0
  298. package/dist/stage-public/delivery.js +17 -0
  299. package/dist/stage-public/godot/appearance.gd +170 -0
  300. package/dist/stage-public/godot/preview.gd +79 -0
  301. package/dist/stage-public/index.html +141 -0
  302. package/dist/stage-public/review-app.js +289 -0
  303. package/dist/stage-public/review-runtime.js +63 -0
  304. package/dist/stage-public/review.css +24 -0
  305. package/dist/stage-public/review.html +47 -0
  306. package/dist/stage-public/scene-runtime.js +212 -0
  307. package/dist/stage-public/sceneContractRuntime.js +235 -0
  308. package/dist/stage-public/styles.css +328 -0
  309. package/dist/stage-public/three-appearance.js +104 -0
  310. package/dist/stage-public/vendor/three170/LICENSE +21 -0
  311. package/dist/stage-public/vendor/three170/build/three.module.js +54571 -0
  312. package/dist/stage-public/vendor/three170/examples/jsm/controls/OrbitControls.js +1523 -0
  313. package/dist/stage-public/vendor/three170/examples/jsm/environments/RoomEnvironment.js +144 -0
  314. package/dist/stage-public/vendor/three170/examples/jsm/libs/fflate.module.js +2672 -0
  315. package/dist/stage-public/vendor/three170/examples/jsm/loaders/EXRLoader.js +2563 -0
  316. package/dist/stage-public/vendor/three170/examples/jsm/loaders/GLTFLoader.js +4727 -0
  317. package/dist/stage-public/vendor/three170/examples/jsm/utils/BufferGeometryUtils.js +1373 -0
  318. package/dist/tile-transition-mask.svg +40 -0
  319. package/package.json +21 -7
  320. package/dist/canvas-public/cycle-detect.js +0 -166
  321. package/dist/canvas-public/smart-split.js +0 -185
  322. /package/{skills → dist/skills/en-US}/game-audio/references/bgm-cdn.md +0 -0
  323. /package/{skills → dist/skills/en-US}/game-audio/references/sfx-cdn.md +0 -0
  324. /package/{skills → dist/skills/en-US}/game-test/references/checklists/playtest-qa.md +0 -0
  325. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/game-ui-quality.md +0 -0
  326. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/hud-readability.md +0 -0
  327. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/mobile-input.md +0 -0
  328. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/responsive-ui-fit.md +0 -0
  329. /package/{skills → dist/skills/en-US}/game-ui/references/ui-patterns.md +0 -0
  330. /package/{skills → dist/skills/en-US}/game-ui/references/ui-prompt-templates.md +0 -0
  331. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-1.jpeg +0 -0
  332. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-2.jpeg +0 -0
  333. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  334. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/compose-quality.md +0 -0
  335. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/performance-safe-visual-detail.md +0 -0
  336. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/premium-game-quality-gate.md +0 -0
  337. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/sprite-quality.md +0 -0
  338. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/technical-art-quality.md +0 -0
  339. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/visual-scorecard.md +0 -0
  340. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/compose-recipes.md +0 -0
  341. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/graphics-prompt-templates.md +0 -0
  342. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/implementation-blueprint.md +0 -0
  343. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/sprite-recipes.md +0 -0
  344. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/technical-art.md +0 -0
  345. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/vfx-recipes.md +0 -0
  346. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/visual-scorecard.md +0 -0
  347. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-1.jpg +0 -0
  348. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-2.jpg +0 -0
  349. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  350. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/aaa-game-quality-gate.md +0 -0
  351. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/aaa-visual-scorecard.md +0 -0
  352. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/material-lighting-quality.md +0 -0
  353. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/performance-safe-visual-detail.md +0 -0
  354. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/procedural-model-quality.md +0 -0
  355. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/technical-art-quality.md +0 -0
  356. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/graphics-prompt-templates.md +0 -0
  357. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/implementation-blueprint.md +0 -0
  358. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/model-recipes.md +0 -0
  359. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/render-recipes.md +0 -0
  360. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/shader-cookbook.md +0 -0
  361. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/technical-art.md +0 -0
  362. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/visual-scorecard.md +0 -0
  363. /package/{skills → dist/skills/zh-CN}/evomeme-canvas/SKILL.md +0 -0
  364. /package/{skills → dist/skills/zh-CN}/evomeme-canvas/agents/openai.yaml +0 -0
  365. /package/{skills → dist/skills/zh-CN}/evomeme-cloud-fs/agents/openai.yaml +0 -0
  366. /package/{skills → dist/skills/zh-CN}/evomeme-cover/agents/openai.yaml +0 -0
  367. /package/{skills → dist/skills/zh-CN}/evomeme-game-maker/agents/openai.yaml +0 -0
  368. /package/{skills → dist/skills/zh-CN}/evomeme-login/SKILL.md +0 -0
  369. /package/{skills → dist/skills/zh-CN}/evomeme-login/agents/openai.yaml +0 -0
  370. /package/{skills → dist/skills/zh-CN}/evomeme-native-bridge-sdk/SKILL.md +0 -0
  371. /package/{skills → dist/skills/zh-CN}/evomeme-native-bridge-sdk/agents/openai.yaml +0 -0
  372. /package/{skills → dist/skills/zh-CN}/evomeme-tos-upload/agents/openai.yaml +0 -0
  373. /package/{skills → dist/skills/zh-CN}/game-art/SKILL.md +0 -0
  374. /package/{skills → dist/skills/zh-CN}/game-art/agents/openai.yaml +0 -0
  375. /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/agents/openai.yaml +0 -0
  376. /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/references/background.md +0 -0
  377. /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/references/static-game-assets.md +0 -0
  378. /package/{skills → dist/skills/zh-CN}/game-audio/SKILL.md +0 -0
  379. /package/{skills → dist/skills/zh-CN}/game-audio/agents/openai.yaml +0 -0
  380. /package/{skills → dist/skills/zh-CN}/game-demo/SKILL.md +0 -0
  381. /package/{skills → dist/skills/zh-CN}/game-demo/agents/openai.yaml +0 -0
  382. /package/{skills → dist/skills/zh-CN}/game-maker/SKILL.md +0 -0
  383. /package/{skills → dist/skills/zh-CN}/game-maker/agents/openai.yaml +0 -0
  384. /package/{skills → dist/skills/zh-CN}/game-test/SKILL.md +0 -0
  385. /package/{skills → dist/skills/zh-CN}/game-test/agents/openai.yaml +0 -0
  386. /package/{skills → dist/skills/zh-CN}/game-ui/agents/openai.yaml +0 -0
  387. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/SKILL.md +0 -0
  388. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/agents/openai.yaml +0 -0
  389. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-performance.md +0 -0
  390. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-physics.md +0 -0
  391. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-runtime.md +0 -0
  392. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-spritesheets.md +0 -0
  393. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-tilemaps.md +0 -0
  394. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/file-structure.md +0 -0
  395. /package/{skills → dist/skills/zh-CN}/phaser-2d-graphics-builder/SKILL.md +0 -0
  396. /package/{skills → dist/skills/zh-CN}/phaser-2d-graphics-builder/agents/openai.yaml +0 -0
  397. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/agents/openai.yaml +0 -0
  398. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-audio.md +0 -0
  399. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-input-camera.md +0 -0
  400. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-performance.md +0 -0
  401. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-physics.md +0 -0
  402. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-runtime.md +0 -0
  403. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/file-structure.md +0 -0
  404. /package/{skills → dist/skills/zh-CN}/threejs-aaa-graphics-builder/SKILL.md +0 -0
  405. /package/{skills → dist/skills/zh-CN}/threejs-aaa-graphics-builder/agents/openai.yaml +0 -0
@@ -1,2247 +1,9 @@
1
- :root {
2
- --bg-0: #12151a;
3
- --bg-1: #1a1f27;
4
- --bg-2: #232a34;
5
- --line: rgba(255, 255, 255, 0.08);
6
- --text: #e8edf4;
7
- --muted: #93a0b4;
8
- --accent: #3dd6c6;
9
- --danger: #ff6b7a;
10
- --shadow: 0 18px 40px rgba(0, 0, 0, 0.35);
11
- font-family: 'DM Sans', sans-serif;
12
- color: var(--text);
13
- background: var(--bg-0);
14
- }
15
-
16
- * {
17
- box-sizing: border-box;
18
- }
19
-
20
- html,
21
- body {
22
- margin: 0;
23
- height: 100%;
24
- }
25
-
26
- body {
27
- background:
28
- radial-gradient(1200px 700px at 10% 0%, rgba(61, 214, 198, 0.12), transparent 55%),
29
- radial-gradient(900px 600px at 90% 20%, rgba(240, 180, 41, 0.08), transparent 50%),
30
- linear-gradient(160deg, #101318, #171c24 45%, #10141b);
31
- }
32
-
33
- button,
34
- input,
35
- select,
36
- textarea {
37
- font: inherit;
38
- }
39
-
40
- .app {
41
- display: block;
42
- height: 100%;
43
- min-height: 100vh;
44
- }
45
-
46
- .app[hidden],
47
- .welcome[hidden] {
48
- display: none !important;
49
- }
50
-
51
- .welcome {
52
- min-height: 100vh;
53
- display: grid;
54
- place-items: center;
55
- padding: 32px 20px;
56
- }
57
-
58
- .welcome-card {
59
- width: min(480px, 100%);
60
- padding: 36px 32px 28px;
61
- border: 1px solid var(--line);
62
- border-radius: 16px;
63
- background:
64
- linear-gradient(165deg, rgba(35, 42, 52, 0.92), rgba(18, 21, 26, 0.96));
65
- box-shadow: var(--shadow);
66
- }
67
-
68
- .welcome-brand {
69
- margin: 0 0 8px;
70
- font-size: 13px;
71
- font-weight: 600;
72
- letter-spacing: 0.08em;
73
- text-transform: uppercase;
74
- color: var(--accent);
75
- }
76
-
77
- .welcome-card h1 {
78
- margin: 0 0 12px;
79
- font-size: 28px;
80
- font-weight: 700;
81
- letter-spacing: -0.02em;
82
- }
83
-
84
- .welcome-desc {
85
- margin: 0 0 24px;
86
- color: var(--muted);
87
- font-size: 14px;
88
- line-height: 1.55;
89
- }
90
-
91
- .welcome-desc code {
92
- font-family: 'JetBrains Mono', monospace;
93
- font-size: 12px;
94
- color: var(--text);
95
- }
96
-
97
- .primary-btn {
98
- display: inline-flex;
99
- align-items: center;
100
- justify-content: center;
101
- min-width: 140px;
102
- border: none;
103
- border-radius: 10px;
104
- padding: 10px 18px;
105
- background: var(--accent);
106
- color: #0b1214;
107
- font-weight: 600;
108
- cursor: pointer;
109
- }
110
-
111
- .primary-btn:hover:not(:disabled) {
112
- filter: brightness(1.06);
113
- }
114
-
115
- .primary-btn:disabled {
116
- opacity: 0.65;
117
- cursor: wait;
118
- }
119
-
120
- .welcome-recent {
121
- margin-top: 28px;
122
- padding-top: 20px;
123
- border-top: 1px solid var(--line);
124
- }
125
-
126
- .welcome-recent h2 {
127
- margin: 0 0 10px;
128
- font-size: 13px;
129
- font-weight: 600;
130
- color: var(--muted);
131
- }
132
-
133
- .welcome-recent ul {
134
- list-style: none;
135
- margin: 0;
136
- padding: 0;
137
- display: flex;
138
- flex-direction: column;
139
- gap: 6px;
140
- }
141
-
142
- .recent-item {
143
- width: 100%;
144
- display: flex;
145
- flex-direction: column;
146
- align-items: flex-start;
147
- gap: 2px;
148
- text-align: left;
149
- border: 1px solid var(--line);
150
- border-radius: 10px;
151
- padding: 10px 12px;
152
- background: rgba(255, 255, 255, 0.02);
153
- color: var(--text);
154
- cursor: pointer;
155
- }
156
-
157
- .recent-item:hover {
158
- border-color: rgba(61, 214, 198, 0.45);
159
- }
160
-
161
- .recent-item strong {
162
- font-size: 14px;
163
- font-weight: 600;
164
- }
165
-
166
- .recent-item span {
167
- font-family: 'JetBrains Mono', monospace;
168
- font-size: 11px;
169
- color: var(--muted);
170
- word-break: break-all;
171
- }
172
-
173
- .welcome-error {
174
- margin: 16px 0 0;
175
- color: var(--danger);
176
- font-size: 13px;
177
- line-height: 1.45;
178
- }
179
-
180
- .project-bar {
181
- display: flex;
182
- align-items: center;
183
- gap: 8px;
184
- min-width: 0;
185
- z-index: 1;
186
- }
187
-
188
- .toolbar-actions {
189
- display: flex;
190
- align-items: center;
191
- justify-content: center;
192
- gap: 8px;
193
- flex-shrink: 0;
194
- position: absolute;
195
- left: 50%;
196
- transform: translateX(-50%);
197
- }
198
-
199
- .tool-btn {
200
- border: 1px solid rgba(61, 214, 198, 0.35);
201
- background: rgba(61, 214, 198, 0.12);
202
- color: var(--text);
203
- border-radius: 8px;
204
- padding: 6px 12px;
205
- cursor: pointer;
206
- font-weight: 600;
207
- font-size: 13px;
208
- }
209
-
210
- .tool-btn:hover {
211
- border-color: rgba(61, 214, 198, 0.65);
212
- background: rgba(61, 214, 198, 0.2);
213
- }
214
-
215
- #tool-image-gen,
216
- #tool-video-gen {
217
- cursor: grab;
218
- touch-action: none;
219
- }
220
-
221
- #tool-image-gen:active,
222
- #tool-video-gen:active,
223
- #tool-image-gen.is-dragging,
224
- #tool-video-gen.is-dragging {
225
- cursor: grabbing;
226
- }
227
-
228
- .project-name {
229
- min-width: 0;
230
- max-width: 220px;
231
- overflow: hidden;
232
- text-overflow: ellipsis;
233
- white-space: nowrap;
234
- font-size: 13px;
235
- font-weight: 600;
236
- color: var(--text);
237
- }
238
-
239
- .canvas-pane {
240
- position: relative;
241
- width: 100%;
242
- height: 100%;
243
- min-height: 100vh;
244
- min-width: 0;
245
- }
246
-
247
- .canvas-main {
248
- position: relative;
249
- height: 100%;
250
- min-width: 0;
251
- display: flex;
252
- flex-direction: column;
253
- }
254
-
255
- .inspector {
256
- position: absolute;
257
- z-index: 8;
258
- left: 0;
259
- top: 0;
260
- bottom: 0;
261
- width: 300px;
262
- display: flex;
263
- flex-direction: column;
264
- min-height: 0;
265
- border-right: 1px solid var(--line);
266
- background: rgba(18, 21, 26, 0.94);
267
- backdrop-filter: blur(10px);
268
- box-shadow: 12px 0 32px rgba(0, 0, 0, 0.28);
269
- }
270
-
271
- .inspector[hidden] {
272
- display: none !important;
273
- }
274
-
275
- .inspector-header {
276
- display: flex;
277
- align-items: center;
278
- justify-content: space-between;
279
- gap: 8px;
280
- padding: 14px 14px 10px;
281
- border-bottom: 1px solid var(--line);
282
- }
283
-
284
- .inspector-header h2 {
285
- margin: 0;
286
- font-size: 15px;
287
- font-weight: 600;
288
- }
289
-
290
- .inspector-header .ghost-btn {
291
- width: 32px;
292
- height: 32px;
293
- padding: 0;
294
- line-height: 1;
295
- font-size: 18px;
296
- }
297
-
298
- .inspector-body {
299
- flex: 1;
300
- overflow: auto;
301
- padding: 12px 14px 20px;
302
- display: flex;
303
- flex-direction: column;
304
- gap: 12px;
305
- }
306
-
307
- .insp-section {
308
- display: flex;
309
- flex-direction: column;
310
- gap: 8px;
311
- }
312
-
313
- .insp-kv {
314
- display: grid;
315
- grid-template-columns: 72px 1fr;
316
- gap: 6px 10px;
317
- font-size: 12px;
318
- line-height: 1.4;
319
- }
320
-
321
- .insp-kv dt {
322
- margin: 0;
323
- color: var(--muted);
324
- }
325
-
326
- .insp-kv dd {
327
- margin: 0;
328
- word-break: break-all;
329
- font-family: 'JetBrains Mono', monospace;
330
- font-size: 11px;
331
- white-space: pre-wrap;
332
- }
333
-
334
- .insp-prompt {
335
- margin: 0;
336
- padding: 8px 10px;
337
- border-radius: 8px;
338
- border: 1px solid var(--line);
339
- background: rgba(10, 12, 16, 0.55);
340
- color: var(--text);
341
- font-size: 12px;
342
- line-height: 1.45;
343
- white-space: pre-wrap;
344
- word-break: break-word;
345
- max-height: 160px;
346
- overflow: auto;
347
- }
348
-
349
- .insp-preview {
350
- width: 100%;
351
- border-radius: 8px;
352
- border: 1px solid var(--line);
353
- background:
354
- linear-gradient(45deg, #2a3140 25%, transparent 25%),
355
- linear-gradient(-45deg, #2a3140 25%, transparent 25%),
356
- linear-gradient(45deg, transparent 75%, #2a3140 75%),
357
- linear-gradient(-45deg, transparent 75%, #2a3140 75%);
358
- background-size: 16px 16px;
359
- background-position: 0 0, 0 8px, 8px -8px, -8px 0;
360
- display: block;
361
- }
362
-
363
- .insp-field {
364
- display: flex;
365
- flex-direction: column;
366
- gap: 6px;
367
- font-size: 12px;
368
- color: var(--muted);
369
- }
370
-
371
- .insp-tos-link {
372
- color: var(--accent);
373
- text-decoration: none;
374
- overflow-wrap: anywhere;
375
- }
376
-
377
- .insp-tos-link:hover {
378
- text-decoration: underline;
379
- }
380
-
381
- .insp-field[hidden] {
382
- display: none !important;
383
- }
384
-
385
- .insp-field select,
386
- .insp-field input[type='text'],
387
- .insp-field input[type='number'] {
388
- width: 100%;
389
- border: 1px solid rgba(255, 255, 255, 0.1);
390
- border-radius: 7px;
391
- background: rgba(10, 12, 16, 0.72);
392
- color: var(--text);
393
- font-size: 12px;
394
- padding: 7px 8px;
395
- }
396
-
397
- .insp-action-btn {
398
- margin-top: 4px;
399
- width: 100%;
400
- justify-content: center;
401
- }
402
-
403
- .insp-field-row {
404
- display: flex;
405
- align-items: center;
406
- gap: 8px;
407
- }
408
-
409
- .insp-field input[type='range'] {
410
- flex: 1;
411
- }
412
-
413
- .insp-field-val {
414
- min-width: 2.5em;
415
- color: var(--text);
416
- font-family: 'JetBrains Mono', monospace;
417
- font-size: 12px;
418
- }
419
-
420
- .insp-check {
421
- display: flex;
422
- align-items: center;
423
- gap: 8px;
424
- font-size: 13px;
425
- color: var(--text);
426
- }
427
-
428
- .insp-label {
429
- font-size: 12px;
430
- color: var(--muted);
431
- font-weight: 600;
432
- }
433
-
434
- .insp-list {
435
- display: flex;
436
- flex-direction: column;
437
- gap: 6px;
438
- }
439
-
440
- .insp-list-item {
441
- display: flex;
442
- flex-direction: column;
443
- gap: 2px;
444
- width: 100%;
445
- text-align: left;
446
- padding: 10px;
447
- border-radius: 8px;
448
- border: 1px solid var(--line);
449
- background: var(--bg-1);
450
- color: var(--text);
451
- cursor: pointer;
452
- }
453
-
454
- .insp-list-item:hover {
455
- border-color: rgba(61, 214, 198, 0.45);
456
- }
457
-
458
- .insp-list-item .name {
459
- font-size: 13px;
460
- font-weight: 500;
461
- word-break: break-all;
462
- }
463
-
464
- .insp-list-item .meta {
465
- font-size: 11px;
466
- color: var(--muted);
467
- font-family: 'JetBrains Mono', monospace;
468
- }
469
-
470
- .canvas-shell {
471
- display: flex;
472
- flex-direction: column;
473
- height: 100%;
474
- min-height: 0;
475
- }
476
-
477
- .canvas-toolbar {
478
- position: relative;
479
- display: flex;
480
- align-items: center;
481
- justify-content: space-between;
482
- flex-wrap: nowrap;
483
- gap: 10px 14px;
484
- padding: 10px 14px;
485
- border-bottom: 1px solid var(--line);
486
- background: rgba(18, 21, 26, 0.72);
487
- backdrop-filter: blur(8px);
488
- min-height: 48px;
489
- }
490
-
491
- .ghost-btn {
492
- border: 1px solid var(--line);
493
- background: transparent;
494
- color: var(--text);
495
- border-radius: 8px;
496
- padding: 6px 10px;
497
- cursor: pointer;
498
- }
499
-
500
- .ghost-btn:hover {
501
- border-color: rgba(61, 214, 198, 0.45);
502
- }
503
-
504
- .canvas-viewport {
505
- position: relative;
506
- flex: 1;
507
- overflow: hidden;
508
- cursor: default;
509
- background-image:
510
- linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),
511
- linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px);
512
- background-size: 32px 32px;
513
- background-position: center;
514
- }
515
-
516
- .canvas-viewport.is-panning {
517
- cursor: grabbing;
518
- }
519
-
520
- .marquee {
521
- position: absolute;
522
- z-index: 5;
523
- border: 1px solid rgba(61, 214, 198, 0.85);
524
- background: rgba(61, 214, 198, 0.12);
525
- pointer-events: none;
526
- }
527
-
528
- .marquee[hidden] {
529
- display: none !important;
530
- }
531
-
532
- .canvas-world {
533
- position: absolute;
534
- inset: 0;
535
- transform-origin: 0 0;
536
- }
537
-
538
- .dependency-layer {
539
- position: absolute;
540
- z-index: 0;
541
- left: 0;
542
- top: 0;
543
- width: 100%;
544
- height: 100%;
545
- overflow: visible;
546
- pointer-events: none;
547
- }
548
-
549
- .dependency-path {
550
- fill: none;
551
- vector-effect: non-scaling-stroke;
552
- }
553
-
554
- .dependency-path-glow {
555
- stroke: #3dd6c6;
556
- stroke-width: 9;
557
- stroke-linecap: round;
558
- opacity: 0.14;
559
- filter: url('#dependency-glow');
560
- animation: dependency-pulse 2.4s ease-in-out infinite;
561
- }
562
-
563
- .dependency-path-base {
564
- stroke: rgba(61, 214, 198, 0.52);
565
- stroke-width: 1.6;
566
- }
567
-
568
- .dependency-path-flow {
569
- stroke: #9ffff4;
570
- stroke-width: 2.4;
571
- stroke-linecap: round;
572
- stroke-dasharray: 3 13;
573
- filter: drop-shadow(0 0 4px rgba(111, 255, 239, 0.95));
574
- animation: dependency-flow 1.15s linear infinite;
575
- }
576
-
577
- .dependency-arrow {
578
- fill: #8ffff2;
579
- filter: drop-shadow(0 0 4px rgba(111, 255, 239, 0.9));
580
- }
581
-
582
- .dependency-edge.is-active .dependency-path-base {
583
- stroke: rgba(124, 255, 241, 0.86);
584
- stroke-width: 2;
585
- }
586
-
587
- .dependency-edge.is-active .dependency-path-glow {
588
- opacity: 0.26;
589
- }
590
-
591
- @keyframes dependency-flow {
592
- to {
593
- stroke-dashoffset: -32;
594
- }
595
- }
596
-
597
- @keyframes dependency-pulse {
598
- 0%,
599
- 100% {
600
- opacity: 0.1;
601
- }
602
- 50% {
603
- opacity: 0.24;
604
- }
605
- }
606
-
607
- @media (prefers-reduced-motion: reduce) {
608
- .dependency-path-flow,
609
- .dependency-path-glow {
610
- animation: none;
611
- }
612
- }
613
-
614
- .canvas-node {
615
- position: absolute;
616
- z-index: 1;
617
- isolation: isolate;
618
- border: 1px solid transparent;
619
- border-radius: 10px;
620
- background: rgba(26, 31, 39, 0.88);
621
- box-shadow: var(--shadow);
622
- overflow: hidden;
623
- user-select: none;
624
- cursor: default;
625
- }
626
-
627
- .canvas-viewport.is-panning .canvas-node {
628
- cursor: grabbing;
629
- }
630
-
631
- .ref-handle {
632
- position: absolute;
633
- top: 8px;
634
- right: 8px;
635
- z-index: 1;
636
- padding: 4px 8px;
637
- border-radius: 999px;
638
- border: 1px solid rgba(61, 214, 198, 0.45);
639
- background: rgba(18, 21, 26, 0.88);
640
- color: var(--accent);
641
- font-size: 11px;
642
- font-weight: 600;
643
- cursor: grab;
644
- opacity: 0;
645
- pointer-events: none;
646
- transition: opacity 120ms ease;
647
- }
648
-
649
- .canvas-node:hover > .ref-handle {
650
- opacity: 1;
651
- pointer-events: auto;
652
- }
653
-
654
- .canvas-node.is-selected {
655
- z-index: 5;
656
- border-color: var(--accent);
657
- box-shadow: 0 0 0 1px rgba(61, 214, 198, 0.35), var(--shadow);
658
- }
659
-
660
- .canvas-resize-handle {
661
- position: absolute;
662
- z-index: 20;
663
- width: 18px;
664
- height: 18px;
665
- padding: 0;
666
- border: 0;
667
- outline: 0;
668
- background: transparent;
669
- box-shadow: none;
670
- pointer-events: auto;
671
- touch-action: none;
672
- }
673
-
674
- .canvas-resize-handle[data-corner='nw'] {
675
- top: 0;
676
- left: 0;
677
- cursor: nwse-resize;
678
- }
679
-
680
- .canvas-resize-handle[data-corner='ne'] {
681
- top: 0;
682
- right: 0;
683
- cursor: nesw-resize;
684
- }
685
-
686
- .canvas-resize-handle[data-corner='sw'] {
687
- bottom: 27px;
688
- left: 0;
689
- cursor: nesw-resize;
690
- }
691
-
692
- .canvas-resize-handle[data-corner='se'] {
693
- right: 0;
694
- bottom: 27px;
695
- cursor: nwse-resize;
696
- }
697
-
698
- .canvas-viewport.is-resizing[data-resize-corner='nw'],
699
- .canvas-viewport.is-resizing[data-resize-corner='nw'] *,
700
- .canvas-viewport.is-resizing[data-resize-corner='se'],
701
- .canvas-viewport.is-resizing[data-resize-corner='se'] * {
702
- cursor: nwse-resize !important;
703
- }
704
-
705
- .canvas-viewport.is-resizing[data-resize-corner='ne'],
706
- .canvas-viewport.is-resizing[data-resize-corner='ne'] *,
707
- .canvas-viewport.is-resizing[data-resize-corner='sw'],
708
- .canvas-viewport.is-resizing[data-resize-corner='sw'] * {
709
- cursor: nesw-resize !important;
710
- }
711
-
712
- .canvas-node.is-image {
713
- background: transparent;
714
- }
715
-
716
- .canvas-node img[data-role='frame'] {
717
- display: block;
718
- width: 100%;
719
- height: auto;
720
- pointer-events: none;
721
- border-radius: 10px 10px 0 0;
722
- background: transparent;
723
- }
724
-
725
- .frame-sheet-preview {
726
- position: relative;
727
- display: block;
728
- width: 100%;
729
- overflow: hidden;
730
- border-radius: 10px 10px 0 0;
731
- background: transparent;
732
- pointer-events: none;
733
- }
734
-
735
- .frame-sheet-preview img[data-role='frame-sheet-image'] {
736
- position: absolute;
737
- left: 0;
738
- top: 0;
739
- display: block;
740
- max-width: none;
741
- max-height: none;
742
- object-fit: fill;
743
- transform-origin: top left;
744
- pointer-events: none;
745
- will-change: transform;
746
- }
747
-
748
- .canvas-node.is-frame-editor {
749
- overflow: hidden;
750
- border-color: rgba(61, 214, 198, 0.28);
751
- background: linear-gradient(165deg, rgba(28, 34, 42, 0.98), rgba(16, 19, 24, 0.98));
752
- }
753
-
754
- .frame-editor-head {
755
- display: flex;
756
- align-items: center;
757
- justify-content: space-between;
758
- gap: 12px;
759
- padding: 12px 14px;
760
- border-bottom: 1px solid var(--line);
761
- cursor: grab;
762
- }
763
-
764
- .frame-editor-head span {
765
- color: var(--muted);
766
- font-size: 11px;
767
- font-family: 'JetBrains Mono', monospace;
768
- }
769
-
770
- .frame-editor-toolbar,
771
- .frame-editor-footer {
772
- display: flex;
773
- align-items: center;
774
- gap: 8px;
775
- padding: 10px 12px;
776
- }
777
-
778
- .frame-editor-toolbar label {
779
- display: flex;
780
- align-items: center;
781
- gap: 6px;
782
- color: var(--muted);
783
- font-size: 11px;
784
- }
785
-
786
- .frame-editor-toolbar .frame-editor-fps-field {
787
- margin-left: auto;
788
- }
789
-
790
- .frame-editor-toolbar input {
791
- width: 76px;
792
- padding: 6px 7px;
793
- border: 1px solid var(--line);
794
- border-radius: 7px;
795
- background: rgba(10, 12, 16, 0.72);
796
- color: var(--text);
797
- }
798
-
799
- .frame-editor-toolbar .frame-editor-dimension-field input {
800
- width: 58px;
801
- }
802
-
803
- .frame-editor-workspace {
804
- display: grid;
805
- grid-template-columns: minmax(0, 1fr) 250px;
806
- min-height: 300px;
807
- border-block: 1px solid rgba(255, 255, 255, 0.05);
808
- background: rgba(7, 9, 12, 0.42);
809
- }
810
-
811
- .frame-editor-grid-scroll {
812
- max-height: 380px;
813
- min-height: 300px;
814
- display: flex;
815
- padding: 16px;
816
- overflow: auto;
817
- }
818
-
819
- .frame-editor-grid {
820
- display: grid;
821
- gap: 7px;
822
- width: max-content;
823
- min-width: max-content;
824
- margin: auto;
825
- }
826
-
827
- .frame-editor-preview {
828
- display: flex;
829
- min-width: 0;
830
- flex-direction: column;
831
- padding: 16px;
832
- border-left: 1px solid rgba(255, 255, 255, 0.08);
833
- background: rgba(11, 14, 18, 0.48);
834
- }
835
-
836
- .frame-editor-preview-head {
837
- display: flex;
838
- align-items: center;
839
- justify-content: space-between;
840
- gap: 10px;
841
- margin-bottom: 12px;
842
- }
843
-
844
- .frame-editor-preview-head strong {
845
- font-size: 12px;
846
- }
847
-
848
- .frame-editor-preview-head span,
849
- .frame-editor-preview-hint {
850
- color: var(--muted);
851
- font-size: 10px;
852
- font-family: 'JetBrains Mono', monospace;
853
- }
854
-
855
- .frame-editor-preview-viewport {
856
- display: flex;
857
- min-height: 220px;
858
- flex: 1;
859
- align-items: center;
860
- justify-content: center;
861
- }
862
-
863
- .frame-editor-preview-stage {
864
- position: relative;
865
- width: 100%;
866
- aspect-ratio: 1;
867
- overflow: hidden;
868
- border: 1px solid rgba(255, 255, 255, 0.13);
869
- border-radius: 10px;
870
- background:
871
- linear-gradient(45deg, #262c35 25%, transparent 25%),
872
- linear-gradient(-45deg, #262c35 25%, transparent 25%),
873
- linear-gradient(45deg, transparent 75%, #262c35 75%),
874
- linear-gradient(-45deg, transparent 75%, #262c35 75%);
875
- background-color: #171b21;
876
- background-size: 16px 16px;
877
- background-position: 0 0, 0 8px, 8px -8px, -8px 0;
878
- }
879
-
880
- .frame-editor-preview-frame {
881
- background: transparent;
882
- }
883
-
884
- .frame-editor-preview-empty {
885
- position: absolute;
886
- inset: 0;
887
- display: flex;
888
- align-items: center;
889
- justify-content: center;
890
- color: var(--muted);
891
- font-size: 11px;
892
- }
893
-
894
- .frame-editor-preview-hint {
895
- margin-top: 12px;
896
- text-align: center;
897
- }
898
-
899
- body.is-ref-dragging .frame-editor-grid {
900
- outline: 1px dashed rgba(61, 214, 198, 0.65);
901
- outline-offset: 5px;
902
- }
903
-
904
- .frame-editor-cell {
905
- position: relative;
906
- width: 72px;
907
- height: 72px;
908
- overflow: hidden;
909
- border: 1px solid rgba(255, 255, 255, 0.12);
910
- border-radius: 8px;
911
- background: rgba(255, 255, 255, 0.035);
912
- }
913
-
914
- .frame-editor-cell.has-frame {
915
- cursor: grab;
916
- }
917
-
918
- .frame-editor-cell.is-empty {
919
- display: flex;
920
- align-items: center;
921
- justify-content: center;
922
- border-style: dashed;
923
- }
924
-
925
- .frame-editor-cell.is-drop {
926
- border-color: var(--accent);
927
- box-shadow: inset 0 0 0 1px rgba(61, 214, 198, 0.48);
928
- }
929
-
930
- .frame-editor-cell.is-dragging {
931
- opacity: 0.4;
932
- }
933
-
934
- .frame-editor-thumb {
935
- position: absolute;
936
- inset: 0;
937
- overflow: hidden;
938
- background:
939
- linear-gradient(45deg, #262c35 25%, transparent 25%),
940
- linear-gradient(-45deg, #262c35 25%, transparent 25%),
941
- linear-gradient(45deg, transparent 75%, #262c35 75%),
942
- linear-gradient(-45deg, transparent 75%, #262c35 75%);
943
- background-size: 12px 12px;
944
- background-position: 0 0, 0 6px, 6px -6px, -6px 0;
945
- }
946
-
947
- .frame-editor-thumb img {
948
- display: block;
949
- width: 100%;
950
- height: 100%;
951
- object-fit: contain;
952
- pointer-events: none;
953
- }
954
-
955
- .frame-editor-thumb.is-source-cell img {
956
- position: absolute;
957
- left: 0;
958
- top: 0;
959
- max-width: none;
960
- max-height: none;
961
- object-fit: fill;
962
- transform-origin: top left;
963
- }
964
-
965
- .frame-editor-order {
966
- position: absolute;
967
- left: 4px;
968
- top: 4px;
969
- min-width: 17px;
970
- height: 17px;
971
- padding-inline: 3px;
972
- border-radius: 5px;
973
- background: rgba(7, 9, 12, 0.8);
974
- color: var(--text);
975
- font-size: 9px;
976
- line-height: 17px;
977
- text-align: center;
978
- pointer-events: none;
979
- }
980
-
981
- .frame-editor-remove {
982
- position: absolute;
983
- right: 3px;
984
- top: 3px;
985
- width: 19px;
986
- height: 19px;
987
- padding: 0;
988
- border: 1px solid rgba(255, 255, 255, 0.18);
989
- border-radius: 5px;
990
- background: rgba(7, 9, 12, 0.82);
991
- color: var(--muted);
992
- line-height: 16px;
993
- cursor: pointer;
994
- }
995
-
996
- .frame-editor-remove:hover {
997
- border-color: rgba(255, 107, 122, 0.55);
998
- color: var(--danger);
999
- }
1000
-
1001
- .frame-editor-empty-label {
1002
- color: rgba(255, 255, 255, 0.28);
1003
- font-size: 10px;
1004
- pointer-events: none;
1005
- }
1006
-
1007
- .frame-editor-hint {
1008
- min-height: 16px;
1009
- margin: 9px 12px 0;
1010
- color: var(--muted);
1011
- font-size: 11px;
1012
- }
1013
-
1014
- .frame-editor-hint.is-error {
1015
- color: var(--danger);
1016
- }
1017
-
1018
- .frame-editor-footer {
1019
- justify-content: flex-end;
1020
- }
1021
-
1022
- .canvas-node-caption {
1023
- padding: 6px 8px;
1024
- font-size: 11px;
1025
- color: var(--muted);
1026
- font-family: 'JetBrains Mono', monospace;
1027
- white-space: nowrap;
1028
- overflow: hidden;
1029
- text-overflow: ellipsis;
1030
- }
1031
-
1032
- .canvas-node.is-image .canvas-node-caption {
1033
- background: rgba(26, 31, 39, 0.88);
1034
- }
1035
-
1036
- .banner-error {
1037
- position: absolute;
1038
- left: 14px;
1039
- bottom: 14px;
1040
- padding: 8px 12px;
1041
- border-radius: 10px;
1042
- background: rgba(18, 21, 26, 0.88);
1043
- border: 1px solid var(--line);
1044
- font-size: 12px;
1045
- color: var(--danger);
1046
- max-width: min(520px, calc(100% - 28px));
1047
- }
1048
-
1049
- .chat-panel {
1050
- display: none;
1051
- }
1052
-
1053
- .canvas-node.is-gen-dialog {
1054
- width: 268px;
1055
- padding: 0;
1056
- overflow: hidden;
1057
- background: linear-gradient(165deg, rgba(28, 34, 42, 0.98), rgba(16, 19, 24, 0.98));
1058
- border: 1px solid rgba(61, 214, 198, 0.22);
1059
- border-radius: 12px;
1060
- box-shadow:
1061
- 0 10px 28px rgba(0, 0, 0, 0.38),
1062
- inset 0 1px 0 rgba(255, 255, 255, 0.04);
1063
- cursor: default;
1064
- font-size: 12px;
1065
- }
1066
-
1067
- .canvas-node.is-gen-dialog.is-selected {
1068
- outline: 1.5px solid rgba(61, 214, 198, 0.65);
1069
- outline-offset: 0;
1070
- }
1071
-
1072
- .canvas-node.is-video-dialog {
1073
- width: 288px;
1074
- }
1075
-
1076
- .gen-dialog-chrome {
1077
- display: flex;
1078
- align-items: center;
1079
- justify-content: space-between;
1080
- gap: 6px;
1081
- padding: 6px 8px 6px 10px;
1082
- border-bottom: 1px solid rgba(255, 255, 255, 0.06);
1083
- background: rgba(255, 255, 255, 0.02);
1084
- cursor: grab;
1085
- user-select: none;
1086
- }
1087
-
1088
- .gen-dialog-chrome strong {
1089
- font-size: 12px;
1090
- font-weight: 600;
1091
- letter-spacing: 0.02em;
1092
- }
1093
-
1094
- .gen-dialog-chrome .ghost-btn {
1095
- width: 22px;
1096
- height: 22px;
1097
- padding: 0;
1098
- line-height: 1;
1099
- border-radius: 6px;
1100
- font-size: 14px;
1101
- opacity: 0.7;
1102
- cursor: pointer;
1103
- position: relative;
1104
- z-index: 2;
1105
- }
1106
-
1107
- .gen-dialog-chrome .ghost-btn:hover {
1108
- opacity: 1;
1109
- }
1110
-
1111
- .gen-dialog-body {
1112
- display: flex;
1113
- flex-direction: column;
1114
- max-height: min(58vh, 380px);
1115
- cursor: default;
1116
- }
1117
-
1118
- .gen-dialog-body .chat-messages {
1119
- flex: 0 1 auto;
1120
- max-height: 96px;
1121
- min-height: 0;
1122
- padding: 6px 8px;
1123
- gap: 6px;
1124
- }
1125
-
1126
- .gen-dialog-body .chat-messages[hidden] {
1127
- display: none !important;
1128
- }
1129
-
1130
- .gen-dialog-body .chat-bubble {
1131
- padding: 6px 8px;
1132
- border-radius: 8px;
1133
- font-size: 11px;
1134
- }
1135
-
1136
- .gen-dialog-body .bubble-meta {
1137
- font-size: 10px;
1138
- margin-top: 4px;
1139
- }
1140
-
1141
- .gen-dialog-body .chat-composer {
1142
- display: flex;
1143
- flex-direction: column;
1144
- border-top: none;
1145
- padding: 8px;
1146
- gap: 6px;
1147
- }
1148
-
1149
- .gen-dialog-body .chat-composer.is-drop {
1150
- outline: 1px dashed rgba(61, 214, 198, 0.55);
1151
- outline-offset: -3px;
1152
- }
1153
-
1154
- .gen-dialog-body .prompt-drop-zone {
1155
- display: flex;
1156
- flex-direction: column;
1157
- gap: 6px;
1158
- border-radius: 8px;
1159
- padding: 2px;
1160
- transition: outline-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;
1161
- }
1162
-
1163
- .gen-dialog-body .prompt-drop-zone.is-drop {
1164
- outline: 1px dashed rgba(61, 214, 198, 0.65);
1165
- outline-offset: 0;
1166
- background: rgba(61, 214, 198, 0.06);
1167
- }
1168
-
1169
- .gen-dialog-body .prompt-drop-zone.is-ref-target {
1170
- animation: ref-drop-pulse 1s ease-in-out infinite;
1171
- }
1172
-
1173
- .gen-dialog-body .prompt-drop-zone.is-ref-target textarea {
1174
- border-color: rgba(61, 214, 198, 0.55);
1175
- }
1176
-
1177
- @keyframes ref-drop-pulse {
1178
- 0%,
1179
- 100% {
1180
- outline: 1px dashed rgba(61, 214, 198, 0.35);
1181
- outline-offset: 0;
1182
- background: rgba(61, 214, 198, 0.04);
1183
- box-shadow: 0 0 0 0 rgba(61, 214, 198, 0);
1184
- }
1185
- 50% {
1186
- outline: 1px dashed rgba(61, 214, 198, 0.95);
1187
- outline-offset: 1px;
1188
- background: rgba(61, 214, 198, 0.14);
1189
- box-shadow: 0 0 0 3px rgba(61, 214, 198, 0.18);
1190
- }
1191
- }
1192
-
1193
- .gen-dialog-body .gen-dialog-compact .composer-actions {
1194
- justify-content: stretch;
1195
- }
1196
-
1197
- .gen-dialog-body .gen-dialog-compact .composer-actions button[type='submit'] {
1198
- width: 100%;
1199
- }
1200
-
1201
- .gen-dialog-body .gen-dialog-warning {
1202
- margin: 0;
1203
- color: var(--danger);
1204
- font-size: 11px;
1205
- line-height: 1.35;
1206
- }
1207
-
1208
- .gen-dialog-body .gen-dialog-warning[hidden] {
1209
- display: none !important;
1210
- }
1211
-
1212
- .gen-dialog-body .ref-strip {
1213
- gap: 4px;
1214
- margin: 0;
1215
- }
1216
-
1217
- .gen-dialog-body .ref-chip {
1218
- gap: 4px;
1219
- padding: 2px;
1220
- border-radius: 8px;
1221
- }
1222
-
1223
- .gen-dialog-body .ref-chip img {
1224
- width: 28px;
1225
- height: 28px;
1226
- border-radius: 6px;
1227
- }
1228
-
1229
- .gen-dialog-body .ref-chip button {
1230
- width: 18px;
1231
- height: 18px;
1232
- font-size: 12px;
1233
- }
1234
-
1235
- .gen-dialog-body .composer-row {
1236
- display: grid;
1237
- grid-template-columns: 1fr 1fr;
1238
- gap: 6px;
1239
- }
1240
-
1241
- .gen-dialog-body .composer-row label {
1242
- display: flex;
1243
- flex-direction: column;
1244
- gap: 3px;
1245
- font-size: 10px;
1246
- color: var(--muted);
1247
- letter-spacing: 0.02em;
1248
- }
1249
-
1250
- .gen-dialog-body .composer-row select,
1251
- .gen-dialog-body .composer-row input,
1252
- .gen-dialog-body .size-input,
1253
- .gen-dialog-body .chat-composer textarea {
1254
- width: 100%;
1255
- border: 1px solid rgba(255, 255, 255, 0.08);
1256
- border-radius: 7px;
1257
- background: rgba(10, 12, 16, 0.72);
1258
- color: var(--text);
1259
- font-size: 11px;
1260
- padding: 5px 7px;
1261
- min-height: 0;
1262
- line-height: 1.3;
1263
- }
1264
-
1265
- .gen-dialog-body .chat-composer textarea {
1266
- min-height: 44px;
1267
- resize: vertical;
1268
- font-size: 12px;
1269
- padding: 7px 8px;
1270
- }
1271
-
1272
- .gen-dialog-body .composer-checks {
1273
- gap: 10px;
1274
- padding: 0;
1275
- font-size: 11px;
1276
- }
1277
-
1278
- .gen-dialog-body .composer-checks label {
1279
- display: inline-flex;
1280
- align-items: center;
1281
- gap: 4px;
1282
- }
1283
-
1284
- .gen-dialog-body .composer-actions {
1285
- display: flex;
1286
- align-items: center;
1287
- justify-content: flex-end;
1288
- gap: 6px;
1289
- margin-top: 2px;
1290
- }
1291
-
1292
- .gen-dialog-body .composer-actions .ghost-btn {
1293
- padding: 4px 8px;
1294
- font-size: 11px;
1295
- border-radius: 7px;
1296
- }
1297
-
1298
- .gen-dialog-body .composer-actions button[type='submit'] {
1299
- padding: 5px 12px;
1300
- font-size: 11px;
1301
- font-weight: 600;
1302
- border-radius: 7px;
1303
- border: none;
1304
- background: var(--accent);
1305
- color: #0b1214;
1306
- cursor: pointer;
1307
- }
1308
-
1309
- .gen-dialog-body .composer-actions button[type='submit']:disabled {
1310
- opacity: 0.55;
1311
- cursor: not-allowed;
1312
- }
1313
-
1314
- .gen-dialog-body .ref-chip-media {
1315
- padding: 3px 4px;
1316
- max-width: 100%;
1317
- }
1318
-
1319
- .gen-dialog-body .ref-kind-badge {
1320
- width: 28px;
1321
- height: 28px;
1322
- font-size: 9px;
1323
- border-radius: 6px;
1324
- }
1325
-
1326
- .gen-dialog-body .ref-chip-meta span {
1327
- font-size: 10px;
1328
- }
1329
-
1330
- .gen-dialog-body .ref-chip-meta select {
1331
- font-size: 10px;
1332
- padding: 1px 3px;
1333
- border-radius: 5px;
1334
- }
1335
-
1336
- .canvas-node.is-gen-dialog .ref-handle,
1337
- .canvas-node.is-gen-dialog .canvas-node-caption {
1338
- display: none;
1339
- }
1340
-
1341
- .canvas-node.is-video {
1342
- padding: 0;
1343
- overflow: hidden;
1344
- }
1345
-
1346
- .canvas-node.is-video video[data-role='frame'] {
1347
- display: block;
1348
- width: 100%;
1349
- height: auto;
1350
- object-fit: contain;
1351
- background: #0b0e13;
1352
- pointer-events: none;
1353
- border-radius: 10px 10px 0 0;
1354
- }
1355
-
1356
- .canvas-node.is-video .canvas-node-caption {
1357
- position: static;
1358
- }
1359
-
1360
- .composer-checks {
1361
- display: flex;
1362
- gap: 14px;
1363
- flex-wrap: wrap;
1364
- padding: 0 2px;
1365
- color: var(--muted);
1366
- font-size: 13px;
1367
- }
1368
-
1369
- .ref-chip-media {
1370
- align-items: center;
1371
- gap: 8px;
1372
- min-width: 0;
1373
- max-width: 100%;
1374
- }
1375
-
1376
- .ref-chip-media img {
1377
- width: 40px;
1378
- height: 40px;
1379
- }
1380
-
1381
- .ref-kind-badge {
1382
- width: 40px;
1383
- height: 40px;
1384
- border-radius: 8px;
1385
- display: grid;
1386
- place-items: center;
1387
- background: rgba(61, 214, 198, 0.12);
1388
- border: 1px solid var(--line);
1389
- font-size: 11px;
1390
- color: var(--accent);
1391
- }
1392
-
1393
- .ref-chip-meta {
1394
- display: flex;
1395
- flex-direction: column;
1396
- gap: 4px;
1397
- min-width: 0;
1398
- flex: 1;
1399
- }
1400
-
1401
- .ref-chip-meta span {
1402
- font-size: 11px;
1403
- overflow: hidden;
1404
- text-overflow: ellipsis;
1405
- white-space: nowrap;
1406
- }
1407
-
1408
- .ref-chip-meta select {
1409
- font-size: 11px;
1410
- border-radius: 6px;
1411
- border: 1px solid var(--line);
1412
- background: var(--bg-2);
1413
- color: var(--text);
1414
- padding: 2px 4px;
1415
- }
1416
-
1417
- .canvas-node.is-pending {
1418
- padding: 0;
1419
- overflow: hidden;
1420
- border: 1px solid rgba(61, 214, 198, 0.35);
1421
- background: #10151c;
1422
- box-shadow:
1423
- 0 0 0 1px rgba(61, 214, 198, 0.12),
1424
- 0 18px 40px rgba(0, 0, 0, 0.4);
1425
- }
1426
-
1427
- .canvas-node.is-pending-error {
1428
- border-color: rgba(248, 113, 113, 0.45);
1429
- box-shadow:
1430
- 0 0 0 1px rgba(248, 113, 113, 0.14),
1431
- 0 18px 40px rgba(0, 0, 0, 0.4);
1432
- }
1433
-
1434
- .pending-stage {
1435
- position: relative;
1436
- width: 100%;
1437
- height: 100%;
1438
- min-height: 120px;
1439
- display: grid;
1440
- place-items: center;
1441
- overflow: hidden;
1442
- isolation: isolate;
1443
- }
1444
-
1445
- .pending-aura {
1446
- position: absolute;
1447
- inset: -40%;
1448
- background:
1449
- conic-gradient(
1450
- from 0deg,
1451
- rgba(61, 214, 198, 0.0),
1452
- rgba(61, 214, 198, 0.55),
1453
- rgba(240, 180, 41, 0.35),
1454
- rgba(96, 165, 250, 0.45),
1455
- rgba(61, 214, 198, 0.0)
1456
- );
1457
- animation: pending-spin 2.8s linear infinite;
1458
- filter: blur(18px);
1459
- opacity: 0.85;
1460
- }
1461
-
1462
- .canvas-node.is-pending-error .pending-aura {
1463
- background:
1464
- conic-gradient(
1465
- from 0deg,
1466
- rgba(248, 113, 113, 0.0),
1467
- rgba(248, 113, 113, 0.55),
1468
- rgba(251, 146, 60, 0.35),
1469
- rgba(248, 113, 113, 0.45),
1470
- rgba(248, 113, 113, 0.0)
1471
- );
1472
- }
1473
-
1474
- @keyframes pending-spin {
1475
- to {
1476
- transform: rotate(360deg);
1477
- }
1478
- }
1479
-
1480
- .chat-header {
1481
- padding: 16px 16px 10px;
1482
- border-bottom: 1px solid var(--line);
1483
- }
1484
-
1485
- .chat-header h1 {
1486
- margin: 0;
1487
- font-size: 20px;
1488
- letter-spacing: 0.02em;
1489
- }
1490
-
1491
- .chat-header p {
1492
- margin: 6px 0 0;
1493
- color: var(--muted);
1494
- font-size: 13px;
1495
- }
1496
-
1497
- .chat-messages {
1498
- flex: 1;
1499
- overflow: auto;
1500
- padding: 14px;
1501
- display: flex;
1502
- flex-direction: column;
1503
- gap: 12px;
1504
- }
1505
-
1506
- .chat-empty,
1507
- .chat-busy {
1508
- color: var(--muted);
1509
- font-size: 13px;
1510
- }
1511
-
1512
- .chat-bubble {
1513
- border: 1px solid var(--line);
1514
- border-radius: 12px;
1515
- padding: 10px;
1516
- background: var(--bg-1);
1517
- }
1518
-
1519
- .chat-user {
1520
- border-color: rgba(61, 214, 198, 0.25);
1521
- }
1522
-
1523
- .bubble-refs {
1524
- display: flex;
1525
- gap: 6px;
1526
- flex-wrap: wrap;
1527
- margin-bottom: 8px;
1528
- }
1529
-
1530
- .bubble-refs img,
1531
- .ref-chip img {
1532
- width: 44px;
1533
- height: 44px;
1534
- object-fit: cover;
1535
- border-radius: 8px;
1536
- border: 1px solid var(--line);
1537
- }
1538
-
1539
- .bubble-text {
1540
- white-space: pre-wrap;
1541
- line-height: 1.45;
1542
- font-size: 14px;
1543
- }
1544
-
1545
- .bubble-meta {
1546
- margin-top: 6px;
1547
- color: var(--muted);
1548
- font-size: 11px;
1549
- font-family: 'JetBrains Mono', monospace;
1550
- }
1551
-
1552
- .bubble-result {
1553
- width: 100%;
1554
- border-radius: 8px;
1555
- display: block;
1556
- }
1557
-
1558
- .bubble-error {
1559
- color: var(--danger);
1560
- font-size: 13px;
1561
- white-space: pre-wrap;
1562
- }
1563
-
1564
- .chat-composer {
1565
- border-top: 1px solid var(--line);
1566
- padding: 12px;
1567
- display: flex;
1568
- flex-direction: column;
1569
- gap: 8px;
1570
- background: rgba(10, 12, 16, 0.55);
1571
- }
1572
-
1573
- .chat-composer.is-drop {
1574
- outline: 2px dashed var(--accent);
1575
- outline-offset: -6px;
1576
- }
1577
-
1578
- .ref-strip {
1579
- display: flex;
1580
- gap: 8px;
1581
- flex-wrap: wrap;
1582
- }
1583
-
1584
- .ref-chip {
1585
- position: relative;
1586
- }
1587
-
1588
- .ref-chip button {
1589
- position: absolute;
1590
- top: -6px;
1591
- right: -6px;
1592
- width: 18px;
1593
- height: 18px;
1594
- border-radius: 50%;
1595
- border: none;
1596
- background: var(--bg-2);
1597
- color: var(--text);
1598
- cursor: pointer;
1599
- line-height: 1;
1600
- }
1601
-
1602
- .composer-row {
1603
- display: grid;
1604
- grid-template-columns: 1fr 1fr;
1605
- gap: 8px;
1606
- }
1607
-
1608
- .composer-row label {
1609
- display: flex;
1610
- flex-direction: column;
1611
- gap: 4px;
1612
- font-size: 12px;
1613
- color: var(--muted);
1614
- }
1615
-
1616
- .composer-row select,
1617
- .size-input,
1618
- .chat-composer textarea {
1619
- width: 100%;
1620
- border: 1px solid var(--line);
1621
- background: var(--bg-1);
1622
- color: var(--text);
1623
- border-radius: 8px;
1624
- padding: 8px 10px;
1625
- }
1626
-
1627
- .chat-composer textarea {
1628
- resize: vertical;
1629
- min-height: 96px;
1630
- }
1631
-
1632
- .composer-actions {
1633
- display: flex;
1634
- gap: 8px;
1635
- align-items: center;
1636
- }
1637
-
1638
- .composer-actions .ghost-btn {
1639
- flex: 0 0 auto;
1640
- white-space: nowrap;
1641
- }
1642
-
1643
- .composer-actions button[type='submit'] {
1644
- flex: 1;
1645
- border: none;
1646
- border-radius: 10px;
1647
- padding: 10px 12px;
1648
- background: linear-gradient(135deg, #2bb8aa, #3dd6c6 55%, #7be7b0);
1649
- color: #06221f;
1650
- font-weight: 700;
1651
- cursor: pointer;
1652
- }
1653
-
1654
- .composer-actions button[type='submit']:disabled {
1655
- opacity: 0.55;
1656
- cursor: not-allowed;
1657
- }
1658
-
1659
- .ctx-menu {
1660
- position: fixed;
1661
- z-index: 50;
1662
- min-width: 160px;
1663
- padding: 6px;
1664
- border-radius: 10px;
1665
- border: 1px solid var(--line);
1666
- background: rgba(18, 21, 26, 0.96);
1667
- box-shadow: var(--shadow);
1668
- display: flex;
1669
- flex-direction: column;
1670
- gap: 2px;
1671
- }
1672
-
1673
- .ctx-menu[hidden] {
1674
- display: none !important;
1675
- }
1676
-
1677
- .ctx-menu button {
1678
- border: none;
1679
- background: transparent;
1680
- color: var(--text);
1681
- text-align: left;
1682
- padding: 8px 10px;
1683
- border-radius: 8px;
1684
- cursor: pointer;
1685
- }
1686
-
1687
- .ctx-menu button:hover {
1688
- background: rgba(61, 214, 198, 0.12);
1689
- }
1690
-
1691
- .ctx-menu button[hidden] {
1692
- display: none !important;
1693
- }
1694
-
1695
- .ctx-menu button.ctx-danger {
1696
- color: var(--danger);
1697
- }
1698
-
1699
- .ctx-menu button.ctx-danger:hover {
1700
- background: rgba(255, 107, 122, 0.12);
1701
- }
1702
-
1703
- .modal-backdrop {
1704
- position: fixed;
1705
- inset: 0;
1706
- z-index: 60;
1707
- display: flex;
1708
- align-items: center;
1709
- justify-content: center;
1710
- padding: 24px;
1711
- background: rgba(6, 8, 12, 0.62);
1712
- backdrop-filter: blur(4px);
1713
- }
1714
-
1715
- .modal-backdrop-dark {
1716
- background: rgba(0, 0, 0, 0.82);
1717
- backdrop-filter: none;
1718
- }
1719
-
1720
- .modal-backdrop[hidden] {
1721
- display: none !important;
1722
- }
1723
-
1724
- .modal-dialog {
1725
- width: min(440px, 100%);
1726
- max-height: min(80vh, 640px);
1727
- overflow: auto;
1728
- padding: 16px;
1729
- border-radius: 14px;
1730
- border: 1px solid var(--line);
1731
- background: rgba(18, 21, 26, 0.98);
1732
- box-shadow: var(--shadow);
1733
- display: flex;
1734
- flex-direction: column;
1735
- gap: 12px;
1736
- }
1737
-
1738
- .modal-dialog-wide {
1739
- width: min(640px, 100%);
1740
- }
1741
-
1742
- .modal-dialog-layer-decomposition {
1743
- width: min(760px, 100%);
1744
- max-height: min(92vh, 880px);
1745
- }
1746
-
1747
- .modal-dialog-interactive-edit {
1748
- width: min(1480px, calc(100vw - 32px));
1749
- height: min(94vh, 980px);
1750
- max-height: none;
1751
- overflow: hidden;
1752
- padding: 12px;
1753
- }
1754
-
1755
- .interactive-editor-host {
1756
- position: relative;
1757
- flex: 1 1 auto;
1758
- min-height: 440px;
1759
- overflow: hidden;
1760
- border: 1px solid var(--line);
1761
- border-radius: 14px;
1762
- background:
1763
- radial-gradient(circle at 50% 15%, rgba(61, 214, 198, 0.06), transparent 38%),
1764
- var(--bg-0);
1765
- }
1766
-
1767
- .interactive-editor-host .ptro-wrapper {
1768
- bottom: 0 !important;
1769
- color: var(--text);
1770
- background:
1771
- radial-gradient(circle at 50% 12%, rgba(61, 214, 198, 0.06), transparent 40%),
1772
- var(--bg-0) !important;
1773
- font-family: 'DM Sans', sans-serif !important;
1774
- }
1775
-
1776
- .interactive-editor-host .ptro-wrapper .ptro-substrate {
1777
- opacity: 1 !important;
1778
- background: var(--bg-1) !important;
1779
- }
1780
-
1781
- .interactive-editor-host .ptro-scroller {
1782
- padding: 20px 20px 20px 72px;
1783
- scrollbar-color: rgba(147, 160, 180, 0.45) transparent;
1784
- scrollbar-width: thin;
1785
- }
1786
-
1787
- .interactive-editor-host .ptro-scroller::-webkit-scrollbar {
1788
- width: 8px;
1789
- height: 8px;
1790
- }
1791
-
1792
- .interactive-editor-host .ptro-scroller::-webkit-scrollbar-thumb {
1793
- border: 2px solid transparent;
1794
- border-radius: 999px;
1795
- background: rgba(147, 160, 180, 0.45);
1796
- background-clip: padding-box;
1797
- }
1798
-
1799
- .interactive-editor-host.is-panning .ptro-scroller,
1800
- .interactive-editor-host.is-panning .ptro-crp-el {
1801
- cursor: grabbing !important;
1802
- }
1803
-
1804
- .interactive-editor-host .ptro-bar {
1805
- top: 50% !important;
1806
- right: auto !important;
1807
- bottom: auto !important;
1808
- left: 14px !important;
1809
- width: auto !important;
1810
- height: auto !important;
1811
- display: flex;
1812
- justify-content: flex-start;
1813
- transform: translateY(-50%);
1814
- pointer-events: none;
1815
- background: transparent !important;
1816
- color: var(--text) !important;
1817
- font-family: 'DM Sans', sans-serif !important;
1818
- z-index: 30;
1819
- }
1820
-
1821
- .interactive-editor-host .ptro-bar > div {
1822
- position: relative;
1823
- width: max-content;
1824
- max-width: none;
1825
- height: auto !important;
1826
- min-width: 46px;
1827
- min-height: 0;
1828
- margin: 0 auto;
1829
- padding: 6px;
1830
- display: flex;
1831
- flex-direction: column;
1832
- align-items: center;
1833
- justify-content: center;
1834
- gap: 4px;
1835
- overflow: visible !important;
1836
- pointer-events: auto;
1837
- border: 1px solid var(--line);
1838
- border-radius: 15px;
1839
- background: rgba(26, 31, 39, 0.92);
1840
- box-shadow: 0 14px 34px rgba(0, 0, 0, 0.42);
1841
- backdrop-filter: blur(18px);
1842
- }
1843
-
1844
- .interactive-editor-host .ptro-bar .ptro-icon-btn {
1845
- width: 34px !important;
1846
- height: 34px !important;
1847
- margin: 0 !important;
1848
- padding: 0;
1849
- flex: 0 0 34px;
1850
- border: 1px solid transparent !important;
1851
- border-radius: 50%;
1852
- color: var(--muted) !important;
1853
- background: transparent !important;
1854
- box-shadow: none !important;
1855
- transition:
1856
- color 120ms ease,
1857
- border-color 120ms ease,
1858
- background 120ms ease,
1859
- transform 120ms ease;
1860
- }
1861
-
1862
- .interactive-editor-host .ptro-bar .ptro-icon-btn:hover:not(:disabled) {
1863
- color: var(--text) !important;
1864
- border-color: var(--line) !important;
1865
- background: var(--bg-2) !important;
1866
- transform: translateY(-1px);
1867
- }
1868
-
1869
- .interactive-editor-host .ptro-bar .ptro-icon-btn.ptro-color-active-control {
1870
- color: #071311 !important;
1871
- border-color: rgba(61, 214, 198, 0.72) !important;
1872
- background: var(--accent) !important;
1873
- box-shadow: 0 6px 18px rgba(61, 214, 198, 0.2) !important;
1874
- }
1875
-
1876
- .interactive-editor-host .ptro-bar .ptro-icon-btn:disabled {
1877
- opacity: 0.3;
1878
- cursor: not-allowed;
1879
- }
1880
-
1881
- .interactive-editor-host .ptro-bar .ptro-icon-btn svg {
1882
- width: 18px;
1883
- height: 18px;
1884
- fill: none;
1885
- stroke: currentColor;
1886
- stroke-width: 1.8;
1887
- stroke-linecap: round;
1888
- stroke-linejoin: round;
1889
- pointer-events: none;
1890
- }
1891
-
1892
- .interactive-editor-host .ptro-tool-controls {
1893
- position: absolute;
1894
- top: 0;
1895
- bottom: auto;
1896
- left: calc(100% + 10px);
1897
- width: max-content;
1898
- min-height: 42px;
1899
- max-width: none;
1900
- padding: 5px 8px;
1901
- display: flex;
1902
- align-items: center;
1903
- justify-content: center;
1904
- gap: 7px;
1905
- flex-wrap: nowrap;
1906
- overflow: visible;
1907
- transform: translateY(-50%);
1908
- border: 1px solid var(--line);
1909
- border-radius: 12px;
1910
- background: rgba(26, 31, 39, 0.94);
1911
- box-shadow: 0 10px 28px rgba(0, 0, 0, 0.36);
1912
- backdrop-filter: blur(16px);
1913
- }
1914
-
1915
- .interactive-editor-host .ptro-bar:not(.has-tool-options) .ptro-tool-controls,
1916
- .interactive-editor-host .ptro-tool-controls:empty {
1917
- display: none;
1918
- }
1919
-
1920
- .interactive-editor-host .ptro-tool-controls .ptro-tool-ctl-name {
1921
- margin: 0 0 0 4px !important;
1922
- padding: 0 !important;
1923
- flex: 0 0 auto;
1924
- border-radius: 0 !important;
1925
- color: var(--muted);
1926
- background: transparent !important;
1927
- font-family: 'DM Sans', sans-serif !important;
1928
- font-size: 12px;
1929
- line-height: 32px;
1930
- }
1931
-
1932
- .interactive-editor-host .ptro-tool-controls .ptro-input,
1933
- .interactive-editor-host .ptro-tool-controls select.ptro-input {
1934
- width: 64px !important;
1935
- height: 32px !important;
1936
- padding: 0 8px !important;
1937
- border: 1px solid var(--line) !important;
1938
- border-radius: 9px;
1939
- color: var(--text) !important;
1940
- background: var(--bg-0) !important;
1941
- box-shadow: none !important;
1942
- font-family: 'DM Sans', sans-serif !important;
1943
- font-size: 13px !important;
1944
- }
1945
-
1946
- .interactive-editor-host .ptro-tool-controls .ptro-color-btn {
1947
- position: relative;
1948
- z-index: 2;
1949
- width: 28px !important;
1950
- height: 28px !important;
1951
- flex: 0 0 28px;
1952
- border: 2px solid rgba(255, 255, 255, 0.82) !important;
1953
- border-radius: 50%;
1954
- box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.45) !important;
1955
- }
1956
-
1957
- .interactive-editor-host .ptro-tool-controls .ptro-btn-color-checkers-bar {
1958
- display: none;
1959
- }
1960
-
1961
- .interactive-editor-host .interactive-crop-hint {
1962
- color: var(--muted);
1963
- font-size: 12px;
1964
- white-space: nowrap;
1965
- }
1966
-
1967
- .interactive-editor-host .interactive-crop-apply {
1968
- height: 30px;
1969
- padding: 0 11px;
1970
- border: 1px solid rgba(61, 214, 198, 0.42);
1971
- border-radius: 8px;
1972
- color: #071311;
1973
- background: var(--accent);
1974
- font-size: 12px;
1975
- font-weight: 700;
1976
- cursor: pointer;
1977
- }
1978
-
1979
- .interactive-editor-host .interactive-crop-apply:hover {
1980
- filter: brightness(1.06);
1981
- }
1982
-
1983
- .interactive-editor-host .ptro-tool-controls [data-id='shadowOn'],
1984
- .interactive-editor-host .ptro-tool-controls [data-id='fontName'],
1985
- .interactive-editor-host .ptro-tool-controls [data-id='fontIsBold'],
1986
- .interactive-editor-host .ptro-tool-controls [data-id='fontIsItalic'],
1987
- .interactive-editor-host .ptro-tool-controls [data-id='fontStrokeAndShadow'],
1988
- .interactive-editor-host .ptro-tool-controls .ptro-tool-ctl-name:has(+ [data-id='shadowOn']),
1989
- .interactive-editor-host .ptro-tool-controls .ptro-tool-ctl-name:has(+ [data-id='fontName']),
1990
- .interactive-editor-host .ptro-tool-controls .ptro-tool-ctl-name:has(+ [data-id='fontIsBold']),
1991
- .interactive-editor-host .ptro-tool-controls .ptro-tool-ctl-name:has(+ [data-id='fontIsItalic']),
1992
- .interactive-editor-host .ptro-tool-controls .ptro-tool-ctl-name:has(+ [data-id='fontStrokeAndShadow']) {
1993
- display: none !important;
1994
- }
1995
-
1996
- .interactive-editor-host .ptro-info,
1997
- .interactive-editor-host .ptro-bar-right {
1998
- display: none !important;
1999
- }
2000
-
2001
- .interactive-editor-host .ptro-common-widget-wrapper {
2002
- color: var(--text);
2003
- background: rgba(7, 10, 14, 0.62) !important;
2004
- backdrop-filter: blur(4px);
2005
- }
2006
-
2007
- .interactive-editor-host .ptro-pallet,
2008
- .interactive-editor-host .ptro-color-widget-wrapper .ptro-v-middle-in {
2009
- border: 1px solid var(--line);
2010
- border-radius: 14px;
2011
- background: var(--bg-1);
2012
- box-shadow: var(--shadow);
2013
- }
2014
-
2015
- .interactive-edit-compose {
2016
- flex: 0 0 auto;
2017
- display: flex;
2018
- flex-direction: column;
2019
- gap: 8px;
2020
- }
2021
-
2022
- .interactive-edit-compose .layer-decomposition-prompt {
2023
- width: 100%;
2024
- }
2025
-
2026
- .interactive-edit-compose > .modal-actions {
2027
- padding-top: 0;
2028
- }
2029
-
2030
- @media (max-width: 760px) {
2031
- .modal-dialog-interactive-edit {
2032
- width: calc(100vw - 16px);
2033
- height: calc(100vh - 16px);
2034
- }
2035
-
2036
- .interactive-editor-host {
2037
- min-height: 360px;
2038
- }
2039
-
2040
- }
2041
-
2042
- .layer-decomposition-preview {
2043
- display: flex;
2044
- align-items: center;
2045
- justify-content: center;
2046
- min-height: 260px;
2047
- max-height: 55vh;
2048
- overflow: hidden;
2049
- border: 1px solid var(--line);
2050
- border-radius: 12px;
2051
- background:
2052
- linear-gradient(45deg, rgba(255, 255, 255, 0.035) 25%, transparent 25%),
2053
- linear-gradient(-45deg, rgba(255, 255, 255, 0.035) 25%, transparent 25%),
2054
- linear-gradient(45deg, transparent 75%, rgba(255, 255, 255, 0.035) 75%),
2055
- linear-gradient(-45deg, transparent 75%, rgba(255, 255, 255, 0.035) 75%),
2056
- #0a0c10;
2057
- background-position: 0 0, 0 10px, 10px -10px, -10px 0;
2058
- background-size: 20px 20px;
2059
- }
2060
-
2061
- .layer-decomposition-preview img {
2062
- display: block;
2063
- max-width: 100%;
2064
- max-height: 55vh;
2065
- object-fit: contain;
2066
- }
2067
-
2068
- .layer-decomposition-prompt {
2069
- display: flex;
2070
- flex-direction: column;
2071
- gap: 7px;
2072
- color: var(--muted);
2073
- font-size: 12px;
2074
- }
2075
-
2076
- .layer-decomposition-prompt textarea {
2077
- width: 100%;
2078
- min-height: 100px;
2079
- resize: vertical;
2080
- border: 1px solid var(--line);
2081
- border-radius: 9px;
2082
- padding: 10px 12px;
2083
- background: var(--bg-1);
2084
- color: var(--text);
2085
- font: inherit;
2086
- line-height: 1.5;
2087
- }
2088
-
2089
- .layer-decomposition-prompt textarea:focus {
2090
- outline: 1px solid rgba(61, 214, 198, 0.7);
2091
- border-color: rgba(61, 214, 198, 0.7);
2092
- }
2093
-
2094
- .split-anchor-grid {
2095
- display: grid;
2096
- grid-template-columns: repeat(3, minmax(0, 1fr));
2097
- gap: 8px;
2098
- }
2099
-
2100
- .split-anchor-btn {
2101
- display: flex;
2102
- align-items: center;
2103
- justify-content: center;
2104
- gap: 7px;
2105
- min-width: 0;
2106
- padding: 9px 7px;
2107
- border: 1px solid var(--line);
2108
- border-radius: 9px;
2109
- background: rgba(255, 255, 255, 0.025);
2110
- color: var(--muted);
2111
- cursor: pointer;
2112
- }
2113
-
2114
- .split-anchor-btn:hover:not(:disabled) {
2115
- border-color: rgba(61, 214, 198, 0.5);
2116
- color: var(--text);
2117
- }
2118
-
2119
- .split-anchor-btn.is-selected {
2120
- border-color: var(--accent);
2121
- background: rgba(61, 214, 198, 0.14);
2122
- color: var(--text);
2123
- }
2124
-
2125
- .split-anchor-btn > span {
2126
- position: relative;
2127
- width: 20px;
2128
- height: 20px;
2129
- flex: 0 0 auto;
2130
- border: 1px solid rgba(255, 255, 255, 0.28);
2131
- border-radius: 4px;
2132
- }
2133
-
2134
- .split-anchor-btn > span::after {
2135
- content: '';
2136
- position: absolute;
2137
- width: 5px;
2138
- height: 5px;
2139
- border-radius: 50%;
2140
- background: currentColor;
2141
- left: var(--anchor-x, 50%);
2142
- top: var(--anchor-y, 50%);
2143
- transform: translate(-50%, -50%);
2144
- }
2145
-
2146
- .split-anchor-btn[data-anchor$='left'],
2147
- .split-anchor-btn[data-anchor='left'] { --anchor-x: 15%; }
2148
- .split-anchor-btn[data-anchor$='right'],
2149
- .split-anchor-btn[data-anchor='right'] { --anchor-x: 85%; }
2150
- .split-anchor-btn[data-anchor^='top'],
2151
- .split-anchor-btn[data-anchor='top'] { --anchor-y: 15%; }
2152
- .split-anchor-btn[data-anchor^='bottom'],
2153
- .split-anchor-btn[data-anchor='bottom'] { --anchor-y: 85%; }
2154
-
2155
- .modal-hint {
2156
- margin: 0;
2157
- font-size: 13px;
2158
- color: var(--muted);
2159
- }
2160
-
2161
- .modal-actions {
2162
- display: flex;
2163
- justify-content: flex-end;
2164
- gap: 8px;
2165
- padding-top: 4px;
2166
- }
2167
-
2168
- .frame-extract-field input[type='number'] {
2169
- width: 72px;
2170
- border: 1px solid rgba(255, 255, 255, 0.12);
2171
- border-radius: 7px;
2172
- background: rgba(10, 12, 16, 0.72);
2173
- color: var(--text);
2174
- font-size: 13px;
2175
- padding: 6px 8px;
2176
- }
2177
-
2178
- .frame-extract-range {
2179
- color: var(--muted);
2180
- font-family: 'JetBrains Mono', monospace;
2181
- font-size: 11px;
2182
- }
2183
-
2184
- .seq-sheet-fields {
2185
- display: flex;
2186
- gap: 16px;
2187
- flex-wrap: wrap;
2188
- }
2189
-
2190
- .seq-sheet-preview {
2191
- display: grid;
2192
- gap: 3px;
2193
- width: fit-content;
2194
- max-width: 100%;
2195
- padding: 8px;
2196
- border-radius: 8px;
2197
- border: 1px solid rgba(255, 255, 255, 0.08);
2198
- background: rgba(0, 0, 0, 0.28);
2199
- }
2200
-
2201
- .seq-sheet-cell {
2202
- width: 18px;
2203
- height: 18px;
2204
- border-radius: 3px;
2205
- background: rgba(255, 255, 255, 0.06);
2206
- border: 1px solid rgba(255, 255, 255, 0.08);
2207
- font-size: 9px;
2208
- line-height: 18px;
2209
- text-align: center;
2210
- color: rgba(255, 255, 255, 0.35);
2211
- font-family: 'JetBrains Mono', monospace;
2212
- }
2213
-
2214
- .seq-sheet-cell.is-filled {
2215
- background: rgba(61, 214, 198, 0.35);
2216
- border-color: rgba(61, 214, 198, 0.55);
2217
- color: var(--text);
2218
- }
2219
-
2220
- .seq-panel-head {
2221
- display: flex;
2222
- align-items: center;
2223
- justify-content: space-between;
2224
- gap: 8px;
2225
- }
2226
-
2227
- .seq-field {
2228
- display: flex;
2229
- align-items: center;
2230
- gap: 8px;
2231
- font-size: 12px;
2232
- color: var(--muted);
2233
- }
2234
-
2235
- .seq-field input[type='range'] {
2236
- flex: 1;
2237
- }
2238
-
2239
- @media (max-width: 960px) {
2240
- .app {
2241
- display: block;
2242
- }
2243
-
2244
- .inspector {
2245
- width: min(300px, 85vw);
2246
- }
2247
- }
1
+ @import './styles/base.css';
2
+ @import './styles/layout.css';
3
+ @import './styles/inspector.css';
4
+ @import './styles/canvas.css';
5
+ @import './styles/nodes.css';
6
+ @import './styles/dialogs.css';
7
+ @import './styles/map.css';
8
+ @import './styles/controls.css';
9
+ @import './styles/feature-form.css';