claude-code-workflow 6.0.5 → 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 (117) 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/src/cli.js +7 -0
  68. package/ccw/src/commands/tool.js +181 -0
  69. package/ccw/src/core/dashboard-generator.js +18 -3
  70. package/ccw/src/core/lite-scanner.js +35 -11
  71. package/ccw/src/core/server.js +531 -46
  72. package/ccw/src/templates/dashboard-css/01-base.css +161 -0
  73. package/ccw/src/templates/dashboard-css/02-session.css +726 -0
  74. package/ccw/src/templates/dashboard-css/03-tasks.css +512 -0
  75. package/ccw/src/templates/dashboard-css/04-lite-tasks.css +843 -0
  76. package/ccw/src/templates/dashboard-css/05-context.css +2206 -0
  77. package/ccw/src/templates/dashboard-css/06-cards.css +1570 -0
  78. package/ccw/src/templates/dashboard-css/07-managers.css +936 -0
  79. package/ccw/src/templates/dashboard-css/08-review.css +1266 -0
  80. package/ccw/src/templates/dashboard-css/09-explorer.css +1397 -0
  81. package/ccw/src/templates/dashboard-js/components/global-notifications.js +219 -0
  82. package/ccw/src/templates/dashboard-js/components/hook-manager.js +10 -0
  83. package/ccw/src/templates/dashboard-js/components/mcp-manager.js +11 -1
  84. package/ccw/src/templates/dashboard-js/components/navigation.js +11 -5
  85. package/ccw/src/templates/dashboard-js/components/tabs-context.js +20 -20
  86. package/ccw/src/templates/dashboard-js/components/tabs-other.js +11 -11
  87. package/ccw/src/templates/dashboard-js/components/theme.js +29 -1
  88. package/ccw/src/templates/dashboard-js/main.js +4 -0
  89. package/ccw/src/templates/dashboard-js/state.js +5 -0
  90. package/ccw/src/templates/dashboard-js/views/explorer.js +852 -0
  91. package/ccw/src/templates/dashboard-js/views/home.js +13 -9
  92. package/ccw/src/templates/dashboard-js/views/hook-manager.js +8 -5
  93. package/ccw/src/templates/dashboard-js/views/lite-tasks.js +21 -16
  94. package/ccw/src/templates/dashboard-js/views/mcp-manager.js +90 -19
  95. package/ccw/src/templates/dashboard-js/views/project-overview.js +15 -11
  96. package/ccw/src/templates/dashboard-js/views/review-session.js +3 -3
  97. package/ccw/src/templates/dashboard-js/views/session-detail.js +38 -28
  98. package/ccw/src/templates/dashboard.html +129 -28
  99. package/ccw/src/tools/classify-folders.js +204 -0
  100. package/ccw/src/tools/convert-tokens-to-css.js +250 -0
  101. package/ccw/src/tools/detect-changed-modules.js +288 -0
  102. package/ccw/src/tools/discover-design-files.js +134 -0
  103. package/ccw/src/tools/edit-file.js +266 -0
  104. package/ccw/src/tools/generate-module-docs.js +416 -0
  105. package/ccw/src/tools/get-modules-by-depth.js +308 -0
  106. package/ccw/src/tools/index.js +176 -0
  107. package/ccw/src/tools/ui-generate-preview.js +327 -0
  108. package/ccw/src/tools/ui-instantiate-prototypes.js +301 -0
  109. package/ccw/src/tools/update-module-claude.js +380 -0
  110. package/package.json +1 -1
  111. package/.claude/skills/command-guide/reference/commands/workflow/status.md +0 -352
  112. package/ccw/src/core/server.js.bak +0 -385
  113. package/ccw/src/core/server_original.bak +0 -385
  114. package/ccw/src/templates/dashboard.css +0 -8187
  115. package/ccw/src/templates/dashboard_tailwind.html +0 -42
  116. package/ccw/src/templates/dashboard_test.html +0 -37
  117. package/ccw/src/templates/tailwind-base.css +0 -212
