@1agh/maude 0.28.1 → 0.29.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 (339) hide show
  1. package/README.md +2 -2
  2. package/{plugins/design/dev-server → apps/studio}/ai-banner.tsx +1 -1
  3. package/{plugins/design/dev-server → apps/studio}/annotations-context-toolbar.tsx +285 -5
  4. package/{plugins/design/dev-server → apps/studio}/annotations-layer.tsx +1206 -119
  5. package/{plugins/design/dev-server → apps/studio}/api.ts +486 -32
  6. package/{plugins/design/dev-server → apps/studio}/artboard-activity-overlay.tsx +1 -1
  7. package/{plugins/design/dev-server → apps/studio}/artboard-marquee.tsx +1 -1
  8. package/apps/studio/bin/_motion-sample-playwright.mjs +129 -0
  9. package/{plugins/design/dev-server → apps/studio}/bin/canvas-edit.sh +1 -1
  10. package/{plugins/design/dev-server → apps/studio}/bin/draw-proof.sh +37 -2
  11. package/{plugins/design/dev-server → apps/studio}/bin/preflight.sh +1 -1
  12. package/apps/studio/bin/read-annotations.mjs +438 -0
  13. package/apps/studio/bin/read-annotations.sh +11 -0
  14. package/{plugins/design/dev-server → apps/studio}/bin/runtime-health.sh +1 -1
  15. package/{plugins/design/dev-server → apps/studio}/bin/screenshot.sh +62 -2
  16. package/{plugins/design/dev-server → apps/studio}/bin/server-up.sh +9 -3
  17. package/apps/studio/bin/to-lottie-verify.html +68 -0
  18. package/apps/studio/bin/to-lottie.sh +128 -0
  19. package/{plugins/design/dev-server → apps/studio}/build.ts +5 -3
  20. package/{plugins/design/dev-server → apps/studio}/canvas-arrowheads.ts +1 -1
  21. package/{plugins/design/dev-server → apps/studio}/canvas-comment-mount.tsx +1 -1
  22. package/apps/studio/canvas-create.ts +104 -0
  23. package/{plugins/design/dev-server → apps/studio}/canvas-cursors.ts +46 -12
  24. package/{plugins/design/dev-server → apps/studio}/canvas-icons.tsx +60 -1
  25. package/{plugins/design/dev-server → apps/studio}/canvas-lib-inline.ts +1 -1
  26. package/{plugins/design/dev-server → apps/studio}/canvas-lib-resolver.ts +1 -1
  27. package/{plugins/design/dev-server → apps/studio}/canvas-lib.tsx +31 -12
  28. package/{plugins/design/dev-server → apps/studio}/canvas-shell.tsx +56 -41
  29. package/{plugins/design/dev-server → apps/studio}/client/app.jsx +1713 -530
  30. package/apps/studio/client/canvas-url.js +81 -0
  31. package/{plugins/design/dev-server → apps/studio}/client/comments-overlay.css +41 -27
  32. package/{plugins/design/dev-server → apps/studio}/client/index.html +2 -1
  33. package/apps/studio/client/styles/1-tokens-maude.css +296 -0
  34. package/apps/studio/client/styles/3-shell-maude.css +459 -0
  35. package/{plugins/design/dev-server → apps/studio}/client/styles/3-shell.css +129 -0
  36. package/apps/studio/client/styles/4-components-maude.css +74 -0
  37. package/{plugins/design/dev-server → apps/studio}/client/styles/4-components.css +357 -34
  38. package/apps/studio/client/styles/5-maude-overrides.css +123 -0
  39. package/{plugins/design/dev-server → apps/studio}/client/styles/_index.css +9 -0
  40. package/{plugins/design/dev-server → apps/studio}/client/styles.css +1 -1
  41. package/apps/studio/client/tour/overlay.jsx +191 -0
  42. package/apps/studio/client/tour/usage-tour.js +35 -0
  43. package/apps/studio/client/whats-new-seen.js +52 -0
  44. package/apps/studio/client/whats-new.jsx +250 -0
  45. package/{plugins/design/dev-server → apps/studio}/commands/annotation-strokes-command.ts +1 -1
  46. package/{plugins/design/dev-server → apps/studio}/commands/equal-spacing-command.ts +1 -1
  47. package/{plugins/design/dev-server → apps/studio}/commands/move-artboards-command.ts +1 -1
  48. package/{plugins/design/dev-server → apps/studio}/comments-overlay.tsx +25 -6
  49. package/{plugins/design/dev-server → apps/studio}/context-menu.tsx +1 -1
  50. package/{plugins/design/dev-server → apps/studio}/contextual-toolbar.tsx +4 -7
  51. package/{plugins/design/dev-server → apps/studio}/cursors-overlay.tsx +1 -1
  52. package/apps/studio/dist/client.bundle.js +22825 -0
  53. package/apps/studio/dist/comment-mount.js +1960 -0
  54. package/apps/studio/dist/styles.css +5695 -0
  55. package/{plugins/design/dev-server → apps/studio}/dom-selection.ts +75 -4
  56. package/apps/studio/draw/animate.ts +333 -0
  57. package/{plugins/design/dev-server → apps/studio}/draw/brush.ts +1 -1
  58. package/{plugins/design/dev-server → apps/studio}/draw/composition.ts +1 -1
  59. package/{plugins/design/dev-server → apps/studio}/draw/geometry.ts +1 -1
  60. package/{plugins/design/dev-server → apps/studio}/draw/index.ts +4 -1
  61. package/{plugins/design/dev-server → apps/studio}/draw/layout.ts +1 -1
  62. package/apps/studio/draw/morph.ts +204 -0
  63. package/{plugins/design/dev-server → apps/studio}/draw/optimize.ts +1 -1
  64. package/{plugins/design/dev-server → apps/studio}/draw/palette.ts +1 -1
  65. package/{plugins/design/dev-server → apps/studio}/draw/primitives.ts +1 -1
  66. package/apps/studio/draw/serialize-animate.ts +324 -0
  67. package/{plugins/design/dev-server → apps/studio}/draw/serialize.ts +9 -3
  68. package/apps/studio/draw/test/animate.test.ts +172 -0
  69. package/apps/studio/draw/test/morph.test.ts +107 -0
  70. package/apps/studio/draw/test/serialize-animate.test.ts +142 -0
  71. package/{plugins/design/dev-server → apps/studio}/equal-spacing-detector.ts +1 -1
  72. package/{plugins/design/dev-server → apps/studio}/equal-spacing-handles.tsx +7 -29
  73. package/{plugins/design/dev-server → apps/studio}/export-dialog.tsx +13 -1
  74. package/{plugins/design/dev-server → apps/studio}/http.ts +102 -1
  75. package/{plugins/design/dev-server → apps/studio}/input-router.tsx +8 -1
  76. package/{plugins/design/dev-server → apps/studio}/inspect.ts +20 -3
  77. package/{plugins/design/dev-server → apps/studio}/marquee-overlay.tsx +5 -2
  78. package/{plugins/design/dev-server → apps/studio}/participants-chrome.tsx +1 -1
  79. package/{plugins/design/dev-server → apps/studio}/paths.ts +15 -11
  80. package/{plugins/design/dev-server → apps/studio}/server.ts +18 -0
  81. package/{plugins/design/dev-server → apps/studio}/sync/index.ts +1 -1
  82. package/{plugins/design/dev-server → apps/studio}/test/annotations-layer.test.ts +63 -0
  83. package/{plugins/design/dev-server → apps/studio}/test/annotations-roundtrip.test.ts +97 -0
  84. package/apps/studio/test/annotations-text-format.test.ts +396 -0
  85. package/apps/studio/test/asset-api.test.ts +149 -0
  86. package/apps/studio/test/canvas-create-api.test.ts +361 -0
  87. package/{plugins/design/dev-server → apps/studio}/test/canvas-cursors.test.ts +2 -0
  88. package/{plugins/design/dev-server → apps/studio}/test/canvas-lib-resolver.test.ts +1 -1
  89. package/apps/studio/test/canvas-media-drop.test.ts +158 -0
  90. package/{plugins/design/dev-server → apps/studio}/test/canvas-origin-gate.test.ts +17 -1
  91. package/apps/studio/test/canvas-url.test.ts +99 -0
  92. package/apps/studio/test/index-data-canvas-ds.test.ts +97 -0
  93. package/apps/studio/test/motion-sample.test.ts +35 -0
  94. package/{plugins/design/dev-server → apps/studio}/test/perf-harness.ts +1 -1
  95. package/{plugins/design/dev-server → apps/studio}/test/phase-3.6-smoke.test.ts +3 -1
  96. package/apps/studio/test/read-annotations.test.ts +409 -0
  97. package/{plugins/design/dev-server → apps/studio}/test/sanitize-annotation-svg.test.ts +108 -2
  98. package/{plugins/design/dev-server → apps/studio}/test/shared-doc-convergence.test.ts +1 -1
  99. package/apps/studio/test/tour-overlay.test.tsx +56 -0
  100. package/{plugins/design/dev-server → apps/studio}/test/use-annotation-resize.test.ts +43 -0
  101. package/{plugins/design/dev-server → apps/studio}/test/use-tool-mode.test.tsx +4 -1
  102. package/apps/studio/test/whats-new.test.ts +101 -0
  103. package/apps/studio/text-imports.d.ts +9 -0
  104. package/{plugins/design/dev-server → apps/studio}/tool-palette.tsx +4 -69
  105. package/{plugins/design/dev-server → apps/studio}/undo-hud.tsx +1 -1
  106. package/{plugins/design/dev-server → apps/studio}/undo-stack.ts +1 -1
  107. package/{plugins/design/dev-server → apps/studio}/use-agent-presence.tsx +1 -1
  108. package/{plugins/design/dev-server → apps/studio}/use-annotation-resize.tsx +40 -7
  109. package/{plugins/design/dev-server → apps/studio}/use-annotation-selection.tsx +1 -1
  110. package/{plugins/design/dev-server → apps/studio}/use-annotations-visibility.tsx +1 -1
  111. package/{plugins/design/dev-server → apps/studio}/use-artboard-drag.tsx +1 -1
  112. package/{plugins/design/dev-server → apps/studio}/use-canvas-activity.tsx +1 -1
  113. package/apps/studio/use-canvas-media-drop.tsx +343 -0
  114. package/{plugins/design/dev-server → apps/studio}/use-collab.tsx +1 -1
  115. package/{plugins/design/dev-server → apps/studio}/use-cursor-modifiers.tsx +1 -1
  116. package/{plugins/design/dev-server → apps/studio}/use-keyboard-discipline.tsx +5 -2
  117. package/{plugins/design/dev-server → apps/studio}/use-selection-set.tsx +9 -1
  118. package/{plugins/design/dev-server → apps/studio}/use-snap-guides.tsx +1 -1
  119. package/{plugins/design/dev-server → apps/studio}/use-tool-mode.tsx +3 -1
  120. package/{plugins/design/dev-server → apps/studio}/use-undo-stack.tsx +1 -1
  121. package/apps/studio/whats-new.json +139 -0
  122. package/apps/studio/whats-new.schema.json +70 -0
  123. package/apps/studio/whats-new.ts +87 -0
  124. package/cli/bin/maude.mjs +10 -0
  125. package/cli/commands/design.mjs +15 -7
  126. package/cli/commands/design.test.mjs +36 -0
  127. package/cli/commands/help.mjs +8 -2
  128. package/cli/commands/hub.mjs +3 -3
  129. package/cli/commands/hub.test.mjs +1 -1
  130. package/cli/commands/scenario-report.mjs +2 -9
  131. package/cli/lib/flow-design-integration.test.mjs +1 -1
  132. package/cli/lib/gitignore-block.mjs +1 -0
  133. package/cli/lib/plugin-cli-reachability.test.mjs +8 -7
  134. package/cli/lib/preflight.mjs +1 -1
  135. package/package.json +15 -15
  136. package/plugins/design/templates/brief-board.tsx.template +61 -0
  137. package/plugins/design/templates/canvas.tsx.template +1 -1
  138. package/plugins/design/templates/design-system-inspiration/core/config.json.tpl +1 -1
  139. package/plugins/design/templates/design-system-inspiration/core/preview/_motion-readme.md.tpl +1 -1
  140. package/plugins/flow/.claude-plugin/config.schema.json +16 -0
  141. package/plugins/design/dev-server/dist/client.bundle.js +0 -20692
  142. package/plugins/design/dev-server/dist/comment-mount.js +0 -1924
  143. package/plugins/design/dev-server/dist/styles.css +0 -2710
  144. /package/{plugins/design/dev-server → apps/studio}/activity.ts +0 -0
  145. /package/{plugins/design/dev-server → apps/studio}/bin/_enumerate-artboards-playwright.mjs +0 -0
  146. /package/{plugins/design/dev-server → apps/studio}/bin/_html-playwright.mjs +0 -0
  147. /package/{plugins/design/dev-server → apps/studio}/bin/_pdf-playwright.mjs +0 -0
  148. /package/{plugins/design/dev-server → apps/studio}/bin/_png-playwright.mjs +0 -0
  149. /package/{plugins/design/dev-server → apps/studio}/bin/_pptx-playwright.mjs +0 -0
  150. /package/{plugins/design/dev-server → apps/studio}/bin/_pw-launch.mjs +0 -0
  151. /package/{plugins/design/dev-server → apps/studio}/bin/_screenshot-playwright.mjs +0 -0
  152. /package/{plugins/design/dev-server → apps/studio}/bin/_svg-optimize.mjs +0 -0
  153. /package/{plugins/design/dev-server → apps/studio}/bin/_svg-playwright.mjs +0 -0
  154. /package/{plugins/design/dev-server → apps/studio}/bin/asset-sweep.sh +0 -0
  155. /package/{plugins/design/dev-server → apps/studio}/bin/bootstrap-check.sh +0 -0
  156. /package/{plugins/design/dev-server → apps/studio}/bin/check-runtime-bundles.sh +0 -0
  157. /package/{plugins/design/dev-server → apps/studio}/bin/draw-build.sh +0 -0
  158. /package/{plugins/design/dev-server → apps/studio}/bin/handoff.sh +0 -0
  159. /package/{plugins/design/dev-server → apps/studio}/bin/prep.sh +0 -0
  160. /package/{plugins/design/dev-server → apps/studio}/bin/scenario-report.mjs +0 -0
  161. /package/{plugins/design/dev-server → apps/studio}/bin/slug.sh +0 -0
  162. /package/{plugins/design/dev-server → apps/studio}/bin/smoke.sh +0 -0
  163. /package/{plugins/design/dev-server → apps/studio}/bin/svg-optimize.sh +0 -0
  164. /package/{plugins/design/dev-server → apps/studio}/bin/visual-sanity.sh +0 -0
  165. /package/{plugins/design/dev-server → apps/studio}/boot-self-heal.ts +0 -0
  166. /package/{plugins/design/dev-server → apps/studio}/canvas-build.ts +0 -0
  167. /package/{plugins/design/dev-server → apps/studio}/canvas-edit.ts +0 -0
  168. /package/{plugins/design/dev-server → apps/studio}/canvas-header.ts +0 -0
  169. /package/{plugins/design/dev-server → apps/studio}/canvas-meta.schema.json +0 -0
  170. /package/{plugins/design/dev-server → apps/studio}/canvas-pipeline.ts +0 -0
  171. /package/{plugins/design/dev-server → apps/studio}/client/hmr.mjs +0 -0
  172. /package/{plugins/design/dev-server → apps/studio}/client/iframe-lazy.mjs +0 -0
  173. /package/{plugins/design/dev-server → apps/studio}/client/styles/0-reset.css +0 -0
  174. /package/{plugins/design/dev-server → apps/studio}/client/styles/1-tokens.css +0 -0
  175. /package/{plugins/design/dev-server → apps/studio}/client/styles/2-layout.css +0 -0
  176. /package/{plugins/design/dev-server → apps/studio}/client/styles/5-utilities.css +0 -0
  177. /package/{plugins/design/dev-server → apps/studio}/collab/ai-activity.ts +0 -0
  178. /package/{plugins/design/dev-server → apps/studio}/collab/awareness-bridge.ts +0 -0
  179. /package/{plugins/design/dev-server → apps/studio}/collab/git-lifecycle.ts +0 -0
  180. /package/{plugins/design/dev-server → apps/studio}/collab/index.ts +0 -0
  181. /package/{plugins/design/dev-server → apps/studio}/collab/persistence.ts +0 -0
  182. /package/{plugins/design/dev-server → apps/studio}/collab/protocol.ts +0 -0
  183. /package/{plugins/design/dev-server → apps/studio}/collab/registry.ts +0 -0
  184. /package/{plugins/design/dev-server → apps/studio}/collab/room.ts +0 -0
  185. /package/{plugins/design/dev-server → apps/studio}/config.schema.json +0 -0
  186. /package/{plugins/design/dev-server → apps/studio}/context.ts +0 -0
  187. /package/{plugins/design/dev-server → apps/studio}/dist/runtime/.min-sizes.json +0 -0
  188. /package/{plugins/design/dev-server → apps/studio}/dist/runtime/lib0_decoding.js +0 -0
  189. /package/{plugins/design/dev-server → apps/studio}/dist/runtime/lib0_encoding.js +0 -0
  190. /package/{plugins/design/dev-server → apps/studio}/dist/runtime/motion.js +0 -0
  191. /package/{plugins/design/dev-server → apps/studio}/dist/runtime/motion_react.js +0 -0
  192. /package/{plugins/design/dev-server → apps/studio}/dist/runtime/pixi-js.js +0 -0
  193. /package/{plugins/design/dev-server → apps/studio}/dist/runtime/react-dom.js +0 -0
  194. /package/{plugins/design/dev-server → apps/studio}/dist/runtime/react-dom_client.js +0 -0
  195. /package/{plugins/design/dev-server → apps/studio}/dist/runtime/react.js +0 -0
  196. /package/{plugins/design/dev-server → apps/studio}/dist/runtime/react_jsx-dev-runtime.js +0 -0
  197. /package/{plugins/design/dev-server → apps/studio}/dist/runtime/react_jsx-runtime.js +0 -0
  198. /package/{plugins/design/dev-server → apps/studio}/dist/runtime/y-protocols_awareness.js +0 -0
  199. /package/{plugins/design/dev-server → apps/studio}/dist/runtime/y-protocols_sync.js +0 -0
  200. /package/{plugins/design/dev-server → apps/studio}/dist/runtime/yjs.js +0 -0
  201. /package/{plugins/design/dev-server → apps/studio}/draw/test/brush.test.ts +0 -0
  202. /package/{plugins/design/dev-server → apps/studio}/draw/test/composition.test.ts +0 -0
  203. /package/{plugins/design/dev-server → apps/studio}/draw/test/geometry.test.ts +0 -0
  204. /package/{plugins/design/dev-server → apps/studio}/draw/test/gradient.test.ts +0 -0
  205. /package/{plugins/design/dev-server → apps/studio}/draw/test/layout.test.ts +0 -0
  206. /package/{plugins/design/dev-server → apps/studio}/draw/test/optimize.test.ts +0 -0
  207. /package/{plugins/design/dev-server → apps/studio}/draw/test/palette.test.ts +0 -0
  208. /package/{plugins/design/dev-server → apps/studio}/draw/test/primitives.test.ts +0 -0
  209. /package/{plugins/design/dev-server → apps/studio}/draw/test/serialize.test.ts +0 -0
  210. /package/{plugins/design/dev-server → apps/studio}/examples/README.md +0 -0
  211. /package/{plugins/design/dev-server → apps/studio}/examples/perf-100-artboards.tsx +0 -0
  212. /package/{plugins/design/dev-server → apps/studio}/exporters/_browser-bundles.ts +0 -0
  213. /package/{plugins/design/dev-server → apps/studio}/exporters/canva-handoff-prompt.ts +0 -0
  214. /package/{plugins/design/dev-server → apps/studio}/exporters/canva.ts +0 -0
  215. /package/{plugins/design/dev-server → apps/studio}/exporters/html.ts +0 -0
  216. /package/{plugins/design/dev-server → apps/studio}/exporters/index.ts +0 -0
  217. /package/{plugins/design/dev-server → apps/studio}/exporters/pdf.ts +0 -0
  218. /package/{plugins/design/dev-server → apps/studio}/exporters/png.ts +0 -0
  219. /package/{plugins/design/dev-server → apps/studio}/exporters/pptx.ts +0 -0
  220. /package/{plugins/design/dev-server → apps/studio}/exporters/scope.ts +0 -0
  221. /package/{plugins/design/dev-server → apps/studio}/exporters/svg.ts +0 -0
  222. /package/{plugins/design/dev-server → apps/studio}/exporters/zip.ts +0 -0
  223. /package/{plugins/design/dev-server → apps/studio}/fs-watch.ts +0 -0
  224. /package/{plugins/design/dev-server → apps/studio}/handoff.ts +0 -0
  225. /package/{plugins/design/dev-server → apps/studio}/history.ts +0 -0
  226. /package/{plugins/design/dev-server → apps/studio}/hmr-broadcast.ts +0 -0
  227. /package/{plugins/design/dev-server → apps/studio}/locator.ts +0 -0
  228. /package/{plugins/design/dev-server → apps/studio}/mem.ts +0 -0
  229. /package/{plugins/design/dev-server → apps/studio}/runtime-bundle.ts +0 -0
  230. /package/{plugins/design/dev-server → apps/studio}/server.mjs +0 -0
  231. /package/{plugins/design/dev-server → apps/studio}/sync/agent.ts +0 -0
  232. /package/{plugins/design/dev-server → apps/studio}/sync/atomic-write.ts +0 -0
  233. /package/{plugins/design/dev-server → apps/studio}/sync/codec.ts +0 -0
  234. /package/{plugins/design/dev-server → apps/studio}/sync/connection-state.ts +0 -0
  235. /package/{plugins/design/dev-server → apps/studio}/sync/echo-guard.ts +0 -0
  236. /package/{plugins/design/dev-server → apps/studio}/sync/fs-mirror.ts +0 -0
  237. /package/{plugins/design/dev-server → apps/studio}/sync/hubs-config.ts +0 -0
  238. /package/{plugins/design/dev-server → apps/studio}/sync/materialize.ts +0 -0
  239. /package/{plugins/design/dev-server → apps/studio}/sync/migrate-seed.ts +0 -0
  240. /package/{plugins/design/dev-server → apps/studio}/sync/origins.ts +0 -0
  241. /package/{plugins/design/dev-server → apps/studio}/sync/projection.ts +0 -0
  242. /package/{plugins/design/dev-server → apps/studio}/sync/status.ts +0 -0
  243. /package/{plugins/design/dev-server → apps/studio}/sync/untrusted.ts +0 -0
  244. /package/{plugins/design/dev-server → apps/studio}/test/_helpers.ts +0 -0
  245. /package/{plugins/design/dev-server → apps/studio}/test/active-state.test.ts +0 -0
  246. /package/{plugins/design/dev-server → apps/studio}/test/activity.test.ts +0 -0
  247. /package/{plugins/design/dev-server → apps/studio}/test/ai-activity.test.ts +0 -0
  248. /package/{plugins/design/dev-server → apps/studio}/test/annotation-strokes-command.test.ts +0 -0
  249. /package/{plugins/design/dev-server → apps/studio}/test/annotations-api.test.ts +0 -0
  250. /package/{plugins/design/dev-server → apps/studio}/test/annotations-draw-modifiers.test.ts +0 -0
  251. /package/{plugins/design/dev-server → apps/studio}/test/artboard-activity-overlay.test.tsx +0 -0
  252. /package/{plugins/design/dev-server → apps/studio}/test/binary-smoke.test.ts +0 -0
  253. /package/{plugins/design/dev-server → apps/studio}/test/boot-self-heal.test.ts +0 -0
  254. /package/{plugins/design/dev-server → apps/studio}/test/bundle-smoke.test.ts +0 -0
  255. /package/{plugins/design/dev-server → apps/studio}/test/canvas-build.test.ts +0 -0
  256. /package/{plugins/design/dev-server → apps/studio}/test/canvas-edit.test.ts +0 -0
  257. /package/{plugins/design/dev-server → apps/studio}/test/canvas-header.test.ts +0 -0
  258. /package/{plugins/design/dev-server → apps/studio}/test/canvas-hmr-runtime.test.tsx +0 -0
  259. /package/{plugins/design/dev-server → apps/studio}/test/canvas-lib-inline.test.ts +0 -0
  260. /package/{plugins/design/dev-server → apps/studio}/test/canvas-lib-motion.test.ts +0 -0
  261. /package/{plugins/design/dev-server → apps/studio}/test/canvas-meta-api.test.ts +0 -0
  262. /package/{plugins/design/dev-server → apps/studio}/test/canvas-pipeline.test.ts +0 -0
  263. /package/{plugins/design/dev-server → apps/studio}/test/canvas-route.test.ts +0 -0
  264. /package/{plugins/design/dev-server → apps/studio}/test/collab-annotations-bridge.test.ts +0 -0
  265. /package/{plugins/design/dev-server → apps/studio}/test/collab-awareness-bridge.test.ts +0 -0
  266. /package/{plugins/design/dev-server → apps/studio}/test/collab-bridge.test.ts +0 -0
  267. /package/{plugins/design/dev-server → apps/studio}/test/collab-loopback.test.ts +0 -0
  268. /package/{plugins/design/dev-server → apps/studio}/test/collab-protocol.test.ts +0 -0
  269. /package/{plugins/design/dev-server → apps/studio}/test/collab-reseed-guard.test.ts +0 -0
  270. /package/{plugins/design/dev-server → apps/studio}/test/collab-room.test.ts +0 -0
  271. /package/{plugins/design/dev-server → apps/studio}/test/collab-stress.test.ts +0 -0
  272. /package/{plugins/design/dev-server → apps/studio}/test/comment-mount.test.ts +0 -0
  273. /package/{plugins/design/dev-server → apps/studio}/test/comments-api.test.ts +0 -0
  274. /package/{plugins/design/dev-server → apps/studio}/test/compile-entry.test.ts +0 -0
  275. /package/{plugins/design/dev-server → apps/studio}/test/context-resolve-tokens.test.ts +0 -0
  276. /package/{plugins/design/dev-server → apps/studio}/test/csp-canvas-shell.test.ts +0 -0
  277. /package/{plugins/design/dev-server → apps/studio}/test/equal-spacing-detector.test.ts +0 -0
  278. /package/{plugins/design/dev-server → apps/studio}/test/exporters/canva.test.ts +0 -0
  279. /package/{plugins/design/dev-server → apps/studio}/test/exporters/endpoint.test.ts +0 -0
  280. /package/{plugins/design/dev-server → apps/studio}/test/exporters/history.test.ts +0 -0
  281. /package/{plugins/design/dev-server → apps/studio}/test/exporters/html.test.ts +0 -0
  282. /package/{plugins/design/dev-server → apps/studio}/test/exporters/pdf.test.ts +0 -0
  283. /package/{plugins/design/dev-server → apps/studio}/test/exporters/png.test.ts +0 -0
  284. /package/{plugins/design/dev-server → apps/studio}/test/exporters/pptx-deck.test.ts +0 -0
  285. /package/{plugins/design/dev-server → apps/studio}/test/exporters/pptx.test.ts +0 -0
  286. /package/{plugins/design/dev-server → apps/studio}/test/exporters/pw-launch.test.ts +0 -0
  287. /package/{plugins/design/dev-server → apps/studio}/test/exporters/scope.test.ts +0 -0
  288. /package/{plugins/design/dev-server → apps/studio}/test/exporters/svg.test.ts +0 -0
  289. /package/{plugins/design/dev-server → apps/studio}/test/exporters/zip.test.ts +0 -0
  290. /package/{plugins/design/dev-server → apps/studio}/test/fixtures/phase-20-annotations.svg +0 -0
  291. /package/{plugins/design/dev-server → apps/studio}/test/fixtures/phase-21-annotations.svg +0 -0
  292. /package/{plugins/design/dev-server → apps/studio}/test/fs-watch.test.ts +0 -0
  293. /package/{plugins/design/dev-server → apps/studio}/test/git-lifecycle.test.ts +0 -0
  294. /package/{plugins/design/dev-server → apps/studio}/test/handoff-static-frames.test.ts +0 -0
  295. /package/{plugins/design/dev-server → apps/studio}/test/handoff.test.ts +0 -0
  296. /package/{plugins/design/dev-server → apps/studio}/test/history-rollback.test.ts +0 -0
  297. /package/{plugins/design/dev-server → apps/studio}/test/hmr-broadcast.test.ts +0 -0
  298. /package/{plugins/design/dev-server → apps/studio}/test/hmr-classify.test.ts +0 -0
  299. /package/{plugins/design/dev-server → apps/studio}/test/input-router.test.ts +0 -0
  300. /package/{plugins/design/dev-server → apps/studio}/test/locator.test.ts +0 -0
  301. /package/{plugins/design/dev-server → apps/studio}/test/marquee-overlay.test.ts +0 -0
  302. /package/{plugins/design/dev-server → apps/studio}/test/move-artboards-command.test.ts +0 -0
  303. /package/{plugins/design/dev-server → apps/studio}/test/participants-chrome.test.ts +0 -0
  304. /package/{plugins/design/dev-server → apps/studio}/test/paths.test.ts +0 -0
  305. /package/{plugins/design/dev-server → apps/studio}/test/runtime-bundle-error-mapping.test.ts +0 -0
  306. /package/{plugins/design/dev-server → apps/studio}/test/runtime-bundle.test.ts +0 -0
  307. /package/{plugins/design/dev-server → apps/studio}/test/server-lifecycle.test.ts +0 -0
  308. /package/{plugins/design/dev-server → apps/studio}/test/shared-doc-foundation.test.ts +0 -0
  309. /package/{plugins/design/dev-server → apps/studio}/test/shared-doc-migrate.test.ts +0 -0
  310. /package/{plugins/design/dev-server → apps/studio}/test/shared-doc-projection.test.ts +0 -0
  311. /package/{plugins/design/dev-server → apps/studio}/test/snap-distance-pill.test.ts +0 -0
  312. /package/{plugins/design/dev-server → apps/studio}/test/sync-agent.test.ts +0 -0
  313. /package/{plugins/design/dev-server → apps/studio}/test/sync-atomic-write.test.ts +0 -0
  314. /package/{plugins/design/dev-server → apps/studio}/test/sync-codec.test.ts +0 -0
  315. /package/{plugins/design/dev-server → apps/studio}/test/sync-connection-state.test.ts +0 -0
  316. /package/{plugins/design/dev-server → apps/studio}/test/sync-echo-guard.test.ts +0 -0
  317. /package/{plugins/design/dev-server → apps/studio}/test/sync-fs-mirror.test.ts +0 -0
  318. /package/{plugins/design/dev-server → apps/studio}/test/sync-hardening.test.ts +0 -0
  319. /package/{plugins/design/dev-server → apps/studio}/test/sync-hubs-config.test.ts +0 -0
  320. /package/{plugins/design/dev-server → apps/studio}/test/sync-meta-codec.test.ts +0 -0
  321. /package/{plugins/design/dev-server → apps/studio}/test/sync-runtime.test.ts +0 -0
  322. /package/{plugins/design/dev-server → apps/studio}/test/sync-status.test.ts +0 -0
  323. /package/{plugins/design/dev-server → apps/studio}/test/sync-untrusted.test.ts +0 -0
  324. /package/{plugins/design/dev-server → apps/studio}/test/system-endpoint.test.ts +0 -0
  325. /package/{plugins/design/dev-server → apps/studio}/test/tool-palette.test.tsx +0 -0
  326. /package/{plugins/design/dev-server → apps/studio}/test/undo-stack.test.ts +0 -0
  327. /package/{plugins/design/dev-server → apps/studio}/test/use-agent-presence.test.tsx +0 -0
  328. /package/{plugins/design/dev-server → apps/studio}/test/use-annotation-selection.test.tsx +0 -0
  329. /package/{plugins/design/dev-server → apps/studio}/test/use-artboard-drag.test.ts +0 -0
  330. /package/{plugins/design/dev-server → apps/studio}/test/use-canvas-activity.test.tsx +0 -0
  331. /package/{plugins/design/dev-server → apps/studio}/test/use-collab.test.ts +0 -0
  332. /package/{plugins/design/dev-server → apps/studio}/test/use-cursor-modifiers.test.ts +0 -0
  333. /package/{plugins/design/dev-server → apps/studio}/test/use-keyboard-discipline.test.ts +0 -0
  334. /package/{plugins/design/dev-server → apps/studio}/test/use-selection-set.test.tsx +0 -0
  335. /package/{plugins/design/dev-server → apps/studio}/test/use-snap-guides.test.ts +0 -0
  336. /package/{plugins/design/dev-server → apps/studio}/test/use-undo-stack.test.tsx +0 -0
  337. /package/{plugins/design/dev-server → apps/studio}/test/ws-handshake.test.ts +0 -0
  338. /package/{plugins/design/dev-server → apps/studio}/tsconfig.json +0 -0
  339. /package/{plugins/design/dev-server → apps/studio}/ws.ts +0 -0
