@dfosco/storyboard 0.7.1 → 0.9.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 (323) hide show
  1. package/dist/storyboard-ui.css +1 -1
  2. package/dist/storyboard-ui.js +14128 -10953
  3. package/dist/storyboard-ui.js.map +1 -1
  4. package/dist/tailwind.css +1 -1
  5. package/dist/tiny-canvas.css +1 -1
  6. package/package.json +138 -128
  7. package/scaffold/AGENTS.md +9 -7
  8. package/scaffold/README.md +18 -0
  9. package/scaffold/deploy.yml +21 -0
  10. package/scaffold/gitignore +8 -14
  11. package/scaffold/preview.yml +40 -0
  12. package/scaffold/{manifest.json → scaffold.config.json} +73 -3
  13. package/scaffold/scripts/aggregate-artifacts.mjs +257 -0
  14. package/scaffold/skills/canvas/SKILL.md +1 -1
  15. package/scaffold/skills/migrate-0.5.0/SKILL.md +1 -1
  16. package/scaffold/skills/ship/SKILL.md +2 -2
  17. package/scaffold/skills/worktree/SKILL.md +1 -1
  18. package/scaffold/src/_prototype.jsx +17 -0
  19. package/scaffold/src/_story.jsx +13 -0
  20. package/scaffold/src/library/README.md +34 -0
  21. package/scaffold/src/library/_app.jsx +41 -0
  22. package/scaffold/src/library/_app.module.css +2 -0
  23. package/scaffold/src/library/create.jsx +10 -0
  24. package/scaffold/src/library/index.jsx +14 -0
  25. package/scaffold/src/library/mount.jsx +51 -0
  26. package/scaffold/src/library/prototypes-entry.jsx +57 -0
  27. package/scaffold/src/library/routes.jsx +205 -0
  28. package/scaffold/src/library/viewfinder.jsx +13 -0
  29. package/scaffold/src/library/workspace.jsx +17 -0
  30. package/scripts/aggregate-artifacts.mjs +257 -0
  31. package/src/canvas/style.css +16 -16
  32. package/src/core/artifact/operations.js +54 -15
  33. package/src/core/artifact/schemas/canvas.schema.json +7 -1
  34. package/src/core/autosync/server.test.js +1 -1
  35. package/src/core/canvas/hot-pool.js +21 -33
  36. package/src/core/canvas/materializer.js +39 -13
  37. package/src/core/canvas/selectedWidgets.js +1 -1
  38. package/src/core/canvas/server.js +376 -100
  39. package/src/core/canvas/server.test.js +472 -2
  40. package/src/core/canvas/terminal-server.js +144 -57
  41. package/src/core/canvas/undoRedo.js +174 -0
  42. package/src/core/canvas/undoRedo.test.js +250 -0
  43. package/src/core/cli/artifact.js +2 -0
  44. package/src/core/cli/buildManifest.js +34 -0
  45. package/src/core/cli/canvasRedo.js +44 -0
  46. package/src/core/cli/canvasUndo.js +40 -0
  47. package/src/core/cli/create.js +151 -23
  48. package/src/core/cli/dev.js +23 -35
  49. package/src/core/cli/index.js +21 -0
  50. package/src/core/cli/schemas.js +8 -4
  51. package/src/core/cli/serverUrl.js +24 -0
  52. package/src/core/cli/setup.js +14 -25
  53. package/src/core/cli/terminal-welcome.js +12 -6
  54. package/src/core/cli/updateVersion.js +42 -2
  55. package/src/core/cli/workleaf.js +140 -0
  56. package/src/core/comments/api.js +1 -1
  57. package/src/core/comments/queries.js +3 -0
  58. package/src/core/comments/ui/CommentWindow.jsx +3 -2
  59. package/src/core/comments/ui/comment-layout.css +14 -14
  60. package/src/core/data/artifactIndex.js +235 -0
  61. package/src/core/data/artifactIndex.test.js +203 -0
  62. package/src/core/data/artifactManifest.js +290 -0
  63. package/src/core/data/artifactManifest.test.js +207 -0
  64. package/src/core/data/viewfinder.js +47 -7
  65. package/src/core/index.js +24 -1
  66. package/src/core/inspector/highlighter.js +1 -1
  67. package/src/core/inspector/mouseMode.js +2 -2
  68. package/src/core/lib/components/ui/avatar/avatar-fallback.jsx +2 -2
  69. package/src/core/lib/components/ui/avatar/avatar-image.jsx +2 -2
  70. package/src/core/lib/components/ui/avatar/avatar.jsx +2 -2
  71. package/src/core/lib/components/ui/checkbox/checkbox.jsx +12 -9
  72. package/src/core/lib/components/ui/dialog/dialog-content.jsx +45 -31
  73. package/src/core/lib/components/ui/dialog/dialog-trigger.jsx +9 -5
  74. package/src/core/lib/components/ui/dialog/dialog.jsx +12 -3
  75. package/src/core/lib/components/ui/dialog/dialog.module.css +118 -0
  76. package/src/core/lib/components/ui/dialog/index.js +4 -34
  77. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.jsx +3 -3
  78. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.jsx +19 -9
  79. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-content.jsx +8 -8
  80. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.jsx +2 -2
  81. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-group.jsx +2 -2
  82. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-item.jsx +15 -4
  83. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-portal.jsx +2 -2
  84. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.jsx +2 -2
  85. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.jsx +14 -7
  86. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-separator.jsx +2 -2
  87. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.jsx +8 -4
  88. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.jsx +4 -4
  89. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-sub.jsx +2 -2
  90. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-trigger.jsx +8 -2
  91. package/src/core/lib/components/ui/dropdown-menu/dropdown-menu.jsx +2 -2
  92. package/src/core/lib/components/ui/label/label.jsx +1 -2
  93. package/src/core/lib/components/ui/panel/panel-close.jsx +7 -4
  94. package/src/core/lib/components/ui/panel/panel-content.jsx +7 -9
  95. package/src/core/lib/components/ui/panel/panel-title.jsx +3 -3
  96. package/src/core/lib/components/ui/panel/panel.jsx +11 -2
  97. package/src/core/lib/components/ui/separator/separator.jsx +6 -4
  98. package/src/core/lib/components/ui/tooltip/tooltip-content.jsx +7 -6
  99. package/src/core/lib/components/ui/tooltip/tooltip-trigger.jsx +13 -6
  100. package/src/core/lib/components/ui/tooltip/tooltip.jsx +5 -5
  101. package/src/core/modes/modes.css +4 -4
  102. package/src/core/mountStoryboardCore.js +287 -83
  103. package/src/core/mountStoryboardCore.test.js +198 -0
  104. package/src/core/rename-watcher/config.json +1 -1
  105. package/src/core/rename-watcher/watcher.js +330 -37
  106. package/src/core/rename-watcher/watcher.test.js +253 -0
  107. package/src/core/scaffold/fragments.js +287 -0
  108. package/src/core/scaffold/fragments.test.js +401 -0
  109. package/src/core/scaffold/index.js +291 -0
  110. package/src/core/scaffold/migrateLegacyGitignore.js +157 -0
  111. package/src/core/scaffold/scaffold-integration.test.js +247 -0
  112. package/src/core/scaffold.js +4 -97
  113. package/src/core/stores/canvasInteractionStore.js +120 -0
  114. package/src/core/stores/canvasInteractionStore.test.js +126 -0
  115. package/src/core/stores/configSchema.js +64 -8
  116. package/src/core/stores/configSchema.test.js +3 -0
  117. package/src/core/stores/customerModeConfig.js +24 -3
  118. package/src/core/stores/customerModeConfig.test.js +46 -0
  119. package/src/core/stores/presentationStore.js +118 -0
  120. package/src/core/stores/presentationStore.test.js +114 -0
  121. package/src/core/stores/recentArtifacts.js +49 -2
  122. package/src/core/stores/recentArtifacts.test.js +59 -6
  123. package/src/core/stores/themeBootstrap.js +264 -0
  124. package/src/core/stores/themeBootstrap.test.js +211 -0
  125. package/src/core/stores/themeStore.test.js +154 -0
  126. package/src/core/stores/themeStore.ts +235 -220
  127. package/src/core/stores/uiConfig.js +10 -2
  128. package/src/core/styles/generateThemesCss.js +63 -0
  129. package/src/core/styles/tailwind.css +150 -94
  130. package/src/core/styles/workspace-chrome.css +13 -0
  131. package/src/core/tools/handlers/paletteTheme.js +11 -8
  132. package/src/core/ui/ActionMenuButton.jsx +2 -1
  133. package/src/core/ui/AutosyncMenuButton.css +7 -7
  134. package/src/core/ui/BranchSelect.module.css +5 -5
  135. package/src/core/ui/CanvasCreateMenu.jsx +1 -19
  136. package/src/core/ui/ChromeSlot.jsx +92 -0
  137. package/src/core/ui/ChromeSlot.test.jsx +140 -0
  138. package/src/core/ui/CoreUIBar.css +5 -5
  139. package/src/core/ui/CoreUIBar.jsx +170 -142
  140. package/src/core/ui/InspectorPanel.css +5 -5
  141. package/src/core/ui/InspectorPanel.jsx +9 -9
  142. package/src/core/ui/PwaInstallBanner.css +5 -5
  143. package/src/core/ui/PwaInstallBanner.jsx +5 -5
  144. package/src/core/ui/ThemeMenuButton.jsx +45 -30
  145. package/src/core/ui/core-ui-colors.css +28 -66
  146. package/src/core/ui/sidepanel.css +12 -12
  147. package/src/core/vite/server-plugin.js +13 -0
  148. package/src/core/workleaf/cleanup.js +102 -0
  149. package/src/core/workleaf/create.js +199 -0
  150. package/src/core/workleaf/delete.js +101 -0
  151. package/src/core/workleaf/list.js +57 -0
  152. package/src/core/workleaf/merge.js +238 -0
  153. package/src/core/workleaf/paths.js +146 -0
  154. package/src/core/workleaf/paths.test.js +230 -0
  155. package/src/core/workshop/features/createCanvas/CreateCanvasForm.jsx +130 -34
  156. package/src/core/workshop/features/createFlow/server.js +5 -1
  157. package/src/core/workshop/features/createPrototype/server.js +5 -1
  158. package/src/core/workshop/features/templateIndex.js +28 -1
  159. package/src/core/worktree/port.js +48 -5
  160. package/src/core/worktree/port.test.js +42 -0
  161. package/src/internals/ArtifactForm/ArtifactForm.jsx +173 -112
  162. package/src/internals/ArtifactForm/ArtifactForm.module.css +51 -69
  163. package/src/internals/ArtifactForm/artifactSchemas.js +40 -5
  164. package/src/internals/AuthModal/AuthModal.module.css +34 -34
  165. package/src/internals/BaseUiForm/BaseUiForm.jsx +293 -0
  166. package/src/internals/BaseUiForm/BaseUiForm.module.css +542 -0
  167. package/src/internals/BranchBar/BranchBar.module.css +4 -4
  168. package/src/internals/BranchesDropdown/BranchesDropdown.jsx +69 -0
  169. package/src/internals/BranchesDropdown/BranchesDropdown.module.css +84 -0
  170. package/src/internals/CommandPalette/CommandPalette.jsx +41 -29
  171. package/src/internals/CommandPalette/CreateArtifactForm.jsx +150 -0
  172. package/src/internals/CommandPalette/CreateDialog.jsx +20 -110
  173. package/src/internals/CommandPalette/WidgetArtifactDialog.css +16 -16
  174. package/src/internals/CommandPalette/WidgetArtifactDialog.jsx +1 -1
  175. package/src/internals/CommandPalette/command-palette.css +14 -14
  176. package/src/internals/CommandPalette/createHelpers.js +30 -0
  177. package/src/internals/CreatePage/CreatePage.jsx +57 -0
  178. package/src/internals/CreatePage/CreatePage.module.css +34 -0
  179. package/src/internals/Dialog.jsx +51 -0
  180. package/src/internals/FlowError.module.css +5 -5
  181. package/src/internals/PrototypeErrorBoundary.module.css +15 -15
  182. package/src/internals/SimpleWorkspace/SimpleWorkspace.jsx +534 -0
  183. package/src/internals/SimpleWorkspace/SimpleWorkspace.module.css +323 -0
  184. package/src/internals/Tooltip.jsx +39 -0
  185. package/src/internals/Viewfinder.jsx +229 -64
  186. package/src/internals/Viewfinder.module.css +253 -182
  187. package/src/internals/canvas/CanvasControls.module.css +11 -11
  188. package/src/internals/canvas/CanvasPage.bridge.test.jsx +11 -37
  189. package/src/internals/canvas/CanvasPage.jsx +358 -217
  190. package/src/internals/canvas/CanvasPage.module.css +20 -19
  191. package/src/internals/canvas/CanvasPage.multiselect.test.jsx +39 -26
  192. package/src/internals/canvas/CanvasToolbar.module.css +11 -11
  193. package/src/internals/canvas/ConnectorLayer.jsx +39 -2
  194. package/src/internals/canvas/ConnectorLayer.module.css +10 -10
  195. package/src/internals/canvas/PageSelector.jsx +15 -1
  196. package/src/internals/canvas/PageSelector.module.css +41 -27
  197. package/src/internals/canvas/canvasApi.js +40 -5
  198. package/src/internals/canvas/canvasTheme.js +22 -111
  199. package/src/internals/canvas/isolation/createIsolationMiddleware.js +68 -0
  200. package/src/internals/canvas/isolation/mountIsolationApp.jsx +88 -0
  201. package/src/internals/canvas/isolation/prototypeRoutes.jsx +140 -0
  202. package/src/internals/canvas/isolation/prototypesEntry.jsx +28 -0
  203. package/src/internals/canvas/isolation/storiesEntry.jsx +20 -0
  204. package/src/internals/canvas/isolation/storyRoutes.jsx +55 -0
  205. package/src/internals/canvas/useUndoRedo.js +75 -60
  206. package/src/internals/canvas/useUndoRedo.test.js +46 -178
  207. package/src/internals/canvas/widgets/CodePenEmbed.jsx +16 -36
  208. package/src/internals/canvas/widgets/CodePenEmbed.module.css +12 -12
  209. package/src/internals/canvas/widgets/CropOverlay.module.css +23 -23
  210. package/src/internals/canvas/widgets/ExpandedPane.module.css +8 -8
  211. package/src/internals/canvas/widgets/ExpandedPaneTopBar.jsx +1 -1
  212. package/src/internals/canvas/widgets/FigmaEmbed.jsx +15 -36
  213. package/src/internals/canvas/widgets/FigmaEmbed.module.css +15 -15
  214. package/src/internals/canvas/widgets/FrozenTerminalOverlay.jsx +30 -21
  215. package/src/internals/canvas/widgets/FrozenTerminalOverlay.module.css +5 -5
  216. package/src/internals/canvas/widgets/ImageWidget.jsx +7 -2
  217. package/src/internals/canvas/widgets/ImageWidget.module.css +3 -3
  218. package/src/internals/canvas/widgets/LinkPreview.module.css +79 -80
  219. package/src/internals/canvas/widgets/MarkdownBlock.module.css +31 -31
  220. package/src/internals/canvas/widgets/PromptWidget.jsx +2 -16
  221. package/src/internals/canvas/widgets/PromptWidget.module.css +33 -33
  222. package/src/internals/canvas/widgets/PrototypeEmbed.jsx +92 -17
  223. package/src/internals/canvas/widgets/PrototypeEmbed.module.css +58 -56
  224. package/src/internals/canvas/widgets/PrototypeEmbed.test.jsx +118 -4
  225. package/src/internals/canvas/widgets/ResizeHandle.module.css +4 -4
  226. package/src/internals/canvas/widgets/StorySetWidget.jsx +53 -25
  227. package/src/internals/canvas/widgets/StoryWidget.jsx +71 -56
  228. package/src/internals/canvas/widgets/StoryWidget.module.css +22 -20
  229. package/src/internals/canvas/widgets/TerminalReadWidget.jsx +13 -15
  230. package/src/internals/canvas/widgets/TerminalReadWidget.module.css +4 -4
  231. package/src/internals/canvas/widgets/TerminalWidget.jsx +56 -45
  232. package/src/internals/canvas/widgets/TerminalWidget.module.css +10 -10
  233. package/src/internals/canvas/widgets/TilesWidget.module.css +17 -17
  234. package/src/internals/canvas/widgets/WidgetChrome.jsx +1 -1
  235. package/src/internals/canvas/widgets/WidgetChrome.module.css +76 -61
  236. package/src/internals/canvas/widgets/WidgetWrapper.module.css +2 -2
  237. package/src/internals/canvas/widgets/embedOverlay.module.css +14 -4
  238. package/src/internals/canvas/widgets/embedTheme.js +12 -104
  239. package/src/internals/canvas/widgets/expandUtils.js +19 -19
  240. package/src/internals/canvas/widgets/normalizeLegacyEmbedSrc.js +74 -0
  241. package/src/internals/canvas/widgets/widgetConfig.js +5 -5
  242. package/src/internals/context.jsx +22 -1
  243. package/src/internals/context.test.jsx +47 -0
  244. package/src/internals/hooks/useArtifactIndex.js +31 -0
  245. package/src/internals/hooks/useArtifactIndex.test.js +45 -0
  246. package/src/internals/hooks/usePrototypeReloadGuard.js +14 -8
  247. package/src/internals/index.js +6 -0
  248. package/src/internals/loadConsumerWrapper.js +60 -0
  249. package/src/internals/story/ComponentSetPage.jsx +75 -34
  250. package/src/internals/story/ComponentSetPage.module.css +14 -14
  251. package/src/internals/story/StoryPage.jsx +16 -25
  252. package/src/internals/story/StoryPage.module.css +2 -2
  253. package/src/internals/vite/data-plugin.js +317 -149
  254. package/src/internals/vite/data-plugin.test.js +11 -11
  255. package/{scaffold/storyboard.config.json → storyboard.config.json} +25 -0
  256. package/terminal.config.json +1 -1
  257. package/src/core/lib/components/ui/card/card-action.jsx +0 -11
  258. package/src/core/lib/components/ui/card/card-content.jsx +0 -11
  259. package/src/core/lib/components/ui/card/card-description.jsx +0 -11
  260. package/src/core/lib/components/ui/card/card-footer.jsx +0 -11
  261. package/src/core/lib/components/ui/card/card-header.jsx +0 -19
  262. package/src/core/lib/components/ui/card/card-title.jsx +0 -11
  263. package/src/core/lib/components/ui/card/card.jsx +0 -17
  264. package/src/core/lib/components/ui/card/index.js +0 -25
  265. package/src/core/lib/components/ui/collapsible/collapsible-content.jsx +0 -7
  266. package/src/core/lib/components/ui/collapsible/collapsible-trigger.jsx +0 -7
  267. package/src/core/lib/components/ui/collapsible/collapsible.jsx +0 -7
  268. package/src/core/lib/components/ui/collapsible/index.js +0 -13
  269. package/src/core/lib/components/ui/dialog/dialog-close.jsx +0 -7
  270. package/src/core/lib/components/ui/dialog/dialog-description.jsx +0 -15
  271. package/src/core/lib/components/ui/dialog/dialog-footer.jsx +0 -23
  272. package/src/core/lib/components/ui/dialog/dialog-header.jsx +0 -11
  273. package/src/core/lib/components/ui/dialog/dialog-overlay.jsx +0 -15
  274. package/src/core/lib/components/ui/dialog/dialog-portal.jsx +0 -4
  275. package/src/core/lib/components/ui/dialog/dialog-title.jsx +0 -15
  276. package/src/core/lib/components/ui/popover/index.js +0 -28
  277. package/src/core/lib/components/ui/popover/popover-close.jsx +0 -7
  278. package/src/core/lib/components/ui/popover/popover-content.jsx +0 -22
  279. package/src/core/lib/components/ui/popover/popover-description.jsx +0 -11
  280. package/src/core/lib/components/ui/popover/popover-header.jsx +0 -11
  281. package/src/core/lib/components/ui/popover/popover-portal.jsx +0 -4
  282. package/src/core/lib/components/ui/popover/popover-title.jsx +0 -11
  283. package/src/core/lib/components/ui/popover/popover-trigger.jsx +0 -8
  284. package/src/core/lib/components/ui/popover/popover.jsx +0 -4
  285. package/src/core/lib/components/ui/select/index.js +0 -37
  286. package/src/core/lib/components/ui/select/select-content.jsx +0 -30
  287. package/src/core/lib/components/ui/select/select-group-heading.jsx +0 -17
  288. package/src/core/lib/components/ui/select/select-group.jsx +0 -15
  289. package/src/core/lib/components/ui/select/select-item.jsx +0 -26
  290. package/src/core/lib/components/ui/select/select-label.jsx +0 -11
  291. package/src/core/lib/components/ui/select/select-portal.jsx +0 -4
  292. package/src/core/lib/components/ui/select/select-scroll-down-button.jsx +0 -18
  293. package/src/core/lib/components/ui/select/select-scroll-up-button.jsx +0 -18
  294. package/src/core/lib/components/ui/select/select-separator.jsx +0 -15
  295. package/src/core/lib/components/ui/select/select-trigger.jsx +0 -25
  296. package/src/core/lib/components/ui/select/select.jsx +0 -4
  297. package/src/core/lib/components/ui/sheet/index.js +0 -34
  298. package/src/core/lib/components/ui/sheet/sheet-close.jsx +0 -7
  299. package/src/core/lib/components/ui/sheet/sheet-content.jsx +0 -35
  300. package/src/core/lib/components/ui/sheet/sheet-description.jsx +0 -15
  301. package/src/core/lib/components/ui/sheet/sheet-footer.jsx +0 -11
  302. package/src/core/lib/components/ui/sheet/sheet-header.jsx +0 -11
  303. package/src/core/lib/components/ui/sheet/sheet-overlay.jsx +0 -15
  304. package/src/core/lib/components/ui/sheet/sheet-portal.jsx +0 -4
  305. package/src/core/lib/components/ui/sheet/sheet-title.jsx +0 -15
  306. package/src/core/lib/components/ui/sheet/sheet-trigger.jsx +0 -7
  307. package/src/core/lib/components/ui/sheet/sheet.jsx +0 -4
  308. package/src/core/lib/components/ui/toggle/index.js +0 -8
  309. package/src/core/lib/components/ui/toggle/toggle.jsx +0 -36
  310. package/src/core/lib/components/ui/toggle-group/index.js +0 -10
  311. package/src/core/lib/components/ui/toggle-group/toggle-group-item.jsx +0 -29
  312. package/src/core/lib/components/ui/toggle-group/toggle-group.jsx +0 -43
  313. package/src/internals/canvas/StoryErrorBoundary.jsx +0 -47
  314. package/src/internals/canvas/WebGLContextPool.jsx +0 -291
  315. package/src/internals/canvas/WebGLContextPool.test.jsx +0 -165
  316. package/src/internals/canvas/componentIsolate.jsx +0 -144
  317. package/src/internals/canvas/componentSetIsolate.jsx +0 -300
  318. package/src/internals/canvas/widgets/ComponentSetWidget.module.css +0 -89
  319. package/src/internals/canvas/widgets/InlineStoryRenderer.jsx +0 -129
  320. package/src/internals/canvas/widgets/InlineStoryRenderer.test.jsx +0 -68
  321. package/src/internals/canvas/widgets/StorySetWidget.module.css +0 -89
  322. package/src/primer/ThemeSync.jsx +0 -73
  323. package/src/primer/index.js +0 -1
