cowork-os 0.3.21 → 0.3.25

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 (252) hide show
  1. package/README.md +372 -10
  2. package/connectors/README.md +20 -0
  3. package/connectors/asana-mcp/README.md +24 -0
  4. package/connectors/asana-mcp/dist/index.js +427 -0
  5. package/connectors/asana-mcp/package.json +15 -0
  6. package/connectors/asana-mcp/src/index.ts +553 -0
  7. package/connectors/asana-mcp/tsconfig.json +13 -0
  8. package/connectors/hubspot-mcp/README.md +35 -0
  9. package/connectors/hubspot-mcp/dist/index.js +454 -0
  10. package/connectors/hubspot-mcp/package.json +15 -0
  11. package/connectors/hubspot-mcp/src/index.ts +562 -0
  12. package/connectors/hubspot-mcp/tsconfig.json +13 -0
  13. package/connectors/jira-mcp/README.md +49 -0
  14. package/connectors/jira-mcp/dist/index.js +588 -0
  15. package/connectors/jira-mcp/package.json +15 -0
  16. package/connectors/jira-mcp/src/index.ts +711 -0
  17. package/connectors/jira-mcp/tsconfig.json +13 -0
  18. package/connectors/linear-mcp/README.md +22 -0
  19. package/connectors/linear-mcp/dist/index.js +402 -0
  20. package/connectors/linear-mcp/package.json +15 -0
  21. package/connectors/linear-mcp/src/index.ts +522 -0
  22. package/connectors/linear-mcp/tsconfig.json +13 -0
  23. package/connectors/okta-mcp/README.md +24 -0
  24. package/connectors/okta-mcp/dist/index.js +411 -0
  25. package/connectors/okta-mcp/package.json +15 -0
  26. package/connectors/okta-mcp/src/index.ts +520 -0
  27. package/connectors/okta-mcp/tsconfig.json +13 -0
  28. package/connectors/salesforce-mcp/README.md +47 -0
  29. package/connectors/salesforce-mcp/dist/index.js +584 -0
  30. package/connectors/salesforce-mcp/package.json +15 -0
  31. package/connectors/salesforce-mcp/src/index.ts +722 -0
  32. package/connectors/salesforce-mcp/tsconfig.json +13 -0
  33. package/connectors/servicenow-mcp/README.md +26 -0
  34. package/connectors/servicenow-mcp/dist/index.js +400 -0
  35. package/connectors/servicenow-mcp/package.json +15 -0
  36. package/connectors/servicenow-mcp/src/index.ts +500 -0
  37. package/connectors/servicenow-mcp/tsconfig.json +13 -0
  38. package/connectors/templates/mcp-connector/README.md +31 -0
  39. package/connectors/templates/mcp-connector/package.json +15 -0
  40. package/connectors/templates/mcp-connector/src/index.ts +330 -0
  41. package/connectors/templates/mcp-connector/tsconfig.json +13 -0
  42. package/connectors/zendesk-mcp/README.md +40 -0
  43. package/connectors/zendesk-mcp/dist/index.js +431 -0
  44. package/connectors/zendesk-mcp/package.json +15 -0
  45. package/connectors/zendesk-mcp/src/index.ts +543 -0
  46. package/connectors/zendesk-mcp/tsconfig.json +13 -0
  47. package/dist/electron/electron/agent/custom-skill-loader.js +31 -1
  48. package/dist/electron/electron/agent/daemon.js +189 -13
  49. package/dist/electron/electron/agent/executor.js +895 -78
  50. package/dist/electron/electron/agent/llm/anthropic-compatible-provider.js +177 -0
  51. package/dist/electron/electron/agent/llm/azure-openai-provider.js +328 -0
  52. package/dist/electron/electron/agent/llm/bedrock-provider.js +49 -9
  53. package/dist/electron/electron/agent/llm/github-copilot-provider.js +97 -0
  54. package/dist/electron/electron/agent/llm/groq-provider.js +33 -0
  55. package/dist/electron/electron/agent/llm/index.js +13 -1
  56. package/dist/electron/electron/agent/llm/kimi-provider.js +33 -0
  57. package/dist/electron/electron/agent/llm/openai-compatible-provider.js +116 -0
  58. package/dist/electron/electron/agent/llm/openai-compatible.js +111 -0
  59. package/dist/electron/electron/agent/llm/openai-oauth.js +2 -1
  60. package/dist/electron/electron/agent/llm/openrouter-provider.js +1 -1
  61. package/dist/electron/electron/agent/llm/provider-factory.js +350 -4
  62. package/dist/electron/electron/agent/llm/types.js +66 -1
  63. package/dist/electron/electron/agent/llm/xai-provider.js +33 -0
  64. package/dist/electron/electron/agent/search/provider-factory.js +38 -2
  65. package/dist/electron/electron/agent/tools/box-tools.js +231 -0
  66. package/dist/electron/electron/agent/tools/builtin-settings.js +28 -0
  67. package/dist/electron/electron/agent/tools/dropbox-tools.js +237 -0
  68. package/dist/electron/electron/agent/tools/file-tools.js +66 -3
  69. package/dist/electron/electron/agent/tools/google-drive-tools.js +227 -0
  70. package/dist/electron/electron/agent/tools/grep-tools.js +90 -10
  71. package/dist/electron/electron/agent/tools/image-tools.js +11 -1
  72. package/dist/electron/electron/agent/tools/notion-tools.js +312 -0
  73. package/dist/electron/electron/agent/tools/onedrive-tools.js +217 -0
  74. package/dist/electron/electron/agent/tools/registry.js +548 -10
  75. package/dist/electron/electron/agent/tools/search-tools.js +28 -10
  76. package/dist/electron/electron/agent/tools/sharepoint-tools.js +243 -0
  77. package/dist/electron/electron/agent/tools/shell-tools.js +12 -3
  78. package/dist/electron/electron/agent/tools/x-tools.js +1 -1
  79. package/dist/electron/electron/agents/agent-dispatch.js +63 -0
  80. package/dist/electron/electron/database/repositories.js +19 -5
  81. package/dist/electron/electron/database/schema.js +8 -0
  82. package/dist/electron/electron/gateway/channels/whatsapp.js +55 -0
  83. package/dist/electron/electron/gateway/index.js +75 -1
  84. package/dist/electron/electron/gateway/router.js +209 -154
  85. package/dist/electron/electron/ipc/canvas-handlers.js +5 -0
  86. package/dist/electron/electron/ipc/handlers.js +763 -267
  87. package/dist/electron/electron/main.js +63 -0
  88. package/dist/electron/electron/mcp/oauth/connector-oauth.js +333 -0
  89. package/dist/electron/electron/mcp/registry/MCPRegistryManager.js +503 -154
  90. package/dist/electron/electron/memory/MemoryService.js +2 -1
  91. package/dist/electron/electron/preload.js +78 -1
  92. package/dist/electron/electron/settings/appearance-manager.js +18 -1
  93. package/dist/electron/electron/settings/box-manager.js +54 -0
  94. package/dist/electron/electron/settings/dropbox-manager.js +54 -0
  95. package/dist/electron/electron/settings/google-drive-manager.js +54 -0
  96. package/dist/electron/electron/settings/notion-manager.js +56 -0
  97. package/dist/electron/electron/settings/onedrive-manager.js +54 -0
  98. package/dist/electron/electron/settings/sharepoint-manager.js +54 -0
  99. package/dist/electron/electron/utils/box-api.js +153 -0
  100. package/dist/electron/electron/utils/dropbox-api.js +144 -0
  101. package/dist/electron/electron/utils/env-migration.js +19 -0
  102. package/dist/electron/electron/utils/google-drive-api.js +152 -0
  103. package/dist/electron/electron/utils/notion-api.js +103 -0
  104. package/dist/electron/electron/utils/onedrive-api.js +113 -0
  105. package/dist/electron/electron/utils/sharepoint-api.js +109 -0
  106. package/dist/electron/electron/utils/validation.js +98 -3
  107. package/dist/electron/electron/utils/x-cli.js +1 -1
  108. package/dist/electron/shared/channelMessages.js +284 -3
  109. package/dist/electron/shared/llm-provider-catalog.js +198 -0
  110. package/dist/electron/shared/types.js +90 -1
  111. package/package.json +14 -3
  112. package/resources/skills/nano-banana-pro.json +4 -4
  113. package/resources/skills/openai-image-gen.json +3 -3
  114. package/resources/skills/scripts/gen.py +163 -0
  115. package/resources/skills/scripts/generate_image.py +91 -0
  116. package/src/electron/agent/custom-skill-loader.ts +34 -1
  117. package/src/electron/agent/daemon.ts +210 -14
  118. package/src/electron/agent/executor.ts +1124 -85
  119. package/src/electron/agent/llm/anthropic-compatible-provider.ts +214 -0
  120. package/src/electron/agent/llm/azure-openai-provider.ts +388 -0
  121. package/src/electron/agent/llm/bedrock-provider.ts +62 -9
  122. package/src/electron/agent/llm/github-copilot-provider.ts +117 -0
  123. package/src/electron/agent/llm/groq-provider.ts +39 -0
  124. package/src/electron/agent/llm/index.ts +6 -0
  125. package/src/electron/agent/llm/kimi-provider.ts +39 -0
  126. package/src/electron/agent/llm/openai-compatible-provider.ts +153 -0
  127. package/src/electron/agent/llm/openai-compatible.ts +133 -0
  128. package/src/electron/agent/llm/openai-oauth.ts +2 -1
  129. package/src/electron/agent/llm/openrouter-provider.ts +2 -1
  130. package/src/electron/agent/llm/provider-factory.ts +459 -6
  131. package/src/electron/agent/llm/types.ts +95 -1
  132. package/src/electron/agent/llm/xai-provider.ts +39 -0
  133. package/src/electron/agent/search/provider-factory.ts +43 -2
  134. package/src/electron/agent/tools/box-tools.ts +239 -0
  135. package/src/electron/agent/tools/builtin-settings.ts +36 -0
  136. package/src/electron/agent/tools/dropbox-tools.ts +237 -0
  137. package/src/electron/agent/tools/file-tools.ts +66 -3
  138. package/src/electron/agent/tools/gmail-tools.ts +240 -0
  139. package/src/electron/agent/tools/google-calendar-tools.ts +258 -0
  140. package/src/electron/agent/tools/google-drive-tools.ts +228 -0
  141. package/src/electron/agent/tools/grep-tools.ts +97 -12
  142. package/src/electron/agent/tools/image-tools.ts +11 -1
  143. package/src/electron/agent/tools/notion-tools.ts +330 -0
  144. package/src/electron/agent/tools/onedrive-tools.ts +217 -0
  145. package/src/electron/agent/tools/registry.ts +794 -10
  146. package/src/electron/agent/tools/search-tools.ts +29 -11
  147. package/src/electron/agent/tools/sharepoint-tools.ts +247 -0
  148. package/src/electron/agent/tools/shell-tools.ts +11 -3
  149. package/src/electron/agent/tools/x-tools.ts +1 -1
  150. package/src/electron/agents/agent-dispatch.ts +79 -0
  151. package/src/electron/database/SecureSettingsRepository.ts +7 -1
  152. package/src/electron/database/repositories.ts +58 -6
  153. package/src/electron/database/schema.ts +8 -0
  154. package/src/electron/gateway/channels/discord.ts +4 -0
  155. package/src/electron/gateway/channels/google-chat.ts +3 -0
  156. package/src/electron/gateway/channels/line.ts +3 -0
  157. package/src/electron/gateway/channels/matrix-client.ts +15 -0
  158. package/src/electron/gateway/channels/matrix.ts +31 -0
  159. package/src/electron/gateway/channels/mattermost.ts +3 -0
  160. package/src/electron/gateway/channels/signal.ts +3 -0
  161. package/src/electron/gateway/channels/slack.ts +9 -4
  162. package/src/electron/gateway/channels/teams.ts +4 -0
  163. package/src/electron/gateway/channels/telegram.ts +2 -0
  164. package/src/electron/gateway/channels/twitch.ts +2 -0
  165. package/src/electron/gateway/channels/types.ts +8 -0
  166. package/src/electron/gateway/channels/whatsapp.ts +66 -0
  167. package/src/electron/gateway/index.ts +95 -2
  168. package/src/electron/gateway/router.ts +231 -161
  169. package/src/electron/gateway/security.ts +21 -9
  170. package/src/electron/ipc/canvas-handlers.ts +10 -0
  171. package/src/electron/ipc/handlers.ts +848 -292
  172. package/src/electron/main.ts +35 -0
  173. package/src/electron/mcp/oauth/connector-oauth.ts +448 -0
  174. package/src/electron/mcp/registry/MCPRegistryManager.ts +343 -12
  175. package/src/electron/memory/MemoryService.ts +7 -1
  176. package/src/electron/preload.ts +200 -5
  177. package/src/electron/settings/appearance-manager.ts +20 -2
  178. package/src/electron/settings/box-manager.ts +58 -0
  179. package/src/electron/settings/dropbox-manager.ts +58 -0
  180. package/src/electron/settings/google-workspace-manager.ts +59 -0
  181. package/src/electron/settings/notion-manager.ts +60 -0
  182. package/src/electron/settings/onedrive-manager.ts +58 -0
  183. package/src/electron/settings/sharepoint-manager.ts +58 -0
  184. package/src/electron/utils/box-api.ts +184 -0
  185. package/src/electron/utils/dropbox-api.ts +171 -0
  186. package/src/electron/utils/env-migration.ts +22 -0
  187. package/src/electron/utils/gmail-api.ts +121 -0
  188. package/src/electron/utils/google-calendar-api.ts +115 -0
  189. package/src/electron/utils/google-workspace-api.ts +228 -0
  190. package/src/electron/utils/google-workspace-auth.ts +109 -0
  191. package/src/electron/utils/google-workspace-oauth.ts +232 -0
  192. package/src/electron/utils/notion-api.ts +126 -0
  193. package/src/electron/utils/onedrive-api.ts +137 -0
  194. package/src/electron/utils/sharepoint-api.ts +132 -0
  195. package/src/electron/utils/validation.ts +128 -1
  196. package/src/electron/utils/x-cli.ts +1 -1
  197. package/src/renderer/App.tsx +119 -8
  198. package/src/renderer/components/ActivityFeedItem.tsx +34 -17
  199. package/src/renderer/components/AgentWorkingStatePanel.tsx +7 -5
  200. package/src/renderer/components/AppearanceSettings.tsx +37 -2
  201. package/src/renderer/components/BlueBubblesSettings.tsx +18 -7
  202. package/src/renderer/components/BoxSettings.tsx +203 -0
  203. package/src/renderer/components/BrowserView.tsx +101 -0
  204. package/src/renderer/components/BuiltinToolsSettings.tsx +105 -0
  205. package/src/renderer/components/CanvasPreview.tsx +68 -1
  206. package/src/renderer/components/ConnectorEnvModal.tsx +116 -0
  207. package/src/renderer/components/ConnectorSetupModal.tsx +566 -0
  208. package/src/renderer/components/ConnectorsSettings.tsx +397 -0
  209. package/src/renderer/components/ControlPlaneSettings.tsx +2 -0
  210. package/src/renderer/components/DiscordSettings.tsx +18 -7
  211. package/src/renderer/components/DropboxSettings.tsx +202 -0
  212. package/src/renderer/components/EmailSettings.tsx +18 -7
  213. package/src/renderer/components/FileViewer.tsx +21 -13
  214. package/src/renderer/components/GoogleChatSettings.tsx +17 -7
  215. package/src/renderer/components/GoogleWorkspaceSettings.tsx +332 -0
  216. package/src/renderer/components/ImessageSettings.tsx +22 -11
  217. package/src/renderer/components/LineIcons.tsx +376 -0
  218. package/src/renderer/components/LineSettings.tsx +18 -7
  219. package/src/renderer/components/MCPSettings.tsx +56 -0
  220. package/src/renderer/components/MainContent.tsx +740 -76
  221. package/src/renderer/components/MatrixSettings.tsx +18 -7
  222. package/src/renderer/components/MattermostSettings.tsx +18 -7
  223. package/src/renderer/components/NodesSettings.tsx +58 -99
  224. package/src/renderer/components/NotificationPanel.tsx +25 -11
  225. package/src/renderer/components/NotionSettings.tsx +231 -0
  226. package/src/renderer/components/Onboarding/Onboarding.tsx +13 -1
  227. package/src/renderer/components/OnboardingModal.tsx +70 -1
  228. package/src/renderer/components/OneDriveSettings.tsx +212 -0
  229. package/src/renderer/components/RightPanel.tsx +141 -28
  230. package/src/renderer/components/ScheduledTasksSettings.tsx +10 -62
  231. package/src/renderer/components/SearchSettings.tsx +118 -114
  232. package/src/renderer/components/Settings.tsx +1425 -651
  233. package/src/renderer/components/SharePointSettings.tsx +224 -0
  234. package/src/renderer/components/Sidebar.tsx +94 -19
  235. package/src/renderer/components/SignalSettings.tsx +18 -7
  236. package/src/renderer/components/SkillHubBrowser.tsx +144 -185
  237. package/src/renderer/components/SlackSettings.tsx +18 -7
  238. package/src/renderer/components/TaskQuickActions.tsx +11 -6
  239. package/src/renderer/components/TaskTimeline.tsx +58 -26
  240. package/src/renderer/components/TeamsSettings.tsx +18 -7
  241. package/src/renderer/components/TelegramSettings.tsx +18 -7
  242. package/src/renderer/components/ThemeIcon.tsx +16 -0
  243. package/src/renderer/components/TwitchSettings.tsx +18 -7
  244. package/src/renderer/components/VoiceSettings.tsx +30 -74
  245. package/src/renderer/components/WhatsAppSettings.tsx +48 -37
  246. package/src/renderer/components/WorkingStateHistory.tsx +7 -5
  247. package/src/renderer/components/WorkspaceSelector.tsx +42 -13
  248. package/src/renderer/hooks/useOnboardingFlow.ts +21 -0
  249. package/src/renderer/styles/index.css +2333 -209
  250. package/src/shared/channelMessages.ts +367 -4
  251. package/src/shared/llm-provider-catalog.ts +217 -0
  252. package/src/shared/types.ts +251 -2
