cozyclay 1.10.0 → 2.0.2

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 (275) hide show
  1. package/CHANGELOG.md +193 -0
  2. package/bin/agent/agent-routes.mjs +82 -72
  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/codex-auth.mjs +2 -1
  10. package/bin/cozyclay.mjs +38 -11
  11. package/bin/live/cli.mjs +22 -3
  12. package/bin/mcp-runtime.mjs +45 -20
  13. package/bin/telemetry-state.mjs +5 -2
  14. package/bin/update-check.mjs +15 -0
  15. package/dist/app/index.html +6 -6
  16. package/dist/assets/analytics-MVZOEW8O.js +1 -0
  17. package/dist/assets/app-BxBLC6GT.js +4876 -0
  18. package/dist/assets/app-CJdxvnrl.css +1 -0
  19. package/dist/assets/{demo-B-eg1CT8.js → demo-ByeYp-dY.js} +1 -1
  20. package/dist/assets/{first-shot-handoff-CGgnvNu8.js → first-shot-handoff-DgT28ZiV.js} +1 -1
  21. package/dist/assets/{landing-IbRp3FnQ.js → landing-BaXkpFip.js} +1 -1
  22. package/dist/assets/shot-prompt-CbqWcWYi.css +1 -0
  23. package/dist/assets/shot-prompt-hN0j_O-p.js +17 -0
  24. package/dist/assets/{ticket-BgIzOBOf.js → ticket-BcmsnHn5.js} +1 -1
  25. package/dist/assets/workflow-B5XZwVfe.js +179 -0
  26. package/dist/assets/workflow-DRdwoDBT.css +1 -0
  27. package/dist/cozyclay-package.json +1 -1
  28. package/dist/fonts/IBM-Plex-Sans-OFL.txt +92 -0
  29. package/dist/fonts/JetBrains-Mono-OFL.txt +93 -0
  30. package/dist/fonts/README.md +13 -9
  31. package/dist/fonts/ibm-plex-sans-400-latin.woff2 +0 -0
  32. package/dist/fonts/ibm-plex-sans-500-latin.woff2 +0 -0
  33. package/dist/fonts/ibm-plex-sans-600-latin.woff2 +0 -0
  34. package/dist/fonts/jetbrains-mono-400-latin.woff2 +0 -0
  35. package/dist/fonts/jetbrains-mono-500-latin.woff2 +0 -0
  36. package/dist/index.html +7 -7
  37. package/dist/privacy/index.html +13 -8
  38. package/dist/sitemap.xml +2 -2
  39. package/dist/workflow/index.html +5 -5
  40. package/mcp/live-hub.mjs +35 -93
  41. package/mcp/mesh-file.mjs +48 -0
  42. package/mcp/server.mjs +6 -77
  43. package/mcp/tool-handlers.mjs +219 -376
  44. package/package.json +2 -1
  45. package/src/App.jsx +1275 -9086
  46. package/src/analytics.js +393 -9
  47. package/src/app-context.js +211 -0
  48. package/src/app-stage.jsx +25 -24
  49. package/src/ardy/auto-fix-panel.css +108 -0
  50. package/src/ardy/fix-collisions.js +10 -66
  51. package/src/ardy/ik-drag.js +101 -0
  52. package/src/ardy/ik-key-json.js +43 -0
  53. package/src/ardy/ik.js +97 -67
  54. package/src/ardy/physics-panel.css +2 -0
  55. package/src/ardy/physics-panel.jsx +17 -5
  56. package/src/ardy/platform-fit-panel.css +64 -0
  57. package/src/ardy/platform-fit-panel.jsx +40 -0
  58. package/src/ardy/platform-fit.js +326 -0
  59. package/src/ardy/playback.js +166 -20
  60. package/src/ardy/range-pin.js +299 -0
  61. package/src/ardy/timeline-coordinates.js +26 -0
  62. package/src/ardy/timeline.css +1214 -0
  63. package/src/ardy/timeline.jsx +152 -41
  64. package/src/ardy/waypoints.js +3 -3
  65. package/src/asset-pane.css +462 -0
  66. package/src/asset-pane.jsx +461 -232
  67. package/src/camera-tutorial.jsx +38 -18
  68. package/src/command-bus.js +349 -0
  69. package/src/commands/ai.js +31 -0
  70. package/src/commands/cast.js +140 -0
  71. package/src/commands/elements/character.js +13 -0
  72. package/src/commands/elements/motion.js +14 -0
  73. package/src/commands/elements/object.js +22 -0
  74. package/src/commands/elements/scene.js +16 -0
  75. package/src/commands/elements/shot.js +9 -0
  76. package/src/commands/elements/stage.js +11 -0
  77. package/src/commands/elements.js +155 -0
  78. package/src/commands/export.js +20 -0
  79. package/src/commands/index.js +40 -0
  80. package/src/commands/motion.js +231 -0
  81. package/src/commands/objects.js +174 -0
  82. package/src/commands/project.js +53 -0
  83. package/src/commands/scene.js +81 -0
  84. package/src/commands/shared.js +19 -0
  85. package/src/commands/shot.js +103 -0
  86. package/src/commands/stage.js +17 -0
  87. package/src/commands/view.js +42 -0
  88. package/src/document-store.js +144 -0
  89. package/src/domains/cast.js +1007 -0
  90. package/src/domains/motion.js +3219 -0
  91. package/src/domains/objects.js +932 -0
  92. package/src/domains/scenes.js +823 -0
  93. package/src/domains/shots.js +404 -0
  94. package/src/domains/stage.js +93 -0
  95. package/src/dualview.jsx +113 -57
  96. package/src/facing-marks.js +3 -0
  97. package/src/first-success-guide.jsx +14 -14
  98. package/src/grid-view.js +18 -5
  99. package/src/hierarchy-panel.css +386 -0
  100. package/src/hierarchy-panel.jsx +88 -19
  101. package/src/{fal-motion-client.js → i2v-motion-client.js} +13 -13
  102. package/src/i2v-motion-studio.jsx +180 -0
  103. package/src/ik-camera.js +3 -0
  104. package/src/main.jsx +6 -0
  105. package/src/motion/generation.js +105 -0
  106. package/src/motion-readiness-ui.jsx +4 -4
  107. package/src/motion-readiness.js +11 -0
  108. package/src/motion-trail.js +366 -9
  109. package/src/object-gizmo.jsx +7 -1
  110. package/src/panels/CameraPanel.jsx +60 -0
  111. package/src/panels/CharacterTransformPanel.jsx +48 -0
  112. package/src/panels/EnvironmentPanel.jsx +40 -0
  113. package/src/panels/Foldout.jsx +32 -0
  114. package/src/panels/LightPanel.jsx +24 -0
  115. package/src/panels/ObjectTransformPanel.jsx +554 -0
  116. package/src/panels/PosePanel.jsx +97 -0
  117. package/src/panels/ProjectPanel.jsx +33 -0
  118. package/src/panels/PromptBlocksPanel.jsx +442 -0
  119. package/src/panels/PropsPanel.jsx +70 -0
  120. package/src/panels/ReferenceImageField.jsx +91 -0
  121. package/src/panels/RigControlPanel.jsx +78 -0
  122. package/src/panels/RigPanel.jsx +37 -0
  123. package/src/panels/SubjectBox.jsx +47 -0
  124. package/src/panels/SubjectsPanel.jsx +39 -0
  125. package/src/panels/VideoCapturePanel.jsx +180 -0
  126. package/src/panels/details.css +1171 -0
  127. package/src/panels/motion.css +197 -0
  128. package/src/panels/pose.css +39 -0
  129. package/src/planview.jsx +60 -31
  130. package/src/posestudio.jsx +59 -4
  131. package/src/project-browser.css +1073 -0
  132. package/src/project-browser.jsx +288 -123
  133. package/src/range-pin-object-transform.js +19 -0
  134. package/src/range-pin-panel.css +518 -0
  135. package/src/range-pin-panel.jsx +344 -0
  136. package/src/result-modal.jsx +5 -5
  137. package/src/room.jsx +79 -51
  138. package/src/scenes.js +9 -8
  139. package/src/semantic-edit.js +2 -0
  140. package/src/settings-menu.jsx +39 -105
  141. package/src/shell/BottomDock.jsx +450 -0
  142. package/src/shell/DetailsSlot.jsx +513 -0
  143. package/src/shell/LibrarySlot.jsx +86 -0
  144. package/src/shell/MenuBar.jsx +601 -0
  145. package/src/shell/OutlinerSlot.jsx +50 -0
  146. package/src/shell/PreferencesDialog.jsx +538 -0
  147. package/src/shell/PreferencesSlot.jsx +40 -0
  148. package/src/shell/StatusBar.jsx +125 -0
  149. package/src/shell/StudioShell.jsx +92 -0
  150. package/src/shell/TopBar.jsx +129 -0
  151. package/src/shell/ViewportToolbar.jsx +656 -0
  152. package/src/shell/agent-glass.css +296 -0
  153. package/src/shell/dock.css +93 -0
  154. package/src/shell/glass-regions.css +985 -0
  155. package/src/shell/glass.css +687 -0
  156. package/src/shell/log-store.js +52 -0
  157. package/src/shell/mode.css +9 -0
  158. package/src/shell/preferences.css +651 -0
  159. package/src/shell/shell.css +282 -0
  160. package/src/shell/studio-shell-context.js +19 -0
  161. package/src/shell/topbar.css +435 -0
  162. package/src/shell/viewport.css +451 -0
  163. package/src/store/authored-intent.js +22 -0
  164. package/src/store/runtime-adapters.js +92 -0
  165. package/src/store/scene-stage.js +21 -0
  166. package/src/store/use-document-store.js +14 -0
  167. package/src/studio-actions.js +210 -0
  168. package/src/studio-agent-commands.js +38 -268
  169. package/src/studio-agent-context.js +38 -9
  170. package/src/studio-agent-motion.js +122 -378
  171. package/src/studio-agent-protocol.js +66 -30
  172. package/src/studio-app-binding.js +379 -0
  173. package/src/studio-contact-sheet.js +73 -0
  174. package/src/studio-elements.js +58 -51
  175. package/src/styles/themes.css +200 -0
  176. package/src/styles/tokens.css +69 -0
  177. package/src/styles.css +456 -1748
  178. package/src/theme.js +44 -0
  179. package/src/timeline-extent.js +16 -0
  180. package/src/timeline-fps.js +13 -0
  181. package/src/trail-key-conflicts.js +39 -0
  182. package/src/trail-pick.js +59 -0
  183. package/src/ui.jsx +8 -8
  184. package/src/use-case-question.jsx +66 -0
  185. package/src/workflow/AgentPanel.jsx +86 -71
  186. package/src/workflow/agent-client.js +12 -2
  187. package/src/workflow/agent-panel.css +34 -32
  188. package/src/workflow/cozy-scene-node.css +2 -0
  189. package/src/workflow/workflow.css +2 -0
  190. package/tools/ardy/bridge.mjs +164 -146
  191. package/tools/ardy/visual-qa.mjs +5 -5
  192. package/tools/bench/EXP3.md +61 -0
  193. package/tools/bench/cclay_bench_extract_incam.py +125 -0
  194. package/tools/bench/cclay_bench_extract_obs.py +204 -0
  195. package/tools/bench/cclay_bench_runner.py +42 -0
  196. package/tools/bench/cube-contact.mjs +162 -0
  197. package/tools/bench/exp3.mjs +152 -0
  198. package/tools/bench/extract-bench-lib.mjs +216 -0
  199. package/tools/bench/extract-bench.mjs +302 -0
  200. package/tools/bench/fal-generate.mjs +88 -0
  201. package/tools/bench/fit/README.md +189 -0
  202. package/tools/bench/fit/camera.mjs +59 -0
  203. package/tools/bench/fit/contact.mjs +419 -0
  204. package/tools/bench/fit/footlock.mjs +234 -0
  205. package/tools/bench/fit/motion.mjs +85 -0
  206. package/tools/bench/fit/pin.mjs +27 -0
  207. package/tools/bench/fit/remote.mjs +105 -0
  208. package/tools/bench/fit-bench.mjs +126 -0
  209. package/tools/bench/fit-sanity.mjs +45 -0
  210. package/tools/bench/metrics.mjs +313 -0
  211. package/tools/bench/obs/depth.mjs +258 -0
  212. package/tools/bench/obs/extrinsics.mjs +175 -0
  213. package/tools/bench/obs/fit_mannequin_betas.py +340 -0
  214. package/tools/bench/obs/ground.mjs +294 -0
  215. package/tools/bench/obs/heading.mjs +151 -0
  216. package/tools/bench/obs/ladder.mjs +555 -0
  217. package/tools/bench/obs/mannequin-betas.json +124 -0
  218. package/tools/bench/obs/remote.mjs +83 -0
  219. package/tools/bench/obs/rest_joints.py +52 -0
  220. package/tools/bench/obs/ybot-targets.mjs +49 -0
  221. package/tools/bench/obs-bench.mjs +520 -0
  222. package/tools/bench/score.mjs +343 -0
  223. package/tools/bench/summarize.mjs +86 -0
  224. package/tools/dev/pages/privacy.html +13 -8
  225. package/tools/gt-render/browser.mjs +159 -0
  226. package/tools/gt-render/camera-math.mjs +276 -0
  227. package/tools/gt-render/page.mjs +267 -0
  228. package/tools/gt-render/render.mjs +514 -0
  229. package/tools/gt-render/scene-box.mjs +31 -0
  230. package/tools/gt-render/take-transform.mjs +87 -0
  231. package/tools/qa/css-rule-usage.mjs +283 -0
  232. package/tools/qa/studio-control-count.mjs +70 -32
  233. package/tools/run-tests.mjs +60 -3
  234. package/tools/track/DESIGN.md +513 -0
  235. package/tools/track/backfill-provenance.mjs +116 -0
  236. package/tools/track/budget.mjs +8 -0
  237. package/tools/track/check-rig.mjs +209 -0
  238. package/tools/track/diagnostics.schema.json +60 -0
  239. package/tools/track/export-rig.mjs +256 -0
  240. package/tools/track/fallback.mjs +7 -0
  241. package/tools/track/fk-parity-fixture.mjs +161 -0
  242. package/tools/track/gate.mjs +349 -0
  243. package/tools/track/masks.mjs +318 -0
  244. package/tools/track/metrics.mjs +201 -0
  245. package/tools/track/publish-obs.mjs +108 -0
  246. package/tools/track/py/check_env.py +61 -0
  247. package/tools/track/py/eval_lr.py +229 -0
  248. package/tools/track/py/lr_viterbi.py +294 -0
  249. package/tools/track/py/masks.py +405 -0
  250. package/tools/track/py/objective.py +382 -0
  251. package/tools/track/py/rig.py +508 -0
  252. package/tools/track/py/scene.py +326 -0
  253. package/tools/track/py/test_joint_indices.py +123 -0
  254. package/tools/track/py/test_lr_viterbi.py +195 -0
  255. package/tools/track/py/test_masks.py +229 -0
  256. package/tools/track/py/test_rig.py +288 -0
  257. package/tools/track/py/test_scene.py +354 -0
  258. package/tools/track/py/test_track.py +328 -0
  259. package/tools/track/py/track.py +411 -0
  260. package/tools/track/remote.mjs +140 -0
  261. package/tools/track/rig-dump.mjs +227 -0
  262. package/tools/track/run-box-tests.mjs +14 -0
  263. package/tools/track/run-box.mjs +168 -0
  264. package/tools/track/setup-box.sh +59 -0
  265. package/tools/track/study-2d.mjs +728 -0
  266. package/dist/assets/analytics-B1hnH66c.js +0 -1
  267. package/dist/assets/app-Cu1cexZR.css +0 -1
  268. package/dist/assets/app-Dxdh8kds.js +0 -4861
  269. package/dist/assets/shot-prompt-C_g2BHVc.css +0 -1
  270. package/dist/assets/shot-prompt-HVJRP4Gr.js +0 -17
  271. package/dist/assets/workflow-CJd-PDtV.js +0 -179
  272. package/dist/assets/workflow-DsudxKHF.css +0 -1
  273. package/src/fal-motion-studio.jsx +0 -180
  274. package/src/scene-history.js +0 -129
  275. package/tools/ardy/__pycache__/cclay_gvhmr_worker.cpython-313.pyc +0 -0