@@ -5,8 +5,8 @@
5
5
  flex-direction: column;
6
6
  height: calc(100vh - var(--sb-branch-bar-height, 0px));
7
7
  font-family: 'Mona Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
8
- color: var(--fgColor-default, #1a1a1a);
9
- background: var(--bgColor-inset, #fafafa);
8
+ color: var(--color-foreground, #1a1a1a);
9
+ background: var(--color-background-inset, #fafafa);
10
10
  }
11
11
 
12
12
  /* ─── Full-width header ─── */
@@ -16,8 +16,8 @@
16
16
  align-items: center;
17
17
  justify-content: space-between;
18
18
  padding: 16px 24px;
19
- border-bottom: 1px solid var(--borderColor-default, #e5e5e5);
20
- background: var(--bgColor-default, #fff);
19
+ border-bottom: 1px solid var(--color-border, #e5e5e5);
20
+ background: var(--color-background, #fff);
21
21
  flex-shrink: 0;
22
22
  }
23
23
 
@@ -30,26 +30,26 @@
30
30
  .logo {
31
31
  width: 48px;
32
32
  height: 48px;
33
- background: var(--bgColor-emphasis, #313131);
33
+ background: var(--color-background-emphasis, #313131);
34
34
  border-radius: 8px;
35
35
  transform: rotate(-1deg);
36
36
  display: flex;
37
37
  align-items: center;
38
38
  justify-content: center;
39
- color: var(--fgColor-onEmphasis, #fff);
39
+ color: var(--color-foreground-on-emphasis, #fff);
40
40
  flex-shrink: 0;
41
41
  }
42
42
 
43
43
  .appName {
44
44
  font-size: 24px;
45
45
  font-weight: 800;
46
- color: var(--fgColor-default, #1a1a1a);
46
+ color: var(--color-foreground, #1a1a1a);
47
47
  line-height: 1.1;
48
48
  }
49
49
 
50
50
  .appSubtitle {
51
51
  font-size: 16px;
52
- color: var(--fgColor-muted, #888);
52
+ color: var(--color-foreground-muted, #888);
53
53
  line-height: 1.3;
54
54
  margin-top: 4px;
55
55
  }
@@ -65,8 +65,8 @@
65
65
  align-items: center;
66
66
  gap: 6px;
67
67
  padding: 8px 20px;
68
- background: var(--bgColor-emphasis, #1a1a1a);
69
- color: var(--fgColor-onEmphasis, #fff);
68
+ background: var(--color-background-emphasis, #1a1a1a);
69
+ color: var(--color-foreground-on-emphasis, #fff);
70
70
  border: none;
71
71
  border-radius: 8px;
72
72
  font-size: 16px;
@@ -76,7 +76,7 @@
76
76
  }
77
77
 
78
78
  .createBtn:hover {
79
- background: var(--bgColor-emphasis, #333);
79
+ background: var(--color-background-emphasis, #333);
80
80
  }
81
81
 
82
82
  /* Branch dropdown */
@@ -85,7 +85,7 @@
85
85
  display: flex;
86
86
  align-items: center;
87
87
  gap: 6px;
88
- color: var(--fgColor-muted, #555);
88
+ color: var(--color-foreground-muted, #555);
89
89
  }
90
90
 
91
91
  .switchOverlay {
@@ -97,8 +97,8 @@
97
97
  align-items: center;
98
98
  justify-content: center;
99
99
  gap: 12px;
100
- background: var(--bgColor-default, #fff);
101
- color: var(--fgColor-muted, #555);
100
+ background: var(--color-background, #fff);
101
+ color: var(--color-foreground-muted, #555);
102
102
  font-size: 15px;
103
103
  font-weight: 500;
104
104
  }
@@ -106,8 +106,8 @@
106
106
  .switchSpinner {
107
107
  width: 24px;
108
108
  height: 24px;
109
- border: 3px solid var(--borderColor-default, #e5e5e5);
110
- border-top-color: var(--fgColor-accent, #2563eb);
109
+ border: 3px solid var(--color-border, #e5e5e5);
110
+ border-top-color: var(--color-foreground-accent, #2563eb);
111
111
  border-radius: 50%;
112
112
  animation: branchSpin 0.6s linear infinite;
113
113
  }
@@ -129,8 +129,8 @@
129
129
  .sidebar {
130
130
  width: 260px;
131
131
  min-width: 220px;
132
- background: var(--bgColor-default, #fff);
133
- border-right: 1px solid var(--borderColor-default, #e5e5e5);
132
+ background: var(--color-background, #fff);
133
+ border-right: 1px solid var(--color-border, #e5e5e5);
134
134
  display: flex;
135
135
  flex-direction: column;
136
136
  padding: 0;
@@ -156,7 +156,7 @@
156
156
  border-radius: 6px;
157
157
  font-size: 16px;
158
158
  font-weight: 500;
159
- color: var(--fgColor-muted, #555);
159
+ color: var(--color-foreground-muted, #555);
160
160
  cursor: pointer;
161
161
  border: none;
162
162
  background: none;
@@ -166,18 +166,18 @@
166
166
  }
167
167
 
168
168
  .navItem:hover {
169
- background: var(--bgColor-muted, #f5f5f5);
169
+ background: var(--color-background-muted, #f5f5f5);
170
170
  }
171
171
 
172
172
  .navItemActive {
173
173
  composes: navItem;
174
- background: var(--bgColor-neutral-muted, #f0f0f0);
175
- color: var(--fgColor-default, #1a1a1a);
174
+ background: var(--color-background-neutral-muted, #f0f0f0);
175
+ color: var(--color-foreground, #1a1a1a);
176
176
  font-weight: 600;
177
177
  }
178
178
 
179
179
  .navIcon {
180
- color: var(--fgColor-default, #1a1a1a);
180
+ color: var(--color-foreground, #1a1a1a);
181
181
  width: 18px;
182
182
  height: 18px;
183
183
  display: flex;
@@ -194,7 +194,7 @@
194
194
  .navCount {
195
195
  margin-left: auto;
196
196
  font-size: 14px;
197
- color: var(--fgColor-muted);
197
+ color: var(--color-foreground-muted);
198
198
  font-weight: 500;
199
199
  }
200
200
 
@@ -202,7 +202,7 @@
202
202
 
203
203
  .separator {
204
204
  height: 1px;
205
- background: var(--borderColor-default, #e5e5e5);
205
+ background: var(--color-border, #e5e5e5);
206
206
  margin: 8px 16px;
207
207
  }
208
208
 
@@ -212,7 +212,7 @@
212
212
  padding: 8px 20px 4px;
213
213
  font-size: 12px;
214
214
  font-weight: 600;
215
- color: var(--fgColor-muted, #999);
215
+ color: var(--color-foreground-muted, #999);
216
216
  text-transform: uppercase;
217
217
  letter-spacing: 0.5px;
218
218
  }
@@ -223,7 +223,7 @@
223
223
  gap: 8px;
224
224
  padding: 6px 20px;
225
225
  font-size: 16px;
226
- color: var(--fgColor-muted, #555);
226
+ color: var(--color-foreground-muted, #555);
227
227
  cursor: pointer;
228
228
  transition: background 0.1s;
229
229
  text-decoration: none;
@@ -231,18 +231,18 @@
231
231
 
232
232
  .starredItem:link,
233
233
  .starredItem:visited {
234
- color: var(--fgColor-muted, #555);
234
+ color: var(--color-foreground-muted, #555);
235
235
  text-decoration: none;
236
236
  }
237
237
 
238
238
  .starredItem:hover {
239
- background: var(--bgColor-muted, #f5f5f5);
239
+ background: var(--color-background-muted, #f5f5f5);
240
240
  }
241
241
 
242
242
  .starredEmpty {
243
243
  padding: 6px 20px;
244
244
  font-size: 14px;
245
- color: var(--fgColor-muted);
245
+ color: var(--color-foreground-muted);
246
246
  font-style: italic;
247
247
  }
248
248
 
@@ -260,7 +260,7 @@
260
260
 
261
261
  .sidebarFooter {
262
262
  flex-shrink: 0;
263
- border-top: 1px solid var(--borderColor-default, #e5e5e5);
263
+ border-top: 1px solid var(--color-border, #e5e5e5);
264
264
  padding: 12px;
265
265
  }
266
266
 
@@ -268,24 +268,24 @@
268
268
  width: 32px;
269
269
  height: 32px;
270
270
  border-radius: 50%;
271
- background: var(--bgColor-neutral-muted, #f0f0f0);
271
+ background: var(--color-background-neutral-muted, #f0f0f0);
272
272
  display: flex;
273
273
  align-items: center;
274
274
  justify-content: center;
275
275
  font-size: 16px;
276
- color: var(--fgColor-muted, #888);
276
+ color: var(--color-foreground-muted, #888);
277
277
  flex-shrink: 0;
278
278
  }
279
279
 
280
280
  .userName {
281
281
  font-size: 16px;
282
282
  font-weight: 500;
283
- color: var(--fgColor-default, #1a1a1a);
283
+ color: var(--color-foreground, #1a1a1a);
284
284
  }
285
285
 
286
286
  .userSub {
287
287
  font-size: 14px;
288
- color: var(--fgColor-muted, #999);
288
+ color: var(--color-foreground-muted, #999);
289
289
  }
290
290
 
291
291
  .loginBtn {
@@ -295,18 +295,18 @@
295
295
  width: 100%;
296
296
  padding: 8px 10px;
297
297
  background: none;
298
- border: 1px solid var(--borderColor-default, #e5e5e5);
298
+ border: 1px solid var(--color-border, #e5e5e5);
299
299
  border-radius: 8px;
300
300
  font-size: 16px;
301
- color: var(--fgColor-muted, #555);
301
+ color: var(--color-foreground-muted, #555);
302
302
  cursor: pointer;
303
303
  transition: all 0.15s;
304
304
  text-align: left;
305
305
  }
306
306
 
307
307
  .loginBtn:hover {
308
- background: var(--bgColor-muted, #f5f5f5);
309
- border-color: var(--borderColor-muted);
308
+ background: var(--color-background-muted, #f5f5f5);
309
+ border-color: var(--color-border-muted);
310
310
  }
311
311
 
312
312
  .userAvatar {
@@ -331,18 +331,18 @@
331
331
  min-width: 0;
332
332
  padding: 8px 10px;
333
333
  background: none;
334
- border: 1px solid var(--borderColor-default, #e5e5e5);
334
+ border: 1px solid var(--color-border, #e5e5e5);
335
335
  border-radius: 8px;
336
336
  font-size: 16px;
337
- color: var(--fgColor-muted, #555);
337
+ color: var(--color-foreground-muted, #555);
338
338
  cursor: pointer;
339
339
  transition: all 0.15s;
340
340
  text-align: left;
341
341
  }
342
342
 
343
343
  .userBtn:hover {
344
- background: var(--bgColor-muted, #f5f5f5);
345
- border-color: var(--borderColor-muted);
344
+ background: var(--color-background-muted, #f5f5f5);
345
+ border-color: var(--color-border-muted);
346
346
  }
347
347
 
348
348
  .userInfo {
@@ -361,17 +361,17 @@
361
361
  height: 36px;
362
362
  flex-shrink: 0;
363
363
  background: none;
364
- border: 1px solid var(--borderColor-default, #e5e5e5);
364
+ border: 1px solid var(--color-border, #e5e5e5);
365
365
  border-radius: 8px;
366
- color: var(--fgColor-muted, #888);
366
+ color: var(--color-foreground-muted, #888);
367
367
  cursor: pointer;
368
368
  transition: all 0.15s;
369
369
  }
370
370
 
371
371
  .gearBtn:hover {
372
- background: var(--bgColor-muted, #f5f5f5);
373
- border-color: var(--borderColor-muted);
374
- color: var(--fgColor-default, #333);
372
+ background: var(--color-background-muted, #f5f5f5);
373
+ border-color: var(--color-border-muted);
374
+ color: var(--color-foreground, #333);
375
375
  }
376
376
 
377
377
  /* ─── Settings Dialog ─── */
@@ -379,7 +379,7 @@
379
379
  .settingsBackdrop {
380
380
  position: fixed;
381
381
  inset: 0;
382
- background: var(--overlay-backdrop-bgColor, rgba(0, 0, 0, 0.4));
382
+ background: var(--color-overlay-backdrop, rgba(0, 0, 0, 0.4));
383
383
  z-index: 10000;
384
384
  }
385
385
 
@@ -398,15 +398,15 @@
398
398
  }
399
399
 
400
400
  .settingsPopup {
401
- background: var(--bgColor-default);
401
+ background: var(--color-background);
402
402
  border-radius: 12px;
403
- box-shadow: var(--shadow-overlay, 0 16px 48px rgba(0, 0, 0, 0.12));
403
+ box-shadow: var(--shadow-floating, 0 16px 48px rgba(0, 0, 0, 0.12));
404
404
  padding: 28px;
405
405
  max-width: 480px;
406
406
  width: 90vw;
407
407
  max-height: 90vh;
408
408
  overflow-y: auto;
409
- color: var(--fgColor-default);
409
+ color: var(--color-foreground);
410
410
  position: relative;
411
411
  }
412
412
 
@@ -414,7 +414,7 @@
414
414
  font-size: 18px;
415
415
  font-weight: 600;
416
416
  margin-bottom: 20px;
417
- color: var(--fgColor-default);
417
+ color: var(--color-foreground);
418
418
  padding-right: 32px;
419
419
  }
420
420
 
@@ -426,15 +426,15 @@
426
426
  border: none;
427
427
  font-size: 24px;
428
428
  line-height: 1;
429
- color: var(--fgColor-muted);
429
+ color: var(--color-foreground-muted);
430
430
  cursor: pointer;
431
431
  padding: 4px 8px;
432
432
  border-radius: 4px;
433
433
  }
434
434
 
435
435
  .settingsCloseBtn:hover {
436
- background: var(--bgColor-neutral-muted);
437
- color: var(--fgColor-default);
436
+ background: var(--color-background-neutral-muted);
437
+ color: var(--color-foreground);
438
438
  }
439
439
 
440
440
  .settingsSection {
@@ -447,15 +447,15 @@
447
447
  gap: 8px;
448
448
  font-size: 14px;
449
449
  font-weight: 600;
450
- color: var(--fgColor-muted);
450
+ color: var(--color-foreground-muted);
451
451
  text-transform: uppercase;
452
452
  letter-spacing: 0.03em;
453
453
  margin-bottom: 12px;
454
454
  }
455
455
 
456
456
  .settingsTokenCard {
457
- background: var(--bgColor-muted);
458
- border: 1px solid var(--borderColor-default);
457
+ background: var(--color-background-muted);
458
+ border: 1px solid var(--color-border);
459
459
  border-radius: 8px;
460
460
  padding: 14px 16px;
461
461
  }
@@ -466,20 +466,20 @@
466
466
  gap: 10px;
467
467
  font-size: 14px;
468
468
  line-height: 2;
469
- color: var(--fgColor-muted);
469
+ color: var(--color-foreground-muted);
470
470
  }
471
471
 
472
472
  .settingsTokenLabel {
473
473
  flex-shrink: 0;
474
474
  min-width: 90px;
475
475
  font-weight: 500;
476
- color: var(--fgColor-default);
476
+ color: var(--color-foreground);
477
477
  }
478
478
 
479
479
  .settingsTokenValue {
480
480
  font-family: 'SF Mono', SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;
481
481
  font-size: 13px;
482
- color: var(--fgColor-muted);
482
+ color: var(--color-foreground-muted);
483
483
  display: flex;
484
484
  flex-wrap: wrap;
485
485
  gap: 4px;
@@ -489,11 +489,11 @@
489
489
  .settingsScope {
490
490
  font-family: 'SF Mono', SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;
491
491
  font-size: 12px;
492
- color: var(--fgColor-default);
493
- background: var(--bgColor-default);
492
+ color: var(--color-foreground);
493
+ background: var(--color-background);
494
494
  padding: 1px 6px;
495
495
  border-radius: 4px;
496
- border: 1px solid var(--borderColor-default);
496
+ border: 1px solid var(--color-border);
497
497
  }
498
498
 
499
499
  .settingsRemoveBtn {
@@ -503,26 +503,26 @@
503
503
  margin-top: 12px;
504
504
  padding: 6px 12px;
505
505
  background: none;
506
- border: 1px solid var(--borderColor-danger-muted, #ff818266);
506
+ border: 1px solid var(--color-border-danger-muted, #ff818266);
507
507
  border-radius: 6px;
508
508
  font-size: 13px;
509
- color: var(--fgColor-danger, #d1242f);
509
+ color: var(--color-foreground-danger, #d1242f);
510
510
  cursor: pointer;
511
511
  transition: all 0.15s;
512
512
  }
513
513
 
514
514
  .settingsRemoveBtn:hover {
515
- background: var(--bgColor-danger-muted, #ffebe966);
516
- border-color: var(--borderColor-danger-emphasis, #cf222e);
515
+ background: var(--color-background-danger-muted, #ffebe966);
516
+ border-color: var(--color-border-danger-emphasis, #cf222e);
517
517
  }
518
518
 
519
519
  .settingsNoToken {
520
- background: var(--bgColor-muted);
521
- border: 1px solid var(--borderColor-default);
520
+ background: var(--color-background-muted);
521
+ border: 1px solid var(--color-border);
522
522
  border-radius: 8px;
523
523
  padding: 16px;
524
524
  text-align: center;
525
- color: var(--fgColor-muted);
525
+ color: var(--color-foreground-muted);
526
526
  font-size: 14px;
527
527
  }
528
528
 
@@ -535,19 +535,19 @@
535
535
  align-items: center;
536
536
  gap: 8px;
537
537
  padding: 8px 16px;
538
- background: var(--bgColor-default);
539
- border: 1px solid var(--borderColor-default);
538
+ background: var(--color-background);
539
+ border: 1px solid var(--color-border);
540
540
  border-radius: 6px;
541
541
  font-size: 14px;
542
542
  font-weight: 500;
543
- color: var(--fgColor-default);
543
+ color: var(--color-foreground);
544
544
  cursor: pointer;
545
545
  transition: all 0.15s;
546
546
  }
547
547
 
548
548
  .settingsSignInBtn:hover {
549
- background: var(--bgColor-muted);
550
- border-color: var(--borderColor-muted);
549
+ background: var(--color-background-muted);
550
+ border-color: var(--color-border-muted);
551
551
  }
552
552
 
553
553
  /* ─── Main Content ─── */
@@ -567,15 +567,15 @@
567
567
  gap: 0;
568
568
  min-height: 52px;
569
569
  padding: 0 32px;
570
- background: var(--bgColor-default, #fff);
571
- border-bottom: 1px solid var(--borderColor-default, #e5e5e5);
570
+ background: var(--color-background, #fff);
571
+ border-bottom: 1px solid var(--color-border, #e5e5e5);
572
572
  }
573
573
 
574
574
  .tab {
575
575
  padding: 11px 16px;
576
576
  font-size: 16px;
577
577
  font-weight: 500;
578
- color: var(--fgColor-muted, #888);
578
+ color: var(--color-foreground-muted, #888);
579
579
  border: none;
580
580
  background: none;
581
581
  cursor: pointer;
@@ -584,13 +584,13 @@
584
584
  }
585
585
 
586
586
  .tab:hover {
587
- color: var(--fgColor-default, #1a1a1a);
587
+ color: var(--color-foreground, #1a1a1a);
588
588
  }
589
589
 
590
590
  .tabActive {
591
591
  composes: tab;
592
- color: var(--fgColor-default, #1a1a1a);
593
- border-bottom-color: var(--fgColor-default, #1a1a1a);
592
+ color: var(--color-foreground, #1a1a1a);
593
+ border-bottom-color: var(--color-foreground, #1a1a1a);
594
594
  font-weight: 600;
595
595
  }
596
596
 
@@ -611,14 +611,14 @@
611
611
  padding: 48px 0;
612
612
  text-align: center;
613
613
  font-size: 16px;
614
- color: var(--fgColor-muted, #999);
614
+ color: var(--color-foreground-muted, #999);
615
615
  }
616
616
 
617
617
  /* Card */
618
618
 
619
619
  .card {
620
- background: var(--bgColor-default, #fff);
621
- border: 1px solid var(--borderColor-default, #e5e5e5);
620
+ background: var(--color-background, #fff);
621
+ border: 1px solid var(--color-border, #e5e5e5);
622
622
  border-radius: 10px;
623
623
  overflow: hidden;
624
624
  cursor: pointer;
@@ -629,7 +629,7 @@
629
629
  }
630
630
 
631
631
  .card:hover {
632
- border-color: var(--borderColor-muted, rgba(128, 128, 128, 0.3));
632
+ border-color: var(--color-border-muted, rgba(128, 128, 128, 0.3));
633
633
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.06);
634
634
  text-decoration: none !important;
635
635
  }
@@ -642,9 +642,26 @@
642
642
  color: inherit;
643
643
  }
644
644
 
645
+ .cardPrivate {
646
+ opacity: 0.8;
647
+ }
648
+
649
+ .cardPrivate:hover {
650
+ opacity: 1;
651
+ }
652
+
653
+ .branchOnlyCard {
654
+ background: var(--color-background-muted, #f6f8fa);
655
+ border-color: var(--color-border-muted, #d8dee4);
656
+ }
657
+
658
+ .branchOnlyCard:hover {
659
+ border-color: var(--color-border-accent-muted, #54aeff66);
660
+ }
661
+
645
662
  .cardThumb {
646
663
  height: 140px;
647
- background: var(--bgColor-muted, #f5f5f5);
664
+ background: var(--color-background-muted, #f5f5f5);
648
665
  display: flex;
649
666
  align-items: flex-start;
650
667
  justify-content: space-between;
@@ -659,8 +676,35 @@
659
676
  font-weight: 600;
660
677
  text-transform: uppercase;
661
678
  letter-spacing: 0.3px;
662
- background: var(--bgColor-neutral-muted, #f0f0f0);
663
- color: var(--fgColor-muted, #555);
679
+ background: var(--color-background-neutral-muted, #f0f0f0);
680
+ color: var(--color-foreground-muted, #555);
681
+ }
682
+
683
+ .branchOnlyBadge {
684
+ padding: 3px 8px;
685
+ border-radius: 999px;
686
+ font-size: 11px;
687
+ font-weight: 700;
688
+ text-transform: uppercase;
689
+ letter-spacing: 0.4px;
690
+ background: var(--color-background-accent-muted, #ddf4ff);
691
+ color: var(--color-foreground-accent, #0969da);
692
+ }
693
+
694
+ .cardPrivateBadge {
695
+ display: inline-flex;
696
+ align-items: center;
697
+ justify-content: center;
698
+ color: var(--color-foreground-muted, #656d76);
699
+ background: none;
700
+ border: none;
701
+ padding: 2px;
702
+ }
703
+
704
+ .cardBadgeGroup {
705
+ display: flex;
706
+ align-items: center;
707
+ gap: 6px;
664
708
  }
665
709
 
666
710
  /* Icon buttons (star, flows, etc.) */
@@ -675,23 +719,23 @@
675
719
  border: none;
676
720
  background: none;
677
721
  cursor: pointer;
678
- color: var(--fgColor-muted);
722
+ color: var(--color-foreground-muted);
679
723
  transition: all 0.15s;
680
724
  }
681
725
 
682
726
  .iconBtn:hover {
683
727
  background: rgba(0, 0, 0, 0.06);
684
- color: var(--fgColor-muted, #555);
728
+ color: var(--color-foreground-muted, #555);
685
729
  }
686
730
 
687
731
  .iconBtnActive {
688
732
  composes: iconBtn;
689
- color: var(--fgColor-attention, #f59e0b);
733
+ color: var(--color-foreground-attention, #f59e0b);
690
734
  }
691
735
 
692
736
  .iconBtnActive:hover {
693
737
  background: rgba(0, 0, 0, 0.06);
694
- color: var(--fgColor-attention, #d97706);
738
+ color: var(--color-foreground-attention, #d97706);
695
739
  }
696
740
 
697
741
  .cardActions {
@@ -715,7 +759,7 @@
715
759
  .cardTitle {
716
760
  font-size: 16px;
717
761
  font-weight: 600;
718
- color: var(--fgColor-default, #1a1a1a);
762
+ color: var(--color-foreground, #1a1a1a);
719
763
  margin-bottom: 4px;
720
764
  white-space: nowrap;
721
765
  overflow: hidden;
@@ -728,7 +772,7 @@
728
772
  align-items: center;
729
773
  gap: 6px;
730
774
  font-size: 14px;
731
- color: var(--fgColor-muted);
775
+ color: var(--color-foreground-muted);
732
776
  text-decoration: none;
733
777
  }
734
778
 
@@ -736,7 +780,7 @@
736
780
  width: 3px;
737
781
  height: 3px;
738
782
  border-radius: 50%;
739
- background: var(--borderColor-muted, #d1d5db);
783
+ background: var(--color-border-muted, #d1d5db);
740
784
  }
741
785
 
742
786
  /* Folder card */
@@ -747,11 +791,11 @@
747
791
 
748
792
  .folderThumb {
749
793
  height: 140px;
750
- background: var(--bgColor-accent-muted, #f0f4ff);
794
+ background: var(--color-background-accent-muted, #f0f4ff);
751
795
  display: flex;
752
796
  align-items: center;
753
797
  justify-content: center;
754
- color: var(--fgColor-accent, #54aeff);
798
+ color: var(--color-foreground-accent, #54aeff);
755
799
  }
756
800
 
757
801
  /* External badge */
@@ -762,7 +806,7 @@
762
806
  gap: 3px;
763
807
  margin-left: 6px;
764
808
  font-size: 12px;
765
- color: var(--fgColor-muted, #999);
809
+ color: var(--color-foreground-muted, #999);
766
810
  font-weight: 500;
767
811
  }
768
812
 
@@ -779,7 +823,7 @@
779
823
  }
780
824
 
781
825
  .createMenu {
782
- background: var(--bgColor-default, #fff);
826
+ background: var(--color-background, #fff);
783
827
  border-radius: 12px;
784
828
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.12);
785
829
  padding: 24px;
@@ -790,7 +834,7 @@
790
834
  .createMenuTitle {
791
835
  font-size: 18px;
792
836
  font-weight: 600;
793
- color: var(--fgColor-default, #1a1a1a);
837
+ color: var(--color-foreground, #1a1a1a);
794
838
  }
795
839
 
796
840
  .createMenuGrid {
@@ -804,17 +848,17 @@
804
848
  align-items: center;
805
849
  gap: 12px;
806
850
  padding: 12px 14px;
807
- border: 1px solid var(--borderColor-default, #e5e5e5);
851
+ border: 1px solid var(--color-border, #e5e5e5);
808
852
  border-radius: 8px;
809
- background: var(--bgColor-default, #fff);
853
+ background: var(--color-background, #fff);
810
854
  cursor: pointer;
811
855
  transition: all 0.15s;
812
856
  text-align: left;
813
857
  }
814
858
 
815
859
  .createMenuItem:hover {
816
- border-color: var(--borderColor-muted);
817
- background: var(--bgColor-inset, #fafafa);
860
+ border-color: var(--color-border-muted);
861
+ background: var(--color-background-inset, #fafafa);
818
862
  }
819
863
 
820
864
  .createMenuIcon {
@@ -826,19 +870,19 @@
826
870
  justify-content: center;
827
871
  font-size: 24px;
828
872
  flex-shrink: 0;
829
- background: var(--bgColor-neutral-muted, #f0f0f0);
830
- color: var(--fgColor-default, #1a1a1a);
873
+ background: var(--color-background-neutral-muted, #f0f0f0);
874
+ color: var(--color-foreground, #1a1a1a);
831
875
  }
832
876
 
833
877
  .createMenuItemTitle {
834
878
  font-size: 16px;
835
879
  font-weight: 600;
836
- color: var(--fgColor-default, #1a1a1a);
880
+ color: var(--color-foreground, #1a1a1a);
837
881
  }
838
882
 
839
883
  .createMenuItemDesc {
840
884
  font-size: 14px;
841
- color: var(--fgColor-muted, #999);
885
+ color: var(--color-foreground-muted, #999);
842
886
  }
843
887
 
844
888
  /* Create form styles */
@@ -859,13 +903,13 @@
859
903
  background: none;
860
904
  border: none;
861
905
  border-radius: 6px;
862
- color: var(--fgColor-muted, #888);
906
+ color: var(--color-foreground-muted, #888);
863
907
  cursor: pointer;
864
908
  }
865
909
 
866
910
  .createFormClose:hover {
867
- color: var(--fgColor-default, #1a1a1a);
868
- background: var(--bgColor-neutral-muted, #f0f0f0);
911
+ color: var(--color-foreground, #1a1a1a);
912
+ background: var(--color-background-neutral-muted, #f0f0f0);
869
913
  }
870
914
 
871
915
  .createFormField {
@@ -882,7 +926,7 @@
882
926
  .createFormInput {
883
927
  width: 100%;
884
928
  padding: 8px 12px;
885
- border: 1px solid var(--borderColor-default, #e5e5e5);
929
+ border: 1px solid var(--color-border, #e5e5e5);
886
930
  border-radius: 6px;
887
931
  font-size: 16px;
888
932
  box-sizing: border-box;
@@ -890,7 +934,7 @@
890
934
 
891
935
  .createFormInput:focus {
892
936
  outline: none;
893
- border-color: var(--fgColor-muted, #999);
937
+ border-color: var(--color-foreground-muted, #999);
894
938
  }
895
939
 
896
940
  .createFormCheckbox {
@@ -907,8 +951,8 @@
907
951
  .createFormSubmit {
908
952
  width: 100%;
909
953
  padding: 12px 16px;
910
- background: var(--fgColor-default, #1a1a1a);
911
- color: var(--bgColor-default, #fff);
954
+ background: var(--color-foreground, #1a1a1a);
955
+ color: var(--color-background, #fff);
912
956
  border: none;
913
957
  border-radius: 10px;
914
958
  font-size: 16px;
@@ -932,35 +976,35 @@
932
976
  gap: 8px;
933
977
  margin-top: 16px;
934
978
  padding-top: 12px;
935
- border-top: 1px solid var(--borderColor-default, #e5e5e5);
979
+ border-top: 1px solid var(--color-border, #e5e5e5);
936
980
  }
937
981
 
938
982
  .createFooterDot {
939
983
  width: 8px;
940
984
  height: 8px;
941
985
  border-radius: 50%;
942
- background: var(--fgColor-accent, #2563eb);
986
+ background: var(--color-foreground-accent, #2563eb);
943
987
  flex-shrink: 0;
944
988
  }
945
989
 
946
990
  .createFooterText {
947
991
  font-size: 14px;
948
- color: var(--fgColor-muted, #999);
992
+ color: var(--color-foreground-muted, #999);
949
993
  }
950
994
 
951
995
  .createFormError {
952
996
  font-size: 14px;
953
- color: var(--fgColor-danger, #dc2626);
997
+ color: var(--color-foreground-danger, #dc2626);
954
998
  margin-top: 8px;
955
999
  }
956
1000
 
957
1001
  /* Muted thumbnail colors */
958
- .thumbBlue { background: var(--bgColor-accent-muted, #f0f4f8); }
959
- .thumbAmber { background: var(--bgColor-attention-muted, #faf5ee); }
960
- .thumbGreen { background: var(--bgColor-success-muted, #f0f7f4); }
961
- .thumbPurple { background: var(--bgColor-done-muted, #f5f0fa); }
962
- .thumbRose { background: var(--bgColor-danger-muted, #faf0f2); }
963
- .thumbSlate { background: var(--bgColor-neutral-muted, #f3f4f6); }
1002
+ .thumbBlue { background: var(--color-background-accent-muted, #f0f4f8); }
1003
+ .thumbAmber { background: var(--color-background-attention-muted, #faf5ee); }
1004
+ .thumbGreen { background: var(--color-background-success-muted, #f0f7f4); }
1005
+ .thumbPurple { background: var(--color-background-done-muted, #f5f0fa); }
1006
+ .thumbRose { background: var(--color-background-danger-muted, #faf0f2); }
1007
+ .thumbSlate { background: var(--color-background-neutral-muted, #f3f4f6); }
964
1008
 
965
1009
 
966
1010
  /* Group by folders checkbox */
@@ -971,7 +1015,7 @@
971
1015
  gap: 6px;
972
1016
  margin-left: auto;
973
1017
  font-size: 14px;
974
- color: var(--fgColor-muted, #555);
1018
+ color: var(--color-foreground-muted, #555);
975
1019
  cursor: pointer;
976
1020
  padding: 0 4px;
977
1021
  white-space: nowrap;
@@ -979,7 +1023,7 @@
979
1023
  }
980
1024
 
981
1025
  .groupByFoldersCheckbox {
982
- accent-color: var(--fgColor-default, #1a1a1a);
1026
+ accent-color: var(--color-foreground, #1a1a1a);
983
1027
  cursor: pointer;
984
1028
  }
985
1029
 
@@ -989,7 +1033,7 @@
989
1033
  margin-top: 24px;
990
1034
  padding-bottom: 24px;
991
1035
  margin-bottom: 24px;
992
- border-bottom: 1px solid var(--borderColor-default, #e5e5e5);
1036
+ border-bottom: 1px solid var(--color-border, #e5e5e5);
993
1037
  }
994
1038
 
995
1039
  .folderSectionCollapsed {
@@ -1018,17 +1062,17 @@
1018
1062
  cursor: pointer;
1019
1063
  font-size: 16px;
1020
1064
  font-weight: 600;
1021
- color: var(--fgColor-default, #1a1a1a);
1065
+ color: var(--color-foreground, #1a1a1a);
1022
1066
  width: 100%;
1023
1067
  text-align: left;
1024
1068
  }
1025
1069
 
1026
1070
  .folderHeader:hover {
1027
- color: var(--fgColor-muted, #555);
1071
+ color: var(--color-foreground-muted, #555);
1028
1072
  }
1029
1073
 
1030
1074
  .folderIcon {
1031
- color: var(--fgColor-default, #1a1a1a);
1075
+ color: var(--color-foreground, #1a1a1a);
1032
1076
  flex-shrink: 0;
1033
1077
  }
1034
1078
 
@@ -1036,14 +1080,33 @@
1036
1080
  flex: 1;
1037
1081
  }
1038
1082
 
1083
+ .folderSectionPrivate {
1084
+ opacity: 0.8;
1085
+ }
1086
+
1087
+ .folderSectionPrivate:hover {
1088
+ opacity: 1;
1089
+ }
1090
+
1091
+ .folderPrivateBadge {
1092
+ display: inline-flex;
1093
+ align-items: center;
1094
+ justify-content: center;
1095
+ color: var(--color-foreground-muted, #656d76);
1096
+ background: none;
1097
+ border: none;
1098
+ padding: 2px;
1099
+ margin-right: 6px;
1100
+ }
1101
+
1039
1102
  .folderCount {
1040
1103
  font-size: 14px;
1041
1104
  font-weight: 400;
1042
- color: var(--fgColor-muted, #999);
1105
+ color: var(--color-foreground-muted, #999);
1043
1106
  }
1044
1107
 
1045
1108
  .folderChevron {
1046
- color: var(--fgColor-muted, #999);
1109
+ color: var(--color-foreground-muted, #999);
1047
1110
  transition: transform 0.2s;
1048
1111
  }
1049
1112
 
@@ -1064,15 +1127,15 @@
1064
1127
  border: none;
1065
1128
  background: none;
1066
1129
  cursor: pointer;
1067
- color: var(--fgColor-muted, #999);
1130
+ color: var(--color-foreground-muted, #999);
1068
1131
  flex-shrink: 0;
1069
1132
  transition: all 0.15s;
1070
1133
  margin-top: 1px;
1071
1134
  }
1072
1135
 
1073
1136
  .flowsBtn:hover {
1074
- background: var(--bgColor-neutral-muted, #f0f0f0);
1075
- color: var(--fgColor-muted, #555);
1137
+ background: var(--color-background-neutral-muted, #f0f0f0);
1138
+ color: var(--color-foreground-muted, #555);
1076
1139
  }
1077
1140
 
1078
1141
  .flowsPositioner {
@@ -1080,8 +1143,8 @@
1080
1143
  }
1081
1144
 
1082
1145
  .flowsPopup {
1083
- background: var(--bgColor-default, #fff);
1084
- border: 1px solid var(--borderColor-default, #e5e5e5);
1146
+ background: var(--color-background, #fff);
1147
+ border: 1px solid var(--color-border, #e5e5e5);
1085
1148
  border-radius: 8px;
1086
1149
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
1087
1150
  min-width: 180px;
@@ -1093,7 +1156,7 @@
1093
1156
  padding: 6px 12px 4px;
1094
1157
  font-size: 12px;
1095
1158
  font-weight: 600;
1096
- color: var(--fgColor-muted, #999);
1159
+ color: var(--color-foreground-muted, #999);
1097
1160
  text-transform: uppercase;
1098
1161
  letter-spacing: 0.4px;
1099
1162
  }
@@ -1103,7 +1166,7 @@
1103
1166
  width: 100%;
1104
1167
  padding: 6px 12px;
1105
1168
  font-size: 14px;
1106
- color: var(--fgColor-muted, #555);
1169
+ color: var(--color-foreground-muted, #555);
1107
1170
  cursor: pointer;
1108
1171
  border: none;
1109
1172
  background: none;
@@ -1114,16 +1177,24 @@
1114
1177
 
1115
1178
  .flowsItem:hover,
1116
1179
  .flowsItem[data-highlighted] {
1117
- background: var(--bgColor-muted, #f5f5f5);
1118
- color: var(--fgColor-default, #1a1a1a);
1180
+ background: var(--color-background-muted, #f5f5f5);
1181
+ color: var(--color-foreground, #1a1a1a);
1119
1182
  }
1120
1183
 
1121
1184
  .flowsItemLink {
1122
- display: block;
1185
+ display: flex;
1186
+ align-items: center;
1187
+ gap: 6px;
1123
1188
  color: inherit;
1124
1189
  text-decoration: none;
1125
1190
  }
1126
1191
 
1192
+ .flowsItemPrivateIcon {
1193
+ color: var(--color-foreground-muted, #656d76);
1194
+ flex-shrink: 0;
1195
+ margin-left: auto;
1196
+ }
1197
+
1127
1198
  /* Avatar stack */
1128
1199
 
1129
1200
  .avatarStack {
@@ -1140,7 +1211,7 @@
1140
1211
  width: 24px;
1141
1212
  height: 24px;
1142
1213
  border-radius: 50%;
1143
- border: 2px solid var(--bgColor-default, #fff);
1214
+ border: 2px solid var(--color-background, #fff);
1144
1215
  object-fit: cover;
1145
1216
  flex-shrink: 0;
1146
1217
  }
@@ -1156,7 +1227,7 @@
1156
1227
 
1157
1228
  .cardDescription {
1158
1229
  font-size: 14px;
1159
- color: var(--fgColor-muted, #999);
1230
+ color: var(--color-foreground-muted, #999);
1160
1231
  line-height: 1.5;
1161
1232
  display: -webkit-box;
1162
1233
  -webkit-line-clamp: 2;
@@ -1179,8 +1250,8 @@
1179
1250
  }
1180
1251
 
1181
1252
  .createDropdown {
1182
- background: var(--bgColor-default, #fff);
1183
- border: 1px solid var(--borderColor-default, #e5e5e5);
1253
+ background: var(--color-background, #fff);
1254
+ border: 1px solid var(--color-border, #e5e5e5);
1184
1255
  border-radius: 12px;
1185
1256
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
1186
1257
  padding: 16px;
@@ -1193,7 +1264,7 @@
1193
1264
  font-size: 16px;
1194
1265
  font-weight: 600;
1195
1266
  margin-bottom: 12px;
1196
- color: var(--fgColor-default, #1a1a1a);
1267
+ color: var(--color-foreground, #1a1a1a);
1197
1268
  }
1198
1269
 
1199
1270
  .createDropdownGrid {
@@ -1214,7 +1285,7 @@
1214
1285
  gap: 4px;
1215
1286
  background: none;
1216
1287
  border: none;
1217
- color: var(--fgColor-muted);
1288
+ color: var(--color-foreground-muted);
1218
1289
  font-size: 14px;
1219
1290
  font-weight: 500;
1220
1291
  cursor: pointer;
@@ -1224,7 +1295,7 @@
1224
1295
  }
1225
1296
 
1226
1297
  .moreOptionsBtn:hover {
1227
- color: var(--fgColor-default, #1a1a1a);
1298
+ color: var(--color-foreground, #1a1a1a);
1228
1299
  }
1229
1300
 
1230
1301
  .moreOptionsSection {
@@ -1233,7 +1304,7 @@
1233
1304
  flex-direction: column;
1234
1305
  gap: 4px;
1235
1306
  padding-top: 8px;
1236
- border-top: 1px solid var(--borderColor-muted, #eee);
1307
+ border-top: 1px solid var(--color-border-muted, #eee);
1237
1308
  }
1238
1309
 
1239
1310
  .moreOptionItem {
@@ -1249,18 +1320,18 @@
1249
1320
  }
1250
1321
 
1251
1322
  .moreOptionItem:hover {
1252
- background: var(--bgColor-muted, #f5f5f5);
1323
+ background: var(--color-background-muted, #f5f5f5);
1253
1324
  }
1254
1325
 
1255
1326
  .moreOptionTitle {
1256
1327
  font-size: 14px;
1257
1328
  font-weight: 600;
1258
- color: var(--fgColor-default, #1a1a1a);
1329
+ color: var(--color-foreground, #1a1a1a);
1259
1330
  }
1260
1331
 
1261
1332
  .moreOptionDesc {
1262
1333
  font-size: 12px;
1263
- color: var(--fgColor-muted, #999);
1334
+ color: var(--color-foreground-muted, #999);
1264
1335
  margin-top: 2px;
1265
1336
  }
1266
1337
 
@@ -1269,22 +1340,22 @@
1269
1340
  .createTip {
1270
1341
  margin-top: 12px;
1271
1342
  padding-top: 10px;
1272
- border-top: 1px solid var(--borderColor-muted, #eee);
1343
+ border-top: 1px solid var(--color-border-muted, #eee);
1273
1344
  }
1274
1345
 
1275
1346
  .createTipText {
1276
1347
  font-size: 12px;
1277
- color: var(--fgColor-muted, #999);
1348
+ color: var(--color-foreground-muted, #999);
1278
1349
  line-height: 1.5;
1279
1350
  }
1280
1351
 
1281
1352
  .createTipCode {
1282
1353
  font-family: 'SF Mono', SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;
1283
1354
  font-size: 12px;
1284
- background: var(--bgColor-neutral-muted, #f0f0f0);
1355
+ background: var(--color-background-neutral-muted, #f0f0f0);
1285
1356
  padding: 1px 5px;
1286
1357
  border-radius: 3px;
1287
- color: var(--fgColor-muted, #555);
1358
+ color: var(--color-foreground-muted, #555);
1288
1359
  }
1289
1360
 
1290
1361
  /* Hamburger button — hidden on desktop */
@@ -1299,12 +1370,12 @@
1299
1370
  border: none;
1300
1371
  background: none;
1301
1372
  cursor: pointer;
1302
- color: var(--fgColor-muted, #555);
1373
+ color: var(--color-foreground-muted, #555);
1303
1374
  transition: background 0.15s;
1304
1375
  }
1305
1376
 
1306
1377
  .hamburgerBtn:hover {
1307
- background: var(--bgColor-neutral-muted, #f0f0f0);
1378
+ background: var(--color-background-neutral-muted, #f0f0f0);
1308
1379
  }
1309
1380
 
1310
1381
  /* ─── Responsive: cards wrap on smaller screens ─── */
@@ -1394,12 +1465,12 @@
1394
1465
 
1395
1466
  .iconBtnInlineActive {
1396
1467
  composes: iconBtnInline;
1397
- color: var(--fgColor-attention, #f59e0b);
1468
+ color: var(--color-foreground-attention, #f59e0b);
1398
1469
  }
1399
1470
 
1400
1471
  .iconBtnInlineActive:hover {
1401
1472
  background: rgba(0, 0, 0, 0.06);
1402
- color: var(--fgColor-attention, #d97706);
1473
+ color: var(--color-foreground-attention, #d97706);
1403
1474
  }
1404
1475
 
1405
1476
  /* Card actions dropdown menu */
@@ -1408,8 +1479,8 @@
1408
1479
  }
1409
1480
 
1410
1481
  .actionsMenu {
1411
- background: var(--bgColor-default, #fff);
1412
- border: 1px solid var(--borderColor-default, #e5e5e5);
1482
+ background: var(--color-background, #fff);
1483
+ border: 1px solid var(--color-border, #e5e5e5);
1413
1484
  border-radius: 8px;
1414
1485
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
1415
1486
  padding: 4px;
@@ -1428,22 +1499,22 @@
1428
1499
  border-radius: 6px;
1429
1500
  cursor: pointer;
1430
1501
  font-size: 14px;
1431
- color: var(--fgColor-default, #1a1a1a);
1502
+ color: var(--color-foreground, #1a1a1a);
1432
1503
  text-align: left;
1433
1504
  }
1434
1505
 
1435
1506
  .actionsMenuItem:hover {
1436
- background: var(--bgColor-neutral-muted, #f0f0f0);
1507
+ background: var(--color-background-neutral-muted, #f0f0f0);
1437
1508
  }
1438
1509
 
1439
1510
  .actionsMenuItemDanger {
1440
1511
  composes: actionsMenuItem;
1441
- color: var(--fgColor-danger, #cf222e);
1512
+ color: var(--color-foreground-danger, #cf222e);
1442
1513
  }
1443
1514
 
1444
1515
  .actionsMenuItemDanger:hover {
1445
- background: var(--bgColor-danger-muted, #fff0f0);
1446
- color: var(--fgColor-danger, #cf222e);
1516
+ background: var(--color-background-danger-muted, #fff0f0);
1517
+ color: var(--color-foreground-danger, #cf222e);
1447
1518
  }
1448
1519
 
1449
1520
  /* Modal overlay and content */
@@ -1458,8 +1529,8 @@
1458
1529
  }
1459
1530
 
1460
1531
  .modalContent {
1461
- background: var(--bgColor-default, #fff);
1462
- border: 1px solid var(--borderColor-default, #e5e5e5);
1532
+ background: var(--color-background, #fff);
1533
+ border: 1px solid var(--color-border, #e5e5e5);
1463
1534
  border-radius: 12px;
1464
1535
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
1465
1536
  padding: 16px;
@@ -1478,8 +1549,8 @@
1478
1549
 
1479
1550
  .modalSubmitBtn {
1480
1551
  padding: 8px 16px;
1481
- background: var(--fgColor-default, #1a1a1a);
1482
- color: var(--bgColor-default, #fff);
1552
+ background: var(--color-foreground, #1a1a1a);
1553
+ color: var(--color-background, #fff);
1483
1554
  border: none;
1484
1555
  border-radius: 6px;
1485
1556
  font-size: 14px;
@@ -1499,22 +1570,22 @@
1499
1570
 
1500
1571
  .modalCancelBtn {
1501
1572
  padding: 8px 16px;
1502
- border: 1px solid var(--borderColor-default, #e5e5e5);
1573
+ border: 1px solid var(--color-border, #e5e5e5);
1503
1574
  border-radius: 6px;
1504
- background: var(--bgColor-default, #fff);
1505
- color: var(--fgColor-default, #1a1a1a);
1575
+ background: var(--color-background, #fff);
1576
+ color: var(--color-foreground, #1a1a1a);
1506
1577
  cursor: pointer;
1507
1578
  font-size: 14px;
1508
1579
  font-weight: 500;
1509
1580
  }
1510
1581
 
1511
1582
  .modalCancelBtn:hover {
1512
- background: var(--bgColor-neutral-muted, #f0f0f0);
1583
+ background: var(--color-background-neutral-muted, #f0f0f0);
1513
1584
  }
1514
1585
 
1515
1586
  .deleteMessage {
1516
1587
  font-size: 14px;
1517
- color: var(--fgColor-muted, #555);
1588
+ color: var(--color-foreground-muted, #555);
1518
1589
  line-height: 1.5;
1519
1590
  margin: 12px 0;
1520
1591
  }
@@ -1523,7 +1594,7 @@
1523
1594
  padding: 8px 16px;
1524
1595
  border: none;
1525
1596
  border-radius: 6px;
1526
- background: var(--bgColor-danger-emphasis, #cf222e);
1597
+ background: var(--color-background-danger-emphasis, #cf222e);
1527
1598
  color: #fff;
1528
1599
  cursor: pointer;
1529
1600
  font-size: 14px;
@@ -1531,7 +1602,7 @@
1531
1602
  }
1532
1603
 
1533
1604
  .deleteConfirmBtn:hover {
1534
- background: var(--bgColor-danger-emphasis, #a40e26);
1605
+ background: var(--color-background-danger-emphasis, #a40e26);
1535
1606
  }
1536
1607
 
1537
1608
  .deleteConfirmBtn:disabled {