claude-code-workflow 6.0.4 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/.claude/agents/action-planning-agent.md +1 -1
  2. package/.claude/agents/cli-execution-agent.md +269 -269
  3. package/.claude/agents/cli-explore-agent.md +182 -182
  4. package/.claude/agents/context-search-agent.md +582 -582
  5. package/.claude/agents/memory-bridge.md +93 -93
  6. package/.claude/commands/cli/cli-init.md +1 -1
  7. package/.claude/commands/memory/docs-full-cli.md +471 -471
  8. package/.claude/commands/memory/docs-related-cli.md +386 -386
  9. package/.claude/commands/memory/docs.md +615 -615
  10. package/.claude/commands/memory/load.md +1 -1
  11. package/.claude/commands/memory/update-full.md +332 -332
  12. package/.claude/commands/memory/update-related.md +5 -5
  13. package/.claude/commands/workflow/init.md +1 -1
  14. package/.claude/commands/workflow/lite-fix.md +621 -621
  15. package/.claude/commands/workflow/lite-plan.md +592 -592
  16. package/.claude/commands/workflow/tools/context-gather.md +434 -434
  17. package/.claude/commands/workflow/ui-design/generate.md +504 -504
  18. package/.claude/commands/workflow/ui-design/import-from-code.md +537 -537
  19. package/.claude/scripts/classify-folders.sh +4 -0
  20. package/.claude/scripts/convert_tokens_to_css.sh +4 -0
  21. package/.claude/scripts/detect_changed_modules.sh +5 -1
  22. package/.claude/scripts/discover-design-files.sh +87 -83
  23. package/.claude/scripts/generate_module_docs.sh +717 -713
  24. package/.claude/scripts/get_modules_by_depth.sh +5 -1
  25. package/.claude/scripts/ui-generate-preview.sh +4 -0
  26. package/.claude/scripts/ui-instantiate-prototypes.sh +4 -0
  27. package/.claude/scripts/update_module_claude.sh +4 -0
  28. package/.claude/skills/command-guide/index/all-commands.json +1 -12
  29. package/.claude/skills/command-guide/index/by-category.json +1 -12
  30. package/.claude/skills/command-guide/index/by-use-case.json +1 -12
  31. package/.claude/skills/command-guide/index/essential-commands.json +1 -12
  32. package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +127 -71
  33. package/.claude/skills/command-guide/reference/agents/cli-execution-agent.md +269 -269
  34. package/.claude/skills/command-guide/reference/agents/cli-explore-agent.md +182 -182
  35. package/.claude/skills/command-guide/reference/agents/conceptual-planning-agent.md +18 -38
  36. package/.claude/skills/command-guide/reference/agents/context-search-agent.md +582 -577
  37. package/.claude/skills/command-guide/reference/agents/memory-bridge.md +93 -93
  38. package/.claude/skills/command-guide/reference/commands/cli/cli-init.md +1 -1
  39. package/.claude/skills/command-guide/reference/commands/memory/docs-full-cli.md +471 -471
  40. package/.claude/skills/command-guide/reference/commands/memory/docs-related-cli.md +386 -386
  41. package/.claude/skills/command-guide/reference/commands/memory/docs.md +615 -610
  42. package/.claude/skills/command-guide/reference/commands/memory/load.md +1 -1
  43. package/.claude/skills/command-guide/reference/commands/memory/update-full.md +332 -332
  44. package/.claude/skills/command-guide/reference/commands/memory/update-related.md +5 -5
  45. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/artifacts.md +299 -451
  46. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/auto-parallel.md +14 -37
  47. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/synthesis.md +252 -350
  48. package/.claude/skills/command-guide/reference/commands/workflow/init.md +2 -2
  49. package/.claude/skills/command-guide/reference/commands/workflow/lite-execute.md +52 -0
  50. package/.claude/skills/command-guide/reference/commands/workflow/lite-fix.md +621 -602
  51. package/.claude/skills/command-guide/reference/commands/workflow/lite-plan.md +46 -36
  52. package/.claude/skills/command-guide/reference/commands/workflow/review-fix.md +18 -58
  53. package/.claude/skills/command-guide/reference/commands/workflow/review-module-cycle.md +22 -52
  54. package/.claude/skills/command-guide/reference/commands/workflow/review-session-cycle.md +19 -48
  55. package/.claude/skills/command-guide/reference/commands/workflow/session/start.md +25 -5
  56. package/.claude/skills/command-guide/reference/commands/workflow/tdd-plan.md +1 -1
  57. package/.claude/skills/command-guide/reference/commands/workflow/test-fix-gen.md +7 -7
  58. package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +434 -434
  59. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-agent.md +151 -11
  60. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +4 -4
  61. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-task-generate.md +1 -1
  62. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/generate.md +504 -504
  63. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/import-from-code.md +537 -537
  64. package/.claude/workflows/context-search-strategy.md +77 -77
  65. package/.claude/workflows/tool-strategy.md +90 -71
  66. package/.claude/workflows/workflow-architecture.md +1 -1
  67. package/ccw/package.json +6 -6
  68. package/ccw/src/cli.js +16 -0
  69. package/ccw/src/commands/stop.js +101 -0
  70. package/ccw/src/commands/tool.js +181 -0
  71. package/ccw/src/core/dashboard-generator.js +18 -3
  72. package/ccw/src/core/lite-scanner.js +35 -11
  73. package/ccw/src/core/server.js +583 -17
  74. package/ccw/src/templates/dashboard-css/01-base.css +161 -0
  75. package/ccw/src/templates/dashboard-css/02-session.css +726 -0
  76. package/ccw/src/templates/dashboard-css/03-tasks.css +512 -0
  77. package/ccw/src/templates/dashboard-css/04-lite-tasks.css +843 -0
  78. package/ccw/src/templates/dashboard-css/05-context.css +2206 -0
  79. package/ccw/src/templates/dashboard-css/06-cards.css +1570 -0
  80. package/ccw/src/templates/dashboard-css/07-managers.css +936 -0
  81. package/ccw/src/templates/dashboard-css/08-review.css +1266 -0
  82. package/ccw/src/templates/dashboard-css/09-explorer.css +1397 -0
  83. package/ccw/src/templates/dashboard-js/components/global-notifications.js +219 -0
  84. package/ccw/src/templates/dashboard-js/components/hook-manager.js +10 -0
  85. package/ccw/src/templates/dashboard-js/components/mcp-manager.js +24 -2
  86. package/ccw/src/templates/dashboard-js/components/navigation.js +11 -5
  87. package/ccw/src/templates/dashboard-js/components/tabs-context.js +20 -20
  88. package/ccw/src/templates/dashboard-js/components/tabs-other.js +11 -11
  89. package/ccw/src/templates/dashboard-js/components/theme.js +29 -1
  90. package/ccw/src/templates/dashboard-js/main.js +4 -0
  91. package/ccw/src/templates/dashboard-js/state.js +5 -0
  92. package/ccw/src/templates/dashboard-js/views/explorer.js +852 -0
  93. package/ccw/src/templates/dashboard-js/views/home.js +13 -9
  94. package/ccw/src/templates/dashboard-js/views/hook-manager.js +8 -5
  95. package/ccw/src/templates/dashboard-js/views/lite-tasks.js +21 -16
  96. package/ccw/src/templates/dashboard-js/views/mcp-manager.js +148 -8
  97. package/ccw/src/templates/dashboard-js/views/project-overview.js +15 -11
  98. package/ccw/src/templates/dashboard-js/views/review-session.js +3 -3
  99. package/ccw/src/templates/dashboard-js/views/session-detail.js +38 -28
  100. package/ccw/src/templates/dashboard.html +129 -28
  101. package/ccw/src/tools/classify-folders.js +204 -0
  102. package/ccw/src/tools/convert-tokens-to-css.js +250 -0
  103. package/ccw/src/tools/detect-changed-modules.js +288 -0
  104. package/ccw/src/tools/discover-design-files.js +134 -0
  105. package/ccw/src/tools/edit-file.js +266 -0
  106. package/ccw/src/tools/generate-module-docs.js +416 -0
  107. package/ccw/src/tools/get-modules-by-depth.js +308 -0
  108. package/ccw/src/tools/index.js +176 -0
  109. package/ccw/src/tools/ui-generate-preview.js +327 -0
  110. package/ccw/src/tools/ui-instantiate-prototypes.js +301 -0
  111. package/ccw/src/tools/update-module-claude.js +380 -0
  112. package/ccw/src/utils/browser-launcher.js +15 -4
  113. package/package.json +1 -1
  114. package/.claude/skills/command-guide/reference/commands/workflow/status.md +0 -352
  115. package/ccw/src/core/server.js.bak +0 -385
  116. package/ccw/src/core/server_original.bak +0 -385
  117. package/ccw/src/templates/dashboard.css +0 -8114
  118. package/ccw/src/templates/dashboard_tailwind.html +0 -42
  119. package/ccw/src/templates/dashboard_test.html +0 -37
  120. package/ccw/src/templates/tailwind-base.css +0 -212