@@ -84,6 +84,249 @@
84
84
  --gradient-shine: linear-gradient(135deg, rgba(255, 255, 255, 0.6) 0%, rgba(255, 255, 255, 0) 50%);
85
85
  }
86
86
 
87
+ /* ============================================
88
+ Visual Themes
89
+ ============================================ */
90
+
91
+ /* Terminal Visual Theme (Default) */
92
+ .visual-terminal {
93
+ --radius-sm: 8px;
94
+ --radius-md: 10px;
95
+ --radius-lg: 14px;
96
+ --radius-xl: 18px;
97
+ --font-content: 'JetBrains Mono', 'Fira Code', 'Menlo', monospace;
98
+ --font-ui: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
99
+ }
100
+
101
+ /* Studio Visual Theme (non-terminal styling, same base colors) */
102
+ .visual-oblivion {
103
+ --radius-sm: 12px;
104
+ --radius-md: 16px;
105
+ --radius-lg: 20px;
106
+ --radius-xl: 24px;
107
+ --font-content: 'Avenir Next', 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
108
+ --font-ui: 'Avenir Next', 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
109
+ }
110
+
111
+ /* Hide CLI-specific decorations in warm style */
112
+ .visual-oblivion .cli-section-prompt,
113
+ .visual-oblivion .cli-btn-bracket {
114
+ display: none !important;
115
+ }
116
+
117
+ .visual-oblivion .cli-task-item {
118
+ border-left: none;
119
+ padding-left: 12px;
120
+ border-radius: var(--radius-sm);
121
+ margin-bottom: 2px;
122
+ }
123
+
124
+ .visual-oblivion .cli-header-actions button {
125
+ border-radius: var(--radius-sm);
126
+ padding: 6px 12px;
127
+ }
128
+
129
+ .visual-oblivion .cli-btn-text {
130
+ font-family: var(--font-ui);
131
+ font-weight: 500;
132
+ text-transform: none;
133
+ }
134
+
135
+ /* Rounded avatars/icons in warm style */
136
+ .visual-warm .avatar,
137
+ .visual-warm .model-icon,
138
+ .visual-oblivion .avatar,
139
+ .visual-oblivion .model-icon {
140
+ border-radius: 50%;
141
+ }
142
+
143
+ /* -----------------------------
144
+ Modern Theme Visibility Logic
145
+ ----------------------------- */
146
+
147
+ /* Default: Show Terminal, Hide Modern */
148
+ .terminal-only {
149
+ display: block;
150
+ }
151
+
152
+ .cli-section-title .terminal-only,
153
+ .cli-section-title .modern-only,
154
+ .cli-btn-text .terminal-only,
155
+ .cli-btn-text .modern-only,
156
+ .cli-hint .terminal-only,
157
+ .cli-hint .modern-only,
158
+ .cli-footer-text .terminal-only,
159
+ .cli-footer-text .modern-only {
160
+ display: inline-flex;
161
+ align-items: center;
162
+ }
163
+
164
+ .modern-only {
165
+ display: none !important;
166
+ }
167
+
168
+ /* In Warm/Oblivion Mode: Show Modern, Hide Terminal */
169
+ .visual-warm .terminal-only,
170
+ .visual-oblivion .terminal-only {
171
+ display: none !important;
172
+ }
173
+
174
+ .visual-warm .modern-only,
175
+ .visual-oblivion .modern-only {
176
+ display: flex !important;
177
+ }
178
+
179
+ /* Specific display types for modern elements */
180
+ .visual-warm div.modern-only,
181
+ .visual-oblivion div.modern-only {
182
+ display: flex !important;
183
+ flex-direction: column;
184
+ }
185
+
186
+ .visual-warm span.modern-only,
187
+ .visual-oblivion span.modern-only {
188
+ display: inline-flex !important;
189
+ align-items: center;
190
+ justify-content: center;
191
+ }
192
+
193
+ /* Hide other CLI artifacts in Warm Mode */
194
+ .visual-warm .cli-prompt,
195
+ .visual-warm .cli-cursor,
196
+ .visual-warm .cli-commands-header .cli-prompt,
197
+ .visual-warm .cli-input-prompt,
198
+ .visual-warm .cli-placeholder-measure,
199
+ .visual-oblivion .cli-prompt,
200
+ .visual-oblivion .cli-cursor,
201
+ .visual-oblivion .cli-commands-header .cli-prompt,
202
+ .visual-oblivion .cli-input-prompt,
203
+ .visual-oblivion .cli-placeholder-measure {
204
+ display: none !important;
205
+ }
206
+
207
+ /* Adjust input container for Warm Mode */
208
+ .visual-warm .cli-input-wrapper,
209
+ .visual-oblivion .cli-input-wrapper {
210
+ padding-left: 0;
211
+ display: flex;
212
+ align-items: center;
213
+ }
214
+
215
+ /* Keep base input colors; only adjust typography elsewhere */
216
+
217
+ /* Modern Welcome Header Styles */
218
+ .welcome-header-modern {
219
+ margin-bottom: 40px;
220
+ text-align: center;
221
+ align-items: center;
222
+ justify-content: center;
223
+ }
224
+
225
+ .modern-logo-container {
226
+ display: flex;
227
+ align-items: center;
228
+ justify-content: center;
229
+ gap: 16px;
230
+ margin-bottom: 12px;
231
+ }
232
+
233
+ .modern-logo {
234
+ width: 48px;
235
+ height: 48px;
236
+ object-fit: contain;
237
+ }
238
+
239
+ .modern-title-container {
240
+ display: flex;
241
+ flex-direction: column;
242
+ align-items: flex-start;
243
+ }
244
+
245
+ .visual-oblivion .modern-title-container {
246
+ padding-top: 4px;
247
+ }
248
+
249
+ .modern-title {
250
+ font-family: var(--font-ui);
251
+ font-weight: 700;
252
+ font-size: 24px;
253
+ color: var(--color-text);
254
+ letter-spacing: -0.5px;
255
+ line-height: 1.1;
256
+ }
257
+
258
+ .modern-version {
259
+ font-size: 12px;
260
+ color: var(--color-text-muted);
261
+ font-family: var(--font-content);
262
+ margin-top: 2px;
263
+ }
264
+
265
+ .modern-subtitle {
266
+ font-family: var(--font-ui);
267
+ font-size: 16px;
268
+ color: var(--color-text-secondary);
269
+ max-width: 500px;
270
+ margin: 0 auto;
271
+ line-height: 1.5;
272
+ }
273
+
274
+ /* Quick Start Grid - Modern Style Adjustments */
275
+ .visual-warm .cli-commands-header,
276
+ .visual-oblivion .cli-commands-header {
277
+ border-bottom: none;
278
+ margin-bottom: 16px;
279
+ font-family: var(--font-ui);
280
+ font-size: 13px;
281
+ font-weight: 600;
282
+ text-transform: uppercase;
283
+ letter-spacing: 0.5px;
284
+ padding-bottom: 0;
285
+ }
286
+
287
+ .visual-warm .quick-start-card,
288
+ .visual-oblivion .quick-start-card {
289
+ border-radius: var(--radius-md);
290
+ transition: all 0.2s ease;
291
+ }
292
+
293
+ .visual-warm .quick-start-card:hover,
294
+ .visual-oblivion .quick-start-card:hover {
295
+ transform: translateY(-2px);
296
+ }
297
+
298
+ .visual-warm .quick-start-icon,
299
+ .visual-oblivion .quick-start-icon {
300
+ font-size: 24px;
301
+ margin-bottom: 8px;
302
+ opacity: 1;
303
+ }
304
+
305
+ .visual-warm .quick-start-title,
306
+ .visual-oblivion .quick-start-title {
307
+ font-family: var(--font-ui);
308
+ font-weight: 600;
309
+ font-size: 14px;
310
+ margin-bottom: 4px;
311
+ }
312
+
313
+ .visual-warm .quick-start-desc,
314
+ .visual-oblivion .quick-start-desc {
315
+ font-family: var(--font-ui);
316
+ font-size: 12px;
317
+ color: var(--color-text-muted);
318
+ }
319
+
320
+
321
+
322
+ /* Rounded avatars/icons in warm style */
323
+ .visual-oblivion .avatar,
324
+ .visual-oblivion .model-icon {
325
+ border-radius: 50%;
326
+ }
327
+
328
+
329
+
87
330
  /* ============================================
88
331
  Accent Color Themes
89
332
  ============================================ */
@@ -170,15 +413,41 @@
170
413
  }
171
414
 
172
415
  /* Light theme adjustments for accent colors */
173
- .theme-light.accent-cyan { --shadow-glow: 0 0 20px rgba(34, 211, 238, 0.25); }
174
- .theme-light.accent-blue { --shadow-glow: 0 0 20px rgba(59, 130, 246, 0.25); }
175
- .theme-light.accent-purple { --shadow-glow: 0 0 20px rgba(167, 139, 250, 0.25); }
176
- .theme-light.accent-pink { --shadow-glow: 0 0 20px rgba(244, 114, 182, 0.25); }
177
- .theme-light.accent-rose { --shadow-glow: 0 0 20px rgba(251, 113, 133, 0.25); }
178
- .theme-light.accent-orange { --shadow-glow: 0 0 20px rgba(251, 146, 60, 0.25); }
179
- .theme-light.accent-green { --shadow-glow: 0 0 20px rgba(52, 211, 153, 0.25); }
180
- .theme-light.accent-teal { --shadow-glow: 0 0 20px rgba(45, 212, 191, 0.25); }
181
- .theme-light.accent-coral { --shadow-glow: 0 0 20px rgba(255, 107, 107, 0.25); }
416
+ .theme-light.accent-cyan {
417
+ --shadow-glow: 0 0 20px rgba(34, 211, 238, 0.25);
418
+ }
419
+
420
+ .theme-light.accent-blue {
421
+ --shadow-glow: 0 0 20px rgba(59, 130, 246, 0.25);
422
+ }
423
+
424
+ .theme-light.accent-purple {
425
+ --shadow-glow: 0 0 20px rgba(167, 139, 250, 0.25);
426
+ }
427
+
428
+ .theme-light.accent-pink {
429
+ --shadow-glow: 0 0 20px rgba(244, 114, 182, 0.25);
430
+ }
431
+
432
+ .theme-light.accent-rose {
433
+ --shadow-glow: 0 0 20px rgba(251, 113, 133, 0.25);
434
+ }
435
+
436
+ .theme-light.accent-orange {
437
+ --shadow-glow: 0 0 20px rgba(251, 146, 60, 0.25);
438
+ }
439
+
440
+ .theme-light.accent-green {
441
+ --shadow-glow: 0 0 20px rgba(52, 211, 153, 0.25);
442
+ }
443
+
444
+ .theme-light.accent-teal {
445
+ --shadow-glow: 0 0 20px rgba(45, 212, 191, 0.25);
446
+ }
447
+
448
+ .theme-light.accent-coral {
449
+ --shadow-glow: 0 0 20px rgba(255, 107, 107, 0.25);
450
+ }
182
451
 
183
452
  /* ============================================
184
453
  Light Theme Component Overrides
@@ -536,12 +805,12 @@
536
805
  background: rgba(255, 255, 255, 0.6) !important;
537
806
  }
538
807
 
539
- .theme-light .cli-new-task-btn {
808
+ .theme-light .cli-action-btn {
540
809
  background: rgba(255, 255, 255, 0.8) !important;
541
810
  border-color: rgba(0, 0, 0, 0.1) !important;
542
811
  }
543
812
 
544
- .theme-light .cli-new-task-btn:hover {
813
+ .theme-light .cli-action-btn:hover {
545
814
  background: rgba(255, 255, 255, 1) !important;
546
815
  border-color: var(--color-accent) !important;
547
816
  }
@@ -712,7 +981,8 @@
712
981
  color: var(--color-accent-dark);
713
982
  }
714
983
 
715
- html, body {
984
+ html,
985
+ body {
716
986
  height: 100%;
717
987
  }
718
988
 
@@ -786,7 +1056,8 @@ body {
786
1056
  display: flex;
787
1057
  align-items: center;
788
1058
  justify-content: space-between;
789
- padding: 8px 16px 8px 80px; /* Left padding for macOS window controls */
1059
+ padding: 8px 16px 8px 80px;
1060
+ /* Left padding for macOS window controls */
790
1061
  background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
791
1062
  color: white;
792
1063
  font-size: 13px;
@@ -880,7 +1151,8 @@ a,
880
1151
  }
881
1152
 
882
1153
  .app-layout.left-collapsed .main-header {
883
- padding-left: 124px; /* Space for macOS window controls (80px) + sidebar toggle button (32px) + gap (12px) */
1154
+ padding-left: 124px;
1155
+ /* Space for macOS window controls (80px) + sidebar toggle button (32px) + gap (12px) */
884
1156
  }
885
1157
 
886
1158
  .app-layout.right-collapsed .main-content {
@@ -947,7 +1219,8 @@ a,
947
1219
  }
948
1220
 
949
1221
  .sidebar-header-top {
950
- padding-top: 44px; /* Space for macOS traffic lights */
1222
+ padding-top: 44px;
1223
+ /* Space for macOS traffic lights */
951
1224
  }
952
1225
 
953
1226
  .new-task-btn {
@@ -1251,7 +1524,8 @@ a,
1251
1524
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturate));
1252
1525
  min-width: 0;
1253
1526
  position: relative;
1254
- padding-top: 32px; /* Space for title bar */
1527
+ padding-top: 32px;
1528
+ /* Space for title bar */
1255
1529
  }
1256
1530
 
1257
1531
  /* Removed: double-border effect - using single border only */
@@ -1453,8 +1727,15 @@ a,
1453
1727
  }
1454
1728
 
1455
1729
  @keyframes pulse {
1456
- 0%, 100% { opacity: 1; }
1457
- 50% { opacity: 0.5; }
1730
+
1731
+ 0%,
1732
+ 100% {
1733
+ opacity: 1;
1734
+ }
1735
+
1736
+ 50% {
1737
+ opacity: 0.5;
1738
+ }
1458
1739
  }
1459
1740
 
1460
1741
  .message-speak-btn svg {
@@ -1493,6 +1774,7 @@ a,
1493
1774
  from {
1494
1775
  transform: rotate(0deg);
1495
1776
  }
1777
+
1496
1778
  to {
1497
1779
  transform: rotate(360deg);
1498
1780
  }
@@ -1778,7 +2060,7 @@ a,
1778
2060
  font-family: 'SF Mono', 'Fira Code', monospace;
1779
2061
  font-size: 12px;
1780
2062
  color: var(--color-text-secondary);
1781
- border: 1px solid var(--color-border-subtle);
2063
+ border: 1px solid var(--color-border);
1782
2064
  }
1783
2065
 
1784
2066
  .event-details pre {
@@ -1791,7 +2073,7 @@ a,
1791
2073
  font-size: 14px;
1792
2074
  line-height: 1.6;
1793
2075
  color: var(--color-text);
1794
- background: var(--color-bg-tertiary);
2076
+ background: var(--color-bg-secondary);
1795
2077
  display: flex;
1796
2078
  flex-direction: column;
1797
2079
  gap: 8px;
@@ -1829,6 +2111,14 @@ a,
1829
2111
  color: var(--color-text);
1830
2112
  }
1831
2113
 
2114
+ .markdown-heading-icon {
2115
+ display: inline-flex;
2116
+ align-items: center;
2117
+ justify-content: center;
2118
+ margin-right: 8px;
2119
+ transform: translateY(1px);
2120
+ }
2121
+
1832
2122
  .markdown-content p {
1833
2123
  margin: 8px 0;
1834
2124
  }
@@ -2047,6 +2337,11 @@ a,
2047
2337
  border-radius: var(--radius-lg);
2048
2338
  }
2049
2339
 
2340
+ .input-container.drag-over {
2341
+ outline: 1px dashed var(--color-border);
2342
+ background: var(--color-bg-hover);
2343
+ }
2344
+
2050
2345
  .input-row {
2051
2346
  display: flex;
2052
2347
  align-items: center;
@@ -2063,6 +2358,18 @@ a,
2063
2358
  outline: none;
2064
2359
  }
2065
2360
 