@@ -1,2710 +0,0 @@
1
- @layer reset {
2
- * {
3
- box-sizing: border-box;
4
- }
5
-
6
- html, body {
7
- background: var(--u-bg-0);
8
- height: 100%;
9
- color: var(--u-fg-0);
10
- font-family: var(--u-font-sans);
11
- -webkit-font-smoothing: antialiased;
12
- -moz-osx-font-smoothing: grayscale;
13
- margin: 0;
14
- padding: 0;
15
- font-size: 13px;
16
- line-height: 1.45;
17
- }
18
-
19
- button {
20
- font: inherit;
21
- }
22
-
23
- ::selection {
24
- background: var(--u-accent-bg);
25
- color: var(--u-fg-0);
26
- }
27
- }
28
-
29
- @layer tokens {
30
- :root, :root[data-theme="light"] {
31
- --bg-0: oklch(97.5% .008 78);
32
- --bg-1: oklch(95.5% .01 78);
33
- --bg-2: oklch(93% .012 78);
34
- --bg-3: oklch(89.5% .014 78);
35
- --bg-4: oklch(85% .016 78);
36
- --border-subtle: oklch(86% .014 70);
37
- --border-default: oklch(74% .016 65);
38
- --border-strong: oklch(48% .022 60);
39
- --fg-0: oklch(20% .02 50);
40
- --fg-1: oklch(38% .018 50);
41
- --fg-2: oklch(52% .015 50);
42
- --fg-3: oklch(68% .012 50);
43
- --accent: oklch(56% .17 50);
44
- --accent-hover: oklch(50% .17 50);
45
- --accent-active: oklch(44% .17 50);
46
- --accent-fg: oklch(98% .008 78);
47
- --accent-tint: oklch(92% .04 55);
48
- --status-success: oklch(48% .14 145);
49
- --status-warn: oklch(64% .16 88);
50
- --status-error: oklch(50% .2 25);
51
- --status-info: oklch(50% .13 230);
52
- --mono-cell-bg: oklch(95% .01 78);
53
- --mono-cell-fg: oklch(28% .02 30);
54
- --mono-rule: oklch(82% .014 65);
55
- color-scheme: light;
56
- }
57
-
58
- [data-theme="dark"] {
59
- --bg-0: oklch(13% .012 60);
60
- --bg-1: oklch(17% .014 60);
61
- --bg-2: oklch(20% .016 60);
62
- --bg-3: oklch(24% .018 60);
63
- --bg-4: oklch(28% .02 60);
64
- --border-subtle: oklch(28% .018 60);
65
- --border-default: oklch(40% .022 60);
66
- --border-strong: oklch(58% .026 60);
67
- --fg-0: oklch(94% .014 80);
68
- --fg-1: oklch(78% .014 80);
69
- --fg-2: oklch(60% .012 80);
70
- --fg-3: oklch(44% .01 80);
71
- --accent: oklch(72% .16 55);
72
- --accent-hover: oklch(78% .16 55);
73
- --accent-active: oklch(84% .16 55);
74
- --accent-fg: oklch(14% .02 50);
75
- --accent-tint: oklch(28% .06 55);
76
- --status-success: oklch(72% .16 145);
77
- --status-warn: oklch(80% .16 88);
78
- --status-error: oklch(68% .2 25);
79
- --status-info: oklch(72% .13 230);
80
- --mono-cell-bg: oklch(20% .016 60);
81
- --mono-cell-fg: oklch(88% .014 60);
82
- --mono-rule: oklch(32% .02 60);
83
- color-scheme: dark;
84
- }
85
-
86
- :root {
87
- --radius-xs: 0;
88
- --radius-sm: 2px;
89
- --radius-md: 4px;
90
- --radius-lg: 4px;
91
- --radius-xl: 4px;
92
- --radius-pill: 0;
93
- --space-0: 0;
94
- --space-1: 2px;
95
- --space-2: 4px;
96
- --space-3: 8px;
97
- --space-4: 12px;
98
- --space-5: 16px;
99
- --space-6: 24px;
100
- --space-7: 32px;
101
- --space-8: 48px;
102
- --space-9: 64px;
103
- --font-display: "Berkeley Mono", "TX-02", "JetBrains Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
104
- --font-body: "Berkeley Mono", "TX-02", "JetBrains Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
105
- --font-mono: "Berkeley Mono", "TX-02", "JetBrains Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
106
- --type-xs: 11px;
107
- --lh-xs: 16px;
108
- --type-sm: 12px;
109
- --lh-sm: 18px;
110
- --type-base: 13px;
111
- --lh-base: 20px;
112
- --type-md: 15px;
113
- --lh-md: 24px;
114
- --type-lg: 18px;
115
- --lh-lg: 28px;
116
- --type-xl: 22px;
117
- --lh-xl: 30px;
118
- --type-2xl: 28px;
119
- --lh-2xl: 36px;
120
- --type-3xl: 40px;
121
- --lh-3xl: 48px;
122
- --tracking-tight: -.01em;
123
- --tracking-normal: 0;
124
- --tracking-wide: .04em;
125
- --tracking-sku: .12em;
126
- --tracking-eyebrow: .18em;
127
- --dur-flip: 90ms;
128
- --dur-panel: .14s;
129
- --dur-route: 1ms;
130
- --dur-soft: .18s;
131
- --ease-out: cubic-bezier(.22, 1, .36, 1);
132
- --ease-in-out: cubic-bezier(.65, 0, .35, 1);
133
- --rule-thin: 1px solid var(--border-default);
134
- --rule-strong: 1px solid var(--border-strong);
135
- --rule-accent: 1px solid var(--accent);
136
- --shadow-sm: none;
137
- --shadow-md: none;
138
- --shadow-lg: none;
139
- --shadow-focus: 0 0 0 2px var(--accent);
140
- --u-bg-0: var(--bg-0);
141
- --u-bg-1: var(--bg-1);
142
- --u-bg-2: var(--bg-2);
143
- --u-bg-3: var(--bg-3);
144
- --u-bg-4: var(--bg-4);
145
- --u-bg-hover: var(--bg-2);
146
- --u-bg-active: var(--bg-3);
147
- --u-bg-selected: var(--accent-tint);
148
- --u-fg-0: var(--fg-0);
149
- --u-fg-1: var(--fg-1);
150
- --u-fg-2: var(--fg-2);
151
- --u-fg-3: var(--fg-3);
152
- --u-border: var(--border-default);
153
- --u-border-subtle: var(--border-subtle);
154
- --u-border-strong: var(--border-strong);
155
- --u-accent: var(--accent);
156
- --u-accent-bg: var(--accent-tint);
157
- --u-accent-line: var(--accent-hover);
158
- --u-accent-strong: var(--accent-active);
159
- --u-accent-fg: var(--accent-fg);
160
- --u-status-success: var(--status-success);
161
- --u-status-warn: var(--status-warn);
162
- --u-status-error: var(--status-error);
163
- --u-status-info: var(--status-info);
164
- --u-status-live: var(--status-error);
165
- --u-r-xs: var(--radius-xs);
166
- --u-r-sm: var(--radius-sm);
167
- --u-r-md: var(--radius-md);
168
- --u-r-lg: var(--radius-md);
169
- --u-r-pill: var(--radius-md);
170
- --u-s-1: var(--space-2);
171
- --u-s-2: var(--space-3);
172
- --u-s-3: var(--space-4);
173
- --u-s-4: var(--space-5);
174
- --u-s-5: var(--space-6);
175
- --u-font-display: var(--font-display);
176
- --u-font-body: var(--font-body);
177
- --u-font-sans: var(--font-body);
178
- --u-font-mono: var(--font-mono);
179
- --u-mono-cell-bg: var(--mono-cell-bg);
180
- --u-mono-cell-fg: var(--mono-cell-fg);
181
- --u-mono-rule: var(--mono-rule);
182
- --u-sidebar-w: 320px;
183
- --u-rsidebar-w: 360px;
184
- --u-header-h: 44px;
185
- --u-status-h: 28px;
186
- }
187
-
188
- @media (prefers-color-scheme: dark) {
189
- :root:not([data-theme]) {
190
- --bg-0: oklch(13% .012 60);
191
- --bg-1: oklch(17% .014 60);
192
- --bg-2: oklch(20% .016 60);
193
- --bg-3: oklch(24% .018 60);
194
- --bg-4: oklch(28% .02 60);
195
- --border-subtle: oklch(28% .018 60);
196
- --border-default: oklch(40% .022 60);
197
- --border-strong: oklch(58% .026 60);
198
- --fg-0: oklch(94% .014 80);
199
- --fg-1: oklch(78% .014 80);
200
- --fg-2: oklch(60% .012 80);
201
- --fg-3: oklch(44% .01 80);
202
- --accent: oklch(72% .16 55);
203
- --accent-hover: oklch(78% .16 55);
204
- --accent-active: oklch(84% .16 55);
205
- --accent-fg: oklch(14% .02 50);
206
- --accent-tint: oklch(28% .06 55);
207
- --status-success: oklch(72% .16 145);
208
- --status-warn: oklch(80% .16 88);
209
- --status-error: oklch(68% .2 25);
210
- --status-info: oklch(72% .13 230);
211
- --mono-cell-bg: oklch(20% .016 60);
212
- --mono-cell-fg: oklch(88% .014 60);
213
- --mono-rule: oklch(32% .02 60);
214
- color-scheme: dark;
215
- }
216
- }
217
-
218
- @media (prefers-reduced-motion: reduce) {
219
- :root {
220
- --dur-flip: 1ms;
221
- --dur-panel: 1ms;
222
- --dur-route: 1ms;
223
- --dur-soft: 1ms;
224
- }
225
- }
226
- }
227
-
228
- @layer layout {
229
- .app {
230
- grid-template-columns: var(--u-sidebar-w) minmax(0, 1fr);
231
- width: 100vw;
232
- height: 100vh;
233
- display: grid;
234
- overflow: hidden;
235
- }
236
-
237
- .app.with-rsidebar {
238
- grid-template-columns: var(--u-sidebar-w) minmax(0, 1fr) var(--u-rsidebar-w);
239
- }
240
-
241
- .app.no-sidebar {
242
- grid-template-columns: 0 minmax(0, 1fr);
243
- }
244
-
245
- .app.no-sidebar.with-rsidebar {
246
- grid-template-columns: 0 minmax(0, 1fr) var(--u-rsidebar-w);
247
- }
248
-
249
- .app.no-sidebar > .sidebar {
250
- visibility: hidden;
251
- pointer-events: none;
252
- }
253
- }
254
-
255
- @layer shell {
256
- .sidebar {
257
- background: var(--u-bg-1);
258
- border-right: 1px solid var(--u-border);
259
- min-height: 0;
260
- font-family: var(--u-font-mono);
261
- font-size: var(--type-xs);
262
- flex-direction: column;
263
- display: flex;
264
- }
265
-
266
- .tree-panel-hd {
267
- padding: 8px var(--u-s-3) 6px;
268
- letter-spacing: var(--tracking-sku);
269
- text-transform: uppercase;
270
- color: var(--u-fg-0);
271
- font-size: 10px;
272
- font-weight: 700;
273
- font-family: var(--u-font-mono);
274
- border-bottom: 1px solid var(--u-border);
275
- background: var(--u-bg-2);
276
- flex: none;
277
- justify-content: space-between;
278
- align-items: baseline;
279
- display: flex;
280
- }
281
-
282
- .tree-panel-hd .ct {
283
- color: var(--u-fg-2);
284
- align-items: center;
285
- gap: 6px;
286
- font-weight: 500;
287
- display: inline-flex;
288
- }
289
-
290
- .tree-panel-hd .live-dot {
291
- background: var(--u-fg-3);
292
- width: 6px;
293
- height: 6px;
294
- transition: background var(--dur-panel) var(--ease-out);
295
- flex: none;
296
- }
297
-
298
- .tree-panel-hd .live-dot.connected {
299
- background: var(--u-status-success);
300
- }
301
-
302
- .tree-panel-search {
303
- padding: 5px var(--u-s-3);
304
- background: var(--u-bg-1);
305
- border-bottom: 1px solid var(--u-border-subtle);
306
- flex: none;
307
- align-items: center;
308
- gap: 6px;
309
- display: flex;
310
- }
311
-
312
- .tree-panel-search svg {
313
- color: var(--u-fg-2);
314
- flex: none;
315
- }
316
-
317
- .tree-panel-search input {
318
- background: var(--u-bg-0);
319
- border: 1px solid var(--u-border);
320
- color: var(--u-fg-0);
321
- font-size: 11px;
322
- font-family: var(--u-font-mono);
323
- min-width: 0;
324
- transition: border-color var(--dur-flip) var(--ease-out);
325
- border-radius: 0;
326
- outline: none;
327
- flex: 1;
328
- padding: 3px 8px;
329
- }
330
-
331
- .tree-panel-search input::placeholder {
332
- color: var(--u-fg-3);
333
- }
334
-
335
- .tree-panel-search input:focus-visible {
336
- border-color: var(--u-border-strong);
337
- box-shadow: var(--shadow-focus);
338
- }
339
-
340
- .search-clear {
341
- color: var(--u-fg-3);
342
- cursor: pointer;
343
- background: none;
344
- border: 0;
345
- padding: 0 4px;
346
- font-size: 14px;
347
- line-height: 1;
348
- }
349
-
350
- .search-clear:hover {
351
- color: var(--u-fg-0);
352
- }
353
-
354
- .search-kbd {
355
- font-family: var(--u-font-mono);
356
- color: var(--u-fg-3);
357
- border: 1px solid var(--u-border);
358
- background: var(--u-bg-2);
359
- flex: none;
360
- padding: 1px 5px;
361
- font-size: 10px;
362
- }
363
-
364
- .tree-panel-body {
365
- min-height: 0;
366
- padding: 4px 0 var(--u-s-3);
367
- flex: 1;
368
- overflow-y: auto;
369
- }
370
-
371
- .tree-panel-body::-webkit-scrollbar {
372
- width: 6px;
373
- }
374
-
375
- .tree-panel-body::-webkit-scrollbar-thumb {
376
- background: var(--u-border);
377
- }
378
-
379
- .tp-section-hd {
380
- padding: 6px var(--u-s-3) 2px;
381
- letter-spacing: var(--tracking-sku);
382
- text-transform: uppercase;
383
- color: var(--u-fg-1);
384
- font-size: 9px;
385
- font-weight: 700;
386
- font-family: var(--u-font-mono);
387
- justify-content: space-between;
388
- align-items: baseline;
389
- gap: 8px;
390
- display: flex;
391
- }
392
-
393
- .tp-section-hd:not(:first-child) {
394
- margin-top: 6px;
395
- }
396
-
397
- .tp-section-hd > span:first-child {
398
- text-overflow: ellipsis;
399
- white-space: nowrap;
400
- overflow: hidden;
401
- }
402
-
403
- .tp-section-hd .pill {
404
- background: var(--u-bg-2);
405
- border: 1px solid var(--u-border);
406
- letter-spacing: var(--tracking-sku);
407
- color: var(--u-fg-2);
408
- font-size: 9px;
409
- font-family: var(--u-font-mono);
410
- flex: none;
411
- padding: 0 5px;
412
- font-weight: 600;
413
- }
414
-
415
- .tp-row {
416
- padding: 2px var(--u-s-3);
417
- color: var(--u-fg-1);
418
- font-family: var(--u-font-mono);
419
- cursor: pointer;
420
- text-align: left;
421
- background: none;
422
- border: 0;
423
- border-left: 2px solid #0000;
424
- align-items: center;
425
- gap: 4px;
426
- width: 100%;
427
- font-size: 11px;
428
- line-height: 1.55;
429
- display: flex;
430
- }
431
-
432
- .tp-row:hover {
433
- background: var(--u-bg-2);
434
- color: var(--u-fg-0);
435
- }
436
-
437
- .tp-row:focus-visible {
438
- box-shadow: var(--shadow-focus);
439
- z-index: 1;
440
- outline: none;
441
- position: relative;
442
- }
443
-
444
- .tp-row .glyph {
445
- text-align: center;
446
- width: 12px;
447
- color: var(--u-fg-2);
448
- flex: none;
449
- font-size: 10px;
450
- display: inline-block;
451
- }
452
-
453
- .tp-row .name {
454
- text-overflow: ellipsis;
455
- white-space: nowrap;
456
- flex: 1;
457
- min-width: 0;
458
- overflow: hidden;
459
- }
460
-
461
- .tp-row.dir {
462
- color: var(--u-fg-0);
463
- font-weight: 600;
464
- }
465
-
466
- .tp-row.dir .glyph {
467
- color: var(--u-fg-1);
468
- }
469
-
470
- .tp-row.sel {
471
- background: var(--u-accent-bg);
472
- color: var(--u-fg-0);
473
- border-left-color: var(--u-border-strong);
474
- font-weight: 600;
475
- }
476
-
477
- .tp-row.sel .glyph {
478
- color: var(--u-accent);
479
- }
480
-
481
- .tp-row.modified .name:after {
482
- content: "●";
483
- color: var(--u-status-warn);
484
- vertical-align: middle;
485
- margin-left: 6px;
486
- font-size: 8px;
487
- }
488
-
489
- .tp-row.star:before {
490
- content: "★";
491
- color: var(--u-accent);
492
- flex: none;
493
- margin-right: 4px;
494
- font-size: 9px;
495
- }
496
-
497
- .tp-row .badge {
498
- background: var(--u-accent);
499
- color: var(--u-accent-fg);
500
- letter-spacing: var(--tracking-sku);
501
- font-size: 9px;
502
- font-weight: 700;
503
- font-family: var(--u-font-mono);
504
- flex: none;
505
- padding: 0 5px;
506
- }
507
-
508
- .tp-row.muted, .tp-row.muted .name, .tp-row.muted .glyph {
509
- color: var(--u-fg-3);
510
- }
511
-
512
- .tp-row.muted[aria-disabled="true"] {
513
- cursor: default;
514
- }
515
-
516
- .tp-row.muted[aria-disabled="true"]:hover {
517
- color: var(--u-fg-3);
518
- background: none;
519
- }
520
-
521
- .tp-row[aria-disabled="true"] {
522
- cursor: default;
523
- }
524
-
525
- .tp-empty {
526
- padding: 4px var(--u-s-3);
527
- color: var(--u-fg-3);
528
- font-size: 11px;
529
- font-style: italic;
530
- }
531
-
532
- .cheatsheet {
533
- padding: var(--u-s-3) var(--u-s-2) var(--u-s-3);
534
- border-top: 1px solid var(--u-border);
535
- background: var(--u-bg-1);
536
- margin-top: auto;
537
- }
538
-
539
- .cheatsheet > details {
540
- margin-bottom: 4px;
541
- }
542
-
543
- .cheatsheet > details > summary {
544
- padding: 4px var(--u-s-2);
545
- color: var(--u-fg-1);
546
- border-radius: var(--u-r-sm);
547
- cursor: pointer;
548
- align-items: center;
549
- gap: var(--u-s-1);
550
- font-size: 11px;
551
- font-weight: 500;
552
- list-style: none;
553
- display: flex;
554
- }
555
-
556
- .cheatsheet > details > summary::-webkit-details-marker {
557
- display: none;
558
- }
559
-
560
- .cheatsheet > details > summary:before {
561
- content: "▸";
562
- color: var(--u-fg-3);
563
- width: 12px;
564
- font-size: 10px;
565
- transition: transform .1s;
566
- display: inline-block;
567
- }
568
-
569
- .cheatsheet > details[open] > summary:before {
570
- transform: rotate(90deg);
571
- }
572
-
573
- .cheatsheet > details > summary:hover {
574
- background: var(--u-bg-hover);
575
- }
576
-
577
- .cheatsheet ul, .cheatsheet ol {
578
- padding: 4px var(--u-s-2) var(--u-s-2) var(--u-s-4);
579
- margin: 0;
580
- font-size: 11px;
581
- line-height: 1.6;
582
- }
583
-
584
- .cheatsheet li {
585
- align-items: baseline;
586
- gap: var(--u-s-2);
587
- padding: 2px 0;
588
- display: flex;
589
- }
590
-
591
- .cheatsheet li > span {
592
- color: var(--u-fg-3);
593
- text-align: right;
594
- margin-left: auto;
595
- font-size: 10px;
596
- }
597
-
598
- .cheatsheet kbd {
599
- font-family: var(--u-font-mono);
600
- background: var(--u-bg-2);
601
- border: 1px solid var(--u-border);
602
- border-radius: var(--u-r-xs);
603
- color: var(--u-fg-0);
604
- padding: 1px 5px;
605
- font-size: 10px;
606
- }
607
-
608
- .cheatsheet code {
609
- font-family: var(--u-font-mono);
610
- color: var(--u-accent);
611
- background: var(--u-accent-bg);
612
- border-radius: var(--u-r-xs);
613
- padding: 1px 4px;
614
- font-size: 10px;
615
- }
616
-
617
- .cheatsheet code i {
618
- color: var(--u-fg-2);
619
- font-style: normal;
620
- }
621
-
622
- .cheatsheet ul.cmds li, .cheatsheet ul.files li {
623
- flex-direction: column;
624
- align-items: flex-start;
625
- gap: 2px;
626
- }
627
-
628
- .cheatsheet ul.cmds li > span, .cheatsheet ul.files li > span {
629
- text-align: left;
630
- margin-left: 0;
631
- }
632
-
633
- .main {
634
- flex-direction: column;
635
- min-width: 0;
636
- display: flex;
637
- }
638
-
639
- .mb {
640
- background: var(--u-bg-2);
641
- border-bottom: 1px solid var(--u-fg-0);
642
- height: 30px;
643
- font-family: var(--u-font-mono);
644
- font-size: var(--type-xs);
645
- flex-shrink: 0;
646
- align-items: stretch;
647
- gap: 0;
648
- min-width: 0;
649
- padding: 0;
650
- display: flex;
651
- position: relative;
652
- }
653
-
654
- .mb-brand {
655
- padding: 0 var(--u-s-3);
656
- border-right: 1px solid var(--u-border);
657
- color: var(--u-fg-0);
658
- letter-spacing: var(--tracking-sku);
659
- text-transform: uppercase;
660
- align-items: center;
661
- gap: 6px;
662
- font-size: 11px;
663
- font-weight: 700;
664
- display: flex;
665
- }
666
-
667
- .mb-brand .dot {
668
- background: var(--u-accent);
669
- flex: none;
670
- width: 8px;
671
- height: 8px;
672
- }
673
-
674
- .mb-menus {
675
- align-items: stretch;
676
- display: flex;
677
- }
678
-
679
- .mb-menu {
680
- font-family: var(--u-font-mono);
681
- font-size: var(--type-xs);
682
- color: var(--u-fg-1);
683
- cursor: pointer;
684
- white-space: nowrap;
685
- background: none;
686
- border: 0;
687
- align-items: center;
688
- height: 100%;
689
- padding: 0 12px;
690
- display: flex;
691
- }
692
-
693
- .mb-menu:hover {
694
- background: var(--u-bg-3);
695
- color: var(--u-fg-0);
696
- }
697
-
698
- .mb-menu[aria-expanded="true"] {
699
- background: var(--u-accent);
700
- color: var(--u-accent-fg);
701
- font-weight: 600;
702
- }
703
-
704
- .mb-menu:focus-visible {
705
- box-shadow: inset 0 0 0 2px var(--u-accent);
706
- outline: none;
707
- }
708
-
709
- .mb-menu:disabled, .mb-menu[aria-disabled="true"] {
710
- color: var(--u-fg-3);
711
- cursor: not-allowed;
712
- }
713
-
714
- .mb-menu:disabled:hover, .mb-menu[aria-disabled="true"]:hover {
715
- color: var(--u-fg-3);
716
- background: none;
717
- }
718
-
719
- .mb-spacer {
720
- flex: 1;
721
- min-width: 0;
722
- }
723
-
724
- .mb-status {
725
- padding: 0 var(--u-s-3);
726
- align-items: center;
727
- gap: var(--u-s-3);
728
- color: var(--u-fg-2);
729
- letter-spacing: var(--tracking-sku);
730
- text-transform: uppercase;
731
- border-left: 1px solid var(--u-border);
732
- white-space: nowrap;
733
- flex-shrink: 1;
734
- min-width: 0;
735
- font-size: 10px;
736
- display: flex;
737
- overflow: hidden;
738
- }
739
-
740
- .mb-status > * {
741
- flex: none;
742
- }
743
-
744
- .mb-status > .file {
745
- flex: 0 auto;
746
- min-width: 0;
747
- }
748
-
749
- .mb-status .cv-stamp {
750
- background: var(--u-fg-0);
751
- color: var(--u-bg-0);
752
- padding: 2px 6px;
753
- font-size: 10px;
754
- font-weight: 700;
755
- }
756
-
757
- .mb-status .file {
758
- color: var(--u-fg-1);
759
- text-overflow: ellipsis;
760
- white-space: nowrap;
761
- max-width: 280px;
762
- overflow: hidden;
763
- }
764
-
765
- .mb-status .file b {
766
- color: var(--u-fg-0);
767
- font-weight: 700;
768
- }
769
-
770
- .mb-status .sep {
771
- background: var(--u-border);
772
- flex: none;
773
- width: 1px;
774
- height: 14px;
775
- display: inline-block;
776
- }
777
-
778
- .mb-status b {
779
- color: var(--u-fg-0);
780
- font-weight: 700;
781
- }
782
-
783
- .mb-status .ok {
784
- color: var(--u-status-success);
785
- }
786
-
787
- .mb-status .warn {
788
- color: var(--u-accent);
789
- }
790
-
791
- .mb-status .accent-dot {
792
- color: var(--u-accent);
793
- font-size: 8px;
794
- }
795
-
796
- .mb-dropdown {
797
- background: var(--u-bg-2);
798
- border: 1px solid var(--u-fg-0);
799
- z-index: 100;
800
- min-width: 240px;
801
- font-family: var(--u-font-mono);
802
- font-size: var(--type-xs);
803
- box-shadow: 4px 4px 0 var(--u-fg-0);
804
- padding: 4px 0;
805
- position: absolute;
806
- top: 30px;
807
- }
808
-
809
- .mb-dd-hd {
810
- letter-spacing: var(--tracking-sku);
811
- text-transform: uppercase;
812
- color: var(--u-fg-2);
813
- padding: 4px 12px 2px;
814
- font-size: 9px;
815
- font-weight: 600;
816
- }
817
-
818
- .mb-dd-item {
819
- cursor: pointer;
820
- color: var(--u-fg-0);
821
- text-align: left;
822
- width: 100%;
823
- font-family: var(--u-font-mono);
824
- font-size: var(--type-xs);
825
- background: none;
826
- border: 0;
827
- justify-content: space-between;
828
- align-items: center;
829
- gap: 16px;
830
- padding: 5px 12px;
831
- display: flex;
832
- }
833
-
834
- .mb-dd-item:hover {
835
- background: var(--u-bg-3);
836
- }
837
-
838
- .mb-dd-item.active {
839
- color: var(--u-accent);
840
- }
841
-
842
- .mb-dd-item[aria-disabled="true"] {
843
- color: var(--u-fg-3);
844
- cursor: not-allowed;
845
- }
846
-
847
- .mb-dd-item[aria-disabled="true"]:hover {
848
- background: none;
849
- }
850
-
851
- .mb-dd-item .lbl {
852
- align-items: center;
853
- gap: 6px;
854
- display: inline-flex;
855
- }
856
-
857
- .mb-dd-item .check {
858
- color: var(--u-accent);
859
- text-align: left;
860
- width: 12px;
861
- display: inline-block;
862
- }
863
-
864
- .mb-dd-item .shortcut {
865
- color: var(--u-fg-2);
866
- font-family: var(--u-font-mono);
867
- letter-spacing: var(--tracking-wide);
868
- flex: none;
869
- font-size: 10px;
870
- }
871
-
872
- .mb-dd-item .phase-tag {
873
- color: var(--u-fg-3);
874
- letter-spacing: var(--tracking-sku);
875
- text-transform: uppercase;
876
- font-size: 9px;
877
- }
878
-
879
- .mb-dd-sep {
880
- background: var(--u-border);
881
- height: 1px;
882
- margin: 4px 0;
883
- }
884
-
885
- .header {
886
- align-items: center;
887
- gap: var(--u-s-3);
888
- padding: var(--u-s-2) var(--u-s-3);
889
- background: var(--u-bg-1);
890
- border-bottom: 1px solid var(--u-border);
891
- min-height: var(--u-header-h);
892
- font-family: var(--u-font-mono);
893
- display: flex;
894
- }
895
-
896
- .tabs {
897
- min-width: 0;
898
- margin: calc(var(--u-s-2) * -1) calc(var(--u-s-3) * -1);
899
- flex: 1;
900
- align-self: stretch;
901
- gap: 0;
902
- padding: 0;
903
- display: flex;
904
- overflow-x: auto;
905
- }
906
-
907
- .tabs::-webkit-scrollbar {
908
- height: 0;
909
- }
910
-
911
- .tab {
912
- align-items: center;
913
- gap: var(--u-s-2);
914
- padding: var(--u-s-2) var(--u-s-3);
915
- background: var(--u-bg-1);
916
- border: 0;
917
- border-right: 1px solid var(--u-border-subtle);
918
- font-size: var(--type-xs);
919
- font-family: var(--u-font-mono);
920
- letter-spacing: var(--tracking-wide);
921
- cursor: pointer;
922
- white-space: nowrap;
923
- max-width: 240px;
924
- color: var(--u-fg-2);
925
- transition: color var(--dur-flip) var(--ease-out),
926
- background var(--dur-flip) var(--ease-out);
927
- border-radius: 0;
928
- display: flex;
929
- position: relative;
930
- }
931
-
932
- .tab:hover {
933
- color: var(--u-fg-0);
934
- background: var(--u-bg-2);
935
- }
936
-
937
- .tab.active {
938
- background: var(--u-bg-0);
939
- color: var(--u-fg-0);
940
- font-weight: 700;
941
- }
942
-
943
- .tab.active:after {
944
- content: "";
945
- background: var(--u-accent);
946
- height: 2px;
947
- position: absolute;
948
- bottom: -1px;
949
- left: 0;
950
- right: 0;
951
- }
952
-
953
- .tab:focus-visible {
954
- box-shadow: var(--shadow-focus);
955
- z-index: 2;
956
- outline: none;
957
- }
958
-
959
- .tab .name {
960
- text-overflow: ellipsis;
961
- flex: 1;
962
- min-width: 0;
963
- overflow: hidden;
964
- }
965
-
966
- .tab .close {
967
- color: var(--u-fg-3);
968
- cursor: pointer;
969
- border-radius: var(--u-r-xs);
970
- background: none;
971
- border: 0;
972
- padding: 0 4px;
973
- font-family: inherit;
974
- font-size: 14px;
975
- line-height: 1;
976
- }
977
-
978
- .tab .close:hover {
979
- background: var(--u-bg-3);
980
- color: var(--u-fg-0);
981
- }
982
-
983
- .actions {
984
- gap: var(--u-s-1);
985
- align-items: center;
986
- display: flex;
987
- }
988
-
989
- .actions button, .actions a {
990
- color: var(--u-fg-1);
991
- border: 1px solid var(--u-border);
992
- padding: 4px var(--u-s-3);
993
- font-size: var(--type-xs);
994
- border-radius: var(--u-r-sm);
995
- cursor: pointer;
996
- line-height: 1.2;
997
- font-family: var(--u-font-mono);
998
- letter-spacing: var(--tracking-wide);
999
- transition: color var(--dur-flip) var(--ease-out),
1000
- background var(--dur-flip) var(--ease-out),
1001
- border-color var(--dur-flip) var(--ease-out);
1002
- background: none;
1003
- align-items: center;
1004
- gap: 6px;
1005
- text-decoration: none;
1006
- display: inline-flex;
1007
- position: relative;
1008
- }
1009
-
1010
- .actions button:hover, .actions a:hover {
1011
- background: var(--u-bg-2);
1012
- color: var(--u-fg-0);
1013
- border-color: var(--u-border-strong);
1014
- }
1015
-
1016
- .actions button:focus-visible, .actions a:focus-visible {
1017
- box-shadow: var(--shadow-focus);
1018
- z-index: 1;
1019
- outline: none;
1020
- }
1021
-
1022
- .actions a.icon-only {
1023
- color: var(--u-fg-2);
1024
- border-color: #0000;
1025
- }
1026
-
1027
- .actions a.icon-only:hover {
1028
- color: var(--u-fg-0);
1029
- background: var(--u-bg-2);
1030
- border-color: var(--u-border);
1031
- }
1032
-
1033
- .theme-toggle-label {
1034
- text-transform: lowercase;
1035
- }
1036
-
1037
- .viewport {
1038
- background-color: var(--u-bg-1);
1039
- background-image: linear-gradient(var(--u-border-subtle) 1px, transparent 1px),
1040
- linear-gradient(90deg, var(--u-border-subtle) 1px, transparent 1px);
1041
- background-size: 24px 24px;
1042
- flex: 1;
1043
- position: relative;
1044
- }
1045
-
1046
- .viewport > iframe {
1047
- background: var(--u-bg-0);
1048
- border: 0;
1049
- width: 100%;
1050
- height: 100%;
1051
- display: none;
1052
- position: absolute;
1053
- inset: 0;
1054
- }
1055
-
1056
- .viewport > iframe.active {
1057
- display: block;
1058
- }
1059
-
1060
- .empty-state {
1061
- height: 100%;
1062
- color: var(--u-fg-3);
1063
- justify-content: center;
1064
- align-items: center;
1065
- gap: var(--u-s-4);
1066
- text-align: center;
1067
- flex-direction: column;
1068
- padding: 48px;
1069
- display: flex;
1070
- }
1071
-
1072
- .empty-state .big {
1073
- font-family: var(--u-font-display);
1074
- color: var(--u-fg-1);
1075
- letter-spacing: -.01em;
1076
- font-size: 18px;
1077
- font-weight: 600;
1078
- }
1079
-
1080
- .empty-state .small {
1081
- max-width: 480px;
1082
- font-size: 12px;
1083
- line-height: 1.6;
1084
- }
1085
-
1086
- .empty-state .small kbd {
1087
- font-family: var(--u-font-mono);
1088
- background: var(--u-bg-2);
1089
- border: 1px solid var(--u-border);
1090
- border-radius: var(--u-r-xs);
1091
- color: var(--u-fg-1);
1092
- padding: 1px 6px;
1093
- font-size: 11px;
1094
- }
1095
-
1096
- .empty-state .small code {
1097
- font-family: var(--u-font-mono);
1098
- background: var(--u-bg-2);
1099
- border-radius: var(--u-r-xs);
1100
- color: var(--u-accent);
1101
- padding: 1px 4px;
1102
- font-size: 11px;
1103
- }
1104
-
1105
- .statusbar {
1106
- font-family: var(--u-font-mono);
1107
- color: var(--u-fg-2);
1108
- letter-spacing: var(--tracking-wide);
1109
- background: var(--u-bg-1);
1110
- border-top: 1px solid var(--u-border);
1111
- height: var(--u-status-h);
1112
- align-items: stretch;
1113
- min-width: 0;
1114
- padding: 0;
1115
- font-size: 10px;
1116
- display: flex;
1117
- overflow: hidden;
1118
- }
1119
-
1120
- .sb-slot {
1121
- align-items: center;
1122
- gap: var(--u-s-2);
1123
- padding: 0 var(--u-s-3);
1124
- border-right: 1px solid var(--u-border-subtle);
1125
- min-width: 0;
1126
- display: inline-flex;
1127
- }
1128
-
1129
- .sb-key {
1130
- color: var(--u-fg-3);
1131
- text-transform: uppercase;
1132
- letter-spacing: var(--tracking-sku);
1133
- }
1134
-
1135
- .sb-active {
1136
- flex: 0 auto;
1137
- min-width: 0;
1138
- }
1139
-
1140
- .sb-active .sb-file {
1141
- color: var(--u-fg-1);
1142
- text-overflow: ellipsis;
1143
- white-space: nowrap;
1144
- max-width: 360px;
1145
- overflow: hidden;
1146
- }
1147
-
1148
- .sb-selected {
1149
- flex: auto;
1150
- min-width: 0;
1151
- }
1152
-
1153
- .sb-selected .sb-dot {
1154
- color: var(--u-accent);
1155
- }
1156
-
1157
- .sb-selected .sb-sel-text {
1158
- color: var(--u-fg-1);
1159
- text-overflow: ellipsis;
1160
- white-space: nowrap;
1161
- flex: 1;
1162
- min-width: 0;
1163
- overflow: hidden;
1164
- }
1165
-
1166
- .sb-clear-sel {
1167
- color: var(--u-fg-2);
1168
- border: 1px solid var(--u-border);
1169
- border-radius: var(--u-r-xs);
1170
- letter-spacing: var(--tracking-sku);
1171
- text-transform: uppercase;
1172
- cursor: pointer;
1173
- background: none;
1174
- padding: 1px 6px;
1175
- font-family: inherit;
1176
- font-size: 10px;
1177
- line-height: 1.4;
1178
- }
1179
-
1180
- .sb-clear-sel:hover {
1181
- color: var(--u-fg-0);
1182
- background: var(--u-bg-2);
1183
- border-color: var(--u-border-strong);
1184
- }
1185
-
1186
- .sb-unread .sb-count {
1187
- font-family: var(--u-font-mono);
1188
- color: var(--u-fg-0);
1189
- font-variant-numeric: tabular-nums;
1190
- background: var(--u-bg-2);
1191
- border: 1px solid var(--u-border);
1192
- padding: 0 5px;
1193
- font-size: 10px;
1194
- font-weight: 700;
1195
- }
1196
-
1197
- .sb-live-dot {
1198
- background: var(--u-fg-3);
1199
- border-radius: 50%;
1200
- flex: none;
1201
- width: 7px;
1202
- height: 7px;
1203
- }
1204
-
1205
- .sb-live-dot.connected {
1206
- background: var(--u-status-error);
1207
- }
1208
-
1209
- .sb-live .sb-key {
1210
- color: var(--u-fg-1);
1211
- }
1212
-
1213
- .sb-sync {
1214
- cursor: help;
1215
- }
1216
-
1217
- .sb-sync-dot {
1218
- background: var(--u-status-warn);
1219
- border-radius: 50%;
1220
- flex: none;
1221
- width: 7px;
1222
- height: 7px;
1223
- }
1224
-
1225
- .sb-sync .sb-key {
1226
- color: var(--u-fg-2);
1227
- }
1228
-
1229
- .sb-spacer {
1230
- border-right: 1px solid var(--u-border-subtle);
1231
- flex: 1 0 auto;
1232
- }
1233
-
1234
- .sb-theme {
1235
- padding: 0 var(--u-s-2);
1236
- border-right: 0;
1237
- }
1238
-
1239
- .sb-theme .theme-toggle {
1240
- color: var(--u-fg-2);
1241
- font-family: var(--u-font-mono);
1242
- letter-spacing: var(--tracking-sku);
1243
- text-transform: uppercase;
1244
- padding: 2px var(--u-s-2);
1245
- cursor: pointer;
1246
- background: none;
1247
- border: 0;
1248
- align-items: center;
1249
- gap: 6px;
1250
- font-size: 10px;
1251
- display: inline-flex;
1252
- }
1253
-
1254
- .sb-theme .theme-toggle:hover {
1255
- color: var(--u-fg-0);
1256
- background: var(--u-bg-2);
1257
- }
1258
-
1259
- .sb-theme .theme-toggle:focus-visible {
1260
- box-shadow: var(--shadow-focus);
1261
- outline: none;
1262
- }
1263
-
1264
- .theme-toggle-label {
1265
- color: inherit;
1266
- }
1267
-
1268
- .filter-no-match {
1269
- display: none !important;
1270
- }
1271
-
1272
- .wm {
1273
- top: var(--u-s-4);
1274
- left: var(--u-s-5);
1275
- font-family: var(--u-font-display);
1276
- color: var(--u-fg-0);
1277
- pointer-events: none;
1278
- z-index: 1;
1279
- user-select: none;
1280
- font-weight: 700;
1281
- line-height: 1;
1282
- position: absolute;
1283
- }
1284
-
1285
- .wm-glyph {
1286
- letter-spacing: var(--tracking-tight);
1287
- font-size: 40px;
1288
- display: block;
1289
- }
1290
-
1291
- .wm-sub {
1292
- font-size: var(--type-xs);
1293
- letter-spacing: var(--tracking-sku);
1294
- text-transform: uppercase;
1295
- color: var(--u-fg-2);
1296
- margin-top: var(--u-s-2);
1297
- gap: var(--u-s-3);
1298
- align-items: center;
1299
- font-weight: 500;
1300
- display: flex;
1301
- }
1302
-
1303
- .wm-sub b {
1304
- color: var(--u-accent);
1305
- font-weight: 700;
1306
- }
1307
-
1308
- .wm-sep {
1309
- color: var(--u-fg-3);
1310
- }
1311
-
1312
- .sel-halo {
1313
- border: 2px solid var(--u-accent);
1314
- pointer-events: none;
1315
- z-index: 5;
1316
- position: absolute;
1317
- inset: 0;
1318
- }
1319
-
1320
- .sel-halo:before, .sel-halo:after, .sel-halo > i:before, .sel-halo > i:after {
1321
- content: "";
1322
- background: var(--u-accent);
1323
- width: 8px;
1324
- height: 8px;
1325
- position: absolute;
1326
- }
1327
-
1328
- .sel-halo:before {
1329
- top: -3px;
1330
- left: -3px;
1331
- }
1332
-
1333
- .sel-halo:after {
1334
- top: -3px;
1335
- right: -3px;
1336
- }
1337
-
1338
- .sel-halo > i:before {
1339
- bottom: -3px;
1340
- left: -3px;
1341
- }
1342
-
1343
- .sel-halo > i:after {
1344
- bottom: -3px;
1345
- right: -3px;
1346
- }
1347
- }
1348
-
1349
- @layer components {
1350
- .tab-system {
1351
- background: var(--u-accent-bg);
1352
- border-color: var(--u-accent-line);
1353
- color: var(--u-accent);
1354
- }
1355
-
1356
- .tab-system:hover {
1357
- background: var(--u-accent-bg);
1358
- }
1359
-
1360
- .tab-system.active {
1361
- color: var(--u-accent);
1362
- border-color: var(--u-accent);
1363
- }
1364
-
1365
- .system-view {
1366
- background: var(--u-bg-0);
1367
- display: none;
1368
- position: absolute;
1369
- inset: 0;
1370
- overflow-y: auto;
1371
- }
1372
-
1373
- .system-view.active {
1374
- display: block;
1375
- }
1376
-
1377
- .system-view::-webkit-scrollbar {
1378
- width: 8px;
1379
- }
1380
-
1381
- .system-view::-webkit-scrollbar-thumb {
1382
- background: var(--u-border);
1383
- border-radius: var(--u-r-sm);
1384
- }
1385
-
1386
- .sv {
1387
- max-width: 1280px;
1388
- padding: var(--space-7) var(--space-7) var(--space-9);
1389
- font-family: var(--u-font-mono);
1390
- margin: 0 auto;
1391
- }
1392
-
1393
- .sv-empty {
1394
- height: 50vh;
1395
- color: var(--u-fg-3);
1396
- place-items: center;
1397
- display: grid;
1398
- }
1399
-
1400
- .sv-header {
1401
- align-items: baseline;
1402
- gap: var(--space-5);
1403
- border-bottom: 2px solid var(--u-fg-0);
1404
- padding-bottom: var(--u-s-3);
1405
- margin-bottom: var(--u-s-5);
1406
- flex-wrap: wrap;
1407
- display: flex;
1408
- }
1409
-
1410
- .sv-header .sv-title {
1411
- flex: auto;
1412
- }
1413
-
1414
- .sv-ds-picker {
1415
- align-items: baseline;
1416
- gap: var(--u-s-2);
1417
- font-family: var(--u-font-mono);
1418
- letter-spacing: var(--tracking-sku);
1419
- text-transform: uppercase;
1420
- color: var(--u-fg-2);
1421
- font-size: 10px;
1422
- display: inline-flex;
1423
- }
1424
-
1425
- .sv-ds-picker select {
1426
- font-family: var(--u-font-mono);
1427
- color: var(--u-fg-0);
1428
- background: var(--u-bg-1);
1429
- border: 1px solid var(--u-border);
1430
- border-radius: var(--u-r-sm);
1431
- text-transform: none;
1432
- letter-spacing: 0;
1433
- padding: 2px 6px;
1434
- font-size: 11px;
1435
- }
1436
-
1437
- .sv-ds-description {
1438
- font-family: var(--u-font-body);
1439
- font-size: var(--type-sm);
1440
- color: var(--u-fg-1);
1441
- margin: 0 0 var(--u-s-5);
1442
- max-width: 72ch;
1443
- line-height: 1.5;
1444
- }
1445
-
1446
- .sv-sku {
1447
- font-family: var(--u-font-mono);
1448
- font-size: var(--type-lg);
1449
- letter-spacing: var(--tracking-sku);
1450
- text-transform: uppercase;
1451
- color: var(--u-fg-0);
1452
- font-weight: 700;
1453
- }
1454
-
1455
- .sv-title {
1456
- font-family: var(--u-font-mono);
1457
- font-size: var(--type-md);
1458
- color: var(--u-fg-1);
1459
- }
1460
-
1461
- .sv-loc {
1462
- font-family: var(--u-font-mono);
1463
- letter-spacing: var(--tracking-sku);
1464
- text-transform: uppercase;
1465
- color: var(--u-fg-2);
1466
- font-size: 10px;
1467
- }
1468
-
1469
- .sv-loc code {
1470
- font-family: var(--u-font-mono);
1471
- color: var(--u-accent);
1472
- background: none;
1473
- padding: 0;
1474
- }
1475
-
1476
- .sv-section {
1477
- margin-bottom: var(--u-s-5);
1478
- }
1479
-
1480
- .sv-section h2 {
1481
- font-family: var(--u-font-mono);
1482
- color: var(--u-fg-2);
1483
- text-transform: uppercase;
1484
- letter-spacing: var(--tracking-sku);
1485
- margin: 0 0 var(--u-s-3);
1486
- padding-bottom: var(--u-s-2);
1487
- border-bottom: 1px solid var(--u-border);
1488
- justify-content: space-between;
1489
- align-items: baseline;
1490
- font-size: 10px;
1491
- font-weight: 700;
1492
- display: flex;
1493
- }
1494
-
1495
- .sv-section h2 .sv-h-num {
1496
- color: var(--u-fg-1);
1497
- font-variant-numeric: tabular-nums;
1498
- font-weight: 600;
1499
- }
1500
-
1501
- .sv-section h3 {
1502
- font-family: var(--u-font-mono);
1503
- color: var(--u-fg-2);
1504
- text-transform: uppercase;
1505
- letter-spacing: var(--tracking-sku);
1506
- margin: var(--u-s-3) 0 var(--u-s-2);
1507
- align-items: baseline;
1508
- gap: var(--u-s-2);
1509
- font-size: 10px;
1510
- font-weight: 700;
1511
- display: flex;
1512
- }
1513
-
1514
- .sv-count {
1515
- font-family: var(--u-font-mono);
1516
- color: var(--u-fg-3);
1517
- font-variant-numeric: tabular-nums;
1518
- font-size: 11px;
1519
- font-weight: 500;
1520
- }
1521
-
1522
- .sv-tokens-ladder {
1523
- border: 1px solid var(--u-border);
1524
- grid-template-columns: repeat(6, 1fr);
1525
- gap: 0;
1526
- display: grid;
1527
- }
1528
-
1529
- .sv-tok-cell {
1530
- border-right: 1px solid var(--u-border);
1531
- border-bottom: 1px solid var(--u-border);
1532
- background: var(--u-bg-1);
1533
- flex-direction: column;
1534
- display: flex;
1535
- }
1536
-
1537
- .sv-tok-cell:nth-child(6n) {
1538
- border-right: 0;
1539
- }
1540
-
1541
- .sv-tok-cell .sv-tok-swatch {
1542
- border-bottom: 1px solid var(--u-border-subtle);
1543
- height: 56px;
1544
- }
1545
-
1546
- .sv-tok-cell .sv-tok-meta {
1547
- padding: var(--u-s-1) var(--u-s-2);
1548
- justify-content: space-between;
1549
- align-items: baseline;
1550
- gap: var(--u-s-1);
1551
- min-width: 0;
1552
- display: flex;
1553
- }
1554
-
1555
- .sv-tok-cell .sv-tok-name {
1556
- font-family: var(--u-font-mono);
1557
- color: var(--u-fg-0);
1558
- text-overflow: ellipsis;
1559
- background: none;
1560
- padding: 0;
1561
- font-size: 10px;
1562
- font-weight: 600;
1563
- overflow: hidden;
1564
- }
1565
-
1566
- .sv-tok-cell .sv-tok-value {
1567
- font-family: var(--u-font-mono);
1568
- color: var(--u-fg-2);
1569
- font-variant-numeric: tabular-nums;
1570
- white-space: nowrap;
1571
- text-overflow: ellipsis;
1572
- font-size: 9px;
1573
- overflow: hidden;
1574
- }
1575
-
1576
- .sv-type-list {
1577
- display: block;
1578
- }
1579
-
1580
- .sv-type-row {
1581
- gap: var(--u-s-4);
1582
- padding: var(--u-s-2) 0;
1583
- border-bottom: 1px solid var(--u-border-subtle);
1584
- grid-template-columns: 120px 1fr;
1585
- align-items: baseline;
1586
- display: grid;
1587
- }
1588
-
1589
- .sv-type-tok {
1590
- font-family: var(--u-font-mono);
1591
- color: var(--u-accent);
1592
- letter-spacing: var(--tracking-sku);
1593
- text-transform: uppercase;
1594
- background: none;
1595
- padding: 0;
1596
- font-size: 10px;
1597
- }
1598
-
1599
- .sv-type-sample {
1600
- color: var(--u-fg-0);
1601
- font-family: var(--u-font-mono);
1602
- }
1603
-
1604
- .sv-readme {
1605
- font-family: var(--u-font-mono);
1606
- color: var(--u-fg-1);
1607
- background: var(--u-bg-1);
1608
- border: 1px solid var(--u-border);
1609
- border-radius: var(--u-r-md);
1610
- padding: var(--u-s-4);
1611
- white-space: pre-wrap;
1612
- max-height: 480px;
1613
- font-size: 12px;
1614
- line-height: 1.6;
1615
- overflow: auto;
1616
- }
1617
-
1618
- .sv-tokens-group {
1619
- margin-bottom: var(--u-s-3);
1620
- }
1621
-
1622
- .sv-tokens {
1623
- gap: var(--u-s-2);
1624
- display: grid;
1625
- }
1626
-
1627
- .sv-tokens-color {
1628
- grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
1629
- }
1630
-
1631
- .sv-tokens-font, .sv-tokens-fontsize {
1632
- grid-template-columns: 1fr;
1633
- }
1634
-
1635
- .sv-tokens-radius, .sv-tokens-shadow {
1636
- grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
1637
- }
1638
-
1639
- .sv-tokens-space, .sv-tokens-other, .sv-tokens-weight, .sv-tokens-leading, .sv-tokens-motion {
1640
- grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
1641
- }
1642
-
1643
- .tok {
1644
- background: var(--u-bg-1);
1645
- border: 1px solid var(--u-border);
1646
- border-radius: var(--u-r-md);
1647
- padding: var(--u-s-2);
1648
- gap: var(--u-s-2);
1649
- flex-direction: column;
1650
- min-width: 0;
1651
- display: flex;
1652
- }
1653
-
1654
- .tok-meta {
1655
- flex-direction: column;
1656
- gap: 2px;
1657
- min-width: 0;
1658
- font-size: 11px;
1659
- display: flex;
1660
- }
1661
-
1662
- .tok-meta code {
1663
- font-family: var(--u-font-mono);
1664
- color: var(--u-fg-0);
1665
- text-overflow: ellipsis;
1666
- white-space: nowrap;
1667
- font-size: 11px;
1668
- overflow: hidden;
1669
- }
1670
-
1671
- .tok-meta span {
1672
- font-family: var(--u-font-mono);
1673
- color: var(--u-fg-3);
1674
- text-overflow: ellipsis;
1675
- white-space: nowrap;
1676
- font-size: 10px;
1677
- overflow: hidden;
1678
- }
1679
-
1680
- .tok-color {
1681
- flex-direction: row;
1682
- align-items: center;
1683
- }
1684
-
1685
- .tok-swatch {
1686
- border-radius: var(--u-r-sm);
1687
- border: 1px solid var(--u-border-strong);
1688
- background-image: linear-gradient(45deg, var(--u-border-subtle) 25%, transparent 25%),
1689
- linear-gradient(-45deg, var(--u-border-subtle) 25%, transparent 25%),
1690
- linear-gradient(45deg, transparent 75%, var(--u-border-subtle) 75%),
1691
- linear-gradient(-45deg, transparent 75%, var(--u-border-subtle) 75%);
1692
- background-position: 0 0, 0 6px, 6px -6px, -6px 0;
1693
- background-size: 12px 12px;
1694
- flex: none;
1695
- width: 48px;
1696
- height: 48px;
1697
- }
1698
-
1699
- .tok-color .tok-swatch {
1700
- background: inherit;
1701
- }
1702
-
1703
- .tok-text .tok-sample {
1704
- color: var(--u-fg-0);
1705
- text-overflow: ellipsis;
1706
- white-space: nowrap;
1707
- font-size: 18px;
1708
- line-height: 1.3;
1709
- overflow: hidden;
1710
- }
1711
-
1712
- .tok-radius {
1713
- flex-direction: row;
1714
- align-items: center;
1715
- }
1716
-
1717
- .tok-radius .tok-shape {
1718
- background: var(--u-bg-3);
1719
- border: 1px solid var(--u-border-strong);
1720
- flex: none;
1721
- width: 48px;
1722
- height: 48px;
1723
- }
1724
-
1725
- .tok-shadow {
1726
- padding: var(--u-s-3);
1727
- flex-direction: row;
1728
- align-items: center;
1729
- }
1730
-
1731
- .tok-shadow .tok-shape {
1732
- background: var(--u-bg-2);
1733
- border-radius: var(--u-r-md);
1734
- flex: none;
1735
- width: 48px;
1736
- height: 48px;
1737
- }
1738
-
1739
- .tok-space {
1740
- flex-direction: column;
1741
- }
1742
-
1743
- .tok-space .tok-bar {
1744
- background: var(--u-accent);
1745
- border-radius: var(--u-r-pill);
1746
- max-width: 100%;
1747
- height: 8px;
1748
- }
1749
-
1750
- .sv-previews {
1751
- gap: var(--u-s-3);
1752
- grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
1753
- display: grid;
1754
- }
1755
-
1756
- .sv-previews-ui_kits {
1757
- grid-template-columns: repeat(auto-fill, minmax(560px, 1fr));
1758
- }
1759
-
1760
- .sv-previews-ui_kits .sv-preview-frame {
1761
- aspect-ratio: 16 / 10;
1762
- }
1763
-
1764
- .sv-preview-card {
1765
- background: var(--u-bg-1);
1766
- border: 1px solid var(--u-border);
1767
- border-radius: var(--u-r-md);
1768
- cursor: pointer;
1769
- transition: all .12s;
1770
- overflow: hidden;
1771
- }
1772
-
1773
- .sv-preview-card:hover {
1774
- border-color: var(--u-accent-line);
1775
- transform: translateY(-1px);
1776
- }
1777
-
1778
- .sv-preview-frame {
1779
- aspect-ratio: 16 / 10;
1780
- background: var(--u-bg-0);
1781
- border-bottom: 1px solid var(--u-border);
1782
- position: relative;
1783
- overflow: hidden;
1784
- }
1785
-
1786
- .sv-preview-frame iframe {
1787
- transform-origin: 0 0;
1788
- pointer-events: none;
1789
- background: var(--u-bg-0);
1790
- border: 0;
1791
- width: 200%;
1792
- height: 200%;
1793
- position: absolute;
1794
- top: 0;
1795
- left: 0;
1796
- transform: scale(.5);
1797
- }
1798
-
1799
- .sv-preview-foot {
1800
- padding: var(--u-s-2) var(--u-s-3);
1801
- flex-direction: column;
1802
- gap: 2px;
1803
- display: flex;
1804
- }
1805
-
1806
- .sv-preview-foot strong {
1807
- color: var(--u-fg-0);
1808
- font-size: 12px;
1809
- font-weight: 600;
1810
- }
1811
-
1812
- .sv-preview-foot code {
1813
- font-family: var(--u-font-mono);
1814
- color: var(--u-fg-3);
1815
- text-overflow: ellipsis;
1816
- white-space: nowrap;
1817
- font-size: 10px;
1818
- overflow: hidden;
1819
- }
1820
-
1821
- .sv-list {
1822
- gap: var(--u-s-1);
1823
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
1824
- margin: 0;
1825
- padding: 0;
1826
- list-style: none;
1827
- display: grid;
1828
- }
1829
-
1830
- .sv-list li {
1831
- background: var(--u-bg-1);
1832
- border: 1px solid var(--u-border);
1833
- border-radius: var(--u-r-sm);
1834
- padding: var(--u-s-2) var(--u-s-3);
1835
- flex-direction: column;
1836
- gap: 2px;
1837
- min-width: 0;
1838
- display: flex;
1839
- }
1840
-
1841
- .sv-list code {
1842
- font-family: var(--u-font-mono);
1843
- color: var(--u-fg-0);
1844
- font-size: 12px;
1845
- font-weight: 500;
1846
- }
1847
-
1848
- .sv-list-path {
1849
- font-family: var(--u-font-mono);
1850
- color: var(--u-fg-3);
1851
- text-overflow: ellipsis;
1852
- white-space: nowrap;
1853
- font-size: 10px;
1854
- overflow: hidden;
1855
- }
1856
-
1857
- .sv-assets {
1858
- gap: var(--u-s-2);
1859
- grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
1860
- display: grid;
1861
- }
1862
-
1863
- .sv-asset {
1864
- background: var(--u-bg-1);
1865
- border: 1px solid var(--u-border);
1866
- border-radius: var(--u-r-sm);
1867
- padding: var(--u-s-3);
1868
- align-items: center;
1869
- gap: var(--u-s-2);
1870
- flex-direction: column;
1871
- margin: 0;
1872
- display: flex;
1873
- }
1874
-
1875
- .sv-asset img {
1876
- object-fit: contain;
1877
- width: auto;
1878
- max-width: 100%;
1879
- height: auto;
1880
- max-height: 80px;
1881
- }
1882
-
1883
- .sv-asset figcaption {
1884
- font-family: var(--u-font-mono);
1885
- color: var(--u-fg-3);
1886
- text-align: center;
1887
- text-overflow: ellipsis;
1888
- white-space: nowrap;
1889
- max-width: 100%;
1890
- font-size: 10px;
1891
- overflow: hidden;
1892
- }
1893
-
1894
- .comment-bar {
1895
- background: var(--u-bg-1);
1896
- border-top: 1px solid var(--u-border);
1897
- padding: 6px var(--u-s-3);
1898
- flex-direction: column;
1899
- gap: 4px;
1900
- font-size: 12px;
1901
- display: flex;
1902
- }
1903
-
1904
- .cb-row {
1905
- align-items: center;
1906
- gap: var(--u-s-2);
1907
- flex-wrap: wrap;
1908
- display: flex;
1909
- }
1910
-
1911
- .cb-label {
1912
- color: var(--u-fg-3);
1913
- flex: none;
1914
- align-self: center;
1915
- font-size: 11px;
1916
- }
1917
-
1918
- .cb-row.strip {
1919
- color: var(--u-fg-3);
1920
- font-size: 11px;
1921
- }
1922
-
1923
- .rsidebar {
1924
- background: var(--u-bg-1);
1925
- border-left: 1px solid var(--u-border);
1926
- min-width: 0;
1927
- font-family: var(--u-font-mono);
1928
- flex-direction: column;
1929
- display: flex;
1930
- }
1931
-
1932
- .rsidebar-header {
1933
- padding: var(--u-s-2) var(--u-s-3);
1934
- background: var(--u-bg-2);
1935
- border-bottom: 1px solid var(--u-border);
1936
- align-items: baseline;
1937
- gap: var(--u-s-2);
1938
- display: flex;
1939
- }
1940
-
1941
- .rsidebar-header h2 {
1942
- font-family: var(--u-font-mono);
1943
- font-size: var(--type-md);
1944
- color: var(--u-fg-0);
1945
- align-items: baseline;
1946
- gap: var(--u-s-2);
1947
- letter-spacing: var(--tracking-tight);
1948
- margin: 0;
1949
- font-weight: 700;
1950
- display: flex;
1951
- }
1952
-
1953
- .rsidebar-header h2 > span:first-child {
1954
- text-transform: lowercase;
1955
- }
1956
-
1957
- .rsidebar-header h2 .total {
1958
- font-family: var(--u-font-mono);
1959
- color: var(--u-fg-2);
1960
- font-variant-numeric: tabular-nums;
1961
- letter-spacing: var(--tracking-sku);
1962
- text-transform: uppercase;
1963
- margin-left: auto;
1964
- font-size: 10px;
1965
- font-weight: 500;
1966
- }
1967
-
1968
- .rsidebar-filters {
1969
- background: var(--u-bg-1);
1970
- border: 0;
1971
- border-bottom: 1px solid var(--u-border);
1972
- border-radius: 0;
1973
- gap: 0;
1974
- padding: 0;
1975
- display: flex;
1976
- }
1977
-
1978
- .rsidebar-filter {
1979
- background: var(--u-bg-1);
1980
- border: 0;
1981
- border-right: 1px solid var(--u-border-subtle);
1982
- color: var(--u-fg-2);
1983
- cursor: pointer;
1984
- font-family: var(--u-font-mono);
1985
- padding: var(--u-s-2) var(--u-s-2);
1986
- letter-spacing: var(--tracking-sku);
1987
- text-transform: uppercase;
1988
- transition: color var(--dur-flip) var(--ease-out),
1989
- background var(--dur-flip) var(--ease-out);
1990
- border-radius: 0;
1991
- flex: 1;
1992
- justify-content: center;
1993
- align-items: baseline;
1994
- gap: 6px;
1995
- font-size: 10px;
1996
- font-weight: 600;
1997
- display: flex;
1998
- position: relative;
1999
- }
2000
-
2001
- .rsidebar-filter:last-child {
2002
- border-right: 0;
2003
- }
2004
-
2005
- .rsidebar-filter:hover {
2006
- color: var(--u-fg-0);
2007
- background: var(--u-bg-2);
2008
- }
2009
-
2010
- .rsidebar-filter:focus-visible {
2011
- box-shadow: var(--shadow-focus);
2012
- z-index: 1;
2013
- outline: none;
2014
- }
2015
-
2016
- .rsidebar-filter.active {
2017
- background: var(--u-bg-0);
2018
- color: var(--u-fg-0);
2019
- box-shadow: none;
2020
- font-weight: 700;
2021
- }
2022
-
2023
- .rsidebar-filter.active:after {
2024
- content: "";
2025
- background: var(--u-accent);
2026
- height: 2px;
2027
- position: absolute;
2028
- bottom: -1px;
2029
- left: 0;
2030
- right: 0;
2031
- }
2032
-
2033
- .rsidebar-filter .fc {
2034
- font-family: var(--u-font-mono);
2035
- color: var(--u-fg-1);
2036
- font-variant-numeric: tabular-nums;
2037
- letter-spacing: 0;
2038
- background: var(--u-bg-2);
2039
- border: 1px solid var(--u-border);
2040
- padding: 0 5px;
2041
- font-size: 10px;
2042
- }
2043
-
2044
- .rsidebar-filter.active .fc {
2045
- background: var(--u-accent);
2046
- color: var(--u-accent-fg);
2047
- border-color: var(--u-accent);
2048
- }
2049
-
2050
- .rsidebar-body {
2051
- background: var(--u-bg-0);
2052
- flex: 1;
2053
- padding: 0;
2054
- overflow-y: auto;
2055
- }
2056
-
2057
- .rsidebar-body::-webkit-scrollbar {
2058
- width: 6px;
2059
- }
2060
-
2061
- .rsidebar-body::-webkit-scrollbar-thumb {
2062
- background: var(--u-border);
2063
- border-radius: var(--u-r-sm);
2064
- }
2065
-
2066
- .rsidebar-empty {
2067
- padding: var(--u-s-5) var(--u-s-3);
2068
- text-align: center;
2069
- color: var(--u-fg-3);
2070
- font-size: 12px;
2071
- line-height: 1.5;
2072
- }
2073
-
2074
- .rsidebar-empty kbd {
2075
- font-family: var(--u-font-mono);
2076
- background: var(--u-bg-2);
2077
- border: 1px solid var(--u-border);
2078
- border-radius: var(--u-r-xs);
2079
- color: var(--u-fg-1);
2080
- padding: 1px 5px;
2081
- font-size: 11px;
2082
- }
2083
-
2084
- .rs-group {
2085
- margin-bottom: 0;
2086
- }
2087
-
2088
- .rs-group-h {
2089
- align-items: baseline;
2090
- gap: var(--u-s-2);
2091
- padding: var(--u-s-2) var(--u-s-3);
2092
- color: var(--u-fg-2);
2093
- background: var(--u-bg-1);
2094
- border: 0;
2095
- border-top: 1px solid var(--u-border-subtle);
2096
- border-bottom: 1px solid var(--u-border-subtle);
2097
- text-align: left;
2098
- cursor: pointer;
2099
- width: 100%;
2100
- font-size: 10px;
2101
- font-weight: 700;
2102
- font-family: var(--u-font-mono);
2103
- letter-spacing: var(--tracking-sku);
2104
- text-transform: uppercase;
2105
- display: flex;
2106
- }
2107
-
2108
- .rs-group-h:hover {
2109
- color: var(--u-fg-0);
2110
- background: var(--u-bg-2);
2111
- }
2112
-
2113
- .rs-group-h:focus-visible {
2114
- box-shadow: var(--shadow-focus);
2115
- outline: none;
2116
- }
2117
-
2118
- .rs-group-h .rs-group-name {
2119
- text-overflow: ellipsis;
2120
- white-space: nowrap;
2121
- flex: 1;
2122
- min-width: 0;
2123
- overflow: hidden;
2124
- }
2125
-
2126
- .rs-group-h .rs-group-count {
2127
- font-family: var(--u-font-mono);
2128
- color: var(--u-fg-3);
2129
- font-size: 10px;
2130
- font-weight: 500;
2131
- }
2132
-
2133
- .rs-comment {
2134
- background: var(--u-bg-0);
2135
- border: 0;
2136
- border-bottom: 1px solid var(--u-border-subtle);
2137
- padding: var(--u-s-2) var(--u-s-3);
2138
- cursor: pointer;
2139
- transition: background var(--dur-flip) var(--ease-out),
2140
- border-color var(--dur-flip) var(--ease-out);
2141
- gap: var(--u-s-1);
2142
- border-left: 2px solid #0000;
2143
- border-radius: 0;
2144
- flex-direction: column;
2145
- margin: 0;
2146
- display: flex;
2147
- }
2148
-
2149
- .rs-comment:hover {
2150
- background: var(--u-bg-1);
2151
- }
2152
-
2153
- .rs-comment:focus-within {
2154
- outline: none;
2155
- }
2156
-
2157
- .rs-comment.active-pin {
2158
- background: var(--u-accent-bg);
2159
- border-left-color: var(--u-accent);
2160
- padding-left: calc(var(--u-s-3) - 2px);
2161
- }
2162
-
2163
- .rs-comment.resolved {
2164
- opacity: 1;
2165
- color: var(--u-fg-2);
2166
- }
2167
-
2168
- .rs-comment-head {
2169
- align-items: center;
2170
- gap: var(--u-s-2);
2171
- display: flex;
2172
- }
2173
-
2174
- .rs-num {
2175
- font-family: var(--u-font-mono);
2176
- background: var(--u-accent);
2177
- color: var(--u-accent-fg);
2178
- border-radius: var(--u-r-sm);
2179
- letter-spacing: var(--tracking-sku);
2180
- flex: none;
2181
- padding: 1px 6px;
2182
- font-size: 10px;
2183
- font-weight: 700;
2184
- }
2185
-
2186
- .rs-comment.resolved .rs-num {
2187
- background: var(--u-status-success);
2188
- color: var(--u-bg-0);
2189
- }
2190
-
2191
- .rs-time {
2192
- font-family: var(--u-font-mono);
2193
- color: var(--u-fg-3);
2194
- flex: none;
2195
- margin-left: auto;
2196
- font-size: 10px;
2197
- }
2198
-
2199
- .rs-comment-text {
2200
- color: var(--u-fg-0);
2201
- -webkit-line-clamp: 3;
2202
- word-break: break-word;
2203
- -webkit-box-orient: vertical;
2204
- font-size: 12px;
2205
- line-height: 1.45;
2206
- display: -webkit-box;
2207
- overflow: hidden;
2208
- }
2209
-
2210
- .rs-comment.resolved .rs-comment-text {
2211
- color: var(--u-fg-2);
2212
- text-decoration: line-through;
2213
- text-decoration-color: var(--u-fg-3);
2214
- }
2215
-
2216
- .rs-comment-foot {
2217
- align-items: center;
2218
- gap: var(--u-s-1);
2219
- font-size: 10px;
2220
- display: flex;
2221
- }
2222
-
2223
- .rs-comment-foot code {
2224
- font-family: var(--u-font-mono);
2225
- background: var(--u-bg-3);
2226
- color: var(--u-fg-2);
2227
- border-radius: var(--u-r-xs);
2228
- text-overflow: ellipsis;
2229
- white-space: nowrap;
2230
- flex: 1;
2231
- min-width: 0;
2232
- padding: 1px 5px;
2233
- font-size: 10px;
2234
- overflow: hidden;
2235
- }
2236
-
2237
- .rs-comment-actions {
2238
- flex: none;
2239
- gap: 4px;
2240
- display: flex;
2241
- }
2242
-
2243
- .rs-act {
2244
- border: 1px solid var(--u-border);
2245
- color: var(--u-fg-2);
2246
- border-radius: var(--u-r-xs);
2247
- font-family: var(--u-font-mono);
2248
- cursor: pointer;
2249
- background: none;
2250
- padding: 1px 6px;
2251
- font-size: 10px;
2252
- line-height: 1.4;
2253
- }
2254
-
2255
- .rs-act:hover {
2256
- background: var(--u-bg-3);
2257
- color: var(--u-fg-0);
2258
- }
2259
-
2260
- .rs-act.danger:hover {
2261
- background: var(--u-status-error);
2262
- color: var(--u-accent-fg);
2263
- border-color: var(--u-status-error);
2264
- }
2265
-
2266
- .actions .rs-toggle {
2267
- position: relative;
2268
- }
2269
-
2270
- .actions .rs-toggle.active {
2271
- background: var(--u-accent-bg);
2272
- color: var(--u-accent);
2273
- border-color: var(--u-accent-line);
2274
- }
2275
-
2276
- .actions .rs-toggle .rs-badge {
2277
- background: var(--u-accent);
2278
- color: var(--u-accent-fg);
2279
- border-radius: var(--u-r-sm);
2280
- font-family: var(--u-font-mono);
2281
- letter-spacing: var(--tracking-sku);
2282
- padding: 0 5px;
2283
- font-size: 9px;
2284
- font-weight: 700;
2285
- line-height: 1.4;
2286
- position: absolute;
2287
- top: -4px;
2288
- right: -4px;
2289
- }
2290
-
2291
- .add-comment {
2292
- color: var(--u-accent);
2293
- border: 1px solid var(--u-accent-line);
2294
- border-radius: var(--u-r-xs);
2295
- font-family: var(--u-font-mono);
2296
- cursor: pointer;
2297
- background: none;
2298
- padding: 1px 8px;
2299
- font-size: 10px;
2300
- line-height: 1.4;
2301
- }
2302
-
2303
- .add-comment:hover {
2304
- background: var(--u-accent-bg);
2305
- color: var(--u-accent);
2306
- }
2307
-
2308
- .help-modal-backdrop {
2309
- background: color-mix(in oklch, var(--u-bg-0) 70%, transparent);
2310
- z-index: 200;
2311
- padding: var(--u-s-4);
2312
- place-items: center;
2313
- display: grid;
2314
- position: fixed;
2315
- inset: 0;
2316
- }
2317
-
2318
- .help-modal {
2319
- background: var(--u-bg-1);
2320
- border: 1px solid var(--u-fg-0);
2321
- box-shadow: 8px 8px 0 var(--u-fg-0);
2322
- width: min(720px, 100%);
2323
- max-height: 80vh;
2324
- font-family: var(--u-font-mono);
2325
- flex-direction: column;
2326
- display: flex;
2327
- }
2328
-
2329
- .help-modal-hd {
2330
- padding: var(--u-s-3) var(--u-s-4);
2331
- border-bottom: 1px solid var(--u-fg-0);
2332
- background: var(--u-bg-2);
2333
- justify-content: space-between;
2334
- align-items: center;
2335
- display: flex;
2336
- }
2337
-
2338
- .help-modal-hd .title {
2339
- letter-spacing: var(--tracking-sku);
2340
- text-transform: uppercase;
2341
- font-weight: 700;
2342
- font-size: var(--type-xs);
2343
- color: var(--u-fg-0);
2344
- }
2345
-
2346
- .help-modal-hd .sku {
2347
- letter-spacing: var(--tracking-sku);
2348
- color: var(--u-fg-2);
2349
- text-transform: uppercase;
2350
- font-size: 10px;
2351
- }
2352
-
2353
- .help-modal-close {
2354
- border: 1px solid var(--u-border);
2355
- color: var(--u-fg-1);
2356
- cursor: pointer;
2357
- width: 22px;
2358
- height: 22px;
2359
- font-size: 14px;
2360
- line-height: 1;
2361
- font-family: var(--u-font-mono);
2362
- background: none;
2363
- place-items: center;
2364
- display: grid;
2365
- }
2366
-
2367
- .help-modal-close:hover {
2368
- background: var(--u-bg-3);
2369
- color: var(--u-fg-0);
2370
- border-color: var(--u-border-strong);
2371
- }
2372
-
2373
- .help-modal-close:focus-visible {
2374
- box-shadow: var(--shadow-focus);
2375
- outline: none;
2376
- }
2377
-
2378
- .help-modal-body {
2379
- padding: var(--u-s-3) var(--u-s-4);
2380
- font-size: var(--type-xs);
2381
- color: var(--u-fg-1);
2382
- overflow-y: auto;
2383
- }
2384
-
2385
- .help-modal-body::-webkit-scrollbar {
2386
- width: 6px;
2387
- }
2388
-
2389
- .help-modal-body::-webkit-scrollbar-thumb {
2390
- background: var(--u-border);
2391
- }
2392
-
2393
- .help-modal-body details {
2394
- margin: 0 0 var(--u-s-2);
2395
- border-bottom: 1px solid var(--u-border-subtle);
2396
- padding-bottom: var(--u-s-2);
2397
- }
2398
-
2399
- .help-modal-body details:last-child {
2400
- border-bottom: 0;
2401
- }
2402
-
2403
- .help-modal-body details > summary {
2404
- cursor: pointer;
2405
- padding: var(--u-s-2) 0;
2406
- letter-spacing: var(--tracking-sku);
2407
- text-transform: uppercase;
2408
- color: var(--u-fg-0);
2409
- align-items: center;
2410
- gap: var(--u-s-2);
2411
- font-size: 11px;
2412
- font-weight: 700;
2413
- list-style: none;
2414
- display: flex;
2415
- }
2416
-
2417
- .help-modal-body details > summary::-webkit-details-marker {
2418
- display: none;
2419
- }
2420
-
2421
- .help-modal-body details > summary:before {
2422
- content: "▸";
2423
- color: var(--u-fg-2);
2424
- width: 12px;
2425
- font-size: 10px;
2426
- }
2427
-
2428
- .help-modal-body details[open] > summary:before {
2429
- content: "▾";
2430
- }
2431
-
2432
- .help-modal-body ul, .help-modal-body ol {
2433
- padding: 0 0 var(--u-s-2) var(--u-s-4);
2434
- margin: 0;
2435
- font-size: 11px;
2436
- line-height: 1.7;
2437
- list-style: none;
2438
- }
2439
-
2440
- .help-modal-body li {
2441
- align-items: baseline;
2442
- gap: var(--u-s-2);
2443
- padding: 2px 0;
2444
- display: flex;
2445
- }
2446
-
2447
- .help-modal-body li > span {
2448
- color: var(--u-fg-3);
2449
- text-align: right;
2450
- margin-left: auto;
2451
- font-size: 10px;
2452
- }
2453
-
2454
- .help-modal-body kbd {
2455
- font-family: var(--u-font-mono);
2456
- background: var(--u-bg-2);
2457
- border: 1px solid var(--u-border);
2458
- color: var(--u-fg-0);
2459
- padding: 1px 5px;
2460
- font-size: 10px;
2461
- }
2462
-
2463
- .help-modal-body code {
2464
- font-family: var(--u-font-mono);
2465
- color: var(--u-accent);
2466
- background: var(--u-accent-bg);
2467
- padding: 1px 4px;
2468
- font-size: 10px;
2469
- }
2470
-
2471
- .help-modal-body code i {
2472
- color: var(--u-fg-2);
2473
- font-style: normal;
2474
- }
2475
-
2476
- .help-modal-body ul.cmds li, .help-modal-body ul.files li {
2477
- flex-direction: column;
2478
- align-items: flex-start;
2479
- gap: 2px;
2480
- }
2481
-
2482
- .help-modal-body ul.cmds li > span, .help-modal-body ul.files li > span {
2483
- text-align: left;
2484
- margin-left: 0;
2485
- }
2486
-
2487
- .tp-section-hd.clickable {
2488
- cursor: pointer;
2489
- user-select: none;
2490
- text-align: left;
2491
- width: 100%;
2492
- font-family: var(--u-font-mono);
2493
- transition: background var(--dur-flip) var(--ease-out);
2494
- background: none;
2495
- border: 0;
2496
- }
2497
-
2498
- .tp-section-hd.clickable:hover {
2499
- background: var(--u-bg-2);
2500
- }
2501
-
2502
- .tp-section-hd.clickable:focus-visible {
2503
- box-shadow: var(--shadow-focus);
2504
- outline: none;
2505
- }
2506
-
2507
- .tp-section-hd.clickable.active {
2508
- background: var(--u-accent-bg);
2509
- color: var(--u-fg-0);
2510
- }
2511
-
2512
- .tp-section-hd.clickable.active .pill {
2513
- border-color: var(--u-accent);
2514
- color: var(--u-accent);
2515
- }
2516
-
2517
- .tp-section-hd.ds-split {
2518
- cursor: default;
2519
- padding: 0;
2520
- }
2521
-
2522
- .tp-section-hd.ds-split > button {
2523
- padding: 6px var(--u-s-3) 2px;
2524
- color: inherit;
2525
- font: inherit;
2526
- letter-spacing: inherit;
2527
- text-transform: inherit;
2528
- cursor: pointer;
2529
- background: none;
2530
- border: 0;
2531
- align-items: baseline;
2532
- gap: 8px;
2533
- display: inline-flex;
2534
- }
2535
-
2536
- .tp-section-hd.ds-split > button:focus-visible {
2537
- box-shadow: var(--shadow-focus);
2538
- z-index: 1;
2539
- outline: none;
2540
- position: relative;
2541
- }
2542
-
2543
- .tp-section-hd.ds-split .ds-open {
2544
- flex: 1;
2545
- justify-content: flex-start;
2546
- min-width: 0;
2547
- }
2548
-
2549
- .tp-section-hd.ds-split .ds-open:hover {
2550
- background: var(--u-bg-2);
2551
- }
2552
-
2553
- .tp-section-hd.ds-split .chev {
2554
- color: var(--u-fg-2);
2555
- opacity: .75;
2556
- flex: none;
2557
- padding: 6px 10px 2px;
2558
- }
2559
-
2560
- .tp-section-hd.ds-split .chev:hover {
2561
- opacity: 1;
2562
- background: var(--u-bg-2);
2563
- }
2564
-
2565
- .tp-section-hd.ds-split.active .ds-open {
2566
- background: var(--u-accent-bg);
2567
- color: var(--u-fg-0);
2568
- }
2569
-
2570
- .tp-section-hd.ds-split.active .pill {
2571
- border-color: var(--u-accent);
2572
- color: var(--u-accent);
2573
- }
2574
-
2575
- .tp-row.sidecar {
2576
- opacity: .55;
2577
- }
2578
-
2579
- .tp-row.sidecar .glyph {
2580
- visibility: hidden;
2581
- }
2582
-
2583
- .tp-row.sidecar:hover {
2584
- opacity: .85;
2585
- }
2586
-
2587
- .tp-row.canvas-row .canvas-chev {
2588
- cursor: pointer;
2589
- }
2590
-
2591
- .tp-row.canvas-row .canvas-chev:hover {
2592
- color: var(--u-fg-0);
2593
- }
2594
-
2595
- .tp-row.ds-folder {
2596
- cursor: default;
2597
- color: var(--u-fg-0);
2598
- align-items: center;
2599
- gap: 0;
2600
- padding: 2px 0;
2601
- font-weight: 600;
2602
- display: flex;
2603
- }
2604
-
2605
- .tp-row.ds-folder > button {
2606
- color: inherit;
2607
- font: inherit;
2608
- cursor: pointer;
2609
- background: none;
2610
- border: 0;
2611
- align-items: center;
2612
- padding: 0;
2613
- display: inline-flex;
2614
- }
2615
-
2616
- .tp-row.ds-folder > button:focus-visible {
2617
- box-shadow: var(--shadow-focus);
2618
- z-index: 1;
2619
- outline: none;
2620
- position: relative;
2621
- }
2622
-
2623
- .tp-row.ds-folder .ds-folder-chev {
2624
- flex: none;
2625
- padding: 0 4px;
2626
- }
2627
-
2628
- .tp-row.ds-folder .ds-folder-chev .glyph {
2629
- text-align: center;
2630
- width: 12px;
2631
- color: var(--u-fg-1);
2632
- font-size: 10px;
2633
- display: inline-block;
2634
- }
2635
-
2636
- .tp-row.ds-folder .ds-folder-chev:hover .glyph {
2637
- color: var(--u-fg-0);
2638
- }
2639
-
2640
- .tp-row.ds-folder .ds-folder-open {
2641
- min-width: 0;
2642
- padding: 0 var(--u-s-3) 0 0;
2643
- text-align: left;
2644
- flex: 1;
2645
- }
2646
-
2647
- .tp-row.ds-folder .ds-folder-open .name {
2648
- text-overflow: ellipsis;
2649
- white-space: nowrap;
2650
- overflow: hidden;
2651
- }
2652
-
2653
- .tp-row.ds-folder .ds-folder-open:hover {
2654
- color: var(--u-accent);
2655
- }
2656
-
2657
- .tp-row.ds-folder.sel {
2658
- background: var(--u-accent-bg);
2659
- }
2660
-
2661
- .tp-row.ds-folder.sel .ds-folder-open .name {
2662
- color: var(--u-fg-0);
2663
- }
2664
-
2665
- .tp-section-hd.section-toggle {
2666
- cursor: pointer;
2667
- text-align: left;
2668
- width: 100%;
2669
- font: inherit;
2670
- letter-spacing: var(--tracking-sku);
2671
- text-transform: uppercase;
2672
- font-family: var(--u-font-mono);
2673
- color: var(--u-fg-1);
2674
- transition: background var(--dur-flip) var(--ease-out);
2675
- background: none;
2676
- border: 0;
2677
- align-items: center;
2678
- font-size: 9px;
2679
- font-weight: 700;
2680
- }
2681
-
2682
- .tp-section-hd.section-toggle:hover {
2683
- background: var(--u-bg-2);
2684
- color: var(--u-fg-0);
2685
- }
2686
-
2687
- .tp-section-hd.section-toggle:focus-visible {
2688
- box-shadow: var(--shadow-focus);
2689
- outline: none;
2690
- }
2691
-
2692
- .tp-section-hd.section-toggle .chev {
2693
- text-align: center;
2694
- width: 12px;
2695
- color: var(--u-fg-2);
2696
- flex: none;
2697
- font-size: 10px;
2698
- display: inline-block;
2699
- }
2700
-
2701
- .tp-section-hd.section-toggle .section-label {
2702
- text-overflow: ellipsis;
2703
- white-space: nowrap;
2704
- flex: 1;
2705
- min-width: 0;
2706
- overflow: hidden;
2707
- }
2708
- }
2709
-
2710
- @layer utilities;