cozyclay 1.9.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/CHANGELOG.md +171 -0
  2. package/bin/agent/agent-routes.mjs +74 -70
  3. package/bin/agent/agent-runner.mjs +10 -3
  4. package/bin/agent/motion-runtime.mjs +32 -260
  5. package/bin/agent/providers.mjs +46 -3
  6. package/bin/agent/session-store.mjs +41 -5
  7. package/bin/agent/studio-prompt.mjs +1 -1
  8. package/bin/agent/studio-tools.mjs +48 -11
  9. package/bin/cozyclay.mjs +26 -8
  10. package/bin/live/cli.mjs +22 -3
  11. package/bin/mcp-runtime.mjs +35 -20
  12. package/bin/telemetry-state.mjs +5 -2
  13. package/bin/update-check.mjs +15 -0
  14. package/dist/app/index.html +6 -6
  15. package/dist/assets/analytics-MVZOEW8O.js +1 -0
  16. package/dist/assets/app-C1sdVbg4.css +1 -0
  17. package/dist/assets/app-CA55tcI3.js +4876 -0
  18. package/dist/assets/{demo-B-eg1CT8.js → demo-ByeYp-dY.js} +1 -1
  19. package/dist/assets/{first-shot-handoff-CGgnvNu8.js → first-shot-handoff-DgT28ZiV.js} +1 -1
  20. package/dist/assets/{landing-IbRp3FnQ.js → landing-BaXkpFip.js} +1 -1
  21. package/dist/assets/shot-prompt-CbqWcWYi.css +1 -0
  22. package/dist/assets/shot-prompt-Yrt99wZx.js +17 -0
  23. package/dist/assets/{ticket-BgIzOBOf.js → ticket-BcmsnHn5.js} +1 -1
  24. package/dist/assets/workflow-DRdwoDBT.css +1 -0
  25. package/dist/assets/workflow-dNPGY9xz.js +179 -0
  26. package/dist/cozyclay-package.json +1 -1
  27. package/dist/fonts/IBM-Plex-Sans-OFL.txt +92 -0
  28. package/dist/fonts/JetBrains-Mono-OFL.txt +93 -0
  29. package/dist/fonts/README.md +13 -9
  30. package/dist/fonts/ibm-plex-sans-400-latin.woff2 +0 -0
  31. package/dist/fonts/ibm-plex-sans-500-latin.woff2 +0 -0
  32. package/dist/fonts/ibm-plex-sans-600-latin.woff2 +0 -0
  33. package/dist/fonts/jetbrains-mono-400-latin.woff2 +0 -0
  34. package/dist/fonts/jetbrains-mono-500-latin.woff2 +0 -0
  35. package/dist/index.html +7 -7
  36. package/dist/privacy/index.html +13 -8
  37. package/dist/sitemap.xml +6 -6
  38. package/dist/workflow/index.html +5 -5
  39. package/mcp/LIVE-PROTOCOL.md +1 -1
  40. package/mcp/live-hub.mjs +35 -93
  41. package/mcp/mesh-file.mjs +48 -0
  42. package/mcp/server.mjs +6 -77
  43. package/mcp/tool-handlers.mjs +224 -377
  44. package/package.json +2 -1
  45. package/src/App.jsx +1273 -9075
  46. package/src/analytics.js +393 -9
  47. package/src/app-context.js +211 -0
  48. package/src/app-stage.jsx +25 -24
  49. package/src/ardy/auto-fix-panel.css +108 -0
  50. package/src/ardy/collision-blockers.js +9 -3
  51. package/src/ardy/fix-collisions.js +10 -66
  52. package/src/ardy/ground.js +4 -4
  53. package/src/ardy/ik-drag.js +101 -0
  54. package/src/ardy/ik-key-json.js +43 -0
  55. package/src/ardy/ik.js +122 -76
  56. package/src/ardy/physics-panel.css +2 -0
  57. package/src/ardy/physics-panel.jsx +17 -5
  58. package/src/ardy/platform-fit-panel.css +64 -0
  59. package/src/ardy/platform-fit-panel.jsx +40 -0
  60. package/src/ardy/platform-fit.js +326 -0
  61. package/src/ardy/playback.js +166 -20
  62. package/src/ardy/range-pin.js +299 -0
  63. package/src/ardy/timeline-coordinates.js +26 -0
  64. package/src/ardy/timeline.css +1199 -0
  65. package/src/ardy/timeline.jsx +149 -41
  66. package/src/ardy/waypoints.js +2 -2
  67. package/src/asset-pane.css +462 -0
  68. package/src/asset-pane.jsx +461 -232
  69. package/src/command-bus.js +349 -0
  70. package/src/commands/ai.js +31 -0
  71. package/src/commands/cast.js +140 -0
  72. package/src/commands/elements/character.js +13 -0
  73. package/src/commands/elements/motion.js +14 -0
  74. package/src/commands/elements/object.js +22 -0
  75. package/src/commands/elements/scene.js +16 -0
  76. package/src/commands/elements/shot.js +9 -0
  77. package/src/commands/elements/stage.js +11 -0
  78. package/src/commands/elements.js +155 -0
  79. package/src/commands/export.js +20 -0
  80. package/src/commands/index.js +40 -0
  81. package/src/commands/motion.js +231 -0
  82. package/src/commands/objects.js +174 -0
  83. package/src/commands/project.js +53 -0
  84. package/src/commands/scene.js +81 -0
  85. package/src/commands/shared.js +19 -0
  86. package/src/commands/shot.js +103 -0
  87. package/src/commands/stage.js +17 -0
  88. package/src/commands/view.js +42 -0
  89. package/src/document-store.js +144 -0
  90. package/src/domains/cast.js +1007 -0
  91. package/src/domains/motion.js +3219 -0
  92. package/src/domains/objects.js +932 -0
  93. package/src/domains/scenes.js +817 -0
  94. package/src/domains/shots.js +404 -0
  95. package/src/domains/stage.js +93 -0
  96. package/src/dualview.jsx +113 -57
  97. package/src/facing-marks.js +3 -0
  98. package/src/first-success-guide.jsx +14 -14
  99. package/src/grid-view.js +18 -5
  100. package/src/hierarchy-model.js +24 -16
  101. package/src/hierarchy-panel.css +386 -0
  102. package/src/hierarchy-panel.jsx +150 -21
  103. package/src/{fal-motion-client.js → i2v-motion-client.js} +13 -13
  104. package/src/i2v-motion-studio.jsx +180 -0
  105. package/src/ik-camera.js +3 -0
  106. package/src/main.jsx +6 -0
  107. package/src/motion/generation.js +105 -0
  108. package/src/motion-readiness-ui.jsx +4 -4
  109. package/src/motion-readiness.js +11 -0
  110. package/src/motion-trail.js +366 -9
  111. package/src/object-gizmo.jsx +7 -1
  112. package/src/otio.js +2 -1
  113. package/src/panels/CameraPanel.jsx +60 -0
  114. package/src/panels/CharacterTransformPanel.jsx +48 -0
  115. package/src/panels/EnvironmentPanel.jsx +40 -0
  116. package/src/panels/Foldout.jsx +32 -0
  117. package/src/panels/LightPanel.jsx +24 -0
  118. package/src/panels/ObjectTransformPanel.jsx +554 -0
  119. package/src/panels/PosePanel.jsx +97 -0
  120. package/src/panels/ProjectPanel.jsx +33 -0
  121. package/src/panels/PromptBlocksPanel.jsx +442 -0
  122. package/src/panels/PropsPanel.jsx +70 -0
  123. package/src/panels/ReferenceImageField.jsx +91 -0
  124. package/src/panels/RigControlPanel.jsx +78 -0
  125. package/src/panels/RigPanel.jsx +37 -0
  126. package/src/panels/SubjectBox.jsx +47 -0
  127. package/src/panels/SubjectsPanel.jsx +39 -0
  128. package/src/panels/VideoCapturePanel.jsx +180 -0
  129. package/src/panels/details.css +1171 -0
  130. package/src/panels/motion.css +197 -0
  131. package/src/panels/pose.css +39 -0
  132. package/src/planview.jsx +60 -31
  133. package/src/posestudio.jsx +59 -4
  134. package/src/project-browser.css +1073 -0
  135. package/src/project-browser.jsx +284 -123
  136. package/src/range-pin-object-transform.js +19 -0
  137. package/src/range-pin-panel.css +518 -0
  138. package/src/range-pin-panel.jsx +344 -0
  139. package/src/result-modal.jsx +5 -5
  140. package/src/room.jsx +79 -51
  141. package/src/scene-objects.js +37 -1
  142. package/src/scenes.js +5 -0
  143. package/src/semantic-edit.js +2 -0
  144. package/src/settings-menu.jsx +39 -105
  145. package/src/shell/BottomDock.jsx +450 -0
  146. package/src/shell/DetailsSlot.jsx +513 -0
  147. package/src/shell/LibrarySlot.jsx +86 -0
  148. package/src/shell/MenuBar.jsx +601 -0
  149. package/src/shell/OutlinerSlot.jsx +50 -0
  150. package/src/shell/PreferencesDialog.jsx +538 -0
  151. package/src/shell/PreferencesSlot.jsx +40 -0
  152. package/src/shell/StatusBar.jsx +125 -0
  153. package/src/shell/StudioShell.jsx +92 -0
  154. package/src/shell/TopBar.jsx +129 -0
  155. package/src/shell/ViewportToolbar.jsx +656 -0
  156. package/src/shell/agent-glass.css +296 -0
  157. package/src/shell/dock.css +93 -0
  158. package/src/shell/glass-regions.css +985 -0
  159. package/src/shell/glass.css +687 -0
  160. package/src/shell/log-store.js +52 -0
  161. package/src/shell/mode.css +9 -0
  162. package/src/shell/preferences.css +651 -0
  163. package/src/shell/shell.css +282 -0
  164. package/src/shell/studio-shell-context.js +19 -0
  165. package/src/shell/topbar.css +435 -0
  166. package/src/shell/viewport.css +451 -0
  167. package/src/store/authored-intent.js +22 -0
  168. package/src/store/runtime-adapters.js +92 -0
  169. package/src/store/scene-stage.js +21 -0
  170. package/src/store/use-document-store.js +14 -0
  171. package/src/studio-actions.js +210 -0
  172. package/src/studio-agent-commands.js +41 -271
  173. package/src/studio-agent-context.js +39 -10
  174. package/src/studio-agent-motion.js +122 -373
  175. package/src/studio-agent-protocol.js +67 -31
  176. package/src/studio-app-binding.js +379 -0
  177. package/src/studio-contact-sheet.js +73 -0
  178. package/src/studio-elements.js +58 -51
  179. package/src/styles/themes.css +200 -0
  180. package/src/styles/tokens.css +69 -0
  181. package/src/styles.css +460 -1742
  182. package/src/theme.js +44 -0
  183. package/src/timeline-extent.js +16 -0
  184. package/src/trail-key-conflicts.js +39 -0
  185. package/src/trail-pick.js +59 -0
  186. package/src/ui.jsx +8 -8
  187. package/src/use-case-question.jsx +66 -0
  188. package/src/workflow/AgentPanel.jsx +82 -69
  189. package/src/workflow/agent-client.js +12 -2
  190. package/src/workflow/agent-panel.css +34 -32
  191. package/src/workflow/cozy-scene-node.css +2 -0
  192. package/src/workflow/workflow.css +2 -0
  193. package/tools/ardy/__pycache__/cclay_gvhmr_worker.cpython-313.pyc +0 -0
  194. package/tools/ardy/bridge.mjs +164 -146
  195. package/tools/ardy/visual-qa.mjs +5 -5
  196. package/tools/bench/EXP3.md +61 -0
  197. package/tools/bench/cclay_bench_extract_incam.py +125 -0
  198. package/tools/bench/cclay_bench_extract_obs.py +204 -0
  199. package/tools/bench/cclay_bench_runner.py +42 -0
  200. package/tools/bench/cube-contact.mjs +162 -0
  201. package/tools/bench/exp3.mjs +152 -0
  202. package/tools/bench/extract-bench-lib.mjs +216 -0
  203. package/tools/bench/extract-bench.mjs +302 -0
  204. package/tools/bench/fal-generate.mjs +88 -0
  205. package/tools/bench/fit/README.md +189 -0
  206. package/tools/bench/fit/camera.mjs +59 -0
  207. package/tools/bench/fit/contact.mjs +419 -0
  208. package/tools/bench/fit/footlock.mjs +234 -0
  209. package/tools/bench/fit/motion.mjs +85 -0
  210. package/tools/bench/fit/pin.mjs +27 -0
  211. package/tools/bench/fit/remote.mjs +105 -0
  212. package/tools/bench/fit-bench.mjs +126 -0
  213. package/tools/bench/fit-sanity.mjs +45 -0
  214. package/tools/bench/metrics.mjs +313 -0
  215. package/tools/bench/obs/depth.mjs +258 -0
  216. package/tools/bench/obs/extrinsics.mjs +175 -0
  217. package/tools/bench/obs/fit_mannequin_betas.py +340 -0
  218. package/tools/bench/obs/ground.mjs +294 -0
  219. package/tools/bench/obs/heading.mjs +151 -0
  220. package/tools/bench/obs/ladder.mjs +555 -0
  221. package/tools/bench/obs/mannequin-betas.json +124 -0
  222. package/tools/bench/obs/remote.mjs +83 -0
  223. package/tools/bench/obs/rest_joints.py +52 -0
  224. package/tools/bench/obs/ybot-targets.mjs +49 -0
  225. package/tools/bench/obs-bench.mjs +520 -0
  226. package/tools/bench/score.mjs +343 -0
  227. package/tools/bench/summarize.mjs +86 -0
  228. package/tools/dev/pages/privacy.html +13 -8
  229. package/tools/gt-render/browser.mjs +159 -0
  230. package/tools/gt-render/camera-math.mjs +276 -0
  231. package/tools/gt-render/page.mjs +267 -0
  232. package/tools/gt-render/render.mjs +514 -0
  233. package/tools/gt-render/scene-box.mjs +31 -0
  234. package/tools/gt-render/take-transform.mjs +87 -0
  235. package/tools/morphgs/assets/gen_truth.py +39 -0
  236. package/tools/morphgs/assets/mesh_ori_rig.txt +27 -0
  237. package/tools/morphgs/assets/playback-check.mjs +30 -0
  238. package/tools/morphgs/demo-gate.sh +26 -0
  239. package/tools/morphgs/fbx2morphgs.mjs +68 -0
  240. package/tools/morphgs/morphgs-to-cskel27.mjs +105 -0
  241. package/tools/morphgs/patches/preprocess_src-none-mode.patch +76 -0
  242. package/tools/morphgs/setup-on-cluster.sh +126 -0
  243. package/tools/qa/css-rule-usage.mjs +283 -0
  244. package/tools/qa/studio-control-count.mjs +70 -32
  245. package/tools/run-tests.mjs +134 -12
  246. package/tools/track/DESIGN.md +513 -0
  247. package/tools/track/backfill-provenance.mjs +116 -0
  248. package/tools/track/budget.mjs +8 -0
  249. package/tools/track/check-rig.mjs +209 -0
  250. package/tools/track/diagnostics.schema.json +60 -0
  251. package/tools/track/export-rig.mjs +256 -0
  252. package/tools/track/fallback.mjs +7 -0
  253. package/tools/track/fk-parity-fixture.mjs +161 -0
  254. package/tools/track/gate.mjs +349 -0
  255. package/tools/track/masks.mjs +318 -0
  256. package/tools/track/metrics.mjs +201 -0
  257. package/tools/track/publish-obs.mjs +108 -0
  258. package/tools/track/py/check_env.py +61 -0
  259. package/tools/track/py/eval_lr.py +229 -0
  260. package/tools/track/py/lr_viterbi.py +294 -0
  261. package/tools/track/py/masks.py +405 -0
  262. package/tools/track/py/objective.py +382 -0
  263. package/tools/track/py/rig.py +508 -0
  264. package/tools/track/py/scene.py +326 -0
  265. package/tools/track/py/test_joint_indices.py +123 -0
  266. package/tools/track/py/test_lr_viterbi.py +195 -0
  267. package/tools/track/py/test_masks.py +229 -0
  268. package/tools/track/py/test_rig.py +288 -0
  269. package/tools/track/py/test_scene.py +354 -0
  270. package/tools/track/py/test_track.py +328 -0
  271. package/tools/track/py/track.py +411 -0
  272. package/tools/track/remote.mjs +140 -0
  273. package/tools/track/rig-dump.mjs +227 -0
  274. package/tools/track/run-box-tests.mjs +14 -0
  275. package/tools/track/run-box.mjs +168 -0
  276. package/tools/track/setup-box.sh +59 -0
  277. package/tools/track/study-2d.mjs +728 -0
  278. package/dist/assets/analytics-B1hnH66c.js +0 -1
  279. package/dist/assets/app-BWusbqgO.js +0 -4861
  280. package/dist/assets/app-qKDo4PBX.css +0 -1
  281. package/dist/assets/shot-prompt-CHUtw6af.js +0 -17
  282. package/dist/assets/shot-prompt-C_g2BHVc.css +0 -1
  283. package/dist/assets/workflow-CVwzMhz2.js +0 -179
  284. package/dist/assets/workflow-DsudxKHF.css +0 -1
  285. package/src/fal-motion-studio.jsx +0 -180
  286. package/src/scene-history.js +0 -129