2361
+ .input-container .input-field,
2362
+ .input-container .input-textarea {
2363
+ background: transparent;
2364
+ }
2365
+
2366
+ .welcome-input-container .welcome-input,
2367
+ .welcome-input-container .input-textarea,
2368
+ .cli-input-container .cli-input,
2369
+ .cli-input-container .input-textarea {
2370
+ background: transparent;
2371
+ }
2372
+
2066
2373
  .input-field::placeholder {
2067
2374
  color: var(--color-text-muted);
2068
2375
  }
@@ -2102,6 +2409,40 @@ a,
2102
2409
  gap: 12px;
2103
2410
  }
2104
2411
 
2412
+ .attachment-btn {
2413
+ width: 36px;
2414
+ height: 36px;
2415
+ border-radius: var(--radius-sm);
2416
+ background: var(--color-bg-tertiary);
2417
+ border: 1px solid var(--color-border);
2418
+ color: var(--color-text);
2419
+ cursor: pointer;
2420
+ display: flex;
2421
+ align-items: center;
2422
+ justify-content: center;
2423
+ transition: all 0.2s ease;
2424
+ }
2425
+
2426
+ .attachment-btn svg {
2427
+ stroke: currentColor;
2428
+ flex-shrink: 0;
2429
+ }
2430
+
2431
+ .attachment-btn-left {
2432
+ flex: 0 0 auto;
2433
+ margin-right: 2px;
2434
+ }
2435
+
2436
+ .attachment-btn:hover {
2437
+ background: var(--color-bg-hover);
2438
+ color: var(--color-text);
2439
+ }
2440
+
2441
+ .attachment-btn:disabled {
2442
+ opacity: 0.6;
2443
+ cursor: not-allowed;
2444
+ }
2445
+
2105
2446
  .input-add-btn {
2106
2447
  width: 28px;
2107
2448
  height: 28px;
@@ -2121,50 +2462,125 @@ a,
2121
2462
  color: var(--color-text);
2122
2463
  }
2123
2464
 