@@ -1 +0,0 @@
1
- (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=.02,t=(e,t,n)=>Math.min(n,Math.max(t,e)),n=(e,t=0)=>typeof e==`number`&&Number.isFinite(e)?e:t;function r(e){let t=0;for(let n=0;n<e.length-1;n+=1)t+=(e[n]+e[n+1])/2;return t}function i(e,n){let r=t(n,0,1)*(e.length-1),i=Math.min(e.length-2,Math.floor(r)),a=r-i;return e[i]*(1-a)+e[i+1]*a}function a(e,t=24){if(!e.length)return Array(t).fill(1);if(e.length===1)return Array(t).fill(e[0]);let n=Array(t);for(let r=0;r<t;r+=1)n[r]=i(e,r/(t-1));return n}function o(e){let t=e.map(e=>Math.max(0,n(e,0))),i=r(t)/(t.length-1);return i<=1e-9?t.map(()=>1):t.map(e=>e/i)}function s(e){return e.every(e=>Math.abs(e-1)<1e-6)}function c(){return{cuts:[],envelopes:[Array(24).fill(1)]}}function l(e){return!e||e.cuts.length===0&&e.envelopes.every(s)}function u(e){if(!e||typeof e!=`object`)return null;let t=Array.isArray(e.cuts)?e.cuts:[],r=[];for(let e of t){let t=n(e?.t,NaN),i=n(e?.d,NaN);if(!(t>0&&t<1&&i>0&&i<1))continue;let a=r[r.length-1];a&&(t<=a.t+1e-6||i<=a.d+1e-6)||r.push({t,d:i})}let i=Array.isArray(e.envelopes)?e.envelopes:[],s=[];for(let e=0;e<=r.length;e+=1){let t=Array.isArray(i[e])?i[e].map(e=>n(e,1)):[];s.push(o(a(t.length>=2?t:[1,1])))}return{cuts:r,envelopes:s}}function d(e,r,i,a=.18){let o=e.length,s=Math.max(0,n(i,0)),c=t(n(r,0),0,1),l=a/3,u=Array(o);for(let e=0;e<o;e+=1){let t=Math.abs(e/(o-1)-c);u[e]=t<=l?1:t>=a?0:.5*(1+Math.cos((t-l)/(a-l)*Math.PI))}let d=e.map((e,t)=>Math.max(0,e*(1-u[t])+s*u[t])),f=e=>e===0||e===o-1?.5:1,p=o-1,m=0,h=0;for(let e=0;e<o;e+=1)u[e]>1e-9?m+=f(e)*d[e]:h+=f(e)*d[e];if(h>1e-9){let e=Math.max(0,(p-m)/h);for(let t=0;t<o;t+=1)u[t]<=1e-9&&(d[t]*=e);if(p-m<0){let e=p/m;for(let t=0;t<o;t+=1)u[t]>1e-9&&(d[t]*=e)}}else if(m>1e-9){let e=p/m;for(let t=0;t<o;t+=1)d[t]*=e}else return Array(o).fill(1);return d}function f(e,n){let i=e.length,a=r(e);if(a<=1e-9)return t(n,0,1);let o=t(n,0,1)*(i-1),s=Math.min(i-2,Math.floor(o)),c=o-s,l=0;for(let t=0;t<s;t+=1)l+=(e[t]+e[t+1])/2;let u=e[s]*(1-c)+e[s+1]*c;return l+=(e[s]+u)/2*c,l/a}function p(e,r){let i=t(n(r,0),0,1);if(!e)return i;let a=[{t:0,d:0},...e.cuts,{t:1,d:1}],o=0;for(;o<a.length-2&&i>a[o+1].t;)o+=1;let s=a[o],c=a[o+1],l=c.t-s.t,u=l>1e-9?(i-s.t)/l:1;return s.d+(c.d-s.d)*f(e.envelopes[o],u)}function m(e,t,n){let r=Array(24);for(let a=0;a<24;a+=1)r[a]=i(e,t+(n-t)*(a/23));return r}function h(e,t){let r=e??c(),i=n(t,NaN);if(!(i>.02&&i<.98))return e;for(let t of r.cuts)if(Math.abs(t.t-i)<.02)return e;let a=p(r,i);if(!(a>1e-6&&a<1-1e-6))return e;let s=0;for(;s<r.cuts.length&&i>r.cuts[s].t;)s+=1;let l=s===0?{t:0}:r.cuts[s-1],u=s===r.cuts.length?{t:1}:r.cuts[s],d=(i-l.t)/(u.t-l.t),f=r.envelopes[s];return{cuts:[...r.cuts.slice(0,s),{t:i,d:a},...r.cuts.slice(s)],envelopes:[...r.envelopes.slice(0,s),o(m(f,0,d)),o(m(f,d,1)),...r.envelopes.slice(s+1)]}}function ee(e,t){if(!e||!e.cuts[t])return e;let n=[{t:0,d:0},...e.cuts,{t:1,d:1}],r=n[t],a=n[t+1],s=n[t+2],c=(a.t-r.t)/(s.t-r.t),l=(a.d-r.d)/(s.d-r.d),u=1-c,d=1-l,f=e.envelopes[t],p=e.envelopes[t+1],m=Array(24);for(let e=0;e<24;e+=1){let t=e/23;if(t<=c){let n=i(f,c>1e-9?t/c:0);m[e]=l/Math.max(1e-9,c)*n}else{let n=i(p,u>1e-9?(t-c)/u:0);m[e]=d/Math.max(1e-9,u)*n}}return{cuts:[...e.cuts.slice(0,t),...e.cuts.slice(t+1)],envelopes:[...e.envelopes.slice(0,t),o(m),...e.envelopes.slice(t+2)]}}var te=Object.freeze([`keys`,`follow`,`rail`]),ne=Object.freeze({distance:3,height:1.6,response:.7,lead:.25,railStartMode:`head`,maxDollySpeed:4,pitchOffsetDeg:0,orbitOffsetDeg:0});function re(e){return Array.isArray(e)?e.map(e=>({x:e.x,z:e.z})):null}function ie(e){if(!e||typeof e!=`object`)return null;let t=Array.isArray(e.points)?e.points:Number.isFinite(e.start)&&Number.isFinite(e.end)?[{t:0,height:e.start},{t:1,height:e.end}]:null;if(!t)return null;let n=t.filter(e=>e&&Number.isFinite(e.t)&&Number.isFinite(e.height)).map(e=>({t:Math.max(0,Math.min(1,e.t)),height:Math.max(.1,e.height)})).sort((e,t)=>e.t-t.t).filter((e,t,n)=>t===n.length-1||n[t+1].t-e.t>1e-6).slice(0,8);return n.length<2?null:(n[0]={...n[0],t:0},n[n.length-1]={...n[n.length-1],t:1},{points:n})}function ae(e){return!e||typeof e!=`object`?null:e.mode===`off`?{mode:`off`}:e.mode===`range`?{mode:`range`,startFrame:e.startFrame,endFrame:e.endFrame}:null}function g(e={}){let t=e&&typeof e==`object`?e:{},n=te.includes(t.mode)?t.mode:`keys`,r={...ne,...t.followCam??{}},i=re(t.cameraRail),a=ie(t.craneHeight)??(n===`rail`&&i?{points:[{t:0,height:r.height},{t:1,height:r.height}]}:null),o=u(t.dollyTiming);return{mode:n,followCam:r,cameraRail:i,railFollow:ae(t.railFollow),craneHeight:a,dollyTiming:l(o)?null:o}}function oe(e){return g(e)}function _(e,t={}){let n=g(e),r=t&&typeof t==`object`?t:{};return g({...n,...r,followCam:r.followCam?{...n.followCam,...r.followCam}:n.followCam,cameraRail:Object.hasOwn(r,`cameraRail`)?r.cameraRail:n.cameraRail,railFollow:Object.hasOwn(r,`railFollow`)?r.railFollow:n.railFollow,craneHeight:Object.hasOwn(r,`craneHeight`)?r.craneHeight:n.craneHeight,dollyTiming:Object.hasOwn(r,`dollyTiming`)?r.dollyTiming:n.dollyTiming})}function se(e){let t=g(e);return _(t,{mode:t.mode===`rail`?`follow`:t.mode,cameraRail:null,railFollow:null,craneHeight:null})}var ce=Object.freeze([`pose_edit`,`object_insert`,`cutout_insert`,`object_transform`,`shot_add`,`shot_edit`,`camera_key_record`,`rail_edit`,`prompt_block_add`,`prompt_block_edit`]);function v(e,t){if(e===t)return!0;if(typeof e==`number`&&typeof t==`number`)return Math.abs(e-t)<1e-8;if(!e||!t||typeof e!=`object`||typeof t!=`object`)return!1;if(e instanceof Map||t instanceof Map)return e instanceof Map&&t instanceof Map&&e.size===t.size&&[...e].every(([e,n])=>t.has(e)&&v(n,t.get(e)));let n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>Object.hasOwn(t,n)&&v(e[n],t[n]))}var y=e=>({bones:e?.bones??{},rootY:e?.rootY??0}),b=e=>e.map(({id:e,...t})=>t),le=(e=[])=>e.map(({frame:e,framing:t})=>({frame:e,framing:t})),x=e=>({...e,camera:g(e.camera),cameraKeys:le(e.cameraKeys)});function ue(e,t,n){if(t===n)return null;if(e===`pose`)return v(t,n)?null:`pose_edit`;if(e===`promptClips`)return v(b(t),b(n))?null:n.length>t.length?`prompt_block_add`:`prompt_block_edit`;if(e===`objects`){let e=n.find(e=>!t.some(t=>t.id===e.id));return e?e.renderer===`cutout`?`cutout_insert`:`object_insert`:v(t,n)?null:`object_transform`}if(e===`characters`){if(n.some(e=>!t.some(t=>t.id===e.id)))return`object_insert`;for(let e of n){let n=t.find(t=>t.id===e.id);if(n&&!v(y(n.pose),y(e.pose)))return`pose_edit`}let e=e=>e.map(({id:e,x:t,y:n=0,z:r,rot:i,scale:a=1,hidden:o=!1,model:s,tint:c,subject:l,identityImage:u})=>({id:e,x:t,y:n,z:r,rot:i,scale:a,hidden:o,model:s,tint:c,subject:l,identityImage:u}));return v(e(t),e(n))?null:`object_transform`}if(e===`shots`){if(n.some(e=>!t.some(t=>t.id===e.id)))return`shot_add`;for(let e of n){let n=t.find(t=>t.id===e.id);if(!n)continue;let r=g(e.camera),i=g(n.camera);if([`cameraRail`,`craneHeight`,`railFollow`,`dollyTiming`].some(e=>!v(r[e],i[e])))return`rail_edit`;let a=e.cameraKeys??[],o=n.cameraKeys??[];if(a.length>o.length||a.some(e=>{let t=o.find(t=>t.frame===e.frame);return t&&!v(t.framing,e.framing)}))return`camera_key_record`}return v(t.map(x),n.map(x))?null:`shot_edit`}return null}function de(e){let t=new Set;return(n,r,i,a)=>{if(![`craft`,`playground`].includes(n)||t.has(n))return!1;let o=ue(r,i,a);return o?(t.add(n),e(`${n}:first_edit`,{edit_kind:o,definition_version:1}),!0):!1}}function fe(e,t,n,r){let i=e,a=(e,a)=>{let o=i,s=typeof e==`function`?e(o):e;return i=s,t(s),a&&n(r,o,s),s};return{set:e=>a(e,!1),edit:e=>a(e,!0)}}var pe=`modulepreload`,me=function(e){return`/`+e},he={},ge=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=me(t,n),t=s(t),t in he)return;he[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:pe,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},_e=Object.freeze([`read`,`camera`,`scene_write`,`prompt_authoring`,`frame_capture`,`motion_generate`,`motion_apply`,`project_io`,`other`]),S=Object.freeze([`workflow_read`,`workflow_write`,`workflow_run`,`frame_capture`,`image_generate`,`scene_write`,`other`]),ve=Object.freeze([`workflow:run_requested`,`workflow:run_succeeded`,`workflow:run_failed`,`workflow:run_cancelled`,`workflow:result_applied`,`agent:turn_requested`,`agent:tool_executed`,`agent:turn_succeeded`,`agent:turn_failed`,`agent:turn_cancelled`,`agent:result_applied`,`mcp:tool_requested`,`mcp:tool_executed`,`mcp:result_applied`]),C=Object.freeze({"workflow:run_requested":[`surface`,`run_id`,`node_count_bucket`],"workflow:run_succeeded":[`run_id`,`duration_bucket`],"workflow:run_failed":[`run_id`,`duration_bucket`,`failure_code`],"workflow:run_cancelled":[`run_id`,`duration_bucket`,`failure_code`],"workflow:result_applied":[`run_id`],"agent:turn_requested":[`surface`,`turn_id`],"agent:tool_executed":[`turn_id`,`tool_category`,`outcome`,`duration_bucket`],"agent:turn_succeeded":[`turn_id`,`duration_bucket`],"agent:turn_failed":[`turn_id`,`duration_bucket`,`failure_code`],"agent:turn_cancelled":[`turn_id`,`duration_bucket`,`failure_code`],"agent:result_applied":[`turn_id`],"mcp:tool_requested":[`tool_category`,`request_id`],"mcp:tool_executed":[`tool_category`,`outcome`,`duration_bucket`,`request_id`],"mcp:result_applied":[`request_id`]}),w=Object.freeze({surface:new Set([`studio`,`workflow`]),node_count_bucket:new Set([`0`,`1-3`,`4-10`,`gte11`]),duration_bucket:new Set([`lt1s`,`1-3s`,`3-10s`,`10-30s`,`gte30s`]),tool_category:new Set([..._e,...S]),outcome:new Set([`succeeded`,`failed`,`uncertain`,`cancelled`])}),T=`cozyclay.analyticsOptOut`,E=`cozyclay.internalQa`,D=`cozyclay.analyticsActivation`,ye=Object.freeze([`https://cozyclay.org`,`https://www.cozyclay.org`]),be=Object.freeze({"install:first_launch":[`heard_from`],"app:session_started":[],"app:session_ended":[`duration_bucket`,`action_count_bucket`,`scenes_touched`],"feature:used":[`name`],"hosted:composer_viewed":[],"hosted:login_started":[],"hosted:ticket_created":[],"hosted:result_opened":[],"hosted:opened_in_studio":[],"scene:created":[`scene_source`],"scene:loaded":[`scene_source`],"project:saved":[`object_count_bucket`,`shot_count_bucket`],"project:opened":[`age_bucket`],"craft:first_action":[`action_kind`],"craft:first_edit":[`edit_kind`,`definition_version`],"motion:backend_state":[`backend`,`host_configured`],"motion:generate_requested":[`surface`,`input_mode`,`request_id`],"motion:preflight_blocked":[`reason`,`surface`,`request_id`],"motion:preflight_passed":[`backend`,`surface`,`request_id`],"motion:job_started":[`backend`,`input_mode`,`request_id`],"motion:job_succeeded":[`backend`,`duration_bucket`,`input_mode`,`request_id`],"motion:job_failed":[`backend`,`duration_bucket`,`input_mode`,`error_code`,`request_id`],"motion:result_applied":[`request_id`,`backend`],"export:blocking_frame_succeeded":[`format`],"export:video_succeeded":[`format`],"export:keyframe_pack":[`entries`,`source`],"export:attempt_started":[`attempt_id`,`export_kind`,`format`,`surface`],"export:attempt_succeeded":[`attempt_id`,`export_kind`,`format`,`surface`,`duration_bucket`],"export:attempt_failed":[`attempt_id`,`export_kind`,`format`,`surface`,`duration_bucket`,`failure_code`],"export:attempt_cancelled":[`attempt_id`,`export_kind`,`format`,`surface`,`duration_bucket`,`failure_code`],"sample:played":[`from`],"playground:opened":[],"playground:first_action":[`action_kind`],"playground:first_edit":[`edit_kind`,`definition_version`],"activation:completed":[`activation_path`],"tutorial:started":[`surface`,`tutorial_version`,`start_source`],"tutorial:step_entered":[`surface`,`tutorial_version`,`step_kind`],"tutorial:step_completed":[`surface`,`tutorial_version`,`step_kind`,`elapsed_bucket`],"tutorial:completed":[`surface`,`tutorial_version`,`elapsed_bucket`],"tutorial:dismissed":[`surface`,`tutorial_version`,`step_kind`],...C}),O=new Set([`pose_edit`,`camera_fly`,`orbit`,`dolly_rail`,`crane_graph`,`timeline_scrub`,`prompt_block_add`,`shot_add`,`shot_cut`,`export_pose`,`export_frame`,`export_video`,`mcp_connected`,`auto_color`,`plan_view`,`camera_tutorial`]),k=new Set([`x`,`hn`,`reddit`,`github`,`friend`,`other`]),xe=new Set([`prompt`,`text`,`url`,`path`,`file`]),A=new Set([`aborted`,`unsupported_route`,`generation_failed`,`unknown`]),Se=Object.freeze({backend:new Set([`none`,`local_kimodo`,`hosted`]),host_configured:new Set([!0,!1]),surface:new Set([`timeline`,`line_edit`,`trail`,`mcp`]),input_mode:new Set([`prompt`,`pose`,`edit`]),reason:new Set([`unconfigured`,`unreachable`,`unsupported_route`]),error_code:A,duration_bucket:new Set([`lt1s`,`1-3s`,`3-10s`,`10-30s`,`gte30s`])}),j=new Set([`unsupported_codec`,`encode_failed`,`render_failed`,`aborted`,`unknown`]),Ce=Object.freeze({export_kind:new Set([`video`,`depth_video`,`frame`,`keyframe_pack`]),format:new Set([`mp4`,`png`,`zip`]),surface:new Set([`studio`,`workflow`,`embed`]),duration_bucket:new Set([`lt1s`,`1-3s`,`3-10s`,`10-30s`,`gte30s`]),failure_code:j}),we=Object.freeze({surface:new Set([`studio`,`playground`]),tutorial_version:new Set([1]),start_source:new Set([`query`,`settings`,`landing`]),step_kind:new Set([`fly`,`walk`,`dolly`,`orbit`,`shot`,`rail`,`play`]),elapsed_bucket:new Set([`lt1s`,`1-3s`,`3-10s`,`10-30s`,`gte30s`])}),Te=Object.freeze({workflow:new Set([`aborted`,`capture_failed`,`generation_failed`,`unknown`]),agent:new Set([`aborted`,`auth`,`rate_limited`,`tool_failed`,`upstream`,`unknown`])}),M=null,N=!1,P=!1,F=!1,I=null,L=!1,Ee=!1,R=0,z=0,B=0,V=!1,H=!1,U=new Set;function W(){try{return globalThis.localStorage??null}catch{return null}}function G(e){try{return W()?.getItem(e)??null}catch{return null}}function K(e,t){try{W()?.setItem(e,t)}catch{}}function q(e){return typeof e==`string`?e.trim().toLowerCase().replace(/[/.]+$/g,``):``}function De(e){return e===void 0?[...ye]:e.split(`,`).map(q).filter(Boolean)}function Oe(e,t){let n=q(e);return Array.isArray(t)&&t.some(e=>n===q(e))}var ke=e=>typeof e==`boolean`?!0:typeof e==`number`?Number.isFinite(e):typeof e==`string`&&e.length<=32&&!/\s/.test(e);function J(e,t){let n=be[e]??[];if(!t||typeof t!=`object`||Array.isArray(t))return{};let r={};for(let i of n)if(!(xe.has(i)||!Object.hasOwn(t,i))&&!(e===`feature:used`&&(i!==`name`||!O.has(t[i])))&&!(e===`install:first_launch`&&(i!==`heard_from`||!k.has(t[i])))){if(e.startsWith(`export:attempt_`)){if(i===`attempt_id`){if(typeof t[i]!=`string`||!/^[a-f0-9]{32}$/.test(t[i]))continue}else if(!Ce[i]?.has(t[i]))continue}if(!(e===`export:keyframe_pack`&&(i===`source`&&t[i]!==`workflow`||i===`entries`&&(!Number.isFinite(t[i])||t[i]<0)))&&!((e===`craft:first_edit`||e===`playground:first_edit`)&&(i===`edit_kind`&&!ce.includes(t[i])||i===`definition_version`&&t[i]!==1))){if(e.startsWith(`motion:`)){if(i===`request_id`){if(typeof t[i]!=`string`||!/^[a-f0-9]{32}$/.test(t[i]))continue}else if(!Se[i]?.has(t[i]))continue}if(!(e.startsWith(`tutorial:`)&&!we[i]?.has(t[i]))){if(e.startsWith(`workflow:`)||e.startsWith(`agent:`)||e.startsWith(`mcp:`)){if(i===`run_id`||i===`turn_id`||i===`request_id`){if(typeof t[i]!=`string`||!/^[a-f0-9]{32}$/.test(t[i]))continue}else if(i===`surface`){if(!w.surface.has(t[i])||e.startsWith(`workflow:`)&&t[i]!==`workflow`)continue}else if(i===`node_count_bucket`&&!w.node_count_bucket.has(t[i]))continue;else if(i===`duration_bucket`&&!w.duration_bucket.has(t[i]))continue;else if(i===`tool_category`){if(!(e.startsWith(`agent:`)?S:_e).includes(t[i]))continue}else if(i===`outcome`){if(!(e===`mcp:tool_executed`?[`succeeded`,`failed`,`uncertain`,`cancelled`]:[`succeeded`,`failed`,`cancelled`]).includes(t[i]))continue}else if(i===`failure_code`&&!Te[e.startsWith(`agent:`)?`agent`:`workflow`].has(t[i]))continue}ke(t[i])&&(r[i]=t[i])}}}return r}function Ae(e){return!e||e.ok!==!0?{backend:`none`,host_configured:!1}:typeof e.backend==`string`&&[`none`,`local_kimodo`,`hosted`].includes(e.backend)?{backend:e.backend,host_configured:e.host_configured===!0||typeof e.host==`string`&&e.host.trim().length>0}:{backend:`local_kimodo`,host_configured:!!(typeof e.host==`string`&&e.host.trim())}}function je(e,{body:t={},lineEditSupported:n=!1}={}){return!e||e.backend===`none`||e.ok!==!0&&(e.host_configured===!1||e.reason===`unconfigured`)?`unconfigured`:e.ok===!0?(t.lineEdit||t.replay?.length)&&!n||!t.lineEdit&&e.host===`local`&&e.device===`local`&&(t.segments?.length>1||t.posePin||t.waypoints?.length||t.motionEdit||t.preserve)?`unsupported_route`:null:`unreachable`}function Me(e,t){try{if(e?.name===`AbortError`)return`aborted`;if(A.has(t))return t;if(e instanceof Error)return`generation_failed`}catch{}return`unknown`}function Ne(e,t={}){let n=`requested`,r=null,i=NaN,a=()=>performance.now(),o=$,s=()=>{try{return a()}catch{return NaN}},c=(e,t={})=>{if(r)try{Promise.resolve(o(e,J(e,{...r,...t}))).catch(()=>{})}catch{}};try{a=t.now??a,o=t.capture??o;let n=[...globalThis.crypto.getRandomValues(new Uint8Array(16))].map(e=>e.toString(16).padStart(2,`0`)).join(``);r={...J(`motion:generate_requested`,e),request_id:n},c(`motion:generate_requested`)}catch{r=null}return{preflight(e,t){if(n===`requested`)try{let i=je(e,t);n=i?`blocked`:`passed`,r&&(r.backend=Ae(e).backend),c(i?`motion:preflight_blocked`:`motion:preflight_passed`,i?{reason:i}:{})}catch{}},start(){n===`passed`&&(n=`started`,i=s(),c(`motion:job_started`))},succeed(){n===`started`&&(n=`succeeded`,c(`motion:job_succeeded`,{duration_bucket:Y(s()-i)}))},fail(e,t){n===`started`&&(n=`failed`,c(`motion:job_failed`,{duration_bucket:Y(s()-i),error_code:Me(e,t)}))},apply(){n===`succeeded`&&(n=`applied`,c(`motion:result_applied`))}}}Object.freeze([...O]);function Pe(e){let t=Number.isFinite(e)?Math.max(0,Math.floor(e)):0;return t===0?`0`:t<=3?`1-3`:t<=10?`4-10`:`gte11`}function Fe(e){return!Number.isFinite(e)||e<6e4?`lt1m`:e<3e5?`1-5m`:e<9e5?`5-15m`:e<18e5?`15-30m`:`gte30m`}function Ie(e){return!Number.isFinite(e)||e<0||e<36e5?`lt1h`:e<864e5?`1-24h`:e<6048e5?`1-7d`:e<2592e6?`7-30d`:`gte30d`}function Le(){let e=String(globalThis.navigator?.userAgentData?.platform||globalThis.navigator?.platform||``).toLowerCase();return e.includes(`mac`)?`macos`:e.includes(`win`)?`windows`:e.includes(`linux`)?`linux`:e.includes(`android`)?`android`:e.includes(`iphone`)||e.includes(`ipad`)||e.includes(`ios`)?`ios`:`unknown`}function Y(e){return!Number.isFinite(e)||e<1e3?`lt1s`:e<3e3?`1-3s`:e<1e4?`3-10s`:e<3e4?`10-30s`:`gte30s`}function Re(e,t=`unknown`){try{if(e?.name===`AbortError`)return`aborted`;if(j.has(e?.exportFailureCode))return e.exportFailureCode}catch{}return j.has(t)?t:`unknown`}function ze(e,t={}){let n=!1,r=null,i=NaN,a=()=>performance.now(),o=$,s=()=>{try{return a()}catch{return NaN}},c=(e,t)=>{try{Promise.resolve(o(e,J(e,t))).catch(()=>{})}catch{}};try{a=t.now??a,o=t.capture??o;let n=[...globalThis.crypto.getRandomValues(new Uint8Array(16))].map(e=>e.toString(16).padStart(2,`0`)).join(``);r={...J(`export:attempt_started`,e),attempt_id:n},i=s(),c(`export:attempt_started`,r)}catch{r=null}let l=(e,t,a)=>{if(!n&&(n=!0,r))try{let n={...r,duration_bucket:Y(s()-i)};e===`failed`&&(n.failure_code=Re(t,a),n.failure_code===`aborted`&&(e=`cancelled`)),c(`export:attempt_${e}`,n)}catch{}};return{succeed(){l(`succeeded`)},fail(e,t=`unknown`){l(`failed`,e,t)}}}var Be=[`$current_url`,`$initial_current_url`,`$referrer`,`$initial_referrer`],Ve=[`utm_source`,`utm_medium`,`utm_campaign`,`utm_content`,`utm_term`,`gad_source`,`mc_cid`,`gclid`,`gclsrc`,`dclid`,`gbraid`,`wbraid`,`fbclid`,`msclkid`,`twclid`,`li_fat_id`,`igshid`,`ttclid`,`rdt_cid`,`epik`,`qclid`,`sccid`,`irclid`,`_kx`,`ph_keyword`];function He(e){return typeof e==`string`?e.split(`#`)[0].split(`?`)[0]:e}function Ue(e){if(!e||typeof e!=`object`||!e.properties)return e;let t=[e.properties,e.properties.$set,e.properties.$set_once,e.$set,e.$set_once].filter(e=>e&&typeof e==`object`&&!Array.isArray(e));for(let e of t){for(let t of Be)typeof e[t]==`string`&&(e[t]=He(e[t]));for(let t of Ve)delete e[t],delete e[`$initial_${t}`];for(let t of Object.keys(e))t.startsWith(`$session_entry_`)&&delete e[t]}return e}function We(e){return e?.activationTracked!==!0}function X(){return F?!0:Z()?.distribution===`npm`?Z()?.telemetryEnabled!==!0:G(T)===`1`}function Ge(){try{let e=W();if(!e)return;let t=[];for(let n=0;n<e.length;n+=1){let r=e.key(n);r&&r.startsWith(`ph_`)&&r.endsWith(`_posthog`)&&t.push(r)}for(let n of t)e.removeItem(n)}catch{}}async function Ke(e){if(Z()?.distribution!==`npm`)return{ok:!0,enabled:e};try{let t=await fetch(`/__cozyclay/telemetry`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:e})});if(!t.ok)return{ok:!1,enabled:!e};let n=await t.json();return globalThis.__COZYCLAY_RUNTIME__=n,{ok:!0,enabled:n.telemetryEnabled===!0}}catch{return{ok:!1,enabled:!e}}}async function qe(e){let t=e===!0,n=Z()?.distribution===`npm`;F=t;let r=await Ke(!t);if(F=!1,!r.ok)return X();let i=!r.enabled;if(K(T,i?`1`:`0`),i&&Ge(),n&&!i)return globalThis.location?.reload(),!1;if(!M&&!i&&await $e(),!M)return i;try{i?(P=!1,M.opt_out_capturing()):(M.opt_in_capturing(),P=N)}catch{P=!1}return i}function Je(){return{BASE_URL:`/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_COZYCLAY_LIVE_PORT:`5184`,VITE_DEMO_PROMPT_MAX_CHARS:`500`}}function Z(){let e=globalThis.__COZYCLAY_RUNTIME__;return!e||typeof e!=`object`||Array.isArray(e)?null:e}function Ye(e){try{let t=new URL(e);return t.protocol===`http:`&&t.hostname===`127.0.0.1`}catch{return!1}}function Xe({env:e=Je(),origin:t=globalThis.location?.origin??``,runtime:n=Z()}={}){return e.PROD?n?.distribution===`npm`?n.telemetryEnabled===!0?Ye(t)?typeof n.apiKey!=`string`||n.apiKey.length===0?{kind:`disabled`,reason:`no key`}:typeof n.installationId!=`string`||!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n.installationId)?{kind:`disabled`,reason:`invalid anonymous identity`}:{kind:`enabled`,distribution:`npm`,apiKey:n.apiKey,apiHost:n.apiHost||`https://t.cozyclay.org`,appVersion:n.appVersion||null,installationId:n.installationId,firstLaunch:n.firstLaunch===!0,firstLaunchHeardFrom:k.has(n.firstLaunchHeardFrom)?n.firstLaunchHeardFrom:null,installKind:[`npx`,`global`,`clone`].includes(n.installKind)?n.installKind:`npx`,originKind:`local`,internalQa:n.internalQa===!0}:{kind:`disabled`,reason:`unapproved origin`}:{kind:`disabled`,reason:`opted out`}:e.VITE_POSTHOG_KEY?Oe(t,De(e.VITE_POSTHOG_ALLOWED_ORIGINS))?{kind:`enabled`,distribution:`hosted`,apiKey:e.VITE_POSTHOG_KEY,apiHost:e.VITE_POSTHOG_HOST||`https://us.i.posthog.com`,appVersion:e.VITE_APP_VERSION||null,installationId:null,firstLaunch:!1,firstLaunchHeardFrom:null,installKind:null,originKind:`hosted`,internalQa:G(E)===`1`}:{kind:`disabled`,reason:`unapproved origin`}:{kind:`disabled`,reason:`no key`}:{kind:`disabled`,reason:`not production`}}function Ze(e){return{distribution:e.distribution,...e.appVersion?{app_version:e.appVersion}:{},origin_kind:e.originKind,os:Le(),...e.installKind?{install_kind:e.installKind}:{},internal_qa:e.internalQa}}function Qe(e){let t=Xe({env:e});return t.kind===`disabled`?t.reason:X()?`opted out`:null}async function $e(){if(N||I)return I;if(Z()?.distribution!==`npm`){let e=new URLSearchParams(globalThis.location?.search??``).getAll(`internal_qa`);e.length===1&&(e[0]===`1`||e[0]===`0`)&&K(E,e[0])}let e=Je(),t=Qe(e);if(t){Ee||=(console.info(`[analytics] disabled: `+t),!0);return}I=(async()=>{try{let t=await ge(()=>import(`./module-MzlRiBjI.js`),[]);if(X())return;let n=Xe({env:e});if(n.kind===`disabled`)return;M=t.default??t,M.init(n.apiKey,{api_host:n.apiHost,defaults:`2025-05-24`,autocapture:!1,capture_pageview:!1,capture_pageleave:!1,person_profiles:`never`,persistence:n.distribution===`npm`?`memory`:`localStorage`,respect_dnt:!0,disable_session_recording:!0,capture_dead_clicks:!1,capture_performance:!1,disable_capture_url_hashes:!0,save_campaign_params:!1,save_referrer:!1,mask_personal_data_properties:!0,request_batching:!1,advanced_disable_feature_flags:!0,disable_external_dependency_loading:!0,disable_surveys:!0,ui_host:`https://us.posthog.com`,bootstrap:n.installationId?{distinctID:n.installationId,isIdentifiedID:!1}:void 0,before_send:Ue}),N=!0,P=!0;let r=Ze(n);if(M.register(r),globalThis.__cozyclayAnalytics={instance:M},M.capture(`$pageview`),R=Date.now(),tt(n,r),n.distribution===`npm`){if($(`app:session_started`),Q(),n.firstLaunch){let e=n.firstLaunchHeardFrom;$(`install:first_launch`,e?{heard_from:e}:{})}}else Q()}catch{console.info(`[analytics] initialization failed`)}})(),await I}async function Q(){let e=null;try{let t=await fetch(`/ardy/health`,{signal:AbortSignal.timeout(5e3)});t.ok&&(e=await t.json())}catch{}$(`motion:backend_state`,Ae(e))}function $(e,t={}){if(!(!N||!P||!M))try{if(X())return;let n=J(e,t);e!==`app:session_started`&&e!==`app:session_ended`&&e!==`install:first_launch`&&(z+=1,(e===`scene:created`||e===`scene:loaded`)&&(B+=1)),M.capture(e,n)}catch{}}function et(e){return!N||!P||!M||!O.has(e)||U.has(e)?!1:(U.add(e),$(`feature:used`,{name:e}),!0)}function tt(e,t){if(H||typeof window>`u`)return;H=!0;let n=()=>{if(!(V||!R)){V=!0;try{if(!P||!M||X()||M.has_opted_out_capturing())return;let n={api_key:e.apiKey,event:`app:session_ended`,properties:{...t,distinct_id:M.get_distinct_id(),duration_bucket:Fe(Date.now()-R),action_count_bucket:Pe(z),scenes_touched:Math.min(20,B)}},r=JSON.stringify(n),i=`${e.apiHost.replace(/\/$/,``)}/e/`;typeof globalThis.navigator?.sendBeacon==`function`?globalThis.navigator.sendBeacon(i,new Blob([r],{type:`application/json`})):fetch(i,{method:`POST`,body:r,keepalive:!0,headers:{"content-type":`application/json`}})}catch{}}};window.addEventListener(`pagehide`,n,{once:!0}),window.addEventListener(`beforeunload`,n,{once:!0})}function nt(e){if(!(!N||!P||L)){if(!We({activationTracked:G(D)===`1`})){L=!0;return}L=!0,K(D,`1`),$(`activation:completed`,{activation_path:e})}}export{ee as A,se as C,d as D,u as E,p as M,c as O,g as S,e as T,nt as _,Pe as a,fe as b,Re as c,je as d,J as f,$ as g,Ne as h,w as i,l as j,h as k,X as l,ze as m,ve as n,Y as o,qe as p,C as r,Ie as s,S as t,$e as u,et as v,_ as w,oe as x,de as y};
@@ -1 +0,0 @@
1
- .physics-review{border-top:1px solid var(--border,#40444c);margin-top:12px;padding-top:12px}.physics-review h4{margin:0 0 8px;font-size:13px}.physics-review h4 small{opacity:.7;font-weight:400}.physics-review fieldset{border:0;min-width:0;margin:0;padding:0}.physics-review label{font-size:12px;display:block}.physics-review label output{float:right}.physics-review input[type=range],.physics-review progress{width:100%}.physics-review input[type=range]{background:#626b77;margin:12px 0 16px;display:block}.physics-review summary{cursor:pointer;padding:10px 0;font-size:12px}.physics-contact-editor{grid-template-columns:1fr 1fr;gap:6px;display:grid}.physics-contact-editor input,.physics-contact-editor select{width:100%;min-width:0;color:inherit;background:var(--panel,#25272d);border:1px solid var(--border,#50535c);border-radius:4px;padding:5px}.physics-actions{gap:6px;margin:8px 0;display:flex}.physics-actions>button{flex:1}.physics-row{justify-content:space-between;align-items:center;gap:4px;margin:4px 0;font-size:11px;display:flex}.physics-review table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:10px}.physics-review th,.physics-review td{text-align:right;border-bottom:1px solid #8883;padding:5px 2px}.physics-review th:first-child,.physics-review td:first-child{text-align:left}.physics-list{max-height:170px;overflow:auto}.physics-warning{border:1px solid #cc924e;border-radius:5px;margin-top:8px;padding:8px;font-size:11px}@font-face{font-family:Inter;font-style:normal;font-weight:400 800;font-display:swap;src:url(../fonts/inter-latin.woff2)format("woff2")}:root{--bg:#1e1e1e;--bg-grad:linear-gradient(145deg, #1e1e1e 0%, #1e1e1e 100%);--panel:#2c2c2c;--card:#383838;--card2:#ffffff0a;--hover:#ffffff0f;--line:#1a1a1a;--line2:#3c3c3c;--track:#3a3a3a;--fg:#d2d2d2;--muted:#9a9a9a;--muted2:#6f6f6f;--accent:#3a7cbf;--accent-2:#2d5c8a;--cyan:#5a9bd4;--accent-soft:#2d5c8a59;--accent-ring:#3a7cbf80;--on-accent:#fff;--grad:linear-gradient(103deg, #2d5c8a 0%, #2d5c8a 100%);--grad-soft:linear-gradient(103deg, #2d5c8a, #3a7cbf);--display:"Inter", "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;--sans:"Inter", "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--radius:2px;--shadow:0 1px 2px #0006;--shadow-md:0 5px 16px #00000080;--shadow-lg:0 14px 34px #0009;--glow:0 0 0 1px #3a7cbf73;--ease:cubic-bezier(.22, .68, .2, 1);--spring:cubic-bezier(.34, 1.4, .5, 1);--fast:.14s;--med:.26s;--agent-touch:2s}*{box-sizing:border-box}.crash-screen{background:var(--bg);min-height:100vh;font-family:var(--sans);justify-content:center;align-items:center;padding:24px;display:flex}.crash-card{background:var(--panel);border:1px solid var(--line2);max-width:440px;color:var(--fg);text-align:center;border-radius:10px;padding:28px}.crash-card h1{margin-bottom:12px;font-size:20px;font-weight:700}.crash-card p{color:var(--muted);margin-bottom:14px;font-size:14px;line-height:1.6}.crash-card code{background:var(--card);border:1px solid var(--line);font-family:var(--mono);color:#e08a7a;text-align:left;word-break:break-all;border-radius:6px;margin-bottom:18px;padding:10px;font-size:11px;display:block}.crash-card button{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:6px;padding:9px 22px;font-size:14px;font-weight:600}.crash-card button:hover{filter:brightness(1.12)}body,#root{height:100%;margin:0;overflow-x:hidden}body{background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;letter-spacing:0;font-size:13px;font-weight:450;line-height:1.4}button,input,textarea,select{letter-spacing:inherit;font-family:inherit}::-webkit-scrollbar-thumb{border:3px solid var(--panel);background:#4a4a4a;border-radius:8px}.app{flex-direction:column;width:100%;height:100vh;display:flex;overflow:hidden}.topbar{border-bottom:1px solid var(--line);background:#232323f7;flex:none;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:20px;height:48px;padding:0 16px;display:grid;position:relative}.topbar:after{display:none}.app.render-idle .topbar:after{animation-play-state:paused}.logo{justify-self:start;align-items:center;display:flex}.topbar-actions{grid-column:3;justify-self:end;align-items:center;gap:6px;display:flex}.project-actions{border-right:1px solid var(--line2);align-items:center;gap:5px;margin-right:4px;padding-right:10px;display:inline-flex}.topbar-action{border:1px solid var(--line2);background:var(--card2);min-height:28px;color:var(--fg);cursor:pointer;border-radius:5px;padding:3px 10px;font-size:12px;font-weight:650}.workflow-topbar-link{align-items:center;text-decoration:none;display:inline-flex}.topbar-action:hover:not(:disabled){border-color:var(--accent);background:var(--hover)}.topbar-action:disabled{opacity:.55;cursor:not-allowed}.project-save-action{background:var(--accent);border-color:var(--accent);color:#20180d}.project-save-action:hover:not(:disabled){background:#f2c56d;border-color:#f2c56d}.project-export-action.recording{color:#ffb1b1;border-color:#e87878}.project-save-status{min-width:74px;color:var(--muted2);white-space:nowrap;font-size:11px}.project-save-status.status-dirty,.project-save-status.status-error{color:#f5b453}.project-save-status.status-saving{color:#79c0ff}.project-menu-wrap{align-self:center;margin-left:14px;position:relative}.project-menu-trigger{border:1px solid var(--line2);background:var(--card2);color:var(--fg);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-radius:8px;align-items:center;gap:6px;max-width:300px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex;overflow:hidden}.project-menu-trigger:hover{border-color:var(--accent)}.project-menu-trigger .caret{color:var(--muted2);font-size:10px}.project-dirty-dot{background:#f5b453;border-radius:50%;flex:none;width:8px;height:8px}.project-menu{z-index:60;background:var(--panel);border:1px solid var(--line2);border-radius:10px;flex-direction:column;min-width:200px;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 8px 30px #00000080}.project-menu button{text-align:left;color:var(--fg);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:8px 10px;font-size:12px}.project-menu button:hover{background:var(--hover)}.hierarchy-project{border-bottom:1px solid var(--line);align-items:center;gap:7px;padding:9px 12px 8px;display:flex}.hierarchy-project-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted2);font-size:10px;font-weight:700}.hierarchy-project strong{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12.5px;overflow:hidden}.project-browser-backdrop{z-index:200;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.project-browser-backdrop.startup{pointer-events:none;background:linear-gradient(#0a0c10c7,#0a0c1061)}.project-browser{background:var(--panel);border:1px solid var(--line2);border-radius:14px;flex-direction:column;gap:14px;width:min(560px,92vw);max-height:80vh;padding:16px;display:flex;overflow-y:auto;box-shadow:0 16px 60px #0009}.project-browser.startup{pointer-events:auto;width:min(620px,92vw);box-shadow:0 22px 80px #000000b3}.project-browser-intro{color:var(--muted);margin:-4px 0 2px;font-size:12px;line-height:1.55}.beginner-start{border:1px solid color-mix(in srgb, var(--accent) 34%, var(--line2));background:color-mix(in srgb, var(--accent) 7%, var(--panel));border-radius:12px;gap:16px;padding:16px;display:grid}.beginner-start-actions{align-items:center;gap:10px;display:flex}.beginner-create{min-height:42px;padding-inline:18px;font-size:13px}.beginner-open{min-height:42px}.beginner-step-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.beginner-step{border:1px solid var(--line2);background:color-mix(in srgb, var(--panel) 82%, transparent);border-radius:9px;grid-template-columns:auto 1fr;gap:2px 8px;padding:10px;display:grid}.beginner-step b{background:var(--accent);color:#fff;border-radius:50%;grid-row:span 2;place-items:center;width:22px;height:22px;font-size:11px;display:grid}.beginner-step strong{font-size:12px}.beginner-step span{color:var(--muted);font-size:10.5px;line-height:1.35}@media (width<=620px){.beginner-step-grid{grid-template-columns:1fr}.beginner-start-actions{flex-direction:column;align-items:stretch}}.project-name-dialog-backdrop{z-index:260;background:#0000009e;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.project-name-dialog{background:var(--panel);border:1px solid var(--line2);border-radius:12px;flex-direction:column;gap:14px;width:min(360px,88vw);padding:18px;display:flex;box-shadow:0 20px 70px #000000b3}.project-name-dialog label{color:var(--muted);flex-direction:column;gap:6px;font-size:11px;display:flex}.project-name-dialog input{box-sizing:border-box;border:1px solid var(--line2);background:var(--card2);width:100%;color:var(--fg);font:inherit;border-radius:7px;padding:9px 10px;font-size:13px}.project-name-dialog input:focus{border-color:var(--accent);outline:2px solid var(--accent-soft)}.project-name-dialog-actions{justify-content:flex-end;gap:8px;display:flex}.first-success-guide{z-index:70;background:color-mix(in srgb, var(--panel) 96%, #101218);border:1px solid var(--accent);width:min(330px,100vw - 36px);animation:rise .28s var(--ease) both;border-radius:14px;padding:16px;position:fixed;bottom:208px;right:18px;box-shadow:0 18px 58px #00000094,0 0 0 1px #ffffff0a}.first-success-guide-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.first-success-guide-head>div{flex-direction:column;gap:4px;display:flex}.first-success-guide-head strong{letter-spacing:-.01em;font-size:15px}.first-success-guide-head span{color:var(--accent);letter-spacing:.07em;text-transform:uppercase;font-size:10px;font-weight:700}.first-success-guide-close{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 3px;font-size:19px;line-height:1}.first-success-guide-close:hover,.first-success-guide-close:focus-visible{color:var(--fg)}.first-success-guide-intro{color:var(--muted);margin:12px 0 10px;font-size:11.5px;line-height:1.45}.first-success-guide-steps{flex-direction:column;gap:6px;margin:0 0 14px;padding:0;list-style:none;display:flex}.first-success-guide-steps li{color:var(--muted);border:1px solid #0000;border-radius:8px;align-items:flex-start;gap:9px;padding:8px;font-size:11.5px;line-height:1.35;display:flex}.first-success-guide-steps li.current{background:color-mix(in srgb, var(--accent) 10%, transparent);border-color:color-mix(in srgb, var(--accent) 35%, transparent);color:var(--fg)}.first-success-guide-steps li.done{color:var(--fg);opacity:.72}.first-success-guide-steps li strong,.first-success-guide-steps li span{display:block}.first-success-guide-steps li span{color:var(--muted);margin-top:3px;font-size:10.5px}.first-success-guide-step-mark{border:1px solid var(--line2);border-radius:50%;flex:0 0 18px;justify-content:center;align-items:center;width:18px;height:18px;margin-top:1px;font-weight:700;font-size:10px!important;display:inline-flex!important}.first-success-guide-steps li.current .first-success-guide-step-mark{border-color:var(--accent);color:var(--accent)}.first-success-guide-steps li.done .first-success-guide-step-mark{color:#65c18c;border-color:#65c18c}.first-success-guide-next{width:100%}.first-success-guide-skip{width:100%;color:var(--muted);cursor:pointer;background:0 0;border:0;margin-top:9px;padding:3px;font-size:10px;display:block}.first-success-guide-skip:hover,.first-success-guide-skip:focus-visible{color:var(--fg)}.first-success-guide-complete{text-align:center;flex-direction:column;align-items:center;gap:8px;padding-top:18px;display:flex}.first-success-guide-check{color:#65c18c;background:#65c18c22;border-radius:50%;place-items:center;width:38px;height:38px;font-size:22px;font-weight:700;display:grid}.first-success-guide-complete p{color:var(--muted);margin:0 0 6px;font-size:11.5px;line-height:1.5}.camera-tutorial-handoff{pointer-events:auto;flex-wrap:wrap;align-items:center;gap:8px;padding-top:8px;display:flex}.camera-tutorial-handoff strong,.camera-tutorial-handoff p{flex-basis:100%;margin:0}.camera-tutorial-handoff .btn,.camera-tutorial-handoff-dismiss{font:inherit;cursor:pointer;padding:6px 10px;font-size:11px}.camera-tutorial-handoff-dismiss{border:1px solid var(--line2);color:var(--fg);background:0 0}.camera-tutorial-handoff button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (width<=700px){.first-success-guide{width:min(330px,100vw - 20px);bottom:202px;right:10px}}.project-browser-head{justify-content:space-between;align-items:center;font-size:15px;display:flex}.project-browser-head .x{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:2px 6px;font-size:16px}.project-browser section{flex-direction:column;gap:6px;display:flex}.project-browser-section-head{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);justify-content:space-between;align-items:center;font-size:11px;font-weight:700;display:flex}.project-browser-section-head .row-actions{gap:6px;display:flex}.project-browser-section-head button{border:1px solid var(--line2);color:var(--fg);cursor:pointer;background:0 0;border-radius:6px;padding:2px 8px;font-size:10px}.project-browser-empty{color:var(--muted2);background:var(--card2);border-radius:8px;padding:8px 10px;font-size:11px}.project-browser-list{flex-direction:column;gap:3px;margin:0;padding:0;list-style:none;display:flex}.project-browser-list li{align-items:stretch;gap:4px;display:flex}.project-browser-list li>button:first-child{border:1px solid var(--line);background:var(--card2);color:var(--fg);cursor:pointer;text-align:left;border-radius:8px;flex:1;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;font-size:12px;display:flex}.project-browser-list li>button:first-child span{color:var(--muted2);flex:none;font-size:10px}.project-browser-list li.active>button:first-child,.project-browser-list li>button:first-child:hover{border-color:var(--accent)}.project-browser-list .del{color:var(--muted2);cursor:pointer;background:0 0;border:none;padding:0 6px;font-size:11px}.project-browser-foot{justify-content:space-between;gap:8px;display:flex}.project-browser-foot .btn{flex:1}.auto-color-hex{color:var(--fg-dim,#9a9a9a);font-variant-numeric:tabular-nums;align-self:center;font-size:10px}.toolbar-balance{min-width:0}.wordmark{font-family:var(--display);color:#d2d2d2;letter-spacing:-.045em;font-size:18px;font-weight:750;line-height:1}.wordmark span{color:#3c91a8}.brandbar{border-top:1px solid var(--line);background:#232323f7;flex:none;align-items:center;height:32px;padding:0 14px;display:flex;position:relative}.brandbar:before{content:"";background:#3a7cbf;width:46px;height:2px;position:absolute;top:-1px;left:14px}.brandbar .wordmark{letter-spacing:-.035em;font-size:14px}.source-offer{color:var(--muted);margin-left:auto;font-size:11px;text-decoration:none}.source-offer:hover,.source-offer:focus-visible{color:var(--fg);text-decoration:underline}.tagline{color:var(--muted);padding-left:17px;font-size:12.5px;position:relative}.tagline:before{content:"";background:var(--line2);width:1px;height:18px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.controls-menu{z-index:20;justify-self:end;position:relative}.controls-menu summary{color:#52616b;letter-spacing:.02em;cursor:pointer;-webkit-user-select:none;user-select:none;background:#2c2c2c;border:1px solid #ffffff3d;border-radius:6px;align-items:center;gap:7px;height:30px;padding:0 10px 0 12px;font-size:10px;font-weight:700;list-style:none;display:flex}.controls-menu summary::-webkit-details-marker{display:none}.controls-menu summary span{transition:transform var(--fast) var(--ease);font-size:12px;line-height:1}.controls-menu[open] summary{color:#d2d2d2;background:#383838;border-color:#3a7cbf}.controls-menu[open] summary span{transform:rotate(180deg)}.controls-popover{background:#2c2c2c;border:1px solid #ffffff3d;border-radius:8px;width:250px;padding:12px;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 12px 30px #00000029}.controls-grid{grid-template-columns:max-content 1fr;align-items:center;gap:8px 12px;display:grid}.controls-grid kbd{color:#d2d2d2;min-width:46px;font:650 9px var(--mono);text-align:center;background:#232323;border:1px solid #ffffff38;border-bottom-width:2px;border-radius:4px;padding:3px 6px}.controls-grid span,.controls-popover p{color:#9a9a9a;font-size:10.5px;line-height:1.35}.controls-popover p{margin:0}.controls-popover p strong{color:#d2d2d2;text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px;font-size:10px;display:block}.main{flex-direction:column;flex:1;min-height:0;display:flex}.workspace{flex:1;min-height:0;display:flex}.viewport{background:var(--bg-grad);flex:1;justify-content:stretch;align-items:stretch;min-width:0;padding:0;display:flex;position:relative;overflow:hidden}.viewport:before{content:"";pointer-events:none;filter:blur(10px);background:radial-gradient(circle at 70% 30%,#3a7cbf1c,#0000 62%);width:55%;height:70%;position:absolute;top:-10%;right:0}.stage{aspect-ratio:auto;width:100%;max-width:100%;height:100%;max-height:100%;box-shadow:var(--shadow-md);animation:stageIn .7s var(--ease) both;border:1px solid #ffffff61;border-radius:0;position:relative;overflow:hidden}.stage canvas{cursor:grab;outline:none;display:block;width:100%!important;height:100%!important}.stage canvas:active{cursor:grabbing}.app[data-embed-mode=playview]{width:100vw;min-width:0;height:100vh;overflow:hidden}.app[data-embed-mode=playview] .topbar,.app[data-embed-mode=playview] .brandbar,.app[data-embed-mode=playview] .asset-delete-toast,.app[data-embed-mode=playview] .hierarchy-left,.app[data-embed-mode=playview] .hierarchy-sidebar,.app[data-embed-mode=playview] .workspace-splitter,.app[data-embed-mode=playview] .viewport-titlebar,.app[data-embed-mode=playview] .bottom-window,.app[data-embed-mode=playview] .agent-panel{display:none}.app[data-embed-mode=playview] .main,.app[data-embed-mode=playview] .workspace,.app[data-embed-mode=playview] .viewport{width:100%;height:100%;min-height:0}.app[data-embed-mode=playview] .workspace{display:block}.app[data-embed-mode=playview] .stage{width:100%;height:100%;position:absolute;inset:0}.app[data-embed-mode=playground]{width:100vw;min-width:0;height:100vh;overflow:hidden}.app[data-embed-mode=playground] .topbar,.app[data-embed-mode=playground] .brandbar,.app[data-embed-mode=playground] .asset-delete-toast,.app[data-embed-mode=playground] .hierarchy-left,.app[data-embed-mode=playground] .hierarchy-sidebar,.app[data-embed-mode=playground] .workspace-splitter,.app[data-embed-mode=playground] .bottom-window-tabs,.app[data-embed-mode=playground] .take-bar,.app[data-embed-mode=playground] .tl-pose-tools,.app[data-embed-mode=playground] .tl-motion-tools,.app[data-embed-mode=playground] .tl-badge,.app[data-embed-mode=playground] .tl-toggle,.app[data-embed-mode=playground] .tl-track:not(.shots),.app[data-embed-mode=playground] .vp-inset-tag:not(.vp-shot-preview-tag){display:none}.app[data-embed-mode=playground] .tl-view-tools,.app[data-embed-mode=playground] .viewport-titlebar .workflow-mode-switch,.app[data-embed-mode=playground] .viewport-titlebar .editor-toolbar,.app[data-embed-mode=playground]:not([data-rail-draw="1"]) .vp-inset.plan{display:none!important}.app[data-embed-mode=playground][data-rail-draw="1"] .vp-inset.plan{width:44%!important;height:62%!important}.app[data-embed-mode=playground] .bottom-window,.app[data-embed-mode=playground] .bottom-timeline{flex:none;min-height:0;height:auto!important}.app[data-embed-mode=playground] .timeline,.app[data-embed-mode=playground] .timeline.empty-shots{max-height:none;height:auto!important;min-height:0!important}.app[data-embed-mode=playground] .tl-body{flex:none;overflow:hidden;height:auto!important;min-height:0!important}.app[data-embed-mode=playground] .tl-surface{min-height:0;grid-template-rows:auto auto!important;height:auto!important}.app[data-embed-mode=playground] .tl-track.shots{height:68px;min-height:68px}.app[data-embed-mode=playground] .tl-head{padding:6px 10px}.app[data-embed-mode=playground] .viewport{flex:auto}.app[data-embed-mode=playground] .vp-shot-preview{aspect-ratio:16/9;bottom:12px;right:12px;width:22%!important;height:auto!important}.app[data-embed-mode=playground] .vp-shot-preview-tag{font-size:12px}.app[data-embed-mode=playground] .vp-look-through{width:24px;height:24px}.app[data-embed-mode=playground] .vp-look-through svg{width:15px;height:15px}.app[data-playground-hint=look] .vp-look-through,.app[data-playground-hint=shot] .tl-track.shots .tl-track-add,.app[data-playground-hint=rail] .tl-track.shots .tl-shot-block:not(.selected),.app[data-playground-hint=rail] .tl-rail-draw,.app[data-playground-hint=play] .tl-transport button:nth-child(2){animation:1.1s ease-in-out infinite playground-pulse;box-shadow:0 0 0 2px #d9a066}@keyframes playground-pulse{0%,to{box-shadow:0 0 0 2px #d9a066}50%{box-shadow:0 0 0 7px #d9a06600}}.app[data-tutorial-step=shot] .tl-track.shots .tl-track-add,.app[data-tutorial-step=rail] .tl-track.shots .tl-shot-block:not(.selected),.app[data-tutorial-step=rail] .tl-rail-draw,.app[data-tutorial-step=play] .vp-look-through{animation:tutorial-spotlight 1.5s var(--ease) infinite;box-shadow:0 0 0 3px var(--accent)}.app[data-tutorial-step=rail] .vp-inset{box-shadow:0 10px 30px #00000073, 0 0 0 2px var(--accent-ring)}@keyframes tutorial-spotlight{0%,to{box-shadow:0 0 0 3px var(--accent), 0 0 0 0 #3a7cbf73}50%{box-shadow:0 0 0 3px var(--accent), 0 0 0 8px #3a7cbf00}}.vp-pane{z-index:5;pointer-events:none;position:absolute}.vp-main{inset:0}.vp-inset{aspect-ratio:1;width:26%;min-width:225px;max-width:350px;animation:rise var(--med) var(--ease) both;border-radius:11px;top:60px;right:15px;overflow:hidden;box-shadow:0 10px 30px #00000073,0 0 0 1px #ffffff1f}.vp-shot-preview{width:21%;min-width:200px;max-width:330px;aspect-ratio:var(--shot-aspect,16 / 9);animation:rise var(--med) var(--ease) both;border-radius:9px;top:auto;bottom:16px;right:15px;overflow:hidden;box-shadow:0 12px 32px #00000080,0 0 0 1px #0005,inset 0 0 0 1px #ffffff14}.vp-shot-preview-tag{cursor:default;align-items:center;gap:5px;display:inline-flex}.vp-rec-dot{background:#e5484d;border-radius:50%;flex:none;width:6px;height:6px;box-shadow:0 0 0 1.5px #e5484d33}.vp-look-through{pointer-events:auto;cursor:pointer;color:inherit;opacity:.85;font:inherit;letter-spacing:.06em;text-transform:uppercase;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;gap:4px;margin:-2px -2px -2px 0;padding:2px 5px;font-size:9px;font-weight:700;display:inline-flex}.vp-look-through:hover{opacity:1;color:var(--accent)}.vp-pane.plan{pointer-events:auto}.vp-inset.shot{aspect-ratio:var(--shot-aspect,16 / 9)}.vp-inset-tag{border:1px solid var(--line2);color:#cfd2da;letter-spacing:.1em;text-transform:uppercase;pointer-events:auto;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;background:#0e0d10d9;border-radius:6px;padding:3px 8px;font-size:9.5px;font-weight:600;position:absolute;top:7px;left:8px}.vp-inset-tag:active{cursor:grabbing}.vp-inset-caret{opacity:.75;cursor:pointer;margin-right:3px;font-size:9px}.vp-inset-caret:hover{opacity:1;color:var(--accent)}.vp-inset-zoom{opacity:.75;margin-left:4px;font-size:9px;font-style:normal}.vp-inset.collapsed{aspect-ratio:auto;align-items:center;min-width:0;min-height:0;padding:4px;display:flex;overflow:visible;box-shadow:0 6px 18px #0000004d;width:auto!important;height:auto!important}.vp-inset.collapsed .vp-inset-tag{position:static}.scene-loading{z-index:4;pointer-events:none;flex-direction:column;align-items:center;gap:8px;padding:0 0 26px;display:flex;position:absolute;inset:auto 0 0}.scene-loading-bar{background:var(--track);border-radius:2px;width:180px;height:2px;overflow:hidden}.scene-loading-bar span{background:var(--accent);height:100%;transition:width .25s var(--ease);display:block}.scene-loading-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:11px}.scene-error{z-index:5;text-align:center;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:24px;display:flex;position:absolute;inset:0}.scene-error-title{color:var(--fg);font-size:15px;font-weight:600}.scene-error-hint{color:var(--muted);max-width:320px;font-size:13px}.shot-guides{pointer-events:none;z-index:3;position:absolute;inset:0}.shot-guides svg{width:100%;height:100%;display:block}.shot-guides line,.shot-guides rect{stroke:#ffffff57;stroke-width:1px;fill:none}.shot-guides rect.guide-action{stroke:#7ee7c466}.shot-guides rect.guide-title{stroke:#80b0ff75}.vp-guide-cycle{color:#ffffff80;cursor:pointer;background:0 0;border:0;border-radius:3px;align-items:center;padding:1px 2px;display:inline-flex}.vp-guide-cycle:hover{color:#fff}.vp-guide-cycle.on{color:#7ee7c4}.film-frame{pointer-events:none;z-index:4;position:absolute;inset:16px}.film-frame span{border:1.5px solid #ffffff4d;width:17px;height:17px;position:absolute}.film-frame span:first-child{border-bottom:0;border-right:0;border-top-left-radius:4px;top:0;left:0}.film-frame span:nth-child(2){border-bottom:0;border-left:0;border-top-right-radius:4px;top:0;right:0}.film-frame span:nth-child(3){border-top:0;border-left:0;border-bottom-right-radius:4px;bottom:0;right:0}.film-frame span:nth-child(4){border-top:0;border-right:0;border-bottom-left-radius:4px;bottom:0;left:0}.hud,.caption,.viewmode{-webkit-backdrop-filter:blur(14px)saturate(1.2);background:#0e0e108c;border:1px solid #ffffff1a}.hud{z-index:6;color:#eeeef2;animation:rise var(--med) var(--ease) both;border-radius:9px;align-items:center;gap:7px;padding:6px 12px;font-size:11.5px;font-weight:500;display:flex;position:absolute;top:15px;left:16px}.caption{z-index:6;pointer-events:none;color:#fff;letter-spacing:.12em;animation:riseCenter var(--med) var(--ease) both;border-radius:9px;padding:7px 16px;font-size:11px;font-weight:600;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.caption.off{color:#ffc9cb;background:#e5484d2e;border-color:#e5484d80}.viewmode{border-radius:7px;justify-self:center;gap:2px;padding:3px;animation:none;display:flex;position:static}.viewmode button{color:#dcdce2;cursor:pointer;height:26px;transition:all .16s var(--ease);background:0 0;border:none;border-radius:5px;padding:0 12px;font-size:10px;font-weight:700}.viewmode button.active{background:var(--grad);color:#fff;box-shadow:0 3px 12px #3346ff66}.puck-label{pointer-events:none;border:1px solid var(--line2);color:#fff;white-space:nowrap;-webkit-user-select:none;user-select:none;font-size:11px;font-weight:600;font-family:var(--sans);background:#0e0d10d9;border-radius:20px;padding:3px 10px;box-shadow:0 2px 8px #0006}.pose-fab{font-family:var(--sans);color:#fff;background:var(--grad);cursor:pointer;white-space:nowrap;box-shadow:var(--glow), 0 4px 14px #0006;transition:transform .14s var(--spring), box-shadow .15s ease;animation:fabPop .28s var(--spring) both;border:none;border-radius:22px;padding:8px 16px;font-size:12.5px;font-weight:600}.pose-fab:hover{transform:translateY(-2px)scale(1.03);box-shadow:0 10px 30px #3346ff80}.pose-fab:active{transform:scale(.96)}.pose-bar{gap:8px;display:flex}.pose-btns{flex-direction:column;gap:8px;display:flex}.pose-btns .btn.full{margin-top:0}.pose-studio{z-index:12;border:1px solid var(--line2);width:344px;box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(16px)saturate(1.2);font-family:var(--sans);animation:studioIn .34s var(--spring) both;background:#16161adb;border-radius:18px;flex-direction:column;gap:11px;padding:16px;display:flex;position:absolute;top:14px;bottom:14px;right:14px}.pose-studio.closing{animation:studioOut .2s var(--ease) both}.pose-studio{gap:8px;padding:10px}.pose-studio .studio-head span{font-size:13px;font-weight:650}.pose-studio .studio-actions{flex-direction:row;gap:6px}.pose-studio .studio-actions .btn{flex:1;width:auto;height:28px;padding:0 8px;font-size:11px;font-weight:600}.pose-studio .studio-hint{margin:0;font-size:10px;line-height:1.35}.pose-studio .studio-filters{scrollbar-width:none;flex-wrap:nowrap;gap:4px;overflow-x:auto}.pose-studio .studio-filters::-webkit-scrollbar{display:none}.pose-studio .studio-filters .btn{flex:none;width:auto;min-width:0;height:24px;padding:0 10px;font-size:10px}.pose-studio .pose-grid{gap:6px}.tl-chip.ghost{opacity:.42;pointer-events:none;border-style:dashed}.tl-chip-ghost-label{white-space:nowrap;text-overflow:ellipsis;padding:0 4px;font-size:9px;display:block;overflow:hidden}.tl-marker.wp.ghost{opacity:.42;pointer-events:none}.ardy-row{gap:8px;display:flex}.ardy-row>*{flex:1;min-width:0}.gen-layers{background:var(--card2,#ffffff0a);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:2px;margin:0;padding:4px 6px;list-style:none;display:flex}.gen-layers li{color:var(--muted);border-radius:5px;align-items:center;gap:8px;padding:2px 4px;font-size:11px;display:flex}.gen-layers li.active{color:var(--fg);background:var(--hover,#ffffff0f)}.gen-layers-name{color:var(--cyan,#5a9bd4);flex:none;width:22px;font-weight:700}.gen-layers-state{flex:1}.gen-layers-state.running{color:#f5b453}.gen-layers-state.queued{color:var(--muted2)}.gen-layers-state.error{color:#e06c6c}.gen-layers-state.loaded{color:#7bc98b}.gen-layers li button{color:var(--muted2);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:10px}.tl-track-owner{color:var(--cyan,#5a9bd4);border:1px solid var(--cyan,#5a9bd4);vertical-align:1px;border-radius:4px;margin-left:4px;padding:0 3px;font-size:9px;font-style:normal;font-weight:700}.tl-path-speed{color:#7bc98b;vertical-align:1px;margin-left:6px;font-size:9px;font-style:normal;font-weight:600}.tl-path-speed.warn{color:#f5b453}.pose-studio.docked{z-index:1;width:auto;height:min(52vh,560px);box-shadow:none;border-radius:10px;flex:none;margin:8px 10px 10px;position:relative;inset:auto}.pose-studio:before{content:"";opacity:.9;background:linear-gradient(90deg,#2b3cf5,#4d7bff 50%,#79c9ff) 0 0/200% 100%;border-radius:18px 18px 0 0;height:2px;animation:6s linear infinite stripeShift;position:absolute;top:0;left:0;right:0}.studio-head{justify-content:space-between;align-items:center;display:flex}.studio-head span{font-family:var(--display);letter-spacing:-.025em;color:var(--fg);font-size:18px;font-weight:720}.studio-head .x{color:var(--muted);cursor:pointer;transition:color var(--fast), background var(--fast);background:0 0;border:none;border-radius:8px;padding:3px 8px;font-size:17px}.studio-head .x:hover{color:var(--fg);background:var(--card2)}.studio-hint{color:var(--muted);margin:-2px 0 0;font-size:11.5px;line-height:1.45}.studio-hint.error{color:var(--warn,#ff9c6e)}.studio-actions{flex-direction:column;gap:8px;display:flex}.studio-actions .btn.full{margin-top:0}.studio-filters{flex-wrap:wrap;gap:6px;display:flex}.studio-filters .btn{flex:calc(33.333% - 4px);min-width:0;padding:6px 7px;font-size:10px}.pose-grid{flex:1;grid-template-columns:1fr 1fr 1fr;grid-auto-rows:min-content;align-content:start;gap:8px;min-height:0;margin:2px -3px 0 0;padding-right:3px;display:grid;overflow-y:auto}.pose-tile{cursor:pointer;aspect-ratio:1;background:var(--card2);border:1.5px solid var(--line);transition:border-color .16s ease, transform .16s var(--spring), box-shadow .16s ease;animation:tileIn .4s var(--ease) both;border-radius:12px;padding:0;display:block;position:relative;overflow:hidden}.pose-tile:hover{box-shadow:var(--shadow-md);border-color:#ffffff3d;transform:translateY(-3px)}.pose-tile.active{border-color:var(--accent);box-shadow:0 0 0 1.5px var(--accent), 0 6px 20px #3346ff4d}.pose-tile img,.pose-tile .tile-blank{object-fit:cover;background:#101014;width:100%;height:100%;display:block}.pose-tile span{color:#fff;text-align:center;white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 3px #000c;background:linear-gradient(#0000,#06060aeb);padding:18px 6px 7px;font-size:10px;font-weight:700;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.pose-tile.active span{color:var(--cyan)}.pose-tile .del{color:#fff;opacity:0;background:#08080cd1;border-radius:50%;justify-content:center;align-items:center;width:19px;height:19px;font-size:10px;font-style:normal;transition:opacity .14s,background .14s;display:flex;position:absolute;top:6px;right:6px}.pose-tile:hover .del{opacity:1}.pose-tile .del:hover{background:#e5484d}.pose-tile.add{border-style:dashed;border-color:var(--line2);color:var(--muted);background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:5px;display:flex}.pose-tile.add:hover{border-color:var(--accent);color:var(--cyan);background:var(--accent-soft)}.pose-tile.add span{color:inherit;text-shadow:none;background:0 0;padding:0;position:static}.pose-tile.add .add-plus{font-size:30px;font-weight:300;line-height:1}.pose-tile.add .add-text{font-size:11px;font-weight:700}.pose-tile.add.photo{border-color:color-mix(in srgb, var(--cyan) 42%, var(--line2));color:color-mix(in srgb, var(--cyan) 70%, var(--muted))}.pose-tile.add.photo .add-plus{font-size:22px}.pose-tile.add.photo.busy{opacity:.75;cursor:progress;border-style:solid}.pose-tile.add.photo:disabled:hover{border-color:color-mix(in srgb, var(--cyan) 42%, var(--line2));background:0 0}.panel{background:var(--panel);border-left:1px solid var(--line);overscroll-behavior:contain;flex:none;width:380px;padding:18px 16px 34px;overflow:auto}.panel.hierarchy-sidebar{background:linear-gradient(#181b22fa,#111318fc);flex-direction:column;min-height:0;padding:0;display:flex;overflow:hidden}.hierarchy-pane{border-bottom:1px solid var(--line);background:#0b0d116b;flex-direction:column;flex:0 44%;min-height:220px;max-height:390px;display:flex}.hierarchy-heading,.inspector-heading{border-bottom:1px solid #ffffff0e;justify-content:space-between;align-items:center;gap:10px;padding:13px 14px 11px;display:flex}.hierarchy-heading>div{min-width:0}.hierarchy-heading strong,.inspector-heading strong{color:var(--fg);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;display:block;overflow:hidden}.hierarchy-kicker,.inspector-heading>span{color:var(--muted);letter-spacing:.16em;text-transform:uppercase;margin-bottom:2px;font-size:8px;font-weight:700;display:block}.hierarchy-frame-status{color:#9aa9d8;background:#576fdd14;border:1px solid #7e9aff29;border-radius:999px;flex:none;padding:3px 7px;font-size:8px}.object-colors-pop>summary{cursor:pointer;list-style:none}.object-colors-pop>summary::-webkit-details-marker{display:none}.object-colors-pop:not([open]) .object-colors,.tl-camera-advanced:not([open])>label,.tl-camera-advanced:not([open])>button{display:none}.object-colors-pop{display:inline-block;position:relative}.object-colors-pop>summary{border:1px solid #ffffff47;border-radius:6px;width:22px;height:22px;display:block}.object-colors-pop[open]>summary{outline-offset:1px;outline:2px solid #7e9aff}.object-colors-pop .object-colors{z-index:20;background:#161c2b;border:1px solid #7e9aff47;border-radius:8px;flex-wrap:wrap;align-items:center;gap:4px;width:max-content;max-width:176px;padding:5px;display:flex;position:absolute;top:26px;left:0;box-shadow:0 8px 18px #00000073}.object-colors-split{background:#7e9aff47;flex:1 0 100%;height:1px;margin:1px 0}.object-color-free{appearance:none;background:#ffffff05;padding:1px}.object-color-free::-webkit-color-swatch-wrapper{padding:0}.object-color-free::-webkit-color-swatch{border:0;border-radius:4px}.object-color-hex{border:1px solid var(--line2);width:100%;color:var(--fg);font-family:var(--mono);text-transform:lowercase;background:#00000047;border-radius:6px;flex:1 0 100%;padding:2px 5px;font-size:10px}.object-color-hex:focus-visible{outline:1px solid var(--accent);outline-offset:0}.hierarchy-tree{flex:1;min-height:0;padding:6px 6px 9px;overflow:auto}.hierarchy-row-wrap{height:27px;margin-left:calc(var(--hierarchy-depth) * 14px);border-radius:4px;align-items:stretch;display:flex;position:relative}.hierarchy-row-wrap:before{content:"";background:#ffffff0e;width:1px;position:absolute;top:-7px;bottom:13px;left:-7px}.hierarchy-toggle,.hierarchy-row{color:inherit;background:0 0;border:0;padding:0}.hierarchy-toggle{color:#929bad;cursor:pointer;flex:0 0 20px;place-items:center;font-size:14px;font-weight:700;line-height:1;display:grid}.hierarchy-toggle.placeholder{pointer-events:none}.hierarchy-fold-space{pointer-events:none;flex:0 0 20px}.hierarchy-row{text-align:left;cursor:default;flex:1;align-items:center;gap:7px;min-width:0;padding-right:6px;display:flex}.hierarchy-row.icon-only{flex:none;padding-right:0}.hierarchy-icon{color:#82909d;flex:none;width:15px;height:15px;overflow:visible}.hierarchy-label{color:#b8bdc9;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:10px;font-weight:500;overflow:hidden}.hierarchy-status{color:#8ea0ff;letter-spacing:.06em;margin-left:auto;font-size:7px;font-weight:700}.hierarchy-badge{color:#8f97a9;text-align:center;background:#fff1;border-radius:999px;flex:none;min-width:16px;padding:2px 4px;font-size:7px}.hierarchy-row-wrap .hierarchy-scene-pill{flex:0 122px;align-items:center;min-width:0;max-width:calc(100% - 52px);margin:0 4px 0 6px;display:flex}.hierarchy-row-wrap .hierarchy-scene-pill .dropdown{width:100%}.hierarchy-row-wrap .hierarchy-scene-pill .trigger{border:1px solid var(--line2);background:var(--card2);width:100%;min-width:0;height:19px;color:var(--muted);border-radius:999px;gap:4px;padding:0 7px;font-size:10px}.hierarchy-row-wrap .hierarchy-scene-pill .trigger:hover{border-color:var(--accent);color:var(--fg)}.hierarchy-row-wrap .hierarchy-scene-pill .dropdown.open .trigger{border-color:var(--accent);background:var(--hover);color:var(--fg);box-shadow:0 0 0 1px var(--accent)}.hierarchy-row-wrap .hierarchy-scene-pill .dd-caret{width:10px;height:10px}.hierarchy-row-wrap.selected .hierarchy-scene-pill .trigger{color:var(--fg)}.hierarchy-scene-hint{color:var(--muted);flex:none;margin:0;padding:0 10px 8px;font-size:10px;line-height:1.4}.inspector-heading{background:#1f222ab8;flex:none;padding-top:10px;padding-bottom:9px;display:block}.inspector-scroll{flex:1;min-height:0;padding:10px 12px 18px;overflow:auto}.inspector-scroll>.card{margin-bottom:10px;animation:none}.inspector-scroll>[hidden]{display:none!important}.trail-falloff-row{align-items:center;gap:8px;display:flex}.trail-falloff-row input[type=range]{flex:1;min-width:0}.trail-falloff-value{font-variant-numeric:tabular-nums;opacity:.8}.inspector-hint{color:var(--muted);margin:-1px 0 11px;font-size:9px;line-height:1.55}.inspector-status-grid{background:#0000001f;border:1px solid #ffffff0f;border-radius:6px;grid-template-columns:minmax(0,1fr) minmax(0,auto);gap:7px 12px;margin:0 0 12px;padding:9px 10px;font-size:8px;display:grid}.inspector-status-grid span{color:var(--muted);min-width:0}.inspector-status-grid b{color:#c7cde0;overflow-wrap:anywhere;text-align:right;min-width:0;font-weight:600}.inspector-list{gap:5px;margin-bottom:10px;display:grid}.inspector-list button{color:#aeb4c2;text-align:left;cursor:pointer;background:#ffffff06;border:1px solid #fff1;border-radius:5px;justify-content:space-between;align-items:center;gap:10px;min-width:0;padding:8px 9px;display:flex}.inspector-list button span{text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.inspector-list button small{color:var(--muted);flex:none;font-size:7px}.inspector-list.compact button{padding-top:6px;padding-bottom:6px}.card{box-shadow:var(--shadow);transition:border-color var(--med) var(--ease);animation:cardIn .5s var(--ease) both;background:linear-gradient(#141417,#0b0b0d);border:1px solid #ffffff0f;border-radius:16px;margin-bottom:14px;padding:17px 18px 19px;position:relative;overflow:hidden}.card:after{content:"";opacity:.95;background:linear-gradient(90deg,#1a2acc,#3b6bff,#79c9ff 92%);height:2.5px;position:absolute;bottom:0;left:0;right:0}.panel .card:first-child{animation-delay:20ms}.panel .card:nth-child(2){animation-delay:70ms}.panel .card:nth-child(3){animation-delay:.12s}.panel .card:nth-child(4){animation-delay:.17s}.panel .card:nth-child(5){animation-delay:.22s}.panel .card:nth-child(6){animation-delay:.27s}.card h3{text-transform:uppercase;letter-spacing:.16em;color:var(--muted);align-items:center;gap:8px;margin:0 0 13px;font-size:10.5px;font-weight:600;display:flex}.card h3:before{content:"";background:var(--grad-soft);border-radius:50%;width:6px;height:6px;box-shadow:0 0 8px #4d7bffb3}.presets{grid-template-columns:1fr 1fr;gap:8px;display:grid}.presets button{background:var(--card2);border:1px solid var(--line);color:#cdcdd6;cursor:pointer;transition:transform var(--fast) var(--ease), background var(--fast), border-color var(--fast), color var(--fast), box-shadow var(--fast);border-radius:10px;padding:10px 8px;font-size:12px;font-weight:500}.presets button:hover{background:var(--hover);color:#fff;border-color:#4d7bff73;transform:translateY(-1px)}.presets button:active{transform:scale(.97)}.presets button.active{color:#fff;background:linear-gradient(#4d7bff42,#3346ff1f);border-color:#4d7bffbf;font-weight:600;box-shadow:0 0 0 1px #4d7bff40,0 5px 16px #3346ff33}.row{color:var(--muted);align-items:center;gap:12px;margin:13px 0;font-size:12px;display:flex}.row>span:first-child{flex:none;width:82px}.row .val{text-align:right;color:#eeeef2;font-variant-numeric:tabular-nums;width:46px;font-weight:500}.readout{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;gap:8px;margin-top:4px;font-size:11.5px;display:flex}input[type=range]{appearance:none;background:var(--track);cursor:pointer;border-radius:999px;outline:none;flex:1;height:4px}input[type=range]::-webkit-slider-thumb{appearance:none;border:4px solid var(--accent);width:15px;height:15px;transition:transform var(--fast), box-shadow var(--fast);background:#fff;border-radius:50%;box-shadow:0 1px 3px #00000080}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.14)}input[type=range]::-moz-range-thumb{border:4px solid var(--accent);cursor:pointer;background:#fff;border-radius:50%;width:15px;height:15px;box-shadow:0 1px 3px #00000080}.check{color:var(--muted);cursor:pointer;transition:color var(--fast);align-items:center;gap:9px;margin-top:12px;font-size:12px;display:flex}.check input{accent-color:var(--accent);cursor:pointer;width:15px;height:15px}.check:hover{color:#ccccd4}.field label{color:var(--muted);margin-bottom:6px;font-size:11.5px;display:block}.field input[type=text],.field input[type=number],.field textarea{background:var(--card2);border:1px solid var(--line);width:100%;color:var(--fg);transition:border-color var(--fast), box-shadow var(--fast);border-radius:10px;padding:10px 12px;font-size:12.5px}.field input[type=text]::placeholder{color:var(--muted2)}.field input[type=text]:focus,.field input[type=number]:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring);outline:none}.field textarea{resize:vertical;min-height:114px;animation:rise var(--med) var(--ease);line-height:1.55}.field select{width:100%;color:var(--fg);border:1px solid var(--line);cursor:pointer;appearance:none;background:var(--card2) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239a9aa4' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>") no-repeat right 11px center;transition:border-color var(--fast), box-shadow var(--fast);border-radius:10px;padding:10px 32px 10px 12px;font-size:12.5px}.field select:hover{border-color:var(--line2)}.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring);outline:none}.attach-target{background:var(--card2);border:1px solid var(--line);border-radius:10px;align-items:center;gap:8px;padding:6px 6px 6px 12px;display:flex}.attach-target span{min-width:0;color:var(--fg);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12.5px;overflow:hidden}.attach-target button{flex:none;width:auto;padding:6px 11px;font-size:11.5px}.segmented{border:1px solid var(--line);background:#101012;border-radius:11px;margin-bottom:6px;padding:4px;display:flex;position:relative}.segmented:before{content:"";background:var(--grad);width:calc(50% - 4px);transition:transform var(--med) var(--spring);z-index:0;border-radius:8px;position:absolute;top:4px;bottom:4px;left:4px;box-shadow:0 3px 12px #3346ff59}.segmented[data-active=video]:before{transform:translate(100%)}.segmented button{z-index:1;cursor:pointer;color:var(--muted);transition:color var(--fast);background:0 0;border:none;border-radius:8px;flex:1;padding:9px;font-size:12px;font-weight:600;position:relative}.sheet-checks{margin-bottom:4px}.sheet-checks .check{margin-top:9px}.actions{flex-direction:column;gap:9px;margin-top:4px;display:flex}.btn{border:1px solid var(--line2);background:var(--card2);color:var(--fg);cursor:pointer;box-shadow:var(--shadow);transition:transform var(--fast) var(--ease), background var(--fast), border-color var(--fast), box-shadow var(--fast);border-radius:11px;padding:11px 14px;font-size:13px;font-weight:600;position:relative;overflow:hidden}.btn:hover{background:var(--hover);box-shadow:var(--shadow-md);border-color:#4d7bff73;transform:translateY(-1px)}.btn:active{box-shadow:var(--shadow);transform:translateY(0)scale(.985)}.btn.ghost{border-color:var(--line);width:100%;box-shadow:none;color:var(--muted);background:0 0;margin-top:12px;padding:10px;font-size:12px;font-weight:500}.btn.full{width:100%;margin-top:6px}.btn.generate,.btn.cta{margin-top:10px;padding:14px;font-size:14px}.btn.primary{background:var(--grad);color:var(--on-accent);box-shadow:var(--glow), inset 0 1px #fff3;transition:transform var(--fast) var(--ease), background-position var(--med) var(--ease), box-shadow var(--fast);background-position:0%;background-size:160% 100%;border:none}.btn.primary:hover{background-position:100%;transform:translateY(-1px);box-shadow:0 12px 34px #3346ff80}.btn.primary:after{content:"";width:45%;height:100%;transition:left .5s var(--ease);background:linear-gradient(100deg,#0000,#ffffff47,#0000);position:absolute;top:0;left:-60%;transform:skew(-18deg)}.btn.primary:hover:after{left:130%}.hint{color:var(--muted);margin:12px 0 0;font-size:11.5px;line-height:1.6}.hint b{color:#dcdce2;font-weight:600}.ardy-meta{color:var(--muted2);letter-spacing:.04em;margin:0 0 4px;font-size:11px}.ardy-hint{color:var(--muted);margin:0;font-size:11.5px;line-height:1.6}.ardy-hint+.ardy-hint{margin-top:6px}.ardy-hint code,.ardy-outcome code{background:var(--card2);border:1px solid var(--line);color:#dcdce2;word-break:break-all;border-radius:6px;padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.ardy-clamp{color:var(--muted2);margin-top:5px;font-size:10.5px;display:block}.ardy-status{color:var(--muted);margin:10px 0 0;font-size:11.5px;line-height:1.5}.ardy-status:before{content:"▸ ";color:var(--cyan)}.ardy-report{border:1px solid var(--line);background:var(--card2);animation:rise var(--med) var(--ease);border-radius:10px;margin-top:12px;padding:10px 12px}.ardy-report-grid{grid-template-columns:1fr auto;gap:4px 12px;font-size:11.5px;display:grid}.ardy-report-grid span{color:var(--muted)}.ardy-report-grid b{color:var(--fg);font-variant-numeric:tabular-nums;font-weight:600}.ardy-caveat{color:var(--muted2);margin:8px 0 0;font-size:10.5px;line-height:1.55}.ardy-outcome{margin:10px 0 0;font-size:11.5px;line-height:1.6}.ardy-outcome.done{color:var(--muted)}.ardy-outcome.done code{color:var(--cyan)}.ardy-outcome.error{color:#e5484d}.subjects-row{gap:11px;display:flex}.subject-box{background:var(--card2);border:1px solid var(--line);border-radius:13px;flex:1;min-width:0;padding:12px 13px 13px;position:relative}.subject-box.new{animation:subjectIn .42s var(--spring) both;transform-origin:100%}.subject-box-head{justify-content:space-between;align-items:center;gap:6px;margin-bottom:4px;display:flex}.sb-name,.subject-box-head>span{color:var(--fg);white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;font-weight:600;overflow:hidden}.sb-actions{flex:none;align-items:center;gap:5px;display:flex}.sb-color{border:1px solid var(--line2);cursor:pointer;background:#ffffff05;border-radius:8px;width:26px;height:25px;padding:1px}.cam-toggle{border:1px solid var(--line2);width:30px;height:25px;color:var(--muted);cursor:pointer;transition:transform var(--fast) var(--ease), background var(--fast), border-color var(--fast), color var(--fast), box-shadow var(--fast);background:#ffffff05;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.cam-toggle svg{width:14px;height:14px}.cam-toggle:hover{color:var(--fg);border-color:#4d7bff80}.cam-toggle:active{transform:scale(.92)}.cam-toggle.active{background:var(--grad);color:#fff;border-color:#0000;box-shadow:0 3px 12px #3346ff80}.sb-remove{width:22px;height:22px;color:var(--muted2);cursor:pointer;transition:color var(--fast), background var(--fast);background:0 0;border:none;border-radius:7px;justify-content:center;align-items:center;font-size:11px;display:flex}.sb-remove:hover{color:#fff;background:#e5484d}.subject-box-head .x{width:22px;height:22px;color:var(--muted2);cursor:pointer;transition:color var(--fast), background var(--fast);background:0 0;border:none;border-radius:7px;justify-content:center;align-items:center;font-size:11px;display:flex}.subject-box-head .x:hover{color:#fff;background:#e5484d}.cslider{margin-top:11px}.cslider-head{color:var(--muted);white-space:nowrap;justify-content:space-between;align-items:center;gap:6px;margin-bottom:6px;font-size:11px;display:flex}.cslider-head>span:first-child{text-overflow:ellipsis;overflow:hidden}.cslider-head .val{color:#eeeef2;font-variant-numeric:tabular-nums;flex:none;font-weight:500}.cslider-head.scrub{cursor:ew-resize;-webkit-user-select:none;user-select:none;touch-action:none}.cslider input[type=range]{width:100%;display:block}.add-subject{border:1.5px dashed var(--line2);width:100%;color:var(--muted);cursor:pointer;transition:border-color var(--fast), color var(--fast), background var(--fast);background:0 0;border-radius:12px;justify-content:center;align-items:center;gap:8px;margin-top:12px;padding:12px;font-size:12.5px;font-weight:600;display:flex}.add-subject:hover{border-color:var(--accent);color:var(--cyan);background:var(--accent-soft)}.add-subject .as-plus{font-size:17px;font-weight:300;line-height:1}.dropdown{position:relative}.dropdown .trigger{background:var(--card2);width:100%;color:var(--fg);cursor:pointer;text-align:left;transition:border-color var(--fast), background var(--fast), box-shadow var(--fast);border:1px solid #ffffff14;border-radius:10px;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;font-size:12.5px;display:flex}.dropdown .trigger span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dropdown .trigger:hover{border-color:#4d7bff73}.dropdown.open .trigger{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.dd-caret{width:14px;height:14px;color:var(--muted);transition:transform var(--med) var(--ease);flex:none}.dropdown.open .dd-caret{transform:rotate(180deg)}.dropdown-menu{z-index:25;border:1px solid var(--line2);box-shadow:var(--shadow-lg);max-height:288px;animation:ddIn .16s var(--ease) both;background:#16161b;border-radius:13px;padding:6px;position:absolute;top:calc(100% + 7px);left:0;right:0;overflow-y:auto}.dropdown-item{color:#d6d6de;cursor:pointer;text-align:left;width:100%;transition:background var(--fast), color var(--fast);background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:9px 11px;font-size:12.5px;display:flex}.dropdown-item span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dropdown-item:hover{background:var(--hover);color:#fff}.dropdown-item.active{color:var(--cyan);font-weight:600}.dd-check{flex:none;width:14px;height:14px}.modal-overlay{z-index:30;-webkit-backdrop-filter:blur(8px);background:#050508b8;justify-content:center;align-items:center;padding:24px;animation:.2s fade;display:flex;position:fixed;inset:0}.modal{background:var(--card);border:1px solid var(--line2);width:480px;max-width:100%;max-height:90vh;box-shadow:var(--shadow-lg);animation:pop var(--med) var(--spring);border-radius:20px;padding:24px;position:relative;overflow-y:auto}.modal:before{content:"";background:linear-gradient(90deg,#2b3cf5,#4d7bff 50%,#79c9ff) 0 0/200% 100%;border-radius:20px 20px 0 0;height:2px;animation:6s linear infinite stripeShift;position:absolute;top:0;left:0;right:0}.modal-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.modal-head h3{font-family:var(--display);letter-spacing:-.025em;margin:0;font-size:20px;font-weight:720}.modal .x{color:var(--muted);cursor:pointer;transition:color var(--fast), background var(--fast);background:0 0;border:none;border-radius:8px;padding:6px;font-size:15px;line-height:1}.preview{border:1px solid var(--line);border-radius:12px;width:100%;display:block}.modal-label{text-transform:uppercase;letter-spacing:.13em;color:var(--muted);margin:16px 0 7px;font-size:10.5px;display:block}.modal-label em{color:var(--cyan);text-transform:none;letter-spacing:0;font-style:normal;font-weight:600}.promptbox{background:var(--card2);border:1px solid var(--line);color:#dcdce2;border-radius:11px;padding:14px;font-size:12px;line-height:1.6}.modal-actions{gap:9px;margin-top:16px;display:flex}.modal-actions .btn{flex:1}.toast{border:1px solid var(--line2);color:var(--fg);z-index:40;box-shadow:var(--shadow-lg);animation:toastIn .28s var(--spring);background:#202027;border-radius:11px;padding:11px 18px;font-size:12.5px;font-weight:500;position:fixed;bottom:26px;left:50%;transform:translate(-50%)}.timeline{z-index:6;border-top:1px solid var(--line);background:linear-gradient(#1b1b1e,#141416);flex-direction:column;flex:none;height:190px;display:flex;position:relative;box-shadow:0 -12px 32px #00000059}.timeline.collapsed{height:34px}.tl-head{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:12px;height:34px;padding:0 12px 0 14px;display:flex}.tl-camera-editor{color:#d9d2e7;background:#201c28;border-bottom:1px solid #9a7bd461;flex-wrap:nowrap;flex:none;align-items:center;gap:7px;min-height:30px;max-height:34px;padding:3px 10px;font-size:10px;display:flex;overflow:auto hidden}.tl-track.objmo.sg-row .tl-track-label{align-items:flex-start;padding-top:8px}.tl-track.objmo .tl-track-label{color:#9fe0bb;gap:6px;min-width:0}.tl-track.objmo .tl-track-label .objmo-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tl-track.objmo .tl-lane{background:#151d19;border-bottom:1px solid #6fcf9729}.objmo-tools{color:#d3e7dc;flex-wrap:wrap;align-items:center;gap:6px;padding:5px 8px;font-size:10px;display:flex}.objmo-speed{white-space:nowrap;background:#101714;border:1px solid #6fcf973d;border-radius:4px;align-items:center;gap:6px;padding:0 8px 0 6px;display:inline-flex}.objmo-speed input[type=range]{appearance:none;cursor:pointer;background:0 0;width:96px;height:16px;margin:0}.objmo-speed input[type=range]::-webkit-slider-runnable-track{background:#6fcf9747;border-radius:2px;height:4px}.objmo-speed input[type=range]::-moz-range-track{background:#6fcf9747;border-radius:2px;height:4px}.objmo-speed input[type=range]::-webkit-slider-thumb{appearance:none;background:#6fcf97;border:0;border-radius:50%;width:11px;height:11px;margin-top:-3.5px}.objmo-speed input[type=range]::-moz-range-thumb{background:#6fcf97;border:0;border-radius:50%;width:11px;height:11px}.objmo-speed input[type=range]:focus-visible{outline-offset:2px;outline:1px solid #6fcf97}.objmo-speed .objmo-speed-value{color:#9fe0bb;font-variant-numeric:tabular-nums;text-align:right;min-width:46px}.objmo-tools .tl-camera-tool.active{color:#eafff3;background:#2f6b4d;border-color:#6fcf97}.tl-path-hint{color:#7fae95;white-space:nowrap;margin-left:auto;font-size:9px}.tl-track.sg-row .tl-lane{height:118px;overflow:hidden}.sg{flex-direction:column;display:flex;position:absolute;inset:0}.sg-head{color:#9fe0bb;flex:none;align-items:center;gap:10px;padding:5px 10px 4px;font-size:11px;display:flex}.sg-head .sg-facts{font-variant-numeric:tabular-nums}.sg-head .tl-path-hint{opacity:.8;margin-left:0}.sg-head .tl-camera-tool{margin-left:auto;padding:3px 10px;font-size:10px}.sg-head .tl-camera-tool+.tl-camera-tool{margin-left:0}.sg-body{background:#0d1411;border:1px solid #6fcf9738;border-radius:5px;flex:1;min-height:88px;margin:0 8px 6px;position:relative;overflow:hidden}.sg-body svg{cursor:crosshair;touch-action:none;width:100%;height:100%;display:block}.sg-axis{stroke:#9fe0bb59;stroke-width:1px;vector-effect:non-scaling-stroke}.sg .sg-line{fill:none;stroke:#6fcf97;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.sg-cam .sg-head{color:#cbb8ef}.sg-cam .sg-body{background:#120f17;border-color:#9a7bd44d}.sg-cam .sg-axis,.sg-cam .sg-average{stroke:#b9a1e866}.sg-cut{stroke:#ffb454;stroke-width:1px;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}.sg-cut-diamond{fill:#ffb454}.sg-pin.selected .sg-cut-diamond{fill:#ffd08a}.sg-pin.selected .sg-cut{stroke-width:2px;stroke-dasharray:none}.sg-scale-top,.sg-scale-avg,.sg-scale-zero{color:#5f7a6d;font-variant-numeric:tabular-nums;pointer-events:none;font-size:9px;position:absolute;right:8px}.sg-scale-avg{padding-bottom:2px;transform:translateY(-100%)}.sg-scale-zero{bottom:3px}.sg-cam .sg-scale-top,.sg-cam .sg-scale-avg,.sg-cam .sg-scale-zero{color:#7d6a9e}.sg-readout{color:#eafff3;font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;background:#2f6b4d;border-radius:3px;padding:1px 6px;font-size:9px;position:absolute;top:3px;transform:translate(-50%)}.sg-cam .sg-readout{background:#4a3d6e}.sg-shot{pointer-events:auto;z-index:1;position:absolute;inset:18px 4px 2px}.sg-shot .sg-bare{position:absolute;inset:0}.tl-crane-editor{pointer-events:auto;position:absolute;inset:0}.cam-mode-switch{flex:none;gap:2px;display:flex}.tl-crane-editor-svg{cursor:crosshair;touch-action:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.tl-crane-editor-hit{fill:#0000;pointer-events:all}.tl-crane-grid{stroke:#b9a1e847;stroke-width:1px;stroke-dasharray:3 3;vector-effect:non-scaling-stroke;pointer-events:none}.tl-crane-fill{fill:#9a7bd429;pointer-events:none}.tl-crane-line{fill:none;stroke:#b9a1e8;stroke-width:1.6px;vector-effect:non-scaling-stroke;pointer-events:none}.tl-crane-time-pick{stroke:#a78bfa61;stroke-width:1px;vector-effect:non-scaling-stroke;pointer-events:none}.tl-crane-time-pick.selected{stroke:#ffb454d9}.tl-crane-knob{box-sizing:border-box;cursor:ns-resize;z-index:4;background:#a78bfa;border:2px solid #211b31;border-radius:50%;width:15px;height:15px;padding:0;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #cbb7ff80,0 0 10px #a78bfa8c}.tl-crane-knob:hover,.tl-crane-knob:focus-visible{outline-offset:1px;outline:2px solid #fff}.tl-crane-knob.selected{background:#ffb454;border-color:#40270f;box-shadow:0 0 0 1px #ffe0a8,0 0 12px #ffb454e6}.tl-shot-block.has-dolly .tl-shot-title,.tl-shot-block.has-dolly .tl-shot-meta{z-index:2;text-shadow:0 1px 2px #000c;position:relative}.sg-shot .sg-body{background:0 0;border:0;min-height:0;margin:0}.tl-shot-block.has-dolly .tl-shot-label{z-index:2;position:relative}.tl-shot-block.has-dolly .tl-shot-label b,.tl-shot-block.has-dolly .tl-shot-label small{text-shadow:0 1px 3px #0c0816f2;background:0 0}.sg-shot .sg-line{stroke:#b9a1e8}.sg-shot .sg-axis,.sg-shot .sg-average{stroke:#b9a1e866}.sg-shot .sg-readout{background:#4a3d6e}.sg-shot .sg-scale-top,.sg-shot .sg-scale-avg,.sg-shot .sg-scale-zero{color:#7d6a9e}.sg-cam .sg-line{stroke:#b9a1e8}.sg-cam .sg-fill{fill:#9a7bd42e}.sg-cam .sg-average{stroke:#b9a1e84d}.sg-cam .tl-track-label{color:#cbb8ef}.sg-fill{fill:#6fcf972e}.sg-line{fill:none;stroke:#6fcf97;stroke-width:1.6px;vector-effect:non-scaling-stroke}.sg-average{stroke:#9fe0bb4d;stroke-width:1px;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}.sg-outside{fill:#ffffff0a}.sg-cut{stroke:#ffb454;stroke-width:1.2px;vector-effect:non-scaling-stroke}.sg-cut.selected{stroke-width:2.4px}.sg-cut-pick{stroke:#0000;stroke-width:10px;vector-effect:non-scaling-stroke;cursor:pointer;pointer-events:stroke}.sg-playhead{stroke:#ffb454;stroke-width:1px;vector-effect:non-scaling-stroke;opacity:.7;pointer-events:none}.sg-scale-top,.sg-scale-avg{color:#7fae95;pointer-events:none;font-size:8px;position:absolute;left:4px}.sg-scale-top{top:2px}.sg-scale-avg{transform:translateY(-100%)}.sg-readout{color:#eafff3;white-space:nowrap;pointer-events:none;background:#2f6b4d;border-radius:3px;padding:1px 5px;font-size:9px;position:absolute;top:2px;transform:translate(-50%)}.tl-subject-kind{color:#cbb8ef;letter-spacing:.08em;vertical-align:1px;background:#9a7bd438;border-radius:3px;margin-right:6px;padding:1px 5px;font-size:8px;font-weight:700;display:inline-block}.tl-object-editor .tl-subject-kind{color:#9fe0bb;background:#6fcf9733}.tl-camera-editor-title{text-overflow:ellipsis;white-space:nowrap;color:#cbb8ef;align-items:center;max-width:148px;font-size:11px;display:flex;overflow:hidden}.tl-camera-head,.tl-camera-tool{color:#b9adc9;height:28px;font:inherit;cursor:pointer;background:#2b2731;border:1px solid #9a7bd459;border-radius:3px;padding:0 7px;font-weight:700}.tl-camera-head.active,.tl-camera-tool.active{color:#fff;background:#7258a0;border-color:#a78bfa}.tl-camera-tool.danger{color:#ffc9cb;border-color:#e5484d61}.tl-camera-tool.danger:hover,.tl-camera-tool.danger:focus-visible{color:#fff;background:#e5484d2e;border-color:#e5484d}.tl-camera-head:disabled,.tl-camera-tool:disabled,.tl-camera-editor input:disabled{opacity:.4;cursor:default}.tl-camera-editor label{white-space:nowrap;color:#a99fb7;grid-template-columns:auto 50px auto;align-items:center;gap:3px;display:grid}.tl-camera-editor input{box-sizing:border-box;color:#eee8f7;width:50px;height:27px;font:inherit;font-variant-numeric:tabular-nums;background:#17151b;border:1px solid #9a7bd457;border-radius:3px;outline:0;padding:0 3px}.tl-camera-metric{box-sizing:border-box;color:#cfc6dc;width:50px;height:27px;font:inherit;font-variant-numeric:tabular-nums;background:#17151b8a;border:1px solid #9a7bd433;border-radius:3px;justify-content:flex-end;align-items:center;padding:0 5px;display:inline-flex}.tl-camera-editor input:focus{border-color:#a78bfa;box-shadow:0 0 0 1px #a78bfa47}.tl-camera-editor label small{color:#80758e;font-size:8px}.tl-camera-advanced{white-space:nowrap;color:#a99fb7;flex:none}.tl-camera-advanced[open]{align-items:center;gap:7px;display:flex}.tl-camera-advanced summary{cursor:pointer;color:#cbb8ef}.tl-camera-count{opacity:.65;letter-spacing:.02em;align-self:center;font-size:10px}.tl-camera-slate{color:#91869e;letter-spacing:.04em;text-transform:uppercase;border-left:1px solid #9a7bd44d;flex:none;padding-left:7px;font-size:9px;font-weight:700}.tl-camera-blocked{color:#d8bd83;white-space:nowrap;background:#e7b55714;border:1px solid #e7b55761;border-radius:3px;align-items:center;min-height:28px;padding:0 10px;font-size:10px;display:inline-flex}.tl-transport{align-items:center;gap:6px;display:flex}.tl-motion-speed-editor{color:#b9efc0;white-space:nowrap;background:#171d19eb;border:1px solid #7ed08f52;border-radius:5px;align-items:center;gap:5px;min-width:220px;padding:2px 7px;font-size:9px;display:inline-flex}.tl-motion-speed-editor>span{font-weight:600}.tl-motion-speed-editor input[type=range]{accent-color:#7ed08f;cursor:ew-resize;width:90px}.tl-motion-speed-editor input[type=number]{color:#d3f5d8;width:44px;height:18px;font:inherit;font-variant-numeric:tabular-nums;background:#101713;border:1px solid #9fe0a76b;border-radius:3px;padding:0 3px}.tl-motion-speed-editor input:focus-visible{outline-offset:1px;outline:2px solid #fff}.tl-motion-speed-editor small{color:#7ed08f}.tl-btn{width:26px;height:22px;color:var(--fg);border:1px solid var(--line2);cursor:pointer;transition:background var(--fast) var(--ease), border-color var(--fast) var(--ease);background:#26262b;border-bottom-width:2px;border-radius:6px;justify-content:center;align-items:center;font-size:12px;line-height:1;display:inline-flex}.tl-btn:active{transform:scale(.94)}.tl-btn.play{color:var(--on-accent);background:var(--accent);border-color:#2233d6}.tl-btn.play:hover{background:var(--accent-2)}.tl-readout{font-variant-numeric:tabular-nums;color:var(--muted);border:1px solid var(--line);white-space:nowrap;background:#101013;border-radius:6px;margin-left:6px;padding:3px 9px;font-size:12px}.tl-readout b{color:var(--cyan);font-weight:600}.tl-badge{letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;color:#ffd166;background:#ffd16614;border:1px solid #ffd16666;border-radius:999px;padding:3px 10px;font-size:10px;font-weight:700}.tl-toggle{width:24px;height:22px;color:var(--muted);cursor:pointer;transition:color var(--fast) var(--ease), background var(--fast) var(--ease);background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;margin-left:auto;font-size:11px;display:inline-flex}.tl-body{--tl-label-w:148px;flex:1;min-height:156px;position:relative;overflow:auto}.tl-surface{width:calc(var(--tl-label-w) + (100% - var(--tl-label-w)) * var(--tl-zoom));grid-template-rows:28px repeat(3,minmax(18px,1fr)) minmax(68px,1.7fr) auto;height:100%;min-height:0;display:grid;position:relative}.tl-surface.empty-shots{grid-template-rows:28px repeat(3,minmax(18px,1fr)) minmax(42px,1fr) auto}.tl-ruler{grid-template-columns:var(--tl-label-w) 1fr;border-bottom:1px solid var(--line);background:#101013;height:auto;display:grid}.tl-ruler-label{letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);border-right:1px solid var(--line);z-index:2;align-items:flex-end;padding:0 12px 5px;font-size:9.5px;display:flex;position:sticky;left:0}.tl-ruler-lane{cursor:ew-resize;touch-action:none;-webkit-user-select:none;user-select:none;position:relative}.tl-frame-box{top:3px;left:clamp(0px, calc(var(--tl-f) * 100%), calc(100% - 42px));background:var(--accent);color:#fff;font-variant-numeric:tabular-nums;pointer-events:none;z-index:2;border-radius:6px;justify-content:center;align-items:center;min-width:42px;height:20px;font-size:11px;font-weight:600;display:flex;position:absolute;box-shadow:0 0 12px #3346ff73}.tl-tick{bottom:0;left:clamp(2px, calc(var(--tl-f) * 100%), calc(100% - 2px));font-variant-numeric:tabular-nums;color:var(--muted2);pointer-events:none;flex-direction:column;align-items:center;gap:2px;font-size:9px;display:flex;position:absolute;transform:translate(-50%)}.tl-tick i{background:var(--line2);width:1px;height:5px;display:block}.tl-track{grid-template-columns:var(--tl-label-w) 1fr;border-bottom:1px solid #ffffff0f;height:auto;min-height:18px;display:grid}.tl-track-label{white-space:nowrap;color:var(--muted);border-right:1px solid var(--line);z-index:2;background:#17171a;align-items:center;padding:0 12px;font-size:10.5px;display:flex;position:sticky;left:0;overflow:hidden}.tl-lane{position:relative}.tl-grid{top:0;bottom:0;left:calc(var(--tl-f) * 100%);pointer-events:none;background:#ffffff08;width:1px;position:absolute}.tl-lane.root{cursor:crosshair}.tl-track-label{gap:7px}.tl-track-add{border:1px solid var(--line2);color:#aebcff;cursor:pointer;background:#242833;border-radius:4px;width:18px;height:18px;margin-left:auto;padding:0}.tl-track-add.cut{white-space:nowrap;width:auto;min-width:76px;padding:0 6px;font-size:9px}.tl-track-add.cut.camera{color:#cbb8ef;border-color:#9a7bd461;min-width:54px}.tl-motion-clip{box-sizing:border-box;height:min(20px,100% - 6px);top:50%;left:calc(var(--tl-f-start) * 100%);width:calc((var(--tl-f-end) - var(--tl-f-start)) * 100%);color:#9fe0a7;letter-spacing:.02em;white-space:nowrap;pointer-events:auto;background:linear-gradient(103deg,#7ed08f47,#7ed08f24);border:1px solid #7ed08f73;border-radius:5px;align-items:center;padding:0 8px;font-size:9px;font-weight:600;display:flex;position:absolute;overflow:hidden;transform:translateY(-50%);container-type:inline-size}.tl-motion-clip.trimming{background:linear-gradient(103deg,#7ed08f73,#7ed08f40);border-color:#7ed08fcc}.tl-motion-clip.selected{border-color:#9fe0a7f2;box-shadow:0 0 10px #7ed08f47}.tl-motion-clip-label{text-overflow:ellipsis;text-align:center;flex:1;overflow:hidden}.tl-track-add.motion-cut{color:#9fe0a7;border-color:#7ed08f61;width:auto;min-width:34px;padding:0 6px;font-size:9px}.tl-track-add.motion-cut:disabled{opacity:.35;cursor:default}.tl-motion-clip-handle{pointer-events:auto;cursor:ew-resize;touch-action:none;background:#7ed08f8c;border:none;border-radius:3px;flex:none;align-self:stretch;width:8px;margin:0;padding:0}.tl-motion-clip-handle:hover{background:#7ed08ff2}.tl-motion-clip-handle.speed{background:#ebbe608c;margin-left:auto}.tl-motion-clip-handle.speed:hover{background:#ebbe60f2}.tl-motion-clip.retiming{border-color:#ebbe60cc;box-shadow:0 0 10px #ebbe6040}.tl-chip{box-sizing:border-box;height:min(22px,100% - 4px);top:50%;left:calc(var(--tl-f-start) * 100%);width:calc((var(--tl-f-end) - var(--tl-f-start)) * 100%);color:#fff;letter-spacing:.02em;white-space:nowrap;pointer-events:auto;touch-action:none;cursor:grab;background:linear-gradient(103deg,#2b3cf5,#4d7bff);border-radius:5px;align-items:center;padding:0 8px;font-size:9.5px;font-weight:600;display:flex;position:absolute;overflow:hidden;transform:translateY(-50%);box-shadow:0 0 10px #3346ff59}.tl-chip.moving,.tl-chip.moving .tl-chip-input{cursor:grabbing;-webkit-user-select:none;user-select:none}.tl-chip.selected{outline:1px solid #9bb2ff;box-shadow:0 0 14px #5672ffa6}.tl-chip-input{color:#fff;min-width:0;height:100%;font:inherit;cursor:grab;background:0 0;border:0;outline:0;flex:1;padding:0 5px;font-weight:600}.tl-chip-input:focus{cursor:text}.tl-chip-input::placeholder{color:#ffffffb8}.tl-chip-handle{cursor:ew-resize;z-index:2;background:#fff3;border:0;width:8px;padding:0;position:absolute;top:0;bottom:0}.tl-chip-handle.start{left:0}.tl-chip-handle.end{right:0}.tl-chip-text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tl-chip.empty{box-shadow:none;background:linear-gradient(103deg,#2a2d3a,#3b4050)}.tl-chip.empty .tl-chip-text{color:var(--muted);font-weight:500}.tl-shot-block{box-sizing:border-box;top:3px;bottom:3px;left:calc(var(--tl-f-start) * 100%);width:calc((var(--tl-f-end) - var(--tl-f-start)) * 100%);color:#f0eaff;cursor:grab;touch-action:none;background:#44365d;border:1px solid #735ba0;border-radius:3px;align-items:flex-start;gap:4px;padding:5px 15px 28px;font-size:9.5px;display:flex;position:absolute;overflow:hidden;container-type:inline-size}.tl-shot-empty{color:#8e93a3;text-align:center;justify-content:center;align-items:center;gap:10px;margin:0;padding:0 14px;font-size:9px;font-style:italic;display:flex;position:absolute;inset:0}.tl-shot-empty-add{color:#e7d9ff;font:inherit;cursor:pointer;background:#503f6db8;border:1px solid #735ba0;border-radius:4px;flex:none;padding:4px 8px;font-style:normal}.tl-shot-empty-add:hover,.tl-shot-empty-add:focus-visible{color:#fff;background:#5b467b;border-color:#b79be8}.tl-shot-block.active{background:#503f6d;border-color:#e7b557}.tl-shot-block.active .tl-shot-label small{background:#503f6de6}.tl-shot-block.selected{box-shadow:inset 0 0 0 1px #c9b5f473,0 0 8px #9a7bd452}.tl-shot-block.has-dolly,.tl-shot-block.has-dolly.active{background:linear-gradient(#584288f5 0%,#342754f5 100%);border-color:#a78bfa}.tl-shot-block.moving{opacity:.72;cursor:grabbing;box-shadow:0 0 0 2px #e7b5574d}.tl-shot-label{z-index:5;white-space:nowrap;flex-direction:column;flex:1;align-items:flex-start;gap:1px;min-width:0;display:flex;position:relative;overflow:hidden}.tl-shot-label b{text-overflow:ellipsis;min-width:0;overflow:hidden}.tl-shot-label small{color:#aab4c0;font-variant-numeric:tabular-nums;background:#44365ddb;flex:none;padding-right:3px;font-size:8.5px}.tl-shot-camera-summary{white-space:nowrap;align-items:center;gap:4px;min-width:0;padding-top:1px;display:flex}.tl-shot-camera-summary>b{letter-spacing:.04em;font-size:9px}.tl-shot-camera-summary>small{text-overflow:ellipsis;color:#d0c3e5;font-variant-numeric:tabular-nums;min-width:0;font-size:8px;overflow:hidden}.tl-shot-key-surface{cursor:crosshair;z-index:1;background:#140c2452;border:0;border-top:1px solid #c9b5f447;height:12px;padding:0;position:absolute;bottom:0;left:12px;right:12px}.tl-shot-key-surface:hover{background:#a78bfa2e}.tl-shot-name-input{color:#fff;width:100%;min-width:28px;height:16px;font:inherit;background:#232323;border:1px solid #e7b557;outline:0;padding:0 3px}.tl-shot-edge{color:#e7b557;cursor:ew-resize;z-index:3;background:0 0;border:0;border-left:2px solid #e7b557;width:14px;padding:0;font-size:14px;line-height:1;position:absolute;top:-2px;bottom:-2px;left:0}.tl-shot-edge:hover{background:#e7b5576b}.tl-shot-edge.end{border-left:0;border-right:2px solid #e7b557;left:auto;right:0}.tl-shot-actions{z-index:6;background:#1d152aeb;border-radius:3px;gap:2px;padding:2px;display:none;position:absolute;top:3px;right:15px}.tl-shot-block:hover .tl-shot-actions,.tl-shot-block:focus-within .tl-shot-actions{display:flex}.tl-shot-actions button{width:auto;min-width:30px;height:20px;color:inherit;cursor:pointer;background:#ffffff1f;border:0;border-radius:2px;padding:0 4px;font-size:9px;line-height:1}.tl-shot-actions button:disabled{opacity:.35;cursor:default}.tl-shot-warn{color:var(--warn,#f5b453);letter-spacing:.06em;white-space:nowrap;cursor:help;background:#f5b45329;border:1px solid #f5b45380;border-radius:2px;flex:none;padding:1px 3px;font-size:7.5px;font-weight:700}.tl-camera-block-state{color:#d8ccef;letter-spacing:.06em;background:#00000029;border:1px solid #ffffff38;border-radius:2px;padding:1px 3px;font-size:7.5px;font-weight:700}.tl-marker.cam{pointer-events:auto;cursor:grab;z-index:5;background:#a78bfa;border-color:#1e1040;top:auto;bottom:2px;transform:translate(-50%);box-shadow:0 0 8px #a78bfacc}.tl-lane.cam{cursor:crosshair}@container (width<=320px){.tl-shot-camera-summary>small,.tl-camera-block-state{display:none}}@container (width<=240px){.tl-shot-camera-summary{display:none}}.tl-crane-point{box-sizing:border-box;cursor:ns-resize;pointer-events:auto;z-index:5;background:#a78bfa;border:2px solid #211b31;border-radius:50%;width:18px;height:18px;padding:0;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #cbb7ffa6,0 0 8px #a78bfae6}.tl-crane-point:hover,.tl-crane-point:focus-visible{outline-offset:1px;outline:2px solid #fff}.tl-crane-point.selected{background:#ffb454;border-color:#40270f;box-shadow:0 0 0 1px #ffe0a8,0 0 9px #ffb454f2}.tl-marker{top:50%;left:clamp(3px, calc(var(--tl-f) * 100%), calc(100% - 3px));background:var(--cyan);pointer-events:none;z-index:2;border:2px solid #0d1b2e;border-radius:50%;width:10px;height:10px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 8px #79c9ffcc}.tl-marker.wp.pending{background:0 0;border-color:#ffd76c;box-shadow:0 0 10px #ffd76ce6}.tl-marker.wp{pointer-events:auto;cursor:pointer}.tl-marker.ik{pointer-events:auto;cursor:pointer;background:#ff8a3d;border-color:#2e1a0d;border-radius:2px;transform:translate(-50%,-50%)rotate(45deg);box-shadow:0 0 8px #ffa05acc}.tl-ik-run{top:50%;left:calc(var(--tl-f) * 100%);width:calc((var(--tl-f2) - var(--tl-f)) * 100%);pointer-events:auto;cursor:pointer;z-index:2;background:#ff8a3d8c;border:1px solid #2e1a0d;border-radius:3px;min-width:6px;height:5px;position:absolute;transform:translateY(-50%);box-shadow:0 0 7px #ffa05a80}.tl-ik-run-cap{pointer-events:none;background:#ff8a3d;border:1px solid #2e1a0d;border-radius:2px;width:7px;height:7px;position:absolute;top:50%}.tl-ik-run-cap.start{left:-1px;transform:translateY(-50%)rotate(45deg)}.tl-ik-run-cap.end{right:-1px;transform:translateY(-50%)rotate(45deg)}.tl-ik-run-at{top:50%;left:clamp(3px, calc(var(--tl-f) * 100%), calc(100% - 3px));pointer-events:none;background:#ffd0a8;border:1px solid #2e1a0d;border-radius:2px;width:9px;height:9px;position:absolute;transform:translate(-50%,-50%)rotate(45deg);box-shadow:0 0 8px #ffc896e6}.tl-track-add.ik{color:#ffc79a;border-color:#4a382a}.tl-btn.ik:disabled{opacity:.4;cursor:not-allowed}.tl-btn.ik{white-space:nowrap;width:auto;min-width:48px;padding:0 7px}.tl-btn.ik.snap{border-color:#4a382a}.tl-btn.ik.snap.on{color:#ffc79a;border-color:#ff8a3d;box-shadow:0 0 8px #ff8a3d59}.tl-btn.wp{letter-spacing:.02em;width:auto;color:var(--muted);padding:0 9px;font-size:11px;font-weight:600}.tl-btn.zoom{font-variant-numeric:tabular-nums;letter-spacing:.02em;width:auto;color:var(--muted);padding:0 7px;font-size:11px}.tl-btn.zoom.on{color:#79c0ff;background:#388bfd1a;border-color:#79c0ff73}.tl-btn.clear{color:#ff9b9b;width:auto;padding:0 8px;font-size:11px}.tl-badge.generating{color:#79c0ff;background:#388bfd1a;border-color:#388bfd73}.tl-wp-hint{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;overflow:hidden}.tl-pose-hint{color:var(--muted);white-space:nowrap;font-size:10.5px}.tl-playhead{top:0;bottom:0;left:calc(var(--tl-label-w) + (100% - var(--tl-label-w)) * var(--tl-f));background:var(--cyan);pointer-events:none;z-index:3;width:1.5px;position:absolute;box-shadow:0 0 8px #79c9ffb3}.tl-collapsed{align-items:center;gap:12px;height:100%;padding:0 14px;display:flex}@media (width<=1040px){.app{width:100%;height:auto;min-height:100vh;overflow-x:hidden}html,body,#root{height:auto;min-height:100%;overflow-x:hidden}.main{flex-direction:column;width:100%;max-width:100%}.workspace{flex-direction:column}.viewport{flex:none;min-width:0;max-width:100%;height:54vh;padding:0}.panel{border-left:none;border-top:1px solid var(--line);width:100%;min-width:0;max-width:100%;padding:16px 16px 40px;overflow:visible}.stage{aspect-ratio:auto;width:100%;max-width:100%;height:100%;max-height:none}.tagline{display:none}.pose-studio{width:auto;height:auto;inset:15% 8px 8px}.pose-grid{grid-template-columns:1fr 1fr 1fr;grid-auto-rows:min-content}}@media (width<=680px){body{font-size:12.5px}.topbar{gap:10px;height:54px;padding:0 14px}.kbd-hint{display:none}.wordmark{font-size:22px}.viewport{min-height:46vh;padding:10px}.stage{border-radius:13px}.pose-grid{grid-template-columns:1fr 1fr}.hud,.caption{font-size:10.5px}.caption{letter-spacing:.08em;padding:6px 11px}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes riseCenter{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}@keyframes pop{0%{opacity:0;transform:translateY(10px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%)}}@keyframes cardIn{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes stageIn{0%{opacity:0;transform:translateY(18px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes studioIn{0%{opacity:0;transform:translate(26px)scale(.96)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes studioOut{0%{opacity:1;transform:translate(0)scale(1)}to{opacity:0;transform:translate(26px)scale(.96)}}@keyframes tileIn{0%{opacity:0;transform:translateY(10px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes fabPop{0%{opacity:0;transform:translateY(6px)scale(.9)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes stripeShift{0%{background-position:0%}to{background-position:200%}}@keyframes ddIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes subjectIn{0%{opacity:0;transform:translate(18px)scale(.9)}to{opacity:1;transform:translate(0)scale(1)}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.workspace-splitter,.vp-inset-resize{display:none}@media (width>=1041px){.viewport{justify-content:stretch;align-items:stretch;padding:8px}.stage{aspect-ratio:auto;width:100%;max-width:none;height:100%;max-height:none}.panel.hierarchy-sidebar{width:var(--sidebar-width);min-width:280px;max-width:50vw}.hierarchy-pane{height:auto;min-height:0;max-height:none}.inspector-pane{overscroll-behavior:contain;flex-direction:column;min-width:0;min-height:0;display:flex;overflow:auto}.timeline{height:var(--timeline-height);min-height:110px;max-height:58vh}.timeline.collapsed{height:34px;min-height:34px}.vp-inset{width:var(--inset-width);height:var(--inset-height);aspect-ratio:auto;min-width:190px;max-width:none;min-height:150px}.vp-inset.shot{aspect-ratio:auto}.workspace-splitter,.vp-inset-resize{touch-action:none;-webkit-user-select:none;user-select:none;display:block}.workspace-splitter-vertical{z-index:12;cursor:col-resize;flex:0 0 6px;margin-left:-3px;margin-right:-3px;position:relative}.workspace-splitter-vertical:after,.hierarchy-splitter:after,.timeline-splitter:after{content:"";transition:background var(--fast) ease;background:0 0;position:absolute}.workspace-splitter-vertical:after{width:2px;inset:0 2px}.hierarchy-splitter{z-index:3;cursor:row-resize;background:var(--panel);height:6px;position:relative}.hierarchy-splitter:after,.timeline-splitter:after{height:2px;top:2px;left:0;right:0}.timeline-splitter{z-index:13;cursor:row-resize;flex:0 0 6px;margin-top:-3px;margin-bottom:-3px;position:relative}.workspace-splitter:hover:after,body.is-resizing .workspace-splitter:after{background:var(--accent)}.vp-inset-resize{z-index:9;cursor:nwse-resize;pointer-events:auto;width:24px;height:24px;position:absolute;bottom:0;right:0}.vp-inset-resize:before,.vp-inset-resize:after{content:"";border-bottom:2px solid #ffffffb8;border-right:2px solid #ffffffb8;position:absolute;bottom:5px;right:5px}.vp-inset-resize:before{width:12px;height:12px}.vp-inset-resize:after{width:7px;height:7px}body.is-resizing,body.is-resizing *{-webkit-user-select:none!important;user-select:none!important}body.resize-sidebar,body.resize-sidebar *{cursor:col-resize!important}body.resize-hierarchy,body.resize-hierarchy *,body.resize-timeline,body.resize-timeline *{cursor:row-resize!important}body.resize-inset,body.resize-inset *{cursor:nwse-resize!important}}.panel.hierarchy-sidebar{background:#282828;border-color:#ffffff38}.hierarchy-pane{background:#2c2c2c;border-color:#ffffff38}.hierarchy-heading,.inspector-heading{background:#232323;border-color:#ffffff24}.hierarchy-heading strong,.inspector-heading strong{color:#d2d2d2}.hierarchy-kicker,.inspector-heading>span{color:#9a9a9a}.hierarchy-frame-status{color:#5a9bd4;background:#3a7cbf17;border-color:#3a7cbf59}.hierarchy-row-wrap:before{background:#ffffff21}.hierarchy-row-wrap:hover{background:#3a7cbf14}.hierarchy-row-wrap.selected{background:#2d5c8a;box-shadow:inset 2px 0 #3a7cbf}.hierarchy-toggle{color:#7c8588}.hierarchy-label{color:#d2d2d2}.selected .hierarchy-label{color:#fff}.hierarchy-status{color:#5a9bd4}.hierarchy-badge{color:#9a9a9a;background:#ffffff14}.hierarchy-icon{color:#82909d}.hierarchy-icon.scene{color:#78a8dc}.hierarchy-icon.camera{color:#d9a34a}.hierarchy-icon.group,.hierarchy-icon.character{color:#73aa8d}.hierarchy-icon.rig,.hierarchy-icon.bone{color:#a98cc0}.hierarchy-icon.environment{color:#73aa8d}.hierarchy-icon.props,.hierarchy-icon.object{color:#cb826b}.selected .hierarchy-icon{filter:brightness(1.25)}.inspector-scroll{background:#282828}.card{box-shadow:var(--shadow);background:#2c2c2c;border-color:#ffffff2e;border-radius:8px}.card:after{opacity:.9;background:#3a7cbf;height:2px}.card h3{color:#9a9a9a}.card h3:before{box-shadow:none;background:#3a7cbf}.inspector-hint,.ardy-hint,.ardy-status,.hint,.check,.field label,.row,.readout{color:#9a9a9a}.hint b,.ardy-hint code,.ardy-outcome code{color:#d2d2d2}.inspector-status-grid,.ardy-report{background:#ffffff09;border-color:#ffffff24}.inspector-status-grid b{color:#d2d2d2}.inspector-list button{color:#3d4d58;background:#ffffff61;border-color:#ffffff29}.inspector-list button:hover,.inspector-list button.active{color:#d2d2d2;background:#3c3c3c;border-color:#3a7cbf8f}.presets button{color:#3d4d58;background:#383838;border-color:#ffffff29;border-radius:6px}.presets button:hover{color:#d2d2d2;background:#3c3c3c;border-color:#3a7cbf7a;transform:none}.presets button.active{color:#d2d2d2;background:#2d5c8a;border-color:#3a7cbf;box-shadow:0 0 0 1px #3a7cbf29}.row .val,.readout strong{color:#d2d2d2}input[type=range]{background:#3a3a3a}input[type=range]::-webkit-slider-thumb{background:#2c2c2c;border-color:#3a7cbf;box-shadow:0 1px 2px #0000002e}input[type=range]::-moz-range-thumb{background:#2c2c2c;border-color:#3a7cbf;box-shadow:0 1px 2px #0000002e}.field input[type=text],.field input[type=number],.field textarea,.field select,.dropdown .trigger{color:#d2d2d2;box-shadow:none;background-color:#323232;border-color:#fff3;border-radius:6px}.field input[type=text]::placeholder,.field textarea::placeholder{color:#979d9a}.field select option{color:#d2d2d2;background:#2c2c2c}.dropdown-menu{box-shadow:var(--shadow-md);background:#2c2c2c;border-color:#ffffff3d;border-radius:7px}.dropdown-item{color:#3d4d58;border-radius:5px}.dropdown-item.active{color:#5a9bd4}.segmented{background:#1e1e1e;border-color:#ffffff2e;border-radius:7px}.segmented button{color:#9a9a9a}.segmented button:hover{color:#d2d2d2}.segmented button.active{color:#fff}.btn{color:#d2d2d2;box-shadow:none;background:#383838;border-color:#ffffff3d;border-radius:6px}.btn.ghost{color:#9a9a9a;border-color:#ffffff2e}.btn.ghost:hover{color:#d2d2d2;background:#3c3c3c}.btn.primary{box-shadow:none;background:#3a7cbf;border:1px solid #397f91}.btn.primary:hover{box-shadow:none;background:#3f91a7}.vp-inset{border:1px solid #ffffff73;border-radius:7px;box-shadow:0 7px 20px #00000026}.vp-inset-resize{background:linear-gradient(135deg,#0000 50%,#26221e8c 50%);border-bottom-right-radius:7px}.vp-inset-resize:before,.vp-inset-resize:after{border-color:#fffcf7d9}.vp-inset-tag,.hud,.caption,.viewmode,.grid-toggle{color:#d2d2d2;box-shadow:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#fffaf1e6;border-color:#ffffff6b}.vp-inset-tag{color:#d2d2d2}.viewmode{border-radius:7px}.viewmode button{color:#52616b;border-radius:5px}.viewmode button:hover{color:#d2d2d2}.viewmode button.active{color:#fff;box-shadow:none;background:#3a7cbf}.caption{color:#d2d2d2}.grid-toggle.active{color:#5a9bd4;background:#3c3c3c;border-color:#3a7cbf}.film-frame i:before,.film-frame i:after{border-color:#ffffffb8}.toast,.modal,.promptbox{color:#d2d2d2;background:#2c2c2c;border-color:#ffffff3d}.modal-overlay{background:#ffffff4d}.modal:before{background:#3a7cbf;animation:none}.modal .x:hover{color:#d2d2d2;background:#1e1e1e}.timeline{background:#232323;border-color:#ffffff38;box-shadow:0 -5px 14px #00000014}.tl-head{background:#282828;border-color:#ffffff2e}.tl-btn{color:#d2d2d2;background:#2c2c2c;border-color:#ffffff45;border-bottom-width:1px;border-radius:5px}.tl-btn:hover{background:#3c3c3c;border-color:#3a7cbf}.tl-btn.play,.tl-btn.play:hover{color:#fff;background:#3a7cbf;border-color:#397f91}.tl-readout{color:#9a9a9a;background:#2c2c2c;border-color:#ffffff2e}.tl-readout b{color:#5a9bd4}.tl-badge{color:#e7b557;background:#e7b55724;border-color:#be861f75}.tl-toggle:hover{color:#d2d2d2;background:#1e1e1e;border-color:#fff3}.tl-body,.tl-surface{background:#282828}.tl-ruler{background:#232323;border-color:#ffffff2e}.tl-ruler-label,.tl-track-label{color:#52616b;background:#282828;border-color:#ffffff29}.tl-tick{color:#687477}.tl-tick i{background:#ffffff47}.tl-track{border-color:#ffffff1a}.tl-lane{background-color:#282828}.tl-grid{background:#ffffff13}.tl-lane:hover{background-color:#383838}.tl-frame-box{color:#d2d2d2;box-shadow:none;background:#e7b557;border:1px solid #c58d29;border-radius:5px}.tl-track-add{color:#5a9bd4;background:#2c2c2c;border-color:#ffffff3d}.tl-chip{color:#fff;box-shadow:none;background:#3a7cbf;border-radius:4px}.tl-chip.selected{outline-color:#5a9bd4;box-shadow:0 0 0 2px #3a7cbf2e}.tl-chip.empty{color:#52616b;background:#424242}.tl-chip.empty .tl-chip-text{color:#52616b}.tl-chip-handle{background:#ffffff52}.tl-marker{background:#6f9f86;border-color:#2c2c2c;box-shadow:0 0 0 1px #5d8a73}.tl-marker.wp.pending{border-color:#d69a31;box-shadow:0 0 0 2px #e7b55740}.tl-marker.wp:hover{box-shadow:0 0 0 3px #6f9f8633}.tl-marker.ik{background:#d65f55;border-color:#2c2c2c;box-shadow:0 0 0 1px #b54840}.tl-marker.ik:hover{box-shadow:0 0 0 3px #d65f5533}.tl-ik-run{background:#d65f556b;border-color:#2c2c2c;box-shadow:0 0 0 1px #b5484080}.tl-ik-run:hover{background:#d65f55ad;box-shadow:0 0 0 3px #d65f5533}.tl-ik-run.current{background:#d65f55b8;box-shadow:0 0 0 3px #d65f5547}.tl-ik-run-cap{background:#d65f55;border-color:#2c2c2c}.tl-ik-run-at{background:#f0a89f;border-color:#2c2c2c;box-shadow:0 0 0 1px #b54840}.tl-marker.ik.current{box-shadow:0 0 0 3px #d65f5547}.tl-marker.cam{background:#9a7bd4;border-color:#2c2c2c;box-shadow:0 0 0 1px #7b5cb0}.tl-marker.cam:hover{box-shadow:0 0 0 3px #9a7bd440}.tl-track-add.ik,.tl-btn.ik.snap{color:#e58a80;border-color:#d65f5557}.tl-btn.ik.snap.on{color:#e58a80;box-shadow:none;background:#d65f5517;border-color:#d65f55}.tl-btn.wp.on{color:#8fc7a5;background:#6f9f861f;border-color:#6f9f868c}.tl-btn.zoom.on,.tl-badge.generating{color:#5a9bd4;background:#3a7cbf1a;border-color:#3a7cbf75}.tl-badge.playback{color:#8fc7a5;background:#6f9f861c;border-color:#6f9f8675}.tl-wp-hint.warn{color:#e7b557}.tl-playhead{box-shadow:none;background:#e7b557;width:2px}.tagline{letter-spacing:-.005em;font-size:12px;font-weight:480}.hierarchy-heading strong,.inspector-heading strong{font-family:var(--display);letter-spacing:-.015em;font-size:12.5px;font-weight:680}.hierarchy-kicker,.inspector-heading>span{letter-spacing:.105em;font-size:8.5px;font-weight:720}.hierarchy-label{letter-spacing:-.005em;font-size:10.75px;font-weight:520}.hierarchy-status,.hierarchy-badge,.hierarchy-frame-status{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:0}.card h3{font-family:var(--display);letter-spacing:.105em;font-size:10.5px;font-weight:720}.inspector-hint,.ardy-hint,.studio-hint{letter-spacing:0;font-size:10.5px;line-height:1.55}.presets button,.btn,.segmented button,.dropdown-item,.dropdown .trigger{letter-spacing:-.005em;font-size:12px;font-weight:580}.field label,.check{letter-spacing:0;font-size:11px;font-weight:520}.field input[type=text],.field input[type=number],.field textarea,.field select{letter-spacing:0;font-size:12px;font-weight:480}.row{letter-spacing:0;font-size:11.25px}.row .val,.readout,.inspector-status-grid,.ardy-status,.ardy-report-grid b,.ardy-report-grid span,.ardy-meta,.ardy-outcome code,.ardy-hint code,.kbd-hint,.caption,.hud,.tl-readout,.tl-badge,.tl-frame-box,.tl-tick,.tl-ruler-label,.tl-wp-hint{font-family:var(--mono);font-variant-numeric:tabular-nums}.row .val{letter-spacing:-.015em;font-size:11px;font-weight:650}.kbd-hint{letter-spacing:-.015em;font-size:10.5px}.kbd-hint b{letter-spacing:-.02em;font-size:9.5px;font-weight:650}.caption{letter-spacing:.065em;font-size:10px;font-weight:650}.viewmode button,.grid-toggle,.vp-inset-tag{font-family:var(--sans);letter-spacing:-.005em;font-size:10.5px;font-weight:650}.tl-btn{font-family:var(--sans);font-weight:620}.tl-readout{letter-spacing:-.02em;font-size:10.75px;font-weight:520}.tl-ruler-label{letter-spacing:.1em;font-size:9px;font-weight:700}.tl-track-label{letter-spacing:-.005em;font-size:10.25px;font-weight:540}.tl-tick{letter-spacing:-.025em;font-size:8.5px;font-weight:520}.tl-frame-box{letter-spacing:-.02em;font-size:10.5px;font-weight:720}.tl-chip,.tl-chip-input{font-family:var(--sans);letter-spacing:-.005em;font-size:9.5px;font-weight:620}.modal-label{letter-spacing:.1em;font-size:9.5px;font-weight:700}.promptbox{font-size:11.5px;line-height:1.6}.pose-studio{box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(12px);background:#fffaf1f5;border-color:#ffffff3d;border-radius:8px}.pose-studio:before{background:#3a7cbf;border-radius:8px 8px 0 0;animation:none}@media (width>=1041px){.viewport{justify-content:stretch;align-items:stretch;padding:0}.stage{aspect-ratio:auto;width:100%;max-width:none;height:100%;max-height:none}.panel.hierarchy-sidebar{width:var(--sidebar-width);grid-template-rows:auto minmax(0,1fr);min-width:280px;max-width:50vw}.hierarchy-pane{height:auto;max-height:none}.timeline:not(.collapsed){height:var(--timeline-height)}.vp-inset,.vp-inset.shot{width:var(--inset-width);height:var(--inset-height);aspect-ratio:auto;max-width:none}}.panel.hierarchy-sidebar{flex-direction:column;display:flex}.right-panel-tabs{border-bottom:1px solid var(--line);background:var(--panel);flex:none;grid-template-columns:1fr 1fr;gap:4px;padding:8px;display:grid}.right-panel-tabs button{height:34px;color:var(--muted);font:inherit;letter-spacing:.03em;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;padding:0 10px;font-size:10px;font-weight:700}.right-panel-tabs button:hover{color:var(--fg);background:#3a7cbf14}.right-panel-tabs button.active{color:#cfe3f5;background:#2d5c8a;border-color:#3a7cbf6b;box-shadow:inset 0 -2px #3a7cbf}.right-panel-view,.hierarchy-tab-pane,.inspector-pane{min-height:0}.right-panel-view{flex:1 1 0;min-width:0;overflow:hidden auto}.right-panel-view>[hidden]{display:none!important}.hierarchy-tab-pane,.hierarchy-tab-pane>.hierarchy-pane,.inspector-pane{width:100%;height:100%;max-height:none}.hierarchy-tab-pane>.hierarchy-pane{border-bottom:0}.hierarchy-toolbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;display:flex}.add-object{position:relative}.add-object-trigger{color:#cfe3f5;height:28px;font:inherit;cursor:pointer;background:#2d5c8a;border:1px solid #3a7cbf6b;border-radius:7px;align-items:center;gap:6px;padding:0 10px;font-size:10px;font-weight:700;display:inline-flex}.add-object-trigger:hover{background:#356795}.add-object-menu{z-index:20;border:1px solid var(--line);background:var(--panel);border-radius:9px;width:236px;max-height:330px;padding:6px;position:absolute;top:calc(100% + 6px);left:0;overflow:auto;box-shadow:0 12px 28px #0000002e}.add-object-group{gap:2px;padding-bottom:4px;display:grid}.add-object-heading{color:var(--muted);letter-spacing:.16em;text-transform:uppercase;padding:6px 8px 2px;font-size:8px;font-weight:700;display:block}.add-object-item{width:100%;color:var(--fg);font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:8px;padding:6px 8px;font-size:10px;display:flex}.add-object-item:hover{background:#3a7cbf1a;border-color:#3a7cbf6b}.add-object-item small{color:var(--muted);margin-left:auto;font-size:8px}.add-object-swatch{border:1px solid #ffffff40;border-radius:3px;flex:none;width:12px;height:12px}.card .add-object{margin-bottom:10px;display:block}.card .add-object-menu{width:auto;box-shadow:none;margin-top:6px;position:static}.gizmo-modes kbd{font-family:var(--mono);border:1px solid #fff3;border-radius:4px;margin-left:5px;padding:1px 4px;font-size:8px}.object-colors{gap:6px;margin:4px 0 12px;display:flex}.object-color{cursor:pointer;border:1px solid #ffffff40;border-radius:6px;width:22px;height:22px}.object-color.active{box-shadow:0 0 0 2px var(--accent)}.vec3-row{align-items:center;gap:5px;margin:10px 0;display:flex}.vec3-label{width:54px;color:var(--muted);flex:none;font-size:11px;font-weight:520}.number-field{touch-action:none;flex:1;align-items:stretch;min-width:0;display:flex}.number-field .axis{border:1px solid var(--line);background:var(--card2);width:18px;color:var(--muted);font-family:var(--mono);cursor:ew-resize;-webkit-user-select:none;user-select:none;touch-action:none;border-right:none;border-radius:6px 0 0 6px;flex:none;justify-content:center;align-items:center;font-size:9px;font-weight:650;display:flex}.number-field input{width:0;min-width:0;color:var(--fg);font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;cursor:ew-resize;background:0 0;border:1px solid #0000;border-radius:0 6px 6px 0;flex:1;padding:3px 6px;font-size:10.5px;font-weight:480}.number-field.editing input{cursor:text}.number-field:hover input{border-color:var(--line);background:var(--card2)}.number-field:focus-within .axis{border-color:var(--accent);background:var(--accent-soft)}.number-field input:focus{border-color:var(--accent);background:var(--card2);box-shadow:0 0 0 2px var(--accent-ring);cursor:text;outline:none}.hierarchy-context-menu{z-index:40;border:1px solid var(--line);background:var(--panel);border-radius:9px;width:236px;max-height:340px;padding:6px;position:fixed;overflow:auto;box-shadow:0 12px 28px #0000002e}.hierarchy-context-item{width:100%;color:var(--fg);font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:8px;padding:6px 8px;font-size:10px;font-weight:520;display:flex}.hierarchy-context-item:hover{background:#3a7cbf1a;border-color:#3a7cbf6b}.hierarchy-rename-input{border:1px solid var(--accent);background:var(--card2);min-width:0;color:var(--fg);font:inherit;box-shadow:0 0 0 2px var(--accent-ring);border-radius:4px;outline:none;flex:1;padding:2px 5px;font-size:10.75px;font-weight:520}.move-ab{flex-wrap:wrap;gap:6px;display:flex}.move-ab .btn{flex:1;min-width:62px;padding:6px 0;font-size:11px}.move-ab .btn.ghost.primary,.move-ab .btn.ghost.primary:hover{background:var(--grad);color:var(--on-accent);box-shadow:var(--glow);border-color:#0000}.move-ab .btn:disabled{opacity:.45;cursor:default}.move-slate{letter-spacing:.06em;color:var(--muted);margin:4px 0 10px;font-size:10.5px}.move-frames{gap:10px;display:flex}.move-frames figure{flex:1;min-width:0;margin:0}.move-frames figcaption{letter-spacing:.06em;color:var(--muted);text-align:center;margin-top:4px;font-size:10.5px}.move-head{margin-top:18px}.camera-editor-pointer{color:#aaa2b5;background:#5d487e1f;border:1px solid #9a7bd447;border-radius:4px;margin:4px 0 2px;padding:8px 9px;font-size:10px;line-height:1.35}.move-slate.inline{margin:0}.scene-save-error{color:#e58a80;background:#d65f5517;border-bottom:1px solid #d65f5557;flex:none;margin:0;padding:7px 12px;font-size:12px;font-weight:600;line-height:1.45}.panel.hierarchy-left{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;flex:none;min-height:0;padding:0;display:flex;overflow:hidden}.hierarchy-left .hierarchy-pane{border-bottom:0;flex:1;min-height:0;max-height:none}.inspector-sidebar{flex-direction:column;display:flex}.inspector-sidebar .inspector-pane{flex-direction:column;flex:1;min-height:0;display:flex}.viewport .viewmode{z-index:7;position:absolute;top:10px;left:10px}.bottom-window{background:var(--bg);border-top:1px solid var(--line);flex-direction:column;flex:none;min-height:0;display:flex}.bottom-window-tabs{border-bottom:1px solid var(--line);background:var(--panel);flex:none;gap:2px;padding:3px 8px 0;display:flex}.bottom-window-tabs button{height:26px;color:var(--muted);font:inherit;letter-spacing:.03em;cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:0;border-radius:3px 3px 0 0;padding:0 12px;font-size:10px;font-weight:700}.bottom-window-tabs button:hover{color:var(--fg);background:var(--hover)}.bottom-window-tabs button.active{background:var(--bg);border-color:var(--line2);color:var(--fg);box-shadow:inset 0 2px var(--accent)}.bottom-window-tabs button.active:hover{background:var(--bg)}.bottom-timeline{flex-direction:column;min-height:0;display:flex}.bottom-window>[hidden]{display:none!important}.assets-pane{height:var(--timeline-height);background:var(--panel);min-height:110px;max-height:58vh;padding:7px 10px;overflow-y:auto}.assets-shelf{grid-template-columns:170px minmax(560px,1fr) minmax(240px,.55fr);align-items:start;gap:8px;display:grid}.assets-shelf:has(.asset-storage-manager){display:block}.assets-shelf:has(.asset-storage-manager) .assets-shelf-toolbar{margin-bottom:6px}.assets-shelf-toolbar{grid-column:1/-1;justify-content:flex-end;align-items:center;min-height:24px;display:flex}.assets-manage-toggle,.asset-storage-undo,.asset-storage-cancel,.asset-storage-delete{border:1px solid var(--line2);background:var(--card2);color:var(--fg);cursor:pointer;border-radius:6px;font-size:11px;font-weight:600}.assets-manage-toggle,.asset-storage-undo{padding:4px 8px}.assets-manage-toggle:hover,.asset-storage-undo:hover,.asset-storage-cancel:hover{border-color:var(--accent)}.asset-storage-manager{flex-direction:column;gap:8px;min-height:0;display:flex}.asset-storage-section{--storage-group:222, 159, 74;border:1px solid var(--line2);background:linear-gradient(180deg, rgba(var(--storage-group), .06), transparent 38px);border-radius:6px;flex-direction:column;gap:5px;padding:5px;display:flex}.asset-storage-section.is-used{--storage-group:90, 155, 212}.asset-storage-section h4{letter-spacing:.08em;text-transform:uppercase;color:var(--muted2);margin:0;font-size:10px;font-weight:600}.asset-storage-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding-bottom:6px;display:flex}.asset-storage-head>div{flex:1;align-items:baseline;gap:10px;min-width:0;display:flex}.asset-storage-head h3{flex:none;margin:0;font-size:13px}.asset-storage-head p{max-width:none;color:var(--muted2);margin:0;font-size:11px;line-height:1.3}.asset-storage-undo{flex:none}.asset-storage-list{grid-template-columns:repeat(auto-fill,minmax(280px,360px));gap:5px;margin:0;padding:0;list-style:none;display:grid}.asset-storage-row{border:1px solid var(--line);background:var(--panel2,#1d1d1f);border-radius:5px;align-items:center;gap:7px;min-height:46px;padding:5px 6px;display:flex}.asset-storage-row-skeleton{height:46px;animation:1.1s ease-in-out infinite alternate asset-skeleton}.asset-storage-thumb{object-fit:contain;background:var(--card2,#161618);border-radius:4px;flex:none;width:34px;height:34px}.asset-storage-details{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.asset-storage-details strong,.asset-storage-details span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.asset-storage-details strong{font-size:11px}.asset-storage-details span{color:var(--muted2);font-size:10px}.asset-storage-details .asset-storage-usage{color:var(--accent);font-weight:600}.asset-storage-delete{color:#efaaa4;border-color:#c95b54b3;flex:none;padding:4px 6px}.asset-storage-delete:hover:not(:disabled){background:#c95b5424}.asset-storage-confirm{color:#efc4a1;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;max-width:300px;font-size:10px;display:flex}.asset-storage-cancel{padding:4px 6px}.asset-storage-delete:disabled,.asset-storage-cancel:disabled,.asset-storage-undo:disabled{opacity:.55;cursor:wait}.asset-delete-toast{z-index:41;border:1px solid var(--line2);background:var(--panel);max-width:min(520px,100vw - 32px);box-shadow:var(--shadow-md);border-radius:7px;align-items:center;gap:10px;padding:9px 12px;font-size:12px;display:flex;position:fixed;bottom:76px;left:50%;transform:translate(-50%)}.asset-delete-toast button{border:1px solid var(--accent);background:var(--accent-soft);color:var(--fg);cursor:pointer;border-radius:5px;flex:none;padding:4px 8px;font-size:11px;font-weight:700}.assets-section{--asset-group:90, 155, 212;border:1px solid var(--line2);background:linear-gradient(180deg, rgba(var(--asset-group), .075), rgba(var(--asset-group), .025) 42px);border-radius:6px;flex-direction:column;gap:4px;min-width:0;padding:5px;display:flex}.assets-section:first-of-type{--asset-group:164, 126, 221}.assets-section:nth-of-type(2){--asset-group:72, 174, 184}.assets-section:nth-of-type(3){--asset-group:222, 159, 74}.assets-section-title{text-transform:uppercase;letter-spacing:.08em;color:var(--muted2);margin:0 1px;font-size:10px;font-weight:600}.assets-grid{grid-template-columns:repeat(auto-fill,minmax(74px,1fr));gap:6px;display:grid}.asset-card{background:var(--panel2,#1d1d1f);border:1px solid var(--line);min-width:0;min-height:68px;color:var(--fg);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;border-radius:5px;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:6px 4px 5px;display:flex}.asset-card:hover{border-color:var(--accent);background:var(--hover)}.asset-card:active{cursor:grabbing}.asset-card-swatch{background:#f2eee6;border-radius:7px;width:30px;height:30px}.asset-card-preview{color:#bbc1c5;filter:drop-shadow(0 1px 1px #00000073);width:34px;height:34px;overflow:visible}.asset-card-preview .preview-detail{fill:none;stroke:#ecf0f29e;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round}.asset-card-preview .preview-limb{fill:none;stroke:#cdd2d5;stroke-width:4px;stroke-linecap:round;stroke-linejoin:round}.assets-section:first-of-type .asset-card-preview{fill:#bfc4c7;stroke:#dce0e2;stroke-width:1px}.asset-card-swatch[data-model=x-bot-tpose]{background:#faf8f2;border:1px solid #d8d2c4}.asset-card-label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:10px;font-weight:600;overflow:hidden}.asset-card-kind{color:var(--muted2);font-size:9px}.asset-card-thumb{object-fit:contain;background:var(--card2,#161618);border-radius:7px;width:30px;height:30px}.asset-card-thumb-skeleton,.asset-card-skeleton{animation:1.1s ease-in-out infinite alternate asset-skeleton}.inspector-row-buttons .btn{flex:auto;min-width:84px}.asset-card-failed{opacity:.72;cursor:not-allowed;border-color:#8a4a3a!important}.asset-card-failed .asset-card-kind{color:#e08a7a}.asset-card-skeleton{border:1px solid var(--line);background:var(--panel2,#1d1d1f);border-radius:5px;width:auto;min-width:0;height:68px;padding:0}@keyframes asset-skeleton{0%{opacity:.35}to{opacity:.7}}.assets-empty{border:1px dashed var(--line2);max-width:none;color:var(--muted2);border-radius:5px;margin:0;padding:7px 9px;font-size:10px;line-height:1.4}@media (width<=1180px){.assets-shelf{grid-template-columns:170px minmax(480px,1fr)}.assets-shelf-toolbar,.assets-section:last-child{grid-column:1/-1}}@media (width<=760px){.assets-shelf{grid-template-columns:1fr}.assets-shelf-toolbar,.assets-section:last-child{grid-column:auto}.asset-storage-list{grid-template-columns:1fr}}.asset-drag-ghost{z-index:1000;background:var(--panel2,#1d1d1f);border:1px solid var(--accent,#d8a24a);color:var(--fg);pointer-events:none;opacity:.92;border-radius:8px;align-items:center;gap:8px;padding:8px 12px;font-size:12px;display:flex;position:fixed;transform:translate(-50%,-120%)}.asset-drag-ghost .asset-card-swatch{border-radius:6px;width:22px;height:22px}.asset-drag-ghost-thumb{object-fit:contain;background:var(--card2,#161618);border-radius:6px;width:22px;height:22px}@media (width>=1041px){.panel.hierarchy-left{width:var(--hierarchy-width);min-width:220px;max-width:40vw}}@media (width<=1040px){.panel.hierarchy-left{border-right:0;border-bottom:1px solid var(--line);width:100%;max-height:38vh}.viewport .viewmode{top:8px;left:8px}}.editor-toolbar{justify-self:center;align-items:center;gap:8px;display:flex}.tool-switch{border:1px solid var(--line);background:var(--card2);border-radius:5px;gap:2px;padding:2px;display:flex}.tool-switch button,.snap-switch{height:24px;color:var(--muted);font:inherit;letter-spacing:.03em;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:3px;padding:0 10px;font-size:10px;font-weight:700}.tool-switch button:hover,.snap-switch:hover{color:var(--fg);background:var(--hover)}.tool-switch button.active{background:var(--accent);color:var(--on-accent)}.snap-switch{border-color:var(--line)}.snap-switch.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-2)}.card.foldout{padding-top:0}.foldout-head{border:0;border-bottom:1px solid var(--line);background:var(--card2);width:calc(100% + 36px);color:inherit;font:inherit;cursor:pointer;text-align:left;align-items:center;gap:7px;margin:0 -18px;padding:10px 18px;display:flex}.foldout-arrow{width:10px;color:var(--muted);flex:none;font-size:9px}.card.foldout h3{text-transform:none;letter-spacing:0;margin:0}.card.foldout h3:before{display:none}.foldout-body{padding-top:13px}.viewport-titlebar{z-index:8;background:var(--panel);border-bottom:1px solid var(--line);align-items:stretch;min-width:0;height:27px;display:flex;position:absolute;top:0;left:0;right:0;overflow:hidden}.workflow-mode-switch{border-right:1px solid var(--line);background:var(--panel);flex:none;align-items:stretch;gap:2px;padding:3px 4px;display:flex}.workflow-mode-switch button{min-width:54px;height:21px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:3px;padding:0 8px;font-size:10px;font-weight:700}.workflow-mode-switch button:hover{color:var(--fg);background:var(--hover)}.workflow-mode-switch button.active{color:#fff;background:#2d5c8a;border-color:#4b8bc4;box-shadow:0 0 0 1px #4b8bc43d}.workflow-toolbar-hint{color:#9fb7cc;white-space:nowrap;align-self:center;padding:0 10px;font-size:10px;font-weight:600}.app[data-workflow-mode=scene] .workflow-camera-context,.app[data-workflow-mode=camera] .workflow-scene-context,.app[data-workflow-mode=motion] .workflow-scene-context,.app[data-workflow-mode=motion] .workflow-camera-context{display:none}.app[data-workflow-mode=motion] .workflow-toolbar-hint{display:inline-flex}.app[data-workflow-mode=motion] .vp-inset,.app[data-workflow-mode=motion] .vp-shot-preview,.app[data-workflow-mode=scene] .tl-pose-tools,.app[data-workflow-mode=scene] .tl-motion-tools,.app[data-workflow-mode=scene] .take-bar,.app[data-workflow-mode=camera] .tl-pose-tools,.app[data-workflow-mode=camera] .tl-motion-tools,.app[data-workflow-mode=camera] .take-bar{display:none!important}.viewport .viewmode.scene-only{border:1px solid var(--line);border-top:0;top:0;left:168px}.btn,.presets button,.field input[type=text],.field input[type=number],.field textarea,.field select,.dropdown .trigger,.dropdown-menu,.modal,.toast,.promptbox,.add-subject,.segmented,.tl-btn,.add-object-trigger,.hierarchy-context-menu,.add-object-menu,.card{box-shadow:none;border-radius:2px}.btn{color:var(--fg);background:#383838;border:1px solid #1a1a1a;transform:none}.btn:hover{box-shadow:none;background:#3f3f3f;border-color:#1a1a1a;transform:none}.btn:active{transform:none}.btn.primary,.btn.primary:hover{box-shadow:none;background:#2d5c8a;border:1px solid #1a1a1a;transform:none}.btn.primary:after{display:none}.btn.ghost{border-color:var(--line2);background:0 0}.btn.ghost:hover{background:var(--hover);box-shadow:none}.presets button{color:var(--fg);background:#383838;border:1px solid #1a1a1a}.presets button:hover{box-shadow:none;background:#3f3f3f;transform:none}.presets button.active{color:#fff;box-shadow:none;background:#2d5c8a;border-color:#1a1a1a}.field input[type=text],.field input[type=number],.field textarea,.field select,.dropdown .trigger{color:var(--fg);background-color:#2a2a2a;border:1px solid #1a1a1a}.field input[type=text]:focus,.field input[type=number]:focus,.field textarea:focus,.field select:focus,.dropdown.open .trigger{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.dropdown-menu{background:#2c2c2c;border:1px solid #1a1a1a;box-shadow:0 4px 12px #00000080}.dropdown-item:hover{color:#fff;background:#2d5c8a}.card{background:var(--panel);border:1px solid var(--line);padding:0 0 12px}.card:after{display:none}.card:hover{border-color:var(--line)}.foldout-head{border-bottom:1px solid var(--line);background:#2f2f2f;font-weight:600}input[type=range]{background:#1e1e1e;border-radius:0;height:4px}input[type=range]::-webkit-slider-thumb{width:12px;height:12px;box-shadow:none;background:#c4c4c4;border:1px solid #1a1a1a;border-radius:2px}input[type=range]::-webkit-slider-thumb:hover{background:#fff;transform:none}input[type=range]:active::-webkit-slider-thumb{box-shadow:0 0 0 1px var(--accent);transform:none}input[type=range]::-moz-range-thumb{width:12px;height:12px;box-shadow:none;background:#c4c4c4;border:1px solid #1a1a1a;border-radius:2px}.segmented{background:#2a2a2a;border:1px solid #1a1a1a;padding:2px}.segmented:before{box-shadow:none;background:#2d5c8a;border-radius:2px}.modal{background:#2c2c2c;border:1px solid #1a1a1a;box-shadow:0 8px 30px #0009}.modal:before{display:none}.toast{background:#2c2c2c;border:1px solid #1a1a1a;box-shadow:0 4px 12px #00000080}.pose-studio{-webkit-backdrop-filter:none;background:#2c2c2cf7;border:1px solid #1a1a1a;border-radius:2px;box-shadow:0 8px 30px #0009}.pose-studio:before{display:none}.hierarchy-row-wrap{height:22px}.hud,.caption,.viewmode{-webkit-backdrop-filter:none;border-radius:2px}.tool-switch button{align-items:center;gap:6px;display:inline-flex}.tool-icon{flex:none;width:13px;height:13px}.inspector-sidebar .inspector-pane{background:#2c2c2c}.inspector-heading{background:#282828;border-bottom:1px solid #1a1a1a;align-items:center;gap:8px;height:28px;padding:0 12px;display:flex}.inspector-heading>span{margin:0;font-size:9px}.inspector-scroll{background:#2c2c2c;padding:0}.inspector-scroll>.card{margin:0}.card.foldout,.card{background:0 0;border:0;border-bottom:1px solid #232323;border-radius:0;padding:0 0 8px}.foldout-head{letter-spacing:0;background:0 0;border-bottom:0;width:100%;height:24px;margin:0;padding:0 8px 0 6px;font-size:11px;font-weight:600}.foldout-head:hover{background:#ffffff0a}.foldout-arrow{width:12px;font-size:8px}.row{align-items:center;gap:8px;min-height:22px;margin:3px 0;font-size:11px;display:flex}.row>span:first-child{width:84px;color:var(--muted);flex:none;font-size:11px}.row .val{width:auto;min-width:34px;font-size:11px}input[type=range]{height:3px}.multimodel-card{background:linear-gradient(#3a7cbf1f,#ffffff06);border:1px solid #3a7cbf61;border-radius:3px;padding:8px}.multimodel-card-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.multimodel-card-head strong,.multimodel-card-head span{display:block}.multimodel-card-head strong{color:#dce7ff;font-size:11px}.multimodel-card-head div>span{color:var(--muted);margin-top:2px;font-size:9px}.multimodel-status{border:1px solid var(--line);color:var(--muted);font-family:var(--mono);letter-spacing:.08em;padding:2px 5px;font-size:8px}.multimodel-status.ready{color:#9fe0a7;border-color:#7ed08f8c}.multimodel-status.error{color:#ff9b9f;border-color:#e5484da6}.multimodel-source-row,.multimodel-url-row{align-items:center;gap:6px;margin-top:8px;display:flex}.multimodel-input-block{background:#0000001f;border:1px solid #ffffff1a;margin-top:9px;padding:8px}.multimodel-input-block+.multimodel-input-block{margin-top:6px}.multimodel-input-label{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.multimodel-input-label strong{color:#c9d8f7;font-size:10px;font-weight:600}.multimodel-input-label span{color:var(--muted2);white-space:nowrap;font-size:8px}.multimodel-file-input{display:none}.multimodel-file-name{min-width:0;color:var(--muted2);text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.multimodel-url-input{box-sizing:border-box;border:1px solid var(--line);background:var(--card2);width:100%;height:26px;color:var(--fg);font-family:var(--mono);margin-top:7px;padding:2px 8px;font-size:10px;display:block}.multimodel-url-input::placeholder{color:var(--muted2)}.multimodel-url-input:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);outline:none}.multimodel-url-actions{align-items:center;gap:6px;margin-top:6px;display:flex}.multimodel-url-actions .btn{flex:1}.multimodel-status.busy{color:#a8c4f2;border-color:#7ea0e08c}.multimodel-progress{align-items:center;gap:7px;margin-top:9px;display:flex}.multimodel-progress-track{background:#00000059;flex:1;height:4px;overflow:hidden}.multimodel-progress-bar{background:var(--accent);width:0;height:100%;transition:width .12s linear}.multimodel-progress-bar.indeterminate{width:35%;animation:1.1s ease-in-out infinite multimodel-slide}@keyframes multimodel-slide{0%{transform:translate(-100%)}to{transform:translate(300%)}}.multimodel-progress span{text-align:right;min-width:62px;color:var(--muted2);font-family:var(--mono);flex:none;font-size:9px}.multimodel-error{color:#ff9b9f;background:#e5484d1a;border:1px solid #e5484d73;margin:9px 0 0;padding:6px 8px;font-size:9.5px;line-height:1.45}.multimodel-receipt{background:#7ed08f12;border:1px solid #7ed08f4d;gap:8px;margin-top:9px;padding:7px;display:flex}.multimodel-preview{object-fit:cover;background:#000;border:1px solid #ffffff1f;flex:none;width:76px;height:44px}.multimodel-receipt-body{flex-direction:column;gap:2px;min-width:0;display:flex}.multimodel-receipt-body strong{color:#dbe8ff;text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.multimodel-receipt-body span{color:var(--muted2);font-family:var(--mono);font-size:9px}.multimodel-receipt-timeline{color:#9fe0a7!important}.multimodel-extract{margin-top:9px}.multimodel-extract .btn{width:100%}.multimodel-extract-receipt{color:#9fe0a7;background:#7ed08f12;border:1px solid #7ed08f4d;margin:8px 0 0;padding:6px 8px;font-size:9.5px;line-height:1.45}.multimodel-note{color:var(--muted2);margin:8px 0 0;font-size:9px;line-height:1.45}.readout{color:var(--muted2);margin-top:2px;font-size:10px}.field{margin:4px 0}.field label{color:var(--muted);margin-bottom:3px;font-size:10px}.field input[type=text],.field input[type=number],.field textarea,.field select,.dropdown .trigger{border-radius:2px;height:22px;padding:2px 8px;font-size:11px}.field textarea{height:auto;min-height:72px;padding:6px 8px}.field select{background-position:right 7px center;padding-right:26px}.dropdown-menu{padding:3px}.dropdown-item{border-radius:2px;padding:4px 8px;font-size:11px}.vec3-row{gap:3px;min-height:22px;margin:4px 0}.vec3-label{width:52px;font-size:11px}.number-field .axis{border-radius:2px 0 0 2px;width:15px;font-size:9px}.number-field input{border-radius:0 2px 2px 0;height:20px;padding:1px 5px;font-size:11px}.presets{gap:4px;margin:4px 0}.presets button{height:24px;padding:0 8px;font-size:11px;font-weight:500}.check{gap:6px;min-height:20px;margin-top:4px;font-size:11px}.check input{width:13px;height:13px}.btn{white-space:nowrap;justify-content:center;align-items:center;height:24px;padding:0 12px;font-size:11px;font-weight:500;display:inline-flex}.btn.ghost{margin-top:6px;padding:0 12px}.btn.generate,.btn.cta{height:30px;font-size:12px}.segmented{margin-bottom:4px}.segmented button{padding:3px 9px;font-size:11px}.subjects-row{gap:6px}.subject-box{background:#282828;border-radius:2px;padding:6px 8px 8px}.sb-name,.subject-box-head>span{font-size:11px}.cslider-head{margin-bottom:3px;font-size:10px}.add-subject{border-width:1px;border-radius:2px;margin-top:6px;padding:6px;font-size:11px}.inspector-hint,.ardy-hint,.ardy-status,.hint,.ardy-caveat,.ardy-meta,.ardy-clamp{font-size:10px;line-height:1.5}.hint{margin-top:6px}.ardy-report,.inspector-status-grid{border-radius:2px;padding:6px 8px;font-size:10px}.inspector-list button{border-radius:2px;padding:4px 8px;font-size:11px}.presets.gizmo-modes{grid-template-columns:1fr 1fr 1fr}.presets.gizmo-modes button{padding:0 4px}.presets.gizmo-modes kbd{border-radius:2px;padding:0 3px;font-size:8px}.object-colors{gap:4px;margin:4px 0 8px}.object-color{border-radius:2px;width:18px;height:18px}.editor-toolbar.scene-tools{scrollbar-width:none;background:var(--panel);flex:1;justify-content:flex-start;gap:0;min-width:0;height:27px;display:flex;position:static;overflow:auto hidden}.editor-toolbar.scene-tools::-webkit-scrollbar{display:none}.editor-toolbar.scene-tools .tool-switch{background:0 0;border:0;border-radius:0;flex:none;padding:0}.editor-toolbar.scene-tools .transform-toolbar-label{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;flex:none;align-self:center;padding:0 8px;font-size:9px;font-weight:700}.editor-toolbar.scene-tools .tool-switch button,.editor-toolbar.scene-tools .snap-switch{border:0;border-right:1px solid var(--line);background:0 0;border-radius:0;height:26px}.editor-toolbar.scene-tools .tool-switch button{justify-content:center;gap:0;width:29px;padding:0;font-size:0}.editor-toolbar.scene-tools .tool-switch .tool-icon{width:14px;height:14px}.editor-toolbar.scene-tools .snap-switch{padding:0 6px;font-size:8px}.editor-toolbar.scene-tools .tool-switch button.active{color:#fff;background:#2d5c8a}.editor-toolbar.scene-tools .snap-switch.active{color:var(--fg);background:#2d5c8a59}.viewport-toolbar-separator{background:var(--line);flex:0 0 1px;align-self:stretch}.editor-toolbar.scene-tools .settings-separator{margin-left:auto}.viewport-toolbar-field,.viewport-fov-control{border-right:1px solid var(--line);color:#9aa0a6;white-space:nowrap;flex:none;align-items:center;gap:4px;height:26px;padding:0 4px;font-size:9px;display:flex}.viewport-toolbar-field>span{display:none}.viewport-toolbar-field select{color:#dedede;min-width:0;height:21px;font:inherit;background:#242424;border:1px solid #494949;border-radius:2px;padding:0 18px 0 5px;font-size:10px}.viewport-toolbar-field.shot-field select{width:92px}.viewport-toolbar-field.ratio-field select{width:64px}.viewport-fov-control input{accent-color:#4b8bc4;width:54px}.viewport-fov-control output{color:#efefef;text-align:right;min-width:25px;font-size:10px}.viewport-fov-control small{color:#9aa0a6;font-size:9px}.viewport-toolbar-spacer{display:none}.editor-toolbar.scene-tools>button{border:0;border-right:1px solid var(--line);color:#bdbdbd;height:26px;font:inherit;cursor:pointer;white-space:nowrap;background:0 0;flex:none;padding:0 6px;font-size:9px}.editor-toolbar.scene-tools>button:hover{color:#fff;background:#363636}.export-menu-wrap{flex:none;align-items:center;display:flex;position:relative}.export-menu-wrap .topbar-action{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.export-menu-wrap .topbar-action .caret{color:var(--muted2);font-size:10px}.export-menu{z-index:80;width:min(340px,100vw - 16px);min-width:240px;max-height:calc(100dvh - 90px);position:fixed;left:auto;overflow-y:auto}.export-trigger-state{color:var(--muted2);font-size:10px}.export-trigger-state[data-phase=failed]{color:var(--fg)}.export-status{border-bottom:1px solid var(--line);color:var(--fg);overflow-wrap:anywhere;margin-bottom:6px;padding:10px;font-size:12px;line-height:1.5}.export-status strong{color:var(--cyan);display:block}.export-status p{color:var(--muted);margin:6px 0}.export-status progress{width:100%;height:6px;accent-color:var(--cyan);margin-top:8px;display:block}.export-status-actions{flex-wrap:wrap;gap:6px;display:flex}.export-status-actions button{border:1px solid var(--line);background:var(--panel);min-height:36px;color:var(--fg);font:inherit;cursor:pointer;border-radius:6px;padding:7px 10px}.result-modal .export-status{margin-top:12px}.export-menu button{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.export-menu button.export-menu-primary{color:var(--cyan);font-weight:700}.export-menu button:disabled{opacity:.38;cursor:default;background:0 0}.export-menu button small{color:var(--muted2);font-size:10px}.export-menu-hint{border-top:1px solid var(--line);color:var(--muted2);margin:4px 2px 0;padding:7px 10px 3px;font-size:10px;line-height:1.4}.settings-menu-wrap{flex:none;align-items:center;display:flex;position:relative}.live-workspace-handle{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;max-width:min(180px,6.5vw);overflow:hidden}.view-menu-wrap{flex:none;align-self:stretch;align-items:center;margin-left:auto;display:flex;position:relative}.settings-menu-trigger{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.settings-menu-trigger .caret{color:var(--muted2);font-size:10px}.settings-menu{z-index:80;min-width:210px;top:calc(100% + 6px);left:auto;right:0}.settings-menu h4{color:var(--muted2);letter-spacing:.06em;text-transform:uppercase;margin:6px 10px 2px;font-size:10px;font-weight:650}.settings-menu button{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.settings-menu button .mark{color:var(--muted2);font-size:10px}.settings-menu button[aria-pressed=true] .mark{color:var(--cyan)}.motion-readiness{min-width:0;color:var(--muted);word-break:keep-all;overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:4px 0;font-size:11px;line-height:1.45;display:flex}.motion-readiness[data-state=ready]{color:var(--cyan)}.motion-readiness .btn{white-space:normal;flex:none;margin:0}.settings-menu:has(.motion-setup){width:min(360px,100vw - 16px);min-width:0;max-height:calc(100dvh - 64px);overflow-y:auto}.motion-setup{border-block:1px solid var(--line2);color:var(--fg);gap:8px;padding:8px;font-size:11px;line-height:1.5;display:grid}.motion-setup p{margin:0}.motion-setup code{background:var(--panel);border-radius:var(--radius);font-family:var(--mono);white-space:normal;overflow-wrap:anywhere;padding:8px;display:block}.motion-setup a{color:var(--cyan)}.motion-readiness button:focus-visible,.motion-setup :is(button,a):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.view-menu-trigger{border:0;border-left:1px solid var(--line);color:#bdbdbd;height:26px;font:inherit;cursor:pointer;white-space:nowrap;background:0 0;flex:none;align-items:center;gap:4px;padding:0 8px;font-size:9px;display:inline-flex;position:relative}.view-menu-trigger:hover,.view-menu-trigger[aria-expanded=true]{color:#fff;background:#363636}.view-menu-trigger .caret{color:var(--muted2);font-size:8px}.view-menu-dot{background:var(--accent);border-radius:50%;flex:none;width:5px;height:5px}.view-menu{z-index:80;min-width:200px;position:fixed;left:auto}.view-menu .view-menu-item{align-items:center;gap:8px;display:flex}.view-menu .view-menu-item.active{background:var(--accent-soft)}.view-menu-mark{width:12px;color:var(--accent);text-align:center;flex:none;font-size:11px}.view-menu-group{border-top:1px solid var(--line);flex-direction:column;margin-top:4px;padding-top:4px;display:flex}.view-menu-label{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;padding:4px 10px;font-size:10px;font-weight:700}.placement-fields .vec3-row{grid-template-columns:56px 1fr 1fr}.placement-fields .vec3-row .number-field:nth-of-type(2) .axis{color:#79c0ff}.vec3-row .number-field:first-of-type .axis{color:#e5484d}.vec3-row .number-field:nth-of-type(2) .axis{color:#7ee787}.vec3-row .number-field:nth-of-type(3) .axis{color:#79c0ff}.hierarchy-toggle{color:#a0a0a0;font-size:11px}.hierarchy-row-wrap{margin-left:calc(var(--hierarchy-depth) * 12px)}.hierarchy-row-wrap:before{background:#ffffff12;left:-9px}.hierarchy-icon{width:10px;height:10px}.hierarchy-label{font-size:11px}.hierarchy-heading,.inspector-heading{background:#2c2c2c;border-bottom:1px solid #1a1a1a;height:26px;padding:0 10px}.hierarchy-heading strong,.inspector-heading strong{font-size:11px;font-weight:600}.hierarchy-kicker,.inspector-heading>span{display:none}.vec3-row{grid-template-columns:56px 1fr 1fr 1fr;align-items:center;gap:4px;display:grid}.vec3-label{width:auto}.number-field{min-width:0}.number-field input{text-align:left;padding-left:4px}.viewport .viewmode.scene-only{border:1px solid var(--line);border-top:0;border-radius:0;top:0;left:auto;right:0}.object-colors{margin:2px 0 6px}.inspector-hint{margin:2px 0 6px;line-height:1.45}:is(.field:has(input[type=text]),.field:has(input[type=number]),.field:has(select),.field:has(.dropdown)){grid-template-columns:84px 1fr;align-items:center;gap:8px;display:grid}:is(.field:has(input[type=text]) label,.field:has(input[type=number]) label,.field:has(select) label,.field:has(.dropdown) label){color:var(--muted);margin:0;font-size:11px}.ardy-clamp{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.inspector-heading strong{letter-spacing:0;font-size:12.5px;font-weight:700}.foldout-head{gap:6px;height:26px;font-size:11.5px;font-weight:700}.foldout-head:after{content:"";background:0 0;border:1px solid #6f6f6f;border-radius:1px;flex:none;order:1;width:10px;height:10px}.foldout-arrow{color:#c4c4c4;order:0;width:12px;font-size:8px}.foldout-title{order:2}.card.foldout.open .foldout-head{border-bottom:1px solid #232323}.card.foldout{border-bottom:0;padding-bottom:6px}.card.foldout.open{border-bottom:1px solid #232323}.foldout-body{padding:6px 12px 2px 22px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#4a4a4a;border:none;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#5c5c5c}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-corner{background:0 0}.inspector-scroll{overflow-x:hidden}.inspector-heading strong{font-size:11px;font-weight:600}.inspector-heading-selection{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-left:auto;font-size:10px;font-weight:400;overflow:hidden}.inspector-actions-wrap{flex:none;position:relative}.inspector-actions-trigger{width:24px;height:22px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;padding:0;font-size:17px;line-height:18px}.inspector-actions-trigger:hover,.inspector-actions-trigger[aria-expanded=true]{border-color:var(--line2);background:var(--hover);color:var(--fg)}.inspector-actions-menu{z-index:12;border:1px solid var(--line2);background:var(--panel);min-width:128px;box-shadow:var(--shadow-md);border-radius:5px;padding:4px;display:grid;position:absolute;top:calc(100% + 4px);right:0}.inspector-actions-menu button{color:var(--fg);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:3px;padding:6px 8px;font-size:11px}.inspector-actions-menu button:hover{background:var(--hover);color:var(--fg)}.inspector-scroll{padding-bottom:16px}.card.foldout:last-child{border-bottom:0}.inspector-scroll{flex-direction:column;display:flex}.inspector-scroll>.card.foldout.open:last-child{flex-direction:column;flex:1 0 auto;min-height:0;display:flex;overflow:visible}.inspector-scroll>.card.foldout.open:last-child .foldout-body{flex:1 0 auto;min-height:0}.inspector-footer{background:#282828;border-top:1px solid #1a1a1a;flex:none;justify-content:flex-end;margin-top:auto;padding:6px 12px;display:flex}.inspector-footer span{color:var(--muted2);font-size:10px}.scene-delete-toast{z-index:42;border:1px solid var(--line2);background:var(--panel);box-shadow:var(--shadow-md);border-radius:6px;align-items:center;gap:10px;padding:8px 10px;font-size:11px;display:flex;position:fixed;bottom:76px;left:50%;transform:translate(-50%)}.scene-delete-toast button{border:1px solid var(--accent);background:var(--accent-soft);color:var(--fg);cursor:pointer;border-radius:4px;padding:4px 8px;font-size:11px;font-weight:700}.hierarchy-row-wrap:before{display:none}.hierarchy-icon{width:10px;height:10px;box-shadow:none;background:#ffffff0d;border:1px solid #8a8a8a;border-radius:2px;transform:none}.hierarchy-icon.shot{background:#3a7cbf2e;border-color:#3a7cbf;border-radius:50%}.hierarchy-icon.camera{background:#d4972d29;border-color:#d4972d;transform:skew(-8deg)}.hierarchy-icon.character{background:#6f9f8629;border-color:#6f9f86;border-radius:50% 50% 3px 3px}.hierarchy-icon.motion,.hierarchy-icon.clip,.hierarchy-icon.prompt{background:#3a7cbf2e;border-color:#3a7cbf}.hierarchy-icon.key{background:#d65f5529;border-color:#d65f55;transform:rotate(45deg)scale(.78)}.hierarchy-icon.rig,.hierarchy-icon.bone{background:#8a759d29;border-color:#8a759d;border-radius:50%}.hierarchy-icon.path{background:#6f9f8629;border-color:#6f9f86;border-radius:999px;width:12px;height:5px}.hierarchy-icon.environment{background:#6f9f8629;border-color:#6f9f86;border-radius:50%}.hierarchy-icon.props,.hierarchy-icon.object{background:#c7836f29;border-color:#c7836f}.hierarchy-badge{color:var(--muted2);background:0 0;min-width:0;padding:0;font-size:9px}.hierarchy-badge:where([data-zero=true]){display:none}.hierarchy-status{color:var(--muted2);letter-spacing:0;text-transform:none;font-size:9px}.hierarchy-row{min-width:0}.hierarchy-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.hierarchy-badge,.hierarchy-status{flex:none}.hierarchy-row-wrap{border-radius:2px;height:22px;padding-right:6px}.hierarchy-row-wrap.selected{box-shadow:none;background:#2d5c8a}.hierarchy-eye{color:#c5ccd8;cursor:pointer;background:0 0;border:0;flex:0 0 22px;place-items:center;padding:0;display:grid}.hierarchy-eye[data-hidden=true]{color:#7d8696}.hierarchy-row-wrap[data-own-hidden=true]{opacity:.45}.result-move-slate{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.result-move-slate small{color:var(--cyan);font-family:var(--sans);letter-spacing:0;text-align:right;font-size:9.5px;font-weight:600}.result-modal{width:560px}.result-modal .promptbox{max-height:100px;overflow-y:auto}.result-next-intro{margin:0 0 10px}.result-handoff-steps{border-top:1px solid var(--line2);margin:0;padding:0;list-style:none}.result-handoff-steps li{border-bottom:1px solid var(--line2);grid-template-columns:128px minmax(0,1fr);gap:10px;padding:9px 0;font-size:10.5px;line-height:1.45;display:grid}.result-handoff-steps strong{color:var(--fg);font-weight:700}.result-handoff-steps span{color:var(--muted)}.result-handoff-note{color:var(--cyan);margin:10px 0 0;font-size:10px;line-height:1.45}.result-next{border:1px solid var(--line2);border-left:3px solid var(--accent);background:#282828;margin-top:16px;padding:12px 13px}.result-next h4{margin:0 0 5px;font-size:12px;font-weight:650}.result-next p{color:var(--muted);margin:0;font-size:11px;line-height:1.5}.result-next code{color:var(--fg);font-family:var(--mono);font-size:10px}.result-reference-video{border-top:1px solid var(--line2);padding-top:9px;display:block;margin-top:10px!important}.result-reference-video strong{color:var(--cyan);text-transform:uppercase;letter-spacing:.07em;font-size:10px;font-weight:650;display:block}.result-reference-video code{overflow-wrap:anywhere;margin:3px 0 2px;line-height:1.35;display:block}@media (prefers-reduced-motion:reduce){.modal-overlay,.modal{animation:none}}.rig-picker{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.rig-option{border:1px solid var(--line2);background:var(--card2);color:var(--muted);cursor:pointer;border-radius:8px;flex-direction:column;align-items:center;gap:6px;padding:8px 6px 7px;font-size:11px;font-weight:700;display:flex}.rig-option img,.rig-option .tile-blank{object-fit:contain;border-radius:5px;width:100%;height:66px}.rig-option:hover{border-color:var(--accent);color:var(--fg)}.rig-option.active{border-color:var(--accent);color:var(--fg);background:var(--accent-soft)}.inspector-empty{color:var(--muted);margin:0;padding:18px 16px;font-size:11.5px;line-height:1.5}.inspector-scroll>.card{flex-shrink:0}.matte-editor{flex-direction:column;gap:6px;margin:6px 0 2px;display:flex}.matte-canvas{border:1px solid var(--line);touch-action:none;cursor:crosshair;background:#141819;border-radius:3px;width:100%;height:340px;display:block}.presets.matte-modes{flex-wrap:wrap;gap:6px;display:flex}.props-drop{border:1px dashed #0000;border-radius:4px;flex-direction:column;gap:8px;padding:2px;transition:border-color .12s,background .12s;display:flex}.props-drop[data-drop=over],.hierarchy-row-wrap[data-drop=over]{border-color:var(--accent,#e7b557);background:#e7b5571a}.hierarchy-row-wrap[data-drop=over]{border:1px dashed var(--accent,#e7b557);border-radius:3px}.viewport[data-drop=over]{outline:2px dashed var(--accent,#e7b557);outline-offset:-6px}@media (prefers-reduced-motion:reduce){.props-drop{transition:none}}.matte-slider{grid-template-columns:auto 1fr 4.6rem;align-items:center;gap:10px;margin:8px 0;display:grid}.matte-slider label{color:var(--muted);font-size:11.5px}.matte-slider input[type=range]{width:100%;min-width:0;accent-color:var(--accent)}.matte-slider input[type=number]{background:var(--card2);border:1px solid var(--line);width:100%;color:var(--fg);font-variant-numeric:tabular-nums;text-align:right;border-radius:4px;padding:5px 6px;font-size:12px}.btn.matte-apply{margin-top:4px}.btn.matte-apply[disabled]{opacity:.5;cursor:not-allowed}.inspector-hint.matte-state{border-left:2px solid var(--accent);background:var(--card2);border-radius:0 3px 3px 0;padding:6px 8px}.matte-tools{justify-content:space-between;align-items:flex-start;gap:12px;margin:8px 0;display:flex}.matte-history{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.matte-tools .presets.matte-modes{flex-wrap:nowrap;gap:6px;margin:0;display:flex}.matte-tools .presets.matte-modes button{text-align:center;white-space:nowrap;flex:none;justify-content:center;align-items:center;width:4rem;padding:9px 2px;font-size:11.5px;line-height:1.2;display:flex}.matte-tools .presets.matte-icons button{width:2.3rem;font-size:13px}.vp-inset-tag.vp-look-through-exit{z-index:6;pointer-events:auto;cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:4px 11px;display:inline-flex;position:absolute;top:60px;left:50%;right:auto;transform:translate(-50%)}.vp-look-through-exit .vp-exit-hint{opacity:.6;letter-spacing:.04em;font-size:9px}.crash-screen{background:var(--bg,#1e1e1e);min-height:100vh;color:var(--fg,#d2d2d2);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:24px;display:flex}.crash-screen h1{margin:0;font-size:18px}.crash-screen p{color:var(--muted,#9a9a9a);max-width:52ch;margin:0}.crash-screen .crash-detail{border:1px solid var(--line2,#3c3c3c);background:var(--panel,#2c2c2c);max-width:min(72ch,90vw);color:var(--muted,#9a9a9a);text-align:left;white-space:pre-wrap;border-radius:6px;padding:10px 14px;font-size:12px;overflow:auto}.crash-screen button,.gl-lost-card button{border:1px solid var(--line2,#3c3c3c);background:var(--card,#383838);color:var(--fg,#d2d2d2);cursor:pointer;border-radius:6px;padding:6px 16px}.gl-lost-overlay{z-index:9;background:#0c0c0ec7;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.gl-lost-card{border:1px solid var(--line2,#3c3c3c);background:var(--panel,#2c2c2c);max-width:46ch;color:var(--fg,#d2d2d2);text-align:center;border-radius:8px;flex-direction:column;align-items:center;gap:8px;padding:18px 22px;display:flex}.gl-lost-card p{color:var(--muted,#9a9a9a);margin:0;font-size:12px}.preserve-strength-row{align-items:center;gap:8px;display:flex}.preserve-strength-row input[type=range]{flex:1;min-width:0}.preserve-strength-value{font-variant-numeric:tabular-nums;opacity:.8}.preserve-strength-scale{justify-content:space-between;gap:8px;margin-top:3px;display:flex}.preserve-tracks-summary{opacity:.85;margin-top:4px}.stage canvas.line-edit-overlay,.stage canvas.line-edit-overlay:active{z-index:7;pointer-events:none;cursor:inherit;position:absolute;inset:0}.stage[data-line-grab=hover] canvas,.stage[data-line-grab=hover] canvas:active{cursor:grab}.stage[data-line-grab=drag] canvas,.stage[data-line-grab=drag] canvas:active{cursor:grabbing}.stage[data-line-grab=draw] canvas,.stage[data-line-grab=draw] canvas:active{cursor:crosshair}.line-edit-panel{border-left:2px solid var(--line2,#3c3c3c);flex-direction:column;gap:6px;margin-top:8px;padding-left:8px;display:flex}.line-edit-range-row{align-items:center;gap:6px;display:flex}.line-edit-range-row input[type=number]{font-variant-numeric:tabular-nums;flex:1;min-width:0}.line-edit-range-row span{opacity:.6}.line-edit-radius-row{align-items:center;gap:8px;display:flex}.line-edit-radius-row input[type=range]{flex:1;min-width:0}.line-edit-radius-value{opacity:.75;font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}.line-edit-pending{opacity:.85;margin-top:2px}.line-edit-drift{border-left:2px solid var(--warn,#ff9c6e);opacity:.9;margin-top:2px;padding-left:6px}.line-preview-busy{opacity:.8;margin-top:2px}.line-preview-busy:before{content:"";background:var(--accent,#3a7cbf);vertical-align:middle;border-radius:50%;width:6px;height:6px;margin-right:6px;animation:1s ease-in-out infinite line-preview-pulse;display:inline-block}@keyframes line-preview-pulse{0%,to{opacity:.25}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.line-preview-busy:before{opacity:.8;animation:none}}.line-preview-live{border-left:2px solid var(--accent,#3a7cbf);opacity:.9;margin-top:2px;padding-left:6px}.line-preview-time{font-variant-numeric:tabular-nums;opacity:.7;white-space:nowrap}.line-preview-error{color:var(--warn,#ff9c6e);opacity:.95;margin-top:2px}.take-bar{border-bottom:1px solid var(--line);background:var(--panel);flex-wrap:wrap;flex:none;align-items:center;gap:6px 14px;padding:5px 8px;display:flex}.take-modes{align-items:flex-start;gap:8px;display:flex}.take-mode{flex-direction:column;gap:1px;display:flex}.take-mode-btn{border:1px solid var(--line2);background:var(--bg);height:26px;color:var(--fg);font:inherit;letter-spacing:.02em;cursor:pointer;border-radius:3px;padding:0 14px;font-size:11px;font-weight:700}.take-mode-btn:hover{background:var(--hover)}.take-mode-btn.active{border-color:var(--accent);box-shadow:inset 0 -2px var(--accent)}.take-mode-btn.disabled,.take-scene-action .btn.disabled{opacity:.45;cursor:not-allowed}.take-mode-hint,.take-mode-reason{max-width:26ch;color:var(--muted);font-size:10px;line-height:1.3}.take-mode-reason{color:var(--warn,#ff9c6e);opacity:.9}.take-scene-menu{border-left:1px solid var(--line2);flex-wrap:wrap;align-items:flex-start;gap:6px 10px;padding-left:10px;display:flex}.take-scene-action{flex-direction:column;gap:1px;display:flex}.take-scene-menu .btn{white-space:nowrap;height:26px;padding:0 10px;font-size:11px}.take-scene-advanced{min-width:220px;font-size:11px}.take-scene-advanced>summary{cursor:pointer;color:var(--muted);letter-spacing:.03em;font-size:10px;font-weight:700}.take-scene-advanced>summary:hover{color:var(--fg)}.take-recipe-summary{opacity:.8;font-variant-numeric:tabular-nums;margin-top:4px}.take-version-strip{flex-wrap:wrap;align-items:center;gap:4px;margin-left:auto;display:flex}.take-version-chip{border:1px solid var(--line2);background:var(--bg);min-width:34px;max-width:120px;color:var(--muted);font:inherit;cursor:pointer;border-radius:3px;flex-direction:column;align-items:center;gap:0;padding:2px 7px;display:flex}.take-version-chip:hover{background:var(--hover);color:var(--fg)}.take-version-chip b{font-variant-numeric:tabular-nums;font-size:11px}.take-version-chip small{text-overflow:ellipsis;white-space:nowrap;opacity:.75;max-width:100%;font-size:9px;overflow:hidden}.take-version-chip.current{border-color:var(--accent);color:var(--fg);box-shadow:inset 0 -2px var(--accent)}.replay-notice{color:var(--warn,#ff9c6e);flex-basis:100%;margin:0;font-size:10px;line-height:1.4}@media (width>=1041px){.vp-inset:not(.collapsed){width:min(var(--inset-width), 280px)!important;height:min(var(--inset-height), 240px)!important}.vp-shot-preview{width:clamp(180px,17vw,270px);max-width:270px;bottom:12px;right:12px}.editor-toolbar.scene-tools .tool-switch{border:1px solid var(--line2);background:#00000024;border-radius:3px;height:23px;margin:2px 4px 2px 3px}.editor-toolbar.scene-tools .tool-switch button{border-right:0;height:21px}.editor-toolbar.scene-tools .tool-switch button+button{border-left:1px solid var(--line)}.editor-toolbar.scene-tools>.snap-switch{border:1px solid var(--line2);border-radius:3px;height:23px;margin:2px 0}.editor-toolbar.scene-tools .viewport-toolbar-field,.editor-toolbar.scene-tools .viewport-fov-control{background:#00000014}.editor-toolbar.scene-tools .settings-separator{margin-left:5px}.workspace-splitter-vertical{flex-basis:8px;margin-left:-4px;margin-right:-4px}.workspace-splitter-vertical:after{background:var(--line2);width:2px;inset:0 3px}.workspace-splitter-vertical:hover:after,body.is-resizing .workspace-splitter-vertical:after{background:var(--accent);box-shadow:0 0 0 1px var(--accent-ring)}.timeline-splitter{flex-basis:8px;margin-top:-4px;margin-bottom:-4px}.timeline-splitter:after{background:var(--line2);height:2px;top:3px}.timeline-splitter:hover:after,body.is-resizing .timeline-splitter:after{background:var(--accent);box-shadow:0 0 0 1px var(--accent-ring)}}.hierarchy-label,.hierarchy-project,.inspector-pane,.inspector-heading,.inspector-hint,.foldout-head,.right-panel-tabs,.bottom-window-tabs,.settings-menu{word-break:keep-all;overflow-wrap:anywhere}.hierarchy-project{font-size:12px;line-height:1.25}.inspector-hint{font-size:11px;line-height:1.45}.reference-slot{border-top:1px solid var(--line2);flex-direction:column;gap:8px;margin-top:10px;padding-top:10px;display:flex}.reference-slot-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.reference-slot-label{color:var(--fg);letter-spacing:-.01em;font-size:11px;font-weight:600}.reference-slot-body{align-items:flex-start;gap:10px;display:flex}.reference-slot-thumb{border:1px solid var(--line2);background:var(--card2);width:58px;height:58px;box-shadow:none;cursor:pointer;transition:border-color var(--fast), background var(--fast);border-radius:8px;flex:none;place-items:center;padding:0;display:grid;overflow:hidden}.reference-slot-thumb:hover{border-color:var(--accent);background:var(--hover)}.reference-slot-thumb[data-empty]{border-style:dashed}.reference-slot-thumb img{object-fit:cover;width:100%;height:100%;display:block}.reference-slot-plus{color:var(--muted2);font-size:16px;line-height:1}.reference-slot-copy{flex-direction:column;flex:auto;gap:6px;min-width:0;display:flex}.reference-slot-copy .inspector-hint{margin:0}.reference-slot .btn.ghost{width:auto;box-shadow:none;border-radius:6px;align-self:flex-start;margin-top:0;padding:5px 10px;font-size:10px;font-weight:600}.reference-slot .btn.ghost:hover{box-shadow:none;transform:none}.reference-slot-error{color:#e08a7a;margin:0}.camera-tutorial{z-index:7;background:color-mix(in srgb, var(--panel) 94%, #000);border:1px solid var(--line2);width:min(430px,74% - 24px);box-shadow:var(--shadow-md);pointer-events:none;animation:rise var(--med) var(--ease) both;border-radius:8px;flex-direction:column;gap:7px;padding:8px 10px 9px;display:flex;position:absolute;top:35px;left:12px}.camera-tutorial[data-previewing="1"]{width:clamp(220px,50% - 92px,360px)}.camera-tutorial-steps{flex-wrap:wrap;gap:4px;margin:0;padding:0 22px 0 0;list-style:none;display:flex}.camera-tutorial-steps li{border:1px solid var(--line2);color:var(--muted);letter-spacing:.02em;border-radius:999px;align-items:center;gap:5px;padding:2px 7px;font-size:10px;font-weight:700;display:inline-flex}.camera-tutorial-steps li i{font-family:var(--mono);opacity:.85;font-size:9px;font-style:normal}.camera-tutorial-steps li[data-current="1"]{border-color:var(--accent);background:var(--accent-soft);color:var(--fg)}.camera-tutorial-steps li[data-done="1"]{color:#65c18c;border-color:#65c18c8c}.camera-tutorial-card{color:var(--fg);align-items:baseline;gap:8px;font-size:11.5px;line-height:1.45;display:flex}.camera-tutorial-card p{margin:0}.camera-tutorial-count{color:var(--accent);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;flex:none;font-size:9.5px;font-weight:700}.camera-tutorial-count.done{color:#65c18c}.camera-tutorial kbd{border:1px solid var(--line2);background:var(--card2);color:var(--fg);font-family:var(--mono);border-radius:4px;padding:1px 5px;font-size:9.5px}.camera-tutorial-keys{gap:3px;margin:0 2px;display:inline-flex}.camera-tutorial-keys kbd[data-done="1"]{color:#65c18c;border-color:#65c18c8c}.camera-tutorial-close{color:var(--muted);cursor:pointer;pointer-events:auto;background:0 0;border:0;padding:0 4px;font-size:15px;line-height:1;position:absolute;top:4px;right:5px}.camera-tutorial-close:hover,.camera-tutorial-close:focus-visible{color:var(--fg)}.camera-tutorial-where{border:1px solid var(--accent-ring);color:var(--accent);letter-spacing:.02em;white-space:nowrap;vertical-align:1px;border-radius:4px;margin-right:6px;padding:1px 5px;font-size:9.5px;font-weight:700}.tutorial-beacon{z-index:14;pointer-events:none;animation:rise var(--med) var(--ease) backwards;align-items:center;gap:7px;display:flex;position:fixed}.tutorial-beacon-leader{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.tutorial-beacon-leader line{stroke:var(--accent);stroke-width:1.5px;stroke-linecap:round;stroke-dasharray:3 3;opacity:.85}.tutorial-beacon-dot{background:var(--accent);width:22px;height:22px;color:var(--on-accent);font-family:var(--mono);box-shadow:0 0 0 3px #3a7cbf47, var(--shadow);animation:tutorial-beacon-breathe 1.5s var(--ease) infinite;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:inline-flex;position:relative}.tutorial-beacon-label{border:1px solid var(--accent-ring);background:color-mix(in srgb, var(--panel) 94%, #000);max-width:190px;box-shadow:var(--shadow-md);color:var(--fg);word-break:keep-all;border-radius:6px;padding:3px 8px;font-size:10.5px;font-weight:600;line-height:1.35;position:relative}@keyframes tutorial-beacon-breathe{0%,to{box-shadow:0 0 0 3px #3a7cbf47, var(--shadow)}50%{box-shadow:0 0 0 8px #3a7cbf00, var(--shadow)}}.tutorial-cue{z-index:7;border:1px solid var(--line2);background:color-mix(in srgb, var(--panel) 82%, transparent);width:120px;box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none;opacity:1;transition:opacity var(--med) var(--ease), transform var(--med) var(--ease);animation:riseCenter var(--med) var(--ease) backwards;border-radius:10px;flex-direction:column;align-items:center;gap:7px;padding:10px 8px 8px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.tutorial-cue[data-leaving="1"]{opacity:0;transform:translate(-50%)translateY(6px)}.tutorial-cue-stage{justify-content:center;align-items:flex-end;gap:6px;width:100%;height:54px;display:flex;position:relative}.tutorial-cue-arm{align-items:flex-end;display:inline-flex;position:relative}.tutorial-cue-mouse{width:30px;height:44px;overflow:visible}.cue-mouse-body{fill:none;stroke:var(--muted);stroke-width:2.5px}.cue-mouse-left,.cue-mouse-right{fill:var(--card2);stroke:var(--muted);stroke-width:1.5px}.cue-mouse-wheel{fill:var(--muted2)}.tutorial-cue[data-kind=fly] .cue-mouse-right,.tutorial-cue[data-kind=walk] .cue-mouse-right,.tutorial-cue[data-kind=orbit] .cue-mouse-left{fill:var(--accent);stroke:var(--accent)}.tutorial-cue[data-kind=dolly] .cue-mouse-wheel{fill:var(--accent)}.tutorial-cue[data-kind=fly] .tutorial-cue-arm{animation:cue-swing 2.2s var(--ease) infinite}.tutorial-cue-arc{width:56px;height:18px;position:absolute;top:-13px;left:50%;overflow:visible;transform:translate(-50%)}.cue-arc-line,.cue-arc-head{fill:none;stroke:var(--accent);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.tutorial-cue-updown{width:12px;height:40px;overflow:visible}.cue-up,.cue-down{fill:none;stroke:var(--accent);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.cue-up{animation:cue-up 1.8s var(--ease) infinite}.cue-down{animation:cue-down 1.8s var(--ease) infinite}.tutorial-cue[data-kind=orbit] .tutorial-cue-stage{align-items:flex-start;height:64px}.tutorial-cue-key{border:1px solid var(--accent);background:var(--accent-soft);color:var(--fg);font-family:var(--mono);border-radius:4px;padding:2px 5px;font-size:9px;font-weight:700;position:absolute;bottom:0;left:0}.tutorial-cue-pivot{background:var(--muted);width:6px;height:6px;box-shadow:0 0 0 3px var(--card2);border-radius:50%;position:absolute;bottom:1px;left:50%;transform:translate(-50%)}.tutorial-cue[data-kind=orbit] .tutorial-cue-arm{transform-origin:50% 145%;animation:cue-orbit 2.8s var(--ease) infinite}.tutorial-cue-keys{grid-template-columns:repeat(6,1fr);gap:3px;width:100%;display:grid}.tutorial-cue-keys kbd{border:1px solid var(--line2);background:var(--card2);color:var(--muted);font-family:var(--mono);text-align:center;animation:cue-key 1.6s var(--ease) infinite;border-radius:3px;padding:2px 0;font-size:8.5px;font-weight:700}.tutorial-cue-keys kbd[data-done="1"]{color:#65c18c;background:#65c18c29;border-color:#65c18c99;animation:none}.tutorial-cue-caption{color:var(--fg);text-align:center;word-break:keep-all;font-size:9.5px;font-weight:600;line-height:1.3}@keyframes cue-swing{0%,to{transform:translate(-7px)}50%{transform:translate(7px)}}@keyframes cue-orbit{0%,to{transform:rotate(-13deg)}50%{transform:rotate(13deg)}}@keyframes cue-up{0%,to{opacity:.45;transform:translateY(2px)}40%{opacity:1;transform:translateY(-2px)}}@keyframes cue-down{0%,to{opacity:.45;transform:translateY(-2px)}90%{opacity:1;transform:translateY(2px)}}@keyframes cue-key{0%,to{border-color:var(--line2);color:var(--muted)}50%{border-color:var(--accent);color:var(--fg)}}@media (prefers-reduced-motion:reduce){.app[data-tutorial-step=shot] .tl-track.shots .tl-track-add,.app[data-tutorial-step=rail] .tl-track.shots .tl-shot-block:not(.selected),.app[data-tutorial-step=rail] .tl-rail-draw,.app[data-tutorial-step=play] .vp-look-through{box-shadow:0 0 0 3px var(--accent);animation:none}.tutorial-beacon,.tutorial-beacon-dot,.tutorial-cue,.tutorial-cue-arm,.tutorial-cue-keys kbd,.cue-up,.cue-down{animation:none}.tutorial-cue{transition:none}.hierarchy-row.agent-touched:after{opacity:1;animation:none}}.resource-status{background:var(--card2);border:1px solid var(--line2);border-radius:var(--radius);color:var(--fg);padding:10px 12px;font-size:12px}.resource-status.is-compact{padding:6px 8px}.resource-status-totals{flex-wrap:wrap;gap:6px 16px;margin:0;display:flex}.resource-status-total{color:var(--muted);align-items:center;gap:6px;display:inline-flex}.resource-status-total:before{content:"";background:var(--muted2);border-radius:50%;width:6px;height:6px}.resource-status-total.is-embedded:before{background:#81c995}.resource-status-total.is-external:before{background:var(--cyan)}.resource-status-total.is-missing:before{background:var(--warn,#e6a86b)}.resource-status-total.is-bytes:before{display:none}.resource-status-total dt{margin:0}.resource-status-total dd{color:var(--fg);font-family:var(--mono);margin:0;font-size:11px}.resource-status-warning{color:var(--warn,#e6a86b);margin:8px 0 0}.resource-status-items,.save-blocked-missing,.save-blocked-reasons{flex-direction:column;gap:4px;margin:8px 0 0;padding:0;list-style:none;display:flex}.resource-status-item{border-left:2px solid var(--line2);color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:4px 8px;padding:4px 6px;display:flex}.resource-status-item.is-embedded{border-left-color:#81c995}.resource-status-item.is-external{border-left-color:var(--cyan)}.resource-status-item.is-missing{border-left-color:var(--warn,#e6a86b)}.resource-status-select{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;padding:0;display:contents}.resource-status-kind{color:var(--fg)}.resource-status-id{font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;max-width:22ch;font-size:11px;overflow:hidden}.resource-status-state{font-size:11px}.resource-status-state.is-embedded{color:#81c995}.resource-status-state.is-external{color:var(--cyan)}.resource-status-state.is-missing{color:var(--warn,#e6a86b)}.resource-status-url,.resource-status-refs{text-overflow:ellipsis;white-space:nowrap;flex-basis:100%;font-size:11px;overflow:hidden}.save-blocked-reason{border-left:2px solid var(--warn,#e6a86b);background:var(--card2);flex-direction:column;gap:4px;padding:8px 10px;font-size:13px;display:flex}.save-blocked-size{color:var(--muted);font-family:var(--mono);font-size:11px}@media (width<=520px){.resource-status-totals{flex-direction:column;gap:4px}}.inspector-agent-switch{border:1px solid var(--line2);background:var(--card2);color:var(--fg);cursor:pointer;border-radius:4px;margin-left:auto;padding:3px 8px;font-size:11px}.inspector-agent-switch:hover,.inspector-agent-switch[aria-pressed=true]{border-color:var(--accent);color:var(--on-accent);background:var(--accent-2)}.studio-agent-inspector{flex-direction:column;height:100%;min-height:0;display:flex}.studio-agent-inspector>.agent-panel{flex:auto;width:100%;min-height:0}.studio-agent-inspector[hidden],.inspector-sidebar .inspector-pane[hidden]{display:none}.hierarchy-row.agent-touched{position:relative}.hierarchy-row.agent-touched:after{content:"";border-radius:var(--radius);background:var(--hover);box-shadow:inset 0 0 0 1px var(--on-accent), inset 0 0 14px var(--accent-soft);pointer-events:none;animation:hierarchy-agent-touch var(--agent-touch) var(--ease) forwards;position:absolute;inset:0}@keyframes hierarchy-agent-touch{0%{opacity:0}8%{opacity:1}65%{opacity:1}to{opacity:0}}@media (width<=700px){.studio-agent-inspector{min-height:540px;max-height:80vh}}.agent-history-wrap{position:relative}.agent-history-popover{z-index:30;border:1px solid var(--line2);background:var(--panel);width:min(300px,72vw);max-height:280px;box-shadow:var(--shadow-lg);border-radius:5px;flex-direction:column;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);right:0;overflow-y:auto}.agent-history-item{color:var(--fg);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:3px;flex-direction:column;gap:2px;padding:8px 10px;display:flex}.agent-history-item:hover{background:var(--hover)}.agent-history-time{color:var(--muted2);font-size:10px}.agent-history-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.agent-history-empty{color:var(--muted);padding:10px}.agent-toast{border-bottom:1px solid var(--line);background:var(--accent-soft);color:var(--fg);padding:8px 12px;font-size:11px}.fal-motion-card{border:1px solid var(--line,#313747);background:#151923b8;border-radius:10px;margin-top:12px;padding:14px;font-size:13px}.fal-motion-head{background:#151923;border-radius:10px 10px 0 0;justify-content:space-between;align-items:center;gap:8px;margin:-14px -14px 0;padding:8px 14px;font-size:12px;display:flex}.fal-motion-head span{color:var(--muted,#a7afc2);font-size:12px}.fal-motion-mode-tabs{grid-template-columns:1fr 1fr;gap:6px;margin-top:10px;display:grid}.fal-motion-mode-tabs button{min-height:34px;color:var(--muted,#a7afc2);font:inherit;cursor:pointer;background:#11151e;border:1px solid #343b4d;border-radius:6px;padding:6px 8px;font-size:13px}.fal-motion-mode-tabs button.active{color:#e6f7ff;background:#2a4d6452;border-color:#7dd3fc}.fal-motion-mode-hint{margin-top:6px}.fal-motion-stepper{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:10px;display:grid}.fal-motion-stepper span{min-width:0;color:var(--muted,#a7afc2);border:1px solid #343b4d;border-radius:6px;align-items:center;gap:5px;padding:6px 7px;font-size:11px;display:flex}.fal-motion-stepper span.active{color:#ffe7aa;background:#78551b38;border-color:#e1b45b}.fal-motion-stepper span.done{color:#9fe6b8;border-color:#3e8d62}.fal-motion-stepper b{font-size:12px}.fal-motion-segmentation-row{align-items:center;gap:6px;margin-top:7px;display:flex}.fal-motion-segmentation-row .fal-motion-segmentation{flex:1;margin:0}.fal-motion-flat-cta{flex:none;min-height:32px!important;padding:5px 10px!important;font-size:12px!important}.fal-motion-pose-row,.fal-motion-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.fal-motion-pose-row .btn,.fal-motion-actions .btn{min-height:36px;padding:7px 12px;font-size:13px}.fal-motion-pose-row .btn.active{color:#d7f3ff;border-color:#7dd3fc}.fal-motion-capture-status{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.fal-motion-capture-slot{background:#11151e;border:1px solid #343b4d;border-radius:7px;flex-direction:column;gap:4px;min-width:0;padding:9px;display:flex}.fal-motion-capture-slot.captured{background:#23533638;border-color:#3e8d62}.fal-motion-capture-slot strong{color:var(--fg,#eef3ff);font-size:13px}.fal-motion-capture-slot.captured strong{color:#9fe6b8}.fal-motion-capture-slot span{color:var(--muted,#a7afc2);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.fal-motion-slot-action{color:#b8dfff;font:inherit;cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:0;font-size:11px;text-decoration:underline}.fal-motion-camera-status{color:var(--muted,#a7afc2);margin:8px 0 0;font-size:11px}.fal-motion-camera-status.ready{color:#9fe6b8}.fal-motion-camera-actions{flex-wrap:wrap;gap:5px;margin-top:5px;display:flex}.fal-motion-camera-actions .btn{min-height:30px!important;padding:4px 9px!important;font-size:12px!important}.fal-motion-thumbs{gap:8px;min-height:0;margin-top:8px;display:flex}.fal-motion-thumbs figure{min-width:0;margin:0}.fal-motion-thumbs img{object-fit:cover;background:#0c0f16;border:1px solid #42506a;border-radius:5px;width:148px;height:84px;display:block}.fal-motion-thumbs figcaption{color:var(--muted,#a7afc2);margin-top:4px;font-size:11px}.fal-motion-instruction{resize:vertical;width:100%;min-height:64px;color:inherit;font:inherit;background:#11151e;border:1px solid #343b4d;border-radius:6px;margin-top:10px;padding:9px;font-size:13px}.fal-motion-prompt-note{background:#11151ea6;border-left:2px solid #42506a;margin-top:8px;padding:5px 6px}.fal-motion-inline-error{margin-top:8px}.fal-motion-segmentation.ready{color:#9fe6b8}.fal-motion-video{background:#090b10;border-radius:7px;width:100%;margin-top:10px;display:block}.fal-motion-duration-row{align-items:center;gap:8px;margin-top:10px;display:flex}.fal-motion-duration-row .btn{min-height:32px;padding:5px 12px;font-size:12px}.fal-motion-duration-row .btn.active{color:#e6f7ff;background:#2a4d6452;border-color:#7dd3fc}.fal-motion-prompt-edit{margin-top:10px}.fal-motion-prompt-edit summary{cursor:pointer;color:var(--muted,#a7afc2);font-size:12px}.fal-motion-prompt-override{min-height:88px;margin-top:6px;font-family:ui-monospace,monospace;font-size:12px}.fal-motion-open-row{margin-top:12px}.fal-motion-open{width:100%;min-height:40px;font-size:14px}.modal.fal-motion-modal{width:min(920px,96vw)}.fal-motion-modal-body{grid-template-columns:minmax(280px,1fr) minmax(320px,1.1fr);gap:18px;display:grid}.fal-motion-modal .fal-motion-thumbs{flex-direction:column}.fal-motion-modal .fal-motion-thumbs img{width:100%;height:auto}@media (width<=700px){.fal-motion-modal-body{grid-template-columns:1fr}}.agent-fal-action{color:#6d4aff;border-color:color-mix(in srgb, #6d4aff 35%, var(--line) 65%)}.agent-fal-action:disabled{opacity:.45}.result-motion-video{background:#090b10;width:100%;max-height:420px}.result-motion-meta{color:var(--muted,#a7afc2);flex-wrap:wrap;gap:6px;margin:8px 0;font-size:11px;display:flex}.result-motion-meta span{border:1px solid var(--line,#313747);border-radius:999px;padding:3px 6px}