@dailies-studio/shot-editor 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/dist/.vite/manifest.json +382 -0
  2. package/dist/assets/AgentPanel-CQejLbiX.js +2 -0
  3. package/dist/assets/AgentPanel-DJEphah0.css +1 -0
  4. package/dist/assets/AgentQuestionDialog-BqkD0kXF.js +1 -0
  5. package/dist/assets/CodeStudio-Dv4ihHpz.js +23 -0
  6. package/dist/assets/CommentsPanel-B4yhhT1T.js +1 -0
  7. package/dist/assets/ComponentLibraryRail-Ch_dsAru.js +1 -0
  8. package/dist/assets/ComponentStage-BRhRotyH.js +1 -0
  9. package/dist/assets/CurvePane-BjFVabKX.css +1 -0
  10. package/dist/assets/CurvePane-R22WzllJ.js +1 -0
  11. package/dist/assets/ExportDialog-CWLQWTmG.js +2 -0
  12. package/dist/assets/FontPicker-DWKaYL7F.js +1 -0
  13. package/dist/assets/FontPicker-v0IOIArM.css +1 -0
  14. package/dist/assets/GenerateDrawer-Bh3SqDKt.js +2 -0
  15. package/dist/assets/InsertDrawer-Ce1fod1L.js +1 -0
  16. package/dist/assets/LibraryBrowser-D9sEGz5w.js +2 -0
  17. package/dist/assets/MakeItYoursSection-CMO4319_.js +2 -0
  18. package/dist/assets/MaterialGraphCanvas-BFzl4wWR.js +23 -0
  19. package/dist/assets/MaterialGraphCanvas-BIUD59ik.css +1 -0
  20. package/dist/assets/MaterialWorkspace-CqTWqaRA.js +14 -0
  21. package/dist/assets/PreferencesDialog-CBf9_OoD.js +1 -0
  22. package/dist/assets/PresetsSection-CUEaoCVU.js +1 -0
  23. package/dist/assets/SoundHistory-BeS8EW1h.js +1 -0
  24. package/dist/assets/SoundMode-BmcZru3i.js +3 -0
  25. package/dist/assets/StockSounds-DdAUGRYK.js +1 -0
  26. package/dist/assets/TemplateFieldSection-CaeXpLFo.js +1 -0
  27. package/dist/assets/VersionHistoryPanel-CxG6XhNP.js +1 -0
  28. package/dist/assets/board-B88EPuLO.css +1 -0
  29. package/dist/assets/board-CL-he7SL.js +3 -0
  30. package/dist/assets/components-0oOSPN0l.js +1 -0
  31. package/dist/assets/googleFontRanges-gp32wJMo.js +1 -0
  32. package/dist/assets/googleFonts-BNon6M7X.js +1 -0
  33. package/dist/assets/iconsAndAliases-DL7gXP5j.js +1863 -0
  34. package/dist/assets/index-4F5NQmI8.css +1 -0
  35. package/dist/assets/index-BGHQGV5z.js +117 -0
  36. package/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  37. package/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  38. package/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  39. package/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  40. package/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  41. package/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  42. package/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  43. package/dist/assets/libraryModel-CpIwfFha.js +1 -0
  44. package/dist/assets/lucide-6iK64tTB.js +9319 -0
  45. package/dist/assets/motionStamp-CH-Hew4E.js +1 -0
  46. package/dist/assets/takeMeasure-Tdg0TxEi.js +1 -0
  47. package/dist/assets/webmcp-BsB9gxWC.js +2 -0
  48. package/dist/index.html +34 -3
  49. package/package.json +12 -9
  50. package/src/addFamilies.ts +66 -0
  51. package/src/api.ts +1631 -55
  52. package/src/app/App.tsx +977 -198
  53. package/src/app/lazyPanel.tsx +137 -0
  54. package/src/app/lazySurfaces.tsx +203 -0
  55. package/src/audio/index.tsx +41 -10
  56. package/src/audio/meter.ts +485 -0
  57. package/src/audio/meterMath.ts +273 -0
  58. package/src/audio/meterStore.ts +155 -0
  59. package/src/audio/offlineMix.ts +289 -0
  60. package/src/audio/preview.ts +928 -118
  61. package/src/bridge.ts +15 -5
  62. package/src/bridgeTypes.ts +1611 -36
  63. package/src/channels.ts +17 -32
  64. package/src/fonts/googleFonts.ts +4 -0
  65. package/src/hostApi.ts +174 -0
  66. package/src/icons.tsx +770 -0
  67. package/src/layerWords.ts +61 -0
  68. package/src/main.tsx +56 -4
  69. package/src/panels/ResizeHandle.tsx +33 -43
  70. package/src/panels/agent/AgentDots.tsx +36 -0
  71. package/src/panels/agent/AgentPanel.tsx +119 -43
  72. package/src/panels/agent/AgentQuestionDialog.tsx +202 -0
  73. package/src/panels/agent/agent.css +113 -97
  74. package/src/panels/agent/agentGate.ts +35 -0
  75. package/src/panels/code/CodeDefaultsPanel.tsx +345 -0
  76. package/src/panels/code/CodeStudio.tsx +373 -0
  77. package/src/panels/code/FileTree.tsx +265 -0
  78. package/src/panels/code/codeBufferGuard.ts +52 -0
  79. package/src/panels/code/codeParts.tsx +321 -0
  80. package/src/panels/comments/CommentComposer.tsx +239 -0
  81. package/src/panels/comments/CommentThread.tsx +346 -0
  82. package/src/panels/comments/CommentsPanel.tsx +336 -0
  83. package/src/panels/comments/InboxButton.tsx +131 -0
  84. package/src/panels/comments/MentionMenu.tsx +98 -0
  85. package/src/panels/comments/parts.tsx +171 -0
  86. package/src/panels/export/ExportDialog.tsx +919 -96
  87. package/src/panels/export/ExportScrim.tsx +57 -0
  88. package/src/panels/files/AssetsTab.tsx +656 -0
  89. package/src/panels/files/FilePanel.tsx +1466 -216
  90. package/src/panels/files/LayerMarks.tsx +40 -0
  91. package/src/panels/files/LeftColumn.tsx +37 -0
  92. package/src/panels/files/McpSection.tsx +690 -47
  93. package/src/panels/files/MissingAssetsNotice.tsx +60 -0
  94. package/src/panels/files/assetDrag.ts +79 -0
  95. package/src/panels/files/resourceParts.tsx +255 -0
  96. package/src/panels/fonts/FontPicker.tsx +762 -0
  97. package/src/panels/fonts/faceCache.ts +207 -0
  98. package/src/panels/fonts/fontPicker.css +271 -0
  99. package/src/panels/fonts/pickerModel.ts +265 -0
  100. package/src/panels/fonts/pickerRequest.ts +46 -0
  101. package/src/panels/header/AccountAvatar.tsx +76 -0
  102. package/src/panels/header/AgentChip.tsx +77 -0
  103. package/src/panels/header/AppMenu.tsx +213 -0
  104. package/src/panels/header/Header.tsx +564 -84
  105. package/src/panels/header/HistoryControls.tsx +31 -5
  106. package/src/panels/header/PresenceStack.tsx +329 -0
  107. package/src/panels/header/ProjectTitle.tsx +232 -0
  108. package/src/panels/header/ShareButton.tsx +59 -0
  109. package/src/panels/header/StatusBadges.tsx +358 -27
  110. package/src/panels/header/SyncDeletedDialog.tsx +88 -0
  111. package/src/panels/header/ZoomControls.tsx +46 -15
  112. package/src/panels/header/agentHandoff.ts +52 -0
  113. package/src/panels/header/leave.ts +26 -0
  114. package/src/panels/help/HelpSection.tsx +189 -163
  115. package/src/panels/insert/InsertDrawer.tsx +723 -0
  116. package/src/panels/insert/iconSet.ts +109 -0
  117. package/src/panels/inspector/ExposeDot.tsx +117 -0
  118. package/src/panels/inspector/FramingRows.tsx +314 -44
  119. package/src/panels/inspector/InspectorFooter.tsx +91 -0
  120. package/src/panels/inspector/InspectorHead.tsx +425 -0
  121. package/src/panels/inspector/InspectorPanel.tsx +408 -124
  122. package/src/panels/inspector/KeyframeDot.tsx +373 -0
  123. package/src/panels/inspector/KeyframeSection.tsx +257 -0
  124. package/src/panels/inspector/MarkerSection.tsx +55 -11
  125. package/src/panels/inspector/ParamRow.tsx +84 -53
  126. package/src/panels/inspector/RightColumn.tsx +152 -0
  127. package/src/panels/inspector/TimeSection.tsx +866 -0
  128. package/src/panels/inspector/animate/EaseControl.tsx +244 -0
  129. package/src/panels/inspector/animate/PresetsSection.tsx +135 -0
  130. package/src/panels/inspector/animate/ShotSection.tsx +562 -48
  131. package/src/panels/inspector/design/AlignRow.tsx +95 -31
  132. package/src/panels/inspector/design/AppearanceSection.tsx +118 -9
  133. package/src/panels/inspector/design/ClonerSection.tsx +323 -62
  134. package/src/panels/inspector/design/ComponentSection.tsx +50 -43
  135. package/src/panels/inspector/design/CornerSection.tsx +45 -14
  136. package/src/panels/inspector/design/DefinitionProps.tsx +315 -0
  137. package/src/panels/inspector/design/DefinitionSection.tsx +136 -0
  138. package/src/panels/inspector/design/DeviceSection.tsx +210 -0
  139. package/src/panels/inspector/design/FillSection.tsx +83 -51
  140. package/src/panels/inspector/design/FontField.tsx +196 -0
  141. package/src/panels/inspector/design/HtmlSection.tsx +23 -12
  142. package/src/panels/inspector/design/InstanceSection.tsx +373 -154
  143. package/src/panels/inspector/design/MaskSection.tsx +84 -0
  144. package/src/panels/inspector/design/MaterialSection.tsx +177 -0
  145. package/src/panels/inspector/design/MediaSection.tsx +273 -120
  146. package/src/panels/inspector/design/MeshSection.tsx +910 -82
  147. package/src/panels/inspector/design/PaintRows.tsx +550 -0
  148. package/src/panels/inspector/design/PlateStyleSection.tsx +177 -0
  149. package/src/panels/inspector/design/ShadowSection.tsx +221 -48
  150. package/src/panels/inspector/design/SplineFollowSection.tsx +235 -0
  151. package/src/panels/inspector/design/StrokeSection.tsx +228 -43
  152. package/src/panels/inspector/design/TemplateFieldSection.tsx +57 -0
  153. package/src/panels/inspector/design/TransformSection.tsx +244 -50
  154. package/src/panels/inspector/design/TypographySection.tsx +679 -110
  155. package/src/panels/inspector/layout.ts +295 -0
  156. package/src/panels/inspector/propValue.ts +199 -0
  157. package/src/panels/inspector/scene/CameraSection.tsx +232 -22
  158. package/src/panels/inspector/scene/EffectsSection.tsx +722 -71
  159. package/src/panels/inspector/scene/MakeItYoursSection.tsx +180 -0
  160. package/src/panels/inspector/scene/SceneDocSection.tsx +191 -0
  161. package/src/panels/inspector/scene/SceneSection.tsx +219 -44
  162. package/src/panels/inspector/scene/TransitionSection.tsx +523 -72
  163. package/src/panels/inspector/storyboard/StoryboardReferenceSection.tsx +593 -0
  164. package/src/panels/inspector/storyboard/VideoStill.tsx +120 -0
  165. package/src/panels/inspector/timeModel.ts +190 -0
  166. package/src/panels/inspector/useDocWrite.ts +438 -146
  167. package/src/panels/library/LibraryBrowser.tsx +435 -0
  168. package/src/panels/library/LibraryGrid.tsx +190 -0
  169. package/src/panels/library/LibraryPreviewPanel.tsx +349 -0
  170. package/src/panels/library/LibraryRail.tsx +84 -0
  171. package/src/panels/library/LibrarySoundPanel.tsx +293 -0
  172. package/src/panels/library/SoundHistory.tsx +245 -0
  173. package/src/panels/library/StockSounds.tsx +390 -0
  174. package/src/panels/library/libraryModel.ts +147 -0
  175. package/src/panels/library/stockSearch.ts +77 -0
  176. package/src/panels/maskMarks.tsx +117 -0
  177. package/src/panels/material/MaterialCommentNode.tsx +54 -0
  178. package/src/panels/material/MaterialGraphCanvas.tsx +861 -0
  179. package/src/panels/material/MaterialGraphMenu.tsx +45 -0
  180. package/src/panels/material/MaterialGroupNode.tsx +56 -0
  181. package/src/panels/material/MaterialLibrary.tsx +253 -0
  182. package/src/panels/material/MaterialNode.tsx +453 -0
  183. package/src/panels/material/MaterialNodePalette.tsx +349 -0
  184. package/src/panels/material/MaterialParameterControls.tsx +525 -0
  185. package/src/panels/material/MaterialRerouteNode.tsx +42 -0
  186. package/src/panels/material/MaterialWorkspace.tsx +501 -0
  187. package/src/panels/material/NodePreview.tsx +70 -0
  188. package/src/panels/material/flowModel.ts +441 -0
  189. package/src/panels/material/parameterValues.ts +231 -0
  190. package/src/panels/material/previewScheduler.ts +235 -0
  191. package/src/panels/material/reactFlow.css +6 -0
  192. package/src/panels/material/socketGlyph.ts +85 -0
  193. package/src/panels/material/viewportMemory.ts +58 -0
  194. package/src/panels/preferences/PreferencesDialog.tsx +215 -0
  195. package/src/panels/share/ShareComponentDialog.tsx +247 -0
  196. package/src/panels/stage/StageMenu.tsx +35 -5
  197. package/src/panels/stage/StagePanel.tsx +338 -23
  198. package/src/panels/stage/cellSlots.tsx +70 -0
  199. package/src/panels/storyboard/BoardCanvas.tsx +739 -0
  200. package/src/panels/storyboard/BoardCursors.tsx +158 -0
  201. package/src/panels/storyboard/BoardDropDialog.tsx +161 -0
  202. package/src/panels/storyboard/BoardPlan.tsx +42 -0
  203. package/src/panels/storyboard/ComponentSheet.tsx +187 -0
  204. package/src/panels/storyboard/ComponentStage.tsx +235 -0
  205. package/src/panels/storyboard/MiniSketch.tsx +173 -0
  206. package/src/panels/storyboard/PartPicker.tsx +64 -0
  207. package/src/panels/storyboard/PlanPanel.tsx +617 -0
  208. package/src/panels/storyboard/ReferencePreview.tsx +217 -0
  209. package/src/panels/storyboard/ShotBrief.tsx +360 -0
  210. package/src/panels/storyboard/ShotCard.tsx +251 -0
  211. package/src/panels/storyboard/StagePreview.tsx +348 -0
  212. package/src/panels/storyboard/StillThumbs.tsx +162 -0
  213. package/src/panels/storyboard/StoryboardView.tsx +79 -0
  214. package/src/panels/storyboard/board.css +1065 -0
  215. package/src/panels/storyboard/board.ts +12 -0
  216. package/src/panels/storyboard/boardClipboard.ts +111 -0
  217. package/src/panels/storyboard/boardOrder.ts +68 -0
  218. package/src/panels/storyboard/boardRows.tsx +425 -0
  219. package/src/panels/storyboard/liveCap.ts +90 -0
  220. package/src/panels/storyboard/plan.css +295 -0
  221. package/src/panels/storyboard/posterCache.ts +133 -0
  222. package/src/panels/storyboard/shotboard/ComponentPicker.tsx +373 -0
  223. package/src/panels/storyboard/shotboard/ImagePicker.tsx +145 -0
  224. package/src/panels/storyboard/shotboard/ShotBoard.tsx +292 -0
  225. package/src/panels/storyboard/shotboard/SketchCanvas.tsx +443 -0
  226. package/src/panels/storyboard/shotboard/SketchInspector.tsx +471 -0
  227. package/src/panels/storyboard/shotboard/SketchItem.tsx +240 -0
  228. package/src/panels/storyboard/shotboard/SketchLayers.tsx +130 -0
  229. package/src/panels/storyboard/shotboard/SketchPlay.tsx +108 -0
  230. package/src/panels/storyboard/shotboard/SketchStrip.tsx +178 -0
  231. package/src/panels/storyboard/shotboard/SketchToolFooter.tsx +99 -0
  232. package/src/panels/storyboard/shotboard/sketch.css +1392 -0
  233. package/src/panels/storyboard/shotboard/sketchModel.ts +219 -0
  234. package/src/panels/storyboard/storyboardDrop.ts +164 -0
  235. package/src/panels/studio/ComponentLibraryRail.tsx +346 -0
  236. package/src/panels/studio/ComponentSidePanel.tsx +355 -0
  237. package/src/panels/studio/ComponentStudio.tsx +243 -0
  238. package/src/panels/studio/ComponentsHome.tsx +318 -0
  239. package/src/panels/studio/ComponentsPreview.tsx +179 -0
  240. package/src/panels/studio/EveryUse.tsx +244 -0
  241. package/src/panels/studio/ThisUsePanel.tsx +679 -0
  242. package/src/panels/studio/componentParts.tsx +341 -0
  243. package/src/panels/studio/components.ts +6 -0
  244. package/src/panels/studio/newCodeComponent.ts +66 -0
  245. package/src/panels/timeline/AudioFxButton.tsx +290 -0
  246. package/src/panels/timeline/AudioLane.tsx +674 -85
  247. package/src/panels/timeline/BlockRow.tsx +154 -85
  248. package/src/panels/timeline/ChannelRow.tsx +378 -129
  249. package/src/panels/timeline/CurvePane.tsx +508 -0
  250. package/src/panels/timeline/Filmstrip.tsx +361 -0
  251. package/src/panels/timeline/GenerateDrawer.tsx +407 -0
  252. package/src/panels/timeline/KeyStretch.tsx +115 -0
  253. package/src/panels/timeline/LifespanRow.tsx +730 -47
  254. package/src/panels/timeline/MarkerLane.tsx +46 -8
  255. package/src/panels/timeline/PlayButton.tsx +91 -0
  256. package/src/panels/timeline/PropertyPicker.tsx +254 -0
  257. package/src/panels/timeline/ShotRow.tsx +400 -0
  258. package/src/panels/timeline/SoundMode.tsx +1406 -0
  259. package/src/panels/timeline/TimelineDock.tsx +2338 -272
  260. package/src/panels/timeline/TransportVolume.tsx +163 -0
  261. package/src/panels/timeline/beatRuler.ts +74 -0
  262. package/src/panels/timeline/curveModel.ts +500 -0
  263. package/src/panels/timeline/duckUnderVoice.ts +68 -0
  264. package/src/panels/timeline/keyframeMenu.ts +138 -0
  265. package/src/panels/timeline/labelWidth.ts +49 -0
  266. package/src/panels/timeline/marquee.ts +155 -0
  267. package/src/panels/timeline/model.ts +1860 -199
  268. package/src/panels/timeline/snap.ts +125 -43
  269. package/src/panels/timeline/staggerPreview.tsx +92 -0
  270. package/src/panels/timeline/takeMeasure.ts +72 -0
  271. package/src/panels/timeline/useLive.ts +48 -0
  272. package/src/panels/timeline/viewport.ts +234 -0
  273. package/src/panels/toolbar/BackChip.tsx +116 -0
  274. package/src/panels/toolbar/CameraViewBar.tsx +118 -49
  275. package/src/panels/toolbar/CanvasBar.tsx +117 -0
  276. package/src/panels/toolbar/InsertButton.tsx +38 -0
  277. package/src/panels/toolbar/IsolationTrail.tsx +156 -0
  278. package/src/panels/toolbar/PanelToggles.tsx +86 -0
  279. package/src/panels/toolbar/ShadingBar.tsx +119 -26
  280. package/src/panels/toolbar/ToolDockBar.tsx +329 -80
  281. package/src/panels/toolbar/ToolFooter.tsx +102 -0
  282. package/src/panels/toolbar/ViewModeBar.tsx +247 -38
  283. package/src/panels/toolbar/WorkPlaneBar.tsx +94 -0
  284. package/src/panels/toolbar/useAddRows.tsx +326 -0
  285. package/src/panels/toolbar/useDismiss.ts +122 -0
  286. package/src/panels/versions/VersionHistoryPanel.tsx +274 -0
  287. package/src/panels/versions/versionModel.ts +103 -0
  288. package/src/panels/virtualWindow.ts +271 -0
  289. package/src/shotTokens.css +151 -60
  290. package/src/stage/FrustumGizmo.tsx +504 -84
  291. package/src/stage/GridPlane.tsx +225 -16
  292. package/src/stage/NodePreviews.tsx +628 -0
  293. package/src/stage/PerfHud.tsx +437 -47
  294. package/src/stage/SplitRenderer.tsx +816 -169
  295. package/src/stage/StageApp.tsx +4274 -486
  296. package/src/stage/StageRootBoundary.tsx +114 -0
  297. package/src/stage/StageTools.tsx +651 -151
  298. package/src/stage/TransformGizmo.tsx +696 -0
  299. package/src/stage/adaptivePresentation.ts +145 -0
  300. package/src/stage/bridgeClient.ts +2522 -41
  301. package/src/stage/exportWorker.ts +9 -0
  302. package/src/stage/feed.ts +305 -14
  303. package/src/stage/fontPreview.ts +176 -0
  304. package/src/stage/frustumGeometry.ts +319 -1
  305. package/src/stage/furnitureTokens.ts +33 -0
  306. package/src/stage/gizmoMath.ts +508 -16
  307. package/src/stage/gpuTimer.ts +276 -0
  308. package/src/stage/instanceModules.ts +194 -33
  309. package/src/stage/interactions/move.ts +24 -5
  310. package/src/stage/isolation.ts +291 -33
  311. package/src/stage/jsSelfProfiler.ts +325 -0
  312. package/src/stage/main.tsx +116 -16
  313. package/src/stage/modalState.ts +222 -23
  314. package/src/stage/moduleEpoch.ts +60 -0
  315. package/src/stage/motionPathStage.ts +279 -0
  316. package/src/stage/motionPreview.ts +74 -0
  317. package/src/stage/overlays/Overlays.tsx +1112 -159
  318. package/src/stage/overlays/Rulers.tsx +495 -0
  319. package/src/stage/panes.ts +159 -10
  320. package/src/stage/project.ts +68 -3
  321. package/src/stage/renderScaleController.ts +730 -0
  322. package/src/stage/rulers.ts +129 -0
  323. package/src/stage/sceneExtent.ts +75 -0
  324. package/src/stage/shading.ts +20 -0
  325. package/src/stage/splineStage.ts +632 -0
  326. package/src/stage/stagePerformanceTelemetry.ts +717 -0
  327. package/src/stage/stageTheme.ts +36 -0
  328. package/src/stage/stageWarmup.ts +11 -0
  329. package/src/stage/textAutoSize.ts +124 -0
  330. package/src/stage/tier1Export.ts +641 -0
  331. package/src/stage/tokenColor.ts +14 -9
  332. package/src/stage/view.ts +56 -9
  333. package/src/stage/workingView.ts +277 -33
  334. package/src/state/accountPrefs.ts +261 -0
  335. package/src/state/agentActions.ts +173 -15
  336. package/src/state/agentActivity.ts +198 -0
  337. package/src/state/agentQuestion.ts +239 -0
  338. package/src/state/bootOpen.ts +42 -0
  339. package/src/state/cameraVerbs.ts +139 -0
  340. package/src/state/clientId.ts +6 -1
  341. package/src/state/comments.ts +1099 -0
  342. package/src/state/context.tsx +19 -1
  343. package/src/state/editorPrefs.ts +220 -0
  344. package/src/state/errorReports.ts +121 -0
  345. package/src/state/fieldWrite.ts +161 -0
  346. package/src/state/fontRecents.ts +70 -0
  347. package/src/state/fonts.ts +656 -0
  348. package/src/state/graphClipboard.ts +414 -0
  349. package/src/state/imageThumbs.ts +216 -0
  350. package/src/state/insert.ts +444 -67
  351. package/src/state/isolationTrail.ts +92 -0
  352. package/src/state/keyMoves.ts +134 -0
  353. package/src/state/keyframeClipboard.ts +177 -0
  354. package/src/state/keymap.ts +1153 -117
  355. package/src/state/layoutPrefs.ts +272 -0
  356. package/src/state/layouts.ts +205 -0
  357. package/src/state/measureMedia.ts +167 -0
  358. package/src/state/menu.ts +2341 -28
  359. package/src/state/motionStamp.ts +7 -0
  360. package/src/state/panelSize.ts +375 -5
  361. package/src/state/pendingChanges.ts +119 -0
  362. package/src/state/playHold.ts +78 -0
  363. package/src/state/playbackPreparation.ts +562 -0
  364. package/src/state/posterCapture.ts +242 -0
  365. package/src/state/presence.ts +254 -0
  366. package/src/state/projectComponents.ts +160 -0
  367. package/src/state/renderEvents.ts +298 -18
  368. package/src/state/runtimeErrors.ts +46 -0
  369. package/src/state/selection.ts +12 -0
  370. package/src/state/shortcuts.ts +1606 -0
  371. package/src/state/sketchGuide.ts +51 -0
  372. package/src/state/splineRefs.ts +87 -0
  373. package/src/state/stageHealth.ts +259 -0
  374. package/src/state/stageWatchdog.ts +47 -0
  375. package/src/state/stillStage.ts +330 -0
  376. package/src/state/stillThumbs.ts +474 -0
  377. package/src/state/store.ts +23591 -2982
  378. package/src/state/storyboardModel.ts +528 -0
  379. package/src/state/sync.ts +1257 -0
  380. package/src/state/syncCache.ts +159 -0
  381. package/src/state/triangles.ts +13 -0
  382. package/src/state/types.ts +1698 -55
  383. package/src/state/unsavedGuard.ts +49 -0
  384. package/src/state/viewMode.ts +200 -0
  385. package/src/state/webmcp.ts +1128 -0
  386. package/src/state/workspace.ts +1147 -0
  387. package/src/styles/assets-tab.css +304 -0
  388. package/src/styles/canvas.css +545 -0
  389. package/src/styles/comments.css +1435 -0
  390. package/src/styles/controls.css +162 -0
  391. package/src/styles/dialogs.css +390 -0
  392. package/src/styles/insert-drawer.css +586 -0
  393. package/src/styles/inspector-board.css +207 -0
  394. package/src/styles/inspector-object.css +486 -0
  395. package/src/styles/inspector-shot.css +252 -0
  396. package/src/styles/inspector.css +360 -0
  397. package/src/styles/left-column.css +1628 -0
  398. package/src/styles/library-preview.css +575 -0
  399. package/src/styles/library.css +512 -0
  400. package/src/styles/modes/code.css +569 -0
  401. package/src/styles/modes/component.css +1561 -0
  402. package/src/styles/modes/material.css +1201 -0
  403. package/src/styles/modes/storyboard.css +518 -0
  404. package/src/styles/share-component.css +49 -0
  405. package/src/styles/shell.css +653 -0
  406. package/src/styles/shot-brief.css +360 -0
  407. package/src/styles/states.css +76 -0
  408. package/src/styles/sync.css +380 -0
  409. package/src/styles/timeline-graph.css +384 -0
  410. package/src/styles/timeline-meters.css +89 -0
  411. package/src/styles/timeline-rows.css +1959 -0
  412. package/src/styles/timeline-sound.css +1003 -0
  413. package/src/styles/timeline.css +754 -0
  414. package/src/styles/tool-footer.css +525 -0
  415. package/src/styles/topbar.css +886 -0
  416. package/src/styles/versions.css +262 -0
  417. package/src/styles.css +72 -2921
  418. package/src/tools.ts +108 -23
  419. package/dist/assets/index-B7notge7.css +0 -1
  420. package/dist/assets/index-BBE6Ta9L.js +0 -52
  421. package/src/panels/files/icons.tsx +0 -118
  422. package/src/panels/header/DocSwitcher.tsx +0 -85
  423. package/src/panels/header/TransportBar.tsx +0 -86
  424. package/src/panels/inspector/animate/BlockTiming.tsx +0 -341
  425. package/src/panels/inspector/animate/DuringBlocks.tsx +0 -85
  426. package/src/panels/inspector/animate/InOutPresets.tsx +0 -57
  427. package/src/panels/inspector/animate/ResolvedChannels.tsx +0 -150
  428. package/src/panels/inspector/animate/useBlocks.ts +0 -43
  429. package/src/panels/material/MaterialPicker.tsx +0 -172
  430. package/src/panels/timeline/SceneStrip.tsx +0 -145
  431. package/src/panels/toolbar/AddMenu.tsx +0 -230
  432. package/src/stage/MoveGizmo.tsx +0 -411