@@ -0,0 +1,936 @@
1
+ /* ==========================================
2
+ REFRESH BUTTON
3
+ ========================================== */
4
+
5
+ .refresh-btn {
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ transition: all 0.2s ease;
10
+ }
11
+
12
+ .refresh-btn:hover {
13
+ background: hsl(var(--muted));
14
+ }
15
+
16
+ .refresh-btn.refreshing svg {
17
+ animation: spin 1s linear infinite;
18
+ }
19
+
20
+ .refresh-btn:disabled {
21
+ opacity: 0.5;
22
+ cursor: not-allowed;
23
+ }
24
+
25
+ @keyframes spin {
26
+ from { transform: rotate(0deg); }
27
+ to { transform: rotate(360deg); }
28
+ }
29
+
30
+ /* ==========================================
31
+ MCP MANAGER STYLES
32
+ ========================================== */
33
+
34
+ .mcp-manager {
35
+ width: 100%;
36
+ }
37
+
38
+ .mcp-section {
39
+ margin-bottom: 2rem;
40
+ width: 100%;
41
+ }
42
+
43
+ .mcp-server-grid {
44
+ display: grid;
45
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
46
+ gap: 1rem;
47
+ width: 100%;
48
+ }
49
+
50
+ .mcp-server-card {
51
+ position: relative;
52
+ }
53
+
54
+ .mcp-server-card.opacity-60 {
55
+ opacity: 0.6;
56
+ }
57
+
58
+ .mcp-server-available {
59
+ border-style: dashed;
60
+ }
61
+
62
+ .mcp-server-available:hover {
63
+ border-style: solid;
64
+ }
65
+
66
+ /* MCP Toggle Switch */
67
+ .mcp-toggle {
68
+ position: relative;
69
+ display: inline-flex;
70
+ align-items: center;
71
+ }
72
+
73
+ .mcp-toggle input {
74
+ position: absolute;
75
+ opacity: 0;
76
+ width: 0;
77
+ height: 0;
78
+ }
79
+
80
+ .mcp-toggle > div {
81
+ width: 36px;
82
+ height: 20px;
83
+ background: hsl(var(--muted));
84
+ border-radius: 10px;
85
+ position: relative;
86
+ transition: background 0.2s;
87
+ }
88
+
89
+ .mcp-toggle > div::after {
90
+ content: '';
91
+ position: absolute;
92
+ top: 2px;
93
+ left: 2px;
94
+ width: 16px;
95
+ height: 16px;
96
+ background: white;
97
+ border-radius: 50%;
98
+ transition: transform 0.2s;
99
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
100
+ }
101
+
102
+ .mcp-toggle input:checked + div {
103
+ background: hsl(var(--success));
104
+ }
105
+
106
+ .mcp-toggle input:checked + div::after {
107
+ transform: translateX(16px);
108
+ }
109
+
110
+ .mcp-toggle input:focus + div {
111
+ box-shadow: 0 0 0 2px hsl(var(--primary) / 0.2);
112
+ }
113
+
114
+ /* MCP Projects List */
115
+ .mcp-projects-list {
116
+ max-height: 400px;
117
+ overflow-y: auto;
118
+ }
119
+
120
+ .mcp-project-item {
121
+ transition: background 0.15s;
122
+ }
123
+
124
+ .mcp-project-item:hover {
125
+ background: hsl(var(--hover));
126
+ }
127
+
128
+ .mcp-project-item.bg-primary-light {
129
+ background: hsl(var(--primary-light));
130
+ }
131
+
132
+ /* MCP Empty State */
133
+ .mcp-empty-state {
134
+ display: flex;
135
+ flex-direction: column;
136
+ align-items: center;
137
+ justify-content: center;
138
+ min-height: 120px;
139
+ }
140
+
141
+ /* MCP Server Details */
142
+ .mcp-server-details {
143
+ font-size: 0.875rem;
144
+ }
145
+
146
+ .mcp-server-details .font-mono {
147
+ font-family: var(--font-mono);
148
+ }
149
+
150
+ /* MCP Projects Table */
151
+ .mcp-projects-table {
152
+ overflow-x: auto;
153
+ }
154
+
155
+ .mcp-projects-table table {
156
+ border-collapse: collapse;
157
+ min-width: 100%;
158
+ }
159
+
160
+ .mcp-projects-table th {
161
+ white-space: nowrap;
162
+ }
163
+
164
+ .mcp-projects-table td {
165
+ vertical-align: middle;
166
+ }
167
+
168
+ .mcp-projects-table tr:hover {
169
+ background-color: hsl(var(--hover));
170
+ }
171
+
172
+ .mcp-projects-table .bg-primary-light\/30 {
173
+ background-color: hsl(var(--primary) / 0.08);
174
+ }
175
+
176
+ /* MCP Create Modal */
177
+ .mcp-modal {
178
+ animation: fadeIn 0.15s ease-out;
179
+ }
180
+
181
+ .mcp-modal-backdrop {
182
+ animation: fadeIn 0.15s ease-out;
183
+ }
184
+
185
+ .mcp-modal-content {
186
+ animation: slideUp 0.2s ease-out;
187
+ }
188
+
189
+ .mcp-modal.hidden {
190
+ display: none;
191
+ }
192
+
193
+ .mcp-modal .form-group label {
194
+ display: block;
195
+ margin-bottom: 0.25rem;
196
+ }
197
+
198
+ .mcp-modal input,
199
+ .mcp-modal textarea {
200
+ transition: border-color 0.15s, box-shadow 0.15s;
201
+ }
202
+
203
+ .mcp-modal input:focus,
204
+ .mcp-modal textarea:focus {
205
+ border-color: hsl(var(--primary));
206
+ box-shadow: 0 0 0 2px hsl(var(--primary) / 0.2);
207
+ }
208
+
209
+ /* MCP Tab Buttons */
210
+ .mcp-tab-btn {
211
+ cursor: pointer;
212
+ transition: all 0.2s;
213
+ color: hsl(var(--muted-foreground));
214
+ }
215
+
216
+ .mcp-tab-btn.active {
217
+ background: hsl(var(--background));
218
+ color: hsl(var(--foreground));
219
+ font-weight: 500;
220
+ }
221
+
222
+ .mcp-tab-btn:hover:not(.active) {
223
+ color: hsl(var(--foreground));
224
+ }
225
+
226
+ @keyframes slideUp {
227
+ from {
228
+ opacity: 0;
229
+ transform: translateY(10px);
230
+ }
231
+ to {
232
+ opacity: 1;
233
+ transform: translateY(0);
234
+ }
235
+ }
236
+
237
+ @keyframes fadeIn {
238
+ from { opacity: 0; }
239
+ to { opacity: 1; }
240
+ }
241
+
242
+ /* ==========================================
243
+ HOOK MANAGER STYLES
244
+ ========================================== */
245
+
246
+ .hook-manager {
247
+ width: 100%;
248
+ }
249
+
250
+ .hook-section {
251
+ margin-bottom: 2rem;
252
+ width: 100%;
253
+ }
254
+
255
+ .hook-grid {
256
+ display: grid;
257
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
258
+ gap: 1rem;
259
+ width: 100%;
260
+ }
261
+
262
+ .hook-card {
263
+ position: relative;
264
+ }
265
+
266
+ .hook-details {
267
+ font-size: 0.875rem;
268
+ }
269
+
270
+ .hook-details .font-mono {
271
+ font-family: var(--font-mono);
272
+ }
273
+
274
+ .hook-templates-grid {
275
+ display: grid;
276
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
277
+ gap: 1rem;
278
+ }
279
+
280
+ .hook-template-card {
281
+ transition: all 0.2s ease;
282
+ }
283
+
284
+ .hook-template-card:hover {
285
+ box-shadow: 0 4px 12px rgb(0 0 0 / 0.1);
286
+ }
287
+
288
+ /* Hook Empty State */
289
+ .hook-empty-state {
290
+ display: flex;
291
+ flex-direction: column;
292
+ align-items: center;
293
+ justify-content: center;
294
+ min-height: 120px;
295
+ }
296
+
297
+ /* Hook Modal */
298
+ .hook-modal {
299
+ animation: fadeIn 0.15s ease-out;
300
+ }
301
+
302
+ .hook-modal-backdrop {
303
+ animation: fadeIn 0.15s ease-out;
304
+ }
305
+
306
+ .hook-modal-content {
307
+ animation: slideUp 0.2s ease-out;
308
+ }
309
+
310
+ .hook-modal.hidden {
311
+ display: none;
312
+ }
313
+
314
+ .hook-modal .form-group label {
315
+ display: block;
316
+ margin-bottom: 0.25rem;
317
+ }
318
+
319
+ .hook-modal input,
320
+ .hook-modal textarea,
321
+ .hook-modal select {
322
+ transition: border-color 0.15s, box-shadow 0.15s;
323
+ }
324
+
325
+ .hook-modal input:focus,
326
+ .hook-modal textarea:focus,
327
+ .hook-modal select:focus {
328
+ border-color: hsl(var(--primary));
329
+ box-shadow: 0 0 0 2px hsl(var(--primary) / 0.2);
330
+ }
331
+
332
+ .hook-template-btn {
333
+ transition: all 0.15s ease;
334
+ }
335
+
336
+ .hook-template-btn:hover {
337
+ background: hsl(var(--hover));
338
+ border-color: hsl(var(--primary));
339
+ }
340
+
341
+ /* ==========================================
342
+ STATS SECTION & CAROUSEL
343
+ ========================================== */
344
+
345
+ .stats-section {
346
+ min-height: 180px;
347
+ }
348
+
349
+ .stats-metrics {
350
+ width: 300px;
351
+ }
352
+
353
+ .stats-carousel {
354
+ position: relative;
355
+ }
356
+
357
+ .carousel-header {
358
+ height: 40px;
359
+ }
360
+
361
+ .carousel-btn {
362
+ transition: all 0.15s;
363
+ }
364
+
365
+ .carousel-btn:hover {
366
+ background: hsl(var(--hover));
367
+ }
368
+
369
+ /* Carousel dots indicator */
370
+ .carousel-dots {
371
+ display: flex;
372
+ align-items: center;
373
+ gap: 6px;
374
+ }
375
+
376
+ .carousel-dot {
377
+ cursor: pointer;
378
+ border: none;
379
+ padding: 0;
380
+ transition: all 0.2s ease;
381
+ }
382
+
383
+ .carousel-dot:focus {
384
+ outline: none;
385
+ box-shadow: 0 0 0 2px hsl(var(--primary) / 0.3);
386
+ }
387
+
388
+ .carousel-footer {
389
+ flex-shrink: 0;
390
+ }
391
+
392
+ .carousel-content {
393
+ position: relative;
394
+ overflow: hidden;
395
+ }
396
+
397
+ .carousel-slide {
398
+ position: absolute;
399
+ inset: 0;
400
+ }
401
+
402
+ .carousel-empty {
403
+ position: absolute;
404
+ inset: 0;
405
+ }
406
+
407
+ /* Carousel slide animations */
408
+ .carousel-fade-in {
409
+ animation: carouselFadeIn 0.3s ease-out forwards;
410
+ }
411
+
412
+ .carousel-slide-left {
413
+ animation: carouselSlideLeft 0.35s ease-out forwards;
414
+ }
415
+
416
+ .carousel-slide-right {
417
+ animation: carouselSlideRight 0.35s ease-out forwards;
418
+ }
419
+
420
+ @keyframes carouselFadeIn {
421
+ from {
422
+ opacity: 0;
423
+ transform: scale(0.98);
424
+ }
425
+ to {
426
+ opacity: 1;
427
+ transform: scale(1);
428
+ }
429
+ }
430
+
431
+ @keyframes carouselSlideLeft {
432
+ from {
433
+ opacity: 0;
434
+ transform: translateX(100%);
435
+ }
436
+ to {
437
+ opacity: 1;
438
+ transform: translateX(0);
439
+ }
440
+ }
441
+
442
+ @keyframes carouselSlideRight {
443
+ from {
444
+ opacity: 0;
445
+ transform: translateX(-100%);
446
+ }
447
+ to {
448
+ opacity: 1;
449
+ transform: translateX(0);
450
+ }
451
+ }
452
+
453
+ /* Task card in carousel */
454
+ .carousel-slide .task-card {
455
+ height: 100%;
456
+ display: flex;
457
+ flex-direction: column;
458
+ }
459
+
460
+ .carousel-slide .task-timestamps {
461
+ flex-grow: 1;
462
+ }
463
+
464
+ .carousel-slide .task-session-info {
465
+ margin-top: auto;
466
+ }
467
+
468
+ /* Task status badge pulse for in_progress */
469
+ .task-status-badge {
470
+ transition: all 0.2s;
471
+ }
472
+
473
+ .bg-warning-light .task-status-badge {
474
+ animation: statusPulse 2s ease-in-out infinite;
475
+ }
476
+
477
+ @keyframes statusPulse {
478
+ 0%, 100% {
479
+ opacity: 1;
480
+ }
481
+ 50% {
482
+ opacity: 0.7;
483
+ }
484
+ }
485
+
486
+ /* Task highlight animation when navigating from carousel */
487
+ .task-highlight {
488
+ animation: taskHighlight 0.5s ease-out 3;
489
+ }
490
+
491
+ @keyframes taskHighlight {
492
+ 0%, 100% {
493
+ background: transparent;
494
+ box-shadow: none;
495
+ }
496
+ 50% {
497
+ background: hsl(var(--primary-light));
498
+ box-shadow: 0 0 0 3px hsl(var(--primary) / 0.3);
499
+ }
500
+ }
501
+
502
+ /* Line clamp utility */
503
+ .line-clamp-1 {
504
+ display: -webkit-box;
505
+ -webkit-line-clamp: 1;
506
+ -webkit-box-orient: vertical;
507
+ overflow: hidden;
508
+ }
509
+
510
+ .line-clamp-2 {
511
+ display: -webkit-box;
512
+ -webkit-line-clamp: 2;
513
+ -webkit-box-orient: vertical;
514
+ overflow: hidden;
515
+ }
516
+
517
+ /* Highlight pulse effect */
518
+ .highlight-pulse {
519
+ animation: highlightPulse 0.5s ease-out 2;
520
+ }
521
+
522
+ @keyframes highlightPulse {
523
+ 0%, 100% {
524
+ box-shadow: none;
525
+ }
526
+ 50% {
527
+ box-shadow: 0 0 0 3px hsl(var(--primary) / 0.3);
528
+ }
529
+ }
530
+
531
+ /* ==========================================
532
+ NOTIFICATION BUBBLES
533
+ ========================================== */
534
+
535
+ .notification-bubble {
536
+ position: fixed;
537
+ top: 70px;
538
+ right: 20px;
539
+ max-width: 360px;
540
+ padding: 12px 16px;
541
+ background: hsl(var(--card));
542
+ border: 1px solid hsl(var(--border));
543
+ border-radius: 8px;
544
+ box-shadow: 0 8px 24px rgb(0 0 0 / 0.15);
545
+ z-index: 1000;
546
+ display: flex;
547
+ align-items: center;
548
+ gap: 8px;
549
+ opacity: 0;
550
+ transform: translateX(100%);
551
+ transition: all 0.3s ease-out;
552
+ }
553
+
554
+ .notification-bubble.show {
555
+ opacity: 1;
556
+ transform: translateX(0);
557
+ }
558
+
559
+ .notification-bubble.fade-out {
560
+ opacity: 0;
561
+ transform: translateX(100%);
562
+ }
563
+
564
+ .notification-bubble:nth-child(2) {
565
+ top: 130px;
566
+ }
567
+
568
+ .notification-bubble:nth-child(3) {
569
+ top: 190px;
570
+ }
571
+
572
+ .notification-content {
573
+ display: flex;
574
+ align-items: center;
575
+ gap: 8px;
576
+ flex: 1;
577
+ }
578
+
579
+ .notification-icon {
580
+ font-size: 1.25rem;
581
+ }
582
+
583
+ .notification-message {
584
+ font-size: 0.875rem;
585
+ color: hsl(var(--foreground));
586
+ flex: 1;
587
+ }
588
+
589
+ .notification-action {
590
+ padding: 4px 12px;
591
+ background: hsl(var(--primary));
592
+ color: hsl(var(--primary-foreground));
593
+ border: none;
594
+ border-radius: 4px;
595
+ font-size: 0.75rem;
596
+ font-weight: 500;
597
+ cursor: pointer;
598
+ transition: opacity 0.15s;
599
+ }
600
+
601
+ .notification-action:hover {
602
+ opacity: 0.9;
603
+ }
604
+
605
+ .notification-close {
606
+ width: 24px;
607
+ height: 24px;
608
+ display: flex;
609
+ align-items: center;
610
+ justify-content: center;
611
+ background: transparent;
612
+ border: none;
613
+ color: hsl(var(--muted-foreground));
614
+ font-size: 1.25rem;
615
+ cursor: pointer;
616
+ border-radius: 4px;
617
+ transition: all 0.15s;
618
+ }
619
+
620
+ .notification-close:hover {
621
+ background: hsl(var(--hover));
622
+ color: hsl(var(--foreground));
623
+ }
624
+
625
+ /* Notification types */
626
+ .notification-success {
627
+ border-left: 3px solid hsl(var(--success));
628
+ }
629
+
630
+ .notification-warning {
631
+ border-left: 3px solid hsl(var(--warning));
632
+ }
633
+
634
+ .notification-error {
635
+ border-left: 3px solid hsl(var(--destructive));
636
+ }
637
+
638
+ .notification-info {
639
+ border-left: 3px solid hsl(var(--primary));
640
+ }
641
+
642
+ /* Responsive stats section */
643
+ @media (max-width: 768px) {
644
+ .stats-section {
645
+ flex-direction: column;
646
+ }
647
+
648
+ .stats-metrics {
649
+ width: 100%;
650
+ grid-template-columns: repeat(4, 1fr);
651
+ }
652
+
653
+ .stats-carousel {
654
+ min-height: 160px;
655
+ }
656
+ }
657
+ /* Exploration Object Rendering - Theme Compatible */
658
+ .exp-object {
659
+ display: flex;
660
+ flex-direction: column;
661
+ gap: 8px;
662
+ padding: 12px;
663
+ background: hsl(var(--muted));
664
+ border-radius: 8px;
665
+ border: 1px solid hsl(var(--border));
666
+ }
667
+
668
+ .exp-obj-field {
669
+ display: flex;
670
+ flex-wrap: wrap;
671
+ gap: 6px;
672
+ align-items: flex-start;
673
+ font-size: 13px;
674
+ line-height: 1.5;
675
+ }
676
+
677
+ .exp-obj-key {
678
+ font-weight: 600;
679
+ color: hsl(var(--muted-foreground));
680
+ min-width: 120px;
681
+ }
682
+
683
+ .exp-obj-val {
684
+ color: hsl(var(--foreground));
685
+ flex: 1;
686
+ }
687
+
688
+ .exp-obj-nested {
689
+ margin-left: 16px;
690
+ padding: 8px;
691
+ border-left: 2px solid hsl(var(--border));
692
+ }
693
+
694
+ .exp-obj-nested > .exp-obj-key {
695
+ display: block;
696
+ margin-bottom: 8px;
697
+ color: hsl(var(--primary));
698
+ font-size: 12px;
699
+ text-transform: uppercase;
700
+ letter-spacing: 0.5px;
701
+ }
702
+
703
+ .exp-list {
704
+ margin: 4px 0 0 0;
705
+ padding-left: 20px;
706
+ list-style: disc;
707
+ }
708
+
709
+ .exp-list li {
710
+ font-size: 13px;
711
+ color: hsl(var(--foreground));
712
+ line-height: 1.6;
713
+ margin-bottom: 4px;
714
+ }
715
+
716
+ .exp-array-objects {
717
+ display: flex;
718
+ flex-direction: column;
719
+ gap: 10px;
720
+ }
721
+
722
+ .exp-object-item {
723
+ padding: 10px;
724
+ background: hsl(var(--card));
725
+ border-radius: 6px;
726
+ border: 1px solid hsl(var(--border));
727
+ }
728
+
729
+ .clarification-impact {
730
+ font-size: 12px;
731
+ color: hsl(var(--muted-foreground));
732
+ margin-top: 6px;
733
+ }
734
+
735
+ .priority-badge {
736
+ display: inline-block;
737
+ padding: 2px 8px;
738
+ border-radius: 4px;
739
+ font-size: 11px;
740
+ font-weight: 500;
741
+ text-transform: uppercase;
742
+ }
743
+
744
+ .priority-badge.priority-high {
745
+ background: hsl(var(--destructive) / 0.15);
746
+ color: hsl(var(--destructive));
747
+ }
748
+
749
+ .priority-badge.priority-medium {
750
+ background: hsl(var(--warning-light));
751
+ color: hsl(var(--warning));
752
+ }
753
+
754
+ .priority-badge.priority-low {
755
+ background: hsl(var(--success-light));
756
+ color: hsl(var(--success));
757
+ }
758
+
759
+ /* Conflict Tab Styles - Theme Compatible */
760
+ .conflict-tab-content {
761
+ padding: 16px;
762
+ }
763
+
764
+ .conflict-tab-header {
765
+ margin-bottom: 24px;
766
+ }
767
+
768
+ .conflict-tab-header h3 {
769
+ font-size: 18px;
770
+ font-weight: 600;
771
+ color: hsl(var(--foreground));
772
+ margin: 0 0 8px 0;
773
+ }
774
+
775
+ .conflict-meta-info {
776
+ display: flex;
777
+ gap: 16px;
778
+ font-size: 13px;
779
+ color: hsl(var(--muted-foreground));
780
+ }
781
+
782
+ .conflict-meta-info strong {
783
+ color: hsl(var(--foreground));
784
+ }
785
+
786
+ .conflict-section-title {
787
+ font-size: 15px;
788
+ font-weight: 600;
789
+ color: hsl(var(--foreground));
790
+ margin: 24px 0 12px 0;
791
+ padding-bottom: 8px;
792
+ border-bottom: 1px solid hsl(var(--border));
793
+ }
794
+
795
+ .conflict-cards-grid {
796
+ display: grid;
797
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
798
+ gap: 16px;
799
+ }
800
+
801
+ .conflict-card {
802
+ background: hsl(var(--card));
803
+ border: 1px solid hsl(var(--border));
804
+ border-radius: 12px;
805
+ padding: 16px;
806
+ transition: box-shadow 0.2s ease, border-color 0.2s ease;
807
+ }
808
+
809
+ .conflict-card:hover {
810
+ box-shadow: 0 4px 12px hsl(var(--foreground) / 0.08);
811
+ border-color: hsl(var(--primary));
812
+ }
813
+
814
+ .decision-card {
815
+ border-left: 3px solid hsl(var(--primary));
816
+ }
817
+
818
+ .resolved-card {
819
+ border-left: 3px solid hsl(var(--success));
820
+ }
821
+
822
+ .conflict-card-header {
823
+ display: flex;
824
+ align-items: center;
825
+ justify-content: space-between;
826
+ margin-bottom: 12px;
827
+ }
828
+
829
+ .conflict-card-label {
830
+ font-size: 14px;
831
+ font-weight: 600;
832
+ color: hsl(var(--foreground));
833
+ }
834
+
835
+ .conflict-card-id {
836
+ font-size: 13px;
837
+ font-weight: 600;
838
+ color: hsl(var(--primary));
839
+ font-family: monospace;
840
+ }
841
+
842
+ .conflict-category-tag {
843
+ padding: 3px 8px;
844
+ background: hsl(var(--muted));
845
+ color: hsl(var(--muted-foreground));
846
+ border-radius: 4px;
847
+ font-size: 11px;
848
+ font-weight: 500;
849
+ }
850
+
851
+ .conflict-card-choice {
852
+ display: flex;
853
+ align-items: center;
854
+ gap: 8px;
855
+ margin-bottom: 10px;
856
+ padding: 10px 12px;
857
+ background: hsl(var(--primary-light));
858
+ border-radius: 8px;
859
+ }
860
+
861
+ .choice-label {
862
+ font-size: 12px;
863
+ color: hsl(var(--muted-foreground));
864
+ }
865
+
866
+ .choice-value {
867
+ font-size: 14px;
868
+ font-weight: 600;
869
+ color: hsl(var(--primary));
870
+ }
871
+
872
+ .conflict-card-desc {
873
+ font-size: 13px;
874
+ color: hsl(var(--muted-foreground));
875
+ line-height: 1.5;
876
+ margin-bottom: 10px;
877
+ }
878
+
879
+ .conflict-card-brief {
880
+ font-size: 13px;
881
+ color: hsl(var(--foreground));
882
+ line-height: 1.5;
883
+ margin-bottom: 12px;
884
+ }
885
+
886
+ .conflict-card-implications {
887
+ margin-top: 10px;
888
+ padding-top: 10px;
889
+ border-top: 1px solid hsl(var(--border));
890
+ }
891
+
892
+ .conflict-card-implications .impl-label {
893
+ display: block;
894
+ font-size: 11px;
895
+ font-weight: 600;
896
+ color: hsl(var(--muted-foreground));
897
+ text-transform: uppercase;
898
+ letter-spacing: 0.5px;
899
+ margin-bottom: 6px;
900
+ }
901
+
902
+ .conflict-card-implications ul {
903
+ margin: 0;
904
+ padding-left: 18px;
905
+ }
906
+
907
+ .conflict-card-implications li {
908
+ font-size: 12px;
909
+ color: hsl(var(--muted-foreground));
910
+ line-height: 1.5;
911
+ margin-bottom: 4px;
912
+ }
913
+
914
+ .conflict-card-strategy {
915
+ display: flex;
916
+ align-items: center;
917
+ gap: 8px;
918
+ margin-top: 12px;
919
+ padding-top: 12px;
920
+ border-top: 1px solid hsl(var(--border));
921
+ }
922
+
923
+ .conflict-card-strategy .strategy-label {
924
+ font-size: 12px;
925
+ color: hsl(var(--muted-foreground));
926
+ }
927
+
928
+ .strategy-tag {
929
+ padding: 4px 10px;
930
+ background: hsl(var(--success-light));
931
+ color: hsl(var(--success));
932
+ border-radius: 6px;
933
+ font-size: 12px;
934
+ font-weight: 500;
935
+ }
936
+