cozyclay 1.10.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 (272) hide show
  1. package/CHANGELOG.md +137 -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-hub.mjs +35 -93
  40. package/mcp/mesh-file.mjs +48 -0
  41. package/mcp/server.mjs +6 -77
  42. package/mcp/tool-handlers.mjs +219 -376
  43. package/package.json +2 -1
  44. package/src/App.jsx +1249 -9076
  45. package/src/analytics.js +393 -9
  46. package/src/app-context.js +211 -0
  47. package/src/app-stage.jsx +25 -24
  48. package/src/ardy/auto-fix-panel.css +108 -0
  49. package/src/ardy/fix-collisions.js +10 -66
  50. package/src/ardy/ik-drag.js +101 -0
  51. package/src/ardy/ik-key-json.js +43 -0
  52. package/src/ardy/ik.js +97 -67
  53. package/src/ardy/physics-panel.css +2 -0
  54. package/src/ardy/physics-panel.jsx +17 -5
  55. package/src/ardy/platform-fit-panel.css +64 -0
  56. package/src/ardy/platform-fit-panel.jsx +40 -0
  57. package/src/ardy/platform-fit.js +326 -0
  58. package/src/ardy/playback.js +166 -20
  59. package/src/ardy/range-pin.js +299 -0
  60. package/src/ardy/timeline-coordinates.js +26 -0
  61. package/src/ardy/timeline.css +1199 -0
  62. package/src/ardy/timeline.jsx +149 -41
  63. package/src/ardy/waypoints.js +2 -2
  64. package/src/asset-pane.css +462 -0
  65. package/src/asset-pane.jsx +461 -232
  66. package/src/command-bus.js +349 -0
  67. package/src/commands/ai.js +31 -0
  68. package/src/commands/cast.js +140 -0
  69. package/src/commands/elements/character.js +13 -0
  70. package/src/commands/elements/motion.js +14 -0
  71. package/src/commands/elements/object.js +22 -0
  72. package/src/commands/elements/scene.js +16 -0
  73. package/src/commands/elements/shot.js +9 -0
  74. package/src/commands/elements/stage.js +11 -0
  75. package/src/commands/elements.js +155 -0
  76. package/src/commands/export.js +20 -0
  77. package/src/commands/index.js +40 -0
  78. package/src/commands/motion.js +231 -0
  79. package/src/commands/objects.js +174 -0
  80. package/src/commands/project.js +53 -0
  81. package/src/commands/scene.js +81 -0
  82. package/src/commands/shared.js +19 -0
  83. package/src/commands/shot.js +103 -0
  84. package/src/commands/stage.js +17 -0
  85. package/src/commands/view.js +42 -0
  86. package/src/document-store.js +144 -0
  87. package/src/domains/cast.js +1007 -0
  88. package/src/domains/motion.js +3219 -0
  89. package/src/domains/objects.js +932 -0
  90. package/src/domains/scenes.js +817 -0
  91. package/src/domains/shots.js +404 -0
  92. package/src/domains/stage.js +93 -0
  93. package/src/dualview.jsx +113 -57
  94. package/src/facing-marks.js +3 -0
  95. package/src/first-success-guide.jsx +14 -14
  96. package/src/grid-view.js +18 -5
  97. package/src/hierarchy-panel.css +386 -0
  98. package/src/hierarchy-panel.jsx +88 -19
  99. package/src/{fal-motion-client.js → i2v-motion-client.js} +13 -13
  100. package/src/i2v-motion-studio.jsx +180 -0
  101. package/src/ik-camera.js +3 -0
  102. package/src/main.jsx +6 -0
  103. package/src/motion/generation.js +105 -0
  104. package/src/motion-readiness-ui.jsx +4 -4
  105. package/src/motion-readiness.js +11 -0
  106. package/src/motion-trail.js +366 -9
  107. package/src/object-gizmo.jsx +7 -1
  108. package/src/panels/CameraPanel.jsx +60 -0
  109. package/src/panels/CharacterTransformPanel.jsx +48 -0
  110. package/src/panels/EnvironmentPanel.jsx +40 -0
  111. package/src/panels/Foldout.jsx +32 -0
  112. package/src/panels/LightPanel.jsx +24 -0
  113. package/src/panels/ObjectTransformPanel.jsx +554 -0
  114. package/src/panels/PosePanel.jsx +97 -0
  115. package/src/panels/ProjectPanel.jsx +33 -0
  116. package/src/panels/PromptBlocksPanel.jsx +442 -0
  117. package/src/panels/PropsPanel.jsx +70 -0
  118. package/src/panels/ReferenceImageField.jsx +91 -0
  119. package/src/panels/RigControlPanel.jsx +78 -0
  120. package/src/panels/RigPanel.jsx +37 -0
  121. package/src/panels/SubjectBox.jsx +47 -0
  122. package/src/panels/SubjectsPanel.jsx +39 -0
  123. package/src/panels/VideoCapturePanel.jsx +180 -0
  124. package/src/panels/details.css +1171 -0
  125. package/src/panels/motion.css +197 -0
  126. package/src/panels/pose.css +39 -0
  127. package/src/planview.jsx +60 -31
  128. package/src/posestudio.jsx +59 -4
  129. package/src/project-browser.css +1073 -0
  130. package/src/project-browser.jsx +284 -123
  131. package/src/range-pin-object-transform.js +19 -0
  132. package/src/range-pin-panel.css +518 -0
  133. package/src/range-pin-panel.jsx +344 -0
  134. package/src/result-modal.jsx +5 -5
  135. package/src/room.jsx +79 -51
  136. package/src/scenes.js +5 -0
  137. package/src/semantic-edit.js +2 -0
  138. package/src/settings-menu.jsx +39 -105
  139. package/src/shell/BottomDock.jsx +450 -0
  140. package/src/shell/DetailsSlot.jsx +513 -0
  141. package/src/shell/LibrarySlot.jsx +86 -0
  142. package/src/shell/MenuBar.jsx +601 -0
  143. package/src/shell/OutlinerSlot.jsx +50 -0
  144. package/src/shell/PreferencesDialog.jsx +538 -0
  145. package/src/shell/PreferencesSlot.jsx +40 -0
  146. package/src/shell/StatusBar.jsx +125 -0
  147. package/src/shell/StudioShell.jsx +92 -0
  148. package/src/shell/TopBar.jsx +129 -0
  149. package/src/shell/ViewportToolbar.jsx +656 -0
  150. package/src/shell/agent-glass.css +296 -0
  151. package/src/shell/dock.css +93 -0
  152. package/src/shell/glass-regions.css +985 -0
  153. package/src/shell/glass.css +687 -0
  154. package/src/shell/log-store.js +52 -0
  155. package/src/shell/mode.css +9 -0
  156. package/src/shell/preferences.css +651 -0
  157. package/src/shell/shell.css +282 -0
  158. package/src/shell/studio-shell-context.js +19 -0
  159. package/src/shell/topbar.css +435 -0
  160. package/src/shell/viewport.css +451 -0
  161. package/src/store/authored-intent.js +22 -0
  162. package/src/store/runtime-adapters.js +92 -0
  163. package/src/store/scene-stage.js +21 -0
  164. package/src/store/use-document-store.js +14 -0
  165. package/src/studio-actions.js +210 -0
  166. package/src/studio-agent-commands.js +38 -268
  167. package/src/studio-agent-context.js +38 -9
  168. package/src/studio-agent-motion.js +122 -378
  169. package/src/studio-agent-protocol.js +66 -30
  170. package/src/studio-app-binding.js +379 -0
  171. package/src/studio-contact-sheet.js +73 -0
  172. package/src/studio-elements.js +58 -51
  173. package/src/styles/themes.css +200 -0
  174. package/src/styles/tokens.css +69 -0
  175. package/src/styles.css +443 -1753
  176. package/src/theme.js +44 -0
  177. package/src/timeline-extent.js +16 -0
  178. package/src/trail-key-conflicts.js +39 -0
  179. package/src/trail-pick.js +59 -0
  180. package/src/ui.jsx +8 -8
  181. package/src/use-case-question.jsx +66 -0
  182. package/src/workflow/AgentPanel.jsx +82 -69
  183. package/src/workflow/agent-client.js +12 -2
  184. package/src/workflow/agent-panel.css +34 -32
  185. package/src/workflow/cozy-scene-node.css +2 -0
  186. package/src/workflow/workflow.css +2 -0
  187. package/tools/ardy/__pycache__/cclay_gvhmr_worker.cpython-313.pyc +0 -0
  188. package/tools/ardy/bridge.mjs +164 -146
  189. package/tools/ardy/visual-qa.mjs +5 -5
  190. package/tools/bench/EXP3.md +61 -0
  191. package/tools/bench/cclay_bench_extract_incam.py +125 -0
  192. package/tools/bench/cclay_bench_extract_obs.py +204 -0
  193. package/tools/bench/cclay_bench_runner.py +42 -0
  194. package/tools/bench/cube-contact.mjs +162 -0
  195. package/tools/bench/exp3.mjs +152 -0
  196. package/tools/bench/extract-bench-lib.mjs +216 -0
  197. package/tools/bench/extract-bench.mjs +302 -0
  198. package/tools/bench/fal-generate.mjs +88 -0
  199. package/tools/bench/fit/README.md +189 -0
  200. package/tools/bench/fit/camera.mjs +59 -0
  201. package/tools/bench/fit/contact.mjs +419 -0
  202. package/tools/bench/fit/footlock.mjs +234 -0
  203. package/tools/bench/fit/motion.mjs +85 -0
  204. package/tools/bench/fit/pin.mjs +27 -0
  205. package/tools/bench/fit/remote.mjs +105 -0
  206. package/tools/bench/fit-bench.mjs +126 -0
  207. package/tools/bench/fit-sanity.mjs +45 -0
  208. package/tools/bench/metrics.mjs +313 -0
  209. package/tools/bench/obs/depth.mjs +258 -0
  210. package/tools/bench/obs/extrinsics.mjs +175 -0
  211. package/tools/bench/obs/fit_mannequin_betas.py +340 -0
  212. package/tools/bench/obs/ground.mjs +294 -0
  213. package/tools/bench/obs/heading.mjs +151 -0
  214. package/tools/bench/obs/ladder.mjs +555 -0
  215. package/tools/bench/obs/mannequin-betas.json +124 -0
  216. package/tools/bench/obs/remote.mjs +83 -0
  217. package/tools/bench/obs/rest_joints.py +52 -0
  218. package/tools/bench/obs/ybot-targets.mjs +49 -0
  219. package/tools/bench/obs-bench.mjs +520 -0
  220. package/tools/bench/score.mjs +343 -0
  221. package/tools/bench/summarize.mjs +86 -0
  222. package/tools/dev/pages/privacy.html +13 -8
  223. package/tools/gt-render/browser.mjs +159 -0
  224. package/tools/gt-render/camera-math.mjs +276 -0
  225. package/tools/gt-render/page.mjs +267 -0
  226. package/tools/gt-render/render.mjs +514 -0
  227. package/tools/gt-render/scene-box.mjs +31 -0
  228. package/tools/gt-render/take-transform.mjs +87 -0
  229. package/tools/qa/css-rule-usage.mjs +283 -0
  230. package/tools/qa/studio-control-count.mjs +70 -32
  231. package/tools/run-tests.mjs +58 -3
  232. package/tools/track/DESIGN.md +513 -0
  233. package/tools/track/backfill-provenance.mjs +116 -0
  234. package/tools/track/budget.mjs +8 -0
  235. package/tools/track/check-rig.mjs +209 -0
  236. package/tools/track/diagnostics.schema.json +60 -0
  237. package/tools/track/export-rig.mjs +256 -0
  238. package/tools/track/fallback.mjs +7 -0
  239. package/tools/track/fk-parity-fixture.mjs +161 -0
  240. package/tools/track/gate.mjs +349 -0
  241. package/tools/track/masks.mjs +318 -0
  242. package/tools/track/metrics.mjs +201 -0
  243. package/tools/track/publish-obs.mjs +108 -0
  244. package/tools/track/py/check_env.py +61 -0
  245. package/tools/track/py/eval_lr.py +229 -0
  246. package/tools/track/py/lr_viterbi.py +294 -0
  247. package/tools/track/py/masks.py +405 -0
  248. package/tools/track/py/objective.py +382 -0
  249. package/tools/track/py/rig.py +508 -0
  250. package/tools/track/py/scene.py +326 -0
  251. package/tools/track/py/test_joint_indices.py +123 -0
  252. package/tools/track/py/test_lr_viterbi.py +195 -0
  253. package/tools/track/py/test_masks.py +229 -0
  254. package/tools/track/py/test_rig.py +288 -0
  255. package/tools/track/py/test_scene.py +354 -0
  256. package/tools/track/py/test_track.py +328 -0
  257. package/tools/track/py/track.py +411 -0
  258. package/tools/track/remote.mjs +140 -0
  259. package/tools/track/rig-dump.mjs +227 -0
  260. package/tools/track/run-box-tests.mjs +14 -0
  261. package/tools/track/run-box.mjs +168 -0
  262. package/tools/track/setup-box.sh +59 -0
  263. package/tools/track/study-2d.mjs +728 -0
  264. package/dist/assets/analytics-B1hnH66c.js +0 -1
  265. package/dist/assets/app-Cu1cexZR.css +0 -1
  266. package/dist/assets/app-Dxdh8kds.js +0 -4861
  267. package/dist/assets/shot-prompt-C_g2BHVc.css +0 -1
  268. package/dist/assets/shot-prompt-HVJRP4Gr.js +0 -17
  269. package/dist/assets/workflow-CJd-PDtV.js +0 -179
  270. package/dist/assets/workflow-DsudxKHF.css +0 -1
  271. package/src/fal-motion-studio.jsx +0 -180
  272. 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%;