2124
- .model-selector {
2465
+ .attachment-panel {
2466
+ width: 100%;
2467
+ max-width: 800px;
2468
+ margin: 0 auto 10px;
2125
2469
  display: flex;
2126
- align-items: center;
2127
- gap: 4px;
2128
- padding: 0 10px;
2129
- height: 36px;
2130
- background: transparent;
2131
- border: none;
2132
- color: var(--color-text-secondary);
2133
- font-size: 12px;
2134
- cursor: pointer;
2135
- border-radius: var(--radius-sm);
2136
- transition: all 0.15s ease;
2470
+ flex-direction: column;
2471
+ gap: 8px;
2137
2472
  }
2138
2473
 
2139
- .model-selector:hover {
2140
- background: var(--color-bg-hover);
2474
+ .attachment-error {
2475
+ padding: 6px 10px;
2476
+ border-radius: var(--radius-sm);
2477
+ background: rgba(239, 68, 68, 0.12);
2478
+ border: 1px solid rgba(239, 68, 68, 0.25);
2141
2479
  color: var(--color-text);
2480
+ font-size: 12px;
2142
2481
  }
2143
2482
 
2144
- /* Voice Input Button */
2145
- .voice-input-btn {
2146
- position: relative;
2147
- width: 36px;
2148
- height: 36px;
2149
- border-radius: var(--radius-sm);
2150
- background: var(--color-bg-secondary);
2151
- border: 1px solid var(--color-border);
2152
- color: var(--color-text-secondary);
2153
- cursor: pointer;
2483
+ .attachment-list {
2154
2484
  display: flex;
2155
- align-items: center;
2156
- justify-content: center;
2157
- transition: all 0.2s ease;
2158
- overflow: hidden;
2159
- }
2160
-
2161
- .voice-input-btn svg {
2162
- width: 18px;
2163
- height: 18px;
2164
- flex-shrink: 0;
2485
+ flex-wrap: wrap;
2486
+ gap: 8px;
2165
2487
  }
2166
2488
 
2167
- .voice-input-btn:hover:not(:disabled) {
2489
+ .attachment-chip {
2490
+ display: flex;
2491
+ align-items: center;
2492
+ gap: 6px;
2493
+ padding: 6px 8px;
2494
+ background: var(--color-bg-tertiary);
2495
+ border: 1px solid var(--color-border-subtle);
2496
+ border-radius: var(--radius-sm);
2497
+ color: var(--color-text-secondary);
2498
+ font-size: 12px;
2499
+ max-width: 260px;
2500
+ }
2501
+
2502
+ .attachment-icon {
2503
+ display: inline-flex;
2504
+ align-items: center;
2505
+ justify-content: center;
2506
+ }
2507
+
2508
+ .attachment-name {
2509
+ overflow: hidden;
2510
+ text-overflow: ellipsis;
2511
+ white-space: nowrap;
2512
+ max-width: 160px;
2513
+ }
2514
+
2515
+ .attachment-size {
2516
+ color: var(--color-text-muted);
2517
+ font-size: 11px;
2518
+ }
2519
+
2520
+ .attachment-remove {
2521
+ background: transparent;
2522
+ border: none;
2523
+ color: var(--color-text-muted);
2524
+ cursor: pointer;
2525
+ display: inline-flex;
2526
+ align-items: center;
2527
+ justify-content: center;
2528
+ padding: 0;
2529
+ }
2530
+
2531
+ .attachment-remove:hover {
2532
+ color: var(--color-text);
2533
+ }
2534
+
2535
+ .attachment-remove:disabled {
2536
+ opacity: 0.5;
2537
+ cursor: not-allowed;
2538
+ }
2539
+
2540
+ .model-selector {
2541
+ display: flex;
2542
+ align-items: center;
2543
+ gap: 4px;
2544
+ padding: 0 10px;
2545
+ height: 36px;
2546
+ background: transparent;
2547
+ border: none;
2548
+ color: var(--color-text-secondary);
2549
+ font-size: 12px;
2550
+ cursor: pointer;
2551
+ border-radius: var(--radius-sm);
2552
+ transition: all 0.15s ease;
2553
+ }
2554
+
2555
+ .model-selector:hover {
2556
+ background: var(--color-bg-hover);
2557
+ color: var(--color-text);
2558
+ }
2559
+
2560
+ /* Voice Input Button */
2561
+ .voice-input-btn {
2562
+ position: relative;
2563
+ width: 36px;
2564
+ height: 36px;
2565
+ border-radius: var(--radius-sm);
2566
+ background: var(--color-bg-secondary);
2567
+ border: 1px solid var(--color-border);
2568
+ color: var(--color-text-secondary);
2569
+ cursor: pointer;
2570
+ display: flex;
2571
+ align-items: center;
2572
+ justify-content: center;
2573
+ transition: all 0.2s ease;
2574
+ overflow: hidden;
2575
+ }
2576
+
2577
+ .voice-input-btn svg {
2578
+ width: 18px;
2579
+ height: 18px;
2580
+ flex-shrink: 0;
2581
+ }
2582
+
2583
+ .voice-input-btn:hover:not(:disabled) {
2168
2584
  border-color: var(--color-accent);
2169
2585
  color: var(--color-accent);
2170
2586
  background: var(--color-accent-subtle);
@@ -2202,9 +2618,12 @@ a,
2202
2618
  }
2203
2619
 
2204
2620
  @keyframes voice-pulse {
2205
- 0%, 100% {
2621
+
2622
+ 0%,
2623
+ 100% {
2206
2624
  box-shadow: 0 0 0 0 rgba(248, 113, 113, 0.4);
2207
2625
  }
2626
+
2208
2627
  50% {
2209
2628
  box-shadow: 0 0 0 8px rgba(248, 113, 113, 0);
2210
2629
  }
@@ -2214,6 +2633,7 @@ a,
2214
2633
  from {
2215
2634
  transform: rotate(0deg);
2216
2635
  }
2636
+
2217
2637
  to {
2218
2638
  transform: rotate(360deg);
2219
2639
  }
@@ -2325,6 +2745,7 @@ a,
2325
2745
  opacity: 0;
2326
2746
  transform: translateY(8px);
2327
2747
  }
2748
+
2328
2749
  to {
2329
2750
  opacity: 1;
2330
2751
  transform: translateY(0);
@@ -2411,11 +2832,16 @@ a,
2411
2832
  padding: 8px 10px;
2412
2833
  margin-bottom: 6px;
2413
2834
  border-bottom: 1px solid var(--color-border);
2414
- background: rgba(0, 0, 0, 0.15);
2835
+ background: var(--color-bg-elevated);
2415
2836
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
2416
2837
  margin: -6px -6px 6px -6px;
2417
2838
  }
2418
2839
 
2840
+ .visual-oblivion .model-dropdown-search {
2841
+ background: var(--color-bg-primary);
2842
+ border-bottom-color: var(--color-border);
2843
+ }
2844
+
2419
2845
  .model-dropdown-search svg {
2420
2846
  flex-shrink: 0;
2421
2847
  opacity: 0.5;
@@ -2439,6 +2865,30 @@ a,
2439
2865
  overflow-y: auto;
2440
2866
  }
2441
2867
 
2868
+ .model-dropdown-footer {
2869
+ margin-top: 6px;
2870
+ padding-top: 6px;
2871
+ border-top: 1px solid var(--color-border-subtle);
2872
+ }
2873
+
2874
+ .model-dropdown-provider-btn {
2875
+ width: 100%;
2876
+ padding: 6px 10px;
2877
+ border-radius: var(--radius-sm);
2878
+ border: 1px solid var(--color-border-subtle);
2879
+ background: transparent;
2880
+ color: var(--color-text-secondary);
2881
+ font-size: 12px;
2882
+ cursor: pointer;
2883
+ transition: all 0.15s ease;
2884
+ }
2885
+
2886
+ .model-dropdown-provider-btn:hover {
2887
+ border-color: var(--color-accent);
2888
+ color: var(--color-text);
2889
+ background: var(--color-bg-hover);
2890
+ }
2891
+
2442
2892
  .model-dropdown-no-results {
2443
2893
  padding: 16px 12px;
2444
2894
  text-align: center;
@@ -2709,7 +3159,8 @@ a,
2709
3159
  border-left: 1px solid var(--color-border-subtle);
2710
3160
  display: flex;
2711
3161
  flex-direction: column;
2712
- overflow: hidden;
3162
+ overflow-x: hidden;
3163
+ overflow-y: auto;
2713
3164
  position: relative;
2714
3165
  padding-top: 38px;
2715
3166
  }
@@ -3142,8 +3593,15 @@ a,
3142
3593
  }
3143
3594
 
3144
3595
  @keyframes blink {
3145
- 0%, 100% { opacity: 1; }
3146
- 50% { opacity: 0; }
3596
+
3597
+ 0%,
3598
+ 100% {
3599
+ opacity: 1;
3600
+ }
3601
+
3602
+ 50% {
3603
+ opacity: 0;
3604
+ }
3147
3605
  }
3148
3606
 
3149
3607
  .cli-workspace-list {
@@ -3625,7 +4083,7 @@ button {
3625
4083
  transition: background 0.2s ease;
3626
4084
  }
3627
4085
 
3628
- *:hover > ::-webkit-scrollbar-thumb,
4086
+ *:hover> ::-webkit-scrollbar-thumb,
3629
4087
  *::-webkit-scrollbar-thumb:hover {
3630
4088
  background: rgba(255, 255, 255, 0.08);
3631
4089
  }
@@ -3892,7 +4350,7 @@ button {
3892
4350
  align-items: center;
3893
4351
  }
3894
4352
 
3895
- .mention-autocomplete-wrapper:focus-within ~ .cli-cursor {
4353
+ .mention-autocomplete-wrapper:focus-within~.cli-cursor {
3896
4354
  opacity: 1;
3897
4355
  }
3898
4356
 
@@ -3996,13 +4454,21 @@ button {
3996
4454
  font-size: 14px;
3997
4455
  }
3998
4456
 
3999
- .cli-input:focus ~ .cli-cursor {
4457
+ .cli-input:focus~.cli-cursor {
4000
4458
  opacity: 1;
4001
4459
  }
4002
4460
 
4003
4461
  @keyframes blink {
4004
- 0%, 50% { opacity: 1; }
4005
- 51%, 100% { opacity: 0; }
4462
+
4463
+ 0%,
4464
+ 50% {
4465
+ opacity: 1;
4466
+ }
4467
+
4468
+ 51%,
4469
+ 100% {
4470
+ opacity: 0;
4471
+ }
4006
4472
  }
4007
4473
 
4008
4474
  /* CLI Input Footer */
@@ -4055,6 +4521,11 @@ button {
4055
4521
  border-radius: var(--radius-lg);
4056
4522
  }
4057
4523
 
4524
+ .welcome-input-container.drag-over {
4525
+ outline: 1px dashed var(--color-border);
4526
+ background: var(--color-bg-hover);
4527
+ }
4528
+
4058
4529
  .welcome-input {
4059
4530
  width: 100%;
4060
4531
  padding: 14px 16px;
@@ -4154,9 +4625,10 @@ button {
4154
4625
  }
4155
4626
 
4156
4627
  .workspace-dropdown-list {
4157
- max-height: 240px;
4628
+ max-height: 320px;
4158
4629
  overflow-y: auto;
4159
4630
  padding: 4px 0;
4631
+ overscroll-behavior: contain;
4160
4632
  }
4161
4633
 
4162
4634
  .workspace-dropdown-item {
@@ -4307,6 +4779,7 @@ button {
4307
4779
  .input-below-actions {
4308
4780
  display: flex;
4309
4781
  align-items: center;
4782
+ flex-wrap: wrap;
4310
4783
  gap: 8px;
4311
4784
  margin-top: 8px;
4312
4785
  margin-left: 12px;
@@ -5363,11 +5836,18 @@ button {
5363
5836
 
5364
5837
  .test-result {
5365
5838
  display: flex;
5366
- align-items: center;
5839
+ align-items: flex-start;
5367
5840
  gap: 8px;
5368
5841
  padding: 12px 14px;
5369
5842
  border-radius: var(--radius-md);
5370
5843
  font-size: 13px;
5844
+ overflow-wrap: break-word;
5845
+ word-break: break-word;
5846
+ }
5847
+
5848
+ .test-result svg {
5849
+ flex-shrink: 0;
5850
+ margin-top: 2px;
5371
5851
  }
5372
5852
 
5373
5853
  .test-result.success {
@@ -5951,6 +6431,8 @@ button {
5951
6431
  padding: 6px 10px;
5952
6432
  border-radius: var(--radius-sm);
5953
6433
  font-size: 11px;
6434
+ overflow-wrap: break-word;
6435
+ word-break: break-word;
5954
6436
  }
5955
6437
 
5956
6438
  .test-result-inline.success {
@@ -6044,6 +6526,12 @@ button {
6044
6526
  border-top: 1px solid var(--color-border-subtle);
6045
6527
  }
6046
6528
 
6529
+ .provider-config-panel .provider-config-form {
6530
+ padding: 16px;
6531
+ background: transparent;
6532
+ border-top: none;
6533
+ }
6534
+
6047
6535
  .provider-config-form .provider-description {
6048
6536
  font-size: 12px;
6049
6537
  color: var(--color-text-muted);
@@ -6499,20 +6987,41 @@ button {
6499
6987
  letter-spacing: 1px;
6500
6988
  }
6501
6989
 
6502
- /* CLI New Task Button */
6503
- .cli-new-task-btn {
6990
+ /* CLI Action Buttons */
6991
+ .cli-header-actions {
6992
+ display: flex;
6993
+ flex-direction: column;
6994
+ gap: 8px;
6995
+ }
6996
+
6997
+ .cli-action-btn {
6998
+ width: 100%;
6504
6999
  display: flex;
6505
7000
  align-items: center;
6506
- gap: 6px;
6507
- background: rgba(0, 0, 0, 0.3) !important;
7001
+ gap: 8px;
7002
+ background: transparent !important;
6508
7003
  border: 1px solid var(--color-border-subtle) !important;
7004
+ border-radius: var(--radius-md);
6509
7005
  font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace !important;
6510
- padding: 10px 14px !important;
7006
+ padding: 8px 12px !important;
7007
+ color: var(--color-text-muted) !important;
7008
+ font-size: 11px !important;
7009
+ letter-spacing: 0.2px;
7010
+ transition: all 0.15s ease;
6511
7011
  }
6512
7012
 
6513
- .cli-new-task-btn:hover {
7013
+ .cli-action-btn:hover {
6514
7014
  border-color: var(--color-accent) !important;
6515
- background: rgba(0, 0, 0, 0.4) !important;
7015
+ color: var(--color-text) !important;
7016
+ background: rgba(0, 0, 0, 0.12) !important;
7017
+ }
7018
+
7019
+ .cli-new-task-btn {
7020
+ justify-content: flex-start;
7021
+ }
7022
+
7023
+ .cli-mission-control-btn {
7024
+ justify-content: flex-start;
6516
7025
  }
6517
7026
 
6518
7027
  .cli-btn-bracket {
@@ -6524,6 +7033,12 @@ button {
6524
7033
  font-weight: 600;
6525
7034
  }
6526
7035
 
7036
+ .cli-btn-accent {
7037
+ color: var(--color-accent);
7038
+ font-weight: 700;
7039
+ letter-spacing: 0.6px;
7040
+ }
7041
+
6527
7042
  .cli-btn-text {
6528
7043
  color: var(--color-text);
6529
7044
  }
@@ -6849,6 +7364,12 @@ button {
6849
7364
  min-height: 48px !important;
6850
7365
  }
6851
7366
 
7367
+ .cli-footer-actions {
7368
+ display: flex;
7369
+ align-items: center;
7370
+ gap: 8px;
7371
+ }
7372
+
6852
7373
  .cli-footer-info {
6853
7374
  display: flex;
6854
7375
  align-items: center;
@@ -7274,25 +7795,8 @@ button {
7274
7795
  flex-direction: column;
7275
7796
  height: 100%;
7276
7797
  background: var(--color-bg-primary);
7277
- padding-top: 38px; /* Space for title bar buttons */
7278
- }
7279
-
7280
- .settings-page-header {
7281
- display: flex;
7282
- align-items: center;
7283
- justify-content: center;
7284
- padding: 16px 80px; /* Symmetric padding for macOS window controls */
7285
- border-bottom: 1px solid var(--color-border);
7286
- background: var(--color-bg-secondary);
7287
- -webkit-app-region: drag;
7288
- }
7289
-
7290
- .settings-page-header h1 {
7291
- font-size: 20px;
7292
- font-weight: 600;
7293
- color: var(--color-text-primary);
7294
- margin: 0;
7295
- -webkit-app-region: no-drag;
7798
+ padding-top: 38px;
7799
+ /* Space for title bar buttons */
7296
7800
  }
7297
7801
 
7298
7802
  /* Back button styled like a nav item */
@@ -7300,14 +7804,14 @@ button {
7300
7804
  display: flex;
7301
7805
  align-items: center;
7302
7806
  justify-content: flex-start;
7303
- gap: 10px;
7807
+ gap: 6px;
7304
7808
  width: 100%;
7305
- padding: 10px 12px;
7809
+ padding: 6px 8px;
7306
7810
  background: transparent;
7307
7811
  border: 2px solid transparent;
7308
7812
  border-radius: var(--radius-md);
7309
7813
  color: var(--color-text-secondary);
7310
- font-size: 14px;
7814
+ font-size: 13px;
7311
7815
  font-weight: 500;
7312
7816
  text-align: left;
7313
7817
  cursor: pointer;
@@ -7321,8 +7825,8 @@ button {
7321
7825
 
7322
7826
  .settings-back-btn svg {
7323
7827
  flex-shrink: 0;
7324
- width: 18px;
7325
- height: 18px;
7828
+ width: 16px;
7829
+ height: 16px;
7326
7830
  opacity: 0.7;
7327
7831
  }
7328
7832
 
@@ -7341,7 +7845,7 @@ button {
7341
7845
  }
7342
7846
 
7343
7847
  .theme-light .settings-sidebar {
7344
- border-right-color: rgba(0, 0, 0, 0.12);
7848
+ border-color: rgba(0, 0, 0, 0.12);
7345
7849
  }
7346
7850
 
7347
7851
  .settings-page-layout {
@@ -7353,13 +7857,37 @@ button {
7353
7857
  .settings-sidebar {
7354
7858
  width: 220px;
7355
7859
  padding: 16px;
7356
- border-right: 1px solid var(--color-border);
7860
+ margin: 16px 0 16px 16px;
7861
+ border: 1px solid var(--color-border);
7862
+ border-radius: 16px;
7863
+ box-shadow: var(--shadow-sm);
7357
7864
  background: var(--color-bg-secondary);
7358
7865
  display: flex;
7359
7866
  flex-direction: column;
7360
7867
  gap: 4px;
7361
7868
  }
7362
7869
 
7870
+ .settings-content-card {
7871
+ flex: 1;
7872
+ display: flex;
7873
+ flex-direction: column;
7874
+ min-width: 0;
7875
+ margin: 16px 16px 16px 12px;
7876
+ background: var(--color-bg-secondary);
7877
+ border: 1px solid var(--color-border);
7878
+ border-radius: 16px;
7879
+ box-shadow: var(--shadow-sm);
7880
+ overflow: hidden;
7881
+ }
7882
+
7883
+ .settings-sidebar-title {
7884
+ font-size: 18px;
7885
+ font-weight: 600;
7886
+ color: var(--color-text-primary);
7887
+ margin: 0 0 4px;
7888
+ -webkit-app-region: drag;
7889
+ }
7890
+
7363
7891
  .settings-sidebar-search {
7364
7892
  display: flex;
7365
7893
  align-items: center;
@@ -7494,8 +8022,9 @@ button {
7494
8022
  flex: 1;
7495
8023
  padding: 24px 32px;
7496
8024
  overflow-y: auto;
7497
- max-width: 800px;
7498
8025
  position: relative;
8026
+ width: 100%;
8027
+ max-width: none;
7499
8028
  }
7500
8029
 
7501
8030
  /* Mission Control needs full width - override constraints */
@@ -7505,6 +8034,7 @@ button {
7505
8034
  overflow: hidden;
7506
8035
  }
7507
8036
 
8037
+
7508
8038
  .settings-actions {
7509
8039
  display: flex;
7510
8040
  gap: 12px;
@@ -7519,14 +8049,733 @@ button {
7519
8049
  font-size: 14px;
7520
8050
  }
7521
8051
 
7522
- /* Ensure settings sections look good in full-page view */
7523
- .settings-page .settings-section {
7524
- margin-bottom: 24px;
7525
- padding-bottom: 0;
8052
+ /* Normalize controls in Settings to match LLM Provider styling */
8053
+ .settings-page :where(input[type="text"], input[type="password"], input[type="email"], input[type="url"], input[type="search"], input[type="number"], input[type="tel"], input[type="datetime-local"], input[type="date"], input[type="time"]) {
8054
+ width: 100%;
8055
+ padding: 10px 12px;
8056
+ background: var(--color-bg-input);
8057
+ border: 1px solid var(--color-border);
8058
+ border-radius: var(--radius-md);
8059
+ color: var(--color-text);
8060
+ font-size: 13px;
8061
+ outline: none;
8062
+ transition: all 0.2s ease;
8063
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
7526
8064
  }
7527
8065
 
7528
- .settings-page .settings-section:last-of-type {
7529
- margin-bottom: 0;
8066
+ .settings-page :where(input[type="text"], input[type="password"], input[type="email"], input[type="url"], input[type="search"], input[type="number"], input[type="tel"], input[type="datetime-local"], input[type="date"], input[type="time"]):hover {
8067
+ border-color: var(--color-border-light);
8068
+ background: rgba(0, 0, 0, 0.3);
8069
+ }
8070
+
8071
+ .settings-page :where(input[type="text"], input[type="password"], input[type="email"], input[type="url"], input[type="search"], input[type="number"], input[type="tel"], input[type="datetime-local"], input[type="date"], input[type="time"]):focus {
8072
+ border-color: var(--color-accent);
8073
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 0 3px var(--color-accent-subtle);
8074
+ }
8075
+
8076
+ .settings-page :where(input[type="text"], input[type="password"], input[type="email"], input[type="url"], input[type="search"], input[type="number"], input[type="tel"], input[type="datetime-local"], input[type="date"], input[type="time"])::placeholder {
8077
+ color: var(--color-text-muted);
8078
+ }
8079
+
8080
+ /* Preserve compact sidebar search styling */
8081
+ .settings-sidebar-search input {
8082
+ padding: 0;
8083
+ background: transparent;
8084
+ border: none;
8085
+ box-shadow: none;
8086
+ width: auto;
8087
+ font-size: 13px;
8088
+ }
8089
+
8090
+ .settings-sidebar-search input:focus {
8091
+ box-shadow: none;
8092
+ }
8093
+
8094
+ .settings-page :where(select) {
8095
+ width: 100%;
8096
+ padding: 10px 12px;
8097
+ background: var(--color-bg-input);
8098
+ border: 1px solid var(--color-border);
8099
+ border-radius: var(--radius-md);
8100
+ color: var(--color-text);
8101
+ font-size: 13px;
8102
+ cursor: pointer;
8103
+ outline: none;
8104
+ transition: all 0.2s ease;
8105
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
8106
+ }
8107
+
8108
+ .settings-page :where(select):hover {
8109
+ border-color: var(--color-border-light);
8110
+ background: rgba(0, 0, 0, 0.3);
8111
+ }
8112
+
8113
+ .settings-page :where(select):focus {
8114
+ border-color: var(--color-accent);
8115
+ }
8116
+
8117
+ .settings-page :where(textarea) {
8118
+ width: 100%;
8119
+ min-height: 80px;
8120
+ padding: 10px 12px;
8121
+ background: var(--color-bg-input);
8122
+ border: 1px solid var(--color-border);
8123
+ border-radius: var(--radius-md);
8124
+ color: var(--color-text);
8125
+ font-size: 13px;
8126
+ resize: vertical;
8127
+ outline: none;
8128
+ transition: all 0.2s ease;
8129
+ }
8130
+
8131
+ .settings-page :where(textarea):focus {
8132
+ border-color: var(--color-accent);
8133
+ }
8134
+
8135
+ .settings-page .btn-primary {
8136
+ background: linear-gradient(180deg, var(--color-accent-hover) 0%, var(--color-accent) 100%);
8137
+ color: #1a1a1a;
8138
+ border: 1px solid rgba(255, 255, 255, 0.2);
8139
+ box-shadow: var(--shadow-sm), inset 0 1px 0 rgba(255, 255, 255, 0.2);
8140
+ }
8141
+
8142
+ .settings-page .btn-primary::before {
8143
+ content: '';
8144
+ position: absolute;
8145
+ top: 0;
8146
+ left: 0;
8147
+ right: 0;
8148
+ height: 50%;
8149
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0) 100%);
8150
+ pointer-events: none;
8151
+ border-radius: var(--radius-md) var(--radius-md) 0 0;
8152
+ }
8153
+
8154
+ .settings-page .btn-primary:hover:not(:disabled) {
8155
+ background: linear-gradient(180deg, var(--color-accent-hover) 0%, var(--color-accent) 100%);
8156
+ transform: translateY(-1px);
8157
+ box-shadow: var(--shadow-md), inset 0 1px 0 rgba(255, 255, 255, 0.25);
8158
+ }
8159
+
8160
+ .settings-page .btn-primary:active:not(:disabled) {
8161
+ transform: translateY(0);
8162
+ }
8163
+
8164
+ .settings-page .btn-secondary {
8165
+ background: rgba(70, 70, 75, 0.8);
8166
+ color: var(--color-text);
8167
+ border: 1px solid var(--color-border-light);
8168
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
8169
+ }
8170
+
8171
+ .settings-page .btn-secondary::before {
8172
+ content: '';
8173
+ position: absolute;
8174
+ top: 0;
8175
+ left: 0;
8176
+ right: 0;
8177
+ height: 50%;
8178
+ background: var(--gradient-glossy);
8179
+ pointer-events: none;
8180
+ border-radius: var(--radius-md) var(--radius-md) 0 0;
8181
+ }
8182
+
8183
+ .settings-page .btn-secondary:hover:not(:disabled) {
8184
+ background: rgba(85, 85, 90, 0.9);
8185
+ border-color: rgba(255, 255, 255, 0.25);
8186
+ transform: translateY(-1px);
8187
+ box-shadow: var(--shadow-sm), inset 0 1px 0 rgba(255, 255, 255, 0.12);
8188
+ }
8189
+
8190
+ .settings-page .btn-secondary:active:not(:disabled) {
8191
+ transform: translateY(0);
8192
+ }
8193
+
8194
+ .settings-page .btn-danger {
8195
+ background: rgba(239, 68, 68, 0.1);
8196
+ border: 1px solid rgba(239, 68, 68, 0.3);
8197
+ color: var(--color-error);
8198
+ }
8199
+
8200
+ .settings-page .btn-danger:hover:not(:disabled) {
8201
+ background: rgba(239, 68, 68, 0.2);
8202
+ border-color: rgba(239, 68, 68, 0.5);
8203
+ }
8204
+
8205
+ .settings-page .btn-sm,
8206
+ .settings-page .btn-xs {
8207
+ padding: 4px 8px;
8208
+ font-size: 11px;
8209
+ }
8210
+
8211
+ .settings-page .btn-primary,
8212
+ .settings-page .btn-secondary,
8213
+ .settings-page .btn-danger {
8214
+ position: relative;
8215
+ overflow: hidden;
8216
+ }
8217
+
8218
+ .settings-section h2 {
8219
+ margin: 0 0 4px 0;
8220
+ font-size: 18px;
8221
+ font-weight: 600;
8222
+ color: var(--color-text);
8223
+ }
8224
+
8225
+ .settings-section h4 {
8226
+ font-size: 13px;
8227
+ font-weight: 600;
8228
+ color: var(--color-text);
8229
+ margin-bottom: 8px;
8230
+ }
8231
+
8232
+ .button-with-icon {
8233
+ gap: 8px;
8234
+ }
8235
+
8236
+ .settings-card {
8237
+ border: 1px solid var(--color-border-subtle);
8238
+ border-radius: var(--radius-md);
8239
+ background: var(--color-bg-glass);
8240
+ padding: 16px;
8241
+ }
8242
+
8243
+ .provider-config-panel {
8244
+ padding: 0;
8245
+ margin-top: 12px;
8246
+ }
8247
+
8248
+ .settings-card.is-selected {
8249
+ border-color: var(--color-accent);
8250
+ box-shadow: 0 0 0 1px var(--color-accent);
8251
+ }
8252
+
8253
+ .settings-badge {
8254
+ display: inline-flex;
8255
+ align-items: center;
8256
+ gap: 4px;
8257
+ padding: 2px 8px;
8258
+ border-radius: 999px;
8259
+ font-size: 11px;
8260
+ font-weight: 600;
8261
+ border: 1px solid var(--color-border-subtle);
8262
+ background: var(--color-bg-tertiary);
8263
+ color: var(--color-text-secondary);
8264
+ }
8265
+
8266
+ .settings-badge--success {
8267
+ background: var(--color-success-subtle);
8268
+ border-color: var(--color-success);
8269
+ color: var(--color-success);
8270
+ }
8271
+
8272
+ .settings-badge--warning {
8273
+ background: var(--color-warning-subtle);
8274
+ border-color: var(--color-warning);
8275
+ color: var(--color-warning);
8276
+ }
8277
+
8278
+ .settings-badge--error {
8279
+ background: var(--color-error-subtle);
8280
+ border-color: var(--color-error);
8281
+ color: var(--color-error);
8282
+ }
8283
+
8284
+ .settings-badge--neutral {
8285
+ background: var(--color-bg-secondary);
8286
+ border-color: var(--color-border-subtle);
8287
+ color: var(--color-text-muted);
8288
+ }
8289
+
8290
+ .settings-badge--outline {
8291
+ background: transparent;
8292
+ border-color: var(--color-border-subtle);
8293
+ color: var(--color-text-secondary);
8294
+ }
8295
+
8296
+ .settings-alert {
8297
+ display: flex;
8298
+ align-items: center;
8299
+ justify-content: space-between;
8300
+ gap: 12px;
8301
+ padding: 12px 14px;
8302
+ border-radius: var(--radius-md);
8303
+ border: 1px solid var(--color-border-subtle);
8304
+ background: var(--color-bg-secondary);
8305
+ color: var(--color-text-secondary);
8306
+ }
8307
+
8308
+ .settings-alert-error {
8309
+ border-color: var(--color-error);
8310
+ background: var(--color-error-subtle);
8311
+ color: var(--color-error);
8312
+ }
8313
+
8314
+ .settings-empty {
8315
+ padding: 24px;
8316
+ text-align: center;
8317
+ color: var(--color-text-muted);
8318
+ border: 1px dashed var(--color-border-subtle);
8319
+ border-radius: var(--radius-md);
8320
+ background: var(--color-bg-secondary);
8321
+ }
8322
+
8323
+ .scheduled-tasks-add {
8324
+ margin-bottom: 24px;
8325
+ }
8326
+
8327
+ .stat-value--success {
8328
+ color: var(--color-success);
8329
+ }
8330
+
8331
+ .stat-value--warning {
8332
+ color: var(--color-warning);
8333
+ }
8334
+
8335
+ .stat-value--error {
8336
+ color: var(--color-error);
8337
+ }
8338
+
8339
+ /* SkillHub Settings */
8340
+ .skillhub-settings {
8341
+ display: flex;
8342
+ flex-direction: column;
8343
+ gap: 16px;
8344
+ }
8345
+
8346
+ .skillhub-tab-content {
8347
+ display: flex;
8348
+ flex-direction: column;
8349
+ gap: 16px;
8350
+ min-height: 0;
8351
+ }
8352
+
8353
+ .skillhub-tab {
8354
+ display: flex;
8355
+ flex-direction: column;
8356
+ gap: 16px;
8357
+ }
8358
+
8359
+ .skillhub-list {
8360
+ display: flex;
8361
+ flex-direction: column;
8362
+ gap: 12px;
8363
+ }
8364
+
8365
+ .skillhub-card {
8366
+ cursor: pointer;
8367
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
8368
+ }
8369
+
8370
+ .skillhub-card.is-selected {
8371
+ border-color: var(--color-accent);
8372
+ box-shadow: 0 0 0 1px var(--color-accent);
8373
+ }
8374
+
8375
+ .skillhub-card-header {
8376
+ display: flex;
8377
+ align-items: flex-start;
8378
+ justify-content: space-between;
8379
+ gap: 12px;
8380
+ }
8381
+
8382
+ .skillhub-card-actions {
8383
+ display: flex;
8384
+ align-items: center;
8385
+ gap: 8px;
8386
+ }
8387
+
8388
+ .skillhub-card-info {
8389
+ display: flex;
8390
+ align-items: flex-start;
8391
+ gap: 10px;
8392
+ }
8393
+
8394
+ .skillhub-icon {
8395
+ font-size: 20px;
8396
+ line-height: 1;
8397
+ }
8398
+
8399
+ .skillhub-title-row {
8400
+ display: flex;
8401
+ align-items: center;
8402
+ flex-wrap: wrap;
8403
+ gap: 8px;
8404
+ }
8405
+
8406
+ .skillhub-title {
8407
+ margin: 0;
8408
+ font-size: 13px;
8409
+ font-weight: 600;
8410
+ color: var(--color-text-primary);
8411
+ }
8412
+
8413
+ .skillhub-description {
8414
+ margin-top: 4px;
8415
+ }
8416
+
8417
+ .skillhub-meta {
8418
+ margin-top: 4px;
8419
+ font-size: 11px;
8420
+ color: var(--color-text-muted);
8421
+ }
8422
+
8423
+ .skillhub-tags {
8424
+ display: flex;
8425
+ flex-wrap: wrap;
8426
+ gap: 6px;
8427
+ margin-top: 8px;
8428
+ }
8429
+
8430
+ .skillhub-warnings {
8431
+ margin-top: 8px;
8432
+ font-size: 12px;
8433
+ color: var(--color-warning);
8434
+ display: flex;
8435
+ flex-direction: column;
8436
+ gap: 4px;
8437
+ }
8438
+
8439
+ .skillhub-group {
8440
+ border: 1px solid var(--color-border-subtle);
8441
+ border-radius: var(--radius-md);
8442
+ background: var(--color-bg-secondary);
8443
+ }
8444
+
8445
+ .skillhub-group summary {
8446
+ list-style: none;
8447
+ cursor: pointer;
8448
+ padding: 10px 14px;
8449
+ display: flex;
8450
+ align-items: center;
8451
+ justify-content: space-between;
8452
+ gap: 12px;
8453
+ font-size: 13px;
8454
+ font-weight: 600;
8455
+ color: var(--color-text-primary);
8456
+ }
8457
+
8458
+ .skillhub-group-title {
8459
+ text-transform: capitalize;
8460
+ }
8461
+
8462
+ .skillhub-group summary::-webkit-details-marker {
8463
+ display: none;
8464
+ }
8465
+
8466
+ .skillhub-group[open] summary {
8467
+ border-bottom: 1px solid var(--color-border-subtle);
8468
+ }
8469
+
8470
+ .skillhub-group-content {
8471
+ padding: 10px 14px;
8472
+ display: flex;
8473
+ flex-direction: column;
8474
+ gap: 8px;
8475
+ }
8476
+
8477
+ .skillhub-group-item {
8478
+ display: flex;
8479
+ align-items: center;
8480
+ justify-content: space-between;
8481
+ gap: 12px;
8482
+ padding: 6px 0;
8483
+ border-bottom: 1px solid var(--color-border-subtle);
8484
+ }
8485
+
8486
+ .skillhub-group-item:last-child {
8487
+ border-bottom: none;
8488
+ }
8489
+
8490
+ .skillhub-group-info {
8491
+ display: flex;
8492
+ align-items: center;
8493
+ gap: 8px;
8494
+ font-size: 12px;
8495
+ color: var(--color-text-secondary);
8496
+ }
8497
+
8498
+ /* Nodes Settings */
8499
+ .nodes-settings {
8500
+ display: flex;
8501
+ flex-direction: column;
8502
+ gap: 16px;
8503
+ }
8504
+
8505
+ .nodes-empty-card {
8506
+ border: 1px solid var(--color-border-subtle);
8507
+ border-radius: var(--radius-md);
8508
+ background: var(--color-bg-secondary);
8509
+ padding: 16px;
8510
+ }
8511
+
8512
+ .nodes-empty-card h4 {
8513
+ margin: 0 0 8px;
8514
+ font-size: 13px;
8515
+ font-weight: 600;
8516
+ color: var(--color-text-primary);
8517
+ }
8518
+
8519
+ .nodes-empty-card ol {
8520
+ margin: 0;
8521
+ padding-left: 18px;
8522
+ font-size: 12px;
8523
+ color: var(--color-text-muted);
8524
+ display: flex;
8525
+ flex-direction: column;
8526
+ gap: 6px;
8527
+ }
8528
+
8529
+ .nodes-connection-note {
8530
+ margin-top: 12px;
8531
+ padding: 10px;
8532
+ background: var(--color-bg-tertiary);
8533
+ border-radius: var(--radius-md);
8534
+ font-size: 12px;
8535
+ color: var(--color-text-muted);
8536
+ display: flex;
8537
+ flex-direction: column;
8538
+ gap: 4px;
8539
+ }
8540
+
8541
+ .nodes-connection-note code {
8542
+ font-family: 'SF Mono', monospace;
8543
+ font-size: 12px;
8544
+ color: var(--color-text-secondary);
8545
+ }
8546
+
8547
+ .nodes-list {
8548
+ display: flex;
8549
+ flex-direction: column;
8550
+ gap: 12px;
8551
+ }
8552
+
8553
+ .nodes-card {
8554
+ border: 1px solid var(--color-border-subtle);
8555
+ border-radius: var(--radius-md);
8556
+ background: var(--color-bg-glass);
8557
+ padding: 16px;
8558
+ cursor: pointer;
8559
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
8560
+ }
8561
+
8562
+ .nodes-card:hover {
8563
+ border-color: var(--color-border);
8564
+ }
8565
+
8566
+ .nodes-card.is-active {
8567
+ border-color: var(--color-accent);
8568
+ box-shadow: 0 0 0 1px var(--color-accent-subtle);
8569
+ }
8570
+
8571
+ .nodes-card-header {
8572
+ display: flex;
8573
+ align-items: center;
8574
+ justify-content: space-between;
8575
+ gap: 12px;
8576
+ }
8577
+
8578
+ .nodes-card-info {
8579
+ display: flex;
8580
+ align-items: center;
8581
+ gap: 10px;
8582
+ }
8583
+
8584
+ .nodes-platform-icon {
8585
+ font-size: 20px;
8586
+ }
8587
+
8588
+ .nodes-card-title {
8589
+ margin: 0;
8590
+ font-size: 13px;
8591
+ font-weight: 600;
8592
+ color: var(--color-text-primary);
8593
+ }
8594
+
8595
+ .nodes-card-subtitle {
8596
+ margin: 2px 0 0;
8597
+ font-size: 12px;
8598
+ color: var(--color-text-muted);
8599
+ }
8600
+
8601
+ .nodes-status {
8602
+ display: inline-flex;
8603
+ align-items: center;
8604
+ padding: 2px 8px;
8605
+ border-radius: 999px;
8606
+ font-size: 11px;
8607
+ border: 1px solid var(--color-border-subtle);
8608
+ background: var(--color-bg-tertiary);
8609
+ color: var(--color-text-secondary);
8610
+ }
8611
+
8612
+ .nodes-status.foreground {
8613
+ background: var(--color-success-subtle);
8614
+ border-color: var(--color-success);
8615
+ color: var(--color-success);
8616
+ }
8617
+
8618
+ .nodes-status.background {
8619
+ background: var(--color-warning-subtle);
8620
+ border-color: var(--color-warning);
8621
+ color: var(--color-warning);
8622
+ }
8623
+
8624
+ .nodes-capabilities {
8625
+ margin-top: 10px;
8626
+ display: flex;
8627
+ flex-wrap: wrap;
8628
+ gap: 6px;
8629
+ }
8630
+
8631
+ .nodes-capability {
8632
+ display: inline-flex;
8633
+ align-items: center;
8634
+ gap: 4px;
8635
+ padding: 2px 8px;
8636
+ border-radius: 6px;
8637
+ font-size: 11px;
8638
+ background: var(--color-bg-tertiary);
8639
+ border: 1px solid var(--color-border-subtle);
8640
+ color: var(--color-text-secondary);
8641
+ }
8642
+
8643
+ .nodes-capability.denied {
8644
+ opacity: 0.6;
8645
+ }
8646
+
8647
+ .nodes-details {
8648
+ margin-top: 12px;
8649
+ padding-top: 12px;
8650
+ border-top: 1px solid var(--color-border-subtle);
8651
+ display: flex;
8652
+ flex-direction: column;
8653
+ gap: 12px;
8654
+ }
8655
+
8656
+ .nodes-detail-grid {
8657
+ display: grid;
8658
+ grid-template-columns: repeat(2, minmax(0, 1fr));
8659
+ gap: 8px 16px;
8660
+ font-size: 12px;
8661
+ }
8662
+
8663
+ .nodes-detail {
8664
+ display: flex;
8665
+ flex-direction: column;
8666
+ gap: 4px;
8667
+ }
8668
+
8669
+ .nodes-detail-label {
8670
+ font-size: 11px;
8671
+ color: var(--color-text-muted);
8672
+ }
8673
+
8674
+ .nodes-detail-value {
8675
+ color: var(--color-text-secondary);
8676
+ font-size: 12px;
8677
+ }
8678
+
8679
+ .nodes-detail-mono {
8680
+ font-family: 'SF Mono', monospace;
8681
+ }
8682
+
8683
+ .nodes-test h5 {
8684
+ margin: 0 0 8px;
8685
+ font-size: 11px;
8686
+ text-transform: uppercase;
8687
+ letter-spacing: 0.5px;
8688
+ color: var(--color-text-muted);
8689
+ }
8690
+
8691
+ .nodes-test-actions {
8692
+ display: flex;
8693
+ flex-wrap: wrap;
8694
+ gap: 6px;
8695
+ }
8696
+
8697
+ .nodes-command-btn {
8698
+ padding: 6px 8px;
8699
+ font-size: 11px;
8700
+ border-radius: var(--radius-sm);
8701
+ border: 1px solid var(--color-border-subtle);
8702
+ background: var(--color-bg-tertiary);
8703
+ color: var(--color-text-secondary);
8704
+ cursor: pointer;
8705
+ }
8706
+
8707
+ .nodes-command-btn:hover:not(:disabled) {
8708
+ background: var(--color-bg-hover);
8709
+ color: var(--color-text-primary);
8710
+ }
8711
+
8712
+ .nodes-command-btn:disabled {
8713
+ opacity: 0.6;
8714
+ cursor: not-allowed;
8715
+ }
8716
+
8717
+ .nodes-result {
8718
+ padding: 10px;
8719
+ border-radius: var(--radius-md);
8720
+ border: 1px solid var(--color-border-subtle);
8721
+ font-size: 12px;
8722
+ }
8723
+
8724
+ .nodes-result.success {
8725
+ background: var(--color-success-subtle);
8726
+ border-color: var(--color-success);
8727
+ color: var(--color-success);
8728
+ }
8729
+
8730
+ .nodes-result.error {
8731
+ background: var(--color-error-subtle);
8732
+ border-color: var(--color-error);
8733
+ color: var(--color-error);
8734
+ }
8735
+
8736
+ .nodes-result-title {
8737
+ margin: 0;
8738
+ font-weight: 600;
8739
+ }
8740
+
8741
+ .nodes-result-error {
8742
+ margin-top: 6px;
8743
+ color: var(--color-error);
8744
+ }
8745
+
8746
+ .nodes-result-pre {
8747
+ margin-top: 8px;
8748
+ padding: 8px;
8749
+ background: var(--color-bg-tertiary);
8750
+ border-radius: var(--radius-md);
8751
+ max-height: 160px;
8752
+ overflow: auto;
8753
+ color: var(--color-text-secondary);
8754
+ }
8755
+
8756
+ .nodes-summary {
8757
+ padding: 10px 12px;
8758
+ background: var(--color-bg-secondary);
8759
+ border: 1px solid var(--color-border-subtle);
8760
+ border-radius: var(--radius-md);
8761
+ font-size: 12px;
8762
+ color: var(--color-text-muted);
8763
+ }
8764
+
8765
+ .nodes-summary-count,
8766
+ .nodes-summary-highlight {
8767
+ font-weight: 600;
8768
+ color: var(--color-text-primary);
8769
+ }
8770
+
8771
+ /* Ensure settings sections look good in full-page view */
8772
+ .settings-page .settings-section {
8773
+ margin-bottom: 24px;
8774
+ padding-bottom: 0;
8775
+ }
8776
+
8777
+ .settings-page .settings-section:last-of-type {
8778
+ margin-bottom: 0;
7530
8779
  }
7531
8780
 
7532
8781
  .settings-page .provider-options {
@@ -7614,6 +8863,80 @@ button {
7614
8863
  background: rgba(239, 68, 68, 0.08);
7615
8864
  }
7616
8865
 
8866
+ .notion-status-badge {
8867
+ display: inline-flex;
8868
+ align-items: center;
8869
+ padding: 4px 10px;
8870
+ border-radius: 999px;
8871
+ font-size: 11px;
8872
+ font-weight: 600;
8873
+ border: 1px solid var(--color-border);
8874
+ background: var(--color-bg-glass);
8875
+ color: var(--color-text-secondary);
8876
+ }
8877
+
8878
+ .notion-status-badge.connected {
8879
+ color: var(--color-success, #22c55e);
8880
+ border-color: rgba(34, 197, 94, 0.35);
8881
+ background: rgba(34, 197, 94, 0.08);
8882
+ }
8883
+
8884
+ .notion-status-badge.configured {
8885
+ color: var(--color-text-secondary);
8886
+ border-color: var(--color-border);
8887
+ }
8888
+
8889
+ .notion-status-badge.missing {
8890
+ color: var(--color-error, #ef4444);
8891
+ border-color: rgba(239, 68, 68, 0.35);
8892
+ background: rgba(239, 68, 68, 0.08);
8893
+ }
8894
+
8895
+ .box-status-badge,
8896
+ .onedrive-status-badge,
8897
+ .google-workspace-status-badge,
8898
+ .dropbox-status-badge,
8899
+ .sharepoint-status-badge {
8900
+ display: inline-flex;
8901
+ align-items: center;
8902
+ padding: 4px 10px;
8903
+ border-radius: 999px;
8904
+ font-size: 11px;
8905
+ font-weight: 600;
8906
+ border: 1px solid var(--color-border);
8907
+ background: var(--color-bg-glass);
8908
+ color: var(--color-text-secondary);
8909
+ }
8910
+
8911
+ .box-status-badge.connected,
8912
+ .onedrive-status-badge.connected,
8913
+ .google-workspace-status-badge.connected,
8914
+ .dropbox-status-badge.connected,
8915
+ .sharepoint-status-badge.connected {
8916
+ color: var(--color-success, #22c55e);
8917
+ border-color: rgba(34, 197, 94, 0.35);
8918
+ background: rgba(34, 197, 94, 0.08);
8919
+ }
8920
+
8921
+ .box-status-badge.configured,
8922
+ .onedrive-status-badge.configured,
8923
+ .google-workspace-status-badge.configured,
8924
+ .dropbox-status-badge.configured,
8925
+ .sharepoint-status-badge.configured {
8926
+ color: var(--color-text-secondary);
8927
+ border-color: var(--color-border);
8928
+ }
8929
+
8930
+ .box-status-badge.missing,
8931
+ .onedrive-status-badge.missing,
8932
+ .google-workspace-status-badge.missing,
8933
+ .dropbox-status-badge.missing,
8934
+ .sharepoint-status-badge.missing {
8935
+ color: var(--color-error, #ef4444);
8936
+ border-color: rgba(239, 68, 68, 0.35);
8937
+ background: rgba(239, 68, 68, 0.08);
8938
+ }
8939
+
7617
8940
  .settings-toggle {
7618
8941
  position: relative;
7619
8942
  display: inline-block;
@@ -7653,12 +8976,12 @@ button {
7653
8976
  transition: 0.2s;
7654
8977
  }
7655
8978
 
7656
- .settings-toggle input:checked + .toggle-slider {
8979
+ .settings-toggle input:checked+.toggle-slider {
7657
8980
  background-color: var(--color-accent);
7658
8981
  border-color: var(--color-accent);
7659
8982
  }
7660
8983
 
7661
- .settings-toggle input:checked + .toggle-slider::before {
8984
+ .settings-toggle input:checked+.toggle-slider::before {
7662
8985
  transform: translateX(20px);
7663
8986
  background-color: white;
7664
8987
  }
@@ -7754,8 +9077,8 @@ button {
7754
9077
  .goal-mode-section {
7755
9078
  margin-top: 12px;
7756
9079
  padding: 12px 16px;
7757
- background: rgba(255, 255, 255, 0.03);
7758
- border: 1px solid var(--color-border-subtle);
9080
+ background: var(--color-bg-secondary);
9081
+ border: 1px solid var(--color-border);
7759
9082
  border-radius: var(--radius-md);
7760
9083
  }
7761
9084
 
@@ -7795,8 +9118,8 @@ button {
7795
9118
  display: flex;
7796
9119
  align-items: center;
7797
9120
  gap: 8px;
7798
- background: rgba(0, 0, 0, 0.3);
7799
- border: 1px solid var(--color-border-subtle);
9121
+ background: var(--color-bg-input);
9122
+ border: 1px solid var(--color-border);
7800
9123
  border-radius: var(--radius-sm);
7801
9124
  padding: 8px 12px;
7802
9125
  }
@@ -7837,8 +9160,8 @@ button {
7837
9160
  .goal-mode-attempts input[type="number"] {
7838
9161
  width: 50px;
7839
9162
  padding: 4px 8px;
7840
- background: rgba(0, 0, 0, 0.3);
7841
- border: 1px solid var(--color-border-subtle);
9163
+ background: var(--color-bg-input);
9164
+ border: 1px solid var(--color-border);
7842
9165
  border-radius: var(--radius-sm);
7843
9166
  color: var(--color-text);
7844
9167
  font-size: 13px;
@@ -7914,11 +9237,36 @@ button {
7914
9237
  border: 1px solid rgba(0, 0, 0, 0.1);
7915
9238
  }
7916
9239
 
9240
+ .theme-option-preview.terminal {
9241
+ background: #000000;
9242
+ border: 1px solid rgba(255, 255, 255, 0.2);
9243
+ font-family: 'JetBrains Mono', monospace;
9244
+ }
9245
+
9246
+ .theme-option-preview.terminal .code-line {
9247
+ background: #33ff00;
9248
+ height: 2px;
9249
+ margin-bottom: 4px;
9250
+ box-shadow: 0 0 4px #33ff00;
9251
+ }
9252
+
7917
9253
  .theme-option-preview.system {
7918
9254
  background: linear-gradient(135deg, #1e1e1e 0%, #1e1e1e 50%, #ffffff 50%, #f5f5f7 100%);
7919
9255
  border: 1px solid rgba(128, 128, 128, 0.2);
7920
9256
  }
7921
9257
 
9258
+ .theme-option-preview.warm {
9259
+ background: linear-gradient(135deg, #fff1e6 0%, #f4d9c8 100%);
9260
+ border: 1px solid rgba(120, 90, 70, 0.18);
9261
+ }
9262
+
9263
+ .theme-option-preview.warm .ui-line {
9264
+ background: rgba(120, 90, 70, 0.35);
9265
+ height: 3px;
9266
+ border-radius: 2px;
9267
+ margin-bottom: 4px;
9268
+ }
9269
+
7922
9270
  .theme-option-preview-line {
7923
9271
  position: absolute;
7924
9272
  left: 8px;
@@ -7934,9 +9282,20 @@ button {
7934
9282
  background: rgba(0, 0, 0, 0.15);
7935
9283
  }
7936
9284
 
7937
- .theme-option-preview-line:nth-child(1) { top: 10px; width: 28px; }
7938
- .theme-option-preview-line:nth-child(2) { top: 18px; width: 40px; }
7939
- .theme-option-preview-line:nth-child(3) { top: 26px; width: 20px; }
9285
+ .theme-option-preview-line:nth-child(1) {
9286
+ top: 10px;
9287
+ width: 28px;
9288
+ }
9289
+
9290
+ .theme-option-preview-line:nth-child(2) {
9291
+ top: 18px;
9292
+ width: 40px;
9293
+ }
9294
+
9295
+ .theme-option-preview-line:nth-child(3) {
9296
+ top: 26px;
9297
+ width: 20px;
9298
+ }
7940
9299
 
7941
9300
  .theme-option-label {
7942
9301
  font-size: 13px;
@@ -7986,31 +9345,54 @@ button {
7986
9345
  box-shadow: var(--shadow-sm);
7987
9346
  }
7988
9347
 
7989
- .color-swatch::after {
7990
- content: '';
7991
- position: absolute;
7992
- inset: 0;
7993
- border-radius: 50%;
7994
- box-shadow: inset 0 2px 4px rgba(255, 255, 255, 0.2);
9348
+ .color-swatch::after {
9349
+ content: '';
9350
+ position: absolute;
9351
+ inset: 0;
9352
+ border-radius: 50%;
9353
+ box-shadow: inset 0 2px 4px rgba(255, 255, 255, 0.2);
9354
+ }
9355
+
9356
+ .color-option.selected .color-swatch::before {
9357
+ content: '';
9358
+ position: absolute;
9359
+ inset: -4px;
9360
+ border-radius: 50%;
9361
+ border: 2px solid currentColor;
9362
+ opacity: 0.3;
9363
+ }
9364
+
9365
+ .color-swatch.cyan {
9366
+ background: linear-gradient(135deg, #22d3ee 0%, #06b6d4 100%);
9367
+ }
9368
+
9369
+ .color-swatch.blue {
9370
+ background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
9371
+ }
9372
+
9373
+ .color-swatch.purple {
9374
+ background: linear-gradient(135deg, #a78bfa 0%, #7c3aed 100%);
9375
+ }
9376
+
9377
+ .color-swatch.pink {
9378
+ background: linear-gradient(135deg, #f472b6 0%, #db2777 100%);
9379
+ }
9380
+
9381
+ .color-swatch.rose {
9382
+ background: linear-gradient(135deg, #fb7185 0%, #e11d48 100%);
9383
+ }
9384
+
9385
+ .color-swatch.orange {
9386
+ background: linear-gradient(135deg, #fb923c 0%, #ea580c 100%);
7995
9387
  }
7996
9388
 
7997
- .color-option.selected .color-swatch::before {
7998
- content: '';
7999
- position: absolute;
8000
- inset: -4px;
8001
- border-radius: 50%;
8002
- border: 2px solid currentColor;
8003
- opacity: 0.3;
9389
+ .color-swatch.green {
9390
+ background: linear-gradient(135deg, #34d399 0%, #059669 100%);
8004
9391
  }
8005
9392
 
8006
- .color-swatch.cyan { background: linear-gradient(135deg, #22d3ee 0%, #06b6d4 100%); }
8007
- .color-swatch.blue { background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); }
8008
- .color-swatch.purple { background: linear-gradient(135deg, #a78bfa 0%, #7c3aed 100%); }
8009
- .color-swatch.pink { background: linear-gradient(135deg, #f472b6 0%, #db2777 100%); }
8010
- .color-swatch.rose { background: linear-gradient(135deg, #fb7185 0%, #e11d48 100%); }
8011
- .color-swatch.orange { background: linear-gradient(135deg, #fb923c 0%, #ea580c 100%); }
8012
- .color-swatch.green { background: linear-gradient(135deg, #34d399 0%, #059669 100%); }
8013
- .color-swatch.teal { background: linear-gradient(135deg, #2dd4bf 0%, #0d9488 100%); }
9393
+ .color-swatch.teal {
9394
+ background: linear-gradient(135deg, #2dd4bf 0%, #0d9488 100%);
9395
+ }
8014
9396
 
8015
9397
  .color-label {
8016
9398
  font-size: 11px;
@@ -8273,6 +9655,7 @@ button {
8273
9655
  opacity: 0;
8274
9656
  transform: translateX(100%);
8275
9657
  }
9658
+
8276
9659
  to {
8277
9660
  opacity: 1;
8278
9661
  transform: translateX(0);
@@ -8408,6 +9791,7 @@ button {
8408
9791
  opacity: 0;
8409
9792
  transform: translateY(10px);
8410
9793
  }
9794
+
8411
9795
  to {
8412
9796
  opacity: 1;
8413
9797
  transform: translateY(0);
@@ -8793,17 +10177,17 @@ button {
8793
10177
  transition: all 0.2s ease;
8794
10178
  }
8795
10179
 
8796
- .skill-toggle input:checked + .skill-toggle-slider {
10180
+ .skill-toggle input:checked+.skill-toggle-slider {
8797
10181
  background: var(--color-primary);
8798
10182
  border-color: var(--color-primary);
8799
10183
  }
8800
10184
 
8801
- .skill-toggle input:checked + .skill-toggle-slider:before {
10185
+ .skill-toggle input:checked+.skill-toggle-slider:before {
8802
10186
  transform: translateX(18px);
8803
10187
  background: white;
8804
10188
  }
8805
10189
 
8806
- .skill-toggle input:focus + .skill-toggle-slider {
10190
+ .skill-toggle input:focus+.skill-toggle-slider {
8807
10191
  box-shadow: 0 0 0 2px rgba(var(--color-primary-rgb), 0.3);
8808
10192
  }
8809
10193
 
@@ -9208,12 +10592,12 @@ button {
9208
10592
  border-radius: 50%;
9209
10593
  }
9210
10594
 
9211
- .toggle-switch input:checked + .toggle-slider {
10595
+ .toggle-switch input:checked+.toggle-slider {
9212
10596
  background-color: var(--color-accent);
9213
10597
  border-color: var(--color-accent);
9214
10598
  }
9215
10599
 
9216
- .toggle-switch input:checked + .toggle-slider:before {
10600
+ .toggle-switch input:checked+.toggle-slider:before {
9217
10601
  background-color: white;
9218
10602
  transform: translateX(18px);
9219
10603
  }
@@ -9388,6 +10772,26 @@ button {
9388
10772
  overflow-y: auto;
9389
10773
  }
9390
10774
 
10775
+ .connector-setup-modal .settings-field label {
10776
+ display: block;
10777
+ font-size: 12px;
10778
+ color: var(--color-text-secondary);
10779
+ margin-bottom: 6px;
10780
+ }
10781
+
10782
+ .connector-mode-toggle {
10783
+ display: flex;
10784
+ gap: 8px;
10785
+ flex-wrap: wrap;
10786
+ }
10787
+
10788
+ .connector-setup-actions {
10789
+ margin-top: 12px;
10790
+ display: flex;
10791
+ gap: 8px;
10792
+ flex-wrap: wrap;
10793
+ }
10794
+
9391
10795
  .mcp-modal-wide {
9392
10796
  max-width: 500px;
9393
10797
  }
@@ -9740,12 +11144,12 @@ button {
9740
11144
  border-radius: 50%;
9741
11145
  }
9742
11146
 
9743
- .builtin-tool-toggle input:checked + .builtin-tool-toggle-slider {
11147
+ .builtin-tool-toggle input:checked+.builtin-tool-toggle-slider {
9744
11148
  background-color: var(--color-accent);
9745
11149
  border-color: var(--color-accent);
9746
11150
  }
9747
11151
 
9748
- .builtin-tool-toggle input:checked + .builtin-tool-toggle-slider:before {
11152
+ .builtin-tool-toggle input:checked+.builtin-tool-toggle-slider:before {
9749
11153
  transform: translateX(18px);
9750
11154
  background-color: white;
9751
11155
  }
@@ -9767,6 +11171,53 @@ button {
9767
11171
  color: var(--color-text);
9768
11172
  }
9769
11173
 
11174
+ .builtin-tool-advanced {
11175
+ border-top: 1px solid var(--color-border);
11176
+ padding: 12px 16px 4px;
11177
+ display: flex;
11178
+ flex-direction: column;
11179
+ gap: 10px;
11180
+ }
11181
+
11182
+ .builtin-tool-advanced-row {
11183
+ display: flex;
11184
+ align-items: center;
11185
+ justify-content: space-between;
11186
+ gap: 12px;
11187
+ }
11188
+
11189
+ .builtin-tool-advanced-text {
11190
+ display: flex;
11191
+ flex-direction: column;
11192
+ gap: 2px;
11193
+ }
11194
+
11195
+ .builtin-tool-advanced-label {
11196
+ font-size: 12px;
11197
+ font-weight: 600;
11198
+ color: var(--color-text);
11199
+ }
11200
+
11201
+ .builtin-tool-advanced-hint {
11202
+ font-size: 11px;
11203
+ color: var(--color-text-secondary);
11204
+ }
11205
+
11206
+ .builtin-tool-timeout-input {
11207
+ width: 110px;
11208
+ padding: 4px 6px;
11209
+ font-size: 12px;
11210
+ background: var(--color-bg-secondary);
11211
+ border: 1px solid var(--color-border);
11212
+ border-radius: var(--radius-sm);
11213
+ color: var(--color-text);
11214
+ }
11215
+
11216
+ .builtin-tool-timeout-input:disabled {
11217
+ opacity: 0.5;
11218
+ cursor: not-allowed;
11219
+ }
11220
+
9770
11221
  .builtin-tool-list {
9771
11222
  padding: 0 16px 16px;
9772
11223
  display: flex;
@@ -10212,6 +11663,7 @@ button {
10212
11663
  opacity: 0;
10213
11664
  transform: translateY(20px);
10214
11665
  }
11666
+
10215
11667
  to {
10216
11668
  opacity: 1;
10217
11669
  transform: translateY(0);
@@ -10515,7 +11967,9 @@ button {
10515
11967
  }
10516
11968
 
10517
11969
  @keyframes file-viewer-spin {
10518
- to { transform: rotate(360deg); }
11970
+ to {
11971
+ transform: rotate(360deg);
11972
+ }
10519
11973
  }
10520
11974
 
10521
11975
  /* Error state */
@@ -11042,8 +12496,15 @@ button {
11042
12496
  }
11043
12497
 
11044
12498
  @keyframes pulse {
11045
- 0%, 100% { opacity: 1; }
11046
- 50% { opacity: 0.6; }
12499
+
12500
+ 0%,
12501
+ 100% {
12502
+ opacity: 1;
12503
+ }
12504
+
12505
+ 50% {
12506
+ opacity: 0.6;
12507
+ }
11047
12508
  }
11048
12509
 
11049
12510
  .command-output-content {
@@ -11217,8 +12678,15 @@ button {
11217
12678
  }
11218
12679
 
11219
12680
  @keyframes pulse {
11220
- 0%, 100% { opacity: 1; }
11221
- 50% { opacity: 0.5; }
12681
+
12682
+ 0%,
12683
+ 100% {
12684
+ opacity: 1;
12685
+ }
12686
+
12687
+ 50% {
12688
+ opacity: 0.5;
12689
+ }
11222
12690
  }
11223
12691
 
11224
12692
  .command-force-kill-btn {
@@ -11309,6 +12777,46 @@ button {
11309
12777
  gap: 8px;
11310
12778
  }
11311
12779
 
12780
+ .canvas-browser-input-row {
12781
+ display: flex;
12782
+ align-items: center;
12783
+ gap: 8px;
12784
+ padding: 8px 12px;
12785
+ background: rgba(0, 0, 0, 0.2);
12786
+ border-bottom: 1px solid var(--color-border-subtle);
12787
+ }
12788
+
12789
+ .canvas-browser-input {
12790
+ flex: 1;
12791
+ min-width: 160px;
12792
+ padding: 6px 8px;
12793
+ border: 1px solid var(--color-border-subtle);
12794
+ border-radius: 6px;
12795
+ background: var(--color-bg);
12796
+ color: var(--color-text);
12797
+ font-size: 12px;
12798
+ }
12799
+
12800
+ .canvas-browser-btn {
12801
+ padding: 6px 10px;
12802
+ border-radius: 6px;
12803
+ border: 1px solid var(--color-border-subtle);
12804
+ background: var(--color-bg-hover);
12805
+ color: var(--color-text);
12806
+ font-size: 12px;
12807
+ cursor: pointer;
12808
+ transition: all 0.15s ease;
12809
+ }
12810
+
12811
+ .canvas-browser-btn:hover {
12812
+ border-color: var(--color-border);
12813
+ }
12814
+
12815
+ .canvas-browser-btn.ghost {
12816
+ background: transparent;
12817
+ color: var(--color-text-muted);
12818
+ }
12819
+
11312
12820
  .canvas-preview-container.minimized .canvas-preview-header {
11313
12821
  border-bottom: none;
11314
12822
  }
@@ -11529,8 +13037,13 @@ button {
11529
13037
  }
11530
13038
 
11531
13039
  @keyframes spin {
11532
- from { transform: rotate(0deg); }
11533
- to { transform: rotate(360deg); }
13040
+ from {
13041
+ transform: rotate(0deg);
13042
+ }
13043
+
13044
+ to {
13045
+ transform: rotate(360deg);
13046
+ }
11534
13047
  }
11535
13048
 
11536
13049
  /* Light theme canvas preview adjustments */
@@ -11555,6 +13068,81 @@ button {
11555
13068
  background: rgba(255, 255, 255, 0.9);
11556
13069
  }
11557
13070
 
13071
+ .browser-view {
13072
+ height: calc(100vh - 40px);
13073
+ display: flex;
13074
+ flex-direction: column;
13075
+ background: var(--color-bg);
13076
+ color: var(--color-text);
13077
+ }
13078
+
13079
+ .browser-toolbar {
13080
+ display: flex;
13081
+ align-items: center;
13082
+ gap: 8px;
13083
+ padding: 10px 16px;
13084
+ border-bottom: 1px solid var(--color-border-subtle);
13085
+ background: rgba(0, 0, 0, 0.2);
13086
+ }
13087
+
13088
+ .browser-toolbar-btn {
13089
+ display: inline-flex;
13090
+ align-items: center;
13091
+ gap: 6px;
13092
+ padding: 6px 10px;
13093
+ border-radius: 6px;
13094
+ border: 1px solid var(--color-border-subtle);
13095
+ background: transparent;
13096
+ color: var(--color-text);
13097
+ font-size: 12px;
13098
+ cursor: pointer;
13099
+ transition: all 0.15s ease;
13100
+ }
13101
+
13102
+ .browser-toolbar-btn.primary {
13103
+ background: var(--color-accent);
13104
+ border-color: transparent;
13105
+ color: #0b0b0b;
13106
+ }
13107
+
13108
+ .browser-toolbar-btn:hover {
13109
+ border-color: var(--color-border);
13110
+ }
13111
+
13112
+ .browser-url {
13113
+ display: flex;
13114
+ align-items: center;
13115
+ gap: 8px;
13116
+ flex: 1;
13117
+ }
13118
+
13119
+ .browser-url input {
13120
+ flex: 1;
13121
+ min-width: 200px;
13122
+ padding: 6px 10px;
13123
+ border-radius: 6px;
13124
+ border: 1px solid var(--color-border-subtle);
13125
+ background: var(--color-bg);
13126
+ color: var(--color-text);
13127
+ font-size: 12px;
13128
+ }
13129
+
13130
+ .browser-surface {
13131
+ flex: 1;
13132
+ background: #111;
13133
+ }
13134
+
13135
+ .browser-webview {
13136
+ width: 100%;
13137
+ height: 100%;
13138
+ border: 0;
13139
+ }
13140
+
13141
+ .browser-empty {
13142
+ padding: 20px;
13143
+ color: var(--color-text-muted);
13144
+ }
13145
+
11558
13146
  /* Canvas preview quick wins - additional styles */
11559
13147
  .canvas-preview-container:focus {
11560
13148
  outline: 2px solid var(--color-accent);
@@ -11572,10 +13160,25 @@ button {
11572
13160
  }
11573
13161
 
11574
13162
  @keyframes fadeInOut {
11575
- 0% { opacity: 0; transform: translateY(-4px); }
11576
- 15% { opacity: 1; transform: translateY(0); }
11577
- 85% { opacity: 1; transform: translateY(0); }
11578
- 100% { opacity: 0; transform: translateY(-4px); }
13163
+ 0% {
13164
+ opacity: 0;
13165
+ transform: translateY(-4px);
13166
+ }
13167
+
13168
+ 15% {
13169
+ opacity: 1;
13170
+ transform: translateY(0);
13171
+ }
13172
+
13173
+ 85% {
13174
+ opacity: 1;
13175
+ transform: translateY(0);
13176
+ }
13177
+
13178
+ 100% {
13179
+ opacity: 0;
13180
+ transform: translateY(-4px);
13181
+ }
11579
13182
  }
11580
13183
 
11581
13184
  .canvas-action-btn.paused {
@@ -11745,8 +13348,13 @@ button {
11745
13348
  }
11746
13349
 
11747
13350
  @keyframes shimmer {
11748
- 0% { background-position: 200% 0; }
11749
- 100% { background-position: -200% 0; }
13351
+ 0% {
13352
+ background-position: 200% 0;
13353
+ }
13354
+
13355
+ 100% {
13356
+ background-position: -200% 0;
13357
+ }
11750
13358
  }
11751
13359
 
11752
13360
  /* Refresh rate selector */
@@ -12783,6 +14391,7 @@ button {
12783
14391
  opacity: 0;
12784
14392
  transform: translateY(10px);
12785
14393
  }
14394
+
12786
14395
  to {
12787
14396
  opacity: 1;
12788
14397
  transform: translateY(0);
@@ -12954,14 +14563,37 @@ button {
12954
14563
  border-radius: var(--radius-sm);
12955
14564
  }
12956
14565
 
12957
- .onboarding-color-swatch.cyan { background: #22d3ee; }
12958
- .onboarding-color-swatch.blue { background: #3b82f6; }
12959
- .onboarding-color-swatch.purple { background: #a78bfa; }
12960
- .onboarding-color-swatch.pink { background: #f472b6; }
12961
- .onboarding-color-swatch.rose { background: #fb7185; }
12962
- .onboarding-color-swatch.orange { background: #fb923c; }
12963
- .onboarding-color-swatch.green { background: #34d399; }
12964
- .onboarding-color-swatch.teal { background: #2dd4bf; }
14566
+ .onboarding-color-swatch.cyan {
14567
+ background: #22d3ee;
14568
+ }
14569
+
14570
+ .onboarding-color-swatch.blue {
14571
+ background: #3b82f6;
14572
+ }
14573
+
14574
+ .onboarding-color-swatch.purple {
14575
+ background: #a78bfa;
14576
+ }
14577
+
14578
+ .onboarding-color-swatch.pink {
14579
+ background: #f472b6;
14580
+ }
14581
+
14582
+ .onboarding-color-swatch.rose {
14583
+ background: #fb7185;
14584
+ }
14585
+
14586
+ .onboarding-color-swatch.orange {
14587
+ background: #fb923c;
14588
+ }
14589
+
14590
+ .onboarding-color-swatch.green {
14591
+ background: #34d399;
14592
+ }
14593
+
14594
+ .onboarding-color-swatch.teal {
14595
+ background: #2dd4bf;
14596
+ }
12965
14597
 
12966
14598
  /* Provider grid */
12967
14599
  .onboarding-provider-grid {
@@ -13401,7 +15033,8 @@ button {
13401
15033
  /* ============ Voice Settings Styles ============ */
13402
15034
 
13403
15035
  .voice-settings {
13404
- max-width: 800px;
15036
+ max-width: none;
15037
+ width: 100%;
13405
15038
  }
13406
15039
 
13407
15040
  .voice-status {
@@ -13437,8 +15070,15 @@ button {
13437
15070
  }
13438
15071
 
13439
15072
  @keyframes pulse {
13440
- 0%, 100% { opacity: 1; }
13441
- 50% { opacity: 0.5; }
15073
+
15074
+ 0%,
15075
+ 100% {
15076
+ opacity: 1;
15077
+ }
15078
+
15079
+ 50% {
15080
+ opacity: 0.5;
15081
+ }
13442
15082
  }
13443
15083
 
13444
15084
  /* Provider Options */
@@ -13526,16 +15166,17 @@ button {
13526
15166
  align-items: center;
13527
15167
  gap: 4px;
13528
15168
  padding: 12px 8px;
13529
- background: var(--color-bg-secondary);
13530
- border: 2px solid transparent;
13531
- border-radius: 8px;
15169
+ background: var(--color-bg-glass);
15170
+ border: 1px solid var(--color-border-subtle);
15171
+ border-radius: var(--radius-md);
13532
15172
  cursor: pointer;
13533
15173
  transition: all 0.15s ease;
13534
15174
  text-align: center;
13535
15175
  }
13536
15176
 
13537
15177
  .voice-option:hover {
13538
- background: var(--color-bg-tertiary);
15178
+ background: var(--color-bg-glass-hover);
15179
+ border-color: var(--color-border);
13539
15180
  }
13540
15181
 
13541
15182
  .voice-option.selected {
@@ -13545,7 +15186,7 @@ button {
13545
15186
 
13546
15187
  .voice-option .voice-name {
13547
15188
  font-weight: 500;
13548
- font-size: 14px;
15189
+ font-size: 13px;
13549
15190
  color: var(--color-text-primary);
13550
15191
  }
13551
15192
 
@@ -13629,9 +15270,18 @@ button {
13629
15270
  pointer-events: none;
13630
15271
  }
13631
15272
 
13632
- @keyframes voice-pulse {
13633
- 0%, 100% { opacity: 0; transform: scale(1); }
13634
- 50% { opacity: 0.5; transform: scale(1.1); }
15273
+ @keyframes voice-pulse {
15274
+
15275
+ 0%,
15276
+ 100% {
15277
+ opacity: 0;
15278
+ transform: scale(1);
15279
+ }
15280
+
15281
+ 50% {
15282
+ opacity: 0.5;
15283
+ transform: scale(1.1);
15284
+ }
13635
15285
  }
13636
15286
 
13637
15287
  .voice-indicator-transcript {
@@ -13679,8 +15329,13 @@ button {
13679
15329
  }
13680
15330
 
13681
15331
  @keyframes spin {
13682
- from { transform: rotate(0deg); }
13683
- to { transform: rotate(360deg); }
15332
+ from {
15333
+ transform: rotate(0deg);
15334
+ }
15335
+
15336
+ to {
15337
+ transform: rotate(360deg);
15338
+ }
13684
15339
  }
13685
15340
 
13686
15341
  /* Input with button */
@@ -13766,11 +15421,11 @@ button {
13766
15421
  border-radius: 50%;
13767
15422
  }
13768
15423
 
13769
- .toggle-switch input:checked + .toggle-slider {
15424
+ .toggle-switch input:checked+.toggle-slider {
13770
15425
  background-color: var(--color-accent);
13771
15426
  }
13772
15427
 
13773
- .toggle-switch input:checked + .toggle-slider:before {
15428
+ .toggle-switch input:checked+.toggle-slider:before {
13774
15429
  transform: translateX(20px);
13775
15430
  }
13776
15431
 
@@ -13782,7 +15437,7 @@ button {
13782
15437
  gap: 16px;
13783
15438
  }
13784
15439
 
13785
- .settings-header-row > div {
15440
+ .settings-header-row>div {
13786
15441
  flex: 1;
13787
15442
  }
13788
15443
 
@@ -13834,25 +15489,33 @@ button {
13834
15489
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
13835
15490
  }
13836
15491
 
13837
- /* ==================== MORE CHANNELS PANEL ==================== */
13838
- .more-channels-panel {
15492
+ /* ==================== MORE CHANNELS / INTEGRATIONS PANEL ==================== */
15493
+ .more-channels-panel,
15494
+ .integrations-panel,
15495
+ .llm-provider-panel {
13839
15496
  display: flex;
13840
15497
  flex-direction: column;
13841
15498
  gap: 20px;
13842
15499
  }
13843
15500
 
13844
- .more-channels-header h2 {
15501
+ .more-channels-header h2,
15502
+ .integrations-header h2,
15503
+ .llm-provider-header h2 {
13845
15504
  margin: 0 0 4px 0;
13846
15505
  font-size: 18px;
13847
15506
  font-weight: 600;
13848
15507
  color: var(--color-text);
13849
15508
  }
13850
15509
 
13851
- .more-channels-header .settings-description {
15510
+ .more-channels-header .settings-description,
15511
+ .integrations-header .settings-description,
15512
+ .llm-provider-header .settings-description {
13852
15513
  margin: 0;
13853
15514
  }
13854
15515
 
13855
- .more-channels-tabs {
15516
+ .more-channels-tabs,
15517
+ .integrations-tabs,
15518
+ .llm-provider-tabs {
13856
15519
  display: flex;
13857
15520
  flex-wrap: wrap;
13858
15521
  gap: 8px;
@@ -13862,7 +15525,9 @@ button {
13862
15525
  border: 1px solid var(--color-border);
13863
15526
  }
13864
15527
 
13865
- .more-channels-tab {
15528
+ .more-channels-tab,
15529
+ .integrations-tab,
15530
+ .llm-provider-tab {
13866
15531
  display: inline-flex;
13867
15532
  align-items: center;
13868
15533
  gap: 6px;
@@ -13878,33 +15543,53 @@ button {
13878
15543
  white-space: nowrap;
13879
15544
  }
13880
15545
 
13881
- .more-channels-tab:hover {
15546
+ .more-channels-tab:hover,
15547
+ .integrations-tab:hover,
15548
+ .llm-provider-tab:hover {
13882
15549
  background: var(--color-bg-glass-hover);
13883
15550
  color: var(--color-text);
13884
15551
  }
13885
15552
 
13886
- .more-channels-tab.active {
15553
+ .more-channels-tab.active,
15554
+ .integrations-tab.active,
15555
+ .llm-provider-tab.active {
13887
15556
  background: var(--color-accent-subtle);
13888
15557
  color: var(--color-text);
13889
15558
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
13890
15559
  }
13891
15560
 
13892
- .more-channels-tab svg {
15561
+ .more-channels-tab svg,
15562
+ .integrations-tab svg,
15563
+ .llm-provider-tab svg {
13893
15564
  opacity: 0.6;
13894
15565
  flex-shrink: 0;
13895
15566
  }
13896
15567
 
13897
- .more-channels-tab.active svg {
15568
+ .more-channels-tab.active svg,
15569
+ .integrations-tab.active svg,
15570
+ .llm-provider-tab.active svg {
13898
15571
  opacity: 1;
13899
15572
  color: var(--color-accent);
13900
15573
  }
13901
15574
 
13902
- .more-channels-tab span {
15575
+ .more-channels-tab span,
15576
+ .integrations-tab span,
15577
+ .llm-provider-tab-label {
13903
15578
  overflow: hidden;
13904
15579
  text-overflow: ellipsis;
13905
15580
  }
13906
15581
 
13907
- .more-channels-content {
15582
+ .llm-provider-tab-status {
15583
+ width: 7px;
15584
+ height: 7px;
15585
+ border-radius: 50%;
15586
+ background: var(--color-success);
15587
+ margin-left: 4px;
15588
+ }
15589
+
15590
+ .more-channels-content,
15591
+ .integrations-content,
15592
+ .llm-provider-content {
13908
15593
  border: 1px solid var(--color-border);
13909
15594
  border-radius: var(--radius-lg);
13910
15595
  background: var(--color-bg-tertiary);
@@ -13912,21 +15597,29 @@ button {
13912
15597
  }
13913
15598
 
13914
15599
  /* Light theme overrides */
13915
- .theme-light .more-channels-tabs {
15600
+ .theme-light .more-channels-tabs,
15601
+ .theme-light .integrations-tabs,
15602
+ .theme-light .llm-provider-tabs {
13916
15603
  background: rgba(0, 0, 0, 0.03);
13917
15604
  border-color: rgba(0, 0, 0, 0.12);
13918
15605
  }
13919
15606
 
13920
- .theme-light .more-channels-tab:hover {
15607
+ .theme-light .more-channels-tab:hover,
15608
+ .theme-light .integrations-tab:hover,
15609
+ .theme-light .llm-provider-tab:hover {
13921
15610
  background: rgba(0, 0, 0, 0.06);
13922
15611
  }
13923
15612
 
13924
- .theme-light .more-channels-tab.active {
15613
+ .theme-light .more-channels-tab.active,
15614
+ .theme-light .integrations-tab.active,
15615
+ .theme-light .llm-provider-tab.active {
13925
15616
  background: white;
13926
15617
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
13927
15618
  }
13928
15619
 
13929
- .theme-light .more-channels-content {
15620
+ .theme-light .more-channels-content,
15621
+ .theme-light .integrations-content,
15622
+ .theme-light .llm-provider-content {
13930
15623
  background: rgba(255, 255, 255, 0.6);
13931
15624
  border-color: rgba(0, 0, 0, 0.12);
13932
15625
  }
@@ -13979,10 +15672,13 @@ button {
13979
15672
 
13980
15673
  /* Awakening orb animations */
13981
15674
  @keyframes onboarding-breathe {
13982
- 0%, 100% {
15675
+
15676
+ 0%,
15677
+ 100% {
13983
15678
  transform: scale(1);
13984
15679
  box-shadow: 0 0 60px var(--onboarding-glow);
13985
15680
  }
15681
+
13986
15682
  50% {
13987
15683
  transform: scale(1.08);
13988
15684
  box-shadow: 0 0 100px var(--onboarding-glow-strong);
@@ -13994,6 +15690,7 @@ button {
13994
15690
  opacity: 0;
13995
15691
  transform: scale(0.3);
13996
15692
  }
15693
+
13997
15694
  100% {
13998
15695
  opacity: 1;
13999
15696
  transform: scale(1);
@@ -14005,6 +15702,7 @@ button {
14005
15702
  opacity: 1;
14006
15703
  transform: scale(1);
14007
15704
  }
15705
+
14008
15706
  100% {
14009
15707
  opacity: 0;
14010
15708
  transform: scale(0.5);
@@ -14050,6 +15748,7 @@ button {
14050
15748
  transform: scale(1);
14051
15749
  opacity: 0.6;
14052
15750
  }
15751
+
14053
15752
  100% {
14054
15753
  transform: scale(2.5);
14055
15754
  opacity: 0;
@@ -14088,8 +15787,16 @@ button {
14088
15787
 
14089
15788
  /* Typewriter text */
14090
15789
  @keyframes onboarding-cursor-blink {
14091
- 0%, 50% { opacity: 1; }
14092
- 51%, 100% { opacity: 0; }
15790
+
15791
+ 0%,
15792
+ 50% {
15793
+ opacity: 1;
15794
+ }
15795
+
15796
+ 51%,
15797
+ 100% {
15798
+ opacity: 0;
15799
+ }
14093
15800
  }
14094
15801
 
14095
15802
  .onboarding-typewriter {
@@ -14335,6 +16042,7 @@ button {
14335
16042
  opacity: 0;
14336
16043
  transform: translateY(8px);
14337
16044
  }
16045
+
14338
16046
  to {
14339
16047
  opacity: 1;
14340
16048
  transform: translateY(0);
@@ -14402,11 +16110,9 @@ button {
14402
16110
  left: -50%;
14403
16111
  width: 200%;
14404
16112
  height: 200%;
14405
- background: radial-gradient(
14406
- ellipse at center,
14407
- rgba(255, 107, 107, 0.03) 0%,
14408
- transparent 50%
14409
- );
16113
+ background: radial-gradient(ellipse at center,
16114
+ rgba(255, 107, 107, 0.03) 0%,
16115
+ transparent 50%);
14410
16116
  animation: onboarding-ambient-drift 20s ease-in-out infinite alternate;
14411
16117
  }
14412
16118
 
@@ -14414,6 +16120,7 @@ button {
14414
16120
  0% {
14415
16121
  transform: translate(0, 0);
14416
16122
  }
16123
+
14417
16124
  100% {
14418
16125
  transform: translate(5%, 5%);
14419
16126
  }
@@ -14421,8 +16128,13 @@ button {
14421
16128
 
14422
16129
  /* Loading spinner for processing */
14423
16130
  @keyframes onboarding-spin {
14424
- from { transform: rotate(0deg); }
14425
- to { transform: rotate(360deg); }
16131
+ from {
16132
+ transform: rotate(0deg);
16133
+ }
16134
+
16135
+ to {
16136
+ transform: rotate(360deg);
16137
+ }
14426
16138
  }
14427
16139
 
14428
16140
  .onboarding-spinner {
@@ -14502,3 +16214,415 @@ button {
14502
16214
  color: #1a1817;
14503
16215
  border-color: rgba(255, 107, 107, 0.5);
14504
16216
  }
16217
+
16218
+ /* ============================================
16219
+ Studio Visual Theme Overrides (shape + typography only)
16220
+ ============================================ */
16221
+
16222
+ .visual-oblivion body {
16223
+ font-family: var(--font-ui);
16224
+ letter-spacing: 0.1px;
16225
+ }
16226
+
16227
+ .visual-oblivion .cli-panel,
16228
+ .visual-oblivion .cli-sidebar,
16229
+ .visual-oblivion .cli-workspace-selector,
16230
+ .visual-oblivion .cli-workspace-content {
16231
+ font-family: var(--font-ui);
16232
+ }
16233
+
16234
+ .visual-oblivion .cli-input-wrapper {
16235
+ padding: 12px 14px;
16236
+ }
16237
+
16238
+ .visual-oblivion .cli-input {
16239
+ font-family: var(--font-ui) !important;
16240
+ font-size: 14px;
16241
+ }
16242
+
16243
+ .visual-oblivion .cli-panel-title,
16244
+ .visual-oblivion .cli-sidebar-title,
16245
+ .visual-oblivion .cli-section-title,
16246
+ .visual-oblivion .cli-list-header {
16247
+ font-family: var(--font-ui);
16248
+ letter-spacing: 0.2px;
16249
+ text-transform: none;
16250
+ }
16251
+
16252
+ .visual-oblivion .cli-section-toggle .modern-only {
16253
+ font-size: 12px;
16254
+ line-height: 1;
16255
+ }
16256
+
16257
+ .visual-oblivion .cli-section-header {
16258
+ border-radius: var(--radius-md);
16259
+ margin: 10px 10px 0;
16260
+ padding: 10px 12px;
16261
+ }
16262
+
16263
+ .visual-oblivion .cli-section-content {
16264
+ padding: 12px 14px 16px;
16265
+ }
16266
+
16267
+ .visual-oblivion .cli-progress-item,
16268
+ .visual-oblivion .cli-file-item,
16269
+ .visual-oblivion .cli-context-item,
16270
+ .visual-oblivion .cli-queue-item,
16271
+ .visual-oblivion .cli-task-item,
16272
+ .visual-oblivion .cli-workspace-item {
16273
+ border-radius: var(--radius-md);
16274
+ }
16275
+
16276
+ .visual-oblivion .cli-progress-item,
16277
+ .visual-oblivion .cli-file-item,
16278
+ .visual-oblivion .cli-context-item,
16279
+ .visual-oblivion .cli-queue-item {
16280
+ padding: 8px 10px;
16281
+ font-size: 12px;
16282
+ background: var(--color-bg-primary);
16283
+ border: 1px solid var(--color-border);
16284
+ }
16285
+
16286
+ .visual-oblivion .cli-context-empty {
16287
+ background: var(--color-bg-input);
16288
+ border: 1px solid var(--color-border-subtle);
16289
+ }
16290
+
16291
+ .visual-oblivion .cli-task-item {
16292
+ border-left: none;
16293
+ margin: 6px 10px;
16294
+ padding: 10px 12px !important;
16295
+ }
16296
+
16297
+ .visual-oblivion .cli-task-title,
16298
+ .visual-oblivion .cli-queue-title,
16299
+ .visual-oblivion .cli-progress-text,
16300
+ .visual-oblivion .cli-file-name,
16301
+ .visual-oblivion .cli-context-file {
16302
+ font-family: var(--font-ui);
16303
+ font-size: 13px;
16304
+ }
16305
+
16306
+ .visual-oblivion .cli-task-num,
16307
+ .visual-oblivion .cli-progress-num,
16308
+ .visual-oblivion .cli-item-num {
16309
+ font-variant-numeric: tabular-nums;
16310
+ }
16311
+
16312
+ .visual-oblivion .cli-task-num,
16313
+ .visual-oblivion .cli-progress-num,
16314
+ .visual-oblivion .cli-item-num {
16315
+ display: none;
16316
+ }
16317
+
16318
+ .visual-oblivion .cli-queue-status,
16319
+ .visual-oblivion .cli-progress-status,
16320
+ .visual-oblivion .cli-file-action {
16321
+ font-family: var(--font-ui);
16322
+ }
16323
+
16324
+ .visual-oblivion .cli-queue-status,
16325
+ .visual-oblivion .cli-progress-status,
16326
+ .visual-oblivion .cli-task-status {
16327
+ display: inline-flex;
16328
+ align-items: center;
16329
+ gap: 6px;
16330
+ }
16331
+
16332
+ .visual-oblivion .cli-file-action {
16333
+ width: 16px;
16334
+ display: inline-flex;
16335
+ align-items: center;
16336
+ justify-content: center;
16337
+ }
16338
+
16339
+ .visual-oblivion .cli-queue-status {
16340
+ font-size: 11px;
16341
+ }
16342
+
16343
+ .visual-oblivion .queue-status-dot {
16344
+ width: 8px;
16345
+ height: 8px;
16346
+ border-radius: 999px;
16347
+ display: inline-block;
16348
+ background: currentColor;
16349
+ }
16350
+
16351
+ .visual-oblivion .queue-status-pill {
16352
+ min-width: 20px;
16353
+ height: 20px;
16354
+ padding: 0 6px;
16355
+ border-radius: 999px;
16356
+ display: inline-flex;
16357
+ align-items: center;
16358
+ justify-content: center;
16359
+ font-size: 10px;
16360
+ border: 1px solid currentColor;
16361
+ color: inherit;
16362
+ }
16363
+
16364
+ .visual-oblivion .file-action-dot {
16365
+ width: 8px;
16366
+ height: 8px;
16367
+ border-radius: 999px;
16368
+ display: inline-block;
16369
+ background: currentColor;
16370
+ }
16371
+
16372
+ .visual-oblivion .cli-action-btn {
16373
+ border-radius: var(--radius-md);
16374
+ font-family: var(--font-ui) !important;
16375
+ font-size: 12px !important;
16376
+ text-transform: none;
16377
+ }
16378
+
16379
+ .visual-oblivion .cli-more-btn,
16380
+ .visual-oblivion .cli-task-menu,
16381
+ .visual-oblivion .cli-menu-option {
16382
+ font-family: var(--font-ui) !important;
16383
+ }
16384
+
16385
+ .visual-oblivion .cli-menu-prefix {
16386
+ display: none;
16387
+ }
16388
+
16389
+ .visual-oblivion .cli-footer-label,
16390
+ .visual-oblivion .cli-footer-text {
16391
+ font-family: var(--font-ui);
16392
+ font-size: 12px;
16393
+ letter-spacing: 0;
16394
+ }
16395
+
16396
+ .visual-oblivion .main-footer,
16397
+ .visual-oblivion .input-container,
16398
+ .visual-oblivion .welcome-input-container,
16399
+ .visual-oblivion .welcome-input,
16400
+ .visual-oblivion .input-field,
16401
+ .visual-oblivion .input-textarea,
16402
+ .visual-oblivion .input-actions,
16403
+ .visual-oblivion .attachment-btn,
16404
+ .visual-oblivion .folder-selector,
16405
+ .visual-oblivion .shell-toggle,
16406
+ .visual-oblivion .model-selector,
16407
+ .visual-oblivion .skills-menu-btn,
16408
+ .visual-oblivion .voice-input-btn,
16409
+ .visual-oblivion .lets-go-btn,
16410
+ .visual-oblivion .goal-mode-section,
16411
+ .visual-oblivion .goal-mode-toggle,
16412
+ .visual-oblivion .goal-mode-label,
16413
+ .visual-oblivion .goal-mode-hint,
16414
+ .visual-oblivion .goal-mode-input,
16415
+ .visual-oblivion .goal-mode-attempts,
16416
+ .visual-oblivion .goal-mode-attempts label,
16417
+ .visual-oblivion .goal-mode-attempts input[type="number"],
16418
+ .visual-oblivion .workspace-dropdown,
16419
+ .visual-oblivion .workspace-dropdown-header,
16420
+ .visual-oblivion .workspace-dropdown-item,
16421
+ .visual-oblivion .workspace-item-name,
16422
+ .visual-oblivion .workspace-item-path,
16423
+ .visual-oblivion .skills-dropdown,
16424
+ .visual-oblivion .skills-dropdown-header,
16425
+ .visual-oblivion .skills-dropdown-search input,
16426
+ .visual-oblivion .skills-dropdown-item,
16427
+ .visual-oblivion .skills-dropdown-name,
16428
+ .visual-oblivion .skills-dropdown-desc,
16429
+ .visual-oblivion .skills-dropdown-footer,
16430
+ .visual-oblivion .skills-dropdown-create {
16431
+ font-family: var(--font-ui);
16432
+ }
16433
+
16434
+ .visual-oblivion .input-container,
16435
+ .visual-oblivion .welcome-input-container {
16436
+ border-radius: var(--radius-xl);
16437
+ overflow: visible;
16438
+ }
16439
+
16440
+ .visual-oblivion .welcome-input-footer {
16441
+ border-top-left-radius: 0;
16442
+ border-top-right-radius: 0;
16443
+ border-bottom-left-radius: var(--radius-xl);
16444
+ border-bottom-right-radius: var(--radius-xl);
16445
+ }
16446
+
16447
+ .visual-oblivion .cli-input-container .welcome-input-footer,
16448
+ .visual-oblivion .welcome-input-footer {
16449
+ background: var(--color-bg-primary);
16450
+ border-top-color: var(--color-border);
16451
+ }
16452
+
16453
+ .visual-oblivion .attachment-btn,
16454
+ .visual-oblivion .folder-selector,
16455
+ .visual-oblivion .shell-toggle,
16456
+ .visual-oblivion .model-selector,
16457
+ .visual-oblivion .skills-menu-btn,
16458
+ .visual-oblivion .voice-input-btn,
16459
+ .visual-oblivion .lets-go-btn {
16460
+ border-radius: var(--radius-md);
16461
+ }
16462
+
16463
+ .visual-oblivion .skills-menu-btn {
16464
+ font-weight: 600;
16465
+ }
16466
+
16467
+ .visual-oblivion .goal-mode-prompt {
16468
+ display: none;
16469
+ }
16470
+
16471
+ .visual-oblivion .goal-mode-command {
16472
+ padding-left: 12px;
16473
+ }
16474
+
16475
+ .visual-oblivion .goal-mode-section {
16476
+ background: var(--color-bg-primary);
16477
+ border-color: var(--color-border);
16478
+ }
16479
+
16480
+ .visual-oblivion .goal-mode-command {
16481
+ background: transparent;
16482
+ border-color: var(--color-border);
16483
+ }
16484
+
16485
+ .visual-oblivion .goal-mode-attempts input[type="number"] {
16486
+ background: var(--color-bg-secondary);
16487
+ border-color: var(--color-border);
16488
+ }
16489
+
16490
+ .visual-oblivion .goal-mode-input {
16491
+ font-family: var(--font-ui);
16492
+ }
16493
+
16494
+ .visual-oblivion .workspace-dropdown-header,
16495
+ .visual-oblivion .skills-dropdown-header {
16496
+ text-transform: none;
16497
+ letter-spacing: 0;
16498
+ }
16499
+
16500
+ .visual-oblivion .timeline-controls,
16501
+ .visual-oblivion .timeline-events,
16502
+ .visual-oblivion .event-title,
16503
+ .visual-oblivion .event-time,
16504
+ .visual-oblivion .event-details,
16505
+ .visual-oblivion .event-details pre,
16506
+ .visual-oblivion .event-details ul,
16507
+ .visual-oblivion .event-details li,
16508
+ .visual-oblivion .event-details.assistant-message,
16509
+ .visual-oblivion .markdown-content,
16510
+ .visual-oblivion .user-message-bubble,
16511
+ .visual-oblivion .user-message-content,
16512
+ .visual-oblivion .user-message-time {
16513
+ font-family: var(--font-ui);
16514
+ }
16515
+
16516
+ .visual-oblivion .event-details {
16517
+ background: var(--color-bg-secondary);
16518
+ border-color: var(--color-border);
16519
+ color: var(--color-text-secondary);
16520
+ }
16521
+
16522
+ .visual-oblivion .event-details.assistant-message {
16523
+ background: var(--color-bg-secondary);
16524
+ border-color: var(--color-border);
16525
+ color: var(--color-text);
16526
+ }
16527
+
16528
+ .visual-oblivion .markdown-content ul {
16529
+ list-style: none;
16530
+ padding-left: 20px;
16531
+ }
16532
+
16533
+ .visual-oblivion .markdown-content ul li {
16534
+ position: relative;
16535
+ padding-left: 12px;
16536
+ }
16537
+
16538
+ .visual-oblivion .markdown-content ul li::before {
16539
+ content: '';
16540
+ position: absolute;
16541
+ left: 0;
16542
+ top: 0.6em;
16543
+ width: 6px;
16544
+ height: 6px;
16545
+ border-radius: 999px;
16546
+ background: currentColor;
16547
+ opacity: 0.6;
16548
+ }
16549
+
16550
+ .visual-oblivion .verbose-toggle-btn {
16551
+ font-family: var(--font-ui);
16552
+ text-transform: none;
16553
+ letter-spacing: 0;
16554
+ border-radius: var(--radius-md);
16555
+ }
16556
+
16557
+ .visual-oblivion .event-title,
16558
+ .visual-oblivion .event-time {
16559
+ letter-spacing: 0;
16560
+ }
16561
+
16562
+ .visual-oblivion .user-message-bubble {
16563
+ border-radius: var(--radius-lg);
16564
+ }
16565
+
16566
+ .visual-oblivion .cli-tree,
16567
+ .visual-oblivion .cli-ascii-box,
16568
+ .visual-oblivion .cli-ascii-logo,
16569
+ .visual-oblivion .cli-cursor-block {
16570
+ display: none;
16571
+ }
16572
+
16573
+ .visual-oblivion .cli-workspace-item {
16574
+ padding: 10px 12px;
16575
+ gap: 10px;
16576
+ }
16577
+
16578
+ .visual-oblivion .task-tree-children {
16579
+ margin-left: 6px;
16580
+ padding-left: 12px;
16581
+ border-left: 1px solid var(--color-border-subtle);
16582
+ }
16583
+
16584
+ .visual-oblivion .cli-tree-prefix {
16585
+ display: inline-flex;
16586
+ align-items: center;
16587
+ justify-content: center;
16588
+ width: 12px;
16589
+ height: 12px;
16590
+ margin-right: 6px;
16591
+ font-size: 0;
16592
+ color: transparent;
16593
+ }
16594
+
16595
+ .visual-oblivion .cli-tree-prefix::before {
16596
+ content: '';
16597
+ width: 6px;
16598
+ height: 6px;
16599
+ border-radius: 999px;
16600
+ border: 1.5px solid var(--color-text-muted);
16601
+ background: var(--color-bg-primary);
16602
+ opacity: 0.8;
16603
+ }
16604
+
16605
+ .visual-oblivion .cli-item-icon {
16606
+ font-size: 16px;
16607
+ }
16608
+
16609
+ .visual-oblivion .cli-item-name {
16610
+ font-family: var(--font-ui);
16611
+ font-size: 13px;
16612
+ }
16613
+
16614
+ .visual-oblivion .cli-item-path {
16615
+ font-family: var(--font-ui);
16616
+ font-size: 11px;
16617
+ }
16618
+
16619
+ .visual-oblivion .workspace-modern-title {
16620
+ font-size: 16px;
16621
+ font-weight: 600;
16622
+ margin-top: 6px;
16623
+ }
16624
+
16625
+ .visual-oblivion .workspace-modern-subtitle {
16626
+ font-size: 12px;
16627
+ margin-top: 2px;
16628
+ }