@lumenkey/cli 0.3.1 → 0.4.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/README.md +36 -2
  2. package/dist/cli/copied.js +86 -85
  3. package/dist/cli/index.js +56 -44
  4. package/dist/cli/render.js +3 -2
  5. package/dist/core/asset-stream.d.ts +16 -0
  6. package/dist/core/asset-stream.js +64 -0
  7. package/dist/core/atomic-config-file.js +8 -7
  8. package/dist/core/chinese-messages.d.ts +4 -0
  9. package/dist/core/chinese-messages.js +907 -0
  10. package/dist/core/chinese-script.d.ts +7 -0
  11. package/dist/core/chinese-script.js +28 -0
  12. package/dist/core/client.js +2 -1
  13. package/dist/core/config-dir.js +2 -1
  14. package/dist/core/config.js +7 -6
  15. package/dist/core/download-root.d.ts +5 -0
  16. package/dist/core/download-root.js +64 -0
  17. package/dist/core/download.js +15 -12
  18. package/dist/core/generation-input.js +3 -2
  19. package/dist/core/generation.d.ts +8 -1
  20. package/dist/core/generation.js +13 -10
  21. package/dist/core/job-display.js +7 -6
  22. package/dist/core/locale.js +163 -148
  23. package/dist/core/outcome.js +6 -4
  24. package/dist/core/output-path.d.ts +3 -1
  25. package/dist/core/output-path.js +5 -2
  26. package/dist/core/params.js +26 -25
  27. package/dist/core/profiles.js +5 -4
  28. package/dist/core/set-values.d.ts +0 -1
  29. package/dist/core/set-values.js +7 -7
  30. package/dist/core/submission-journal.js +31 -16
  31. package/dist/core/version.js +2 -3
  32. package/dist/mcp/server.js +30 -29
  33. package/dist/studio/asset-integrity-hash.d.ts +28 -0
  34. package/dist/studio/asset-integrity-hash.js +93 -0
  35. package/dist/studio/asset-integrity-queue.d.ts +24 -0
  36. package/dist/studio/asset-integrity-queue.js +94 -0
  37. package/dist/studio/asset-store.d.ts +52 -0
  38. package/dist/studio/asset-store.js +352 -0
  39. package/dist/studio/canvas/LICENSES.txt +1590 -0
  40. package/dist/studio/canvas/dependencies.json +862 -0
  41. package/dist/studio/canvas/director-source-manifest.json +47 -0
  42. package/dist/studio/canvas/editor.css +239 -0
  43. package/dist/studio/canvas/editor.js +4613 -0
  44. package/dist/studio/canvas/integration-source-manifest.json +384 -0
  45. package/dist/studio/canvas/source-manifest.json +240 -0
  46. package/dist/studio/canvas-store.d.ts +1254 -0
  47. package/dist/studio/canvas-store.js +205 -0
  48. package/dist/studio/capture-placement.d.ts +11 -0
  49. package/dist/studio/capture-placement.js +85 -0
  50. package/dist/studio/cloud-contract.d.ts +128 -0
  51. package/dist/studio/cloud-contract.js +229 -0
  52. package/dist/studio/cloud-service.d.ts +178 -0
  53. package/dist/studio/cloud-service.js +202 -0
  54. package/dist/studio/director-captures.d.ts +59 -0
  55. package/dist/studio/director-captures.js +141 -0
  56. package/dist/studio/director-contract.d.ts +1489 -0
  57. package/dist/studio/director-contract.js +288 -0
  58. package/dist/studio/director-png.d.ts +6 -0
  59. package/dist/studio/director-png.js +41 -0
  60. package/dist/studio/director-relations.d.ts +40 -0
  61. package/dist/studio/director-relations.js +103 -0
  62. package/dist/studio/document-authority.d.ts +7 -0
  63. package/dist/studio/document-authority.js +50 -0
  64. package/dist/studio/draft-store.d.ts +95 -0
  65. package/dist/studio/draft-store.js +100 -0
  66. package/dist/studio/errors.d.ts +85 -0
  67. package/dist/studio/errors.js +94 -0
  68. package/dist/studio/launch.d.ts +5 -0
  69. package/dist/studio/launch.js +31 -0
  70. package/dist/studio/media.d.ts +9 -0
  71. package/dist/studio/media.js +50 -0
  72. package/dist/studio/output-save-contract.d.ts +1321 -0
  73. package/dist/studio/output-save-contract.js +26 -0
  74. package/dist/studio/output-save-journal.d.ts +971 -0
  75. package/dist/studio/output-save-journal.js +287 -0
  76. package/dist/studio/output-save-recovery.d.ts +18 -0
  77. package/dist/studio/output-save-recovery.js +161 -0
  78. package/dist/studio/output-save-service.d.ts +436 -0
  79. package/dist/studio/output-save-service.js +251 -0
  80. package/dist/studio/output-save-worker.d.ts +40 -0
  81. package/dist/studio/output-save-worker.js +360 -0
  82. package/dist/studio/paths.d.ts +6 -0
  83. package/dist/studio/paths.js +68 -0
  84. package/dist/studio/run-journal.d.ts +993 -0
  85. package/dist/studio/run-journal.js +125 -0
  86. package/dist/studio/server.d.ts +17 -0
  87. package/dist/studio/server.js +440 -0
  88. package/dist/studio/session.d.ts +6 -0
  89. package/dist/studio/session.js +26 -0
  90. package/dist/studio/shell.d.ts +3 -0
  91. package/dist/studio/shell.js +23 -0
  92. package/dist/studio/style.d.ts +2 -0
  93. package/dist/studio/style.js +29 -0
  94. package/dist/studio/types.d.ts +26 -0
  95. package/dist/studio/types.js +2 -0
  96. package/dist/studio/web/app.d.ts +2 -0
  97. package/dist/studio/web/app.js +662 -0
  98. package/dist/studio/web/asset-controller.d.ts +37 -0
  99. package/dist/studio/web/asset-controller.js +191 -0
  100. package/dist/studio/web/asset-model.d.ts +29 -0
  101. package/dist/studio/web/asset-model.js +51 -0
  102. package/dist/studio/web/controller.d.ts +113 -0
  103. package/dist/studio/web/controller.js +401 -0
  104. package/dist/studio/web/messages.d.ts +2 -0
  105. package/dist/studio/web/messages.js +74 -0
  106. package/dist/studio/web/model.d.ts +75 -0
  107. package/dist/studio/web/model.js +182 -0
  108. package/dist/studio/web/save-controller.d.ts +85 -0
  109. package/dist/studio/web/save-controller.js +495 -0
  110. package/dist/studio/web/save-model.d.ts +63 -0
  111. package/dist/studio/web/save-model.js +64 -0
  112. package/dist/studio/web/save-queue.d.ts +7 -0
  113. package/dist/studio/web/save-queue.js +62 -0
  114. package/dist/studio/web/save-view.d.ts +9 -0
  115. package/dist/studio/web/save-view.js +19 -0
  116. package/dist/studio/writer-lock.d.ts +5 -0
  117. package/dist/studio/writer-lock.js +88 -0
  118. package/package.json +11 -5
  119. package/dist/cli/copied.d.ts.map +0 -1
  120. package/dist/cli/copied.js.map +0 -1
  121. package/dist/cli/index.d.ts.map +0 -1
  122. package/dist/cli/index.js.map +0 -1
  123. package/dist/cli/render.d.ts.map +0 -1
  124. package/dist/cli/render.js.map +0 -1
  125. package/dist/core/atomic-config-file.d.ts.map +0 -1
  126. package/dist/core/atomic-config-file.js.map +0 -1
  127. package/dist/core/chat.d.ts.map +0 -1
  128. package/dist/core/chat.js.map +0 -1
  129. package/dist/core/client.d.ts.map +0 -1
  130. package/dist/core/client.js.map +0 -1
  131. package/dist/core/config-dir.d.ts.map +0 -1
  132. package/dist/core/config-dir.js.map +0 -1
  133. package/dist/core/config-error.d.ts.map +0 -1
  134. package/dist/core/config-error.js.map +0 -1
  135. package/dist/core/config.d.ts.map +0 -1
  136. package/dist/core/config.js.map +0 -1
  137. package/dist/core/credit-cap.d.ts.map +0 -1
  138. package/dist/core/credit-cap.js.map +0 -1
  139. package/dist/core/download.d.ts.map +0 -1
  140. package/dist/core/download.js.map +0 -1
  141. package/dist/core/error-result.d.ts.map +0 -1
  142. package/dist/core/error-result.js.map +0 -1
  143. package/dist/core/explain.d.ts.map +0 -1
  144. package/dist/core/explain.js.map +0 -1
  145. package/dist/core/generation-input.d.ts.map +0 -1
  146. package/dist/core/generation-input.js.map +0 -1
  147. package/dist/core/generation-result.d.ts.map +0 -1
  148. package/dist/core/generation-result.js.map +0 -1
  149. package/dist/core/generation.d.ts.map +0 -1
  150. package/dist/core/generation.js.map +0 -1
  151. package/dist/core/job-display.d.ts.map +0 -1
  152. package/dist/core/job-display.js.map +0 -1
  153. package/dist/core/locale.d.ts.map +0 -1
  154. package/dist/core/locale.js.map +0 -1
  155. package/dist/core/origin.d.ts.map +0 -1
  156. package/dist/core/origin.js.map +0 -1
  157. package/dist/core/outcome.d.ts.map +0 -1
  158. package/dist/core/outcome.js.map +0 -1
  159. package/dist/core/output-path.d.ts.map +0 -1
  160. package/dist/core/output-path.js.map +0 -1
  161. package/dist/core/params.d.ts.map +0 -1
  162. package/dist/core/params.js.map +0 -1
  163. package/dist/core/poller.d.ts.map +0 -1
  164. package/dist/core/poller.js.map +0 -1
  165. package/dist/core/profiles.d.ts.map +0 -1
  166. package/dist/core/profiles.js.map +0 -1
  167. package/dist/core/set-values.d.ts.map +0 -1
  168. package/dist/core/set-values.js.map +0 -1
  169. package/dist/core/submission-journal.d.ts.map +0 -1
  170. package/dist/core/submission-journal.js.map +0 -1
  171. package/dist/core/types.d.ts.map +0 -1
  172. package/dist/core/types.js.map +0 -1
  173. package/dist/core/version.d.ts.map +0 -1
  174. package/dist/core/version.js.map +0 -1
  175. package/dist/core/wait.d.ts.map +0 -1
  176. package/dist/core/wait.js.map +0 -1
  177. package/dist/index.d.ts.map +0 -1
  178. package/dist/index.js.map +0 -1
  179. package/dist/mcp/render.d.ts.map +0 -1
  180. package/dist/mcp/render.js.map +0 -1
  181. package/dist/mcp/server.d.ts.map +0 -1
  182. package/dist/mcp/server.js.map +0 -1