@@ -1547,101 +1163,26 @@ select {
1547
1163
  z-index: 6;
1548
1164
  /* a slate line is a readout, not a control: presses belong to the scene
1549
1165
  underneath it (grabbing an object low in frame used to hit this instead) */
1550
- pointer-events: none;
1551
- color: #fff;
1552
- padding: 7px 16px;
1553
- border-radius: 9px;
1554
- font-size: 11px;
1555
- font-weight: 600;
1556
- letter-spacing: .12em;
1557
- animation: riseCenter var(--med) var(--ease) both;
1558
- }
1559
- /* out-of-frame warning: red-tinted glass variant of .caption, using the same
1560
- destructive red as the reference's delete actions (#e5484d) */
1561
- .caption.off {
1562
- background: rgba(229, 72, 77, .18);
1563
- border-color: rgba(229, 72, 77, .5);
1564
- color: #ffc9cb;
1565
- }
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);
1166
+ pointer-events: none;
1167
+ color: #fff;
1168
+ padding: 7px 16px;
1169
+ border-radius: 9px;
1170
+ font-size: 11px;
1171
+ font-weight: 600;
1172
+ letter-spacing: .12em;
1173
+ animation: riseCenter var(--med) var(--ease) both;
1635
1174
  }
1636
-
1637
- .pose-bar {
1638
- display: flex;
1639
- gap: 8px;
1175
+ /* out-of-frame warning: red-tinted glass variant of .caption, using the same
1176
+ destructive red as the reference's delete actions (#e5484d) */
1177
+ .caption.off {
1178
+ background: rgba(229, 72, 77, .18);
1179
+ border-color: rgba(229, 72, 77, .5);
1180
+ color: #ffc9cb;
1640
1181
  }
1641
- .pose-btns {
1642
- display: flex;
1643
- flex-direction: column;
1644
- gap: 8px;
1182
+ .viewmode button.active {
1183
+ background: var(--grad);
1184
+ color: #fff;
1185
+ box-shadow: 0 3px 12px #3346ff66;
1645
1186
  }
1646
1187
  .pose-btns .btn.full {
1647
1188
  margin-top: 0;
@@ -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 {
@@ -6687,15 +5901,6 @@ input[type=range]::-moz-range-thumb {
6687
5901
  heading is hidden in the tabbed panel, so the create action gets its own
6688
5902
  toolbar row above the tree. */
6689
5903
 
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
-
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,111 +7598,39 @@ 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;
8686
7604
  border-radius: 2px;
8687
7605
  }
8688
7606
 
8689
- /* object transform sections: gizmo-modes as compact 3-way strip */
8690
- .presets.gizmo-modes {
8691
- grid-template-columns: 1fr 1fr 1fr;
8692
- }
8693
-
8694
- .presets.gizmo-modes button {
8695
- padding: 0 4px;
8696
- }
8697
-
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;
7607
+ /* object transform sections: gizmo-modes as compact 3-way strip */
7608
+ .presets.gizmo-modes {
7609
+ grid-template-columns: 1fr 1fr 1fr;
8739
7610
  }
8740
7611
 
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;
7612
+ .presets.gizmo-modes button {
7613
+ padding: 0 4px;
8753
7614
  }
8754
7615
 
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;
@@ -9248,7 +8059,7 @@ input[type=range] {
9248
8059
 
9249
8060
  .hierarchy-row-wrap:before {
9250
8061
  left: -9px;
9251
- background: rgba(255, 255, 255, .07);
8062
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .07);
9252
8063
  }
9253
8064
 
9254
8065
  .hierarchy-icon {
@@ -9265,8 +8076,8 @@ input[type=range] {
9265
8076
  .inspector-heading {
9266
8077
  height: 26px;
9267
8078
  padding: 0 10px;
9268
- background: #2c2c2c;
9269
- border-bottom: 1px solid #1a1a1a;
8079
+ background: var(--lg-2c2c2c, #2c2c2c);
8080
+ border-bottom: 1px solid var(--lg-1a1a1a, #1a1a1a);
9270
8081
  }
9271
8082
 
9272
8083
  .hierarchy-heading strong,
@@ -9345,13 +8156,6 @@ input[type=range] {
9345
8156
  color: var(--muted);
9346
8157
  }
9347
8158
 
9348
- .ardy-clamp {
9349
- white-space: nowrap;
9350
- overflow: hidden;
9351
- text-overflow: ellipsis;
9352
- display: block;
9353
- }
9354
-
9355
8159
  /* ------------------------------------------- Unity component sections ----- */
9356
8160
  /* HDRP inspector: foldout triangle + component chip + bold title, a rule
9357
8161
  under the header while open, and content indented beneath it. */
@@ -9385,7 +8189,7 @@ input[type=range] {
9385
8189
  order: 0;
9386
8190
  width: 12px;
9387
8191
  font-size: 8px;
9388
- color: #c4c4c4;
8192
+ color: var(--lg-c4c4c4, #c4c4c4);
9389
8193
  }
9390
8194
 
9391
8195
  .foldout-title {
@@ -9394,7 +8198,7 @@ input[type=range] {
9394
8198
 
9395
8199
  /* open sections get the header rule and indented body */
9396
8200
  .card.foldout.open .foldout-head {
9397
- border-bottom: 1px solid #232323;
8201
+ border-bottom: 1px solid var(--lg-232323, #232323);
9398
8202
  }
9399
8203
 
9400
8204
  .card.foldout {
@@ -9403,7 +8207,7 @@ input[type=range] {
9403
8207
  }
9404
8208
 
9405
8209
  .card.foldout.open {
9406
- border-bottom: 1px solid #232323;
8210
+ border-bottom: 1px solid var(--lg-232323, #232323);
9407
8211
  }
9408
8212
 
9409
8213
  .foldout-body {
@@ -9418,13 +8222,13 @@ input[type=range] {
9418
8222
  }
9419
8223
 
9420
8224
  ::-webkit-scrollbar-thumb {
9421
- background: #4a4a4a;
8225
+ background: var(--lg-4a4a4a, #4a4a4a);
9422
8226
  border-radius: 4px;
9423
8227
  border: none;
9424
8228
  }
9425
8229
 
9426
8230
  ::-webkit-scrollbar-thumb:hover {
9427
- background: #5c5c5c;
8231
+ background: var(--lg-5c5c5c, #5c5c5c);
9428
8232
  }
9429
8233
 
9430
8234
  ::-webkit-scrollbar-track {
@@ -9556,8 +8360,8 @@ input[type=range] {
9556
8360
  display: flex;
9557
8361
  justify-content: flex-end;
9558
8362
  padding: 6px 12px;
9559
- border-top: 1px solid #1a1a1a;
9560
- background: #282828;
8363
+ border-top: 1px solid var(--lg-1a1a1a, #1a1a1a);
8364
+ background: var(--surface-panel);
9561
8365
  }
9562
8366
 
9563
8367
  .inspector-footer span {
@@ -9608,7 +8412,7 @@ input[type=range] {
9608
8412
  height: 10px;
9609
8413
  border: 1px solid #8a8a8a;
9610
8414
  border-radius: 2px;
9611
- background: rgba(255, 255, 255, .05);
8415
+ background: rgba(var(--lg-ink-rgb, 255,255,255), .05);
9612
8416
  box-shadow: none;
9613
8417
  transform: none;
9614
8418
  }
@@ -9619,7 +8423,7 @@ input[type=range] {
9619
8423
  .hierarchy-icon.motion,
9620
8424
  .hierarchy-icon.clip,
9621
8425
  .hierarchy-icon.prompt { border-color: #3a7cbf; background: rgba(58, 124, 191, .18); }
9622
- .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); }
9623
8427
  .hierarchy-icon.rig,
9624
8428
  .hierarchy-icon.bone { border-radius: 50%; border-color: #8a759d; background: rgba(138, 117, 157, .16); }
9625
8429
  .hierarchy-icon.path { width: 12px; height: 5px; border-radius: 999px; border-color: #6f9f86; background: rgba(111, 159, 134, .16); }
@@ -9768,7 +8572,7 @@ input[type=range] {
9768
8572
  padding: 12px 13px;
9769
8573
  border: 1px solid var(--line2);
9770
8574
  border-left: 3px solid var(--accent);
9771
- background: #282828;
8575
+ background: var(--surface-panel);
9772
8576
  }
9773
8577
 
9774
8578
  .result-next h4 {
@@ -9935,17 +8739,17 @@ input[type=range] {
9935
8739
 
9936
8740
  .props-drop[data-drop="over"],
9937
8741
  .hierarchy-row-wrap[data-drop="over"] {
9938
- border-color: var(--accent, #e7b557);
8742
+ border-color: var(--accent, var(--select));
9939
8743
  background: rgba(231, 181, 87, 0.1);
9940
8744
  }
9941
8745
 
9942
8746
  .hierarchy-row-wrap[data-drop="over"] {
9943
- border: 1px dashed var(--accent, #e7b557);
8747
+ border: 1px dashed var(--accent, var(--select));
9944
8748
  border-radius: 3px;
9945
8749
  }
9946
8750
 
9947
8751
  .viewport[data-drop="over"] {
9948
- outline: 2px dashed var(--accent, #e7b557);
8752
+ outline: 2px dashed var(--accent, var(--select));
9949
8753
  outline-offset: -6px;
9950
8754
  }
9951
8755
 
@@ -10097,8 +8901,8 @@ input[type=range] {
10097
8901
  justify-content: center;
10098
8902
  gap: 10px;
10099
8903
  padding: 24px;
10100
- background: var(--bg, #1e1e1e);
10101
- color: var(--fg, #d2d2d2);
8904
+ background: var(--bg, var(--lg-1e1e1e, #1e1e1e));
8905
+ color: var(--fg, var(--lg-d2d2d2, #d2d2d2));
10102
8906
  text-align: center;
10103
8907
  }
10104
8908
  .crash-screen h1 {
@@ -10107,17 +8911,17 @@ input[type=range] {
10107
8911
  }
10108
8912
  .crash-screen p {
10109
8913
  margin: 0;
10110
- color: var(--muted, #9a9a9a);
8914
+ color: var(--muted, var(--lg-9a9a9a, #9a9a9a));
10111
8915
  max-width: 52ch;
10112
8916
  }
10113
8917
  .crash-screen .crash-detail {
10114
8918
  max-width: min(72ch, 90vw);
10115
8919
  overflow: auto;
10116
8920
  padding: 10px 14px;
10117
- border: 1px solid var(--line2, #3c3c3c);
8921
+ border: 1px solid var(--line2, var(--lg-3c3c3c, #3c3c3c));
10118
8922
  border-radius: 6px;
10119
- background: var(--panel, #2c2c2c);
10120
- color: var(--muted, #9a9a9a);
8923
+ background: var(--panel, var(--lg-2c2c2c, #2c2c2c));
8924
+ color: var(--muted, var(--lg-9a9a9a, #9a9a9a));
10121
8925
  font-size: 12px;
10122
8926
  text-align: left;
10123
8927
  white-space: pre-wrap;
@@ -10125,10 +8929,10 @@ input[type=range] {
10125
8929
  .crash-screen button,
10126
8930
  .gl-lost-card button {
10127
8931
  padding: 6px 16px;
10128
- border: 1px solid var(--line2, #3c3c3c);
8932
+ border: 1px solid var(--line2, var(--lg-3c3c3c, #3c3c3c));
10129
8933
  border-radius: 6px;
10130
- background: var(--card, #383838);
10131
- color: var(--fg, #d2d2d2);
8934
+ background: var(--card, var(--lg-383838, #383838));
8935
+ color: var(--fg, var(--lg-d2d2d2, #d2d2d2));
10132
8936
  cursor: pointer;
10133
8937
  }
10134
8938
  .gl-lost-overlay {
@@ -10147,47 +8951,21 @@ input[type=range] {
10147
8951
  gap: 8px;
10148
8952
  max-width: 46ch;
10149
8953
  padding: 18px 22px;
10150
- border: 1px solid var(--line2, #3c3c3c);
8954
+ border: 1px solid var(--line2, var(--lg-3c3c3c, #3c3c3c));
10151
8955
  border-radius: 8px;
10152
- background: var(--panel, #2c2c2c);
10153
- color: var(--fg, #d2d2d2);
8956
+ background: var(--panel, var(--lg-2c2c2c, #2c2c2c));
8957
+ color: var(--fg, var(--lg-d2d2d2, #d2d2d2));
10154
8958
  text-align: center;
10155
8959
  }
10156
8960
  .gl-lost-card p {
10157
8961
  margin: 0;
10158
- color: var(--muted, #9a9a9a);
8962
+ color: var(--muted, var(--lg-9a9a9a, #9a9a9a));
10159
8963
  font-size: 12px;
10160
8964
  }
10161
-
10162
- /* ------------------------------------------- preserve (inpainting) -------- */
10163
- /* The "keep the current take" strength, in the Prompt Blocks panel. Same shape
10164
- as .trail-falloff-row — flat range plus a tabular readout — and, since round 2
10165
- allows preserving across a drawn root path, it has no disabled state left:
10166
- every state the control can be in is now a WORKING one, explained by the hint
10167
- lines under it rather than by graying.
10168
- Appended at the end on purpose: the global input[type=range] rules further up
10169
- the cascade (the Unity density and widget-material passes) would otherwise
10170
- win over anything written beside the trail row. */
10171
- .preserve-strength-row {
10172
- display: flex;
10173
- align-items: center;
10174
- gap: 8px;
10175
- }
10176
- .preserve-strength-row input[type="range"] {
10177
- flex: 1;
10178
- min-width: 0;
10179
- }
10180
8965
  .preserve-strength-value {
10181
8966
  font-variant-numeric: tabular-nums;
10182
8967
  opacity: .8;
10183
8968
  }
10184
- /* Both poles on one line, each at the end it describes. */
10185
- .preserve-strength-scale {
10186
- display: flex;
10187
- justify-content: space-between;
10188
- gap: 8px;
10189
- margin-top: 3px;
10190
- }
10191
8969
  /* Which limbs the grouped mask will actually free. It reads as a continuation
10192
8970
  of the slider, not as a new paragraph, so it sits tighter to the row above
10193
8971
  and one step quieter than the hint it borrows its voice from. */
@@ -10269,7 +9047,7 @@ input[type=range] {
10269
9047
  gap: 6px;
10270
9048
  margin-top: 8px;
10271
9049
  padding-left: 8px;
10272
- border-left: 2px solid var(--line2, #3c3c3c);
9050
+ border-left: 2px solid var(--line2, var(--lg-3c3c3c, #3c3c3c));
10273
9051
  }
10274
9052
  /* Two bounds on one line, reading as a single range rather than two fields —
10275
9053
  same flat shape as .preserve-strength-row. */
@@ -10303,12 +9081,6 @@ input[type=range] {
10303
9081
  font-variant-numeric: tabular-nums;
10304
9082
  white-space: nowrap;
10305
9083
  }
10306
- /* Wave 2 has not landed: the mode is fully usable, only the send is waiting.
10307
- Stated in the panel's own quiet voice rather than by disabling the tool. */
10308
- .line-edit-pending {
10309
- margin-top: 2px;
10310
- opacity: .85;
10311
- }
10312
9084
 
10313
9085
  /* The view moved out from under a committed edit. A STATUS, not an error: the
10314
9086
  edit is intact and still on its way to the box, so this reads like the
@@ -10390,39 +9162,6 @@ input[type=range] {
10390
9162
  background: var(--panel);
10391
9163
  }
10392
9164
 
10393
- /* The two primaries. They sit first and they sit together, so the choice reads
10394
- as a pair — block the scene, or refine what is already blocked — rather than
10395
- as two unrelated buttons that happen to be nearby. */
10396
- .take-modes {
10397
- display: flex;
10398
- align-items: flex-start;
10399
- gap: 8px;
10400
- }
10401
-
10402
- .take-mode {
10403
- display: flex;
10404
- flex-direction: column;
10405
- gap: 1px;
10406
- }
10407
-
10408
- .take-mode-btn {
10409
- height: 26px;
10410
- padding: 0 14px;
10411
- border: 1px solid var(--line2);
10412
- border-radius: 3px;
10413
- background: var(--bg);
10414
- color: var(--fg);
10415
- font: inherit;
10416
- font-size: 11px;
10417
- font-weight: 700;
10418
- letter-spacing: .02em;
10419
- cursor: pointer;
10420
- }
10421
-
10422
- .take-mode-btn:hover {
10423
- background: var(--hover);
10424
- }
10425
-
10426
9165
  .take-mode-btn.active {
10427
9166
  border-color: var(--accent);
10428
9167
  box-shadow: inset 0 -2px var(--accent);
@@ -10437,36 +9176,6 @@ input[type=range] {
10437
9176
  cursor: not-allowed;
10438
9177
  }
10439
9178
 
10440
- .take-mode-hint,
10441
- .take-mode-reason {
10442
- font-size: 10px;
10443
- line-height: 1.3;
10444
- max-width: 26ch;
10445
- color: var(--muted);
10446
- }
10447
-
10448
- .take-mode-reason {
10449
- color: var(--warn, #ff9c6e);
10450
- opacity: .9;
10451
- }
10452
-
10453
- /* The Scene entry's actions, revealed inline instead of in a popup: the strip
10454
- is already the place the artist is looking. */
10455
- .take-scene-menu {
10456
- display: flex;
10457
- flex-wrap: wrap;
10458
- align-items: flex-start;
10459
- gap: 6px 10px;
10460
- padding-left: 10px;
10461
- border-left: 1px solid var(--line2);
10462
- }
10463
-
10464
- .take-scene-action {
10465
- display: flex;
10466
- flex-direction: column;
10467
- gap: 1px;
10468
- }
10469
-
10470
9179
  .take-scene-menu .btn {
10471
9180
  height: 26px;
10472
9181
  padding: 0 10px;
@@ -10474,75 +9183,12 @@ input[type=range] {
10474
9183
  white-space: nowrap;
10475
9184
  }
10476
9185
 
10477
- .take-scene-advanced {
10478
- min-width: 220px;
10479
- font-size: 11px;
10480
- }
10481
-
10482
- .take-scene-advanced > summary {
10483
- cursor: pointer;
10484
- color: var(--muted);
10485
- font-size: 10px;
10486
- font-weight: 700;
10487
- letter-spacing: .03em;
10488
- }
10489
-
10490
- .take-scene-advanced > summary:hover {
10491
- color: var(--fg);
10492
- }
10493
-
10494
9186
  .take-recipe-summary {
10495
9187
  margin-top: 4px;
10496
9188
  opacity: .8;
10497
9189
  font-variant-numeric: tabular-nums;
10498
9190
  }
10499
9191
 
10500
- /* The version strip. Numbered because the numbers are what the artist says out
10501
- loud ("go back to v2"); the label rides underneath so a chip explains what it
10502
- is without a hover, and the current take is the one with the accent under it. */
10503
- .take-version-strip {
10504
- display: flex;
10505
- flex-wrap: wrap;
10506
- align-items: center;
10507
- gap: 4px;
10508
- margin-left: auto;
10509
- }
10510
-
10511
- .take-version-chip {
10512
- display: flex;
10513
- flex-direction: column;
10514
- align-items: center;
10515
- gap: 0;
10516
- min-width: 34px;
10517
- max-width: 120px;
10518
- padding: 2px 7px;
10519
- border: 1px solid var(--line2);
10520
- border-radius: 3px;
10521
- background: var(--bg);
10522
- color: var(--muted);
10523
- font: inherit;
10524
- cursor: pointer;
10525
- }
10526
-
10527
- .take-version-chip:hover {
10528
- background: var(--hover);
10529
- color: var(--fg);
10530
- }
10531
-
10532
- .take-version-chip b {
10533
- font-size: 11px;
10534
- font-variant-numeric: tabular-nums;
10535
- }
10536
-
10537
- .take-version-chip small {
10538
- max-width: 100%;
10539
- overflow: hidden;
10540
- text-overflow: ellipsis;
10541
- white-space: nowrap;
10542
- font-size: 9px;
10543
- opacity: .75;
10544
- }
10545
-
10546
9192
  .take-version-chip.current {
10547
9193
  border-color: var(--accent);
10548
9194
  color: var(--fg);
@@ -10577,36 +9223,10 @@ input[type=range] {
10577
9223
  bottom: 12px;
10578
9224
  right: 12px;
10579
9225
  }
10580
-
10581
- /* Make the title-bar hierarchy legible: manipulation tools, view toggles,
10582
- and camera settings read as three groups instead of one long button row. */
10583
- .editor-toolbar.scene-tools .tool-switch {
10584
- margin: 2px 4px 2px 3px;
10585
- height: 23px;
10586
- border: 1px solid var(--line2);
10587
- border-radius: 3px;
10588
- background: rgba(0, 0, 0, .14);
10589
- }
10590
- .editor-toolbar.scene-tools .tool-switch button {
10591
- height: 21px;
10592
- border-right: 0;
10593
- }
10594
- .editor-toolbar.scene-tools .tool-switch button + button {
10595
- border-left: 1px solid var(--line);
10596
- }
10597
- .editor-toolbar.scene-tools > .snap-switch {
10598
- margin: 2px 0;
10599
- height: 23px;
10600
- border: 1px solid var(--line2);
10601
- border-radius: 3px;
10602
- }
10603
9226
  .editor-toolbar.scene-tools .viewport-toolbar-field,
10604
9227
  .editor-toolbar.scene-tools .viewport-fov-control {
10605
9228
  background: rgba(0, 0, 0, .08);
10606
9229
  }
10607
- .editor-toolbar.scene-tools .settings-separator {
10608
- margin-left: 5px;
10609
- }
10610
9230
 
10611
9231
  /* Splitters are deliberately wider than their 1px visual rule so the
10612
9232
  cursor can reliably find them; the accent appears on hover/focus. */
@@ -11454,59 +10074,129 @@ input[type=range] {
11454
10074
  .agent-toast { padding: 8px 12px; border-bottom: 1px solid var(--line); background: var(--accent-soft); color: var(--fg); font-size: 11px; }
11455
10075
 
11456
10076
  /* Fal H3 Studio motion launch slice (#380). */
11457
- .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; }
11458
- .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; }
11459
- .fal-motion-head span { color: var(--muted, #a7afc2); font-size: 12px; }
11460
- .fal-motion-mode-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-top: 10px; }
11461
- .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; }
11462
- .fal-motion-mode-tabs button.active { border-color: #7dd3fc; background: rgba(42, 77, 100, .32); color: #e6f7ff; }
11463
- .fal-motion-mode-hint { margin-top: 6px; }
11464
- .fal-motion-stepper { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin-top: 10px; }
11465
- .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; }
11466
- .fal-motion-stepper span.active { border-color: #e1b45b; background: rgba(120, 85, 27, .22); color: #ffe7aa; }
11467
- .fal-motion-stepper span.done { border-color: #3e8d62; color: #9fe6b8; }
11468
- .fal-motion-stepper b { font-size: 12px; }
11469
- .fal-motion-segmentation-row { display: flex; align-items: center; gap: 6px; margin-top: 7px; }
11470
- .fal-motion-segmentation-row .fal-motion-segmentation { flex: 1; margin: 0; }
11471
- .fal-motion-flat-cta { flex: none; min-height: 32px !important; padding: 5px 10px !important; font-size: 12px !important; }
11472
- .fal-motion-pose-row, .fal-motion-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
11473
- .fal-motion-pose-row .btn, .fal-motion-actions .btn { min-height: 36px; padding: 7px 12px; font-size: 13px; }
11474
- .fal-motion-pose-row .btn.active { border-color: #7dd3fc; color: #d7f3ff; }
11475
- .fal-motion-capture-status { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 10px; }
11476
- .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; }
11477
- .fal-motion-capture-slot.captured { border-color: #3e8d62; background: rgba(35, 83, 54, .22); }
11478
- .fal-motion-capture-slot strong { color: var(--fg, #eef3ff); font-size: 13px; }
11479
- .fal-motion-capture-slot.captured strong { color: #9fe6b8; }
11480
- .fal-motion-capture-slot span { overflow: hidden; color: var(--muted, #a7afc2); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
11481
- .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; }
11482
- .fal-motion-camera-status { margin: 8px 0 0; color: var(--muted, #a7afc2); font-size: 11px; }
11483
- .fal-motion-camera-status.ready { color: #9fe6b8; }
11484
- .fal-motion-camera-actions { display: flex; gap: 5px; flex-wrap: wrap; margin-top: 5px; }
11485
- .fal-motion-camera-actions .btn { min-height: 30px !important; padding: 4px 9px !important; font-size: 12px !important; }
11486
- .fal-motion-thumbs { display: flex; gap: 8px; margin-top: 8px; min-height: 0; }
11487
- .fal-motion-thumbs figure { margin: 0; min-width: 0; }
11488
- .fal-motion-thumbs img { display: block; width: 148px; height: 84px; object-fit: cover; border-radius: 5px; border: 1px solid #42506a; background: #0c0f16; }
11489
- .fal-motion-thumbs figcaption { margin-top: 4px; color: var(--muted, #a7afc2); font-size: 11px; }
11490
- .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; }
11491
- .fal-motion-prompt-note { margin-top: 8px; padding: 5px 6px; border-left: 2px solid #42506a; background: rgba(17, 21, 30, .65); }
11492
- .fal-motion-inline-error { margin-top: 8px; }
11493
- .fal-motion-segmentation.ready { color: #9fe6b8; }
11494
- .fal-motion-video { display: block; width: 100%; margin-top: 10px; border-radius: 7px; background: #090b10; }
11495
- .fal-motion-duration-row { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
11496
- .fal-motion-duration-row .btn { min-height: 32px; padding: 5px 12px; font-size: 12px; }
11497
- .fal-motion-duration-row .btn.active { border-color: #7dd3fc; background: rgba(42, 77, 100, .32); color: #e6f7ff; }
11498
- .fal-motion-prompt-edit { margin-top: 10px; }
11499
- .fal-motion-prompt-edit summary { cursor: pointer; color: var(--muted, #a7afc2); font-size: 12px; }
11500
- .fal-motion-prompt-override { min-height: 88px; margin-top: 6px; font-family: ui-monospace, monospace; font-size: 12px; }
11501
- .fal-motion-open-row { margin-top: 12px; }
11502
- .fal-motion-open { width: 100%; min-height: 40px; font-size: 14px; }
11503
- .modal.fal-motion-modal { width: min(920px, 96vw); }
11504
- .fal-motion-modal-body { display: grid; grid-template-columns: minmax(280px, 1fr) minmax(320px, 1.1fr); gap: 18px; }
11505
- .fal-motion-modal .fal-motion-thumbs { flex-direction: column; }
11506
- .fal-motion-modal .fal-motion-thumbs img { width: 100%; height: auto; }
11507
- @media (max-width: 700px) { .fal-motion-modal-body { grid-template-columns: 1fr; } }
11508
- .agent-fal-action { color: #6d4aff; border-color: color-mix(in srgb, #6d4aff 35%, var(--line) 65%); }
11509
- .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; }
11510
10129
  .result-motion-video { width: 100%; max-height: 420px; background: #090b10; }
11511
10130
  .result-motion-meta { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; color: var(--muted, #a7afc2); font-size: 11px; }
11512
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
+ }