@@ -0,0 +1,200 @@
1
+ /* Studio themes (#570). tokens.css keeps the v2 base values; a theme on
2
+ <html data-theme> restates them in the shell layer, which outranks both the
3
+ token layer and the legacy :root aliases, so every region and body-level
4
+ popover follows the one choice. */
5
+ @layer tokens, legacy, shell, regions;
6
+
7
+ @layer shell {
8
+ :root[data-theme] {
9
+ /* Floating-panel geometry shared by both themes. */
10
+ --float-gap: 6px;
11
+ --float-radius: 20px;
12
+ --capsule-radius: 20px;
13
+ --float-head: 48px;
14
+ --sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "IBM Plex Sans", "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, "Segoe UI", Helvetica, Arial, sans-serif;
15
+ --mono: "SF Mono", ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, Consolas, monospace;
16
+ }
17
+
18
+ /* Dark: the v2 surfaces with a deep clay-orange accent and shaded panels. */
19
+ :root[data-theme="dark"] {
20
+ color-scheme: dark;
21
+ --select: #b8541d;
22
+ --select-tint: rgba(184,84,29,.18);
23
+ --select-text: #e08a55;
24
+ --on-select: #fff;
25
+ --primary: #b8541d;
26
+ --primary-fill: linear-gradient(180deg, #c8622a, #a84a17);
27
+ --project-swatch: #b8541d;
28
+
29
+ --glass-panel: radial-gradient(140% 55% at 50% 0%, rgba(184,84,29,.07), rgba(184,84,29,0) 70%),
30
+ linear-gradient(180deg, rgba(255,255,255,.075), rgba(255,255,255,.018) 25%, rgba(255,255,255,0) 45%, rgba(0,0,0,.12) 70%, rgba(0,0,0,.38)),
31
+ #151517;
32
+ --glass-text-panel: var(--glass-panel);
33
+ /* The dock's flat fill: the columns' mid-tone, no top-to-bottom ramp. */
34
+ --glass-text-panel-flat: rgba(21,21,23,.96);
35
+ --glass-capsule: linear-gradient(180deg, rgba(255,255,255,.09), rgba(255,255,255,.015) 50%, rgba(0,0,0,.32)), rgba(12,12,13,.78);
36
+ --glass-blur: blur(40px) saturate(1.6);
37
+ --capsule-blur: blur(14px) saturate(1.3);
38
+ --panel-shadow-outer: 0 0 0 .5px rgba(255,255,255,.1), 0 1px 1px rgba(0,0,0,.25), 0 20px 50px -14px rgba(0,0,0,.55);
39
+ --panel-shadow-inset: inset 0 1px 0 rgba(255,255,255,.13), inset 0 0 0 1px rgba(255,255,255,.045), inset 0 -1px 0 rgba(0,0,0,.45), inset 0 -18px 30px -18px rgba(0,0,0,.4);
40
+ --panel-shadow: var(--panel-shadow-outer), var(--panel-shadow-inset);
41
+ --capsule-shadow: 0 0 0 .5px rgba(255,255,255,.08), inset 0 1px 0 rgba(255,255,255,.12), inset 0 -1px 0 rgba(0,0,0,.4);
42
+ --grip: rgba(255,255,255,.14);
43
+ --grip-hover: rgba(255,255,255,.4);
44
+
45
+ /* Panel interiors (glass-regions.css). */
46
+ --label: #8e8e96;
47
+ --text-soft: #c9c9ce;
48
+ --field-fill: rgba(255,255,255,.05);
49
+ --card-fill: rgba(255,255,255,.05);
50
+ --card-ring: 0 0 0 .5px rgba(255,255,255,.08);
51
+ --chip-fill: rgba(255,255,255,.06);
52
+ --hairline: rgba(255,255,255,.07);
53
+ --seg-on: rgba(255,255,255,.14);
54
+ --seg-on-shadow: 0 1px 2px rgba(0,0,0,.45), 0 0 0 .5px rgba(255,255,255,.06);
55
+ --seg-on-text: #e08a55;
56
+ --row-sel-bg: rgba(184,84,29,.16);
57
+ --row-sel-text: #fff;
58
+ --row-sel-icon: #b8541d;
59
+ --row-sel-meta: #c98f70;
60
+ --tile-fill: rgba(255,255,255,.04);
61
+ --tile-sel-fill: rgba(184,84,29,.16);
62
+ --tile-sel-ring: inset 0 0 0 1.5px #b8541d;
63
+ --tile-stroke: #c9c9ce;
64
+ --tile-label: #9b9ba1;
65
+ --snap-on-fill: rgba(184,84,29,.16);
66
+ --frame-well: #131315;
67
+ }
68
+
69
+ /* Light: translucent glass over a neutral window, system-blue accent. */
70
+ :root[data-theme="light"] {
71
+ color-scheme: light;
72
+ --surface-0: #eaeaed;
73
+ --surface-bar: #f4f4f6;
74
+ --surface-panel: #f7f7f9;
75
+ --surface-raised: #ffffff;
76
+ --surface-active: #e4e4e9;
77
+ --field: #ececf0;
78
+ --field-deep: #e6e6eb;
79
+ --row-divider: #e2e2e7;
80
+ --overlay: rgba(252,252,253,.66);
81
+ --divider-strong: #d2d2d8;
82
+
83
+ --text-1: #1d1d1f;
84
+ --text-2: #6e6e73;
85
+ --text-3: #86868b;
86
+ --text-row: #3a3a3c;
87
+ --text-off: #aeaeb2;
88
+ --text-selected: #000;
89
+
90
+ --select: #0a6ee0;
91
+ --select-tint: rgba(0,122,255,.14);
92
+ --select-text: #0060d6;
93
+ --on-select: #fff;
94
+ --primary: #0a6ee0;
95
+ --primary-fill: #0a6ee0;
96
+ --camera: #7d6fae;
97
+ --danger: #d1343a;
98
+ --axis-x: #e5484d;
99
+ --axis-y: #30a46c;
100
+ --axis-z: #2f6fd6;
101
+ --ok: #30a46c;
102
+ --project-swatch: #0a6ee0;
103
+
104
+ --chip-folder: #a2845e;
105
+ --chip-mesh: #8e8e93;
106
+ --chip-cast: #34c759;
107
+ --chip-camera: #8e5cf6;
108
+ --chip-light: #c9a227;
109
+ --chip-motion: #5e8ef0;
110
+ --clip-camera: #e5e1ed;
111
+ --clip-camera-alt: #ece9f3;
112
+ --clip-body: #d9e4dc;
113
+ --clip-body-selected: #c9dbcf;
114
+ --clip-prompt: #e9efea;
115
+ --clip-prompt-text: #3a5241;
116
+
117
+ /* The shell frame (shell.css, the gutters around the panels) sits a
118
+ step under the panels, so their edges read against it. */
119
+ --shell-frame: #e8e9ed;
120
+ --glass-panel: rgba(250,250,252,.74);
121
+ --glass-text-panel: rgba(250,250,252,.82);
122
+ --glass-text-panel-flat: rgba(250,250,252,.82);
123
+ --glass-capsule: rgba(252,252,253,.38);
124
+ --glass-blur: blur(40px) saturate(1.6);
125
+ --capsule-blur: blur(14px) saturate(1.3);
126
+ /* A crisp hairline and a short shadow: on the near-white frame a wide,
127
+ faint shadow left every panel edge a blur. */
128
+ --panel-shadow-outer: 0 0 0 1px rgba(30,32,40,.09), 0 1px 2px rgba(30,32,40,.06), 0 6px 18px -10px rgba(30,32,40,.18);
129
+ --panel-shadow-inset: inset 0 .5px 0 rgba(255,255,255,.95);
130
+ --panel-shadow: var(--panel-shadow-outer), var(--panel-shadow-inset);
131
+ --capsule-shadow: 0 0 0 .5px rgba(30,32,40,.08), inset 0 .5px 0 rgba(255,255,255,.55);
132
+ --grip: rgba(30,32,40,.14);
133
+ --grip-hover: rgba(30,32,40,.4);
134
+
135
+ --label: #86868b;
136
+ --text-soft: #3a3a3c;
137
+ --field-fill: rgba(30,32,40,.05);
138
+ --card-fill: rgba(255,255,255,.62);
139
+ --card-ring: 0 0 0 .5px rgba(30,32,40,.08);
140
+ --chip-fill: rgba(30,32,40,.06);
141
+ --hairline: rgba(30,32,40,.07);
142
+ --seg-on: #fff;
143
+ --seg-on-shadow: 0 1px 2px rgba(30,32,40,.12), 0 0 0 .5px rgba(30,32,40,.06);
144
+ --seg-on-text: #0060d6;
145
+ --row-sel-bg: #0a6ee0;
146
+ --row-sel-text: #fff;
147
+ --row-sel-icon: #fff;
148
+ --row-sel-meta: rgba(255,255,255,.75);
149
+ --tile-fill: rgba(30,32,40,.04);
150
+ --tile-sel-fill: rgba(0,122,255,.08);
151
+ --tile-sel-ring: inset 0 0 0 1.5px #007aff;
152
+ --tile-stroke: #3a3a3c;
153
+ --tile-label: #6e6e73;
154
+ --snap-on-fill: rgba(0,122,255,.1);
155
+ --frame-well: #131315;
156
+
157
+ /* Legacy literals in styles.css read these (dark keeps each fallback). */
158
+ --lg-ink-rgb: 30,32,40;
159
+ --lg-2c2c2c: #ffffff;
160
+ --lg-1a1a1a: #f2f2f5;
161
+ --lg-232323: #f6f6f8;
162
+ --lg-1e1e1e: #f4f4f6;
163
+ --lg-2a2a2a: #eeeef1;
164
+ --lg-101013: #f4f4f6;
165
+ --lg-11151e: #f4f4f6;
166
+ --lg-3c3c3c: #d8d8de;
167
+ --lg-383838: #dcdce2;
168
+ --lg-424242: #d0d0d6;
169
+ --lg-4a4a4a: #c8c8cf;
170
+ --lg-3f3f3f: #d4d4da;
171
+ --lg-5c5c5c: #b8b8c0;
172
+ --lg-d2d2d2: #3a3a3c;
173
+ --lg-9a9a9a: #6e6e73;
174
+ --lg-c4c4c4: #48484a;
175
+ }
176
+
177
+ /* The Agent keeps its own palette (src/workflow/agent-panel.css); inside
178
+ the studio shell it follows the theme instead. */
179
+ :root[data-theme] .app[data-shell="glass"] .studio-agent-inspector {
180
+ --agent-bg: transparent;
181
+ --agent-bg-raised: var(--surface-raised);
182
+ --agent-bg-sunken: var(--field);
183
+ --agent-bubble: var(--select-tint);
184
+ --agent-border: var(--row-divider);
185
+ --agent-border-strong: var(--divider-strong);
186
+ --agent-border-focus: var(--select);
187
+ --agent-text: var(--text-1);
188
+ --agent-text-muted: var(--text-2);
189
+ --agent-text-dim: var(--text-3);
190
+ --agent-accent: var(--select);
191
+ --agent-accent-deep: var(--select);
192
+ --agent-accent-edge: var(--select);
193
+ --agent-accent-text: var(--on-select);
194
+ --agent-chrome: transparent;
195
+ --agent-panel: var(--surface-raised);
196
+ --agent-hover: var(--surface-active);
197
+ --agent-text-soft: var(--text-row);
198
+ --agent-text-strong: var(--text-1);
199
+ }
200
+ }
@@ -0,0 +1,69 @@
1
+ /* The one layer order. Imported first by main.jsx, so a component sheet that
2
+ opens @layer regions early cannot move regions below shell (#548 did). */
3
+ @layer tokens, legacy, shell, regions;
4
+
5
+ @layer tokens {
6
+ :root {
7
+ /* V2 surfaces: brightness steps separate regions without borders. */
8
+ --surface-0: #070708;
9
+ --surface-bar: #121214;
10
+ --surface-panel: #151517;
11
+ --surface-raised: #1e1e21;
12
+ --surface-active: #26262a;
13
+ --field: #0f0f11;
14
+ --field-deep: #0c0c0d;
15
+ --row-divider: #1d1d20;
16
+ --overlay: rgba(12,12,13,.78);
17
+ /* Hairline between viewport toolbar pills; brighter than --row-divider. */
18
+ --divider-strong: #2e2e33;
19
+
20
+ /* V2 text scale. */
21
+ --text-1: #e4e4e7;
22
+ --text-2: #9b9ba1;
23
+ --text-3: #636369;
24
+ --text-row: #c9c9ce;
25
+ --text-off: #4f4f55;
26
+ --text-selected: #fff;
27
+
28
+ /* V2 accent roles and functional colours. */
29
+ --select: #e8a33d;
30
+ --select-tint: rgba(232,163,61,.14);
31
+ --on-select: #1a1204;
32
+ --primary: #7258a0;
33
+ --camera: #a78bfa;
34
+ --danger: #e5484d;
35
+ --axis-x: #e5484d;
36
+ --axis-y: #4fbf7a;
37
+ --axis-z: #4c8dff;
38
+ --ok: #4fbf7a;
39
+ /* The top bar's clay-coloured project swatch. */
40
+ --project-swatch: #cdb8a2;
41
+
42
+ /* Track chips and sequencer clip fills. */
43
+ --chip-folder: #8a7a55;
44
+ --chip-mesh: #7e8b99;
45
+ --chip-cast: #5fb584;
46
+ --chip-camera: #a78bfa;
47
+ --chip-light: #d9b84a;
48
+ --chip-motion: #6f93d6;
49
+ --clip-camera: #3d3354;
50
+ --clip-camera-alt: #302a40;
51
+ --clip-body: #23402f;
52
+ --clip-body-selected: #2e5a3f;
53
+ --clip-prompt: #233149;
54
+ --clip-prompt-text: #b9c9ea;
55
+
56
+ /* Compact editor geometry. */
57
+ --h-control: 28px;
58
+ --h-row: 24px;
59
+ --r-1: 4px;
60
+ --r-2: 6px;
61
+ --sp-1: 8px;
62
+ --sp-2: 12px;
63
+ --sp-3: 16px;
64
+
65
+ /* Self-hosted UI families with the existing Korean fallbacks retained. */
66
+ --sans: "IBM Plex Sans", "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
67
+ --mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
68
+ }
69
+ }