@@ -0,0 +1,47 @@
1
+ {
2
+ "repository": "https://github.com/jiguang132/storyai-3d-director-desk",
3
+ "commit": "8c8bd361790be4d37158a7430365e65546e358fe",
4
+ "adaptation": "Selected code copied byte-for-byte; no source application store/assets/bridge. Studio integration is separate ui/director code.",
5
+ "files": [
6
+ {
7
+ "file": "LICENSE",
8
+ "sha256": "d783d23cbbc9d9ee58bd7b0afda816804899133c75c39be47903940bb65b7bfa"
9
+ },
10
+ {
11
+ "file": "src/editor/canvas/viewportAspectFrame.ts",
12
+ "sha256": "ba94952ed4ab07f1b9b187d390fe3b3f8ecbeb5de1337737eac2fd52a605bd19"
13
+ },
14
+ {
15
+ "file": "src/editor/presets/mannequinPosePresets.ts",
16
+ "sha256": "e67d746e004b81900a908d7cdef5edb69793adae090ef3c77d4c04aeaa9d8727"
17
+ },
18
+ {
19
+ "file": "src/editor/runtime/mannequin/bodyTypes.ts",
20
+ "sha256": "61c1337a1a147b59b1f0425397c8dc360885e2c2d41ec08b1deee2ff0b2b0e67"
21
+ },
22
+ {
23
+ "file": "src/editor/runtime/mannequin/mannequinParts.tsx",
24
+ "sha256": "9b6d35a137ebcb2a6bb36cd91333c2e961df7b5cd976cc8403d520d8e7f03635"
25
+ },
26
+ {
27
+ "file": "src/editor/runtime/mannequin/mannequinPose.ts",
28
+ "sha256": "2af4da6463ab2c896d1262edede478728cda8df25dfbfd2f434921efffd4ab3a"
29
+ },
30
+ {
31
+ "file": "src/editor/runtime/mannequin/ProceduralMannequin.tsx",
32
+ "sha256": "2aebc3daf7da16a4579012df895543b6a29fc91cd1f9c4bcfffd922c8c5712f8"
33
+ },
34
+ {
35
+ "file": "src/editor/schema/directorProject.ts",
36
+ "sha256": "52969dbcc71aa0823d6726b50abbdf5a6cabfbe0c239b0a90984684c0b8ba323"
37
+ },
38
+ {
39
+ "file": "src/editor/schema/poseSchema.ts",
40
+ "sha256": "6a0061ad785441b22f424226de3b980c69d306336a327342da1e29d21aa677cb"
41
+ },
42
+ {
43
+ "file": "src/editor/schema/viewportAspectRatio.ts",
44
+ "sha256": "3bdb678a99928e82768c00d0356a1af51467a5bc129883774cdf4f2eea38601c"
45
+ }
46
+ ]
47
+ }
@@ -0,0 +1,239 @@
1
+ .studio-canvas-root,.studio-canvas-root{
2
+ width: 100%;
3
+ height: 100%;
4
+ }.studio-canvas-root input::-ms-clear,.studio-canvas-root input::-ms-reveal{
5
+ display: none;
6
+ }.studio-canvas-root *,.studio-canvas-root *::before,.studio-canvas-root *::after{
7
+ box-sizing: border-box;
8
+ }.studio-canvas-root{
9
+ font-family: sans-serif;
10
+ line-height: 1.15;
11
+ -webkit-text-size-adjust: 100%;
12
+ -ms-text-size-adjust: 100%;
13
+ -ms-overflow-style: scrollbar;
14
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
15
+ }.studio-canvas-root{
16
+ margin: 0;
17
+ }.studio-canvas-root [tabindex='-1']:focus{
18
+ outline: none;
19
+ }.studio-canvas-root hr{
20
+ box-sizing: content-box;
21
+ height: 0;
22
+ overflow: visible;
23
+ }.studio-canvas-root h1,.studio-canvas-root h2,.studio-canvas-root h3,.studio-canvas-root h4,.studio-canvas-root h5,.studio-canvas-root h6{
24
+ margin-top: 0;
25
+ margin-bottom: 0.5em;
26
+ font-weight: 500;
27
+ }.studio-canvas-root p{
28
+ margin-top: 0;
29
+ margin-bottom: 1em;
30
+ }.studio-canvas-root abbr[title],.studio-canvas-root abbr[data-original-title]{
31
+ -webkit-text-decoration: underline dotted;
32
+ text-decoration: underline;
33
+ text-decoration: underline dotted;
34
+ border-bottom: 0;
35
+ cursor: help;
36
+ }.studio-canvas-root address{
37
+ margin-bottom: 1em;
38
+ font-style: normal;
39
+ line-height: inherit;
40
+ }.studio-canvas-root input[type='text'],.studio-canvas-root input[type='password'],.studio-canvas-root input[type='number'],.studio-canvas-root textarea{
41
+ -webkit-appearance: none;
42
+ }.studio-canvas-root ol,.studio-canvas-root ul,.studio-canvas-root dl{
43
+ margin-top: 0;
44
+ margin-bottom: 1em;
45
+ }.studio-canvas-root ol ol,.studio-canvas-root ul ul,.studio-canvas-root ol ul,.studio-canvas-root ul ol{
46
+ margin-bottom: 0;
47
+ }.studio-canvas-root dt{
48
+ font-weight: 500;
49
+ }.studio-canvas-root dd{
50
+ margin-bottom: 0.5em;
51
+ margin-left: 0;
52
+ }.studio-canvas-root blockquote{
53
+ margin: 0 0 1em;
54
+ }.studio-canvas-root dfn{
55
+ font-style: italic;
56
+ }.studio-canvas-root b,.studio-canvas-root strong{
57
+ font-weight: bolder;
58
+ }.studio-canvas-root small{
59
+ font-size: 80%;
60
+ }.studio-canvas-root sub,.studio-canvas-root sup{
61
+ position: relative;
62
+ font-size: 75%;
63
+ line-height: 0;
64
+ vertical-align: baseline;
65
+ }.studio-canvas-root sub{
66
+ bottom: -0.25em;
67
+ }.studio-canvas-root sup{
68
+ top: -0.5em;
69
+ }.studio-canvas-root pre,.studio-canvas-root code,.studio-canvas-root kbd,.studio-canvas-root samp{
70
+ font-size: 1em;
71
+ font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
72
+ }.studio-canvas-root pre{
73
+ margin-top: 0;
74
+ margin-bottom: 1em;
75
+ overflow: auto;
76
+ }.studio-canvas-root figure{
77
+ margin: 0 0 1em;
78
+ }.studio-canvas-root img{
79
+ vertical-align: middle;
80
+ border-style: none;
81
+ }.studio-canvas-root a,.studio-canvas-root area,.studio-canvas-root button,.studio-canvas-root [role='button'],.studio-canvas-root input:not([type='range']),.studio-canvas-root label,.studio-canvas-root select,.studio-canvas-root summary,.studio-canvas-root textarea{
82
+ touch-action: manipulation;
83
+ }.studio-canvas-root table{
84
+ border-collapse: collapse;
85
+ }.studio-canvas-root caption{
86
+ padding-top: 0.75em;
87
+ padding-bottom: 0.3em;
88
+ text-align: left;
89
+ caption-side: bottom;
90
+ }.studio-canvas-root input,.studio-canvas-root button,.studio-canvas-root select,.studio-canvas-root optgroup,.studio-canvas-root textarea{
91
+ margin: 0;
92
+ color: inherit;
93
+ font-size: inherit;
94
+ font-family: inherit;
95
+ line-height: inherit;
96
+ }.studio-canvas-root button,.studio-canvas-root input{
97
+ overflow: visible;
98
+ }.studio-canvas-root button,.studio-canvas-root select{
99
+ text-transform: none;
100
+ }.studio-canvas-root button,.studio-canvas-root [type='button'],.studio-canvas-root [type='reset'],.studio-canvas-root [type='submit']{
101
+ -webkit-appearance: button;
102
+ }.studio-canvas-root button::-moz-focus-inner,.studio-canvas-root [type='button']::-moz-focus-inner,.studio-canvas-root [type='reset']::-moz-focus-inner,.studio-canvas-root [type='submit']::-moz-focus-inner{
103
+ padding: 0;
104
+ border-style: none;
105
+ }.studio-canvas-root input[type='radio'],.studio-canvas-root input[type='checkbox']{
106
+ box-sizing: border-box;
107
+ padding: 0;
108
+ }.studio-canvas-root input[type='date'],.studio-canvas-root input[type='time'],.studio-canvas-root input[type='datetime-local'],.studio-canvas-root input[type='month']{
109
+ -webkit-appearance: listbox;
110
+ }.studio-canvas-root textarea{
111
+ overflow: auto;
112
+ resize: vertical;
113
+ }.studio-canvas-root fieldset{
114
+ min-width: 0;
115
+ margin: 0;
116
+ padding: 0;
117
+ border: 0;
118
+ }.studio-canvas-root legend{
119
+ display: block;
120
+ width: 100%;
121
+ max-width: 100%;
122
+ margin-bottom: 0.5em;
123
+ padding: 0;
124
+ color: inherit;
125
+ font-size: 1.5em;
126
+ line-height: inherit;
127
+ white-space: normal;
128
+ }.studio-canvas-root progress{
129
+ vertical-align: baseline;
130
+ }.studio-canvas-root [type='number']::-webkit-inner-spin-button,.studio-canvas-root [type='number']::-webkit-outer-spin-button{
131
+ height: auto;
132
+ }.studio-canvas-root [type='search']{
133
+ outline-offset: -2px;
134
+ -webkit-appearance: none;
135
+ }.studio-canvas-root [type='search']::-webkit-search-cancel-button,.studio-canvas-root [type='search']::-webkit-search-decoration{
136
+ -webkit-appearance: none;
137
+ }.studio-canvas-root ::-webkit-file-upload-button{
138
+ font: inherit;
139
+ -webkit-appearance: button;
140
+ }.studio-canvas-root output{
141
+ display: inline-block;
142
+ }.studio-canvas-root summary{
143
+ display: list-item;
144
+ }.studio-canvas-root template{
145
+ display: none;
146
+ }.studio-canvas-root [hidden]{
147
+ display: none !important;
148
+ }.studio-canvas-root mark{
149
+ padding: 0.2em;
150
+ background-color: #feffe6;
151
+ }
152
+
153
+ .studio-canvas-root{height:100%;min-width:0;min-height:0;display:flex;flex-direction:column;position:relative;font:14px/1.5 Inter,system-ui,sans-serif;color:var(--ink);background:var(--bg)}
154
+ .studio-canvas-root *,.studio-canvas-root *::before,.studio-canvas-root *::after{box-sizing:border-box}
155
+ /* Ant buttons use transition:all. Do not animate inherited workspace visibility:
156
+ a newly visible canvas must already be keyboard-focusable in its React commit. */
157
+ .studio-canvas-root [data-testid=canvas-spatial-layer] .ant-btn{transition-property:color,background-color,border-color,box-shadow,opacity,transform}
158
+ .studio-canvas-root button{min-height:0}.studio-canvas-root :is(.canvas-document-bar,.canvas-document-list,.canvas-leave-dialog,.studio-canvas-inspector,.canvas-assets-panel,[data-testid=canvas-asset-error]) button{min-height:32px;background:var(--panel2);color:var(--ink);border:1px solid var(--line2);border-radius:6px;padding:6px 10px}.studio-canvas-root input,.studio-canvas-root textarea,.studio-canvas-root select{background:var(--field);color:var(--ink);border:1px solid var(--line2);padding:6px;border-radius:6px}.studio-canvas-root label{display:grid;gap:5px;margin:10px 0}.studio-canvas-root button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
159
+ .canvas-document-bar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:8px 14px;border-bottom:1px solid var(--line);flex:none}.canvas-document-bar input{width:180px}.canvas-document-bar span{font-size:12px}.canvas-document-bar small{margin-left:auto}.canvas-editor-slot{position:relative;flex:1;min-height:0;overflow:clip}.canvas-document-list{padding:28px;overflow:auto}.canvas-document-list p{margin:14px 0}.canvas-document-list>button{margin-right:10px}.canvas-document-item{display:block;width:100%;margin-top:12px;text-align:left}.canvas-document-item small{display:block}.canvas-error{padding:7px 14px;color:var(--ink);background:var(--panel2);border-left:3px solid var(--primary);flex:none;margin:0}.canvas-leave-dialog{position:absolute;z-index:200;inset:25% 12% auto;background:var(--panel);border:1px solid var(--line2);padding:24px;box-shadow:0 0 0 100vmax #0008}.canvas-leave-dialog button{margin:12px 8px 0 0}
160
+ .studio-canvas-editor{background:var(--bg);color:var(--ink)}
161
+ .studio-canvas-editor [data-canvas-title]{user-select:text;-webkit-user-select:text}
162
+ .studio-canvas-editor [data-canvas-title][contenteditable=true]{outline:1px solid var(--primary);outline-offset:2px;cursor:text}.studio-canvas-inspector,.canvas-assets-panel{background:var(--panel);border:1px solid var(--line2);box-shadow:0 20px 50px #0005;color:var(--ink)}.canvas-inspector-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.canvas-inspector-heading span{display:flex;gap:4px}.studio-canvas-inspector textarea{min-height:110px}.canvas-local-note{font-size:11px;color:var(--ink3);margin-top:12px}.canvas-assets-panel{position:absolute;z-index:60;left:82px;top:100px;width:min(300px,calc(100% - 96px));max-height:60%;overflow:auto;padding:16px;border-radius:12px}.canvas-assets-panel header{display:flex;justify-content:space-between;gap:10px}.canvas-assets-panel>button{display:block;width:100%;text-align:left;margin-top:10px}.canvas-assets-panel small{display:block}
163
+ @media(max-width:740px){.studio-canvas-root [data-testid=canvas-zoom-controls]{left:14px!important}.studio-canvas-root [data-testid=canvas-zoom-controls]+div{max-width:140px}.studio-canvas-editor>div:last-child:not([data-testid]){display:none}}
164
+ .studio-canvas-root [data-testid=canvas-topbar]{flex-wrap:wrap;gap:8px}
165
+ .canvas-interaction-bar{position:absolute;left:84px;right:14px;top:78px;z-index:50;pointer-events:auto;user-select:text}
166
+ .canvas-tools-row{display:flex;flex-wrap:nowrap;align-items:center;gap:6px;height:34px}
167
+ .canvas-tools-row button,.canvas-tool-menu summary{white-space:nowrap;background:var(--panel);color:var(--ink);border:1px solid var(--line2);border-radius:6px;padding:5px 9px;font:inherit;font-size:12px;min-height:32px}
168
+ .canvas-tools-row button:disabled{opacity:.5;cursor:not-allowed}.canvas-tool-action{display:inline-flex}
169
+ .canvas-tool-menu{position:relative}.canvas-tool-menu summary{display:flex;gap:10px;align-items:center;cursor:pointer;list-style:none}.canvas-tool-menu summary::-webkit-details-marker{display:none}
170
+ .canvas-tool-menu[open]>summary{border-color:var(--primary)}.canvas-tool-menu summary:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
171
+ .canvas-tool-menu-items{position:absolute;top:calc(100% + 6px);left:0;min-width:178px;max-height:min(420px,50vh);overflow:auto;padding:6px;border:1px solid var(--line2);border-radius:8px;background:var(--panel);display:flex;flex-direction:column;gap:3px}
172
+ .canvas-tool-menu-items .canvas-tool-action,.canvas-tool-menu-items button{width:100%}.canvas-tool-menu-items button{text-align:left;border-color:transparent}.canvas-tool-menu-items button:hover:not(:disabled){background:var(--panel2)}
173
+ .canvas-selection-context{height:36px;display:flex;align-items:center;gap:12px;font-size:12px;color:var(--ink2);white-space:nowrap;overflow:hidden}.canvas-selection-context label{margin:0;display:flex!important;flex:none}.canvas-selection-context input{height:28px}.canvas-selection-context small{overflow:hidden;text-overflow:ellipsis}
174
+ .canvas-panel-pin{display:block;margin-left:auto;margin-bottom:8px}.canvas-inspector-heading strong{min-width:0;overflow-wrap:anywhere}.studio-canvas-inspector,.canvas-assets-panel{box-shadow:none;overscroll-behavior:contain}
175
+ .canvas-document-bar{flex-wrap:nowrap;min-width:0}.canvas-document-bar input{min-width:100px;max-width:26vw}.canvas-document-bar small{white-space:nowrap;font-size:11px}.canvas-document-bar [role=status]{white-space:nowrap}.canvas-document-list{max-width:920px}.canvas-document-item{border-color:var(--line2)!important}
176
+ @media(max-width:740px){.canvas-document-bar{padding:6px}.canvas-document-bar input{width:130px}.canvas-document-bar small{display:none}.studio-canvas-root [data-testid=canvas-topbar]{padding:6px!important;left:5px!important;right:5px!important;top:5px!important}.studio-canvas-root [data-testid=canvas-topbar] h4{font-size:13px}.studio-canvas-root [data-testid=canvas-topbar]>div{gap:5px!important}.canvas-document-list{padding:16px}}
177
+
178
+ .director-workspace{position:absolute;inset:0;z-index:100;display:flex;flex-direction:column;overflow:auto;background:var(--bg);color:var(--ink);user-select:text}.director-workspace[hidden]{display:none}.director-workspace button,.canvas-write-resolution button{background:var(--panel2);color:var(--ink);border:1px solid var(--line2);border-radius:6px;padding:6px 10px;min-height:32px}.director-workspace button:disabled{opacity:.45;cursor:not-allowed}.director-workspace button[aria-pressed=true]{border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}.director-header{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px;background:var(--panel);border-bottom:1px solid var(--line2)}.director-header>div{flex:1;min-width:170px}.director-header small{display:block;color:var(--ink3);margin-top:3px}.director-layout{display:grid;grid-template-columns:180px minmax(260px,1fr) 248px;gap:12px;padding:12px;align-items:start;flex:1}
179
+ .director-layout[data-scene-list=collapsed]{grid-template-columns:72px minmax(260px,1fr) 248px}
180
+ .director-scene-rail{background:var(--panel);border:1px solid var(--line2);border-radius:8px;padding:8px 4px;display:flex;flex-direction:column;align-items:center;min-height:120px}
181
+ .director-scene-rail button{padding:6px 4px;font-size:12px}.director-layout details{background:var(--panel);border:1px solid var(--line2);border-radius:8px;padding:10px;max-height:72vh;overflow:auto}.director-layout summary{cursor:pointer;font-weight:600;margin-bottom:10px}.director-add,.director-actions{display:flex;gap:6px;flex-wrap:wrap}.director-objects ul{list-style:none;padding:0;margin:12px 0}.director-objects li button{width:100%;text-align:left;margin-bottom:6px}.director-stage{min-width:0}.director-stage nav{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.director-stage p{font-size:12px;overflow-wrap:anywhere;margin:8px 0}.director-stage small{display:block;color:var(--ink3)}.director-stage [data-testid=director-viewport]{border-radius:8px;overflow:hidden;max-width:100%}.director-properties fieldset{border:1px solid var(--line2);padding:8px;margin-bottom:12px}.director-properties legend{font-size:12px}.director-vector{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.director-properties input,.director-properties select{width:100%;min-width:0}.director-properties label{font-size:11px}.director-properties small{color:var(--primary)}.director-captures{padding:12px;border-top:1px solid var(--line2);background:var(--panel)}.director-captures p{margin:0 0 8px}.director-captures img{width:180px;max-height:140px;object-fit:contain;border:1px solid var(--line2);border-radius:6px}.director-export-render{position:fixed;left:-20000px;top:0;visibility:hidden;pointer-events:none}.canvas-write-resolution{padding:8px 14px;border-left:3px solid var(--primary);background:var(--panel2);flex:none}.canvas-write-resolution button{margin-right:8px}.canvas-write-resolution p{margin-bottom:8px}
182
+ @media(max-width:1000px){.director-layout{grid-template-columns:150px minmax(240px,1fr)}.director-layout[data-scene-list=collapsed]{grid-template-columns:72px minmax(240px,1fr)}.director-properties{grid-column:1/-1}.director-properties fieldset{display:inline-block;vertical-align:top;width:49%}}
183
+ @media(max-width:650px){.director-layout{display:flex;flex-direction:column}.director-stage{order:-1;width:100%}.director-layout details{width:100%;max-height:45vh}.director-properties fieldset{display:block;width:auto}.director-header{position:static}.director-header button{font-size:12px}.director-header>div{flex-basis:100%}}
184
+ .director-capture-shelf{flex:none;max-height:26vh;overflow:auto;padding:6px 14px;background:var(--panel);border-bottom:1px solid var(--line2)}.director-capture-shelf summary{cursor:pointer;font-size:12px}.director-capture-shelf p{font-size:12px;margin:6px 0}.director-capture-shelf ul{padding:0;list-style:none}.director-capture-shelf li{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0}.director-capture-shelf small{color:var(--ink3)}.director-capture-shelf button{margin-right:6px;border:1px solid var(--line2);border-radius:5px;padding:4px 8px}.director-capture-shelf img{width:160px;max-height:120px;object-fit:contain}
185
+ .director-properties>fieldset{display:block;width:auto;min-width:0;border:0;border-bottom:1px solid var(--line2);margin:0 0 12px;padding:0 0 12px}
186
+ .director-properties>fieldset:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}
187
+ .director-properties legend{font-size:13px;font-weight:600;margin-bottom:8px}
188
+ .director-properties label{display:block;font-size:12px;margin-bottom:8px}
189
+ .director-properties .director-advanced{background:transparent;border:0;border-radius:0;padding:0;margin:10px 0 0;max-height:none;overflow:visible;width:auto}
190
+ .director-properties .director-advanced summary{font-size:12px;font-weight:500;margin-bottom:8px}
191
+ .director-pose-quick,.director-preset-quick{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
192
+ .director-pose-quick button,.director-preset-quick button{flex:1 0 28%;min-height:36px}
193
+ .director-preset-quick button{flex-basis:40%}
194
+ .director-hint{font-size:12px;color:var(--ink2);line-height:1.5;margin:8px 0;overflow-wrap:anywhere}
195
+ .director-workspace :is(button,input,select,summary):focus-visible{outline:2px solid var(--primary);outline-offset:2px}
196
+ .director-stage-frame{position:relative}
197
+ .director-transition-overlay{position:absolute;inset:0;z-index:2;pointer-events:none;border-radius:8px}
198
+ .director-path-draw{position:absolute;inset:0;z-index:3;cursor:crosshair;border-radius:8px}
199
+ .director-timeline{flex:none;border-top:1px solid var(--line2);background:var(--panel);padding:8px 12px}
200
+ .director-timeline .director-actions{margin-bottom:8px;align-items:center}
201
+ .director-playhead-slider{display:block;font-size:12px;margin:6px 0}
202
+ .director-playhead-slider input{width:100%}
203
+ .director-clips{list-style:none;padding:0;margin:6px 0 0;display:flex;flex-wrap:wrap;gap:6px}
204
+ .director-clips li{display:flex;gap:4px;align-items:center}
205
+ .director-clip{font-size:11px}
206
+ .director-tracks{display:flex;flex-direction:column;gap:8px;max-height:22vh;overflow:auto;margin-top:6px}
207
+ .director-track{border:1px solid var(--line2);border-radius:6px;padding:6px}
208
+ .director-track-name{font-size:12px;font-weight:600;margin:0 0 4px}
209
+ .director-track-empty{font-size:11px;color:var(--ink3)}
210
+ .director-clip-inspector{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin:8px 0}
211
+ .director-clip-inspector .director-vector{flex:1 1 100%}
212
+ .director-keyframe-hint{font-size:11px;color:var(--ink3);margin:6px 0}
213
+ .director-crowd{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:8px 0}
214
+ .director-crowd .director-actions,.director-crowd .director-hint{grid-column:1/-1}
215
+ .director-objects label{display:flex;gap:6px;align-items:center;font-size:12px;margin:6px 0}
216
+ @media(max-width:650px){.director-layout>.director-properties{max-height:none;overflow:visible;box-sizing:border-box}.director-properties .director-advanced{max-height:none}.director-pose-quick button{flex-basis:22%}}
217
+
218
+ /* Fixed workspace: only side panels and timeline contents scroll. */
219
+ .director-workspace{overflow:hidden;min-height:0}.director-header{position:relative;flex:none;padding:4px 10px;gap:8px;flex-wrap:nowrap;min-height:44px}.director-header>div{min-width:120px;overflow:hidden}.director-header strong{font-size:14px}.director-header small{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0}.director-header button{font-size:12px;white-space:nowrap}.director-document-status{font-size:11px;margin-left:10px;color:var(--ink2)}
220
+ .director-layout{--director-left-size:var(--director-left-width,180px);--director-right-size:var(--director-right-width,240px);--director-left-gap:6px;--director-right-gap:6px;position:relative;display:grid;grid-template-areas:'objects leftsize stage rightsize properties';grid-template-columns:var(--director-left-size) var(--director-left-gap) minmax(0,1fr) var(--director-right-gap) var(--director-right-size);grid-template-rows:minmax(0,1fr);gap:0;padding:40px 8px 8px;align-items:stretch;min-height:100px;flex:1 1 0;overflow:hidden}
221
+ .director-layout[data-scene-list=collapsed]{--director-left-size:64px;grid-template-columns:var(--director-left-size) var(--director-left-gap) minmax(0,1fr) var(--director-right-gap) var(--director-right-size)}
222
+ .director-layout[data-left=closed]{--director-left-size:0px;--director-left-gap:0px}.director-layout[data-right=closed]{--director-right-size:0px;--director-right-gap:0px}
223
+ .director-layout[data-left=closed]>:is(.director-objects,.director-scene-rail,.director-left-resize),.director-layout[data-right=closed]>:is(.director-properties,.director-right-resize){display:none}
224
+ .director-layout>:is(.director-objects,.director-scene-rail){grid-area:objects;min-height:0;max-height:none;width:auto;overflow:auto;overscroll-behavior:contain}.director-layout>.director-properties{grid-area:properties;min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain;padding:8px;background:var(--panel);border:1px solid var(--line2);border-radius:8px}
225
+ .director-left-resize{grid-area:leftsize}.director-right-resize{grid-area:rightsize}.director-layout-separator{touch-action:none;position:relative;outline-offset:-2px}.director-layout-separator:focus-visible,.director-layout-separator:hover{background:var(--primary);outline:2px solid var(--primary)}.director-layout-separator-x{height:100%;width:6px;cursor:col-resize}.director-layout-separator-y{height:6px;width:100%;cursor:row-resize;flex:none}
226
+ .director-stage{grid-area:stage;display:flex;flex-direction:column;min-width:0;min-height:0;padding:0 6px;overflow:hidden}.director-stage nav{flex:none;flex-wrap:nowrap;align-items:center;gap:4px;margin:0 0 6px;overflow:auto;max-width:100%;min-height:32px}.director-stage nav button{padding:4px 6px;min-height:28px;font-size:12px;white-space:nowrap;flex:none}.director-stage-frame{container-type:size;flex:1 1 0;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden}
227
+ .director-stage [data-testid=director-viewport]{width:min(100cqw,calc(100cqh * var(--director-viewport-aspect)))!important;flex:none;max-height:100%;border:1px solid var(--line2)}
228
+ .director-stage nav.director-stage-tools{position:absolute;top:4px;left:8px;right:8px;width:calc(100% - 16px);max-width:none;height:32px;margin:0}
229
+ .director-stage [data-testid=director-camera-summary]{flex:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:4px 0;font-size:11px}.director-stage>small{flex:none;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
230
+ .director-property-tabs{position:sticky;top:-8px;z-index:2;display:flex;gap:4px;padding:4px 0 8px;background:var(--panel)}.director-property-tabs button{flex:1;font-size:12px;padding:4px;min-height:28px}.director-property-section[hidden]{display:none}.director-property-section>fieldset{display:block;width:100%;min-width:0;border:0;padding:0;margin:6px 0 14px}.director-property-section>fieldset:last-child{margin-bottom:0}.director-property-section legend{font-size:12px}
231
+ .director-timeline{display:flex;flex-direction:column;min-height:0;height:var(--director-timeline-height,84px);max-height:42%;padding:0;overflow:hidden;flex:0 0 auto}.director-timeline[data-collapsed=true]{height:auto;max-height:120px}.director-timeline-content{padding:2px 10px 4px;min-height:0;overflow:auto;overscroll-behavior:contain}.director-timeline .director-actions{gap:4px;margin:0;flex-wrap:nowrap;align-items:center;white-space:nowrap}.director-timeline .director-actions>*{flex:none}.director-timeline button{font-size:11px;padding:3px 6px;min-height:28px;white-space:nowrap}.director-timeline label{font-size:11px}.director-timeline .director-actions>label{display:inline-flex;align-items:center;gap:4px;margin:0}.director-timeline .director-actions select{width:auto;max-width:95px;padding:3px 4px;min-height:28px;font-size:11px}.director-tracks{max-height:none;overflow:visible}.director-timeline .director-playhead-slider{margin:2px 0;display:flex;align-items:center;gap:8px;white-space:nowrap}.director-playhead-slider input{flex:1;min-width:0;width:auto;margin:0;padding:3px}
232
+ .director-capture-shelf{max-height:22vh;padding:4px 14px}.director-capture-shelf[open]{overflow:auto}.director-capture-shelf summary{min-height:22px}
233
+ .studio-canvas-root:has([data-testid=director-workspace]:not([hidden])) .canvas-document-bar{display:none}
234
+ .studio-canvas-root:has([data-testid=director-workspace]:not([hidden]))>.director-capture-shelf{position:absolute;bottom:0;right:10px;z-index:110;max-width:190px;padding:2px 6px;border:0;border-radius:6px;font-size:11px}
235
+ .studio-canvas-root:has([data-testid=director-workspace]:not([hidden]))>.director-capture-shelf[open]{width:min(520px,calc(100% - 20px));max-width:none;max-height:40%;bottom:26px;border:1px solid var(--line2);padding:10px}
236
+ .director-status-line{height:26px;flex:none;display:flex;align-items:center;gap:8px;padding:2px 200px 2px 10px;border-top:1px solid var(--line2);font-size:11px;color:var(--ink2);background:var(--panel);position:relative;min-width:0}.director-status-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.director-current-capture{flex:none}.director-current-capture summary{cursor:pointer;white-space:nowrap}.director-current-capture[open]>img{position:absolute;bottom:100%;right:200px;width:180px;max-height:140px;object-fit:contain;background:var(--panel);border:1px solid var(--line2);border-radius:6px}
237
+ .director-status-text>span+span::before{content:';'}
238
+ @media(max-width:1100px){.director-layout[data-left=auto]{--director-left-size:0px;--director-left-gap:0px}.director-layout[data-left=auto]>:is(.director-objects,.director-scene-rail,.director-left-resize){display:none}.director-header small{max-width:190px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.director-layout-controls span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}
239
+ @media(max-width:740px){.director-header{flex-wrap:nowrap;overflow:auto}.director-header>div{min-width:110px}.director-header button{font-size:11px}.director-layout{--director-right-size:220px}.director-layout-controls span{display:none}}