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
package/src/styles.css CHANGED
@@ -1,37 +1,78 @@
1
- @font-face{font-family:Inter;font-style:normal;font-weight:400 800;font-display:swap;src:url(../fonts/inter-latin.woff2) format("woff2")}
1
+ @layer tokens, legacy, shell, regions;
2
2
 
3
+ @font-face {
4
+ font-family: "IBM Plex Sans";
5
+ font-style: normal;
6
+ font-weight: 400;
7
+ font-display: swap;
8
+ src: url("../fonts/ibm-plex-sans-400-latin.woff2") format("woff2");
9
+ }
10
+
11
+ @font-face {
12
+ font-family: "IBM Plex Sans";
13
+ font-style: normal;
14
+ font-weight: 500;
15
+ font-display: swap;
16
+ src: url("../fonts/ibm-plex-sans-500-latin.woff2") format("woff2");
17
+ }
18
+
19
+ @font-face {
20
+ font-family: "IBM Plex Sans";
21
+ font-style: normal;
22
+ font-weight: 600;
23
+ font-display: swap;
24
+ src: url("../fonts/ibm-plex-sans-600-latin.woff2") format("woff2");
25
+ }
26
+
27
+ @font-face {
28
+ font-family: "JetBrains Mono";
29
+ font-style: normal;
30
+ font-weight: 400;
31
+ font-display: swap;
32
+ src: url("../fonts/jetbrains-mono-400-latin.woff2") format("woff2");
33
+ }
34
+
35
+ @font-face {
36
+ font-family: "JetBrains Mono";
37
+ font-style: normal;
38
+ font-weight: 500;
39
+ font-display: swap;
40
+ src: url("../fonts/jetbrains-mono-500-latin.woff2") format("woff2");
41
+ }
42
+
43
+ @layer legacy {
3
44
  /* Cozy Clay uses one neutral grotesk family across its editing surfaces.
4
45
  Monospace is reserved for coordinates, frame values and machine status. */
5
46
 
6
47
  :root {
7
- --bg: #1e1e1e;
8
- --bg-grad: linear-gradient(145deg, #1e1e1e 0%, #1e1e1e 100%);
9
- --panel: #2c2c2c;
10
- --card: #383838;
11
- --card2: rgba(255, 255, 255, .04);
12
- --hover: rgba(255, 255, 255, .06);
13
- --line: #1a1a1a;
14
- --line2: #3c3c3c;
15
- --track: #3a3a3a;
16
- --fg: #d2d2d2;
17
- --muted: #9a9a9a;
18
- --muted2: #6f6f6f;
19
- --accent: #3a7cbf;
20
- --accent-2: #2d5c8a;
21
- --cyan: #5a9bd4;
22
- --accent-soft: rgba(45, 92, 138, .35);
23
- --accent-ring: rgba(58, 124, 191, .5);
24
- --on-accent: #ffffff;
25
- --grad: linear-gradient(103deg, #2d5c8a 0%, #2d5c8a 100%);
26
- --grad-soft: linear-gradient(103deg, #2d5c8a, #3a7cbf);
27
- --display: "Inter", "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
28
- --sans: "Inter", "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
29
- --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
30
- --radius: 2px;
48
+ --bg: var(--surface-0);
49
+ --bg-grad: var(--surface-0);
50
+ --panel: var(--surface-panel);
51
+ --card: var(--surface-raised);
52
+ --card2: var(--field);
53
+ --hover: var(--surface-active);
54
+ --line: var(--surface-0);
55
+ --line2: var(--row-divider);
56
+ --track: var(--surface-bar);
57
+ --fg: var(--text-1);
58
+ --muted: var(--text-2);
59
+ --muted2: var(--text-3);
60
+ --accent: var(--select);
61
+ --accent-2: var(--primary);
62
+ --cyan: var(--camera);
63
+ --accent-soft: var(--select-tint);
64
+ --accent-ring: var(--select-tint);
65
+ --on-accent: var(--text-selected);
66
+ --grad: var(--primary);
67
+ --grad-soft: var(--primary);
68
+ --display: var(--sans);
69
+ --sans: "IBM Plex Sans", "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
70
+ --mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
71
+ --radius: var(--r-1);
31
72
  --shadow: 0 1px 2px rgba(0, 0, 0, .4);
32
73
  --shadow-md: 0 5px 16px rgba(0, 0, 0, .5);
33
74
  --shadow-lg: 0 14px 34px rgba(0, 0, 0, .6);
34
- --glow: 0 0 0 1px rgba(58, 124, 191, .45);
75
+ --glow: 0 0 0 1px var(--select-tint);
35
76
  --ease: cubic-bezier(.22, .68, .2, 1);
36
77
  --spring: cubic-bezier(.34, 1.4, .5, 1);
37
78
  --fast: .14s;
@@ -56,41 +97,6 @@
56
97
  font-family: var(--sans);
57
98
  padding: 24px;
58
99
  }
59
- .crash-card {
60
- max-width: 440px;
61
- background: var(--panel);
62
- border: 1px solid var(--line2);
63
- border-radius: 10px;
64
- padding: 28px;
65
- color: var(--fg);
66
- text-align: center;
67
- }
68
- .crash-card h1 { font-size: 20px; font-weight: 700; margin-bottom: 12px; }
69
- .crash-card p { color: var(--muted); font-size: 14px; line-height: 1.6; margin-bottom: 14px; }
70
- .crash-card code {
71
- display: block;
72
- background: var(--card);
73
- border: 1px solid var(--line);
74
- border-radius: 6px;
75
- padding: 10px;
76
- font-family: var(--mono);
77
- font-size: 11px;
78
- color: #e08a7a;
79
- text-align: left;
80
- word-break: break-all;
81
- margin-bottom: 18px;
82
- }
83
- .crash-card button {
84
- background: var(--accent);
85
- color: #fff;
86
- border: 0;
87
- border-radius: 6px;
88
- padding: 9px 22px;
89
- font-size: 14px;
90
- font-weight: 600;
91
- cursor: pointer;
92
- }
93
- .crash-card button:hover { filter: brightness(1.12); }
94
100
 
95
101
  body,
96
102
  #root {
@@ -124,12 +130,12 @@ select {
124
130
  height: 11px;
125
131
  }
126
132
  ::-webkit-scrollbar-thumb {
127
- background: #4a4a4a;
133
+ background: var(--lg-4a4a4a, #4a4a4a);
128
134
  border-radius: 8px;
129
135
  border: 3px solid var(--panel);
130
136
  }
131
137
  ::-webkit-scrollbar-thumb:hover {
132
- background: #5c5c5c;
138
+ background: var(--lg-5c5c5c, #5c5c5c);
133
139
  }
134
140
  ::-webkit-scrollbar-track {
135
141
  background: rgba(231, 181, 87, .16);
@@ -164,29 +170,6 @@ select {
164
170
  animation-play-state: paused;
165
171
  }
166
172
 
167
- .logo {
168
- display: flex;
169
- align-items: center;
170
- justify-self: start;
171
- }
172
-
173
- .topbar-actions {
174
- grid-column: 3;
175
- justify-self: end;
176
- display: flex;
177
- align-items: center;
178
- gap: 6px;
179
- }
180
-
181
- .project-actions {
182
- display: inline-flex;
183
- align-items: center;
184
- gap: 5px;
185
- margin-right: 4px;
186
- padding-right: 10px;
187
- border-right: 1px solid var(--line2);
188
- }
189
-
190
173
  .topbar-action {
191
174
  min-height: 28px;
192
175
  padding: 3px 10px;
@@ -215,17 +198,6 @@ select {
215
198
  cursor: not-allowed;
216
199
  }
217
200
 
218
- .project-save-action {
219
- background: var(--accent);
220
- border-color: var(--accent);
221
- color: #20180d;
222
- }
223
-
224
- .project-save-action:hover:not(:disabled) {
225
- background: #f2c56d;
226
- border-color: #f2c56d;
227
- }
228
-
229
201
  .project-export-action.recording {
230
202
  border-color: #e87878;
231
203
  color: #ffb1b1;
@@ -384,84 +356,6 @@ select {
384
356
  box-shadow: 0 22px 80px rgba(0, 0, 0, .7);
385
357
  }
386
358
 
387
- .project-browser-intro {
388
- margin: -4px 0 2px;
389
- font-size: 12px;
390
- line-height: 1.55;
391
- color: var(--muted);
392
- }
393
-
394
- /* The first-run sheet gives a new author one obvious starting action and a
395
- * small mental model of the editor before the full studio is opened. */
396
- .beginner-start {
397
- display: grid;
398
- gap: 16px;
399
- padding: 16px;
400
- border: 1px solid color-mix(in srgb, var(--accent) 34%, var(--line2));
401
- border-radius: 12px;
402
- background: color-mix(in srgb, var(--accent) 7%, var(--panel));
403
- }
404
-
405
- .beginner-start-actions {
406
- display: flex;
407
- gap: 10px;
408
- align-items: center;
409
- }
410
-
411
- .beginner-create {
412
- min-height: 42px;
413
- padding-inline: 18px;
414
- font-size: 13px;
415
- }
416
-
417
- .beginner-open {
418
- min-height: 42px;
419
- }
420
-
421
- .beginner-step-grid {
422
- display: grid;
423
- grid-template-columns: repeat(3, minmax(0, 1fr));
424
- gap: 10px;
425
- }
426
-
427
- .beginner-step {
428
- display: grid;
429
- grid-template-columns: auto 1fr;
430
- column-gap: 8px;
431
- row-gap: 2px;
432
- padding: 10px;
433
- border: 1px solid var(--line2);
434
- border-radius: 9px;
435
- background: color-mix(in srgb, var(--panel) 82%, transparent);
436
- }
437
-
438
- .beginner-step b {
439
- grid-row: span 2;
440
- display: grid;
441
- place-items: center;
442
- width: 22px;
443
- height: 22px;
444
- border-radius: 50%;
445
- background: var(--accent);
446
- color: #fff;
447
- font-size: 11px;
448
- }
449
-
450
- .beginner-step strong {
451
- font-size: 12px;
452
- }
453
-
454
- .beginner-step span {
455
- font-size: 10.5px;
456
- line-height: 1.35;
457
- color: var(--muted);
458
- }
459
-
460
- @media (max-width: 620px) {
461
- .beginner-step-grid { grid-template-columns: 1fr; }
462
- .beginner-start-actions { flex-direction: column; align-items: stretch; }
463
- }
464
-
465
359
  .project-name-dialog-backdrop {
466
360
  position: fixed;
467
361
  inset: 0;
@@ -527,7 +421,7 @@ select {
527
421
  background: color-mix(in srgb, var(--panel) 96%, #101218);
528
422
  border: 1px solid var(--accent);
529
423
  border-radius: 14px;
530
- box-shadow: 0 18px 58px rgba(0, 0, 0, .58), 0 0 0 1px rgba(255, 255, 255, .04);
424
+ box-shadow: 0 18px 58px rgba(0, 0, 0, .58), 0 0 0 1px rgba(var(--lg-ink-rgb, 255,255,255), .04);
531
425
  animation: rise .28s var(--ease) both;
532
426
  }
533
427
 
@@ -737,13 +631,6 @@ select {
737
631
  }
738
632
  }
739
633
 
740
- .project-browser-head {
741
- display: flex;
742
- align-items: center;
743
- justify-content: space-between;
744
- font-size: 15px;
745
- }
746
-
747
634
  .project-browser-head .x {
748
635
  background: none;
749
636
  border: none;
@@ -759,85 +646,10 @@ select {
759
646
  gap: 6px;
760
647
  }
761
648
 
762
- .project-browser-section-head {
763
- display: flex;
764
- align-items: center;
765
- justify-content: space-between;
766
- font-size: 11px;
767
- font-weight: 700;
768
- letter-spacing: .06em;
769
- text-transform: uppercase;
770
- color: var(--muted);
771
- }
772
-
773
- .project-browser-section-head .row-actions {
774
- display: flex;
775
- gap: 6px;
776
- }
777
-
778
- .project-browser-section-head button {
779
- font-size: 10px;
780
- padding: 2px 8px;
781
- border-radius: 6px;
782
- border: 1px solid var(--line2);
783
- background: none;
784
- color: var(--fg);
785
- cursor: pointer;
786
- }
787
-
788
- .project-browser-empty {
789
- font-size: 11px;
790
- color: var(--muted2);
791
- padding: 8px 10px;
792
- background: var(--card2);
793
- border-radius: 8px;
794
- }
795
-
796
- .project-browser-list {
797
- list-style: none;
798
- margin: 0;
799
- padding: 0;
800
- display: flex;
801
- flex-direction: column;
802
- gap: 3px;
803
- }
804
-
805
- .project-browser-list li {
806
- display: flex;
807
- align-items: stretch;
808
- gap: 4px;
809
- }
810
-
811
- .project-browser-list li > button:first-child {
812
- flex: 1;
813
- display: flex;
814
- align-items: center;
815
- justify-content: space-between;
816
- gap: 10px;
817
- padding: 8px 10px;
818
- border: 1px solid var(--line);
819
- border-radius: 8px;
820
- background: var(--card2);
821
- color: var(--fg);
822
- font-size: 12px;
823
- cursor: pointer;
824
- text-align: left;
825
- }
826
-
827
- .project-browser-list li > button:first-child span {
828
- font-size: 10px;
829
- color: var(--muted2);
830
- flex: none;
831
- }
832
-
833
649
  .project-browser-list li.active > button:first-child {
834
650
  border-color: var(--accent);
835
651
  }
836
652
 
837
- .project-browser-list li > button:first-child:hover {
838
- border-color: var(--accent);
839
- }
840
-
841
653
  .project-browser-list .del {
842
654
  border: none;
843
655
  background: none;
@@ -847,12 +659,6 @@ select {
847
659
  font-size: 11px;
848
660
  }
849
661
 
850
- .project-browser-foot {
851
- display: flex;
852
- justify-content: space-between;
853
- gap: 8px;
854
- }
855
-
856
662
  .project-browser-foot .btn {
857
663
  flex: 1;
858
664
  }
@@ -860,19 +666,15 @@ select {
860
666
  .auto-color-hex {
861
667
  align-self: center;
862
668
  font-size: 10px;
863
- color: var(--fg-dim, #9a9a9a);
669
+ color: var(--fg-dim, var(--lg-9a9a9a, #9a9a9a));
864
670
  font-variant-numeric: tabular-nums;
865
671
  }
866
-
867
- .toolbar-balance {
868
- min-width: 0;
869
- }
870
672
  .wordmark {
871
673
  font-family: var(--display);
872
674
  font-weight: 750;
873
675
  font-size: 18px;
874
676
  line-height: 1;
875
- color: #d2d2d2;
677
+ color: var(--lg-d2d2d2, #d2d2d2);
876
678
  letter-spacing: -.045em;
877
679
  }
878
680
  .wordmark span {
@@ -918,118 +720,6 @@ select {
918
720
  text-decoration: underline;
919
721
  }
920
722
 
921
- .tagline {
922
- font-size: 12.5px;
923
- color: var(--muted);
924
- position: relative;
925
- padding-left: 17px;
926
- }
927
- .tagline:before {
928
- content: "";
929
- position: absolute;
930
- left: 0;
931
- top: 50%;
932
- transform: translateY(-50%);
933
- width: 1px;
934
- height: 18px;
935
- background: var(--line2);
936
- }
937
-
938
- .controls-menu {
939
- position: relative;
940
- justify-self: end;
941
- z-index: 20;
942
- }
943
-
944
- .controls-menu summary {
945
- height: 30px;
946
- display: flex;
947
- align-items: center;
948
- gap: 7px;
949
- padding: 0 10px 0 12px;
950
- border: 1px solid rgba(255, 255, 255, .24);
951
- border-radius: 6px;
952
- background: #2c2c2c;
953
- color: #52616b;
954
- font-size: 10px;
955
- font-weight: 700;
956
- letter-spacing: .02em;
957
- cursor: pointer;
958
- list-style: none;
959
- user-select: none;
960
- }
961
-
962
- .controls-menu summary::-webkit-details-marker {
963
- display: none;
964
- }
965
-
966
- .controls-menu summary span {
967
- font-size: 12px;
968
- line-height: 1;
969
- transition: transform var(--fast) var(--ease);
970
- }
971
-
972
- .controls-menu[open] summary {
973
- color: #d2d2d2;
974
- border-color: #3a7cbf;
975
- background: #383838;
976
- }
977
-
978
- .controls-menu[open] summary span {
979
- transform: rotate(180deg);
980
- }
981
-
982
- .controls-popover {
983
- position: absolute;
984
- top: calc(100% + 8px);
985
- right: 0;
986
- width: 250px;
987
- padding: 12px;
988
- border: 1px solid rgba(255, 255, 255, .24);
989
- border-radius: 8px;
990
- background: #2c2c2c;
991
- box-shadow: 0 12px 30px rgba(0, 0, 0, .16);
992
- }
993
-
994
- .controls-grid {
995
- display: grid;
996
- grid-template-columns: max-content 1fr;
997
- align-items: center;
998
- gap: 8px 12px;
999
- }
1000
-
1001
- .controls-grid kbd {
1002
- min-width: 46px;
1003
- padding: 3px 6px;
1004
- border: 1px solid rgba(255, 255, 255, .22);
1005
- border-bottom-width: 2px;
1006
- border-radius: 4px;
1007
- background: #232323;
1008
- color: #d2d2d2;
1009
- font: 650 9px var(--mono);
1010
- text-align: center;
1011
- }
1012
-
1013
- .controls-grid span,
1014
- .controls-popover p {
1015
- color: #9a9a9a;
1016
- font-size: 10.5px;
1017
- line-height: 1.35;
1018
- }
1019
-
1020
- .controls-popover p {
1021
- margin: 0;
1022
- }
1023
-
1024
- .controls-popover p strong {
1025
- display: block;
1026
- margin-bottom: 4px;
1027
- color: #d2d2d2;
1028
- font-size: 10px;
1029
- text-transform: uppercase;
1030
- letter-spacing: .08em;
1031
- }
1032
-
1033
723
  .main {
1034
724
  flex: 1;
1035
725
  display: flex;
@@ -1076,7 +766,7 @@ select {
1076
766
  height: 100%;
1077
767
  max-width: 100%;
1078
768
  max-height: 100%;
1079
- border: 1px solid rgba(255, 255, 255, .38);
769
+ border: 1px solid rgba(var(--lg-ink-rgb, 255,255,255), .38);
1080
770
  border-radius: 0;
1081
771
  overflow: hidden;
1082
772
  box-shadow: var(--shadow-md);
@@ -1377,64 +1067,6 @@ select {
1377
1067
  position: static;
1378
1068
  }
1379
1069
 
1380
- .scene-loading {
1381
- position: absolute;
1382
- inset: auto 0 0 0;
1383
- z-index: 4;
1384
- display: flex;
1385
- flex-direction: column;
1386
- align-items: center;
1387
- gap: 8px;
1388
- padding: 0 0 26px;
1389
- pointer-events: none;
1390
- }
1391
- .scene-loading-bar {
1392
- width: 180px;
1393
- height: 2px;
1394
- border-radius: 2px;
1395
- overflow: hidden;
1396
- background: var(--track);
1397
- }
1398
- .scene-loading-bar span {
1399
- display: block;
1400
- height: 100%;
1401
- background: var(--accent);
1402
- transition: width .25s var(--ease);
1403
- }
1404
- .scene-loading-label {
1405
- font-size: 11px;
1406
- letter-spacing: .06em;
1407
- text-transform: uppercase;
1408
- color: var(--muted);
1409
- }
1410
-
1411
- .scene-error {
1412
- position: absolute;
1413
- top: 0;
1414
- right: 0;
1415
- bottom: 0;
1416
- left: 0;
1417
- z-index: 5;
1418
- display: flex;
1419
- flex-direction: column;
1420
- align-items: center;
1421
- justify-content: center;
1422
- gap: 10px;
1423
- text-align: center;
1424
- padding: 24px;
1425
- background: var(--bg);
1426
- }
1427
- .scene-error-title {
1428
- font-size: 15px;
1429
- font-weight: 600;
1430
- color: var(--fg);
1431
- }
1432
- .scene-error-hint {
1433
- font-size: 13px;
1434
- color: var(--muted);
1435
- max-width: 320px;
1436
- }
1437
-
1438
1070
  /* Composition guides (Blender's camera display guides): chrome over the shot
1439
1071
  frame, never over exported pixels. The SVG letterboxes itself via its
1440
1072
  viewBox, so no JS measures the frame rect. */
@@ -1451,7 +1083,7 @@ select {
1451
1083
  }
1452
1084
  .shot-guides line,
1453
1085
  .shot-guides rect {
1454
- stroke: rgba(255, 255, 255, .34);
1086
+ stroke: rgba(var(--lg-ink-rgb, 255,255,255), .34);
1455
1087
  stroke-width: 1px;
1456
1088
  fill: none;
1457
1089
  }
@@ -1463,7 +1095,7 @@ select {
1463
1095
  border: 0;
1464
1096
  padding: 1px 2px;
1465
1097
  background: none;
1466
- color: rgba(255, 255, 255, .5);
1098
+ color: rgba(var(--lg-ink-rgb, 255,255,255), .5);
1467
1099
  cursor: pointer;
1468
1100
  border-radius: 3px;
1469
1101
  }
@@ -1483,7 +1115,7 @@ select {
1483
1115
  position: absolute;
1484
1116
  width: 17px;
1485
1117
  height: 17px;
1486
- border: 1.5px solid rgba(255, 255, 255, .3);
1118
+ border: 1.5px solid rgba(var(--lg-ink-rgb, 255,255,255), .3);
1487
1119
  }
1488
1120
  .film-frame span:nth-child(1) {
1489
1121
  top: 0;
@@ -1518,27 +1150,11 @@ select {
1518
1150
  .caption,
1519
1151
  .viewmode {
1520
1152
  background: #0e0e108c;
1521
- border: 1px solid rgba(255, 255, 255, .1);
1153
+ border: 1px solid rgba(var(--lg-ink-rgb, 255,255,255), .1);
1522
1154
  backdrop-filter: blur(14px) saturate(1.2);
1523
1155
  -webkit-backdrop-filter: blur(14px) saturate(1.2);
1524
1156
  }
1525
1157
 
1526
- .hud {
1527
- position: absolute;
1528
- left: 16px;
1529
- top: 15px;
1530
- z-index: 6;
1531
- font-size: 11.5px;
1532
- color: #eeeef2;
1533
- padding: 6px 12px;
1534
- border-radius: 9px;
1535
- font-weight: 500;
1536
- display: flex;
1537
- align-items: center;
1538
- gap: 7px;
1539
- animation: rise var(--med) var(--ease) both;
1540
- }
1541
-
1542
1158
  .caption {
1543
1159
  position: absolute;
1544
1160
  left: 50%;
@@ -1563,86 +1179,11 @@ select {
1563
1179
  border-color: rgba(229, 72, 77, .5);
1564
1180
  color: #ffc9cb;
1565
1181
  }
1566
-
1567
- .viewmode {
1568
- position: static;
1569
- justify-self: center;
1570
- display: flex;
1571
- gap: 2px;
1572
- padding: 3px;
1573
- border-radius: 7px;
1574
- animation: none;
1575
- }
1576
- .viewmode button {
1577
- background: none;
1578
- border: none;
1579
- color: #dcdce2;
1580
- cursor: pointer;
1581
- height: 26px;
1582
- padding: 0 12px;
1583
- border-radius: 5px;
1584
- font-size: 10px;
1585
- font-weight: 700;
1586
- transition: all .16s var(--ease);
1587
- }
1588
- .viewmode button:hover {
1589
- color: #fff;
1590
- }
1591
- .viewmode button.active {
1592
- background: var(--grad);
1593
- color: #fff;
1594
- box-shadow: 0 3px 12px #3346ff66;
1595
- }
1596
-
1597
- .puck-label {
1598
- /* the plan board is a drag surface; a label that takes the pointer kills it */
1599
- pointer-events: none;
1600
- background: #0e0d10d9;
1601
- border: 1px solid var(--line2);
1602
- color: #fff;
1603
- padding: 3px 10px;
1604
- border-radius: 20px;
1605
- font-size: 11px;
1606
- font-weight: 600;
1607
- white-space: nowrap;
1608
- -webkit-user-select: none;
1609
- user-select: none;
1610
- font-family: var(--sans);
1611
- box-shadow: 0 2px 8px #0006;
1612
- }
1613
-
1614
- .pose-fab {
1615
- font-family: var(--sans);
1616
- font-size: 12.5px;
1617
- font-weight: 600;
1618
- color: #fff;
1619
- background: var(--grad);
1620
- border: none;
1621
- padding: 8px 16px;
1622
- border-radius: 22px;
1623
- cursor: pointer;
1624
- white-space: nowrap;
1625
- box-shadow: var(--glow), 0 4px 14px #0006;
1626
- transition: transform .14s var(--spring), box-shadow .15s ease;
1627
- animation: fabPop .28s var(--spring) both;
1628
- }
1629
- .pose-fab:hover {
1630
- transform: translateY(-2px) scale(1.03);
1631
- box-shadow: 0 10px 30px #3346ff80;
1632
- }
1633
- .pose-fab:active {
1634
- transform: scale(.96);
1635
- }
1636
-
1637
- .pose-bar {
1638
- display: flex;
1639
- gap: 8px;
1640
- }
1641
- .pose-btns {
1642
- display: flex;
1643
- flex-direction: column;
1644
- gap: 8px;
1645
- }
1182
+ .viewmode button.active {
1183
+ background: var(--grad);
1184
+ color: #fff;
1185
+ box-shadow: 0 3px 12px #3346ff66;
1186
+ }
1646
1187
  .pose-btns .btn.full {
1647
1188
  margin-top: 0;
1648
1189
  }
@@ -1751,54 +1292,9 @@ select {
1751
1292
  pointer-events: none;
1752
1293
  }
1753
1294
 
1754
- /* ARDY row: duration + seed side by side (Motion tab compacting). */
1755
- .ardy-row {
1756
- display: flex;
1757
- gap: 8px;
1758
- }
1759
-
1760
- .ardy-row > * {
1761
- flex: 1;
1762
- min-width: 0;
1763
- }
1764
-
1765
- /* Per-character motion layer status in the Motion tab. */
1766
- .gen-layers {
1767
- list-style: none;
1768
- margin: 0;
1769
- padding: 4px 6px;
1770
- display: flex;
1771
- flex-direction: column;
1772
- gap: 2px;
1773
- background: var(--card2, rgba(255,255,255,.04));
1774
- border: 1px solid var(--line);
1775
- border-radius: 8px;
1776
- }
1777
-
1778
- .gen-layers li {
1779
- display: flex;
1780
- align-items: center;
1781
- gap: 8px;
1782
- font-size: 11px;
1783
- color: var(--muted);
1784
- padding: 2px 4px;
1785
- border-radius: 5px;
1786
- }
1787
-
1788
1295
  .gen-layers li.active {
1789
1296
  color: var(--fg);
1790
- background: var(--hover, rgba(255,255,255,.06));
1791
- }
1792
-
1793
- .gen-layers-name {
1794
- font-weight: 700;
1795
- color: var(--cyan, #5a9bd4);
1796
- width: 22px;
1797
- flex: none;
1798
- }
1799
-
1800
- .gen-layers-state {
1801
- flex: 1;
1297
+ background: var(--hover, rgba(var(--lg-ink-rgb, 255,255,255),.06));
1802
1298
  }
1803
1299
 
1804
1300
  .gen-layers-state.running { color: #f5b453; }
@@ -1806,15 +1302,6 @@ select {
1806
1302
  .gen-layers-state.error { color: #e06c6c; }
1807
1303
  .gen-layers-state.loaded { color: #7bc98b; }
1808
1304
 
1809
- .gen-layers li button {
1810
- background: none;
1811
- border: none;
1812
- color: var(--muted2);
1813
- cursor: pointer;
1814
- font-size: 10px;
1815
- padding: 0 2px;
1816
- }
1817
-
1818
1305
  /* Timeline track owner chip: which character's layer a Prompts/2D Root
1819
1306
  track belongs to. */
1820
1307
  .tl-track-owner {
@@ -2110,7 +1597,7 @@ select {
2110
1597
  justify-content: space-between;
2111
1598
  gap: 10px;
2112
1599
  padding: 13px 14px 11px;
2113
- border-bottom: 1px solid rgba(255, 255, 255, .055);
1600
+ border-bottom: 1px solid rgba(var(--lg-ink-rgb, 255,255,255), .055);
2114
1601
  }
2115
1602
 
2116
1603
  .hierarchy-heading > div { min-width: 0; }
@@ -2137,16 +1624,6 @@ select {
2137
1624
  text-transform: uppercase;
2138
1625
  }
2139
1626
 
2140
- .hierarchy-frame-status {
2141
- flex: none;
2142
- padding: 3px 7px;
2143
- border: 1px solid rgba(126, 154, 255, .16);
2144
- border-radius: 999px;
2145
- background: rgba(87, 111, 221, .08);
2146
- color: #9aa9d8;
2147
- font-size: 8px;
2148
- }
2149
-
2150
1627
  /* Disclosures that keep a once-in-a-while control out of the permanent
2151
1628
  furniture: a summary you can read, a panel that opens where it stands. */
2152
1629
  .object-colors-pop > summary {
@@ -2171,7 +1648,7 @@ select {
2171
1648
  display: block;
2172
1649
  width: 22px;
2173
1650
  height: 22px;
2174
- border: 1px solid rgba(255, 255, 255, .28);
1651
+ border: 1px solid rgba(var(--lg-ink-rgb, 255,255,255), .28);
2175
1652
  border-radius: 6px;
2176
1653
  }
2177
1654
 
@@ -2263,10 +1740,10 @@ select {
2263
1740
  top: -7px;
2264
1741
  bottom: 13px;
2265
1742
  width: 1px;
2266
- background: rgba(255, 255, 255, .055);
1743
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .055);
2267
1744
  }
2268
1745
 
2269
- .hierarchy-row-wrap:hover { background: rgba(255, 255, 255, .045); }
1746
+ .hierarchy-row-wrap:hover { background: rgba(var(--lg-ink-rgb, 255,255,255), .045); }
2270
1747
 
2271
1748
  .hierarchy-row-wrap.selected {
2272
1749
  background: linear-gradient(90deg, rgba(70, 92, 230, .32), rgba(67, 93, 190, .12));
@@ -2364,7 +1841,7 @@ select {
2364
1841
  min-width: 16px;
2365
1842
  padding: 2px 4px;
2366
1843
  border-radius: 999px;
2367
- background: rgba(255, 255, 255, .065);
1844
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .065);
2368
1845
  color: #8f97a9;
2369
1846
  font-size: 7px;
2370
1847
  text-align: center;
@@ -2476,31 +1953,6 @@ select {
2476
1953
  line-height: 1.55;
2477
1954
  }
2478
1955
 
2479
- .inspector-status-grid {
2480
- display: grid;
2481
- /* `auto` let a long value push the row past the panel. Both tracks may now
2482
- shrink, and the value wraps instead of demanding a width nothing has. */
2483
- grid-template-columns: minmax(0, 1fr) minmax(0, auto);
2484
- gap: 7px 12px;
2485
- margin: 0 0 12px;
2486
- padding: 9px 10px;
2487
- border: 1px solid rgba(255, 255, 255, .06);
2488
- border-radius: 6px;
2489
- background: rgba(0, 0, 0, .12);
2490
- font-size: 8px;
2491
- }
2492
-
2493
- .inspector-status-grid span { color: var(--muted); min-width: 0; }
2494
- .inspector-status-grid b {
2495
- color: #c7cde0;
2496
- font-weight: 600;
2497
- min-width: 0;
2498
- /* An id or a path has no spaces to break at; break it anywhere rather than
2499
- let it decide the panel's width. */
2500
- overflow-wrap: anywhere;
2501
- text-align: right;
2502
- }
2503
-
2504
1956
  .inspector-list {
2505
1957
  display: grid;
2506
1958
  gap: 5px;
@@ -2514,9 +1966,9 @@ select {
2514
1966
  justify-content: space-between;
2515
1967
  gap: 10px;
2516
1968
  padding: 8px 9px;
2517
- border: 1px solid rgba(255, 255, 255, .065);
1969
+ border: 1px solid rgba(var(--lg-ink-rgb, 255,255,255), .065);
2518
1970
  border-radius: 5px;
2519
- background: rgba(255, 255, 255, .025);
1971
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .025);
2520
1972
  color: #aeb4c2;
2521
1973
  text-align: left;
2522
1974
  cursor: pointer;
@@ -2551,7 +2003,7 @@ select {
2551
2003
  position: relative;
2552
2004
  overflow: hidden;
2553
2005
  background: linear-gradient(180deg, #141417, #0b0b0d);
2554
- border: 1px solid rgba(255, 255, 255, .06);
2006
+ border: 1px solid rgba(var(--lg-ink-rgb, 255,255,255), .06);
2555
2007
  border-radius: 16px;
2556
2008
  padding: 17px 18px 19px;
2557
2009
  margin-bottom: 14px;
@@ -2872,10 +2324,6 @@ input[type=range]::-moz-range-thumb {
2872
2324
  .segmented button.active {
2873
2325
  color: #fff;
2874
2326
  }
2875
-
2876
- .sheet-checks {
2877
- margin-bottom: 4px;
2878
- }
2879
2327
  .sheet-checks .check {
2880
2328
  margin-top: 9px;
2881
2329
  }
@@ -2959,7 +2407,7 @@ input[type=range]::-moz-range-thumb {
2959
2407
  left: -60%;
2960
2408
  width: 45%;
2961
2409
  height: 100%;
2962
- background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .28), transparent);
2410
+ background: linear-gradient(100deg, transparent, rgba(var(--lg-ink-rgb, 255,255,255), .28), transparent);
2963
2411
  transform: skew(-18deg);
2964
2412
  transition: left .5s var(--ease);
2965
2413
  }
@@ -2979,43 +2427,6 @@ input[type=range]::-moz-range-thumb {
2979
2427
  }
2980
2428
  /* ------------------------------------------------------ ardy panel ------- */
2981
2429
 
2982
- .ardy-meta {
2983
- margin: 0 0 4px;
2984
- font-size: 11px;
2985
- color: var(--muted2);
2986
- letter-spacing: .04em;
2987
- }
2988
-
2989
- .ardy-hint {
2990
- margin: 0;
2991
- font-size: 11.5px;
2992
- line-height: 1.6;
2993
- color: var(--muted);
2994
- }
2995
-
2996
- .ardy-hint + .ardy-hint {
2997
- margin-top: 6px;
2998
- }
2999
-
3000
- .ardy-hint code,
3001
- .ardy-outcome code {
3002
- padding: 1px 6px;
3003
- border-radius: 6px;
3004
- background: var(--card2);
3005
- border: 1px solid var(--line);
3006
- color: #dcdce2;
3007
- font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
3008
- font-size: 11px;
3009
- word-break: break-all;
3010
- }
3011
-
3012
- .ardy-clamp {
3013
- display: block;
3014
- margin-top: 5px;
3015
- font-size: 10.5px;
3016
- color: var(--muted2);
3017
- }
3018
-
3019
2430
  .ardy-status {
3020
2431
  margin: 10px 0 0;
3021
2432
  font-size: 11.5px;
@@ -3028,45 +2439,6 @@ input[type=range]::-moz-range-thumb {
3028
2439
  color: var(--cyan);
3029
2440
  }
3030
2441
 
3031
- .ardy-report {
3032
- margin-top: 12px;
3033
- padding: 10px 12px;
3034
- border: 1px solid var(--line);
3035
- border-radius: 10px;
3036
- background: var(--card2);
3037
- animation: rise var(--med) var(--ease);
3038
- }
3039
-
3040
- .ardy-report-grid {
3041
- display: grid;
3042
- grid-template-columns: 1fr auto;
3043
- gap: 4px 12px;
3044
- font-size: 11.5px;
3045
- }
3046
-
3047
- .ardy-report-grid span {
3048
- color: var(--muted);
3049
- }
3050
-
3051
- .ardy-report-grid b {
3052
- color: var(--fg);
3053
- font-weight: 600;
3054
- font-variant-numeric: tabular-nums;
3055
- }
3056
-
3057
- .ardy-caveat {
3058
- margin: 8px 0 0;
3059
- font-size: 10.5px;
3060
- line-height: 1.55;
3061
- color: var(--muted2);
3062
- }
3063
-
3064
- .ardy-outcome {
3065
- margin: 10px 0 0;
3066
- font-size: 11.5px;
3067
- line-height: 1.6;
3068
- }
3069
-
3070
2442
  .ardy-outcome.done {
3071
2443
  color: var(--muted);
3072
2444
  }
@@ -3282,7 +2654,7 @@ input[type=range]::-moz-range-thumb {
3282
2654
  justify-content: space-between;
3283
2655
  gap: 8px;
3284
2656
  background: var(--card2);
3285
- border: 1px solid rgba(255, 255, 255, .08);
2657
+ border: 1px solid rgba(var(--lg-ink-rgb, 255,255,255), .08);
3286
2658
  color: var(--fg);
3287
2659
  border-radius: 10px;
3288
2660
  padding: 10px 12px;
@@ -3737,7 +3109,7 @@ input[type=range]::-moz-range-thumb {
3737
3109
  vector-effect: non-scaling-stroke;
3738
3110
  }
3739
3111
 
3740
- .sg-outside { fill: rgba(255, 255, 255, .05); }
3112
+ .sg-outside { fill: rgba(var(--lg-ink-rgb, 255,255,255), .05); }
3741
3113
 
3742
3114
  .sg-fill { fill: url(#sg-fade); }
3743
3115
 
@@ -3989,7 +3361,7 @@ input[type=range]::-moz-range-thumb {
3989
3361
  vector-effect: non-scaling-stroke;
3990
3362
  }
3991
3363
 
3992
- .sg-outside { fill: rgba(255, 255, 255, .04); }
3364
+ .sg-outside { fill: rgba(var(--lg-ink-rgb, 255,255,255), .04); }
3993
3365
 
3994
3366
  .sg-cut {
3995
3367
  stroke: #ffb454;
@@ -4301,7 +3673,7 @@ input[type=range]::-moz-range-thumb {
4301
3673
  font-size: 12px;
4302
3674
  font-variant-numeric: tabular-nums;
4303
3675
  color: var(--muted);
4304
- background: #101013;
3676
+ background: var(--lg-101013, #101013);
4305
3677
  border: 1px solid var(--line);
4306
3678
  border-radius: 6px;
4307
3679
  white-space: nowrap;
@@ -4391,7 +3763,7 @@ input[type=range]::-moz-range-thumb {
4391
3763
  display: grid;
4392
3764
  grid-template-columns: var(--tl-label-w) 1fr;
4393
3765
  height: auto;
4394
- background: #101013;
3766
+ background: var(--lg-101013, #101013);
4395
3767
  border-bottom: 1px solid var(--line);
4396
3768
  }
4397
3769
 
@@ -4465,7 +3837,7 @@ input[type=range]::-moz-range-thumb {
4465
3837
  height: auto;
4466
3838
  min-height: 18px;
4467
3839
  /* One continuous row separator across label + lane. */
4468
- border-bottom: 1px solid rgba(255, 255, 255, .06);
3840
+ border-bottom: 1px solid rgba(var(--lg-ink-rgb, 255,255,255), .06);
4469
3841
  }
4470
3842
 
4471
3843
  .tl-track-label {
@@ -4496,7 +3868,7 @@ input[type=range]::-moz-range-thumb {
4496
3868
  bottom: 0;
4497
3869
  left: calc(var(--tl-f) * 100%);
4498
3870
  width: 1px;
4499
- background: rgba(255, 255, 255, .03);
3871
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .03);
4500
3872
  pointer-events: none;
4501
3873
  }
4502
3874
 
@@ -4684,7 +4056,7 @@ input[type=range]::-moz-range-thumb {
4684
4056
  }
4685
4057
 
4686
4058
  .tl-chip-input::placeholder {
4687
- color: rgba(255, 255, 255, .72);
4059
+ color: rgba(var(--lg-ink-rgb, 255,255,255), .72);
4688
4060
  }
4689
4061
 
4690
4062
  .tl-chip-handle {
@@ -4694,7 +4066,7 @@ input[type=range]::-moz-range-thumb {
4694
4066
  width: 8px;
4695
4067
  padding: 0;
4696
4068
  border: 0;
4697
- background: rgba(255, 255, 255, .2);
4069
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .2);
4698
4070
  cursor: ew-resize;
4699
4071
  z-index: 2;
4700
4072
  }
@@ -4702,14 +4074,6 @@ input[type=range]::-moz-range-thumb {
4702
4074
  .tl-chip-handle.start { left: 0; }
4703
4075
  .tl-chip-handle.end { right: 0; }
4704
4076
 
4705
- .tl-chip-text {
4706
- flex: 1;
4707
- min-width: 0;
4708
- overflow: hidden;
4709
- text-overflow: ellipsis;
4710
- white-space: nowrap;
4711
- }
4712
-
4713
4077
  /* No motion prompt yet: identical frame 0..end geometry, visually quiet. */
4714
4078
  .tl-chip.empty {
4715
4079
  background: linear-gradient(103deg, #2a2d3a, #3b4050);
@@ -4761,27 +4125,8 @@ input[type=range]::-moz-range-thumb {
4761
4125
  text-align: center;
4762
4126
  }
4763
4127
 
4764
- .tl-shot-empty-add {
4765
- flex: none;
4766
- padding: 4px 8px;
4767
- border: 1px solid #735ba0;
4768
- border-radius: 4px;
4769
- background: rgba(80, 63, 109, .72);
4770
- color: #e7d9ff;
4771
- font: inherit;
4772
- font-style: normal;
4773
- cursor: pointer;
4774
- }
4775
-
4776
- .tl-shot-empty-add:hover,
4777
- .tl-shot-empty-add:focus-visible {
4778
- background: #5b467b;
4779
- border-color: #b79be8;
4780
- color: #fff;
4781
- }
4782
-
4783
4128
  .tl-shot-block.active {
4784
- border-color: #e7b557;
4129
+ border-color: var(--select);
4785
4130
  background: #503f6d;
4786
4131
  }
4787
4132
 
@@ -4881,8 +4226,8 @@ input[type=range]::-moz-range-thumb {
4881
4226
  width: 100%;
4882
4227
  height: 16px;
4883
4228
  padding: 0 3px;
4884
- border: 1px solid #e7b557;
4885
- background: #232323;
4229
+ border: 1px solid var(--select);
4230
+ background: var(--lg-232323, #232323);
4886
4231
  color: #fff;
4887
4232
  font: inherit;
4888
4233
  outline: 0;
@@ -4896,9 +4241,9 @@ input[type=range]::-moz-range-thumb {
4896
4241
  width: 14px;
4897
4242
  padding: 0;
4898
4243
  border: 0;
4899
- border-left: 2px solid #e7b557;
4244
+ border-left: 2px solid var(--select);
4900
4245
  background: transparent;
4901
- color: #e7b557;
4246
+ color: var(--select);
4902
4247
  font-size: 14px;
4903
4248
  line-height: 1;
4904
4249
  cursor: ew-resize;
@@ -4913,7 +4258,7 @@ input[type=range]::-moz-range-thumb {
4913
4258
  left: auto;
4914
4259
  right: 0;
4915
4260
  border-left: 0;
4916
- border-right: 2px solid #e7b557;
4261
+ border-right: 2px solid var(--select);
4917
4262
  }
4918
4263
 
4919
4264
  .tl-shot-actions {
@@ -4940,7 +4285,7 @@ input[type=range]::-moz-range-thumb {
4940
4285
  padding: 0 4px;
4941
4286
  border: 0;
4942
4287
  border-radius: 2px;
4943
- background: rgba(255, 255, 255, .12);
4288
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .12);
4944
4289
  color: inherit;
4945
4290
  font-size: 9px;
4946
4291
  line-height: 1;
@@ -4971,7 +4316,7 @@ input[type=range]::-moz-range-thumb {
4971
4316
 
4972
4317
  .tl-camera-block-state {
4973
4318
  padding: 1px 3px;
4974
- border: 1px solid rgba(255, 255, 255, .22);
4319
+ border: 1px solid rgba(var(--lg-ink-rgb, 255,255,255), .22);
4975
4320
  border-radius: 2px;
4976
4321
  background: rgba(0, 0, 0, .16);
4977
4322
  color: #d8ccef;
@@ -5014,27 +4359,6 @@ input[type=range]::-moz-range-thumb {
5014
4359
  display: none;
5015
4360
  }
5016
4361
  }
5017
- .tl-crane-point {
5018
- box-sizing: border-box;
5019
- position: absolute;
5020
- width: 18px;
5021
- height: 18px;
5022
- padding: 0;
5023
- transform: translate(-50%, -50%);
5024
- border: 2px solid #211b31;
5025
- border-radius: 50%;
5026
- background: #a78bfa;
5027
- box-shadow: 0 0 0 1px rgba(203, 183, 255, .65), 0 0 8px rgba(167, 139, 250, .9);
5028
- cursor: ns-resize;
5029
- pointer-events: auto;
5030
- z-index: 5;
5031
- }
5032
-
5033
- .tl-crane-point:hover,
5034
- .tl-crane-point:focus-visible {
5035
- outline: 2px solid #fff;
5036
- outline-offset: 1px;
5037
- }
5038
4362
 
5039
4363
  .tl-crane-point.selected {
5040
4364
  background: #ffb454;
@@ -5334,9 +4658,6 @@ input[type=range]::-moz-range-thumb {
5334
4658
  aspect-ratio: auto;
5335
4659
  max-height: none;
5336
4660
  }
5337
- .tagline {
5338
- display: none;
5339
- }
5340
4661
  .pose-studio {
5341
4662
  top: 15%;
5342
4663
  right: 8px;
@@ -5360,12 +4681,6 @@ input[type=range]::-moz-range-thumb {
5360
4681
  gap: 10px;
5361
4682
  height: 54px;
5362
4683
  }
5363
- .kbd-hint {
5364
- display: none;
5365
- }
5366
- .wordmark {
5367
- font-size: 22px;
5368
- }
5369
4684
  .viewport {
5370
4685
  min-height: 46vh;
5371
4686
  padding: 10px;
@@ -5644,14 +4959,6 @@ input[type=range]::-moz-range-thumb {
5644
4959
  width: 2px;
5645
4960
  }
5646
4961
 
5647
- .hierarchy-splitter {
5648
- position: relative;
5649
- z-index: 3;
5650
- height: 6px;
5651
- cursor: row-resize;
5652
- background: var(--panel);
5653
- }
5654
-
5655
4962
  .hierarchy-splitter:after,
5656
4963
  .timeline-splitter:after {
5657
4964
  left: 0;
@@ -5691,8 +4998,8 @@ input[type=range]::-moz-range-thumb {
5691
4998
  position: absolute;
5692
4999
  right: 5px;
5693
5000
  bottom: 5px;
5694
- border-right: 2px solid rgba(255, 255, 255, .72);
5695
- border-bottom: 2px solid rgba(255, 255, 255, .72);
5001
+ border-right: 2px solid rgba(var(--lg-ink-rgb, 255,255,255), .72);
5002
+ border-bottom: 2px solid rgba(var(--lg-ink-rgb, 255,255,255), .72);
5696
5003
  }
5697
5004
 
5698
5005
  .vp-inset-resize:before {
@@ -5710,11 +5017,6 @@ input[type=range]::-moz-range-thumb {
5710
5017
  user-select: none !important;
5711
5018
  }
5712
5019
 
5713
- body.resize-sidebar,
5714
- body.resize-sidebar * {
5715
- cursor: col-resize !important;
5716
- }
5717
-
5718
5020
  body.resize-hierarchy,
5719
5021
  body.resize-hierarchy *,
5720
5022
  body.resize-timeline,
@@ -5733,39 +5035,33 @@ input[type=range]::-moz-range-thumb {
5733
5035
  untouched so the production workflow remains familiar. */
5734
5036
 
5735
5037
  .panel.hierarchy-sidebar {
5736
- background: #282828;
5737
- border-color: rgba(255, 255, 255, .22);
5038
+ background: var(--surface-panel);
5039
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .22);
5738
5040
  }
5739
5041
 
5740
5042
  .hierarchy-pane {
5741
- background: #2c2c2c;
5742
- border-color: rgba(255, 255, 255, .22);
5043
+ background: var(--lg-2c2c2c, #2c2c2c);
5044
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .22);
5743
5045
  }
5744
5046
 
5745
5047
  .hierarchy-heading,
5746
5048
  .inspector-heading {
5747
- border-color: rgba(255, 255, 255, .14);
5748
- background: #232323;
5049
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .14);
5050
+ background: var(--lg-232323, #232323);
5749
5051
  }
5750
5052
 
5751
5053
  .hierarchy-heading strong,
5752
5054
  .inspector-heading strong {
5753
- color: #d2d2d2;
5055
+ color: var(--lg-d2d2d2, #d2d2d2);
5754
5056
  }
5755
5057
 
5756
5058
  .hierarchy-kicker,
5757
5059
  .inspector-heading > span {
5758
- color: #9a9a9a;
5759
- }
5760
-
5761
- .hierarchy-frame-status {
5762
- border-color: rgba(58, 124, 191, .35);
5763
- background: rgba(58, 124, 191, .09);
5764
- color: #5a9bd4;
5060
+ color: var(--lg-9a9a9a, #9a9a9a);
5765
5061
  }
5766
5062
 
5767
5063
  .hierarchy-row-wrap:before {
5768
- background: rgba(255, 255, 255, .13);
5064
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .13);
5769
5065
  }
5770
5066
 
5771
5067
  .hierarchy-row-wrap:hover {
@@ -5782,7 +5078,7 @@ input[type=range]::-moz-range-thumb {
5782
5078
  }
5783
5079
 
5784
5080
  .hierarchy-label {
5785
- color: #d2d2d2;
5081
+ color: var(--lg-d2d2d2, #d2d2d2);
5786
5082
  }
5787
5083
 
5788
5084
  .selected .hierarchy-label {
@@ -5794,8 +5090,8 @@ input[type=range]::-moz-range-thumb {
5794
5090
  }
5795
5091
 
5796
5092
  .hierarchy-badge {
5797
- background: rgba(255, 255, 255, .08);
5798
- color: #9a9a9a;
5093
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .08);
5094
+ color: var(--lg-9a9a9a, #9a9a9a);
5799
5095
  }
5800
5096
 
5801
5097
  .hierarchy-icon {
@@ -5814,12 +5110,12 @@ input[type=range]::-moz-range-thumb {
5814
5110
  .selected .hierarchy-icon { filter: brightness(1.25); }
5815
5111
 
5816
5112
  .inspector-scroll {
5817
- background: #282828;
5113
+ background: var(--surface-panel);
5818
5114
  }
5819
5115
 
5820
5116
  .card {
5821
- background: #2c2c2c;
5822
- border-color: rgba(255, 255, 255, .18);
5117
+ background: var(--lg-2c2c2c, #2c2c2c);
5118
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .18);
5823
5119
  border-radius: 8px;
5824
5120
  box-shadow: var(--shadow);
5825
5121
  }
@@ -5835,7 +5131,7 @@ input[type=range]::-moz-range-thumb {
5835
5131
  }
5836
5132
 
5837
5133
  .card h3 {
5838
- color: #9a9a9a;
5134
+ color: var(--lg-9a9a9a, #9a9a9a);
5839
5135
  }
5840
5136
 
5841
5137
  .card h3:before {
@@ -5851,62 +5147,52 @@ input[type=range]::-moz-range-thumb {
5851
5147
  .field label,
5852
5148
  .row,
5853
5149
  .readout {
5854
- color: #9a9a9a;
5150
+ color: var(--lg-9a9a9a, #9a9a9a);
5855
5151
  }
5856
5152
 
5857
5153
  .hint b,
5858
5154
  .ardy-hint code,
5859
5155
  .ardy-outcome code {
5860
- color: #d2d2d2;
5861
- }
5862
-
5863
- .inspector-status-grid,
5864
- .ardy-report {
5865
- border-color: rgba(255, 255, 255, .14);
5866
- background: rgba(255, 255, 255, .035);
5867
- }
5868
-
5869
- .inspector-status-grid b {
5870
- color: #d2d2d2;
5156
+ color: var(--lg-d2d2d2, #d2d2d2);
5871
5157
  }
5872
5158
 
5873
5159
  .inspector-list button {
5874
- border-color: rgba(255, 255, 255, .16);
5875
- background: rgba(255, 255, 255, .38);
5160
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .16);
5161
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .38);
5876
5162
  color: #3d4d58;
5877
5163
  }
5878
5164
 
5879
5165
  .inspector-list button:hover,
5880
5166
  .inspector-list button.active {
5881
5167
  border-color: rgba(58, 124, 191, .56);
5882
- background: #3c3c3c;
5883
- color: #d2d2d2;
5168
+ background: var(--lg-3c3c3c, #3c3c3c);
5169
+ color: var(--lg-d2d2d2, #d2d2d2);
5884
5170
  }
5885
5171
 
5886
5172
  .presets button {
5887
- background: #383838;
5888
- border-color: rgba(255, 255, 255, .16);
5173
+ background: var(--lg-383838, #383838);
5174
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .16);
5889
5175
  color: #3d4d58;
5890
5176
  border-radius: 6px;
5891
5177
  }
5892
5178
 
5893
5179
  .presets button:hover {
5894
- background: #3c3c3c;
5180
+ background: var(--lg-3c3c3c, #3c3c3c);
5895
5181
  border-color: rgba(58, 124, 191, .48);
5896
- color: #d2d2d2;
5182
+ color: var(--lg-d2d2d2, #d2d2d2);
5897
5183
  transform: none;
5898
5184
  }
5899
5185
 
5900
5186
  .presets button.active {
5901
5187
  border-color: #3a7cbf;
5902
5188
  background: #2d5c8a;
5903
- color: #d2d2d2;
5189
+ color: var(--lg-d2d2d2, #d2d2d2);
5904
5190
  box-shadow: 0 0 0 1px rgba(58, 124, 191, .16);
5905
5191
  }
5906
5192
 
5907
5193
  .row .val,
5908
5194
  .readout strong {
5909
- color: #d2d2d2;
5195
+ color: var(--lg-d2d2d2, #d2d2d2);
5910
5196
  }
5911
5197
 
5912
5198
  input[type=range] {
@@ -5914,13 +5200,13 @@ input[type=range] {
5914
5200
  }
5915
5201
 
5916
5202
  input[type=range]::-webkit-slider-thumb {
5917
- background: #2c2c2c;
5203
+ background: var(--lg-2c2c2c, #2c2c2c);
5918
5204
  border-color: #3a7cbf;
5919
5205
  box-shadow: 0 1px 2px rgba(0, 0, 0, .18);
5920
5206
  }
5921
5207
 
5922
5208
  input[type=range]::-moz-range-thumb {
5923
- background: #2c2c2c;
5209
+ background: var(--lg-2c2c2c, #2c2c2c);
5924
5210
  border-color: #3a7cbf;
5925
5211
  box-shadow: 0 1px 2px rgba(0, 0, 0, .18);
5926
5212
  }
@@ -5931,8 +5217,8 @@ input[type=range]::-moz-range-thumb {
5931
5217
  .field select,
5932
5218
  .dropdown .trigger {
5933
5219
  background-color: #323232;
5934
- border-color: rgba(255, 255, 255, .2);
5935
- color: #d2d2d2;
5220
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .2);
5221
+ color: var(--lg-d2d2d2, #d2d2d2);
5936
5222
  border-radius: 6px;
5937
5223
  box-shadow: none;
5938
5224
  }
@@ -5943,13 +5229,13 @@ input[type=range]::-moz-range-thumb {
5943
5229
  }
5944
5230
 
5945
5231
  .field select option {
5946
- background: #2c2c2c;
5947
- color: #d2d2d2;
5232
+ background: var(--lg-2c2c2c, #2c2c2c);
5233
+ color: var(--lg-d2d2d2, #d2d2d2);
5948
5234
  }
5949
5235
 
5950
5236
  .dropdown-menu {
5951
- background: #2c2c2c;
5952
- border-color: rgba(255, 255, 255, .24);
5237
+ background: var(--lg-2c2c2c, #2c2c2c);
5238
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .24);
5953
5239
  border-radius: 7px;
5954
5240
  box-shadow: var(--shadow-md);
5955
5241
  }
@@ -5960,8 +5246,8 @@ input[type=range]::-moz-range-thumb {
5960
5246
  }
5961
5247
 
5962
5248
  .dropdown-item:hover {
5963
- background: #3c3c3c;
5964
- color: #d2d2d2;
5249
+ background: var(--lg-3c3c3c, #3c3c3c);
5250
+ color: var(--lg-d2d2d2, #d2d2d2);
5965
5251
  }
5966
5252
 
5967
5253
  .dropdown-item.active {
@@ -5969,8 +5255,8 @@ input[type=range]::-moz-range-thumb {
5969
5255
  }
5970
5256
 
5971
5257
  .segmented {
5972
- background: #1e1e1e;
5973
- border-color: rgba(255, 255, 255, .18);
5258
+ background: var(--lg-1e1e1e, #1e1e1e);
5259
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .18);
5974
5260
  border-radius: 7px;
5975
5261
  }
5976
5262
 
@@ -5981,11 +5267,11 @@ input[type=range]::-moz-range-thumb {
5981
5267
  }
5982
5268
 
5983
5269
  .segmented button {
5984
- color: #9a9a9a;
5270
+ color: var(--lg-9a9a9a, #9a9a9a);
5985
5271
  }
5986
5272
 
5987
5273
  .segmented button:hover {
5988
- color: #d2d2d2;
5274
+ color: var(--lg-d2d2d2, #d2d2d2);
5989
5275
  }
5990
5276
 
5991
5277
  .segmented button.active {
@@ -5993,43 +5279,43 @@ input[type=range]::-moz-range-thumb {
5993
5279
  }
5994
5280
 
5995
5281
  .btn {
5996
- border-color: rgba(255, 255, 255, .24);
5997
- background: #383838;
5998
- color: #d2d2d2;
5282
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .24);
5283
+ background: var(--lg-383838, #383838);
5284
+ color: var(--lg-d2d2d2, #d2d2d2);
5999
5285
  border-radius: 6px;
6000
5286
  box-shadow: none;
6001
5287
  }
6002
5288
 
6003
5289
  .btn:hover {
6004
- background: #424242;
5290
+ background: var(--lg-424242, #424242);
6005
5291
  border-color: rgba(58, 124, 191, .55);
6006
5292
  box-shadow: none;
6007
5293
  transform: none;
6008
5294
  }
6009
5295
 
6010
5296
  .btn.ghost {
6011
- border-color: rgba(255, 255, 255, .18);
6012
- color: #9a9a9a;
5297
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .18);
5298
+ color: var(--lg-9a9a9a, #9a9a9a);
6013
5299
  }
6014
5300
 
6015
5301
  .btn.ghost:hover {
6016
- background: #3c3c3c;
6017
- color: #d2d2d2;
5302
+ background: var(--lg-3c3c3c, #3c3c3c);
5303
+ color: var(--lg-d2d2d2, #d2d2d2);
6018
5304
  }
6019
5305
 
6020
5306
  .btn.primary {
6021
- background: #3a7cbf;
6022
- border: 1px solid #397f91;
5307
+ background: var(--primary);
5308
+ border: 1px solid var(--primary);
6023
5309
  box-shadow: none;
6024
5310
  }
6025
5311
 
6026
5312
  .btn.primary:hover {
6027
- background: #3f91a7;
5313
+ background: var(--camera);
6028
5314
  box-shadow: none;
6029
5315
  }
6030
5316
 
6031
5317
  .vp-inset {
6032
- border: 1px solid rgba(255, 255, 255, .45);
5318
+ border: 1px solid rgba(var(--lg-ink-rgb, 255,255,255), .45);
6033
5319
  border-radius: 7px;
6034
5320
  box-shadow: 0 7px 20px rgba(0, 0, 0, .15);
6035
5321
  }
@@ -6053,28 +5339,15 @@ input[type=range]::-moz-range-thumb {
6053
5339
  .viewmode,
6054
5340
  .grid-toggle {
6055
5341
  background: rgba(255, 250, 241, .9);
6056
- border-color: rgba(255, 255, 255, .42);
6057
- color: #d2d2d2;
5342
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .42);
5343
+ color: var(--lg-d2d2d2, #d2d2d2);
6058
5344
  box-shadow: none;
6059
5345
  -webkit-backdrop-filter: blur(6px);
6060
5346
  backdrop-filter: blur(6px);
6061
5347
  }
6062
5348
 
6063
5349
  .vp-inset-tag {
6064
- color: #d2d2d2;
6065
- }
6066
-
6067
- .viewmode {
6068
- border-radius: 7px;
6069
- }
6070
-
6071
- .viewmode button {
6072
- color: #52616b;
6073
- border-radius: 5px;
6074
- }
6075
-
6076
- .viewmode button:hover {
6077
- color: #d2d2d2;
5350
+ color: var(--lg-d2d2d2, #d2d2d2);
6078
5351
  }
6079
5352
 
6080
5353
  .viewmode button.active {
@@ -6084,30 +5357,30 @@ input[type=range]::-moz-range-thumb {
6084
5357
  }
6085
5358
 
6086
5359
  .caption {
6087
- color: #d2d2d2;
5360
+ color: var(--lg-d2d2d2, #d2d2d2);
6088
5361
  }
6089
5362
 
6090
5363
  .grid-toggle.active {
6091
5364
  color: #5a9bd4;
6092
5365
  border-color: #3a7cbf;
6093
- background: #3c3c3c;
5366
+ background: var(--lg-3c3c3c, #3c3c3c);
6094
5367
  }
6095
5368
 
6096
5369
  .film-frame i:before,
6097
5370
  .film-frame i:after {
6098
- border-color: rgba(255, 255, 255, .72);
5371
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .72);
6099
5372
  }
6100
5373
 
6101
5374
  .toast,
6102
5375
  .modal,
6103
5376
  .promptbox {
6104
- background: #2c2c2c;
6105
- border-color: rgba(255, 255, 255, .24);
6106
- color: #d2d2d2;
5377
+ background: var(--lg-2c2c2c, #2c2c2c);
5378
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .24);
5379
+ color: var(--lg-d2d2d2, #d2d2d2);
6107
5380
  }
6108
5381
 
6109
5382
  .modal-overlay {
6110
- background: rgba(255, 255, 255, .3);
5383
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .3);
6111
5384
  }
6112
5385
 
6113
5386
  .modal:before {
@@ -6116,31 +5389,31 @@ input[type=range]::-moz-range-thumb {
6116
5389
  }
6117
5390
 
6118
5391
  .modal .x:hover {
6119
- color: #d2d2d2;
6120
- background: #1e1e1e;
5392
+ color: var(--lg-d2d2d2, #d2d2d2);
5393
+ background: var(--lg-1e1e1e, #1e1e1e);
6121
5394
  }
6122
5395
 
6123
5396
  .timeline {
6124
- background: #232323;
6125
- border-color: rgba(255, 255, 255, .22);
5397
+ background: var(--lg-232323, #232323);
5398
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .22);
6126
5399
  box-shadow: 0 -5px 14px rgba(0, 0, 0, .08);
6127
5400
  }
6128
5401
 
6129
5402
  .tl-head {
6130
- background: #282828;
6131
- border-color: rgba(255, 255, 255, .18);
5403
+ background: var(--surface-panel);
5404
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .18);
6132
5405
  }
6133
5406
 
6134
5407
  .tl-btn {
6135
- background: #2c2c2c;
6136
- color: #d2d2d2;
6137
- border-color: rgba(255, 255, 255, .27);
5408
+ background: var(--lg-2c2c2c, #2c2c2c);
5409
+ color: var(--lg-d2d2d2, #d2d2d2);
5410
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .27);
6138
5411
  border-bottom-width: 1px;
6139
5412
  border-radius: 5px;
6140
5413
  }
6141
5414
 
6142
5415
  .tl-btn:hover {
6143
- background: #3c3c3c;
5416
+ background: var(--lg-3c3c3c, #3c3c3c);
6144
5417
  border-color: #3a7cbf;
6145
5418
  }
6146
5419
 
@@ -6152,9 +5425,9 @@ input[type=range]::-moz-range-thumb {
6152
5425
  }
6153
5426
 
6154
5427
  .tl-readout {
6155
- background: #2c2c2c;
6156
- border-color: rgba(255, 255, 255, .18);
6157
- color: #9a9a9a;
5428
+ background: var(--lg-2c2c2c, #2c2c2c);
5429
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .18);
5430
+ color: var(--lg-9a9a9a, #9a9a9a);
6158
5431
  }
6159
5432
 
6160
5433
  .tl-readout b {
@@ -6162,31 +5435,31 @@ input[type=range]::-moz-range-thumb {
6162
5435
  }
6163
5436
 
6164
5437
  .tl-badge {
6165
- color: #e7b557;
5438
+ color: var(--select);
6166
5439
  background: rgba(231, 181, 87, .14);
6167
5440
  border-color: rgba(190, 134, 31, .46);
6168
5441
  }
6169
5442
 
6170
5443
  .tl-toggle:hover {
6171
- color: #d2d2d2;
6172
- background: #1e1e1e;
6173
- border-color: rgba(255, 255, 255, .2);
5444
+ color: var(--lg-d2d2d2, #d2d2d2);
5445
+ background: var(--lg-1e1e1e, #1e1e1e);
5446
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .2);
6174
5447
  }
6175
5448
 
6176
5449
  .tl-body,
6177
5450
  .tl-surface {
6178
- background: #282828;
5451
+ background: var(--surface-panel);
6179
5452
  }
6180
5453
 
6181
5454
  .tl-ruler {
6182
- background: #232323;
6183
- border-color: rgba(255, 255, 255, .18);
5455
+ background: var(--lg-232323, #232323);
5456
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .18);
6184
5457
  }
6185
5458
 
6186
5459
  .tl-ruler-label,
6187
5460
  .tl-track-label {
6188
- background: #282828;
6189
- border-color: rgba(255, 255, 255, .16);
5461
+ background: var(--surface-panel);
5462
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .16);
6190
5463
  color: #52616b;
6191
5464
  }
6192
5465
 
@@ -6195,36 +5468,36 @@ input[type=range]::-moz-range-thumb {
6195
5468
  }
6196
5469
 
6197
5470
  .tl-tick i {
6198
- background: rgba(255, 255, 255, .28);
5471
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .28);
6199
5472
  }
6200
5473
 
6201
5474
  .tl-track {
6202
- border-color: rgba(255, 255, 255, .1);
5475
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .1);
6203
5476
  }
6204
5477
 
6205
5478
  .tl-lane {
6206
- background-color: #282828;
5479
+ background-color: var(--surface-panel);
6207
5480
  }
6208
5481
 
6209
5482
  .tl-grid {
6210
- background: rgba(255, 255, 255, .075);
5483
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .075);
6211
5484
  }
6212
5485
 
6213
5486
  .tl-lane:hover {
6214
- background-color: #383838;
5487
+ background-color: var(--lg-383838, #383838);
6215
5488
  }
6216
5489
 
6217
5490
  .tl-frame-box {
6218
- background: #e7b557;
6219
- color: #d2d2d2;
5491
+ background: var(--select);
5492
+ color: var(--lg-d2d2d2, #d2d2d2);
6220
5493
  border: 1px solid #c58d29;
6221
5494
  border-radius: 5px;
6222
5495
  box-shadow: none;
6223
5496
  }
6224
5497
 
6225
5498
  .tl-track-add {
6226
- border-color: rgba(255, 255, 255, .24);
6227
- background: #2c2c2c;
5499
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .24);
5500
+ background: var(--lg-2c2c2c, #2c2c2c);
6228
5501
  color: #5a9bd4;
6229
5502
  }
6230
5503
 
@@ -6241,7 +5514,7 @@ input[type=range]::-moz-range-thumb {
6241
5514
  }
6242
5515
 
6243
5516
  .tl-chip.empty {
6244
- background: #424242;
5517
+ background: var(--lg-424242, #424242);
6245
5518
  color: #52616b;
6246
5519
  }
6247
5520
 
@@ -6250,12 +5523,12 @@ input[type=range]::-moz-range-thumb {
6250
5523
  }
6251
5524
 
6252
5525
  .tl-chip-handle {
6253
- background: rgba(255, 255, 255, .32);
5526
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .32);
6254
5527
  }
6255
5528
 
6256
5529
  .tl-marker {
6257
5530
  background: #6f9f86;
6258
- border-color: #2c2c2c;
5531
+ border-color: var(--lg-2c2c2c, #2c2c2c);
6259
5532
  box-shadow: 0 0 0 1px #5d8a73;
6260
5533
  }
6261
5534
 
@@ -6269,8 +5542,8 @@ input[type=range]::-moz-range-thumb {
6269
5542
  }
6270
5543
 
6271
5544
  .tl-marker.ik {
6272
- background: #d65f55;
6273
- border-color: #2c2c2c;
5545
+ background: var(--danger);
5546
+ border-color: var(--lg-2c2c2c, #2c2c2c);
6274
5547
  box-shadow: 0 0 0 1px #b54840;
6275
5548
  }
6276
5549
 
@@ -6280,7 +5553,7 @@ input[type=range]::-moz-range-thumb {
6280
5553
 
6281
5554
  .tl-ik-run {
6282
5555
  background: rgba(214, 95, 85, .42);
6283
- border-color: #2c2c2c;
5556
+ border-color: var(--lg-2c2c2c, #2c2c2c);
6284
5557
  box-shadow: 0 0 0 1px rgba(181, 72, 64, .5);
6285
5558
  }
6286
5559
 
@@ -6295,13 +5568,13 @@ input[type=range]::-moz-range-thumb {
6295
5568
  }
6296
5569
 
6297
5570
  .tl-ik-run-cap {
6298
- background: #d65f55;
6299
- border-color: #2c2c2c;
5571
+ background: var(--danger);
5572
+ border-color: var(--lg-2c2c2c, #2c2c2c);
6300
5573
  }
6301
5574
 
6302
5575
  .tl-ik-run-at {
6303
5576
  background: #f0a89f;
6304
- border-color: #2c2c2c;
5577
+ border-color: var(--lg-2c2c2c, #2c2c2c);
6305
5578
  box-shadow: 0 0 0 1px #b54840;
6306
5579
  }
6307
5580
 
@@ -6311,7 +5584,7 @@ input[type=range]::-moz-range-thumb {
6311
5584
 
6312
5585
  .tl-marker.cam {
6313
5586
  background: #9a7bd4;
6314
- border-color: #2c2c2c;
5587
+ border-color: var(--lg-2c2c2c, #2c2c2c);
6315
5588
  box-shadow: 0 0 0 1px #7b5cb0;
6316
5589
  }
6317
5590
 
@@ -6328,7 +5601,7 @@ input[type=range]::-moz-range-thumb {
6328
5601
  .tl-btn.ik.snap.on {
6329
5602
  color: #e58a80;
6330
5603
  background: rgba(214, 95, 85, .09);
6331
- border-color: #d65f55;
5604
+ border-color: var(--danger);
6332
5605
  box-shadow: none;
6333
5606
  }
6334
5607
 
@@ -6352,23 +5625,17 @@ input[type=range]::-moz-range-thumb {
6352
5625
  }
6353
5626
 
6354
5627
  .tl-wp-hint.warn {
6355
- color: #e7b557;
5628
+ color: var(--select);
6356
5629
  }
6357
5630
 
6358
5631
  .tl-playhead {
6359
- background: #e7b557;
5632
+ background: var(--select);
6360
5633
  box-shadow: none;
6361
5634
  width: 2px;
6362
5635
  }
6363
5636
 
6364
5637
  /* ----------------------------------------------- Cozy Clay typography ---- */
6365
5638
 
6366
- .tagline {
6367
- font-size: 12px;
6368
- font-weight: 480;
6369
- letter-spacing: -.005em;
6370
- }
6371
-
6372
5639
  .hierarchy-heading strong,
6373
5640
  .inspector-heading strong {
6374
5641
  font-family: var(--display);
@@ -6472,17 +5739,6 @@ input[type=range]::-moz-range-thumb {
6472
5739
  letter-spacing: -.015em;
6473
5740
  }
6474
5741
 
6475
- .kbd-hint {
6476
- font-size: 10.5px;
6477
- letter-spacing: -.015em;
6478
- }
6479
-
6480
- .kbd-hint b {
6481
- font-size: 9.5px;
6482
- font-weight: 650;
6483
- letter-spacing: -.02em;
6484
- }
6485
-
6486
5742
  .caption {
6487
5743
  font-size: 10px;
6488
5744
  font-weight: 650;
@@ -6554,7 +5810,7 @@ input[type=range]::-moz-range-thumb {
6554
5810
 
6555
5811
  .pose-studio {
6556
5812
  background: rgba(255, 250, 241, .96);
6557
- border-color: rgba(255, 255, 255, .24);
5813
+ border-color: rgba(var(--lg-ink-rgb, 255,255,255), .24);
6558
5814
  border-radius: 8px;
6559
5815
  box-shadow: var(--shadow-lg);
6560
5816
  backdrop-filter: blur(12px);
@@ -6612,35 +5868,6 @@ input[type=range]::-moz-range-thumb {
6612
5868
  flex-direction: column;
6613
5869
  }
6614
5870
 
6615
- .right-panel-tabs {
6616
- display: grid;
6617
- flex: none;
6618
- grid-template-columns: 1fr 1fr;
6619
- gap: 4px;
6620
- padding: 8px;
6621
- border-bottom: 1px solid var(--line);
6622
- background: var(--panel);
6623
- }
6624
-
6625
- .right-panel-tabs button {
6626
- height: 34px;
6627
- padding: 0 10px;
6628
- border: 1px solid transparent;
6629
- border-radius: 7px;
6630
- background: transparent;
6631
- color: var(--muted);
6632
- font: inherit;
6633
- font-size: 10px;
6634
- font-weight: 700;
6635
- letter-spacing: .03em;
6636
- cursor: pointer;
6637
- }
6638
-
6639
- .right-panel-tabs button:hover {
6640
- background: rgba(58, 124, 191, .08);
6641
- color: var(--fg);
6642
- }
6643
-
6644
5871
  .right-panel-tabs button.active {
6645
5872
  border-color: rgba(58, 124, 191, .42);
6646
5873
  background: #2d5c8a;
@@ -6654,19 +5881,6 @@ input[type=range]::-moz-range-thumb {
6654
5881
  min-height: 0;
6655
5882
  }
6656
5883
 
6657
- .right-panel-view {
6658
- /* Vertical scrolling belongs to the pane inside; the horizontal axis has to
6659
- be reachable here, because a wide row (a long id, a deep hierarchy path)
6660
- was otherwise clipped with no way to scroll to it. */
6661
- overflow: hidden auto;
6662
- flex: 1 1 0;
6663
- min-width: 0;
6664
- }
6665
-
6666
- .right-panel-view > [hidden] {
6667
- display: none !important;
6668
- }
6669
-
6670
5884
  .hierarchy-tab-pane,
6671
5885
  .hierarchy-tab-pane > .hierarchy-pane,
6672
5886
  .inspector-pane {
@@ -6682,20 +5896,11 @@ input[type=range]::-moz-range-thumb {
6682
5896
  /* window title strips stay visible in the Unity layout (the tabbed
6683
5897
  panel that hid them is gone) */
6684
5898
 
6685
- /* ------------------------------------------------- scene objects --- */
6686
- /* Create menu, gizmo tool switch and object swatches. The hierarchy's own
6687
- heading is hidden in the tabbed panel, so the create action gets its own
6688
- toolbar row above the tree. */
6689
-
6690
- .hierarchy-toolbar {
6691
- display: flex;
6692
- align-items: center;
6693
- justify-content: space-between;
6694
- gap: 8px;
6695
- padding: 8px 10px;
6696
- border-bottom: 1px solid var(--line);
6697
- }
6698
-
5899
+ /* ------------------------------------------------- scene objects --- */
5900
+ /* Create menu, gizmo tool switch and object swatches. The hierarchy's own
5901
+ heading is hidden in the tabbed panel, so the create action gets its own
5902
+ toolbar row above the tree. */
5903
+
6699
5904
  .add-object {
6700
5905
  position: relative;
6701
5906
  }
@@ -6782,7 +5987,7 @@ input[type=range]::-moz-range-thumb {
6782
5987
  flex: none;
6783
5988
  width: 12px;
6784
5989
  height: 12px;
6785
- border: 1px solid rgba(255, 255, 255, .25);
5990
+ border: 1px solid rgba(var(--lg-ink-rgb, 255,255,255), .25);
6786
5991
  border-radius: 3px;
6787
5992
  }
6788
5993
 
@@ -6799,15 +6004,6 @@ input[type=range]::-moz-range-thumb {
6799
6004
  box-shadow: none;
6800
6005
  }
6801
6006
 
6802
- .gizmo-modes kbd {
6803
- margin-left: 5px;
6804
- padding: 1px 4px;
6805
- border: 1px solid rgba(255, 255, 255, .2);
6806
- border-radius: 4px;
6807
- font-family: var(--mono);
6808
- font-size: 8px;
6809
- }
6810
-
6811
6007
  .object-colors {
6812
6008
  display: flex;
6813
6009
  gap: 6px;
@@ -6817,7 +6013,7 @@ input[type=range]::-moz-range-thumb {
6817
6013
  .object-color {
6818
6014
  width: 22px;
6819
6015
  height: 22px;
6820
- border: 1px solid rgba(255, 255, 255, .25);
6016
+ border: 1px solid rgba(var(--lg-ink-rgb, 255,255,255), .25);
6821
6017
  border-radius: 6px;
6822
6018
  cursor: pointer;
6823
6019
  }
@@ -6971,13 +6167,6 @@ input[type=range]::-moz-range-thumb {
6971
6167
  }
6972
6168
 
6973
6169
  /* ------------------------------------------------ camera move A→B ------ */
6974
- /* The move workspace: four small buttons in the field row, a derived slate
6975
- line underneath, and a two-up start/end pair in the result modal. */
6976
- .move-ab {
6977
- display: flex;
6978
- flex-wrap: wrap;
6979
- gap: 6px;
6980
- }
6981
6170
 
6982
6171
  .move-ab .btn {
6983
6172
  flex: 1;
@@ -7053,7 +6242,7 @@ input[type=range]::-moz-range-thumb {
7053
6242
  content — outside every hidden card — so it stays on screen for any
7054
6243
  selection, including an active object, which is exactly when saves fire.
7055
6244
  The one-shot toast announces each episode; this line persists until the
7056
- next successful write clears it. Pencil-red family (#d65f55), the light
6245
+ next successful write clears it. Pencil-red family (var(--danger)), the light
7057
6246
  theme's existing IK warning tone: a soft fill and border, not a shouting
7058
6247
  solid. */
7059
6248
  .scene-save-error {
@@ -7123,35 +6312,6 @@ input[type=range]::-moz-range-thumb {
7123
6312
  border-top: 1px solid var(--line);
7124
6313
  }
7125
6314
 
7126
- .bottom-window-tabs {
7127
- flex: none;
7128
- display: flex;
7129
- gap: 2px;
7130
- padding: 3px 8px 0;
7131
- border-bottom: 1px solid var(--line);
7132
- background: var(--panel);
7133
- }
7134
-
7135
- .bottom-window-tabs button {
7136
- height: 26px;
7137
- padding: 0 12px;
7138
- border: 1px solid transparent;
7139
- border-bottom: 0;
7140
- border-radius: 3px 3px 0 0;
7141
- background: transparent;
7142
- color: var(--muted);
7143
- font: inherit;
7144
- font-size: 10px;
7145
- font-weight: 700;
7146
- letter-spacing: .03em;
7147
- cursor: pointer;
7148
- }
7149
-
7150
- .bottom-window-tabs button:hover {
7151
- color: var(--fg);
7152
- background: var(--hover);
7153
- }
7154
-
7155
6315
  .bottom-window-tabs button.active {
7156
6316
  background: var(--bg);
7157
6317
  border-color: var(--line2);
@@ -7190,13 +6350,6 @@ input[type=range]::-moz-range-thumb {
7190
6350
  background: var(--panel);
7191
6351
  }
7192
6352
 
7193
- .assets-shelf {
7194
- display: grid;
7195
- grid-template-columns: 170px minmax(560px, 1fr) minmax(240px, .55fr);
7196
- align-items: start;
7197
- gap: 8px;
7198
- }
7199
-
7200
6353
  .assets-shelf:has(.asset-storage-manager) {
7201
6354
  display: block;
7202
6355
  }
@@ -7205,14 +6358,6 @@ input[type=range]::-moz-range-thumb {
7205
6358
  margin-bottom: 6px;
7206
6359
  }
7207
6360
 
7208
- .assets-shelf-toolbar {
7209
- display: flex;
7210
- align-items: center;
7211
- justify-content: flex-end;
7212
- grid-column: 1 / -1;
7213
- min-height: 24px;
7214
- }
7215
-
7216
6361
  .assets-manage-toggle,
7217
6362
  .asset-storage-undo,
7218
6363
  .asset-storage-cancel,
@@ -7429,74 +6574,6 @@ input[type=range]::-moz-range-thumb {
7429
6574
  cursor: pointer;
7430
6575
  }
7431
6576
 
7432
- .assets-section {
7433
- --asset-group: 90, 155, 212;
7434
- display: flex;
7435
- flex-direction: column;
7436
- gap: 4px;
7437
- min-width: 0;
7438
- padding: 5px;
7439
- border: 1px solid var(--line2);
7440
- border-radius: 6px;
7441
- background: linear-gradient(180deg, rgba(var(--asset-group), .075), rgba(var(--asset-group), .025) 42px);
7442
- }
7443
-
7444
- .assets-section:nth-of-type(1) {
7445
- --asset-group: 164, 126, 221;
7446
- }
7447
-
7448
- .assets-section:nth-of-type(2) {
7449
- --asset-group: 72, 174, 184;
7450
- }
7451
-
7452
- .assets-section:nth-of-type(3) {
7453
- --asset-group: 222, 159, 74;
7454
- }
7455
-
7456
- /* Section headings mirror the add-object popover's group headings: structure
7457
- over count — no badges, no search, just where each kind of card lives. */
7458
- .assets-section-title {
7459
- margin: 0 1px;
7460
- font-size: 10px;
7461
- font-weight: 600;
7462
- text-transform: uppercase;
7463
- letter-spacing: 0.08em;
7464
- color: var(--muted2);
7465
- }
7466
-
7467
- .assets-grid {
7468
- display: grid;
7469
- grid-template-columns: repeat(auto-fill, minmax(74px, 1fr));
7470
- gap: 6px;
7471
- }
7472
-
7473
- .asset-card {
7474
- display: flex;
7475
- flex-direction: column;
7476
- align-items: center;
7477
- justify-content: center;
7478
- gap: 3px;
7479
- min-width: 0;
7480
- min-height: 68px;
7481
- padding: 6px 4px 5px;
7482
- background: var(--panel2, #1d1d1f);
7483
- border: 1px solid var(--line);
7484
- border-radius: 5px;
7485
- color: var(--fg);
7486
- cursor: grab;
7487
- user-select: none;
7488
- touch-action: none;
7489
- }
7490
-
7491
- .asset-card:hover {
7492
- border-color: var(--accent);
7493
- background: var(--hover);
7494
- }
7495
-
7496
- .asset-card:active {
7497
- cursor: grabbing;
7498
- }
7499
-
7500
6577
  .asset-card-swatch {
7501
6578
  width: 30px;
7502
6579
  height: 30px;
@@ -7539,30 +6616,6 @@ input[type=range]::-moz-range-thumb {
7539
6616
  border: 1px solid #d8d2c4;
7540
6617
  }
7541
6618
 
7542
- .asset-card-label {
7543
- max-width: 100%;
7544
- overflow: hidden;
7545
- text-overflow: ellipsis;
7546
- white-space: nowrap;
7547
- font-size: 10px;
7548
- font-weight: 600;
7549
- }
7550
-
7551
- .asset-card-kind {
7552
- font-size: 9px;
7553
- color: var(--muted2);
7554
- }
7555
-
7556
- /* Imported-image cards wear the picture itself, letterboxed into the same
7557
- square the character swatch occupies so every card keeps one rhythm. */
7558
- .asset-card-thumb {
7559
- width: 30px;
7560
- height: 30px;
7561
- border-radius: 7px;
7562
- object-fit: contain;
7563
- background: var(--card2, #161618);
7564
- }
7565
-
7566
6619
  /* Placeholders while a scan or a decode is in flight — the grid never blocks
7567
6620
  on a thumbnail, and the empty message never races the scan. */
7568
6621
  .asset-card-thumb-skeleton,
@@ -7576,25 +6629,6 @@ input[type=range]::-moz-range-thumb {
7576
6629
  min-width: 84px;
7577
6630
  }
7578
6631
 
7579
- /* A card whose bytes failed to decode: visible so it can be deleted from
7580
- Manage storage, clearly marked so nobody drags a broken image on stage. */
7581
- .asset-card-failed {
7582
- opacity: .72;
7583
- border-color: #8a4a3a !important;
7584
- cursor: not-allowed;
7585
- }
7586
- .asset-card-failed .asset-card-kind { color: #e08a7a; }
7587
-
7588
- .asset-card-skeleton {
7589
- min-width: 0;
7590
- width: auto;
7591
- height: 68px;
7592
- padding: 0;
7593
- border: 1px solid var(--line);
7594
- border-radius: 5px;
7595
- background: var(--panel2, #1d1d1f);
7596
- }
7597
-
7598
6632
  @keyframes asset-skeleton {
7599
6633
  from {
7600
6634
  opacity: 0.35;
@@ -7617,26 +6651,7 @@ input[type=range]::-moz-range-thumb {
7617
6651
  line-height: 1.4;
7618
6652
  }
7619
6653
 
7620
- @media (max-width: 1180px) {
7621
- .assets-shelf {
7622
- grid-template-columns: 170px minmax(480px, 1fr);
7623
- }
7624
-
7625
- .assets-shelf-toolbar,
7626
- .assets-section:last-child {
7627
- grid-column: 1 / -1;
7628
- }
7629
- }
7630
-
7631
6654
  @media (max-width: 760px) {
7632
- .assets-shelf {
7633
- grid-template-columns: 1fr;
7634
- }
7635
-
7636
- .assets-shelf-toolbar,
7637
- .assets-section:last-child {
7638
- grid-column: auto;
7639
- }
7640
6655
 
7641
6656
  .asset-storage-list {
7642
6657
  grid-template-columns: 1fr;
@@ -7695,53 +6710,11 @@ input[type=range]::-moz-range-thumb {
7695
6710
  }
7696
6711
  }
7697
6712
 
7698
- /* top toolbar: Unity-style tool switch + snap toggle */
7699
- .editor-toolbar {
7700
- justify-self: center;
7701
- display: flex;
7702
- align-items: center;
7703
- gap: 8px;
7704
- }
7705
-
7706
- .tool-switch {
7707
- display: flex;
7708
- gap: 2px;
7709
- padding: 2px;
7710
- border: 1px solid var(--line);
7711
- border-radius: 5px;
7712
- background: var(--card2);
7713
- }
7714
-
7715
- .tool-switch button,
7716
- .snap-switch {
7717
- height: 24px;
7718
- padding: 0 10px;
7719
- border: 1px solid transparent;
7720
- border-radius: 3px;
7721
- background: transparent;
7722
- color: var(--muted);
7723
- font: inherit;
7724
- font-size: 10px;
7725
- font-weight: 700;
7726
- letter-spacing: .03em;
7727
- cursor: pointer;
7728
- }
7729
-
7730
- .tool-switch button:hover,
7731
- .snap-switch:hover {
7732
- color: var(--fg);
7733
- background: var(--hover);
7734
- }
7735
-
7736
6713
  .tool-switch button.active {
7737
6714
  background: var(--accent);
7738
6715
  color: var(--on-accent);
7739
6716
  }
7740
6717
 
7741
- .snap-switch {
7742
- border-color: var(--line);
7743
- }
7744
-
7745
6718
  .snap-switch.active {
7746
6719
  border-color: var(--accent);
7747
6720
  background: var(--accent-soft);
@@ -7811,47 +6784,12 @@ input[type=range]::-moz-range-thumb {
7811
6784
  background: var(--panel);
7812
6785
  border-bottom: 1px solid var(--line);
7813
6786
  }
7814
-
7815
- /* Workflow-first navigation: operators choose the department before the
7816
- toolbar reveals its controls. This keeps the existing tools available while
7817
- removing the cockpit effect of showing every control at once. */
7818
- .workflow-mode-switch {
7819
- flex: none;
7820
- display: flex;
7821
- align-items: stretch;
7822
- gap: 2px;
7823
- padding: 3px 4px;
7824
- border-right: 1px solid var(--line);
7825
- background: var(--panel);
7826
- }
7827
- .workflow-mode-switch button {
7828
- height: 21px;
7829
- min-width: 54px;
7830
- padding: 0 8px;
7831
- border: 1px solid transparent;
7832
- border-radius: 3px;
7833
- background: transparent;
7834
- color: var(--muted);
7835
- font: inherit;
7836
- font-size: 10px;
7837
- font-weight: 700;
7838
- cursor: pointer;
7839
- }
7840
- .workflow-mode-switch button:hover { color: var(--fg); background: var(--hover); }
7841
6787
  .workflow-mode-switch button.active {
7842
6788
  color: #fff;
7843
6789
  background: #2d5c8a;
7844
6790
  border-color: #4b8bc4;
7845
6791
  box-shadow: 0 0 0 1px rgba(75,139,196,.24);
7846
6792
  }
7847
- .workflow-toolbar-hint {
7848
- align-self: center;
7849
- padding: 0 10px;
7850
- color: #9fb7cc;
7851
- font-size: 10px;
7852
- font-weight: 600;
7853
- white-space: nowrap;
7854
- }
7855
6793
  /* Scene mode owns transform/grid tools; Camera mode owns framing controls.
7856
6794
  Motion mode intentionally leaves only its short instruction in the bar. */
7857
6795
  .app[data-workflow-mode="scene"] .workflow-camera-context { display: none; }
@@ -7908,15 +6846,15 @@ input[type=range]::-moz-range-thumb {
7908
6846
  }
7909
6847
 
7910
6848
  .btn {
7911
- background: #383838;
7912
- border: 1px solid #1a1a1a;
6849
+ background: var(--lg-383838, #383838);
6850
+ border: 1px solid var(--lg-1a1a1a, #1a1a1a);
7913
6851
  color: var(--fg);
7914
6852
  transform: none;
7915
6853
  }
7916
6854
 
7917
6855
  .btn:hover {
7918
- background: #3f3f3f;
7919
- border-color: #1a1a1a;
6856
+ background: var(--lg-3f3f3f, #3f3f3f);
6857
+ border-color: var(--lg-1a1a1a, #1a1a1a);
7920
6858
  transform: none;
7921
6859
  box-shadow: none;
7922
6860
  }
@@ -7927,8 +6865,8 @@ input[type=range]::-moz-range-thumb {
7927
6865
 
7928
6866
  .btn.primary,
7929
6867
  .btn.primary:hover {
7930
- background: #2d5c8a;
7931
- border: 1px solid #1a1a1a;
6868
+ background: var(--camera);
6869
+ border: 1px solid var(--camera);
7932
6870
  box-shadow: none;
7933
6871
  transform: none;
7934
6872
  }
@@ -7948,20 +6886,20 @@ input[type=range]::-moz-range-thumb {
7948
6886
  }
7949
6887
 
7950
6888
  .presets button {
7951
- background: #383838;
7952
- border: 1px solid #1a1a1a;
6889
+ background: var(--lg-383838, #383838);
6890
+ border: 1px solid var(--lg-1a1a1a, #1a1a1a);
7953
6891
  color: var(--fg);
7954
6892
  }
7955
6893
 
7956
6894
  .presets button:hover {
7957
- background: #3f3f3f;
6895
+ background: var(--lg-3f3f3f, #3f3f3f);
7958
6896
  transform: none;
7959
6897
  box-shadow: none;
7960
6898
  }
7961
6899
 
7962
6900
  .presets button.active {
7963
6901
  background: #2d5c8a;
7964
- border-color: #1a1a1a;
6902
+ border-color: var(--lg-1a1a1a, #1a1a1a);
7965
6903
  color: #fff;
7966
6904
  box-shadow: none;
7967
6905
  }
@@ -7972,8 +6910,8 @@ input[type=range]::-moz-range-thumb {
7972
6910
  .field textarea,
7973
6911
  .field select,
7974
6912
  .dropdown .trigger {
7975
- background-color: #2a2a2a;
7976
- border: 1px solid #1a1a1a;
6913
+ background-color: var(--lg-2a2a2a, #2a2a2a);
6914
+ border: 1px solid var(--lg-1a1a1a, #1a1a1a);
7977
6915
  color: var(--fg);
7978
6916
  }
7979
6917
 
@@ -7987,8 +6925,8 @@ input[type=range]::-moz-range-thumb {
7987
6925
  }
7988
6926
 
7989
6927
  .dropdown-menu {
7990
- background: #2c2c2c;
7991
- border: 1px solid #1a1a1a;
6928
+ background: var(--lg-2c2c2c, #2c2c2c);
6929
+ border: 1px solid var(--lg-1a1a1a, #1a1a1a);
7992
6930
  box-shadow: 0 4px 12px rgba(0, 0, 0, .5);
7993
6931
  }
7994
6932
 
@@ -8019,7 +6957,7 @@ input[type=range]::-moz-range-thumb {
8019
6957
  }
8020
6958
 
8021
6959
  .foldout-head:hover {
8022
- background: #383838;
6960
+ background: var(--lg-383838, #383838);
8023
6961
  }
8024
6962
 
8025
6963
  .foldout-body {
@@ -8029,7 +6967,7 @@ input[type=range]::-moz-range-thumb {
8029
6967
  /* range slider: thin flat track, small square knob */
8030
6968
  input[type=range] {
8031
6969
  height: 4px;
8032
- background: #1e1e1e;
6970
+ background: var(--lg-1e1e1e, #1e1e1e);
8033
6971
  border-radius: 0;
8034
6972
  }
8035
6973
 
@@ -8037,8 +6975,8 @@ input[type=range]::-webkit-slider-thumb {
8037
6975
  width: 12px;
8038
6976
  height: 12px;
8039
6977
  border-radius: 2px;
8040
- background: #c4c4c4;
8041
- border: 1px solid #1a1a1a;
6978
+ background: var(--lg-c4c4c4, #c4c4c4);
6979
+ border: 1px solid var(--lg-1a1a1a, #1a1a1a);
8042
6980
  box-shadow: none;
8043
6981
  }
8044
6982
 
@@ -8056,15 +6994,15 @@ input[type=range]::-moz-range-thumb {
8056
6994
  width: 12px;
8057
6995
  height: 12px;
8058
6996
  border-radius: 2px;
8059
- background: #c4c4c4;
8060
- border: 1px solid #1a1a1a;
6997
+ background: var(--lg-c4c4c4, #c4c4c4);
6998
+ border: 1px solid var(--lg-1a1a1a, #1a1a1a);
8061
6999
  box-shadow: none;
8062
7000
  }
8063
7001
 
8064
7002
  /* segmented control: flat Unity toggle strip */
8065
7003
  .segmented {
8066
- background: #2a2a2a;
8067
- border: 1px solid #1a1a1a;
7004
+ background: var(--lg-2a2a2a, #2a2a2a);
7005
+ border: 1px solid var(--lg-1a1a1a, #1a1a1a);
8068
7006
  padding: 2px;
8069
7007
  }
8070
7008
 
@@ -8076,8 +7014,8 @@ input[type=range]::-moz-range-thumb {
8076
7014
 
8077
7015
  /* modal & toast: flat editor dialogs */
8078
7016
  .modal {
8079
- background: #2c2c2c;
8080
- border: 1px solid #1a1a1a;
7017
+ background: var(--lg-2c2c2c, #2c2c2c);
7018
+ border: 1px solid var(--lg-1a1a1a, #1a1a1a);
8081
7019
  box-shadow: 0 8px 30px rgba(0, 0, 0, .6);
8082
7020
  }
8083
7021
 
@@ -8086,15 +7024,15 @@ input[type=range]::-moz-range-thumb {
8086
7024
  }
8087
7025
 
8088
7026
  .toast {
8089
- background: #2c2c2c;
8090
- border: 1px solid #1a1a1a;
7027
+ background: var(--lg-2c2c2c, #2c2c2c);
7028
+ border: 1px solid var(--lg-1a1a1a, #1a1a1a);
8091
7029
  box-shadow: 0 4px 12px rgba(0, 0, 0, .5);
8092
7030
  }
8093
7031
 
8094
7032
  /* pose studio: flat docked window */
8095
7033
  .pose-studio {
8096
7034
  background: rgba(44, 44, 44, .97);
8097
- border: 1px solid #1a1a1a;
7035
+ border: 1px solid var(--lg-1a1a1a, #1a1a1a);
8098
7036
  border-radius: 2px;
8099
7037
  box-shadow: 0 8px 30px rgba(0, 0, 0, .6);
8100
7038
  backdrop-filter: none;
@@ -8119,25 +7057,12 @@ input[type=range]::-moz-range-thumb {
8119
7057
  -webkit-backdrop-filter: none;
8120
7058
  }
8121
7059
 
8122
- /* tool palette icons */
8123
- .tool-switch button {
8124
- display: inline-flex;
8125
- align-items: center;
8126
- gap: 6px;
8127
- }
8128
-
8129
- .tool-icon {
8130
- width: 13px;
8131
- height: 13px;
8132
- flex: none;
8133
- }
8134
-
8135
7060
  /* ------------------------------------------- Unity inspector density ------ */
8136
7061
  /* Compact property rows: no card boxes, thin section dividers, label column
8137
7062
  on the left, value on the right — Unity Inspector metrics. */
8138
7063
 
8139
7064
  .inspector-sidebar .inspector-pane {
8140
- background: #2c2c2c;
7065
+ background: var(--lg-2c2c2c, #2c2c2c);
8141
7066
  }
8142
7067
 
8143
7068
  .inspector-heading {
@@ -8146,8 +7071,8 @@ input[type=range]::-moz-range-thumb {
8146
7071
  gap: 8px;
8147
7072
  height: 28px;
8148
7073
  padding: 0 12px;
8149
- border-bottom: 1px solid #1a1a1a;
8150
- background: #282828;
7074
+ border-bottom: 1px solid var(--lg-1a1a1a, #1a1a1a);
7075
+ background: var(--surface-panel);
8151
7076
  }
8152
7077
 
8153
7078
  .inspector-heading > span {
@@ -8162,7 +7087,7 @@ input[type=range]::-moz-range-thumb {
8162
7087
 
8163
7088
  .inspector-scroll {
8164
7089
  padding: 0;
8165
- background: #2c2c2c;
7090
+ background: var(--lg-2c2c2c, #2c2c2c);
8166
7091
  }
8167
7092
 
8168
7093
  .inspector-scroll > .card {
@@ -8174,7 +7099,7 @@ input[type=range]::-moz-range-thumb {
8174
7099
  .card {
8175
7100
  background: transparent;
8176
7101
  border: 0;
8177
- border-bottom: 1px solid #232323;
7102
+ border-bottom: 1px solid var(--lg-232323, #232323);
8178
7103
  border-radius: 0;
8179
7104
  padding: 0 0 8px;
8180
7105
  }
@@ -8192,7 +7117,7 @@ input[type=range]::-moz-range-thumb {
8192
7117
  }
8193
7118
 
8194
7119
  .foldout-head:hover {
8195
- background: rgba(255, 255, 255, .04);
7120
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .04);
8196
7121
  }
8197
7122
 
8198
7123
  .foldout-arrow {
@@ -8235,7 +7160,7 @@ input[type=range] {
8235
7160
  .multimodel-card {
8236
7161
  padding: 8px;
8237
7162
  border: 1px solid rgba(58, 124, 191, .38);
8238
- background: linear-gradient(180deg, rgba(58, 124, 191, .12), rgba(255, 255, 255, .025));
7163
+ background: linear-gradient(180deg, rgba(58, 124, 191, .12), rgba(var(--lg-ink-rgb, 255,255,255), .025));
8239
7164
  border-radius: 3px;
8240
7165
  }
8241
7166
 
@@ -8292,7 +7217,7 @@ input[type=range] {
8292
7217
  .multimodel-input-block {
8293
7218
  margin-top: 9px;
8294
7219
  padding: 8px;
8295
- border: 1px solid rgba(255, 255, 255, .1);
7220
+ border: 1px solid rgba(var(--lg-ink-rgb, 255,255,255), .1);
8296
7221
  background: rgba(0, 0, 0, .12);
8297
7222
  }
8298
7223
 
@@ -8437,7 +7362,7 @@ input[type=range] {
8437
7362
  height: 44px;
8438
7363
  object-fit: cover;
8439
7364
  background: #000;
8440
- border: 1px solid rgba(255, 255, 255, .12);
7365
+ border: 1px solid rgba(var(--lg-ink-rgb, 255,255,255), .12);
8441
7366
  }
8442
7367
 
8443
7368
  .multimodel-receipt-body {
@@ -8636,7 +7561,7 @@ input[type=range] {
8636
7561
  .subject-box {
8637
7562
  padding: 6px 8px 8px;
8638
7563
  border-radius: 2px;
8639
- background: #282828;
7564
+ background: var(--surface-panel);
8640
7565
  }
8641
7566
 
8642
7567
  .sb-name,
@@ -8673,13 +7598,6 @@ input[type=range] {
8673
7598
  margin-top: 6px;
8674
7599
  }
8675
7600
 
8676
- .ardy-report,
8677
- .inspector-status-grid {
8678
- padding: 6px 8px;
8679
- border-radius: 2px;
8680
- font-size: 10px;
8681
- }
8682
-
8683
7601
  .inspector-list button {
8684
7602
  padding: 4px 8px;
8685
7603
  font-size: 11px;
@@ -8695,89 +7613,24 @@ input[type=range] {
8695
7613
  padding: 0 4px;
8696
7614
  }
8697
7615
 
8698
- .presets.gizmo-modes kbd {
8699
- font-size: 8px;
8700
- padding: 0 3px;
8701
- border-radius: 2px;
8702
- }
8703
-
8704
- .object-colors {
8705
- gap: 4px;
8706
- margin: 4px 0 8px;
8707
- }
8708
-
8709
- .object-color {
8710
- width: 18px;
8711
- height: 18px;
8712
- border-radius: 2px;
8713
- }
8714
-
8715
- /* ------------------------------------------------ Unity scene title bar --- */
8716
- /* View tabs and their context tools share one uninterrupted horizontal bar. */
8717
- .editor-toolbar.scene-tools {
8718
- position: static;
8719
- flex: 1;
8720
- height: 27px;
8721
- display: flex;
8722
- justify-content: flex-start;
8723
- gap: 0;
8724
- min-width: 0;
8725
- overflow-x: auto;
8726
- overflow-y: hidden;
8727
- scrollbar-width: none;
8728
- background: var(--panel);
8729
- }
8730
-
8731
- .editor-toolbar.scene-tools::-webkit-scrollbar { display: none; }
8732
-
8733
- .editor-toolbar.scene-tools .tool-switch {
8734
- flex: none;
8735
- border: 0;
8736
- border-radius: 0;
8737
- padding: 0;
8738
- background: transparent;
8739
- }
8740
-
8741
- /* Direct manipulation and numeric fields share the Transform concept. Keep
8742
- the name visible beside the icon-only tool buttons so the beginner path has
8743
- one vocabulary for both ways of editing a selection. */
8744
- .editor-toolbar.scene-tools .transform-toolbar-label {
8745
- align-self: center;
8746
- flex: none;
8747
- padding: 0 8px;
8748
- color: var(--muted);
8749
- font-size: 9px;
8750
- font-weight: 700;
8751
- letter-spacing: .04em;
8752
- text-transform: uppercase;
8753
- }
8754
-
8755
- .editor-toolbar.scene-tools .tool-switch button,
8756
- .editor-toolbar.scene-tools .snap-switch {
8757
- height: 26px;
8758
- border-radius: 0;
8759
- border: 0;
8760
- border-right: 1px solid var(--line);
8761
- background: transparent;
7616
+ .presets.gizmo-modes kbd {
7617
+ font-size: 8px;
7618
+ padding: 0 3px;
7619
+ border-radius: 2px;
8762
7620
  }
8763
7621
 
8764
- .editor-toolbar.scene-tools .tool-switch button {
8765
- width: 29px;
8766
- padding: 0;
8767
- gap: 0;
8768
- font-size: 0;
8769
- justify-content: center;
7622
+ .object-colors {
7623
+ gap: 4px;
7624
+ margin: 4px 0 8px;
8770
7625
  }
8771
7626
 
8772
- .editor-toolbar.scene-tools .tool-switch .tool-icon {
8773
- width: 14px;
8774
- height: 14px;
7627
+ .object-color {
7628
+ width: 18px;
7629
+ height: 18px;
7630
+ border-radius: 2px;
8775
7631
  }
8776
7632
 
8777
- .editor-toolbar.scene-tools .snap-switch {
8778
- padding: 0 6px;
8779
- font-size: 8px;
8780
- }
7633
+ /* ------------------------------------------------ Unity scene title bar --- */
8781
7634
 
8782
7635
  .editor-toolbar.scene-tools .tool-switch button.active {
8783
7636
  background: #2d5c8a;
@@ -8789,16 +7642,6 @@ input[type=range] {
8789
7642
  color: var(--fg);
8790
7643
  }
8791
7644
 
8792
- .viewport-toolbar-separator {
8793
- flex: 0 0 1px;
8794
- align-self: stretch;
8795
- background: var(--line);
8796
- }
8797
-
8798
- .editor-toolbar.scene-tools .settings-separator {
8799
- margin-left: auto;
8800
- }
8801
-
8802
7645
  .viewport-toolbar-field,
8803
7646
  .viewport-fov-control {
8804
7647
  flex: none;
@@ -8847,29 +7690,6 @@ input[type=range] {
8847
7690
  font-size: 9px;
8848
7691
  }
8849
7692
 
8850
- .viewport-toolbar-spacer {
8851
- display: none;
8852
- }
8853
-
8854
- .editor-toolbar.scene-tools > button {
8855
- flex: none;
8856
- height: 26px;
8857
- padding: 0 6px;
8858
- border: 0;
8859
- border-right: 1px solid var(--line);
8860
- background: transparent;
8861
- color: #bdbdbd;
8862
- font: inherit;
8863
- font-size: 9px;
8864
- cursor: pointer;
8865
- white-space: nowrap;
8866
- }
8867
-
8868
- .editor-toolbar.scene-tools > button:hover {
8869
- background: #363636;
8870
- color: #fff;
8871
- }
8872
-
8873
7693
  /* The studio's one Export menu (#165, moved to the topbar in #193). It reuses
8874
7694
  the project menu's popover so the studio has a single dropdown language;
8875
7695
  the trigger is a plain .topbar-action. The panel stays fixed to the viewport
@@ -8904,15 +7724,6 @@ input[type=range] {
8904
7724
  z-index: 80;
8905
7725
  }
8906
7726
 
8907
- .export-trigger-state {
8908
- font-size: 10px;
8909
- color: var(--muted2);
8910
- }
8911
-
8912
- .export-trigger-state[data-phase="failed"] {
8913
- color: var(--fg);
8914
- }
8915
-
8916
7727
  .export-status {
8917
7728
  padding: 10px;
8918
7729
  margin-bottom: 6px;
@@ -9008,6 +7819,17 @@ input[type=range] {
9008
7819
  align-items: center;
9009
7820
  }
9010
7821
 
7822
+ /* Keep the live workspace identity on one topbar line. It may shrink to the
7823
+ space left beside the project actions, while title carries the full handle. */
7824
+ .live-workspace-handle {
7825
+ min-width: 0;
7826
+ max-width: min(180px, 6.5vw);
7827
+ flex: 1 1 auto;
7828
+ overflow: hidden;
7829
+ text-overflow: ellipsis;
7830
+ white-space: nowrap;
7831
+ }
7832
+
9011
7833
  /* View ▾ (#194): the viewport bar's own menu of look toggles. It borrows the
9012
7834
  export menu's trigger and the project menu's popover so the studio keeps one
9013
7835
  dropdown language; the wrap's auto margin parks it at the bar's right end in
@@ -9021,8 +7843,6 @@ input[type=range] {
9021
7843
  align-items: center;
9022
7844
  }
9023
7845
 
9024
- /* The live-workspace handle can fill the row; a settings label that wrapped to
9025
- one glyph per line is how the topbar used to squeeze the language button. */
9026
7846
  .settings-menu-trigger {
9027
7847
  display: inline-flex;
9028
7848
  align-items: center;
@@ -9239,7 +8059,7 @@ input[type=range] {
9239
8059
 
9240
8060
  .hierarchy-row-wrap:before {
9241
8061
  left: -9px;
9242
- background: rgba(255, 255, 255, .07);
8062
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .07);
9243
8063
  }
9244
8064
 
9245
8065
  .hierarchy-icon {
@@ -9256,8 +8076,8 @@ input[type=range] {
9256
8076
  .inspector-heading {
9257
8077
  height: 26px;
9258
8078
  padding: 0 10px;
9259
- background: #2c2c2c;
9260
- border-bottom: 1px solid #1a1a1a;
8079
+ background: var(--lg-2c2c2c, #2c2c2c);
8080
+ border-bottom: 1px solid var(--lg-1a1a1a, #1a1a1a);
9261
8081
  }
9262
8082
 
9263
8083
  .hierarchy-heading strong,
@@ -9336,13 +8156,6 @@ input[type=range] {
9336
8156
  color: var(--muted);
9337
8157
  }
9338
8158
 
9339
- .ardy-clamp {
9340
- white-space: nowrap;
9341
- overflow: hidden;
9342
- text-overflow: ellipsis;
9343
- display: block;
9344
- }
9345
-
9346
8159
  /* ------------------------------------------- Unity component sections ----- */
9347
8160
  /* HDRP inspector: foldout triangle + component chip + bold title, a rule
9348
8161
  under the header while open, and content indented beneath it. */
@@ -9376,7 +8189,7 @@ input[type=range] {
9376
8189
  order: 0;
9377
8190
  width: 12px;
9378
8191
  font-size: 8px;
9379
- color: #c4c4c4;
8192
+ color: var(--lg-c4c4c4, #c4c4c4);
9380
8193
  }
9381
8194
 
9382
8195
  .foldout-title {
@@ -9385,7 +8198,7 @@ input[type=range] {
9385
8198
 
9386
8199
  /* open sections get the header rule and indented body */
9387
8200
  .card.foldout.open .foldout-head {
9388
- border-bottom: 1px solid #232323;
8201
+ border-bottom: 1px solid var(--lg-232323, #232323);
9389
8202
  }
9390
8203
 
9391
8204
  .card.foldout {
@@ -9394,7 +8207,7 @@ input[type=range] {
9394
8207
  }
9395
8208
 
9396
8209
  .card.foldout.open {
9397
- border-bottom: 1px solid #232323;
8210
+ border-bottom: 1px solid var(--lg-232323, #232323);
9398
8211
  }
9399
8212
 
9400
8213
  .foldout-body {
@@ -9409,13 +8222,13 @@ input[type=range] {
9409
8222
  }
9410
8223
 
9411
8224
  ::-webkit-scrollbar-thumb {
9412
- background: #4a4a4a;
8225
+ background: var(--lg-4a4a4a, #4a4a4a);
9413
8226
  border-radius: 4px;
9414
8227
  border: none;
9415
8228
  }
9416
8229
 
9417
8230
  ::-webkit-scrollbar-thumb:hover {
9418
- background: #5c5c5c;
8231
+ background: var(--lg-5c5c5c, #5c5c5c);
9419
8232
  }
9420
8233
 
9421
8234
  ::-webkit-scrollbar-track {
@@ -9547,8 +8360,8 @@ input[type=range] {
9547
8360
  display: flex;
9548
8361
  justify-content: flex-end;
9549
8362
  padding: 6px 12px;
9550
- border-top: 1px solid #1a1a1a;
9551
- background: #282828;
8363
+ border-top: 1px solid var(--lg-1a1a1a, #1a1a1a);
8364
+ background: var(--surface-panel);
9552
8365
  }
9553
8366
 
9554
8367
  .inspector-footer span {
@@ -9599,7 +8412,7 @@ input[type=range] {
9599
8412
  height: 10px;
9600
8413
  border: 1px solid #8a8a8a;
9601
8414
  border-radius: 2px;
9602
- background: rgba(255, 255, 255, .05);
8415
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .05);
9603
8416
  box-shadow: none;
9604
8417
  transform: none;
9605
8418
  }
@@ -9610,7 +8423,7 @@ input[type=range] {
9610
8423
  .hierarchy-icon.motion,
9611
8424
  .hierarchy-icon.clip,
9612
8425
  .hierarchy-icon.prompt { border-color: #3a7cbf; background: rgba(58, 124, 191, .18); }
9613
- .hierarchy-icon.key { border-color: #d65f55; background: rgba(214, 95, 85, .16); transform: rotate(45deg) scale(.78); }
8426
+ .hierarchy-icon.key { border-color: var(--danger); background: rgba(214, 95, 85, .16); transform: rotate(45deg) scale(.78); }
9614
8427
  .hierarchy-icon.rig,
9615
8428
  .hierarchy-icon.bone { border-radius: 50%; border-color: #8a759d; background: rgba(138, 117, 157, .16); }
9616
8429
  .hierarchy-icon.path { width: 12px; height: 5px; border-radius: 999px; border-color: #6f9f86; background: rgba(111, 159, 134, .16); }
@@ -9668,6 +8481,25 @@ input[type=range] {
9668
8481
  box-shadow: none;
9669
8482
  }
9670
8483
 
8484
+ .hierarchy-eye {
8485
+ flex: 0 0 22px;
8486
+ display: grid;
8487
+ place-items: center;
8488
+ border: 0;
8489
+ background: transparent;
8490
+ color: #c5ccd8;
8491
+ cursor: pointer;
8492
+ padding: 0;
8493
+ }
8494
+
8495
+ .hierarchy-eye[data-hidden="true"] {
8496
+ color: #7d8696;
8497
+ }
8498
+
8499
+ .hierarchy-row-wrap[data-own-hidden="true"] {
8500
+ opacity: 0.45;
8501
+ }
8502
+
9671
8503
 
9672
8504
 
9673
8505
 
@@ -9740,7 +8572,7 @@ input[type=range] {
9740
8572
  padding: 12px 13px;
9741
8573
  border: 1px solid var(--line2);
9742
8574
  border-left: 3px solid var(--accent);
9743
- background: #282828;
8575
+ background: var(--surface-panel);
9744
8576
  }
9745
8577
 
9746
8578
  .result-next h4 {
@@ -9907,17 +8739,17 @@ input[type=range] {
9907
8739
 
9908
8740
  .props-drop[data-drop="over"],
9909
8741
  .hierarchy-row-wrap[data-drop="over"] {
9910
- border-color: var(--accent, #e7b557);
8742
+ border-color: var(--accent, var(--select));
9911
8743
  background: rgba(231, 181, 87, 0.1);
9912
8744
  }
9913
8745
 
9914
8746
  .hierarchy-row-wrap[data-drop="over"] {
9915
- border: 1px dashed var(--accent, #e7b557);
8747
+ border: 1px dashed var(--accent, var(--select));
9916
8748
  border-radius: 3px;
9917
8749
  }
9918
8750
 
9919
8751
  .viewport[data-drop="over"] {
9920
- outline: 2px dashed var(--accent, #e7b557);
8752
+ outline: 2px dashed var(--accent, var(--select));
9921
8753
  outline-offset: -6px;
9922
8754
  }
9923
8755
 
@@ -10069,8 +8901,8 @@ input[type=range] {
10069
8901
  justify-content: center;
10070
8902
  gap: 10px;
10071
8903
  padding: 24px;
10072
- background: var(--bg, #1e1e1e);
10073
- color: var(--fg, #d2d2d2);
8904
+ background: var(--bg, var(--lg-1e1e1e, #1e1e1e));
8905
+ color: var(--fg, var(--lg-d2d2d2, #d2d2d2));
10074
8906
  text-align: center;
10075
8907
  }
10076
8908
  .crash-screen h1 {
@@ -10079,17 +8911,17 @@ input[type=range] {
10079
8911
  }
10080
8912
  .crash-screen p {
10081
8913
  margin: 0;
10082
- color: var(--muted, #9a9a9a);
8914
+ color: var(--muted, var(--lg-9a9a9a, #9a9a9a));
10083
8915
  max-width: 52ch;
10084
8916
  }
10085
8917
  .crash-screen .crash-detail {
10086
8918
  max-width: min(72ch, 90vw);
10087
8919
  overflow: auto;
10088
8920
  padding: 10px 14px;
10089
- border: 1px solid var(--line2, #3c3c3c);
8921
+ border: 1px solid var(--line2, var(--lg-3c3c3c, #3c3c3c));
10090
8922
  border-radius: 6px;
10091
- background: var(--panel, #2c2c2c);
10092
- color: var(--muted, #9a9a9a);
8923
+ background: var(--panel, var(--lg-2c2c2c, #2c2c2c));
8924
+ color: var(--muted, var(--lg-9a9a9a, #9a9a9a));
10093
8925
  font-size: 12px;
10094
8926
  text-align: left;
10095
8927
  white-space: pre-wrap;
@@ -10097,10 +8929,10 @@ input[type=range] {
10097
8929
  .crash-screen button,
10098
8930
  .gl-lost-card button {
10099
8931
  padding: 6px 16px;
10100
- border: 1px solid var(--line2, #3c3c3c);
8932
+ border: 1px solid var(--line2, var(--lg-3c3c3c, #3c3c3c));
10101
8933
  border-radius: 6px;
10102
- background: var(--card, #383838);
10103
- color: var(--fg, #d2d2d2);
8934
+ background: var(--card, var(--lg-383838, #383838));
8935
+ color: var(--fg, var(--lg-d2d2d2, #d2d2d2));
10104
8936
  cursor: pointer;
10105
8937
  }
10106
8938
  .gl-lost-overlay {
@@ -10119,47 +8951,21 @@ input[type=range] {
10119
8951
  gap: 8px;
10120
8952
  max-width: 46ch;
10121
8953
  padding: 18px 22px;
10122
- border: 1px solid var(--line2, #3c3c3c);
8954
+ border: 1px solid var(--line2, var(--lg-3c3c3c, #3c3c3c));
10123
8955
  border-radius: 8px;
10124
- background: var(--panel, #2c2c2c);
10125
- color: var(--fg, #d2d2d2);
8956
+ background: var(--panel, var(--lg-2c2c2c, #2c2c2c));
8957
+ color: var(--fg, var(--lg-d2d2d2, #d2d2d2));
10126
8958
  text-align: center;
10127
8959
  }
10128
8960
  .gl-lost-card p {
10129
8961
  margin: 0;
10130
- color: var(--muted, #9a9a9a);
8962
+ color: var(--muted, var(--lg-9a9a9a, #9a9a9a));
10131
8963
  font-size: 12px;
10132
8964
  }
10133
-
10134
- /* ------------------------------------------- preserve (inpainting) -------- */
10135
- /* The "keep the current take" strength, in the Prompt Blocks panel. Same shape
10136
- as .trail-falloff-row — flat range plus a tabular readout — and, since round 2
10137
- allows preserving across a drawn root path, it has no disabled state left:
10138
- every state the control can be in is now a WORKING one, explained by the hint
10139
- lines under it rather than by graying.
10140
- Appended at the end on purpose: the global input[type=range] rules further up
10141
- the cascade (the Unity density and widget-material passes) would otherwise
10142
- win over anything written beside the trail row. */
10143
- .preserve-strength-row {
10144
- display: flex;
10145
- align-items: center;
10146
- gap: 8px;
10147
- }
10148
- .preserve-strength-row input[type="range"] {
10149
- flex: 1;
10150
- min-width: 0;
10151
- }
10152
8965
  .preserve-strength-value {
10153
8966
  font-variant-numeric: tabular-nums;
10154
8967
  opacity: .8;
10155
8968
  }
10156
- /* Both poles on one line, each at the end it describes. */
10157
- .preserve-strength-scale {
10158
- display: flex;
10159
- justify-content: space-between;
10160
- gap: 8px;
10161
- margin-top: 3px;
10162
- }
10163
8969
  /* Which limbs the grouped mask will actually free. It reads as a continuation
10164
8970
  of the slider, not as a new paragraph, so it sits tighter to the row above
10165
8971
  and one step quieter than the hint it borrows its voice from. */
@@ -10241,7 +9047,7 @@ input[type=range] {
10241
9047
  gap: 6px;
10242
9048
  margin-top: 8px;
10243
9049
  padding-left: 8px;
10244
- border-left: 2px solid var(--line2, #3c3c3c);
9050
+ border-left: 2px solid var(--line2, var(--lg-3c3c3c, #3c3c3c));
10245
9051
  }
10246
9052
  /* Two bounds on one line, reading as a single range rather than two fields —
10247
9053
  same flat shape as .preserve-strength-row. */
@@ -10275,12 +9081,6 @@ input[type=range] {
10275
9081
  font-variant-numeric: tabular-nums;
10276
9082
  white-space: nowrap;
10277
9083
  }
10278
- /* Wave 2 has not landed: the mode is fully usable, only the send is waiting.
10279
- Stated in the panel's own quiet voice rather than by disabling the tool. */
10280
- .line-edit-pending {
10281
- margin-top: 2px;
10282
- opacity: .85;
10283
- }
10284
9084
 
10285
9085
  /* The view moved out from under a committed edit. A STATUS, not an error: the
10286
9086
  edit is intact and still on its way to the box, so this reads like the
@@ -10362,39 +9162,6 @@ input[type=range] {
10362
9162
  background: var(--panel);
10363
9163
  }
10364
9164
 
10365
- /* The two primaries. They sit first and they sit together, so the choice reads
10366
- as a pair — block the scene, or refine what is already blocked — rather than
10367
- as two unrelated buttons that happen to be nearby. */
10368
- .take-modes {
10369
- display: flex;
10370
- align-items: flex-start;
10371
- gap: 8px;
10372
- }
10373
-
10374
- .take-mode {
10375
- display: flex;
10376
- flex-direction: column;
10377
- gap: 1px;
10378
- }
10379
-
10380
- .take-mode-btn {
10381
- height: 26px;
10382
- padding: 0 14px;
10383
- border: 1px solid var(--line2);
10384
- border-radius: 3px;
10385
- background: var(--bg);
10386
- color: var(--fg);
10387
- font: inherit;
10388
- font-size: 11px;
10389
- font-weight: 700;
10390
- letter-spacing: .02em;
10391
- cursor: pointer;
10392
- }
10393
-
10394
- .take-mode-btn:hover {
10395
- background: var(--hover);
10396
- }
10397
-
10398
9165
  .take-mode-btn.active {
10399
9166
  border-color: var(--accent);
10400
9167
  box-shadow: inset 0 -2px var(--accent);
@@ -10409,36 +9176,6 @@ input[type=range] {
10409
9176
  cursor: not-allowed;
10410
9177
  }
10411
9178
 
10412
- .take-mode-hint,
10413
- .take-mode-reason {
10414
- font-size: 10px;
10415
- line-height: 1.3;
10416
- max-width: 26ch;
10417
- color: var(--muted);
10418
- }
10419
-
10420
- .take-mode-reason {
10421
- color: var(--warn, #ff9c6e);
10422
- opacity: .9;
10423
- }
10424
-
10425
- /* The Scene entry's actions, revealed inline instead of in a popup: the strip
10426
- is already the place the artist is looking. */
10427
- .take-scene-menu {
10428
- display: flex;
10429
- flex-wrap: wrap;
10430
- align-items: flex-start;
10431
- gap: 6px 10px;
10432
- padding-left: 10px;
10433
- border-left: 1px solid var(--line2);
10434
- }
10435
-
10436
- .take-scene-action {
10437
- display: flex;
10438
- flex-direction: column;
10439
- gap: 1px;
10440
- }
10441
-
10442
9179
  .take-scene-menu .btn {
10443
9180
  height: 26px;
10444
9181
  padding: 0 10px;
@@ -10446,75 +9183,12 @@ input[type=range] {
10446
9183
  white-space: nowrap;
10447
9184
  }
10448
9185
 
10449
- .take-scene-advanced {
10450
- min-width: 220px;
10451
- font-size: 11px;
10452
- }
10453
-
10454
- .take-scene-advanced > summary {
10455
- cursor: pointer;
10456
- color: var(--muted);
10457
- font-size: 10px;
10458
- font-weight: 700;
10459
- letter-spacing: .03em;
10460
- }
10461
-
10462
- .take-scene-advanced > summary:hover {
10463
- color: var(--fg);
10464
- }
10465
-
10466
9186
  .take-recipe-summary {
10467
9187
  margin-top: 4px;
10468
9188
  opacity: .8;
10469
9189
  font-variant-numeric: tabular-nums;
10470
9190
  }
10471
9191
 
10472
- /* The version strip. Numbered because the numbers are what the artist says out
10473
- loud ("go back to v2"); the label rides underneath so a chip explains what it
10474
- is without a hover, and the current take is the one with the accent under it. */
10475
- .take-version-strip {
10476
- display: flex;
10477
- flex-wrap: wrap;
10478
- align-items: center;
10479
- gap: 4px;
10480
- margin-left: auto;
10481
- }
10482
-
10483
- .take-version-chip {
10484
- display: flex;
10485
- flex-direction: column;
10486
- align-items: center;
10487
- gap: 0;
10488
- min-width: 34px;
10489
- max-width: 120px;
10490
- padding: 2px 7px;
10491
- border: 1px solid var(--line2);
10492
- border-radius: 3px;
10493
- background: var(--bg);
10494
- color: var(--muted);
10495
- font: inherit;
10496
- cursor: pointer;
10497
- }
10498
-
10499
- .take-version-chip:hover {
10500
- background: var(--hover);
10501
- color: var(--fg);
10502
- }
10503
-
10504
- .take-version-chip b {
10505
- font-size: 11px;
10506
- font-variant-numeric: tabular-nums;
10507
- }
10508
-
10509
- .take-version-chip small {
10510
- max-width: 100%;
10511
- overflow: hidden;
10512
- text-overflow: ellipsis;
10513
- white-space: nowrap;
10514
- font-size: 9px;
10515
- opacity: .75;
10516
- }
10517
-
10518
9192
  .take-version-chip.current {
10519
9193
  border-color: var(--accent);
10520
9194
  color: var(--fg);
@@ -10549,36 +9223,10 @@ input[type=range] {
10549
9223
  bottom: 12px;
10550
9224
  right: 12px;
10551
9225
  }
10552
-
10553
- /* Make the title-bar hierarchy legible: manipulation tools, view toggles,
10554
- and camera settings read as three groups instead of one long button row. */
10555
- .editor-toolbar.scene-tools .tool-switch {
10556
- margin: 2px 4px 2px 3px;
10557
- height: 23px;
10558
- border: 1px solid var(--line2);
10559
- border-radius: 3px;
10560
- background: rgba(0, 0, 0, .14);
10561
- }
10562
- .editor-toolbar.scene-tools .tool-switch button {
10563
- height: 21px;
10564
- border-right: 0;
10565
- }
10566
- .editor-toolbar.scene-tools .tool-switch button + button {
10567
- border-left: 1px solid var(--line);
10568
- }
10569
- .editor-toolbar.scene-tools > .snap-switch {
10570
- margin: 2px 0;
10571
- height: 23px;
10572
- border: 1px solid var(--line2);
10573
- border-radius: 3px;
10574
- }
10575
9226
  .editor-toolbar.scene-tools .viewport-toolbar-field,
10576
9227
  .editor-toolbar.scene-tools .viewport-fov-control {
10577
9228
  background: rgba(0, 0, 0, .08);
10578
9229
  }
10579
- .editor-toolbar.scene-tools .settings-separator {
10580
- margin-left: 5px;
10581
- }
10582
9230
 
10583
9231
  /* Splitters are deliberately wider than their 1px visual rule so the
10584
9232
  cursor can reliably find them; the accent appears on hover/focus. */
@@ -11426,59 +10074,129 @@ input[type=range] {
11426
10074
  .agent-toast { padding: 8px 12px; border-bottom: 1px solid var(--line); background: var(--accent-soft); color: var(--fg); font-size: 11px; }
11427
10075
 
11428
10076
  /* Fal H3 Studio motion launch slice (#380). */
11429
- .fal-motion-card { margin-top: 12px; padding: 14px; border: 1px solid var(--line, #313747); border-radius: 10px; background: rgba(21, 25, 35, .72); font-size: 13px; }
11430
- .fal-motion-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: -14px -14px 0; padding: 8px 14px; background: #151923; border-radius: 10px 10px 0 0; font-size: 12px; }
11431
- .fal-motion-head span { color: var(--muted, #a7afc2); font-size: 12px; }
11432
- .fal-motion-mode-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-top: 10px; }
11433
- .fal-motion-mode-tabs button { min-height: 34px; padding: 6px 8px; border: 1px solid #343b4d; border-radius: 6px; background: #11151e; color: var(--muted, #a7afc2); font: inherit; font-size: 13px; cursor: pointer; }
11434
- .fal-motion-mode-tabs button.active { border-color: #7dd3fc; background: rgba(42, 77, 100, .32); color: #e6f7ff; }
11435
- .fal-motion-mode-hint { margin-top: 6px; }
11436
- .fal-motion-stepper { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin-top: 10px; }
11437
- .fal-motion-stepper span { display: flex; align-items: center; gap: 5px; min-width: 0; padding: 6px 7px; border: 1px solid #343b4d; border-radius: 6px; color: var(--muted, #a7afc2); font-size: 11px; }
11438
- .fal-motion-stepper span.active { border-color: #e1b45b; background: rgba(120, 85, 27, .22); color: #ffe7aa; }
11439
- .fal-motion-stepper span.done { border-color: #3e8d62; color: #9fe6b8; }
11440
- .fal-motion-stepper b { font-size: 12px; }
11441
- .fal-motion-segmentation-row { display: flex; align-items: center; gap: 6px; margin-top: 7px; }
11442
- .fal-motion-segmentation-row .fal-motion-segmentation { flex: 1; margin: 0; }
11443
- .fal-motion-flat-cta { flex: none; min-height: 32px !important; padding: 5px 10px !important; font-size: 12px !important; }
11444
- .fal-motion-pose-row, .fal-motion-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
11445
- .fal-motion-pose-row .btn, .fal-motion-actions .btn { min-height: 36px; padding: 7px 12px; font-size: 13px; }
11446
- .fal-motion-pose-row .btn.active { border-color: #7dd3fc; color: #d7f3ff; }
11447
- .fal-motion-capture-status { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 10px; }
11448
- .fal-motion-capture-slot { display: flex; flex-direction: column; gap: 4px; min-width: 0; padding: 9px; border: 1px solid #343b4d; border-radius: 7px; background: #11151e; }
11449
- .fal-motion-capture-slot.captured { border-color: #3e8d62; background: rgba(35, 83, 54, .22); }
11450
- .fal-motion-capture-slot strong { color: var(--fg, #eef3ff); font-size: 13px; }
11451
- .fal-motion-capture-slot.captured strong { color: #9fe6b8; }
11452
- .fal-motion-capture-slot span { overflow: hidden; color: var(--muted, #a7afc2); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
11453
- .fal-motion-slot-action { align-self: flex-start; padding: 0; border: 0; background: transparent; color: #b8dfff; font: inherit; font-size: 11px; cursor: pointer; text-decoration: underline; }
11454
- .fal-motion-camera-status { margin: 8px 0 0; color: var(--muted, #a7afc2); font-size: 11px; }
11455
- .fal-motion-camera-status.ready { color: #9fe6b8; }
11456
- .fal-motion-camera-actions { display: flex; gap: 5px; flex-wrap: wrap; margin-top: 5px; }
11457
- .fal-motion-camera-actions .btn { min-height: 30px !important; padding: 4px 9px !important; font-size: 12px !important; }
11458
- .fal-motion-thumbs { display: flex; gap: 8px; margin-top: 8px; min-height: 0; }
11459
- .fal-motion-thumbs figure { margin: 0; min-width: 0; }
11460
- .fal-motion-thumbs img { display: block; width: 148px; height: 84px; object-fit: cover; border-radius: 5px; border: 1px solid #42506a; background: #0c0f16; }
11461
- .fal-motion-thumbs figcaption { margin-top: 4px; color: var(--muted, #a7afc2); font-size: 11px; }
11462
- .fal-motion-instruction { width: 100%; min-height: 64px; margin-top: 10px; padding: 9px; resize: vertical; border: 1px solid #343b4d; border-radius: 6px; background: #11151e; color: inherit; font: inherit; font-size: 13px; }
11463
- .fal-motion-prompt-note { margin-top: 8px; padding: 5px 6px; border-left: 2px solid #42506a; background: rgba(17, 21, 30, .65); }
11464
- .fal-motion-inline-error { margin-top: 8px; }
11465
- .fal-motion-segmentation.ready { color: #9fe6b8; }
11466
- .fal-motion-video { display: block; width: 100%; margin-top: 10px; border-radius: 7px; background: #090b10; }
11467
- .fal-motion-duration-row { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
11468
- .fal-motion-duration-row .btn { min-height: 32px; padding: 5px 12px; font-size: 12px; }
11469
- .fal-motion-duration-row .btn.active { border-color: #7dd3fc; background: rgba(42, 77, 100, .32); color: #e6f7ff; }
11470
- .fal-motion-prompt-edit { margin-top: 10px; }
11471
- .fal-motion-prompt-edit summary { cursor: pointer; color: var(--muted, #a7afc2); font-size: 12px; }
11472
- .fal-motion-prompt-override { min-height: 88px; margin-top: 6px; font-family: ui-monospace, monospace; font-size: 12px; }
11473
- .fal-motion-open-row { margin-top: 12px; }
11474
- .fal-motion-open { width: 100%; min-height: 40px; font-size: 14px; }
11475
- .modal.fal-motion-modal { width: min(920px, 96vw); }
11476
- .fal-motion-modal-body { display: grid; grid-template-columns: minmax(280px, 1fr) minmax(320px, 1.1fr); gap: 18px; }
11477
- .fal-motion-modal .fal-motion-thumbs { flex-direction: column; }
11478
- .fal-motion-modal .fal-motion-thumbs img { width: 100%; height: auto; }
11479
- @media (max-width: 700px) { .fal-motion-modal-body { grid-template-columns: 1fr; } }
11480
- .agent-fal-action { color: #6d4aff; border-color: color-mix(in srgb, #6d4aff 35%, var(--line) 65%); }
11481
- .agent-fal-action:disabled { opacity: .45; }
10077
+ .i2v-motion-card { margin-top: 12px; padding: 14px; border: 1px solid var(--line, #313747); border-radius: 10px; background: rgba(21, 25, 35, .72); font-size: 13px; }
10078
+ .i2v-motion-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: -14px -14px 0; padding: 8px 14px; background: #151923; border-radius: 10px 10px 0 0; font-size: 12px; }
10079
+ .i2v-motion-head span { color: var(--muted, #a7afc2); font-size: 12px; }
10080
+ .i2v-motion-mode-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-top: 10px; }
10081
+ .i2v-motion-mode-tabs button { min-height: 34px; padding: 6px 8px; border: 1px solid #343b4d; border-radius: 6px; background: var(--lg-11151e, #11151e); color: var(--muted, #a7afc2); font: inherit; font-size: 13px; cursor: pointer; }
10082
+ .i2v-motion-mode-tabs button.active { border-color: #7dd3fc; background: rgba(42, 77, 100, .32); color: #e6f7ff; }
10083
+ .i2v-motion-mode-hint { margin-top: 6px; }
10084
+ .i2v-motion-stepper { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin-top: 10px; }
10085
+ .i2v-motion-stepper span { display: flex; align-items: center; gap: 5px; min-width: 0; padding: 6px 7px; border: 1px solid #343b4d; border-radius: 6px; color: var(--muted, #a7afc2); font-size: 11px; }
10086
+ .i2v-motion-stepper span.active { border-color: #e1b45b; background: rgba(120, 85, 27, .22); color: #ffe7aa; }
10087
+ .i2v-motion-stepper span.done { border-color: #3e8d62; color: #9fe6b8; }
10088
+ .i2v-motion-stepper b { font-size: 12px; }
10089
+ .i2v-motion-segmentation-row { display: flex; align-items: center; gap: 6px; margin-top: 7px; }
10090
+ .i2v-motion-segmentation-row .i2v-motion-segmentation { flex: 1; margin: 0; }
10091
+ .i2v-motion-flat-cta { flex: none; min-height: 32px !important; padding: 5px 10px !important; font-size: 12px !important; }
10092
+ .i2v-motion-pose-row, .i2v-motion-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
10093
+ .i2v-motion-pose-row .btn, .i2v-motion-actions .btn { min-height: 36px; padding: 7px 12px; font-size: 13px; }
10094
+ .i2v-motion-pose-row .btn.active { border-color: #7dd3fc; color: #d7f3ff; }
10095
+ .i2v-motion-capture-status { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 10px; }
10096
+ .i2v-motion-capture-slot { display: flex; flex-direction: column; gap: 4px; min-width: 0; padding: 9px; border: 1px solid #343b4d; border-radius: 7px; background: var(--lg-11151e, #11151e); }
10097
+ .i2v-motion-capture-slot.captured { border-color: #3e8d62; background: rgba(35, 83, 54, .22); }
10098
+ .i2v-motion-capture-slot strong { color: var(--fg, #eef3ff); font-size: 13px; }
10099
+ .i2v-motion-capture-slot.captured strong { color: #9fe6b8; }
10100
+ .i2v-motion-capture-slot span { overflow: hidden; color: var(--muted, #a7afc2); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
10101
+ .i2v-motion-slot-action { align-self: flex-start; padding: 0; border: 0; background: transparent; color: #b8dfff; font: inherit; font-size: 11px; cursor: pointer; text-decoration: underline; }
10102
+ .i2v-motion-camera-status { margin: 8px 0 0; color: var(--muted, #a7afc2); font-size: 11px; }
10103
+ .i2v-motion-camera-status.ready { color: #9fe6b8; }
10104
+ .i2v-motion-camera-actions { display: flex; gap: 5px; flex-wrap: wrap; margin-top: 5px; }
10105
+ .i2v-motion-camera-actions .btn { min-height: 30px !important; padding: 4px 9px !important; font-size: 12px !important; }
10106
+ .i2v-motion-thumbs { display: flex; gap: 8px; margin-top: 8px; min-height: 0; }
10107
+ .i2v-motion-thumbs figure { margin: 0; min-width: 0; }
10108
+ .i2v-motion-thumbs img { display: block; width: 148px; height: 84px; object-fit: cover; border-radius: 5px; border: 1px solid #42506a; background: #0c0f16; }
10109
+ .i2v-motion-thumbs figcaption { margin-top: 4px; color: var(--muted, #a7afc2); font-size: 11px; }
10110
+ .i2v-motion-instruction { width: 100%; min-height: 64px; margin-top: 10px; padding: 9px; resize: vertical; border: 1px solid #343b4d; border-radius: 6px; background: var(--lg-11151e, #11151e); color: inherit; font: inherit; font-size: 13px; }
10111
+ .i2v-motion-inline-error { margin-top: 8px; }
10112
+ .i2v-motion-segmentation.ready { color: #9fe6b8; }
10113
+ .i2v-motion-video { display: block; width: 100%; margin-top: 10px; border-radius: 7px; background: #090b10; }
10114
+ .i2v-motion-duration-row { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
10115
+ .i2v-motion-duration-row .btn { min-height: 32px; padding: 5px 12px; font-size: 12px; }
10116
+ .i2v-motion-duration-row .btn.active { border-color: #7dd3fc; background: rgba(42, 77, 100, .32); color: #e6f7ff; }
10117
+ .i2v-motion-prompt-edit { margin-top: 10px; }
10118
+ .i2v-motion-prompt-edit summary { cursor: pointer; color: var(--muted, #a7afc2); font-size: 12px; }
10119
+ .i2v-motion-prompt-override { min-height: 88px; margin-top: 6px; font-family: ui-monospace, monospace; font-size: 12px; }
10120
+ .i2v-motion-open-row { margin-top: 12px; }
10121
+ .i2v-motion-open { width: 100%; min-height: 40px; font-size: 14px; }
10122
+ .modal.i2v-motion-modal { width: min(920px, 96vw); }
10123
+ .i2v-motion-modal-body { display: grid; grid-template-columns: minmax(280px, 1fr) minmax(320px, 1.1fr); gap: 18px; }
10124
+ .i2v-motion-modal .i2v-motion-thumbs { flex-direction: column; }
10125
+ .i2v-motion-modal .i2v-motion-thumbs img { width: 100%; height: auto; }
10126
+ @media (max-width: 700px) { .i2v-motion-modal-body { grid-template-columns: 1fr; } }
10127
+ .agent-i2v-action { color: #6d4aff; border-color: color-mix(in srgb, #6d4aff 35%, var(--line) 65%); }
10128
+ .agent-i2v-action:disabled { opacity: .45; }
11482
10129
  .result-motion-video { width: 100%; max-height: 420px; background: #090b10; }
11483
10130
  .result-motion-meta { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; color: var(--muted, #a7afc2); font-size: 11px; }
11484
10131
  .result-motion-meta span { padding: 3px 6px; border: 1px solid var(--line, #313747); border-radius: 999px; }
10132
+
10133
+ /* ------------------------------------------- use-case question (#466) ----- */
10134
+ /* One optional, non-modal question after the first successful export. Same
10135
+ surface as the bottom toasts, parked bottom-right so it never covers them. */
10136
+ .use-case-ask {
10137
+ position: fixed;
10138
+ z-index: 42;
10139
+ right: 16px;
10140
+ bottom: 76px;
10141
+ width: min(300px, calc(100vw - 32px));
10142
+ padding: 10px 12px;
10143
+ border: 1px solid var(--line2);
10144
+ border-radius: 6px;
10145
+ background: var(--panel);
10146
+ box-shadow: var(--shadow-md);
10147
+ color: var(--fg);
10148
+ font-size: 11px;
10149
+ }
10150
+
10151
+ .use-case-ask-head {
10152
+ display: flex;
10153
+ align-items: center;
10154
+ justify-content: space-between;
10155
+ gap: 8px;
10156
+ }
10157
+
10158
+ .use-case-ask-prompt {
10159
+ margin: 6px 0 8px;
10160
+ }
10161
+
10162
+ .use-case-ask-choices {
10163
+ display: flex;
10164
+ flex-wrap: wrap;
10165
+ gap: 6px;
10166
+ }
10167
+
10168
+ .use-case-ask-choices button {
10169
+ padding: 4px 8px;
10170
+ border: 1px solid var(--line2);
10171
+ border-radius: 4px;
10172
+ background: transparent;
10173
+ color: var(--fg);
10174
+ font-size: 11px;
10175
+ cursor: pointer;
10176
+ }
10177
+
10178
+ .use-case-ask-choices button:hover {
10179
+ border-color: var(--accent);
10180
+ background: var(--accent-soft);
10181
+ }
10182
+
10183
+ .use-case-ask-close {
10184
+ padding: 0 4px;
10185
+ border: 0;
10186
+ background: transparent;
10187
+ color: var(--muted);
10188
+ font-size: 14px;
10189
+ line-height: 1;
10190
+ cursor: pointer;
10191
+ }
10192
+
10193
+ .use-case-ask button:focus-visible {
10194
+ outline: 2px solid var(--cyan);
10195
+ outline-offset: 1px;
10196
+ }
10197
+
10198
+ .use-case-ask .use-case-ask-note {
10199
+ margin: 8px 0 0;
10200
+ color: var(--muted);
10201
+ }
10202
+ }