@@ -0,0 +1,1397 @@
1
+ /* ==========================================
2
+ EXPLORER VIEW STYLES
3
+ ========================================== */
4
+
5
+ /* Main Container - Split Panel Layout */
6
+ .explorer-container {
7
+ display: flex;
8
+ height: calc(100vh - 200px);
9
+ min-height: 500px;
10
+ gap: 1px;
11
+ background: hsl(var(--border));
12
+ border: 1px solid hsl(var(--border));
13
+ border-radius: 8px;
14
+ overflow: hidden;
15
+ }
16
+
17
+ /* Left Panel - File Tree */
18
+ .explorer-tree-panel {
19
+ width: 320px;
20
+ min-width: 240px;
21
+ max-width: 480px;
22
+ background: hsl(var(--card));
23
+ display: flex;
24
+ flex-direction: column;
25
+ resize: horizontal;
26
+ overflow: hidden;
27
+ }
28
+
29
+ .explorer-tree-header {
30
+ display: flex;
31
+ align-items: center;
32
+ justify-content: space-between;
33
+ padding: 12px 16px;
34
+ background: hsl(var(--muted));
35
+ border-bottom: 1px solid hsl(var(--border));
36
+ }
37
+
38
+ .explorer-tree-title {
39
+ display: flex;
40
+ align-items: center;
41
+ gap: 8px;
42
+ font-weight: 600;
43
+ font-size: 14px;
44
+ color: hsl(var(--foreground));
45
+ }
46
+
47
+ .explorer-icon {
48
+ font-size: 16px;
49
+ }
50
+
51
+ .explorer-refresh-btn {
52
+ display: flex;
53
+ align-items: center;
54
+ justify-content: center;
55
+ width: 28px;
56
+ height: 28px;
57
+ border: none;
58
+ background: transparent;
59
+ color: hsl(var(--muted-foreground));
60
+ border-radius: 4px;
61
+ cursor: pointer;
62
+ transition: all 0.15s ease;
63
+ }
64
+
65
+ .explorer-refresh-btn:hover {
66
+ background: hsl(var(--hover));
67
+ color: hsl(var(--foreground));
68
+ }
69
+
70
+ .explorer-refresh-btn.refreshing svg {
71
+ animation: spin 1s linear infinite;
72
+ }
73
+
74
+ .explorer-tree-content {
75
+ flex: 1;
76
+ overflow-y: auto;
77
+ overflow-x: hidden;
78
+ padding: 8px 0;
79
+ }
80
+
81
+ /* Tree Items */
82
+ .tree-item {
83
+ user-select: none;
84
+ }
85
+
86
+ .tree-item-row {
87
+ display: flex;
88
+ align-items: center;
89
+ gap: 4px;
90
+ padding: 4px 12px;
91
+ cursor: pointer;
92
+ transition: background 0.1s ease;
93
+ min-height: 28px;
94
+ }
95
+
96
+ .tree-item-row:hover {
97
+ background: hsl(var(--hover));
98
+ }
99
+
100
+ .tree-item-row.selected,
101
+ .tree-file.selected .tree-item-row {
102
+ background: hsl(var(--primary) / 0.15);
103
+ color: hsl(var(--primary));
104
+ }
105
+
106
+ .tree-chevron {
107
+ width: 16px;
108
+ font-size: 10px;
109
+ color: hsl(var(--muted-foreground));
110
+ text-align: center;
111
+ flex-shrink: 0;
112
+ transition: transform 0.15s ease;
113
+ }
114
+
115
+ .tree-chevron-spacer {
116
+ width: 16px;
117
+ flex-shrink: 0;
118
+ }
119
+
120
+ .tree-icon {
121
+ font-size: 14px;
122
+ flex-shrink: 0;
123
+ width: 20px;
124
+ text-align: center;
125
+ }
126
+
127
+ .tree-name {
128
+ font-size: 13px;
129
+ color: hsl(var(--foreground));
130
+ white-space: nowrap;
131
+ overflow: hidden;
132
+ text-overflow: ellipsis;
133
+ flex: 1;
134
+ }
135
+
136
+ /* File Type Icons */
137
+ .file-icon {
138
+ display: inline-flex;
139
+ align-items: center;
140
+ justify-content: center;
141
+ width: 22px;
142
+ height: 16px;
143
+ font-size: 9px;
144
+ font-weight: 700;
145
+ border-radius: 3px;
146
+ font-family: system-ui, -apple-system, sans-serif;
147
+ letter-spacing: -0.3px;
148
+ }
149
+
150
+ .file-icon-js { background: #f7df1e; color: #000; }
151
+ .file-icon-jsx { background: #61dafb; color: #000; }
152
+ .file-icon-ts { background: #3178c6; color: #fff; }
153
+ .file-icon-tsx { background: #3178c6; color: #fff; }
154
+ .file-icon-py { background: #3776ab; color: #ffd43b; }
155
+ .file-icon-go { background: #00add8; color: #fff; }
156
+ .file-icon-rs { background: #dea584; color: #000; }
157
+ .file-icon-java { background: #ed8b00; color: #fff; }
158
+ .file-icon-rb { background: #cc342d; color: #fff; }
159
+ .file-icon-php { background: #777bb4; color: #fff; }
160
+ .file-icon-c { background: #a8b9cc; color: #000; }
161
+ .file-icon-cpp { background: #00599c; color: #fff; }
162
+ .file-icon-h { background: #a8b9cc; color: #000; }
163
+ .file-icon-cs { background: #68217a; color: #fff; }
164
+ .file-icon-swift { background: #fa7343; color: #fff; }
165
+ .file-icon-kt { background: #7f52ff; color: #fff; }
166
+
167
+ .file-icon-html { background: #e34f26; color: #fff; }
168
+ .file-icon-css { background: #1572b6; color: #fff; }
169
+ .file-icon-scss { background: #c6538c; color: #fff; }
170
+ .file-icon-less { background: #1d365d; color: #fff; }
171
+ .file-icon-vue { background: #42b883; color: #fff; }
172
+ .file-icon-svelte { background: #ff3e00; color: #fff; }
173
+
174
+ .file-icon-json { background: #292929; color: #f5a623; }
175
+ .file-icon-yaml { background: #cb171e; color: #fff; }
176
+ .file-icon-xml { background: #0060ac; color: #fff; }
177
+ .file-icon-toml { background: #9c4121; color: #fff; }
178
+ .file-icon-ini { background: #6d6d6d; color: #fff; }
179
+ .file-icon-env { background: #ecd53f; color: #000; }
180
+
181
+ .file-icon-md { background: #083fa1; color: #fff; }
182
+ .file-icon-txt { background: #6d6d6d; color: #fff; }
183
+ .file-icon-log { background: #4a4a4a; color: #8bc34a; }
184
+
185
+ .file-icon-sh { background: #4eaa25; color: #fff; }
186
+ .file-icon-ps1 { background: #012456; color: #fff; }
187
+ .file-icon-bat { background: #c1f12e; color: #000; }
188
+
189
+ .file-icon-sql { background: #f29111; color: #fff; }
190
+ .file-icon-db { background: #003b57; color: #fff; }
191
+
192
+ .file-icon-img { background: #8bc34a; color: #fff; }
193
+ .file-icon-svg { background: #ffb13b; color: #000; }
194
+
195
+ .file-icon-lock { background: transparent; font-size: 14px; }
196
+ .file-icon-docker { background: transparent; font-size: 14px; }
197
+ .file-icon-default { background: transparent; font-size: 14px; }
198
+ .file-icon-claude { background: #d97706; color: #fff; font-size: 12px; }
199
+
200
+ /* Folder Children */
201
+ .tree-children {
202
+ display: none;
203
+ overflow: hidden;
204
+ }
205
+
206
+ .tree-children.show {
207
+ display: block;
208
+ }
209
+
210
+ .tree-folder.expanded > .tree-item-row .tree-chevron {
211
+ transform: rotate(0deg);
212
+ }
213
+
214
+ .tree-folder:not(.expanded) > .tree-item-row .tree-chevron {
215
+ transform: rotate(-90deg);
216
+ }
217
+
218
+ /* CLAUDE.md Badge and Update Button */
219
+ .claude-md-badge {
220
+ display: inline-flex;
221
+ align-items: center;
222
+ gap: 3px;
223
+ padding: 2px 6px;
224
+ background: hsl(var(--success) / 0.15);
225
+ color: hsl(var(--success));
226
+ border-radius: 4px;
227
+ font-size: 10px;
228
+ font-weight: 600;
229
+ margin-left: 6px;
230
+ flex-shrink: 0;
231
+ }
232
+
233
+ .claude-md-badge .badge-icon {
234
+ font-size: 10px;
235
+ }
236
+
237
+ .claude-md-badge .badge-text {
238
+ text-transform: uppercase;
239
+ letter-spacing: 0.3px;
240
+ }
241
+
242
+ /* Folder Action Buttons */
243
+ .tree-folder-actions {
244
+ display: none;
245
+ align-items: center;
246
+ gap: 2px;
247
+ margin-left: auto;
248
+ flex-shrink: 0;
249
+ }
250
+
251
+ .tree-item-row:hover .tree-folder-actions {
252
+ display: flex;
253
+ }
254
+
255
+ .tree-update-btn {
256
+ display: flex;
257
+ align-items: center;
258
+ justify-content: center;
259
+ width: 24px;
260
+ height: 22px;
261
+ border: none;
262
+ background: hsl(var(--muted));
263
+ color: hsl(var(--foreground));
264
+ border-radius: 4px;
265
+ cursor: pointer;
266
+ font-size: 12px;
267
+ transition: all 0.15s ease;
268
+ }
269
+
270
+ .tree-update-btn .update-icon {
271
+ font-size: 12px;
272
+ }
273
+
274
+ .tree-update-btn:hover {
275
+ background: hsl(var(--primary));
276
+ color: hsl(var(--primary-foreground));
277
+ transform: scale(1.05);
278
+ }
279
+
280
+ .tree-update-btn.tree-update-multi:hover {
281
+ background: hsl(var(--success));
282
+ }
283
+
284
+ /* Highlight folders with CLAUDE.md */
285
+ .tree-folder.has-claude-md > .tree-item-row {
286
+ background: hsl(var(--success) / 0.05);
287
+ }
288
+
289
+ .tree-folder.has-claude-md > .tree-item-row:hover {
290
+ background: hsl(var(--success) / 0.1);
291
+ }
292
+
293
+ /* Highlight CLAUDE.md files */
294
+ .tree-file.is-claude-md .tree-name {
295
+ color: hsl(var(--primary));
296
+ font-weight: 500;
297
+ }
298
+
299
+ /* Tree States */
300
+ .tree-loading,
301
+ .tree-error,
302
+ .tree-empty {
303
+ padding: 8px 16px;
304
+ font-size: 12px;
305
+ color: hsl(var(--muted-foreground));
306
+ }
307
+
308
+ .tree-error {
309
+ color: hsl(var(--destructive));
310
+ }
311
+
312
+ /* Right Panel - Preview */
313
+ .explorer-preview-panel {
314
+ flex: 1;
315
+ background: hsl(var(--card));
316
+ display: flex;
317
+ flex-direction: column;
318
+ min-width: 0;
319
+ }
320
+
321
+ .explorer-preview-header {
322
+ display: flex;
323
+ align-items: center;
324
+ justify-content: space-between;
325
+ padding: 10px 16px;
326
+ background: hsl(var(--muted));
327
+ border-bottom: 1px solid hsl(var(--border));
328
+ min-height: 44px;
329
+ flex-shrink: 0;
330
+ }
331
+
332
+ .preview-header-left {
333
+ display: flex;
334
+ align-items: center;
335
+ gap: 12px;
336
+ min-width: 0;
337
+ flex: 1;
338
+ }
339
+
340
+ .preview-filename {
341
+ font-weight: 600;
342
+ font-size: 14px;
343
+ color: hsl(var(--foreground));
344
+ white-space: nowrap;
345
+ flex-shrink: 0;
346
+ }
347
+
348
+ .preview-path {
349
+ font-size: 12px;
350
+ color: hsl(var(--muted-foreground));
351
+ font-family: monospace;
352
+ white-space: nowrap;
353
+ overflow: hidden;
354
+ text-overflow: ellipsis;
355
+ min-width: 0;
356
+ }
357
+
358
+ .preview-header-tabs {
359
+ display: flex;
360
+ gap: 4px;
361
+ flex-shrink: 0;
362
+ background: hsl(var(--background));
363
+ padding: 3px;
364
+ border-radius: 6px;
365
+ }
366
+
367
+ .explorer-preview-content {
368
+ flex: 1;
369
+ overflow: auto;
370
+ padding: 0;
371
+ }
372
+
373
+ /* Preview Empty State */
374
+ .explorer-preview-empty {
375
+ display: flex;
376
+ flex-direction: column;
377
+ align-items: center;
378
+ justify-content: center;
379
+ height: 100%;
380
+ color: hsl(var(--muted-foreground));
381
+ }
382
+
383
+ .preview-empty-icon {
384
+ font-size: 48px;
385
+ margin-bottom: 16px;
386
+ opacity: 0.5;
387
+ }
388
+
389
+ .preview-empty-text {
390
+ font-size: 14px;
391
+ }
392
+
393
+ /* Preview Info Bar */
394
+ .preview-info {
395
+ display: flex;
396
+ align-items: center;
397
+ gap: 16px;
398
+ padding: 8px 16px;
399
+ background: hsl(var(--muted) / 0.5);
400
+ border-bottom: 1px solid hsl(var(--border));
401
+ font-size: 12px;
402
+ color: hsl(var(--muted-foreground));
403
+ }
404
+
405
+ .preview-lang {
406
+ padding: 2px 8px;
407
+ background: hsl(var(--primary) / 0.15);
408
+ color: hsl(var(--primary));
409
+ border-radius: 4px;
410
+ font-weight: 500;
411
+ text-transform: uppercase;
412
+ font-size: 11px;
413
+ }
414
+
415
+ /* Code Preview */
416
+ .preview-code {
417
+ margin: 0;
418
+ padding: 16px;
419
+ background: hsl(var(--muted) / 0.3);
420
+ overflow: auto;
421
+ font-size: 13px;
422
+ line-height: 1.5;
423
+ }
424
+
425
+ .preview-code code {
426
+ font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
427
+ background: transparent;
428
+ }
429
+
430
+ /* Preview Tabs (for Markdown) - in header */
431
+ .preview-tab {
432
+ padding: 5px 12px;
433
+ border: none;
434
+ background: transparent;
435
+ color: hsl(var(--muted-foreground));
436
+ font-size: 12px;
437
+ font-weight: 500;
438
+ border-radius: 4px;
439
+ cursor: pointer;
440
+ transition: all 0.15s ease;
441
+ }
442
+
443
+ .preview-tab:hover {
444
+ color: hsl(var(--foreground));
445
+ }
446
+
447
+ .preview-tab.active {
448
+ background: hsl(var(--card));
449
+ color: hsl(var(--foreground));
450
+ box-shadow: 0 1px 2px hsl(var(--foreground) / 0.08);
451
+ }
452
+
453
+ .preview-tab-content {
454
+ display: none;
455
+ }
456
+
457
+ .preview-tab-content.show {
458
+ display: block;
459
+ }
460
+
461
+ /* Markdown Preview */
462
+ .markdown-preview {
463
+ padding: 20px;
464
+ line-height: 1.6;
465
+ }
466
+
467
+ .markdown-preview h1,
468
+ .markdown-preview h2,
469
+ .markdown-preview h3,
470
+ .markdown-preview h4 {
471
+ color: hsl(var(--foreground));
472
+ margin-top: 24px;
473
+ margin-bottom: 12px;
474
+ }
475
+
476
+ .markdown-preview h1 { font-size: 1.75em; border-bottom: 1px solid hsl(var(--border)); padding-bottom: 8px; }
477
+ .markdown-preview h2 { font-size: 1.5em; border-bottom: 1px solid hsl(var(--border)); padding-bottom: 6px; }
478
+ .markdown-preview h3 { font-size: 1.25em; }
479
+ .markdown-preview h4 { font-size: 1.1em; }
480
+
481
+ .markdown-preview p {
482
+ margin-bottom: 12px;
483
+ color: hsl(var(--foreground));
484
+ }
485
+
486
+ .markdown-preview ul,
487
+ .markdown-preview ol {
488
+ margin-bottom: 12px;
489
+ padding-left: 24px;
490
+ }
491
+
492
+ .markdown-preview li {
493
+ margin-bottom: 4px;
494
+ }
495
+
496
+ .markdown-preview code {
497
+ background: hsl(var(--muted));
498
+ padding: 2px 6px;
499
+ border-radius: 4px;
500
+ font-family: monospace;
501
+ font-size: 0.9em;
502
+ }
503
+
504
+ .markdown-preview pre {
505
+ background: hsl(var(--muted));
506
+ padding: 16px;
507
+ border-radius: 8px;
508
+ overflow-x: auto;
509
+ margin-bottom: 16px;
510
+ }
511
+
512
+ .markdown-preview pre code {
513
+ background: transparent;
514
+ padding: 0;
515
+ }
516
+
517
+ .markdown-preview blockquote {
518
+ border-left: 4px solid hsl(var(--primary));
519
+ padding-left: 16px;
520
+ margin: 16px 0;
521
+ color: hsl(var(--muted-foreground));
522
+ }
523
+
524
+ .markdown-preview a {
525
+ color: hsl(var(--primary));
526
+ text-decoration: none;
527
+ }
528
+
529
+ .markdown-preview a:hover {
530
+ text-decoration: underline;
531
+ }
532
+
533
+ .markdown-preview table {
534
+ width: 100%;
535
+ border-collapse: collapse;
536
+ margin-bottom: 16px;
537
+ }
538
+
539
+ .markdown-preview th,
540
+ .markdown-preview td {
541
+ border: 1px solid hsl(var(--border));
542
+ padding: 8px 12px;
543
+ text-align: left;
544
+ }
545
+
546
+ .markdown-preview th {
547
+ background: hsl(var(--muted));
548
+ font-weight: 600;
549
+ }
550
+
551
+ /* Loading and Error States */
552
+ .explorer-loading {
553
+ display: flex;
554
+ align-items: center;
555
+ justify-content: center;
556
+ padding: 40px;
557
+ color: hsl(var(--muted-foreground));
558
+ font-size: 14px;
559
+ }
560
+
561
+ .explorer-error {
562
+ display: flex;
563
+ align-items: center;
564
+ justify-content: center;
565
+ padding: 40px;
566
+ color: hsl(var(--destructive));
567
+ font-size: 14px;
568
+ }
569
+
570
+ /* ==========================================
571
+ UPDATE CLAUDE.MD MODAL
572
+ ========================================== */
573
+
574
+ .claude-md-modal {
575
+ animation: fadeIn 0.15s ease-out;
576
+ }
577
+
578
+ .claude-md-modal-backdrop {
579
+ animation: fadeIn 0.15s ease-out;
580
+ }
581
+
582
+ .claude-md-modal-content {
583
+ animation: slideUp 0.2s ease-out;
584
+ }
585
+
586
+ .claude-md-modal.hidden {
587
+ display: none;
588
+ }
589
+
590
+ .claude-md-target-path {
591
+ background: hsl(var(--muted));
592
+ padding: 8px 12px;
593
+ border-radius: 6px;
594
+ font-family: monospace;
595
+ font-size: 12px;
596
+ color: hsl(var(--foreground));
597
+ word-break: break-all;
598
+ }
599
+
600
+ .claude-md-form-group {
601
+ margin-bottom: 16px;
602
+ }
603
+
604
+ .claude-md-form-group label {
605
+ display: block;
606
+ margin-bottom: 6px;
607
+ font-size: 14px;
608
+ font-weight: 500;
609
+ color: hsl(var(--foreground));
610
+ }
611
+
612
+ .claude-md-form-group select {
613
+ width: 100%;
614
+ padding: 8px 12px;
615
+ border: 1px solid hsl(var(--border));
616
+ border-radius: 6px;
617
+ background: hsl(var(--background));
618
+ color: hsl(var(--foreground));
619
+ font-size: 14px;
620
+ }
621
+
622
+ .claude-md-form-group select:focus {
623
+ outline: none;
624
+ border-color: hsl(var(--primary));
625
+ box-shadow: 0 0 0 2px hsl(var(--primary) / 0.2);
626
+ }
627
+
628
+ .claude-md-status {
629
+ margin-top: 16px;
630
+ min-height: 40px;
631
+ }
632
+
633
+ .status-running {
634
+ color: hsl(var(--warning));
635
+ font-size: 13px;
636
+ }
637
+
638
+ .status-success {
639
+ color: hsl(var(--success));
640
+ font-size: 13px;
641
+ }
642
+
643
+ .status-error {
644
+ color: hsl(var(--destructive));
645
+ font-size: 13px;
646
+ }
647
+
648
+ /* Responsive */
649
+ @media (max-width: 768px) {
650
+ .explorer-container {
651
+ flex-direction: column;
652
+ height: auto;
653
+ }
654
+
655
+ .explorer-tree-panel {
656
+ width: 100%;
657
+ max-width: none;
658
+ height: 300px;
659
+ resize: vertical;
660
+ }
661
+
662
+ .explorer-preview-panel {
663
+ height: 400px;
664
+ }
665
+ }
666
+
667
+ /* ==========================================
668
+ FLOATING ACTION BUTTON & TASK QUEUE
669
+ ========================================== */
670
+
671
+ /* Floating Action Button */
672
+ .explorer-fab {
673
+ position: fixed;
674
+ bottom: 80px;
675
+ right: 30px;
676
+ width: 56px;
677
+ height: 56px;
678
+ background: hsl(var(--primary));
679
+ color: hsl(var(--primary-foreground));
680
+ border-radius: 50%;
681
+ display: flex;
682
+ align-items: center;
683
+ justify-content: center;
684
+ cursor: pointer;
685
+ box-shadow: 0 4px 12px hsl(var(--primary) / 0.4);
686
+ transition: all 0.2s ease;
687
+ z-index: 100;
688
+ }
689
+
690
+ .explorer-fab:hover {
691
+ transform: scale(1.1);
692
+ box-shadow: 0 6px 20px hsl(var(--primary) / 0.5);
693
+ }
694
+
695
+ .explorer-fab.active {
696
+ background: hsl(var(--foreground));
697
+ transform: rotate(45deg);
698
+ }
699
+
700
+ .explorer-fab .fab-icon {
701
+ font-size: 24px;
702
+ transition: transform 0.2s ease;
703
+ }
704
+
705
+ .explorer-fab.active .fab-icon {
706
+ transform: rotate(-45deg);
707
+ }
708
+
709
+ .explorer-fab .fab-badge {
710
+ position: absolute;
711
+ top: -4px;
712
+ right: -4px;
713
+ min-width: 20px;
714
+ height: 20px;
715
+ background: hsl(var(--destructive));
716
+ color: hsl(var(--destructive-foreground));
717
+ border-radius: 10px;
718
+ font-size: 11px;
719
+ font-weight: 600;
720
+ display: none;
721
+ align-items: center;
722
+ justify-content: center;
723
+ padding: 0 5px;
724
+ }
725
+
726
+ /* Task Queue Panel */
727
+ .task-queue-panel {
728
+ position: fixed;
729
+ bottom: 150px;
730
+ right: 30px;
731
+ width: 360px;
732
+ max-height: 450px;
733
+ background: hsl(var(--card));
734
+ border: 1px solid hsl(var(--border));
735
+ border-radius: 12px;
736
+ box-shadow: 0 8px 32px hsl(var(--foreground) / 0.15);
737
+ z-index: 99;
738
+ display: flex;
739
+ flex-direction: column;
740
+ opacity: 0;
741
+ transform: translateY(20px) scale(0.95);
742
+ pointer-events: none;
743
+ transition: all 0.2s ease;
744
+ }
745
+
746
+ .task-queue-panel.show {
747
+ opacity: 1;
748
+ transform: translateY(0) scale(1);
749
+ pointer-events: auto;
750
+ }
751
+
752
+ .task-queue-header {
753
+ display: flex;
754
+ align-items: center;
755
+ justify-content: space-between;
756
+ padding: 8px 12px;
757
+ border-bottom: 1px solid hsl(var(--border));
758
+ background: hsl(var(--muted));
759
+ border-radius: 12px 12px 0 0;
760
+ gap: 8px;
761
+ }
762
+
763
+ .queue-tabs {
764
+ display: flex;
765
+ gap: 4px;
766
+ flex: 1;
767
+ }
768
+
769
+ .queue-tab {
770
+ display: flex;
771
+ align-items: center;
772
+ gap: 4px;
773
+ padding: 6px 12px;
774
+ border: none;
775
+ background: transparent;
776
+ color: hsl(var(--muted-foreground));
777
+ font-size: 12px;
778
+ font-weight: 500;
779
+ border-radius: 6px;
780
+ cursor: pointer;
781
+ transition: all 0.15s ease;
782
+ }
783
+
784
+ .queue-tab:hover {
785
+ background: hsl(var(--hover));
786
+ color: hsl(var(--foreground));
787
+ }
788
+
789
+ .queue-tab.active {
790
+ background: hsl(var(--background));
791
+ color: hsl(var(--foreground));
792
+ box-shadow: 0 1px 2px hsl(var(--foreground) / 0.1);
793
+ }
794
+
795
+ .queue-tab-badge {
796
+ display: none;
797
+ align-items: center;
798
+ justify-content: center;
799
+ min-width: 16px;
800
+ height: 16px;
801
+ padding: 0 4px;
802
+ background: hsl(var(--primary));
803
+ color: hsl(var(--primary-foreground));
804
+ border-radius: 8px;
805
+ font-size: 10px;
806
+ font-weight: 600;
807
+ }
808
+
809
+ .queue-tab-badge:not(:empty) {
810
+ display: inline-flex;
811
+ }
812
+
813
+ .queue-tab-content {
814
+ display: flex;
815
+ flex-direction: column;
816
+ flex: 1;
817
+ min-height: 0;
818
+ }
819
+
820
+ .queue-tab-content.hidden {
821
+ display: none;
822
+ }
823
+
824
+ .task-queue-title {
825
+ font-weight: 600;
826
+ font-size: 14px;
827
+ color: hsl(var(--foreground));
828
+ }
829
+
830
+ .task-queue-close {
831
+ width: 28px;
832
+ height: 28px;
833
+ border: none;
834
+ background: transparent;
835
+ color: hsl(var(--muted-foreground));
836
+ font-size: 20px;
837
+ cursor: pointer;
838
+ border-radius: 4px;
839
+ display: flex;
840
+ align-items: center;
841
+ justify-content: center;
842
+ transition: all 0.15s ease;
843
+ }
844
+
845
+ .task-queue-close:hover {
846
+ background: hsl(var(--hover));
847
+ color: hsl(var(--foreground));
848
+ }
849
+
850
+ /* Task Queue Toolbar */
851
+ .task-queue-toolbar {
852
+ display: flex;
853
+ align-items: center;
854
+ justify-content: space-between;
855
+ padding: 10px 12px;
856
+ border-bottom: 1px solid hsl(var(--border));
857
+ gap: 8px;
858
+ }
859
+
860
+ /* CLI Selector */
861
+ .queue-cli-selector {
862
+ display: flex;
863
+ align-items: center;
864
+ gap: 6px;
865
+ }
866
+
867
+ .queue-cli-selector label {
868
+ font-size: 12px;
869
+ font-weight: 500;
870
+ color: hsl(var(--muted-foreground));
871
+ }
872
+
873
+ .queue-cli-selector select {
874
+ padding: 5px 8px;
875
+ border: 1px solid hsl(var(--border));
876
+ background: hsl(var(--background));
877
+ color: hsl(var(--foreground));
878
+ border-radius: 6px;
879
+ font-size: 12px;
880
+ font-weight: 500;
881
+ cursor: pointer;
882
+ transition: all 0.15s ease;
883
+ min-width: 100px;
884
+ }
885
+
886
+ .queue-cli-selector select:hover {
887
+ border-color: hsl(var(--primary));
888
+ }
889
+
890
+ .queue-cli-selector select:focus {
891
+ outline: none;
892
+ border-color: hsl(var(--primary));
893
+ box-shadow: 0 0 0 2px hsl(var(--primary) / 0.2);
894
+ }
895
+
896
+ .task-queue-actions {
897
+ display: flex;
898
+ gap: 4px;
899
+ }
900
+
901
+ .queue-action-btn {
902
+ flex: 1;
903
+ display: flex;
904
+ align-items: center;
905
+ justify-content: center;
906
+ gap: 4px;
907
+ padding: 8px 12px;
908
+ border: 1px solid hsl(var(--border));
909
+ background: hsl(var(--background));
910
+ color: hsl(var(--foreground));
911
+ border-radius: 6px;
912
+ font-size: 12px;
913
+ font-weight: 500;
914
+ cursor: pointer;
915
+ transition: all 0.15s ease;
916
+ }
917
+
918
+ .queue-action-btn:hover:not(:disabled) {
919
+ background: hsl(var(--hover));
920
+ border-color: hsl(var(--primary));
921
+ }
922
+
923
+ .queue-action-btn:disabled {
924
+ opacity: 0.5;
925
+ cursor: not-allowed;
926
+ }
927
+
928
+ .queue-action-btn.queue-start-btn {
929
+ background: hsl(var(--primary));
930
+ color: hsl(var(--primary-foreground));
931
+ border-color: hsl(var(--primary));
932
+ }
933
+
934
+ .queue-action-btn.queue-start-btn:hover:not(:disabled) {
935
+ background: hsl(var(--primary) / 0.9);
936
+ }
937
+
938
+ .queue-action-btn.queue-clear-btn:hover:not(:disabled) {
939
+ background: hsl(var(--destructive) / 0.1);
940
+ border-color: hsl(var(--destructive));
941
+ color: hsl(var(--destructive));
942
+ }
943
+
944
+ .task-queue-list {
945
+ flex: 1;
946
+ overflow-y: auto;
947
+ padding: 8px;
948
+ max-height: 280px;
949
+ }
950
+
951
+ .task-queue-empty {
952
+ display: flex;
953
+ flex-direction: column;
954
+ align-items: center;
955
+ justify-content: center;
956
+ padding: 32px 16px;
957
+ text-align: center;
958
+ color: hsl(var(--muted-foreground));
959
+ }
960
+
961
+ .task-queue-empty span {
962
+ font-size: 14px;
963
+ font-weight: 500;
964
+ margin-bottom: 4px;
965
+ }
966
+
967
+ .task-queue-empty p {
968
+ font-size: 12px;
969
+ margin: 0;
970
+ }
971
+
972
+ /* Task Item */
973
+ .task-queue-item {
974
+ background: hsl(var(--background));
975
+ border: 1px solid hsl(var(--border));
976
+ border-radius: 8px;
977
+ padding: 10px 12px;
978
+ margin-bottom: 8px;
979
+ transition: all 0.15s ease;
980
+ }
981
+
982
+ .task-queue-item:last-child {
983
+ margin-bottom: 0;
984
+ }
985
+
986
+ .task-queue-item.status-running {
987
+ border-color: hsl(var(--warning));
988
+ background: hsl(var(--warning) / 0.05);
989
+ }
990
+
991
+ .task-queue-item.status-completed {
992
+ border-color: hsl(var(--success));
993
+ background: hsl(var(--success) / 0.05);
994
+ }
995
+
996
+ .task-queue-item.status-failed {
997
+ border-color: hsl(var(--destructive));
998
+ background: hsl(var(--destructive) / 0.05);
999
+ }
1000
+
1001
+ .task-item-header {
1002
+ display: flex;
1003
+ align-items: center;
1004
+ gap: 8px;
1005
+ }
1006
+
1007
+ .task-status-icon {
1008
+ font-size: 14px;
1009
+ flex-shrink: 0;
1010
+ }
1011
+
1012
+ .task-folder-name {
1013
+ font-size: 13px;
1014
+ font-weight: 500;
1015
+ color: hsl(var(--foreground));
1016
+ flex: 1;
1017
+ white-space: nowrap;
1018
+ overflow: hidden;
1019
+ text-overflow: ellipsis;
1020
+ }
1021
+
1022
+ .task-remove-btn {
1023
+ width: 20px;
1024
+ height: 20px;
1025
+ border: none;
1026
+ background: transparent;
1027
+ color: hsl(var(--muted-foreground));
1028
+ font-size: 16px;
1029
+ cursor: pointer;
1030
+ border-radius: 4px;
1031
+ display: flex;
1032
+ align-items: center;
1033
+ justify-content: center;
1034
+ flex-shrink: 0;
1035
+ transition: all 0.15s ease;
1036
+ }
1037
+
1038
+ .task-remove-btn:hover {
1039
+ background: hsl(var(--destructive) / 0.1);
1040
+ color: hsl(var(--destructive));
1041
+ }
1042
+
1043
+ .task-item-meta {
1044
+ display: flex;
1045
+ gap: 8px;
1046
+ margin-top: 6px;
1047
+ }
1048
+
1049
+ .task-strategy,
1050
+ .task-tool {
1051
+ font-size: 11px;
1052
+ padding: 2px 6px;
1053
+ background: hsl(var(--muted));
1054
+ color: hsl(var(--muted-foreground));
1055
+ border-radius: 4px;
1056
+ }
1057
+
1058
+ .task-item-message {
1059
+ font-size: 11px;
1060
+ color: hsl(var(--muted-foreground));
1061
+ margin-top: 6px;
1062
+ padding-top: 6px;
1063
+ border-top: 1px solid hsl(var(--border));
1064
+ }
1065
+
1066
+ .task-queue-item.status-running .task-status-icon {
1067
+ animation: spin 1s linear infinite;
1068
+ }
1069
+
1070
+ /* Mobile responsive */
1071
+ @media (max-width: 768px) {
1072
+ .explorer-fab {
1073
+ bottom: 70px;
1074
+ right: 20px;
1075
+ width: 50px;
1076
+ height: 50px;
1077
+ }
1078
+
1079
+ .task-queue-panel {
1080
+ right: 10px;
1081
+ left: 10px;
1082
+ width: auto;
1083
+ bottom: 130px;
1084
+ }
1085
+ }
1086
+
1087
+ /* ==========================================
1088
+ GLOBAL NOTIFICATION SYSTEM
1089
+ ========================================== */
1090
+
1091
+ /* Global FAB - positioned above explorer FAB */
1092
+ .global-notif-fab {
1093
+ position: fixed;
1094
+ bottom: 150px;
1095
+ right: 30px;
1096
+ width: 48px;
1097
+ height: 48px;
1098
+ background: hsl(var(--card));
1099
+ border: 1px solid hsl(var(--border));
1100
+ color: hsl(var(--foreground));
1101
+ border-radius: 50%;
1102
+ display: flex;
1103
+ align-items: center;
1104
+ justify-content: center;
1105
+ cursor: pointer;
1106
+ box-shadow: 0 4px 12px hsl(var(--foreground) / 0.15);
1107
+ transition: all 0.2s ease;
1108
+ z-index: 100;
1109
+ }
1110
+
1111
+ .global-notif-fab:hover {
1112
+ transform: scale(1.05);
1113
+ box-shadow: 0 6px 20px hsl(var(--foreground) / 0.2);
1114
+ background: hsl(var(--primary));
1115
+ color: hsl(var(--primary-foreground));
1116
+ }
1117
+
1118
+ .global-notif-fab.active {
1119
+ background: hsl(var(--primary));
1120
+ color: hsl(var(--primary-foreground));
1121
+ }
1122
+
1123
+ .global-notif-fab .fab-icon {
1124
+ font-size: 20px;
1125
+ }
1126
+
1127
+ .global-notif-fab .fab-badge {
1128
+ position: absolute;
1129
+ top: -4px;
1130
+ right: -4px;
1131
+ min-width: 18px;
1132
+ height: 18px;
1133
+ background: hsl(var(--destructive));
1134
+ color: hsl(var(--destructive-foreground));
1135
+ border-radius: 9px;
1136
+ font-size: 10px;
1137
+ font-weight: 600;
1138
+ display: none;
1139
+ align-items: center;
1140
+ justify-content: center;
1141
+ padding: 0 4px;
1142
+ }
1143
+
1144
+ /* Global Notification Panel */
1145
+ .global-notif-panel {
1146
+ position: fixed;
1147
+ bottom: 210px;
1148
+ right: 30px;
1149
+ width: 380px;
1150
+ max-height: 500px;
1151
+ background: hsl(var(--card));
1152
+ border: 1px solid hsl(var(--border));
1153
+ border-radius: 12px;
1154
+ box-shadow: 0 8px 32px hsl(var(--foreground) / 0.15);
1155
+ z-index: 99;
1156
+ display: flex;
1157
+ flex-direction: column;
1158
+ opacity: 0;
1159
+ transform: translateY(20px) scale(0.95);
1160
+ pointer-events: none;
1161
+ transition: all 0.2s ease;
1162
+ }
1163
+
1164
+ .global-notif-panel.show {
1165
+ opacity: 1;
1166
+ transform: translateY(0) scale(1);
1167
+ pointer-events: auto;
1168
+ }
1169
+
1170
+ .global-notif-header {
1171
+ display: flex;
1172
+ align-items: center;
1173
+ justify-content: space-between;
1174
+ padding: 12px 16px;
1175
+ border-bottom: 1px solid hsl(var(--border));
1176
+ background: hsl(var(--muted));
1177
+ border-radius: 12px 12px 0 0;
1178
+ }
1179
+
1180
+ .global-notif-title {
1181
+ font-weight: 600;
1182
+ font-size: 14px;
1183
+ color: hsl(var(--foreground));
1184
+ }
1185
+
1186
+ .global-notif-close {
1187
+ width: 28px;
1188
+ height: 28px;
1189
+ border: none;
1190
+ background: transparent;
1191
+ color: hsl(var(--muted-foreground));
1192
+ font-size: 20px;
1193
+ cursor: pointer;
1194
+ border-radius: 4px;
1195
+ display: flex;
1196
+ align-items: center;
1197
+ justify-content: center;
1198
+ transition: all 0.15s ease;
1199
+ }
1200
+
1201
+ .global-notif-close:hover {
1202
+ background: hsl(var(--hover));
1203
+ color: hsl(var(--foreground));
1204
+ }
1205
+
1206
+ .global-notif-actions {
1207
+ display: flex;
1208
+ gap: 8px;
1209
+ padding: 10px 16px;
1210
+ border-bottom: 1px solid hsl(var(--border));
1211
+ }
1212
+
1213
+ .notif-action-btn {
1214
+ display: flex;
1215
+ align-items: center;
1216
+ gap: 4px;
1217
+ padding: 6px 12px;
1218
+ border: 1px solid hsl(var(--border));
1219
+ background: hsl(var(--background));
1220
+ color: hsl(var(--foreground));
1221
+ border-radius: 6px;
1222
+ font-size: 12px;
1223
+ cursor: pointer;
1224
+ transition: all 0.15s ease;
1225
+ }
1226
+
1227
+ .notif-action-btn:hover {
1228
+ background: hsl(var(--hover));
1229
+ }
1230
+
1231
+ .global-notif-list {
1232
+ flex: 1;
1233
+ overflow-y: auto;
1234
+ padding: 8px;
1235
+ max-height: 350px;
1236
+ }
1237
+
1238
+ .global-notif-empty {
1239
+ display: flex;
1240
+ flex-direction: column;
1241
+ align-items: center;
1242
+ justify-content: center;
1243
+ padding: 40px 16px;
1244
+ text-align: center;
1245
+ color: hsl(var(--muted-foreground));
1246
+ }
1247
+
1248
+ .global-notif-empty span {
1249
+ font-size: 14px;
1250
+ font-weight: 500;
1251
+ margin-bottom: 4px;
1252
+ }
1253
+
1254
+ .global-notif-empty p {
1255
+ font-size: 12px;
1256
+ margin: 0;
1257
+ }
1258
+
1259
+ /* Notification Item */
1260
+ .global-notif-item {
1261
+ background: hsl(var(--background));
1262
+ border: 1px solid hsl(var(--border));
1263
+ border-radius: 8px;
1264
+ padding: 10px 12px;
1265
+ margin-bottom: 8px;
1266
+ transition: all 0.15s ease;
1267
+ }
1268
+
1269
+ .global-notif-item:last-child {
1270
+ margin-bottom: 0;
1271
+ }
1272
+
1273
+ .global-notif-item.type-success {
1274
+ border-left: 3px solid hsl(var(--success));
1275
+ }
1276
+
1277
+ .global-notif-item.type-error {
1278
+ border-left: 3px solid hsl(var(--destructive));
1279
+ }
1280
+
1281
+ .global-notif-item.type-warning {
1282
+ border-left: 3px solid hsl(var(--warning));
1283
+ }
1284
+
1285
+ .global-notif-item.type-info {
1286
+ border-left: 3px solid hsl(var(--primary));
1287
+ }
1288
+
1289
+ .global-notif-item.read {
1290
+ opacity: 0.7;
1291
+ }
1292
+
1293
+ .notif-item-header {
1294
+ display: flex;
1295
+ align-items: flex-start;
1296
+ gap: 8px;
1297
+ }
1298
+
1299
+ .notif-icon {
1300
+ font-size: 14px;
1301
+ flex-shrink: 0;
1302
+ }
1303
+
1304
+ .notif-message {
1305
+ font-size: 13px;
1306
+ color: hsl(var(--foreground));
1307
+ flex: 1;
1308
+ line-height: 1.4;
1309
+ }
1310
+
1311
+ .notif-source {
1312
+ font-size: 10px;
1313
+ padding: 2px 6px;
1314
+ background: hsl(var(--muted));
1315
+ color: hsl(var(--muted-foreground));
1316
+ border-radius: 4px;
1317
+ text-transform: uppercase;
1318
+ flex-shrink: 0;
1319
+ }
1320
+
1321
+ .notif-details {
1322
+ font-size: 12px;
1323
+ color: hsl(var(--muted-foreground));
1324
+ margin-top: 6px;
1325
+ padding-left: 22px;
1326
+ line-height: 1.4;
1327
+ }
1328
+
1329
+ .notif-meta {
1330
+ display: flex;
1331
+ justify-content: flex-end;
1332
+ margin-top: 6px;
1333
+ }
1334
+
1335
+ .notif-time {
1336
+ font-size: 11px;
1337
+ color: hsl(var(--muted-foreground));
1338
+ }
1339
+
1340
+ /* Toast Notification */
1341
+ .notif-toast {
1342
+ position: fixed;
1343
+ top: 70px;
1344
+ right: 20px;
1345
+ display: flex;
1346
+ align-items: center;
1347
+ gap: 8px;
1348
+ padding: 12px 16px;
1349
+ background: hsl(var(--card));
1350
+ border: 1px solid hsl(var(--border));
1351
+ border-radius: 8px;
1352
+ box-shadow: 0 4px 16px hsl(var(--foreground) / 0.15);
1353
+ z-index: 1000;
1354
+ opacity: 0;
1355
+ transform: translateX(100%);
1356
+ transition: all 0.3s ease;
1357
+ }
1358
+
1359
+ .notif-toast.show {
1360
+ opacity: 1;
1361
+ transform: translateX(0);
1362
+ }
1363
+
1364
+ .notif-toast.type-success {
1365
+ border-left: 3px solid hsl(var(--success));
1366
+ }
1367
+
1368
+ .notif-toast.type-error {
1369
+ border-left: 3px solid hsl(var(--destructive));
1370
+ }
1371
+
1372
+ .notif-toast .toast-icon {
1373
+ font-size: 16px;
1374
+ }
1375
+
1376
+ .notif-toast .toast-message {
1377
+ font-size: 13px;
1378
+ color: hsl(var(--foreground));
1379
+ }
1380
+
1381
+ /* Mobile responsive for global notifications */
1382
+ @media (max-width: 768px) {
1383
+ .global-notif-fab {
1384
+ bottom: 130px;
1385
+ right: 20px;
1386
+ width: 44px;
1387
+ height: 44px;
1388
+ }
1389
+
1390
+ .global-notif-panel {
1391
+ right: 10px;
1392
+ left: 10px;
1393
+ width: auto;
1394
+ bottom: 185px;
1395
+ }
1396
+ }
1397
+