@@ -0,0 +1,1392 @@
1
+ /* THE SHOT BOARD (ShotBoard.tsx and its parts, Paper SB2-SB5; values in
2
+ plans/SHOT-BOARD-VALUES.md). Wrapped in the `component-sheets` cascade
3
+ layer: ShotBoard imports it, and under the /scene index's layer order it
4
+ ranks below the house widgets, so it styles its own classes and the layout
5
+ around the widgets (.btn, .badge, .caps, .panel-head), never the widgets. */
6
+ @layer component-sheets {
7
+ /* ---- the frame: Layers | bar, desk, footer --------------------------- */
8
+ /* The board's canvas cell takes no pointer (shell.css); the shot board
9
+ opts back in. */
10
+ .shot-board {
11
+ flex: 1 1 0;
12
+ display: flex;
13
+ min-width: 0;
14
+ min-height: 0;
15
+ outline: none;
16
+ pointer-events: auto;
17
+ background: var(--surface-board);
18
+ }
19
+
20
+ .shot-board-main {
21
+ flex: 1 1 0;
22
+ display: flex;
23
+ flex-direction: column;
24
+ min-width: 0;
25
+ min-height: 0;
26
+ }
27
+
28
+ /* ---- Layers (SB3, SB4): 224 wide, front first, 28px rows ------------- */
29
+ .sketch-layers {
30
+ flex: none;
31
+ display: flex;
32
+ flex-direction: column;
33
+ width: 224px;
34
+ min-height: 0;
35
+ background: var(--surface-panel);
36
+ border-right: 1px solid var(--line);
37
+ }
38
+
39
+ .sketch-layers-head {
40
+ justify-content: space-between;
41
+ }
42
+
43
+ .sketch-count {
44
+ font-family: var(--font-numeric);
45
+ font-variant-numeric: var(--numeric);
46
+ font-size: var(--type-sm);
47
+ line-height: var(--leading-xs);
48
+ color: var(--ink-3);
49
+ }
50
+
51
+ .sketch-layers-empty {
52
+ margin: 0;
53
+ padding: var(--space-7);
54
+ font-size: var(--type-md);
55
+ line-height: var(--leading-sm);
56
+ color: var(--ink-3);
57
+ }
58
+
59
+ .sketch-layer-list {
60
+ flex: 1 1 0;
61
+ margin: 0;
62
+ padding: var(--space-3);
63
+ list-style: none;
64
+ overflow-y: auto;
65
+ }
66
+
67
+ .sketch-layer {
68
+ display: flex;
69
+ align-items: center;
70
+ gap: var(--space-4);
71
+ height: var(--row-h);
72
+ padding: 0 var(--space-3);
73
+ border-radius: var(--radius-sm);
74
+ cursor: default;
75
+ outline: none;
76
+ }
77
+ .sketch-layer:hover {
78
+ background: var(--fill-rest);
79
+ }
80
+ .sketch-layer:focus-visible {
81
+ box-shadow: var(--focus-ring);
82
+ }
83
+ .sketch-layer[aria-selected="true"] {
84
+ background: var(--accent-quiet);
85
+ }
86
+
87
+ .sketch-layer-icon {
88
+ flex: none;
89
+ display: inline-flex;
90
+ width: 16px;
91
+ height: 16px;
92
+ color: var(--ink-3);
93
+ }
94
+ .sketch-layer-icon svg {
95
+ width: 16px;
96
+ height: 16px;
97
+ }
98
+ .sketch-layer[aria-selected="true"] .sketch-layer-icon,
99
+ .sketch-layer[aria-selected="true"] .sketch-layer-name {
100
+ color: var(--accent-ink);
101
+ }
102
+
103
+ .sketch-layer-name {
104
+ flex: 1;
105
+ min-width: 0;
106
+ overflow: hidden;
107
+ text-overflow: ellipsis;
108
+ white-space: nowrap;
109
+ font-size: var(--type-md);
110
+ line-height: var(--leading-xs);
111
+ font-weight: var(--weight-medium);
112
+ color: var(--ink-1);
113
+ }
114
+
115
+ .sketch-layer-kind {
116
+ flex: none;
117
+ font-size: var(--type-sm);
118
+ line-height: var(--leading-xs);
119
+ color: var(--ink-3);
120
+ }
121
+
122
+ /* ---- the canvas bar (SB2, SB5) --------------------------------------- */
123
+ .sketch-bar {
124
+ container: sketch-bar / inline-size;
125
+ flex: none;
126
+ display: flex;
127
+ align-items: center;
128
+ justify-content: space-between;
129
+ gap: var(--space-4);
130
+ height: var(--panel-head-h);
131
+ padding: 0 var(--space-4);
132
+ background: var(--surface-panel);
133
+ border-bottom: 1px solid var(--line);
134
+ }
135
+
136
+ .sketch-bar-group {
137
+ display: flex;
138
+ align-items: center;
139
+ gap: var(--space-4);
140
+ min-width: 0;
141
+ }
142
+
143
+ .sketch-crumb {
144
+ display: inline-flex;
145
+ align-items: center;
146
+ gap: var(--space-2);
147
+ height: var(--control-h);
148
+ padding: 0 var(--space-4) 0 var(--space-2);
149
+ font: inherit;
150
+ font-size: var(--type-md);
151
+ line-height: var(--leading-xs);
152
+ font-weight: var(--weight-medium);
153
+ color: var(--ink-2);
154
+ background: transparent;
155
+ border: 0;
156
+ border-radius: var(--radius-tab);
157
+ cursor: pointer;
158
+ }
159
+ .sketch-crumb svg {
160
+ width: 16px;
161
+ height: 16px;
162
+ }
163
+ .sketch-crumb:hover {
164
+ background: var(--fill-rest);
165
+ color: var(--ink-1);
166
+ }
167
+ .sketch-crumb:focus-visible {
168
+ outline: none;
169
+ box-shadow: var(--focus-ring);
170
+ }
171
+
172
+ .sketch-divider {
173
+ flex: none;
174
+ width: 1px;
175
+ height: 16px;
176
+ background: var(--line);
177
+ }
178
+
179
+ .sketch-bar-title {
180
+ display: flex;
181
+ align-items: center;
182
+ gap: var(--space-4);
183
+ min-width: 0;
184
+ padding: 0 var(--space-2);
185
+ }
186
+
187
+ .sketch-bar-number {
188
+ font-family: var(--font-numeric);
189
+ font-variant-numeric: var(--numeric);
190
+ font-size: var(--type-md);
191
+ line-height: var(--leading-xs);
192
+ color: var(--ink-3);
193
+ }
194
+
195
+ /* The bar's heading holds the shot's name, or its open rename, in the bar's
196
+ own face: a heading's default size, weight and margins would set the
197
+ rename's words bigger and bolder than the name they replace. */
198
+ .sketch-bar-heading {
199
+ display: flex;
200
+ min-width: 0;
201
+ margin: 0;
202
+ font: inherit;
203
+ }
204
+
205
+ /* The shot's name is a button that opens its rename (`PartName`): it reads
206
+ as the bar's title, and only its keyboard focus shows a ring. */
207
+ .sketch-bar-name {
208
+ margin: 0;
209
+ min-width: 0;
210
+ padding: 0;
211
+ overflow: hidden;
212
+ text-align: left;
213
+ text-overflow: ellipsis;
214
+ white-space: nowrap;
215
+ font-size: var(--type-lg);
216
+ line-height: var(--leading-xs);
217
+ font-weight: var(--weight-semibold);
218
+ color: var(--ink-1);
219
+ background: none;
220
+ border: 0;
221
+ border-radius: var(--radius-xs);
222
+ cursor: default;
223
+ }
224
+ .sketch-bar-name:focus-visible {
225
+ outline: none;
226
+ box-shadow: var(--focus-ring);
227
+ }
228
+
229
+ .sketch-bar-nav,
230
+ .sketch-zoom {
231
+ display: flex;
232
+ align-items: center;
233
+ gap: var(--space-1);
234
+ }
235
+
236
+ .sketch-bar-playing {
237
+ font-family: var(--font-numeric);
238
+ font-variant-numeric: var(--numeric);
239
+ font-size: var(--type-md);
240
+ line-height: var(--leading-xs);
241
+ color: var(--ink-2);
242
+ }
243
+
244
+ .sketch-bar .btn svg {
245
+ width: 16px;
246
+ height: 16px;
247
+ }
248
+
249
+ .sketch-stop-square {
250
+ width: 9px;
251
+ height: 9px;
252
+ border-radius: var(--radius-2xs);
253
+ background: var(--accent-ink);
254
+ }
255
+
256
+ .sketch-stop-key {
257
+ font-family: var(--font-numeric);
258
+ font-size: var(--type-sm);
259
+ line-height: var(--leading-xs);
260
+ color: var(--accent-ink);
261
+ }
262
+
263
+ /* A NARROW BAR (a 1024 window leaves the shot board about 500px between
264
+ Layers and the right column): the crumb, Play and Ask agent drop their
265
+ words and keep their icons and names, and Play's readout and Stop's key
266
+ go, so the shot's name and the prev/next buttons keep their room. */
267
+ @container sketch-bar (width < 720px) {
268
+ .sketch-bar-word,
269
+ .sketch-bar-playing,
270
+ .sketch-stop-key {
271
+ display: none;
272
+ }
273
+ .sketch-crumb {
274
+ padding: 0 var(--space-2);
275
+ }
276
+ }
277
+
278
+ /* The 28px square icon button (prev/next, zoom, close): no fill at rest. */
279
+ .sketch-icon-button {
280
+ display: inline-flex;
281
+ align-items: center;
282
+ justify-content: center;
283
+ flex: none;
284
+ width: var(--control-h);
285
+ height: var(--control-h);
286
+ padding: 0;
287
+ color: var(--ink-2);
288
+ background: transparent;
289
+ border: 0;
290
+ border-radius: var(--radius-xs);
291
+ cursor: pointer;
292
+ }
293
+ .sketch-icon-button svg {
294
+ width: 16px;
295
+ height: 16px;
296
+ }
297
+ .sketch-icon-button:hover:not(:disabled) {
298
+ background: var(--fill-rest);
299
+ color: var(--ink-1);
300
+ }
301
+ .sketch-icon-button:disabled {
302
+ opacity: var(--opacity-disabled);
303
+ cursor: default;
304
+ }
305
+ .sketch-icon-button:focus-visible {
306
+ outline: none;
307
+ box-shadow: var(--focus-ring);
308
+ }
309
+
310
+ /* ---- the desk and the paper (SB2) ------------------------------------ */
311
+ .sketch-desk {
312
+ flex: 1 1 0;
313
+ display: flex;
314
+ min-width: 0;
315
+ min-height: 0;
316
+ padding: var(--space-8);
317
+ overflow: auto;
318
+ background-color: var(--surface-board);
319
+ background-image: radial-gradient(circle, var(--board-dot) 1px, transparent 1px);
320
+ background-size: 20px 20px;
321
+ }
322
+
323
+ /* Centred when it fits, scrolled from its edge when it does not. */
324
+ .sketch-desk-stack {
325
+ flex: none;
326
+ display: flex;
327
+ flex-direction: column;
328
+ gap: var(--space-8);
329
+ margin: auto;
330
+ }
331
+
332
+ .sketch-paper {
333
+ position: relative;
334
+ container-type: inline-size;
335
+ flex: none;
336
+ overflow: hidden;
337
+ color: var(--sketch-ink);
338
+ background: var(--sketch-paper);
339
+ border-radius: var(--radius-2xs);
340
+ box-shadow: var(--shadow-float);
341
+ outline: none;
342
+ touch-action: none;
343
+ user-select: none;
344
+ }
345
+ .sketch-paper[data-ground="dark"] {
346
+ color: var(--on-media);
347
+ background: var(--surface-app);
348
+ }
349
+ .sketch-paper[data-ground="brand"] {
350
+ color: var(--on-accent);
351
+ background: var(--accent);
352
+ }
353
+ .sketch-paper[data-tool="box"],
354
+ .sketch-paper[data-tool="text"],
355
+ .sketch-paper[data-tool="arrow"] {
356
+ cursor: crosshair;
357
+ }
358
+
359
+ /* ---- the items (SketchItem.tsx) -------------------------------------- */
360
+ .sketch-item {
361
+ position: absolute;
362
+ box-sizing: border-box;
363
+ outline: none;
364
+ }
365
+ .sketch-item:focus-visible {
366
+ box-shadow: var(--focus-ring);
367
+ }
368
+
369
+ .sketch-item.is-text {
370
+ display: flex;
371
+ align-items: flex-start;
372
+ overflow: hidden;
373
+ line-height: var(--leading-tight);
374
+ font-weight: var(--weight-regular);
375
+ white-space: pre-wrap;
376
+ overflow-wrap: anywhere;
377
+ }
378
+ .sketch-item.is-text.is-title {
379
+ font-weight: var(--weight-semibold);
380
+ letter-spacing: var(--tracking-display-md);
381
+ }
382
+ .sketch-item.is-title .sketch-text-editor {
383
+ letter-spacing: var(--tracking-display-md);
384
+ }
385
+ .sketch-item.is-text[data-align="center"] {
386
+ justify-content: center;
387
+ text-align: center;
388
+ }
389
+ .sketch-item.is-text[data-align="end"] {
390
+ justify-content: flex-end;
391
+ text-align: right;
392
+ }
393
+
394
+ .sketch-text-editor {
395
+ width: 100%;
396
+ height: 100%;
397
+ padding: 0;
398
+ resize: none;
399
+ font: inherit;
400
+ line-height: inherit;
401
+ text-align: inherit;
402
+ color: inherit;
403
+ background: var(--fill-rest);
404
+ border: 0;
405
+ outline: 1px solid var(--accent);
406
+ }
407
+
408
+ .sketch-item.is-box {
409
+ border-radius: var(--radius-xs);
410
+ background: color-mix(in srgb, var(--sketch-paper) 80%, var(--sketch-line));
411
+ border: 1px solid var(--sketch-line);
412
+ }
413
+ .sketch-item.is-box[data-tone="dark"] {
414
+ background: color-mix(in srgb, var(--sketch-ink) 48%, black);
415
+ border-color: transparent;
416
+ }
417
+ .sketch-item.is-box[data-tone="accent"] {
418
+ background: var(--accent);
419
+ border-color: transparent;
420
+ }
421
+
422
+ .sketch-item-label {
423
+ position: absolute;
424
+ top: var(--space-4);
425
+ left: var(--space-5);
426
+ max-width: calc(100% - 2 * var(--space-5));
427
+ overflow: hidden;
428
+ text-overflow: ellipsis;
429
+ white-space: nowrap;
430
+ line-height: var(--leading-tight);
431
+ font-weight: var(--weight-medium);
432
+ color: var(--sketch-ink);
433
+ }
434
+ .sketch-item.is-box[data-tone="dark"] .sketch-item-label {
435
+ color: var(--sketch-line);
436
+ }
437
+ .sketch-item.is-box[data-tone="accent"] .sketch-item-label {
438
+ color: var(--on-accent);
439
+ }
440
+ .sketch-item-label.is-arrow {
441
+ top: auto;
442
+ left: auto;
443
+ max-width: none;
444
+ translate: -50% -50%;
445
+ pointer-events: none;
446
+ }
447
+
448
+ .sketch-item.is-image,
449
+ .sketch-item.is-component,
450
+ .sketch-item.is-missing {
451
+ border-radius: var(--radius-2xs);
452
+ }
453
+ .sketch-item.is-image > img,
454
+ .sketch-item-media,
455
+ .sketch-item-poster {
456
+ display: block;
457
+ width: 100%;
458
+ height: 100%;
459
+ border-radius: var(--radius-2xs);
460
+ box-shadow: 0 0 0 1px var(--sketch-line);
461
+ pointer-events: none;
462
+ }
463
+ .sketch-item-media,
464
+ .sketch-item-poster {
465
+ object-fit: cover;
466
+ }
467
+
468
+ .sketch-item.is-missing {
469
+ background: color-mix(in srgb, var(--sketch-paper) 80%, var(--sketch-line));
470
+ border: 1px dashed var(--sketch-ink);
471
+ }
472
+
473
+ .sketch-item-tile {
474
+ display: grid;
475
+ place-items: center;
476
+ width: 100%;
477
+ height: 100%;
478
+ overflow: hidden;
479
+ font-size: var(--type-md);
480
+ line-height: var(--leading-xs);
481
+ font-weight: var(--weight-medium);
482
+ color: var(--on-media);
483
+ background: var(--surface-secondary);
484
+ border-radius: var(--radius-xs);
485
+ }
486
+
487
+ /* The file name under a picture, and the "component" tag under a poster:
488
+ chrome type at every zoom, hanging under the item. */
489
+ .sketch-item-caption,
490
+ .sketch-item-tag {
491
+ position: absolute;
492
+ top: calc(100% + var(--space-3));
493
+ left: 0;
494
+ display: inline-flex;
495
+ align-items: center;
496
+ gap: var(--space-2);
497
+ max-width: 100%;
498
+ overflow: hidden;
499
+ white-space: nowrap;
500
+ font-family: var(--font-numeric);
501
+ font-size: var(--type-micro);
502
+ line-height: var(--leading-xs);
503
+ color: var(--sketch-ink);
504
+ pointer-events: none;
505
+ }
506
+ .sketch-item-caption svg,
507
+ .sketch-item-tag svg {
508
+ flex: none;
509
+ width: 12px;
510
+ height: 12px;
511
+ }
512
+ .sketch-item-tag {
513
+ height: 16px;
514
+ padding: 0 var(--space-2);
515
+ background: var(--sketch-paper);
516
+ border: 1px solid var(--sketch-line);
517
+ border-radius: var(--radius-2xs);
518
+ }
519
+
520
+ /* An arrow: a paper-sized SVG that takes no pointer, but its wide hit
521
+ stroke does. Strokes keep their screen width at every zoom. */
522
+ .sketch-item.is-arrow {
523
+ inset: 0;
524
+ width: 100%;
525
+ height: 100%;
526
+ overflow: visible;
527
+ pointer-events: none;
528
+ }
529
+ .sketch-arrow-line {
530
+ fill: none;
531
+ stroke: currentColor;
532
+ stroke-width: 2px;
533
+ stroke-linecap: round;
534
+ stroke-linejoin: round;
535
+ vector-effect: non-scaling-stroke;
536
+ }
537
+ .sketch-arrow-hit {
538
+ fill: none;
539
+ stroke: transparent;
540
+ stroke-width: 12px;
541
+ vector-effect: non-scaling-stroke;
542
+ pointer-events: stroke;
543
+ outline: none;
544
+ }
545
+ .sketch-item.is-arrow[data-selected] .sketch-arrow-line {
546
+ stroke: var(--accent);
547
+ }
548
+
549
+ /* ---- selection, handles, guides, marquee, draft, drop ---------------- */
550
+ .sketch-selection,
551
+ .sketch-handles {
552
+ position: absolute;
553
+ box-sizing: border-box;
554
+ pointer-events: none;
555
+ }
556
+ .sketch-selection {
557
+ border: 1px solid var(--accent);
558
+ }
559
+
560
+ .sketch-handle {
561
+ position: absolute;
562
+ width: 8px;
563
+ height: 8px;
564
+ box-sizing: border-box;
565
+ translate: -50% -50%;
566
+ background: var(--on-accent);
567
+ border: 1px solid var(--accent);
568
+ pointer-events: auto;
569
+ }
570
+ .sketch-handle.is-nw { left: 0; top: 0; cursor: nwse-resize; }
571
+ .sketch-handle.is-ne { left: 100%; top: 0; cursor: nesw-resize; }
572
+ .sketch-handle.is-se { left: 100%; top: 100%; cursor: nwse-resize; }
573
+ .sketch-handle.is-sw { left: 0; top: 100%; cursor: nesw-resize; }
574
+ .sketch-handle.is-n { left: 50%; top: 0; cursor: ns-resize; }
575
+ .sketch-handle.is-e { left: 100%; top: 50%; cursor: ew-resize; }
576
+ .sketch-handle.is-s { left: 50%; top: 100%; cursor: ns-resize; }
577
+ .sketch-handle.is-w { left: 0; top: 50%; cursor: ew-resize; }
578
+ .sketch-handle.is-end {
579
+ border-radius: var(--radius-full);
580
+ cursor: move;
581
+ }
582
+
583
+ /* A snap guide is deliberately not the accent (shotTokens.css). */
584
+ .sketch-guide {
585
+ position: absolute;
586
+ background: var(--guide);
587
+ pointer-events: none;
588
+ }
589
+ .sketch-guide.is-x {
590
+ top: 0;
591
+ bottom: 0;
592
+ width: 1px;
593
+ }
594
+ .sketch-guide.is-y {
595
+ left: 0;
596
+ right: 0;
597
+ height: 1px;
598
+ }
599
+
600
+ .sketch-marquee,
601
+ .sketch-draft {
602
+ position: absolute;
603
+ box-sizing: border-box;
604
+ pointer-events: none;
605
+ }
606
+ .sketch-marquee {
607
+ background: var(--accent-quiet);
608
+ border: 1px solid var(--accent);
609
+ }
610
+ .sketch-draft {
611
+ border: 1px dashed var(--accent);
612
+ }
613
+ .sketch-draft.is-arrow {
614
+ inset: 0;
615
+ width: 100%;
616
+ height: 100%;
617
+ border: 0;
618
+ }
619
+ .sketch-draft.is-arrow path {
620
+ stroke: var(--accent);
621
+ stroke-width: 2px;
622
+ vector-effect: non-scaling-stroke;
623
+ }
624
+
625
+ /* SB4's drop target, centred on the drop point. */
626
+ .sketch-drop {
627
+ position: absolute;
628
+ display: flex;
629
+ flex-direction: column;
630
+ align-items: center;
631
+ justify-content: center;
632
+ gap: var(--space-3);
633
+ width: 240px;
634
+ height: 140px;
635
+ translate: -50% -50%;
636
+ color: var(--accent);
637
+ background: var(--accent-quiet);
638
+ border: 1.5px dashed var(--accent);
639
+ border-radius: var(--radius-xs);
640
+ pointer-events: none;
641
+ }
642
+ .sketch-drop > svg {
643
+ width: 16px;
644
+ height: 16px;
645
+ }
646
+ .sketch-drop-chip {
647
+ padding: 0 var(--space-3);
648
+ font-size: var(--type-sm);
649
+ line-height: var(--leading-md);
650
+ font-weight: var(--weight-medium);
651
+ white-space: nowrap;
652
+ color: var(--on-accent);
653
+ background: var(--accent);
654
+ border-radius: var(--radius-xs);
655
+ }
656
+
657
+ /* ---- the empty sketch (SB2) ------------------------------------------ */
658
+ .sketch-empty {
659
+ position: absolute;
660
+ inset: 0;
661
+ display: flex;
662
+ flex-direction: column;
663
+ align-items: center;
664
+ justify-content: center;
665
+ gap: var(--space-8);
666
+ pointer-events: none;
667
+ }
668
+ .sketch-empty-copy {
669
+ display: flex;
670
+ flex-direction: column;
671
+ align-items: center;
672
+ gap: var(--space-3);
673
+ text-align: center;
674
+ }
675
+ .sketch-empty-title {
676
+ margin: 0;
677
+ font-size: var(--type-xl);
678
+ line-height: var(--leading-md);
679
+ font-weight: var(--weight-semibold);
680
+ letter-spacing: var(--tracking-body);
681
+ color: var(--sketch-ink);
682
+ }
683
+ .sketch-empty-lead {
684
+ margin: 0;
685
+ font-size: var(--type-lg);
686
+ line-height: var(--leading-sm);
687
+ color: color-mix(in srgb, var(--sketch-ink) 80%, transparent);
688
+ }
689
+ .sketch-empty-starts {
690
+ display: flex;
691
+ gap: var(--space-6);
692
+ padding-top: var(--space-2);
693
+ }
694
+ .sketch-start {
695
+ display: flex;
696
+ flex-direction: column;
697
+ align-items: center;
698
+ justify-content: center;
699
+ gap: var(--space-5);
700
+ width: 148px;
701
+ height: 88px;
702
+ font: inherit;
703
+ color: var(--sketch-ink);
704
+ background: var(--sketch-paper);
705
+ border: 1px solid var(--sketch-line);
706
+ border-radius: var(--radius-tab);
707
+ cursor: pointer;
708
+ pointer-events: auto;
709
+ }
710
+ .sketch-start:hover:not(:disabled) {
711
+ border-color: var(--sketch-ink);
712
+ }
713
+ .sketch-start:focus-visible {
714
+ outline: none;
715
+ box-shadow: var(--focus-ring);
716
+ }
717
+ .sketch-start:disabled {
718
+ opacity: var(--opacity-disabled);
719
+ cursor: default;
720
+ }
721
+ .sketch-start-icon svg {
722
+ width: 20px;
723
+ height: 20px;
724
+ }
725
+ .sketch-start-label {
726
+ display: inline-flex;
727
+ align-items: center;
728
+ gap: var(--space-3);
729
+ font-size: var(--type-md);
730
+ line-height: var(--leading-xs);
731
+ font-weight: var(--weight-medium);
732
+ }
733
+ .sketch-start-key {
734
+ padding: 0 var(--space-2);
735
+ font-family: var(--font-numeric);
736
+ font-size: var(--type-micro);
737
+ line-height: var(--leading-xs);
738
+ border: 1px solid var(--sketch-line);
739
+ border-radius: var(--radius-xs);
740
+ }
741
+
742
+ /* ---- Play (SB5) ------------------------------------------------------- */
743
+ .sketch-play-stage {
744
+ position: absolute;
745
+ inset: 0;
746
+ }
747
+ .sketch-play-overlay {
748
+ position: absolute;
749
+ inset: 0;
750
+ opacity: 0.5;
751
+ pointer-events: none;
752
+ }
753
+ .sketch-play-box {
754
+ position: absolute;
755
+ box-sizing: border-box;
756
+ outline: 1.5px dashed var(--sketch-ink);
757
+ outline-offset: var(--space-2);
758
+ border-radius: var(--radius-sm);
759
+ }
760
+ .sketch-play-chip {
761
+ position: absolute;
762
+ top: calc(-1 * var(--space-5));
763
+ left: var(--space-5);
764
+ padding: 0 var(--space-3);
765
+ font-size: var(--type-sm);
766
+ line-height: var(--leading-md);
767
+ font-weight: var(--weight-medium);
768
+ white-space: nowrap;
769
+ color: var(--sketch-ink);
770
+ background: var(--sketch-paper);
771
+ border-radius: var(--radius-xs);
772
+ }
773
+ .sketch-play-progress {
774
+ position: absolute;
775
+ left: 0;
776
+ right: 0;
777
+ bottom: 0;
778
+ height: 3px;
779
+ background: color-mix(in srgb, var(--sketch-ink) 12%, transparent);
780
+ }
781
+ .sketch-play-progress > span {
782
+ display: block;
783
+ height: 100%;
784
+ background: var(--accent);
785
+ }
786
+ .sketch-play-time {
787
+ position: absolute;
788
+ left: var(--space-6);
789
+ bottom: var(--space-6);
790
+ display: inline-flex;
791
+ align-items: center;
792
+ gap: var(--space-3);
793
+ height: 24px;
794
+ padding: 0 var(--space-4);
795
+ font-family: var(--font-numeric);
796
+ font-variant-numeric: var(--numeric);
797
+ font-size: var(--type-md);
798
+ line-height: var(--leading-xs);
799
+ color: var(--ink-1);
800
+ background: var(--surface-secondary);
801
+ border: 1px solid var(--line);
802
+ border-radius: var(--radius-sm);
803
+ }
804
+ .sketch-play-total {
805
+ font-size: var(--type-sm);
806
+ color: var(--ink-3);
807
+ }
808
+ .sketch-play-dot,
809
+ .sketch-live-dot,
810
+ .sketch-stage-dot {
811
+ flex: none;
812
+ width: 6px;
813
+ height: 6px;
814
+ border-radius: var(--radius-full);
815
+ background: var(--success);
816
+ }
817
+ .sketch-live-dot {
818
+ box-shadow: 0 0 0 3px var(--success-line);
819
+ }
820
+
821
+ /* Play locks the strip and the footer (SB5). */
822
+ .sketch-desk-strip[inert],
823
+ .sketch-footer-cell[inert] {
824
+ opacity: var(--opacity-disabled);
825
+ }
826
+
827
+ /* ---- the sketch strip (SB2, SB3) ------------------------------------- */
828
+ .sketch-strip {
829
+ display: flex;
830
+ align-items: flex-start;
831
+ gap: var(--space-6);
832
+ }
833
+ .sketch-thumb-cell {
834
+ display: flex;
835
+ flex-direction: column;
836
+ gap: var(--space-3);
837
+ width: 128px;
838
+ }
839
+ .sketch-thumb {
840
+ display: block;
841
+ width: 128px;
842
+ padding: 0;
843
+ overflow: hidden;
844
+ background: var(--sketch-paper);
845
+ border: 1px solid var(--line-strong);
846
+ border-radius: var(--radius-xs);
847
+ cursor: pointer;
848
+ }
849
+ .sketch-thumb[aria-pressed="true"] {
850
+ border: 2px solid var(--accent);
851
+ box-shadow: var(--focus-ring);
852
+ }
853
+ .sketch-thumb:focus-visible {
854
+ outline: none;
855
+ box-shadow: var(--focus-ring);
856
+ }
857
+ .sketch-thumb-label {
858
+ display: flex;
859
+ align-items: center;
860
+ gap: var(--space-3);
861
+ min-height: var(--leading-xs);
862
+ padding-top: var(--space-1);
863
+ }
864
+ .sketch-thumb-name {
865
+ min-width: 0;
866
+ overflow: hidden;
867
+ text-overflow: ellipsis;
868
+ white-space: nowrap;
869
+ font-size: var(--type-md);
870
+ line-height: var(--leading-xs);
871
+ font-weight: var(--weight-medium);
872
+ color: var(--ink-2);
873
+ }
874
+ .sketch-thumb-name.is-current {
875
+ color: var(--accent-ink);
876
+ }
877
+ .sketch-thumb-time {
878
+ flex: none;
879
+ font-family: var(--font-numeric);
880
+ font-variant-numeric: var(--numeric);
881
+ font-size: var(--type-sm);
882
+ line-height: var(--leading-xs);
883
+ color: var(--ink-3);
884
+ }
885
+ .sketch-add {
886
+ display: flex;
887
+ align-items: center;
888
+ justify-content: center;
889
+ gap: var(--space-3);
890
+ flex: none;
891
+ width: 128px;
892
+ aspect-ratio: 16 / 9;
893
+ font: inherit;
894
+ font-size: var(--type-md);
895
+ line-height: var(--leading-xs);
896
+ font-weight: var(--weight-medium);
897
+ color: var(--ink-2);
898
+ background: transparent;
899
+ border: 1px dashed var(--line-strong);
900
+ border-radius: var(--radius-xs);
901
+ cursor: pointer;
902
+ }
903
+ .sketch-add:hover:not(:disabled) {
904
+ background: var(--fill-rest);
905
+ color: var(--ink-1);
906
+ }
907
+ .sketch-add:disabled {
908
+ opacity: var(--opacity-disabled);
909
+ cursor: default;
910
+ }
911
+ .sketch-add-icon svg {
912
+ width: 16px;
913
+ height: 16px;
914
+ color: var(--ink-3);
915
+ }
916
+
917
+ /* ---- the tool footer (SB2) ------------------------------------------- */
918
+ .sketch-footer {
919
+ container: sketch-footer / inline-size;
920
+ flex: none;
921
+ display: flex;
922
+ align-items: center;
923
+ justify-content: space-between;
924
+ gap: var(--space-7);
925
+ height: var(--tool-footer-h);
926
+ padding: 0 var(--space-5);
927
+ background: var(--surface-panel);
928
+ border-top: 1px solid var(--line);
929
+ }
930
+ .sketch-tools {
931
+ display: flex;
932
+ align-items: center;
933
+ gap: var(--space-1);
934
+ min-width: 0;
935
+ overflow: hidden;
936
+ }
937
+ .sketch-tool {
938
+ display: inline-flex;
939
+ align-items: center;
940
+ gap: var(--space-3);
941
+ flex: none;
942
+ height: var(--control-h);
943
+ padding: 0 var(--space-4);
944
+ font: inherit;
945
+ font-size: var(--type-md);
946
+ line-height: var(--leading-xs);
947
+ font-weight: var(--weight-medium);
948
+ color: var(--ink-2);
949
+ background: transparent;
950
+ border: 0;
951
+ border-radius: var(--radius-xs);
952
+ cursor: pointer;
953
+ transition: background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
954
+ }
955
+ .sketch-tool:hover:not(:disabled) {
956
+ background: var(--fill-rest);
957
+ color: var(--ink-1);
958
+ }
959
+ .sketch-tool:disabled {
960
+ opacity: var(--opacity-disabled);
961
+ cursor: default;
962
+ }
963
+ .sketch-tool:focus-visible {
964
+ outline: none;
965
+ box-shadow: var(--focus-ring);
966
+ }
967
+ .sketch-tool.is-armed {
968
+ background: var(--accent-soft);
969
+ color: var(--accent-ink);
970
+ }
971
+ .sketch-tool-icon {
972
+ display: inline-flex;
973
+ }
974
+ .sketch-tool-icon svg {
975
+ width: 16px;
976
+ height: 16px;
977
+ }
978
+ .sketch-tool-key {
979
+ font-family: var(--font-numeric);
980
+ font-size: var(--type-micro);
981
+ line-height: var(--leading-xs);
982
+ color: var(--ink-3);
983
+ }
984
+ .sketch-tool.is-armed .sketch-tool-key {
985
+ color: color-mix(in srgb, var(--accent-ink) 70%, transparent);
986
+ }
987
+
988
+ /* A NARROW FOOTER: the tools keep their icons, names and titles and drop
989
+ their words and keys, so all six and the zoom stay in the row. */
990
+ @container sketch-footer (width < 720px) {
991
+ .sketch-tool-label,
992
+ .sketch-tool-key {
993
+ display: none;
994
+ }
995
+ .sketch-tool {
996
+ padding: 0 var(--space-3);
997
+ }
998
+ }
999
+ .sketch-zoom-value {
1000
+ width: 52px;
1001
+ text-align: center;
1002
+ font-family: var(--font-numeric);
1003
+ font-variant-numeric: var(--numeric);
1004
+ font-size: var(--type-md);
1005
+ line-height: var(--leading-xs);
1006
+ color: var(--ink-1);
1007
+ }
1008
+ .sketch-fit {
1009
+ height: var(--control-h);
1010
+ padding: 0 var(--space-5);
1011
+ font: inherit;
1012
+ font-size: var(--type-md);
1013
+ line-height: var(--leading-xs);
1014
+ font-weight: var(--weight-medium);
1015
+ color: var(--ink-2);
1016
+ background: transparent;
1017
+ border: 0;
1018
+ border-radius: var(--radius-xs);
1019
+ cursor: pointer;
1020
+ }
1021
+ .sketch-fit:hover {
1022
+ background: var(--fill-rest);
1023
+ color: var(--ink-1);
1024
+ }
1025
+ .sketch-fit:focus-visible {
1026
+ outline: none;
1027
+ box-shadow: var(--focus-ring);
1028
+ }
1029
+
1030
+ /* ---- the pickers (SB4): the popover recipe, 360 wide ----------------- */
1031
+ .sketch-picker {
1032
+ width: 360px;
1033
+ box-shadow: var(--shadow-float);
1034
+ }
1035
+ .sketch-picker-body {
1036
+ display: flex;
1037
+ flex-direction: column;
1038
+ gap: var(--space-5);
1039
+ padding: var(--space-6);
1040
+ }
1041
+ .sketch-picker-head {
1042
+ display: flex;
1043
+ align-items: center;
1044
+ justify-content: space-between;
1045
+ height: 20px;
1046
+ }
1047
+ .sketch-picker-title {
1048
+ margin: 0;
1049
+ font-size: var(--type-lg);
1050
+ line-height: var(--leading-xs);
1051
+ font-weight: var(--weight-semibold);
1052
+ color: var(--ink-1);
1053
+ }
1054
+ .sketch-picker-search {
1055
+ display: flex;
1056
+ align-items: center;
1057
+ gap: var(--space-4);
1058
+ height: var(--control-h);
1059
+ padding: 0 var(--space-4);
1060
+ color: var(--ink-3);
1061
+ background: var(--fill-rest);
1062
+ border: 1px solid var(--line-strong);
1063
+ border-radius: var(--field-radius);
1064
+ }
1065
+ .sketch-picker-search:focus-within {
1066
+ border-color: var(--accent);
1067
+ }
1068
+ .sketch-picker-search svg {
1069
+ flex: none;
1070
+ width: 16px;
1071
+ height: 16px;
1072
+ }
1073
+ .sketch-picker-search input {
1074
+ flex: 1;
1075
+ min-width: 0;
1076
+ padding: 0;
1077
+ font: inherit;
1078
+ font-size: var(--type-md);
1079
+ line-height: var(--leading-xs);
1080
+ color: var(--ink-1);
1081
+ background: transparent;
1082
+ border: 0;
1083
+ outline: none;
1084
+ }
1085
+ .sketch-picker-count {
1086
+ font-family: var(--font-numeric);
1087
+ font-size: var(--type-sm);
1088
+ color: var(--ink-3);
1089
+ }
1090
+ .sketch-picker-grid {
1091
+ display: grid;
1092
+ grid-template-columns: repeat(3, 1fr);
1093
+ gap: var(--space-4);
1094
+ max-height: 240px;
1095
+ overflow-y: auto;
1096
+ }
1097
+ .sketch-picker-tile {
1098
+ display: block;
1099
+ aspect-ratio: 106 / 55;
1100
+ padding: 0;
1101
+ overflow: hidden;
1102
+ background: var(--surface-secondary);
1103
+ border: 0;
1104
+ border-radius: var(--radius-sm);
1105
+ cursor: pointer;
1106
+ }
1107
+ .sketch-picker-tile:hover {
1108
+ box-shadow: 0 0 0 1px var(--line-strong);
1109
+ }
1110
+ .sketch-picker-tile:focus-visible {
1111
+ outline: none;
1112
+ box-shadow: var(--focus-ring);
1113
+ }
1114
+ .sketch-picker-tile > img,
1115
+ .sketch-picker-media {
1116
+ display: block;
1117
+ width: 100%;
1118
+ height: 100%;
1119
+ object-fit: cover;
1120
+ }
1121
+ .sketch-picker-none {
1122
+ margin: 0;
1123
+ font-size: var(--type-md);
1124
+ line-height: var(--leading-sm);
1125
+ color: var(--ink-3);
1126
+ }
1127
+ .sketch-picker-foot {
1128
+ display: flex;
1129
+ align-items: center;
1130
+ gap: var(--space-5);
1131
+ padding-top: var(--space-5);
1132
+ border-top: 1px solid var(--line);
1133
+ }
1134
+ .sketch-picker-foot.is-split {
1135
+ justify-content: space-between;
1136
+ }
1137
+ .sketch-picker-foot .btn svg {
1138
+ width: 16px;
1139
+ height: 16px;
1140
+ }
1141
+ .sketch-picker-hint {
1142
+ font-size: var(--type-sm);
1143
+ line-height: var(--leading-xs);
1144
+ color: var(--ink-3);
1145
+ }
1146
+ .sketch-picker-browse {
1147
+ display: inline-flex;
1148
+ align-items: center;
1149
+ gap: var(--space-2);
1150
+ }
1151
+ .sketch-picker-browse svg {
1152
+ width: 16px;
1153
+ height: 16px;
1154
+ }
1155
+ /* THE COMPONENT PICKER'S FOUR SECTIONS SCROLL AS ONE: four lists that each
1156
+ scrolled on their own made a popover taller than a laptop window. */
1157
+ .sketch-picker-sections {
1158
+ display: flex;
1159
+ flex-direction: column;
1160
+ gap: var(--space-5);
1161
+ max-height: 360px;
1162
+ overflow-y: auto;
1163
+ }
1164
+ .sketch-picker-section {
1165
+ display: flex;
1166
+ flex-direction: column;
1167
+ gap: var(--space-1);
1168
+ }
1169
+ .sketch-picker-section-head {
1170
+ display: flex;
1171
+ align-items: center;
1172
+ justify-content: space-between;
1173
+ height: 20px;
1174
+ }
1175
+ /* A built-in group's name (Effects, Particles, Paper, Primitives). */
1176
+ .sketch-picker-group {
1177
+ margin: var(--space-3) 0 var(--space-1);
1178
+ padding: 0 var(--space-3);
1179
+ font-size: var(--type-sm);
1180
+ line-height: var(--leading-xs);
1181
+ font-weight: var(--weight-medium);
1182
+ color: var(--ink-3);
1183
+ }
1184
+ .sketch-picker-rows {
1185
+ margin: 0;
1186
+ padding: 0;
1187
+ list-style: none;
1188
+ }
1189
+ .sketch-picker-row-main {
1190
+ display: flex;
1191
+ align-items: center;
1192
+ gap: var(--space-5);
1193
+ width: 100%;
1194
+ height: var(--button-h);
1195
+ padding: 0 var(--space-3);
1196
+ font: inherit;
1197
+ text-align: left;
1198
+ background: transparent;
1199
+ border: 0;
1200
+ border-radius: var(--radius-sm);
1201
+ cursor: pointer;
1202
+ }
1203
+ .sketch-picker-row-main:hover:not(:disabled, [aria-disabled="true"]) {
1204
+ background: var(--fill-rest);
1205
+ }
1206
+ .sketch-picker-row-main:focus-visible {
1207
+ outline: none;
1208
+ box-shadow: var(--focus-ring);
1209
+ }
1210
+ /* A refused row (a dom component) stays pressable, so a press says why. */
1211
+ .sketch-picker-row-main:disabled,
1212
+ .sketch-picker-row-main[aria-disabled="true"] {
1213
+ opacity: var(--opacity-disabled);
1214
+ cursor: default;
1215
+ }
1216
+ .sketch-picker-thumb {
1217
+ flex: none;
1218
+ display: grid;
1219
+ place-items: center;
1220
+ width: 40px;
1221
+ height: 24px;
1222
+ overflow: hidden;
1223
+ color: var(--ink-3);
1224
+ background: var(--surface-secondary);
1225
+ border-radius: var(--radius-xs);
1226
+ }
1227
+ .sketch-picker-thumb svg {
1228
+ width: 16px;
1229
+ height: 16px;
1230
+ }
1231
+ .sketch-picker-thumb img {
1232
+ width: 100%;
1233
+ height: 100%;
1234
+ object-fit: cover;
1235
+ }
1236
+ .sketch-picker-name {
1237
+ flex: 1;
1238
+ min-width: 0;
1239
+ overflow: hidden;
1240
+ text-overflow: ellipsis;
1241
+ white-space: nowrap;
1242
+ font-size: var(--type-md);
1243
+ line-height: var(--leading-xs);
1244
+ font-weight: var(--weight-medium);
1245
+ color: var(--ink-1);
1246
+ }
1247
+ /* Where a workspace component lives: its file, or its home Project. */
1248
+ .sketch-picker-where {
1249
+ flex: none;
1250
+ max-width: 96px;
1251
+ overflow: hidden;
1252
+ text-overflow: ellipsis;
1253
+ white-space: nowrap;
1254
+ font-size: var(--type-sm);
1255
+ line-height: var(--leading-xs);
1256
+ color: var(--ink-3);
1257
+ }
1258
+ .sketch-picker-kind {
1259
+ display: flex;
1260
+ justify-content: flex-end;
1261
+ width: 48px;
1262
+ }
1263
+ .sketch-picker-add {
1264
+ display: grid;
1265
+ place-items: center;
1266
+ width: var(--control-h);
1267
+ height: var(--control-h);
1268
+ color: var(--ink-2);
1269
+ }
1270
+ .sketch-picker-add svg {
1271
+ width: 16px;
1272
+ height: 16px;
1273
+ }
1274
+
1275
+ /* ---- the item inspector (SB3, SB5) ------------------------------------ */
1276
+ .sketch-inspector {
1277
+ display: flex;
1278
+ flex-direction: column;
1279
+ min-width: 0;
1280
+ min-height: 0;
1281
+ height: 100%;
1282
+ background: var(--surface-panel);
1283
+ }
1284
+ .sketch-inspector-icon {
1285
+ display: inline-flex;
1286
+ color: var(--ink-2);
1287
+ }
1288
+ .sketch-inspector-icon svg {
1289
+ width: 16px;
1290
+ height: 16px;
1291
+ }
1292
+ .sketch-inspector-title {
1293
+ flex: 1;
1294
+ min-width: 0;
1295
+ margin: 0;
1296
+ overflow: hidden;
1297
+ text-overflow: ellipsis;
1298
+ white-space: nowrap;
1299
+ font-size: var(--type-lg);
1300
+ line-height: var(--leading-xs);
1301
+ font-weight: var(--weight-semibold);
1302
+ color: var(--ink-1);
1303
+ }
1304
+ .sketch-inspector-playing {
1305
+ flex: none;
1306
+ display: flex;
1307
+ align-items: center;
1308
+ gap: var(--space-4);
1309
+ height: var(--panel-head-h);
1310
+ padding: 0 var(--space-7);
1311
+ background: var(--success-wash);
1312
+ border-bottom: 1px solid var(--line);
1313
+ }
1314
+ .sketch-inspector-playing-word {
1315
+ flex: 1;
1316
+ font-size: var(--type-sm);
1317
+ line-height: var(--leading-xs);
1318
+ font-weight: var(--weight-semibold);
1319
+ letter-spacing: var(--tracking-caps);
1320
+ text-transform: uppercase;
1321
+ color: var(--success);
1322
+ }
1323
+ .sketch-inspector-meta {
1324
+ font-family: var(--font-numeric);
1325
+ font-size: var(--type-sm);
1326
+ line-height: var(--leading-xs);
1327
+ color: var(--ink-3);
1328
+ }
1329
+ /* The body is the Studio inspector's: its sections pad themselves and draw
1330
+ the hairline between them, so the scroller adds neither, and it holds its
1331
+ gutter so a body that grows past the fold does not narrow every row. */
1332
+ .sketch-inspector-body {
1333
+ flex: 1 1 0;
1334
+ display: flex;
1335
+ flex-direction: column;
1336
+ min-height: 0;
1337
+ overflow-y: auto;
1338
+ scrollbar-gutter: stable;
1339
+ }
1340
+ .sketch-preview {
1341
+ width: 100%;
1342
+ max-height: 200px;
1343
+ overflow: hidden;
1344
+ background: var(--sketch-paper);
1345
+ border: 1px solid var(--line);
1346
+ border-radius: var(--radius-sm);
1347
+ }
1348
+ .sketch-preview > img {
1349
+ display: block;
1350
+ width: 100%;
1351
+ height: 100%;
1352
+ }
1353
+ .sketch-door svg {
1354
+ width: 16px;
1355
+ height: 16px;
1356
+ color: var(--ink-2);
1357
+ }
1358
+ .sketch-align {
1359
+ display: grid;
1360
+ grid-template-columns: repeat(4, 1fr);
1361
+ gap: var(--space-3);
1362
+ }
1363
+ .sketch-stage-list {
1364
+ display: flex;
1365
+ flex-direction: column;
1366
+ margin: 0;
1367
+ padding: 0;
1368
+ list-style: none;
1369
+ }
1370
+ .sketch-stage-row {
1371
+ display: flex;
1372
+ align-items: center;
1373
+ gap: var(--space-4);
1374
+ height: var(--row-h);
1375
+ }
1376
+ .sketch-stage-row .sketch-stage-dot {
1377
+ background: var(--line-strong);
1378
+ }
1379
+ .sketch-stage-row.is-moving .sketch-stage-dot {
1380
+ background: var(--success);
1381
+ }
1382
+ .sketch-stage-name {
1383
+ flex: 1;
1384
+ min-width: 0;
1385
+ font-size: var(--type-md);
1386
+ line-height: var(--leading-xs);
1387
+ color: var(--ink-2);
1388
+ }
1389
+ .sketch-stage-row.is-moving .sketch-stage-name {
1390
+ color: var(--ink-1);
1391
+ }
1392
+ }