claude-code-workflow 6.3.4 → 6.3.6

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 (111) hide show
  1. package/.claude/agents/issue-plan-agent.md +859 -0
  2. package/.claude/agents/issue-queue-agent.md +702 -0
  3. package/.claude/commands/issue/execute.md +453 -0
  4. package/.claude/commands/issue/manage.md +865 -0
  5. package/.claude/commands/issue/new.md +484 -0
  6. package/.claude/commands/issue/plan.md +421 -0
  7. package/.claude/commands/issue/queue.md +354 -0
  8. package/.claude/commands/{clean.md → workflow/clean.md} +5 -5
  9. package/.claude/commands/workflow/docs/analyze.md +1467 -0
  10. package/.claude/commands/workflow/docs/copyright.md +1265 -0
  11. package/.claude/commands/workflow/execute.md +0 -1
  12. package/.claude/commands/workflow/tools/conflict-resolution.md +76 -240
  13. package/.claude/commands/workflow/tools/context-gather.md +0 -2
  14. package/.claude/commands/workflow/tools/task-generate-agent.md +81 -8
  15. package/.claude/commands/workflow/tools/task-generate-tdd.md +0 -9
  16. package/.claude/commands/workflow/tools/test-context-gather.md +2 -3
  17. package/.claude/commands/workflow/tools/test-task-generate.md +0 -2
  18. package/.claude/skills/_shared/mermaid-utils.md +584 -0
  19. package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +0 -2
  20. package/.claude/skills/command-guide/reference/commands/workflow/execute.md +1 -1
  21. package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +1 -2
  22. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +1 -8
  23. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-context-gather.md +1 -4
  24. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-task-generate.md +0 -2
  25. package/.claude/skills/copyright-docs/SKILL.md +132 -0
  26. package/.claude/skills/copyright-docs/phases/01-metadata-collection.md +78 -0
  27. package/.claude/skills/copyright-docs/phases/01.5-project-exploration.md +150 -0
  28. package/.claude/skills/copyright-docs/phases/02-deep-analysis.md +664 -0
  29. package/.claude/skills/copyright-docs/phases/02.5-consolidation.md +192 -0
  30. package/.claude/skills/copyright-docs/phases/04-document-assembly.md +261 -0
  31. package/.claude/skills/copyright-docs/phases/05-compliance-refinement.md +192 -0
  32. package/.claude/skills/copyright-docs/specs/cpcc-requirements.md +121 -0
  33. package/.claude/skills/copyright-docs/templates/agent-base.md +200 -0
  34. package/.claude/skills/project-analyze/SKILL.md +162 -0
  35. package/.claude/skills/project-analyze/phases/01-requirements-discovery.md +79 -0
  36. package/.claude/skills/project-analyze/phases/02-project-exploration.md +176 -0
  37. package/.claude/skills/project-analyze/phases/03-deep-analysis.md +854 -0
  38. package/.claude/skills/project-analyze/phases/03.5-consolidation.md +233 -0
  39. package/.claude/skills/project-analyze/phases/04-report-generation.md +217 -0
  40. package/.claude/skills/project-analyze/phases/05-iterative-refinement.md +124 -0
  41. package/.claude/skills/project-analyze/specs/quality-standards.md +115 -0
  42. package/.claude/skills/project-analyze/specs/writing-style.md +152 -0
  43. package/.claude/workflows/cli-templates/schemas/conflict-resolution-schema.json +79 -65
  44. package/.claude/workflows/cli-templates/schemas/issue-task-jsonl-schema.json +136 -0
  45. package/.claude/workflows/cli-templates/schemas/issues-jsonl-schema.json +74 -0
  46. package/.claude/workflows/cli-templates/schemas/queue-schema.json +136 -0
  47. package/.claude/workflows/cli-templates/schemas/registry-schema.json +94 -0
  48. package/.claude/workflows/cli-templates/schemas/solution-schema.json +120 -0
  49. package/.claude/workflows/cli-templates/schemas/solutions-jsonl-schema.json +125 -0
  50. package/.codex/prompts/issue-execute.md +266 -0
  51. package/README.md +11 -1
  52. package/ccw/dist/cli.d.ts.map +1 -1
  53. package/ccw/dist/cli.js +25 -0
  54. package/ccw/dist/cli.js.map +1 -1
  55. package/ccw/dist/commands/cli.d.ts.map +1 -1
  56. package/ccw/dist/commands/cli.js +46 -8
  57. package/ccw/dist/commands/cli.js.map +1 -1
  58. package/ccw/dist/commands/issue.d.ts +21 -0
  59. package/ccw/dist/commands/issue.d.ts.map +1 -0
  60. package/ccw/dist/commands/issue.js +895 -0
  61. package/ccw/dist/commands/issue.js.map +1 -0
  62. package/ccw/dist/core/dashboard-generator-patch.js +1 -0
  63. package/ccw/dist/core/dashboard-generator-patch.js.map +1 -1
  64. package/ccw/dist/core/routes/cli-routes.js +2 -2
  65. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  66. package/ccw/dist/core/routes/issue-routes.d.ts +34 -0
  67. package/ccw/dist/core/routes/issue-routes.d.ts.map +1 -0
  68. package/ccw/dist/core/routes/issue-routes.js +487 -0
  69. package/ccw/dist/core/routes/issue-routes.js.map +1 -0
  70. package/ccw/dist/core/server.d.ts.map +1 -1
  71. package/ccw/dist/core/server.js +17 -2
  72. package/ccw/dist/core/server.js.map +1 -1
  73. package/ccw/dist/tools/claude-cli-tools.d.ts +7 -3
  74. package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -1
  75. package/ccw/dist/tools/claude-cli-tools.js +31 -17
  76. package/ccw/dist/tools/claude-cli-tools.js.map +1 -1
  77. package/ccw/dist/tools/smart-search.d.ts +25 -0
  78. package/ccw/dist/tools/smart-search.d.ts.map +1 -1
  79. package/ccw/dist/tools/smart-search.js +121 -17
  80. package/ccw/dist/tools/smart-search.js.map +1 -1
  81. package/ccw/src/cli.ts +26 -0
  82. package/ccw/src/commands/cli.ts +49 -7
  83. package/ccw/src/commands/issue.ts +1184 -0
  84. package/ccw/src/core/dashboard-generator-patch.ts +1 -0
  85. package/ccw/src/core/routes/cli-routes.ts +3 -3
  86. package/ccw/src/core/routes/issue-routes.ts +559 -0
  87. package/ccw/src/core/server.ts +17 -2
  88. package/ccw/src/templates/dashboard-css/32-issue-manager.css +2544 -0
  89. package/ccw/src/templates/dashboard-css/33-cli-stream-viewer.css +467 -0
  90. package/ccw/src/templates/dashboard-js/components/cli-history.js +40 -13
  91. package/ccw/src/templates/dashboard-js/components/cli-status.js +26 -2
  92. package/ccw/src/templates/dashboard-js/components/cli-stream-viewer.js +461 -0
  93. package/ccw/src/templates/dashboard-js/components/navigation.js +8 -0
  94. package/ccw/src/templates/dashboard-js/components/notifications.js +16 -0
  95. package/ccw/src/templates/dashboard-js/i18n.js +290 -2
  96. package/ccw/src/templates/dashboard-js/views/cli-manager.js +5 -0
  97. package/ccw/src/templates/dashboard-js/views/history.js +19 -4
  98. package/ccw/src/templates/dashboard-js/views/hook-manager.js +11 -5
  99. package/ccw/src/templates/dashboard-js/views/issue-manager.js +1546 -0
  100. package/ccw/src/templates/dashboard.html +55 -0
  101. package/ccw/src/tools/claude-cli-tools.ts +37 -20
  102. package/ccw/src/tools/smart-search.ts +157 -16
  103. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  104. package/codex-lens/src/codexlens/config.py +5 -0
  105. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  106. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  107. package/codex-lens/src/codexlens/search/hybrid_search.py +144 -11
  108. package/codex-lens/src/codexlens/search/ranking.py +267 -1
  109. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
  110. package/codex-lens/src/codexlens/semantic/chunker.py +55 -10
  111. package/package.json +2 -2
@@ -0,0 +1,2544 @@
1
+ /* ==========================================
2
+ ISSUE MANAGER STYLES
3
+ ========================================== */
4
+
5
+ /* Issue Manager Container */
6
+ .issue-manager {
7
+ width: 100%;
8
+ }
9
+
10
+ .issue-manager.loading {
11
+ display: flex;
12
+ flex-direction: column;
13
+ align-items: center;
14
+ justify-content: center;
15
+ min-height: 300px;
16
+ color: hsl(var(--muted-foreground));
17
+ }
18
+
19
+ /* Issue Header */
20
+ .issue-header {
21
+ margin-bottom: 1.5rem;
22
+ }
23
+
24
+ /* View Toggle (Issues/Queue) */
25
+ .issue-view-toggle {
26
+ display: inline-flex;
27
+ background: hsl(var(--muted));
28
+ border-radius: 0.5rem;
29
+ padding: 0.25rem;
30
+ gap: 0.25rem;
31
+ }
32
+
33
+ .issue-view-toggle button {
34
+ padding: 0.5rem 1rem;
35
+ border-radius: 0.375rem;
36
+ font-size: 0.875rem;
37
+ font-weight: 500;
38
+ color: hsl(var(--muted-foreground));
39
+ background: transparent;
40
+ border: none;
41
+ cursor: pointer;
42
+ transition: all 0.15s ease;
43
+ }
44
+
45
+ .issue-view-toggle button:hover {
46
+ color: hsl(var(--foreground));
47
+ }
48
+
49
+ .issue-view-toggle button.active {
50
+ background: hsl(var(--background));
51
+ color: hsl(var(--foreground));
52
+ box-shadow: 0 1px 2px hsl(var(--foreground) / 0.05);
53
+ }
54
+
55
+ /* Issues Grid */
56
+ .issues-section {
57
+ margin-bottom: 2rem;
58
+ width: 100%;
59
+ }
60
+
61
+ .issues-grid {
62
+ display: grid;
63
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
64
+ gap: 1rem;
65
+ width: 100%;
66
+ }
67
+
68
+ .issues-empty-state,
69
+ .issue-empty {
70
+ display: flex;
71
+ flex-direction: column;
72
+ align-items: center;
73
+ justify-content: center;
74
+ min-height: 200px;
75
+ text-align: center;
76
+ color: hsl(var(--muted-foreground));
77
+ }
78
+
79
+ .issue-empty svg {
80
+ margin-bottom: 1rem;
81
+ opacity: 0.5;
82
+ }
83
+
84
+ /* Issue Filters */
85
+ .issue-filters {
86
+ display: flex;
87
+ align-items: center;
88
+ gap: 0.5rem;
89
+ flex-wrap: wrap;
90
+ }
91
+
92
+ .issue-filter-btn {
93
+ padding: 0.375rem 0.75rem;
94
+ border-radius: 9999px;
95
+ font-size: 0.75rem;
96
+ font-weight: 500;
97
+ color: hsl(var(--muted-foreground));
98
+ background: hsl(var(--muted));
99
+ border: 1px solid transparent;
100
+ cursor: pointer;
101
+ transition: all 0.15s ease;
102
+ }
103
+
104
+ .issue-filter-btn:hover {
105
+ background: hsl(var(--muted) / 0.8);
106
+ color: hsl(var(--foreground));
107
+ }
108
+
109
+ .issue-filter-btn.active {
110
+ background: hsl(var(--primary));
111
+ color: hsl(var(--primary-foreground));
112
+ }
113
+
114
+ /* Issue Card */
115
+ .issue-card {
116
+ position: relative;
117
+ background: hsl(var(--card));
118
+ border: 1px solid hsl(var(--border));
119
+ border-radius: 0.5rem;
120
+ padding: 1rem;
121
+ transition: all 0.2s ease;
122
+ cursor: pointer;
123
+ }
124
+
125
+ .issue-card:hover {
126
+ border-color: hsl(var(--primary));
127
+ transform: translateY(-2px);
128
+ box-shadow: 0 4px 12px hsl(var(--foreground) / 0.08);
129
+ }
130
+
131
+ .issue-card-header {
132
+ display: flex;
133
+ align-items: flex-start;
134
+ justify-content: space-between;
135
+ gap: 0.5rem;
136
+ }
137
+
138
+ .issue-card-id {
139
+ font-family: var(--font-mono);
140
+ font-size: 0.75rem;
141
+ color: hsl(var(--muted-foreground));
142
+ }
143
+
144
+ .issue-card-title,
145
+ .issue-title {
146
+ font-weight: 600;
147
+ font-size: 0.9375rem;
148
+ line-height: 1.4;
149
+ margin-top: 0.25rem;
150
+ }
151
+
152
+ .issue-card-meta,
153
+ .issue-meta {
154
+ display: flex;
155
+ align-items: center;
156
+ gap: 0.5rem;
157
+ margin-top: 0.75rem;
158
+ font-size: 0.75rem;
159
+ color: hsl(var(--muted-foreground));
160
+ }
161
+
162
+ .issue-card-stats {
163
+ display: flex;
164
+ align-items: center;
165
+ gap: 1rem;
166
+ margin-top: 0.5rem;
167
+ }
168
+
169
+ .issue-card-stat {
170
+ display: flex;
171
+ align-items: center;
172
+ gap: 0.25rem;
173
+ font-size: 0.75rem;
174
+ color: hsl(var(--muted-foreground));
175
+ }
176
+
177
+ /* Issue Status Badges */
178
+ .issue-status {
179
+ display: inline-flex;
180
+ align-items: center;
181
+ padding: 0.125rem 0.5rem;
182
+ border-radius: 9999px;
183
+ font-size: 0.6875rem;
184
+ font-weight: 500;
185
+ text-transform: uppercase;
186
+ letter-spacing: 0.025em;
187
+ }
188
+
189
+ .issue-status.registered {
190
+ background: hsl(var(--muted));
191
+ color: hsl(var(--muted-foreground));
192
+ }
193
+
194
+ .issue-status.planning {
195
+ background: hsl(38 92% 50% / 0.15);
196
+ color: hsl(38 92% 50%);
197
+ }
198
+
199
+ .issue-status.planned {
200
+ background: hsl(217 91% 60% / 0.15);
201
+ color: hsl(217 91% 60%);
202
+ }
203
+
204
+ .issue-status.queued {
205
+ background: hsl(262 83% 58% / 0.15);
206
+ color: hsl(262 83% 58%);
207
+ }
208
+
209
+ .issue-status.executing {
210
+ background: hsl(45 93% 47% / 0.15);
211
+ color: hsl(45 93% 47%);
212
+ }
213
+
214
+ .issue-status.completed {
215
+ background: hsl(var(--success) / 0.15);
216
+ color: hsl(var(--success));
217
+ }
218
+
219
+ .issue-status.failed {
220
+ background: hsl(var(--destructive) / 0.15);
221
+ color: hsl(var(--destructive));
222
+ }
223
+
224
+ /* Priority Badges */
225
+ .issue-priority {
226
+ display: inline-flex;
227
+ align-items: center;
228
+ padding: 0.125rem 0.375rem;
229
+ border-radius: 0.25rem;
230
+ font-size: 0.6875rem;
231
+ font-weight: 500;
232
+ }
233
+
234
+ .issue-priority.critical {
235
+ background: hsl(0 84% 60% / 0.15);
236
+ color: hsl(0 84% 60%);
237
+ }
238
+
239
+ .issue-priority.high {
240
+ background: hsl(25 95% 53% / 0.15);
241
+ color: hsl(25 95% 53%);
242
+ }
243
+
244
+ .issue-priority.medium {
245
+ background: hsl(45 93% 47% / 0.15);
246
+ color: hsl(45 93% 47%);
247
+ }
248
+
249
+ .issue-priority.low {
250
+ background: hsl(var(--muted));
251
+ color: hsl(var(--muted-foreground));
252
+ }
253
+
254
+ /* ==========================================
255
+ QUEUE VIEW STYLES
256
+ ========================================== */
257
+
258
+ .queue-section {
259
+ width: 100%;
260
+ }
261
+
262
+ .queue-timeline {
263
+ display: flex;
264
+ flex-direction: column;
265
+ gap: 1.5rem;
266
+ }
267
+
268
+ .queue-empty-state,
269
+ .queue-empty {
270
+ display: flex;
271
+ flex-direction: column;
272
+ align-items: center;
273
+ justify-content: center;
274
+ min-height: 200px;
275
+ text-align: center;
276
+ color: hsl(var(--muted-foreground));
277
+ }
278
+
279
+ .queue-empty svg,
280
+ .queue-empty > i {
281
+ margin-bottom: 1rem;
282
+ opacity: 0.5;
283
+ color: hsl(var(--muted-foreground));
284
+ }
285
+
286
+ .queue-empty-container {
287
+ display: flex;
288
+ align-items: center;
289
+ justify-content: center;
290
+ min-height: 300px;
291
+ }
292
+
293
+ .queue-empty-title {
294
+ font-size: 1.125rem;
295
+ font-weight: 600;
296
+ color: hsl(var(--foreground));
297
+ margin-bottom: 0.5rem;
298
+ }
299
+
300
+ .queue-empty-hint {
301
+ font-size: 0.875rem;
302
+ color: hsl(var(--muted-foreground));
303
+ margin-bottom: 1.5rem;
304
+ }
305
+
306
+ .queue-create-btn {
307
+ display: inline-flex;
308
+ align-items: center;
309
+ gap: 0.375rem;
310
+ padding: 0.625rem 1.25rem;
311
+ background: hsl(var(--primary));
312
+ color: hsl(var(--primary-foreground));
313
+ border: none;
314
+ border-radius: 0.375rem;
315
+ font-size: 0.875rem;
316
+ font-weight: 500;
317
+ cursor: pointer;
318
+ transition: all 0.15s ease;
319
+ }
320
+
321
+ .queue-create-btn:hover {
322
+ background: hsl(var(--primary) / 0.9);
323
+ transform: translateY(-1px);
324
+ }
325
+
326
+ /* Queue Toolbar */
327
+ .queue-toolbar {
328
+ display: flex;
329
+ align-items: center;
330
+ justify-content: space-between;
331
+ gap: 1rem;
332
+ padding: 0.75rem 1rem;
333
+ background: hsl(var(--muted) / 0.3);
334
+ border: 1px solid hsl(var(--border));
335
+ border-radius: 0.5rem;
336
+ }
337
+
338
+ .queue-stats {
339
+ display: flex;
340
+ align-items: center;
341
+ gap: 0.5rem;
342
+ }
343
+
344
+ .queue-actions {
345
+ display: flex;
346
+ align-items: center;
347
+ gap: 0.5rem;
348
+ }
349
+
350
+ /* Command Box */
351
+ .command-option {
352
+ margin-bottom: 0.75rem;
353
+ }
354
+
355
+ .command-box {
356
+ display: flex;
357
+ align-items: center;
358
+ gap: 0.5rem;
359
+ padding: 0.75rem;
360
+ background: hsl(var(--muted) / 0.5);
361
+ border: 1px solid hsl(var(--border));
362
+ border-radius: 0.375rem;
363
+ }
364
+
365
+ .command-text {
366
+ flex: 1;
367
+ font-family: var(--font-mono);
368
+ font-size: 0.875rem;
369
+ color: hsl(var(--foreground));
370
+ word-break: break-all;
371
+ }
372
+
373
+ .command-info {
374
+ padding: 0.75rem;
375
+ background: hsl(var(--primary) / 0.05);
376
+ border-radius: 0.375rem;
377
+ border-left: 3px solid hsl(var(--primary));
378
+ }
379
+
380
+ /* Issue ID */
381
+ .issue-id {
382
+ font-family: var(--font-mono);
383
+ font-size: 0.75rem;
384
+ color: hsl(var(--muted-foreground));
385
+ background: hsl(var(--muted));
386
+ padding: 0.125rem 0.375rem;
387
+ border-radius: 0.25rem;
388
+ }
389
+
390
+ /* Execution Group */
391
+ .queue-group {
392
+ border: 1px solid hsl(var(--border));
393
+ border-radius: 0.75rem;
394
+ overflow: hidden;
395
+ }
396
+
397
+ .queue-group-header {
398
+ display: flex;
399
+ align-items: center;
400
+ justify-content: space-between;
401
+ padding: 0.75rem 1rem;
402
+ background: hsl(var(--muted) / 0.5);
403
+ border-bottom: 1px solid hsl(var(--border));
404
+ }
405
+
406
+ .queue-group-title {
407
+ display: flex;
408
+ align-items: center;
409
+ gap: 0.5rem;
410
+ font-weight: 600;
411
+ font-size: 0.875rem;
412
+ }
413
+
414
+ .queue-group-badge {
415
+ display: inline-flex;
416
+ align-items: center;
417
+ padding: 0.125rem 0.5rem;
418
+ border-radius: 9999px;
419
+ font-size: 0.6875rem;
420
+ font-weight: 500;
421
+ }
422
+
423
+ .queue-group-badge.parallel {
424
+ background: hsl(142 71% 45% / 0.15);
425
+ color: hsl(142 71% 45%);
426
+ }
427
+
428
+ .queue-group-badge.sequential {
429
+ background: hsl(262 83% 58% / 0.15);
430
+ color: hsl(262 83% 58%);
431
+ }
432
+
433
+ .queue-group-count {
434
+ font-size: 0.75rem;
435
+ color: hsl(var(--muted-foreground));
436
+ }
437
+
438
+ .queue-group-items {
439
+ padding: 0.75rem;
440
+ display: flex;
441
+ flex-direction: column;
442
+ gap: 0.5rem;
443
+ min-height: 60px;
444
+ }
445
+
446
+ /* Parallel group items display horizontally */
447
+ .queue-group.parallel .queue-group-items {
448
+ flex-direction: row;
449
+ flex-wrap: wrap;
450
+ }
451
+
452
+ /* Queue Item */
453
+ .queue-item {
454
+ display: flex;
455
+ align-items: center;
456
+ gap: 0.75rem;
457
+ padding: 0.75rem 1rem;
458
+ background: hsl(var(--background));
459
+ border: 1px solid hsl(var(--border));
460
+ border-radius: 0.5rem;
461
+ transition: all 0.15s ease;
462
+ }
463
+
464
+ .queue-item:hover {
465
+ border-color: hsl(var(--primary));
466
+ box-shadow: 0 2px 4px hsl(var(--foreground) / 0.05);
467
+ }
468
+
469
+ .queue-item[draggable="true"] {
470
+ cursor: grab;
471
+ }
472
+
473
+ .queue-item[draggable="true"]:active {
474
+ cursor: grabbing;
475
+ }
476
+
477
+ .queue-item-drag-handle {
478
+ display: flex;
479
+ align-items: center;
480
+ color: hsl(var(--muted-foreground));
481
+ cursor: grab;
482
+ }
483
+
484
+ .queue-item-drag-handle:active {
485
+ cursor: grabbing;
486
+ }
487
+
488
+ .queue-item-order {
489
+ font-family: var(--font-mono);
490
+ font-size: 0.75rem;
491
+ color: hsl(var(--muted-foreground));
492
+ min-width: 2.5rem;
493
+ }
494
+
495
+ .queue-item-content {
496
+ flex: 1;
497
+ min-width: 0;
498
+ }
499
+
500
+ .queue-item-id {
501
+ font-family: var(--font-mono);
502
+ font-size: 0.6875rem;
503
+ color: hsl(var(--muted-foreground));
504
+ }
505
+
506
+ .queue-item-title {
507
+ font-size: 0.875rem;
508
+ font-weight: 500;
509
+ white-space: nowrap;
510
+ overflow: hidden;
511
+ text-overflow: ellipsis;
512
+ }
513
+
514
+ .queue-item-issue {
515
+ font-size: 0.75rem;
516
+ color: hsl(var(--muted-foreground));
517
+ }
518
+
519
+ .queue-item-priority {
520
+ font-family: var(--font-mono);
521
+ font-size: 0.6875rem;
522
+ padding: 0.125rem 0.375rem;
523
+ background: hsl(var(--muted));
524
+ border-radius: 0.25rem;
525
+ color: hsl(var(--muted-foreground));
526
+ }
527
+
528
+ /* Queue Item Status */
529
+ .queue-item-status {
530
+ display: inline-flex;
531
+ align-items: center;
532
+ gap: 0.25rem;
533
+ padding: 0.125rem 0.5rem;
534
+ border-radius: 9999px;
535
+ font-size: 0.6875rem;
536
+ font-weight: 500;
537
+ }
538
+
539
+ .queue-item-status.pending {
540
+ background: hsl(var(--muted));
541
+ color: hsl(var(--muted-foreground));
542
+ }
543
+
544
+ .queue-item-status.running {
545
+ background: hsl(217 91% 60% / 0.15);
546
+ color: hsl(217 91% 60%);
547
+ }
548
+
549
+ .queue-item-status.completed {
550
+ background: hsl(var(--success) / 0.15);
551
+ color: hsl(var(--success));
552
+ }
553
+
554
+ .queue-item-status.failed {
555
+ background: hsl(var(--destructive) / 0.15);
556
+ color: hsl(var(--destructive));
557
+ }
558
+
559
+ /* Drag and Drop States */
560
+ .queue-item.dragging {
561
+ opacity: 0.5;
562
+ border: 2px dashed hsl(var(--primary));
563
+ }
564
+
565
+ .queue-item.drag-over {
566
+ border-color: hsl(var(--primary));
567
+ background: hsl(var(--primary) / 0.05);
568
+ }
569
+
570
+ .queue-group-items.drag-over {
571
+ background: hsl(var(--primary) / 0.03);
572
+ }
573
+
574
+ /* Arrow connector between sequential items */
575
+ .queue-group.sequential .queue-item:not(:last-child)::after {
576
+ content: '';
577
+ display: block;
578
+ width: 0;
579
+ height: 0;
580
+ border-left: 6px solid transparent;
581
+ border-right: 6px solid transparent;
582
+ border-top: 8px solid hsl(var(--muted-foreground) / 0.3);
583
+ position: absolute;
584
+ bottom: -12px;
585
+ left: 50%;
586
+ transform: translateX(-50%);
587
+ }
588
+
589
+ .queue-group.sequential .queue-item {
590
+ position: relative;
591
+ }
592
+
593
+ /* ==========================================
594
+ ISSUE DETAIL PANEL
595
+ ========================================== */
596
+
597
+ .issue-detail-overlay {
598
+ position: fixed;
599
+ inset: 0;
600
+ background: hsl(var(--foreground) / 0.4);
601
+ z-index: 999;
602
+ animation: fadeIn 0.15s ease-out;
603
+ }
604
+
605
+ .issue-detail-panel {
606
+ position: fixed;
607
+ top: 0;
608
+ right: 0;
609
+ width: 560px;
610
+ max-width: 100%;
611
+ height: 100vh;
612
+ background: hsl(var(--background));
613
+ border-left: 1px solid hsl(var(--border));
614
+ z-index: 1000;
615
+ display: flex;
616
+ flex-direction: column;
617
+ animation: slideInPanel 0.2s ease-out;
618
+ }
619
+
620
+ @keyframes slideInPanel {
621
+ from {
622
+ opacity: 0;
623
+ transform: translateX(100%);
624
+ }
625
+ to {
626
+ opacity: 1;
627
+ transform: translateX(0);
628
+ }
629
+ }
630
+
631
+ .issue-detail-header {
632
+ display: flex;
633
+ align-items: flex-start;
634
+ justify-content: space-between;
635
+ padding: 1.25rem 1.5rem;
636
+ border-bottom: 1px solid hsl(var(--border));
637
+ }
638
+
639
+ .issue-detail-header-content {
640
+ flex: 1;
641
+ min-width: 0;
642
+ }
643
+
644
+ .issue-detail-id {
645
+ font-family: var(--font-mono);
646
+ font-size: 0.75rem;
647
+ color: hsl(var(--muted-foreground));
648
+ }
649
+
650
+ .issue-detail-title {
651
+ font-size: 1.125rem;
652
+ font-weight: 600;
653
+ margin-top: 0.25rem;
654
+ line-height: 1.4;
655
+ }
656
+
657
+ .issue-detail-title.editable {
658
+ cursor: text;
659
+ padding: 0.25rem 0.5rem;
660
+ margin: 0.25rem -0.5rem 0;
661
+ border-radius: 0.375rem;
662
+ border: 1px solid transparent;
663
+ }
664
+
665
+ .issue-detail-title.editable:hover {
666
+ background: hsl(var(--muted) / 0.5);
667
+ }
668
+
669
+ .issue-detail-title.editable:focus {
670
+ outline: none;
671
+ border-color: hsl(var(--primary));
672
+ background: hsl(var(--background));
673
+ }
674
+
675
+ .issue-detail-close {
676
+ display: flex;
677
+ align-items: center;
678
+ justify-content: center;
679
+ width: 2rem;
680
+ height: 2rem;
681
+ border-radius: 0.375rem;
682
+ border: none;
683
+ background: transparent;
684
+ cursor: pointer;
685
+ color: hsl(var(--muted-foreground));
686
+ transition: all 0.15s ease;
687
+ }
688
+
689
+ .issue-detail-close:hover {
690
+ background: hsl(var(--muted));
691
+ color: hsl(var(--foreground));
692
+ }
693
+
694
+ .issue-detail-body {
695
+ flex: 1;
696
+ overflow-y: auto;
697
+ padding: 1.5rem;
698
+ }
699
+
700
+ .issue-detail-section {
701
+ margin-bottom: 1.5rem;
702
+ }
703
+
704
+ .issue-detail-section-title {
705
+ font-size: 0.75rem;
706
+ font-weight: 600;
707
+ text-transform: uppercase;
708
+ letter-spacing: 0.05em;
709
+ color: hsl(var(--muted-foreground));
710
+ margin-bottom: 0.75rem;
711
+ display: flex;
712
+ align-items: center;
713
+ gap: 0.5rem;
714
+ }
715
+
716
+ .issue-detail-section-title button {
717
+ padding: 0.25rem;
718
+ border-radius: 0.25rem;
719
+ border: none;
720
+ background: transparent;
721
+ cursor: pointer;
722
+ color: hsl(var(--muted-foreground));
723
+ transition: all 0.15s ease;
724
+ }
725
+
726
+ .issue-detail-section-title button:hover {
727
+ background: hsl(var(--muted));
728
+ color: hsl(var(--foreground));
729
+ }
730
+
731
+ /* Context / Description */
732
+ .issue-detail-context {
733
+ font-size: 0.875rem;
734
+ line-height: 1.6;
735
+ color: hsl(var(--foreground));
736
+ white-space: pre-wrap;
737
+ }
738
+
739
+ .issue-detail-context.editable {
740
+ padding: 0.75rem;
741
+ background: hsl(var(--muted) / 0.3);
742
+ border-radius: 0.5rem;
743
+ border: 1px solid transparent;
744
+ cursor: text;
745
+ min-height: 100px;
746
+ }
747
+
748
+ .issue-detail-context.editable:hover {
749
+ border-color: hsl(var(--border));
750
+ }
751
+
752
+ .issue-detail-context.editable:focus {
753
+ outline: none;
754
+ border-color: hsl(var(--primary));
755
+ background: hsl(var(--background));
756
+ }
757
+
758
+ /* Solutions List */
759
+ .solution-list {
760
+ display: flex;
761
+ flex-direction: column;
762
+ gap: 0.5rem;
763
+ }
764
+
765
+ .solution-item {
766
+ display: flex;
767
+ align-items: center;
768
+ gap: 0.75rem;
769
+ padding: 0.75rem 1rem;
770
+ background: hsl(var(--muted) / 0.3);
771
+ border: 1px solid hsl(var(--border));
772
+ border-radius: 0.5rem;
773
+ cursor: pointer;
774
+ transition: all 0.15s ease;
775
+ }
776
+
777
+ .solution-item:hover {
778
+ border-color: hsl(var(--primary));
779
+ }
780
+
781
+ .solution-item.bound {
782
+ border-color: hsl(var(--success));
783
+ background: hsl(var(--success) / 0.05);
784
+ }
785
+
786
+ .solution-item-icon {
787
+ display: flex;
788
+ align-items: center;
789
+ justify-content: center;
790
+ width: 2rem;
791
+ height: 2rem;
792
+ border-radius: 0.375rem;
793
+ background: hsl(var(--muted));
794
+ color: hsl(var(--muted-foreground));
795
+ }
796
+
797
+ .solution-item.bound .solution-item-icon {
798
+ background: hsl(var(--success) / 0.15);
799
+ color: hsl(var(--success));
800
+ }
801
+
802
+ .solution-item-content {
803
+ flex: 1;
804
+ min-width: 0;
805
+ }
806
+
807
+ .solution-item-name {
808
+ font-size: 0.875rem;
809
+ font-weight: 500;
810
+ }
811
+
812
+ .solution-item-meta {
813
+ font-size: 0.75rem;
814
+ color: hsl(var(--muted-foreground));
815
+ }
816
+
817
+ /* Task List */
818
+ .task-list {
819
+ display: flex;
820
+ flex-direction: column;
821
+ gap: 0.5rem;
822
+ }
823
+
824
+ .task-item {
825
+ padding: 0.75rem 1rem;
826
+ background: hsl(var(--muted) / 0.3);
827
+ border: 1px solid hsl(var(--border));
828
+ border-radius: 0.5rem;
829
+ transition: all 0.15s ease;
830
+ }
831
+
832
+ .task-item:hover {
833
+ border-color: hsl(var(--primary) / 0.5);
834
+ }
835
+
836
+ .task-item-header {
837
+ display: flex;
838
+ align-items: center;
839
+ justify-content: space-between;
840
+ gap: 0.5rem;
841
+ }
842
+
843
+ .task-item-id {
844
+ font-family: var(--font-mono);
845
+ font-size: 0.6875rem;
846
+ color: hsl(var(--muted-foreground));
847
+ }
848
+
849
+ .task-item-title {
850
+ font-size: 0.875rem;
851
+ font-weight: 500;
852
+ margin-top: 0.25rem;
853
+ }
854
+
855
+ .task-item-scope {
856
+ font-size: 0.75rem;
857
+ color: hsl(var(--muted-foreground));
858
+ font-family: var(--font-mono);
859
+ }
860
+
861
+ .task-item-actions {
862
+ display: flex;
863
+ align-items: center;
864
+ gap: 0.5rem;
865
+ }
866
+
867
+ /* Task Action Badge (Create, Update, etc) */
868
+ .task-action-badge {
869
+ display: inline-flex;
870
+ align-items: center;
871
+ padding: 0.125rem 0.375rem;
872
+ border-radius: 0.25rem;
873
+ font-size: 0.6875rem;
874
+ font-weight: 500;
875
+ }
876
+
877
+ .task-action-badge.create {
878
+ background: hsl(142 71% 45% / 0.15);
879
+ color: hsl(142 71% 45%);
880
+ }
881
+
882
+ .task-action-badge.update {
883
+ background: hsl(217 91% 60% / 0.15);
884
+ color: hsl(217 91% 60%);
885
+ }
886
+
887
+ .task-action-badge.implement {
888
+ background: hsl(262 83% 58% / 0.15);
889
+ color: hsl(262 83% 58%);
890
+ }
891
+
892
+ .task-action-badge.configure {
893
+ background: hsl(45 93% 47% / 0.15);
894
+ color: hsl(45 93% 47%);
895
+ }
896
+
897
+ .task-action-badge.refactor {
898
+ background: hsl(25 95% 53% / 0.15);
899
+ color: hsl(25 95% 53%);
900
+ }
901
+
902
+ .task-action-badge.test {
903
+ background: hsl(199 89% 48% / 0.15);
904
+ color: hsl(199 89% 48%);
905
+ }
906
+
907
+ .task-action-badge.delete {
908
+ background: hsl(var(--destructive) / 0.15);
909
+ color: hsl(var(--destructive));
910
+ }
911
+
912
+ /* Task Status Dropdown */
913
+ .task-status-select {
914
+ font-size: 0.6875rem;
915
+ padding: 0.25rem 0.5rem;
916
+ border-radius: 0.25rem;
917
+ border: 1px solid hsl(var(--border));
918
+ background: hsl(var(--background));
919
+ cursor: pointer;
920
+ }
921
+
922
+ .task-status-select:focus {
923
+ outline: none;
924
+ border-color: hsl(var(--primary));
925
+ }
926
+
927
+ /* Modification Points */
928
+ .modification-points {
929
+ margin-top: 0.5rem;
930
+ padding-top: 0.5rem;
931
+ border-top: 1px solid hsl(var(--border) / 0.5);
932
+ }
933
+
934
+ .modification-point {
935
+ display: flex;
936
+ align-items: flex-start;
937
+ gap: 0.5rem;
938
+ font-size: 0.75rem;
939
+ padding: 0.25rem 0;
940
+ }
941
+
942
+ .modification-point-file {
943
+ font-family: var(--font-mono);
944
+ color: hsl(var(--primary));
945
+ }
946
+
947
+ .modification-point-change {
948
+ color: hsl(var(--muted-foreground));
949
+ }
950
+
951
+ /* Implementation Steps */
952
+ .implementation-steps {
953
+ margin-top: 0.5rem;
954
+ padding-left: 1rem;
955
+ font-size: 0.75rem;
956
+ color: hsl(var(--muted-foreground));
957
+ }
958
+
959
+ .implementation-steps li {
960
+ margin: 0.25rem 0;
961
+ }
962
+
963
+ /* Acceptance Criteria */
964
+ .acceptance-criteria {
965
+ margin-top: 0.5rem;
966
+ padding-left: 1rem;
967
+ font-size: 0.75rem;
968
+ }
969
+
970
+ .acceptance-criteria li {
971
+ margin: 0.25rem 0;
972
+ color: hsl(var(--success));
973
+ }
974
+
975
+ /* ==========================================
976
+ CONFLICTS SECTION
977
+ ========================================== */
978
+
979
+ .conflicts-section {
980
+ margin-top: 1.5rem;
981
+ }
982
+
983
+ .conflict-item {
984
+ display: flex;
985
+ align-items: flex-start;
986
+ gap: 0.75rem;
987
+ padding: 0.75rem 1rem;
988
+ background: hsl(45 93% 47% / 0.1);
989
+ border: 1px solid hsl(45 93% 47% / 0.3);
990
+ border-radius: 0.5rem;
991
+ margin-bottom: 0.5rem;
992
+ }
993
+
994
+ .conflict-item.resolved {
995
+ background: hsl(var(--success) / 0.05);
996
+ border-color: hsl(var(--success) / 0.3);
997
+ }
998
+
999
+ .conflict-icon {
1000
+ display: flex;
1001
+ align-items: center;
1002
+ justify-content: center;
1003
+ width: 1.5rem;
1004
+ height: 1.5rem;
1005
+ border-radius: 9999px;
1006
+ background: hsl(45 93% 47% / 0.2);
1007
+ color: hsl(45 93% 47%);
1008
+ }
1009
+
1010
+ .conflict-item.resolved .conflict-icon {
1011
+ background: hsl(var(--success) / 0.2);
1012
+ color: hsl(var(--success));
1013
+ }
1014
+
1015
+ .conflict-content {
1016
+ flex: 1;
1017
+ min-width: 0;
1018
+ }
1019
+
1020
+ .conflict-file {
1021
+ font-family: var(--font-mono);
1022
+ font-size: 0.8125rem;
1023
+ font-weight: 500;
1024
+ }
1025
+
1026
+ .conflict-tasks {
1027
+ font-size: 0.75rem;
1028
+ color: hsl(var(--muted-foreground));
1029
+ margin-top: 0.25rem;
1030
+ }
1031
+
1032
+ .conflict-resolution {
1033
+ font-size: 0.75rem;
1034
+ color: hsl(var(--muted-foreground));
1035
+ margin-top: 0.25rem;
1036
+ }
1037
+
1038
+ /* ==========================================
1039
+ FILTER BAR
1040
+ ========================================== */
1041
+
1042
+ .issue-filter-bar {
1043
+ display: flex;
1044
+ align-items: center;
1045
+ gap: 0.75rem;
1046
+ flex-wrap: wrap;
1047
+ }
1048
+
1049
+ .issue-filter-group {
1050
+ display: flex;
1051
+ align-items: center;
1052
+ gap: 0.25rem;
1053
+ }
1054
+
1055
+ .issue-filter-group label {
1056
+ font-size: 0.75rem;
1057
+ color: hsl(var(--muted-foreground));
1058
+ }
1059
+
1060
+ .issue-filter-select {
1061
+ font-size: 0.8125rem;
1062
+ padding: 0.375rem 0.75rem;
1063
+ border-radius: 0.375rem;
1064
+ border: 1px solid hsl(var(--border));
1065
+ background: hsl(var(--background));
1066
+ cursor: pointer;
1067
+ }
1068
+
1069
+ .issue-filter-select:focus {
1070
+ outline: none;
1071
+ border-color: hsl(var(--primary));
1072
+ }
1073
+
1074
+ /* ==========================================
1075
+ RESPONSIVE ADJUSTMENTS
1076
+ ========================================== */
1077
+
1078
+ @media (max-width: 768px) {
1079
+ .issues-grid {
1080
+ grid-template-columns: 1fr;
1081
+ }
1082
+
1083
+ .issue-detail-panel {
1084
+ width: 100%;
1085
+ }
1086
+
1087
+ .queue-group.parallel .queue-group-items {
1088
+ flex-direction: column;
1089
+ }
1090
+
1091
+ .issue-filter-bar {
1092
+ flex-direction: column;
1093
+ align-items: stretch;
1094
+ }
1095
+ }
1096
+
1097
+ @media (max-width: 480px) {
1098
+ .issue-view-toggle {
1099
+ width: 100%;
1100
+ }
1101
+
1102
+ .issue-view-toggle button {
1103
+ flex: 1;
1104
+ text-align: center;
1105
+ }
1106
+
1107
+ .queue-item {
1108
+ flex-wrap: wrap;
1109
+ }
1110
+
1111
+ .queue-item-content {
1112
+ width: 100%;
1113
+ }
1114
+ }
1115
+
1116
+ /* ==========================================
1117
+ ANIMATIONS
1118
+ ========================================== */
1119
+
1120
+ @keyframes fadeIn {
1121
+ from { opacity: 0; }
1122
+ to { opacity: 1; }
1123
+ }
1124
+
1125
+ @keyframes pulse {
1126
+ 0%, 100% { opacity: 1; }
1127
+ 50% { opacity: 0.5; }
1128
+ }
1129
+
1130
+ .animate-pulse {
1131
+ animation: pulse 2s ease-in-out infinite;
1132
+ }
1133
+
1134
+ /* Line clamp utility */
1135
+ .line-clamp-2 {
1136
+ display: -webkit-box;
1137
+ -webkit-line-clamp: 2;
1138
+ -webkit-box-orient: vertical;
1139
+ overflow: hidden;
1140
+ }
1141
+
1142
+ /* Badge styles */
1143
+ .issue-card .badge,
1144
+ .queue-item .badge {
1145
+ font-size: 0.75rem;
1146
+ font-weight: 500;
1147
+ }
1148
+
1149
+ /* ==========================================
1150
+ TOOLBAR & SEARCH
1151
+ ========================================== */
1152
+
1153
+ .issue-toolbar {
1154
+ display: flex;
1155
+ align-items: center;
1156
+ justify-content: space-between;
1157
+ gap: 1rem;
1158
+ flex-wrap: wrap;
1159
+ padding: 0.75rem;
1160
+ background: hsl(var(--muted) / 0.3);
1161
+ border-radius: 0.5rem;
1162
+ border: 1px solid hsl(var(--border));
1163
+ }
1164
+
1165
+ .issue-search {
1166
+ position: relative;
1167
+ display: flex;
1168
+ align-items: center;
1169
+ flex: 1;
1170
+ min-width: 200px;
1171
+ max-width: 320px;
1172
+ }
1173
+
1174
+ .issue-search > i:first-child {
1175
+ position: absolute;
1176
+ left: 0.75rem;
1177
+ color: hsl(var(--muted-foreground));
1178
+ pointer-events: none;
1179
+ }
1180
+
1181
+ .issue-search input {
1182
+ width: 100%;
1183
+ padding: 0.5rem 2rem 0.5rem 2.25rem;
1184
+ border: 1px solid hsl(var(--border));
1185
+ border-radius: 0.375rem;
1186
+ background: hsl(var(--background));
1187
+ font-size: 0.875rem;
1188
+ color: hsl(var(--foreground));
1189
+ transition: border-color 0.15s ease;
1190
+ }
1191
+
1192
+ .issue-search input:focus {
1193
+ outline: none;
1194
+ border-color: hsl(var(--primary));
1195
+ }
1196
+
1197
+ .issue-search input::placeholder {
1198
+ color: hsl(var(--muted-foreground));
1199
+ }
1200
+
1201
+ .issue-search-clear {
1202
+ position: absolute;
1203
+ right: 0.5rem;
1204
+ display: flex;
1205
+ align-items: center;
1206
+ justify-content: center;
1207
+ width: 1.25rem;
1208
+ height: 1.25rem;
1209
+ border: none;
1210
+ border-radius: 9999px;
1211
+ background: hsl(var(--muted));
1212
+ color: hsl(var(--muted-foreground));
1213
+ cursor: pointer;
1214
+ transition: all 0.15s ease;
1215
+ }
1216
+
1217
+ .issue-search-clear:hover {
1218
+ background: hsl(var(--destructive) / 0.1);
1219
+ color: hsl(var(--destructive));
1220
+ }
1221
+
1222
+ /* ==========================================
1223
+ CREATE BUTTON
1224
+ ========================================== */
1225
+
1226
+ .issue-create-btn {
1227
+ display: inline-flex;
1228
+ align-items: center;
1229
+ gap: 0.375rem;
1230
+ padding: 0.5rem 1rem;
1231
+ background: hsl(var(--primary));
1232
+ color: hsl(var(--primary-foreground));
1233
+ border: none;
1234
+ border-radius: 0.375rem;
1235
+ font-size: 0.875rem;
1236
+ font-weight: 500;
1237
+ cursor: pointer;
1238
+ transition: all 0.15s ease;
1239
+ }
1240
+
1241
+ .issue-create-btn:hover {
1242
+ background: hsl(var(--primary) / 0.9);
1243
+ transform: translateY(-1px);
1244
+ }
1245
+
1246
+ .issue-create-btn:active {
1247
+ transform: translateY(0);
1248
+ }
1249
+
1250
+ /* ==========================================
1251
+ ISSUE STATS
1252
+ ========================================== */
1253
+
1254
+ .issue-stats {
1255
+ padding: 0.5rem 0;
1256
+ }
1257
+
1258
+ /* ==========================================
1259
+ EMPTY STATE (CENTERED)
1260
+ ========================================== */
1261
+
1262
+ .issue-empty-container {
1263
+ grid-column: 1 / -1;
1264
+ display: flex;
1265
+ align-items: center;
1266
+ justify-content: center;
1267
+ min-height: 300px;
1268
+ }
1269
+
1270
+ .issue-empty {
1271
+ display: flex;
1272
+ flex-direction: column;
1273
+ align-items: center;
1274
+ justify-content: center;
1275
+ text-align: center;
1276
+ padding: 2rem;
1277
+ }
1278
+
1279
+ .issue-empty > i,
1280
+ .issue-empty > svg {
1281
+ color: hsl(var(--muted-foreground));
1282
+ opacity: 0.5;
1283
+ margin-bottom: 1rem;
1284
+ }
1285
+
1286
+ .issue-empty-title {
1287
+ font-size: 1.125rem;
1288
+ font-weight: 600;
1289
+ color: hsl(var(--foreground));
1290
+ margin-bottom: 0.5rem;
1291
+ }
1292
+
1293
+ .issue-empty-hint {
1294
+ font-size: 0.875rem;
1295
+ color: hsl(var(--muted-foreground));
1296
+ margin-bottom: 1.5rem;
1297
+ }
1298
+
1299
+ .issue-empty-btn {
1300
+ display: inline-flex;
1301
+ align-items: center;
1302
+ gap: 0.375rem;
1303
+ padding: 0.625rem 1.25rem;
1304
+ background: hsl(var(--primary));
1305
+ color: hsl(var(--primary-foreground));
1306
+ border: none;
1307
+ border-radius: 0.375rem;
1308
+ font-size: 0.875rem;
1309
+ font-weight: 500;
1310
+ cursor: pointer;
1311
+ transition: all 0.15s ease;
1312
+ }
1313
+
1314
+ .issue-empty-btn:hover {
1315
+ background: hsl(var(--primary) / 0.9);
1316
+ }
1317
+
1318
+ /* ==========================================
1319
+ MODAL STYLES
1320
+ ========================================== */
1321
+
1322
+ .issue-modal {
1323
+ position: fixed;
1324
+ inset: 0;
1325
+ z-index: 1000;
1326
+ display: flex;
1327
+ align-items: center;
1328
+ justify-content: center;
1329
+ }
1330
+
1331
+ .issue-modal.hidden {
1332
+ display: none;
1333
+ }
1334
+
1335
+ .issue-modal-backdrop {
1336
+ position: absolute;
1337
+ inset: 0;
1338
+ background: hsl(var(--foreground) / 0.5);
1339
+ animation: fadeIn 0.15s ease-out;
1340
+ }
1341
+
1342
+ .issue-modal-content {
1343
+ position: relative;
1344
+ width: 90%;
1345
+ max-width: 480px;
1346
+ background: hsl(var(--background));
1347
+ border: 1px solid hsl(var(--border));
1348
+ border-radius: 0.75rem;
1349
+ box-shadow: 0 20px 40px hsl(var(--foreground) / 0.15);
1350
+ animation: modalSlideIn 0.2s ease-out;
1351
+ }
1352
+
1353
+ @keyframes modalSlideIn {
1354
+ from {
1355
+ opacity: 0;
1356
+ transform: translateY(-20px) scale(0.95);
1357
+ }
1358
+ to {
1359
+ opacity: 1;
1360
+ transform: translateY(0) scale(1);
1361
+ }
1362
+ }
1363
+
1364
+ .issue-modal-header {
1365
+ display: flex;
1366
+ align-items: center;
1367
+ justify-content: space-between;
1368
+ padding: 1rem 1.25rem;
1369
+ border-bottom: 1px solid hsl(var(--border));
1370
+ }
1371
+
1372
+ .issue-modal-header h3 {
1373
+ font-size: 1.125rem;
1374
+ font-weight: 600;
1375
+ color: hsl(var(--foreground));
1376
+ }
1377
+
1378
+ .issue-modal-body {
1379
+ padding: 1.25rem;
1380
+ max-height: 60vh;
1381
+ overflow-y: auto;
1382
+ }
1383
+
1384
+ .issue-modal-footer {
1385
+ display: flex;
1386
+ align-items: center;
1387
+ justify-content: flex-end;
1388
+ gap: 0.75rem;
1389
+ padding: 1rem 1.25rem;
1390
+ border-top: 1px solid hsl(var(--border));
1391
+ background: hsl(var(--muted) / 0.3);
1392
+ }
1393
+
1394
+ /* ==========================================
1395
+ FORM STYLES
1396
+ ========================================== */
1397
+
1398
+ .form-group {
1399
+ margin-bottom: 1rem;
1400
+ }
1401
+
1402
+ .form-group:last-child {
1403
+ margin-bottom: 0;
1404
+ }
1405
+
1406
+ .form-group label {
1407
+ display: block;
1408
+ font-size: 0.8125rem;
1409
+ font-weight: 500;
1410
+ color: hsl(var(--foreground));
1411
+ margin-bottom: 0.375rem;
1412
+ }
1413
+
1414
+ .form-group input,
1415
+ .form-group textarea,
1416
+ .form-group select {
1417
+ width: 100%;
1418
+ padding: 0.625rem 0.75rem;
1419
+ border: 1px solid hsl(var(--border));
1420
+ border-radius: 0.375rem;
1421
+ background: hsl(var(--background));
1422
+ font-size: 0.875rem;
1423
+ color: hsl(var(--foreground));
1424
+ transition: border-color 0.15s ease;
1425
+ }
1426
+
1427
+ .form-group input:focus,
1428
+ .form-group textarea:focus,
1429
+ .form-group select:focus {
1430
+ outline: none;
1431
+ border-color: hsl(var(--primary));
1432
+ }
1433
+
1434
+ .form-group input::placeholder,
1435
+ .form-group textarea::placeholder {
1436
+ color: hsl(var(--muted-foreground));
1437
+ }
1438
+
1439
+ .form-group textarea {
1440
+ resize: vertical;
1441
+ min-height: 80px;
1442
+ }
1443
+
1444
+ .form-group select {
1445
+ cursor: pointer;
1446
+ }
1447
+
1448
+ /* Input with action button */
1449
+ .input-with-action {
1450
+ display: flex;
1451
+ gap: 0.5rem;
1452
+ }
1453
+
1454
+ .input-with-action input {
1455
+ flex: 1;
1456
+ }
1457
+
1458
+ .input-with-action .btn-icon {
1459
+ flex-shrink: 0;
1460
+ }
1461
+
1462
+ /* ==========================================
1463
+ BUTTON STYLES
1464
+ ========================================== */
1465
+
1466
+ .btn-primary {
1467
+ display: inline-flex;
1468
+ align-items: center;
1469
+ justify-content: center;
1470
+ gap: 0.375rem;
1471
+ padding: 0.5rem 1rem;
1472
+ background: hsl(var(--primary));
1473
+ color: hsl(var(--primary-foreground));
1474
+ border: none;
1475
+ border-radius: 0.375rem;
1476
+ font-size: 0.875rem;
1477
+ font-weight: 500;
1478
+ cursor: pointer;
1479
+ transition: all 0.15s ease;
1480
+ }
1481
+
1482
+ .btn-primary:hover {
1483
+ background: hsl(var(--primary) / 0.9);
1484
+ }
1485
+
1486
+ .btn-secondary {
1487
+ display: inline-flex;
1488
+ align-items: center;
1489
+ justify-content: center;
1490
+ gap: 0.375rem;
1491
+ padding: 0.5rem 1rem;
1492
+ background: hsl(var(--muted));
1493
+ color: hsl(var(--foreground));
1494
+ border: 1px solid hsl(var(--border));
1495
+ border-radius: 0.375rem;
1496
+ font-size: 0.875rem;
1497
+ font-weight: 500;
1498
+ cursor: pointer;
1499
+ transition: all 0.15s ease;
1500
+ }
1501
+
1502
+ .btn-secondary:hover {
1503
+ background: hsl(var(--muted) / 0.8);
1504
+ }
1505
+
1506
+ .btn-icon {
1507
+ display: inline-flex;
1508
+ align-items: center;
1509
+ justify-content: center;
1510
+ width: 2rem;
1511
+ height: 2rem;
1512
+ padding: 0;
1513
+ background: transparent;
1514
+ color: hsl(var(--muted-foreground));
1515
+ border: none;
1516
+ border-radius: 0.375rem;
1517
+ cursor: pointer;
1518
+ transition: all 0.15s ease;
1519
+ }
1520
+
1521
+ .btn-icon:hover {
1522
+ background: hsl(var(--muted));
1523
+ color: hsl(var(--foreground));
1524
+ }
1525
+
1526
+ /* ==========================================
1527
+ DETAIL PANEL ENHANCEMENTS
1528
+ ========================================== */
1529
+
1530
+ .issue-detail-content {
1531
+ padding: 1.25rem;
1532
+ overflow-y: auto;
1533
+ flex: 1;
1534
+ }
1535
+
1536
+ .detail-section {
1537
+ margin-bottom: 1.5rem;
1538
+ }
1539
+
1540
+ .detail-label {
1541
+ display: block;
1542
+ font-size: 0.75rem;
1543
+ font-weight: 600;
1544
+ text-transform: uppercase;
1545
+ letter-spacing: 0.05em;
1546
+ color: hsl(var(--muted-foreground));
1547
+ margin-bottom: 0.5rem;
1548
+ }
1549
+
1550
+ .detail-editable {
1551
+ display: flex;
1552
+ align-items: flex-start;
1553
+ gap: 0.5rem;
1554
+ }
1555
+
1556
+ .detail-value {
1557
+ flex: 1;
1558
+ font-size: 1rem;
1559
+ font-weight: 500;
1560
+ color: hsl(var(--foreground));
1561
+ }
1562
+
1563
+ .detail-context {
1564
+ position: relative;
1565
+ }
1566
+
1567
+ .detail-pre {
1568
+ font-family: inherit;
1569
+ font-size: 0.875rem;
1570
+ line-height: 1.6;
1571
+ color: hsl(var(--foreground));
1572
+ white-space: pre-wrap;
1573
+ word-break: break-word;
1574
+ padding: 0.75rem;
1575
+ background: hsl(var(--muted) / 0.3);
1576
+ border-radius: 0.375rem;
1577
+ }
1578
+
1579
+ .btn-edit {
1580
+ display: flex;
1581
+ align-items: center;
1582
+ justify-content: center;
1583
+ width: 1.5rem;
1584
+ height: 1.5rem;
1585
+ padding: 0;
1586
+ background: transparent;
1587
+ color: hsl(var(--muted-foreground));
1588
+ border: none;
1589
+ border-radius: 0.25rem;
1590
+ cursor: pointer;
1591
+ transition: all 0.15s ease;
1592
+ }
1593
+
1594
+ .btn-edit:hover {
1595
+ background: hsl(var(--muted));
1596
+ color: hsl(var(--primary));
1597
+ }
1598
+
1599
+ /* Solutions List */
1600
+ .solutions-list {
1601
+ display: flex;
1602
+ flex-direction: column;
1603
+ gap: 0.5rem;
1604
+ }
1605
+
1606
+ .solution-item {
1607
+ padding: 0.75rem;
1608
+ background: hsl(var(--muted) / 0.3);
1609
+ border: 1px solid hsl(var(--border));
1610
+ border-radius: 0.375rem;
1611
+ cursor: pointer;
1612
+ transition: all 0.15s ease;
1613
+ }
1614
+
1615
+ .solution-item:hover {
1616
+ border-color: hsl(var(--primary) / 0.5);
1617
+ }
1618
+
1619
+ .solution-item.bound {
1620
+ border-color: hsl(var(--success));
1621
+ background: hsl(var(--success) / 0.05);
1622
+ }
1623
+
1624
+ .solution-header {
1625
+ display: flex;
1626
+ align-items: center;
1627
+ gap: 0.5rem;
1628
+ flex-wrap: wrap;
1629
+ }
1630
+
1631
+ .solution-id {
1632
+ color: hsl(var(--muted-foreground));
1633
+ }
1634
+
1635
+ .solution-bound-badge {
1636
+ display: inline-flex;
1637
+ padding: 0.125rem 0.375rem;
1638
+ background: hsl(var(--success) / 0.15);
1639
+ color: hsl(var(--success));
1640
+ font-size: 0.6875rem;
1641
+ font-weight: 500;
1642
+ border-radius: 0.25rem;
1643
+ }
1644
+
1645
+ .solution-tasks {
1646
+ margin-left: auto;
1647
+ color: hsl(var(--muted-foreground));
1648
+ }
1649
+
1650
+ .solution-tasks-list {
1651
+ margin-top: 0.75rem;
1652
+ padding-top: 0.75rem;
1653
+ border-top: 1px solid hsl(var(--border) / 0.5);
1654
+ }
1655
+
1656
+ /* Tasks List */
1657
+ .tasks-list {
1658
+ display: flex;
1659
+ flex-direction: column;
1660
+ gap: 0.5rem;
1661
+ }
1662
+
1663
+ .task-item-detail {
1664
+ padding: 0.75rem;
1665
+ background: hsl(var(--muted) / 0.3);
1666
+ border: 1px solid hsl(var(--border));
1667
+ border-radius: 0.375rem;
1668
+ }
1669
+
1670
+ .task-title-detail {
1671
+ font-size: 0.875rem;
1672
+ color: hsl(var(--foreground));
1673
+ margin-top: 0.375rem;
1674
+ }
1675
+
1676
+ /* Edit Mode */
1677
+ .edit-input,
1678
+ .edit-textarea {
1679
+ width: 100%;
1680
+ padding: 0.5rem 0.75rem;
1681
+ border: 1px solid hsl(var(--primary));
1682
+ border-radius: 0.375rem;
1683
+ background: hsl(var(--background));
1684
+ font-size: 0.875rem;
1685
+ color: hsl(var(--foreground));
1686
+ }
1687
+
1688
+ .edit-input:focus,
1689
+ .edit-textarea:focus {
1690
+ outline: none;
1691
+ }
1692
+
1693
+ .edit-textarea {
1694
+ resize: vertical;
1695
+ min-height: 100px;
1696
+ }
1697
+
1698
+ .edit-actions {
1699
+ display: flex;
1700
+ gap: 0.25rem;
1701
+ margin-top: 0.5rem;
1702
+ }
1703
+
1704
+ .btn-save,
1705
+ .btn-cancel {
1706
+ display: flex;
1707
+ align-items: center;
1708
+ justify-content: center;
1709
+ width: 2rem;
1710
+ height: 2rem;
1711
+ padding: 0;
1712
+ border: none;
1713
+ border-radius: 0.25rem;
1714
+ cursor: pointer;
1715
+ transition: all 0.15s ease;
1716
+ }
1717
+
1718
+ .btn-save {
1719
+ background: hsl(var(--success) / 0.15);
1720
+ color: hsl(var(--success));
1721
+ }
1722
+
1723
+ .btn-save:hover {
1724
+ background: hsl(var(--success) / 0.25);
1725
+ }
1726
+
1727
+ .btn-cancel {
1728
+ background: hsl(var(--muted));
1729
+ color: hsl(var(--muted-foreground));
1730
+ }
1731
+
1732
+ .btn-cancel:hover {
1733
+ background: hsl(var(--destructive) / 0.1);
1734
+ color: hsl(var(--destructive));
1735
+ }
1736
+
1737
+ /* ==========================================
1738
+ QUEUE ENHANCEMENTS
1739
+ ========================================== */
1740
+
1741
+ .queue-info {
1742
+ padding: 0.5rem 0;
1743
+ }
1744
+
1745
+ .queue-items {
1746
+ padding: 0.75rem;
1747
+ display: flex;
1748
+ flex-direction: column;
1749
+ gap: 0.5rem;
1750
+ }
1751
+
1752
+ .queue-items.parallel {
1753
+ flex-direction: row;
1754
+ flex-wrap: wrap;
1755
+ }
1756
+
1757
+ .queue-items.parallel .queue-item {
1758
+ flex: 1;
1759
+ min-width: 200px;
1760
+ }
1761
+
1762
+ .queue-group-type {
1763
+ display: flex;
1764
+ align-items: center;
1765
+ gap: 0.375rem;
1766
+ font-size: 0.875rem;
1767
+ font-weight: 600;
1768
+ }
1769
+
1770
+ .queue-group-type.parallel {
1771
+ color: hsl(142 71% 45%);
1772
+ }
1773
+
1774
+ .queue-group-type.sequential {
1775
+ color: hsl(262 83% 58%);
1776
+ }
1777
+
1778
+ /* Queue Item Status Colors */
1779
+ .queue-item.ready {
1780
+ border-color: hsl(199 89% 48%);
1781
+ }
1782
+
1783
+ .queue-item.executing {
1784
+ border-color: hsl(45 93% 47%);
1785
+ background: hsl(45 93% 47% / 0.05);
1786
+ }
1787
+
1788
+ .queue-item.completed {
1789
+ border-color: hsl(var(--success));
1790
+ background: hsl(var(--success) / 0.05);
1791
+ }
1792
+
1793
+ .queue-item.failed {
1794
+ border-color: hsl(var(--destructive));
1795
+ background: hsl(var(--destructive) / 0.05);
1796
+ }
1797
+
1798
+ .queue-item.blocked {
1799
+ border-color: hsl(262 83% 58%);
1800
+ opacity: 0.7;
1801
+ }
1802
+
1803
+ /* Priority indicator */
1804
+ .issue-priority {
1805
+ display: inline-flex;
1806
+ align-items: center;
1807
+ gap: 0.125rem;
1808
+ }
1809
+
1810
+ /* Conflicts list */
1811
+ .conflicts-list {
1812
+ display: flex;
1813
+ flex-direction: column;
1814
+ gap: 0.5rem;
1815
+ }
1816
+
1817
+ .conflict-item {
1818
+ display: flex;
1819
+ align-items: center;
1820
+ gap: 0.75rem;
1821
+ padding: 0.5rem 0.75rem;
1822
+ background: hsl(45 93% 47% / 0.1);
1823
+ border: 1px solid hsl(45 93% 47% / 0.3);
1824
+ border-radius: 0.375rem;
1825
+ }
1826
+
1827
+ .conflict-file {
1828
+ color: hsl(var(--primary));
1829
+ }
1830
+
1831
+ .conflict-tasks {
1832
+ flex: 1;
1833
+ }
1834
+
1835
+ .conflict-status {
1836
+ font-size: 0.6875rem;
1837
+ font-weight: 500;
1838
+ padding: 0.125rem 0.375rem;
1839
+ border-radius: 0.25rem;
1840
+ }
1841
+
1842
+ .conflict-status.pending {
1843
+ background: hsl(45 93% 47% / 0.15);
1844
+ color: hsl(45 93% 47%);
1845
+ }
1846
+
1847
+ .conflict-status.resolved {
1848
+ background: hsl(var(--success) / 0.15);
1849
+ color: hsl(var(--success));
1850
+ }
1851
+
1852
+ /* ==========================================
1853
+ RESPONSIVE TOOLBAR
1854
+ ========================================== */
1855
+
1856
+ @media (max-width: 640px) {
1857
+ .issue-toolbar {
1858
+ flex-direction: column;
1859
+ align-items: stretch;
1860
+ }
1861
+
1862
+ .issue-search {
1863
+ max-width: none;
1864
+ }
1865
+
1866
+ .issue-filters {
1867
+ justify-content: flex-start;
1868
+ overflow-x: auto;
1869
+ -webkit-overflow-scrolling: touch;
1870
+ }
1871
+ }
1872
+
1873
+ /* ==========================================
1874
+ SOLUTION DETAIL MODAL
1875
+ ========================================== */
1876
+
1877
+ .solution-modal {
1878
+ position: fixed;
1879
+ inset: 0;
1880
+ z-index: 1100;
1881
+ display: flex;
1882
+ align-items: center;
1883
+ justify-content: center;
1884
+ }
1885
+
1886
+ .solution-modal.hidden {
1887
+ display: none;
1888
+ }
1889
+
1890
+ .solution-modal-backdrop {
1891
+ position: absolute;
1892
+ inset: 0;
1893
+ background: hsl(var(--foreground) / 0.6);
1894
+ animation: fadeIn 0.15s ease-out;
1895
+ }
1896
+
1897
+ .solution-modal-content {
1898
+ position: relative;
1899
+ width: 90%;
1900
+ max-width: 720px;
1901
+ max-height: 85vh;
1902
+ background: hsl(var(--background));
1903
+ border: 1px solid hsl(var(--border));
1904
+ border-radius: 0.75rem;
1905
+ box-shadow: 0 25px 50px hsl(var(--foreground) / 0.2);
1906
+ display: flex;
1907
+ flex-direction: column;
1908
+ animation: modalSlideIn 0.2s ease-out;
1909
+ }
1910
+
1911
+ .solution-modal-header {
1912
+ display: flex;
1913
+ align-items: center;
1914
+ justify-content: space-between;
1915
+ padding: 1rem 1.25rem;
1916
+ border-bottom: 1px solid hsl(var(--border));
1917
+ flex-shrink: 0;
1918
+ }
1919
+
1920
+ .solution-modal-title h3 {
1921
+ font-size: 1.125rem;
1922
+ font-weight: 600;
1923
+ color: hsl(var(--foreground));
1924
+ margin-top: 0.25rem;
1925
+ }
1926
+
1927
+ .solution-modal-actions {
1928
+ display: flex;
1929
+ align-items: center;
1930
+ gap: 0.5rem;
1931
+ }
1932
+
1933
+ .solution-modal-body {
1934
+ flex: 1;
1935
+ overflow-y: auto;
1936
+ padding: 1.25rem;
1937
+ }
1938
+
1939
+ /* Solution Overview Stats */
1940
+ .solution-overview {
1941
+ display: flex;
1942
+ gap: 1.5rem;
1943
+ padding: 1rem;
1944
+ background: hsl(var(--muted) / 0.3);
1945
+ border-radius: 0.5rem;
1946
+ margin-bottom: 1rem;
1947
+ }
1948
+
1949
+ .solution-stat {
1950
+ display: flex;
1951
+ flex-direction: column;
1952
+ align-items: center;
1953
+ gap: 0.25rem;
1954
+ }
1955
+
1956
+ .solution-stat-value {
1957
+ font-size: 1.5rem;
1958
+ font-weight: 700;
1959
+ color: hsl(var(--foreground));
1960
+ }
1961
+
1962
+ .solution-stat-label {
1963
+ font-size: 0.75rem;
1964
+ color: hsl(var(--muted-foreground));
1965
+ text-transform: uppercase;
1966
+ letter-spacing: 0.05em;
1967
+ }
1968
+
1969
+ /* Solution Detail Section */
1970
+ .solution-detail-section {
1971
+ margin-bottom: 1.5rem;
1972
+ }
1973
+
1974
+ .solution-detail-section:last-child {
1975
+ margin-bottom: 0;
1976
+ }
1977
+
1978
+ .solution-detail-section-title {
1979
+ display: flex;
1980
+ align-items: center;
1981
+ gap: 0.5rem;
1982
+ font-size: 0.875rem;
1983
+ font-weight: 600;
1984
+ color: hsl(var(--foreground));
1985
+ margin-bottom: 0.75rem;
1986
+ }
1987
+
1988
+ /* Solution Tasks Detail */
1989
+ .solution-tasks-detail {
1990
+ display: flex;
1991
+ flex-direction: column;
1992
+ gap: 0.75rem;
1993
+ }
1994
+
1995
+ .solution-task-card {
1996
+ background: hsl(var(--card));
1997
+ border: 1px solid hsl(var(--border));
1998
+ border-radius: 0.5rem;
1999
+ overflow: hidden;
2000
+ }
2001
+
2002
+ .solution-task-header {
2003
+ display: flex;
2004
+ align-items: center;
2005
+ justify-content: space-between;
2006
+ padding: 0.75rem 1rem;
2007
+ background: hsl(var(--muted) / 0.3);
2008
+ cursor: pointer;
2009
+ transition: background 0.15s ease;
2010
+ }
2011
+
2012
+ .solution-task-header:hover {
2013
+ background: hsl(var(--muted) / 0.5);
2014
+ }
2015
+
2016
+ .solution-task-info {
2017
+ display: flex;
2018
+ align-items: center;
2019
+ gap: 0.5rem;
2020
+ }
2021
+
2022
+ .solution-task-index {
2023
+ font-size: 0.75rem;
2024
+ font-weight: 600;
2025
+ color: hsl(var(--muted-foreground));
2026
+ min-width: 1.5rem;
2027
+ }
2028
+
2029
+ .solution-task-id {
2030
+ font-size: 0.75rem;
2031
+ color: hsl(var(--muted-foreground));
2032
+ }
2033
+
2034
+ .task-expand-icon {
2035
+ transition: transform 0.2s ease;
2036
+ color: hsl(var(--muted-foreground));
2037
+ }
2038
+
2039
+ .solution-task-title {
2040
+ padding: 0.75rem 1rem;
2041
+ font-size: 0.875rem;
2042
+ font-weight: 500;
2043
+ color: hsl(var(--foreground));
2044
+ border-top: 1px solid hsl(var(--border) / 0.5);
2045
+ }
2046
+
2047
+ .solution-task-details {
2048
+ padding: 0.75rem 1rem;
2049
+ border-top: 1px solid hsl(var(--border));
2050
+ background: hsl(var(--muted) / 0.15);
2051
+ }
2052
+
2053
+ .solution-task-scope {
2054
+ display: flex;
2055
+ align-items: center;
2056
+ gap: 0.5rem;
2057
+ margin-bottom: 0.75rem;
2058
+ padding: 0.5rem;
2059
+ background: hsl(var(--primary) / 0.1);
2060
+ border-radius: 0.375rem;
2061
+ }
2062
+
2063
+ .solution-task-scope-label {
2064
+ font-size: 0.75rem;
2065
+ font-weight: 500;
2066
+ color: hsl(var(--muted-foreground));
2067
+ }
2068
+
2069
+ .solution-task-subtitle {
2070
+ display: flex;
2071
+ align-items: center;
2072
+ gap: 0.375rem;
2073
+ font-size: 0.75rem;
2074
+ font-weight: 600;
2075
+ color: hsl(var(--muted-foreground));
2076
+ margin-bottom: 0.5rem;
2077
+ text-transform: uppercase;
2078
+ letter-spacing: 0.025em;
2079
+ }
2080
+
2081
+ .solution-task-mod-points,
2082
+ .solution-task-impl-steps,
2083
+ .solution-task-acceptance,
2084
+ .solution-task-deps {
2085
+ margin-bottom: 0.75rem;
2086
+ }
2087
+
2088
+ .solution-task-list,
2089
+ .solution-impl-list,
2090
+ .solution-acceptance-list {
2091
+ margin: 0;
2092
+ padding-left: 1.25rem;
2093
+ font-size: 0.8125rem;
2094
+ color: hsl(var(--foreground));
2095
+ }
2096
+
2097
+ .solution-task-list li,
2098
+ .solution-impl-list li,
2099
+ .solution-acceptance-list li {
2100
+ margin: 0.25rem 0;
2101
+ }
2102
+
2103
+ .solution-mod-point {
2104
+ display: flex;
2105
+ flex-direction: column;
2106
+ gap: 0.125rem;
2107
+ }
2108
+
2109
+ .mod-point-file {
2110
+ color: hsl(var(--primary));
2111
+ font-size: 0.8125rem;
2112
+ }
2113
+
2114
+ .mod-point-change {
2115
+ font-size: 0.75rem;
2116
+ color: hsl(var(--muted-foreground));
2117
+ margin-left: 0.5rem;
2118
+ }
2119
+
2120
+ .solution-deps-list {
2121
+ display: flex;
2122
+ flex-wrap: wrap;
2123
+ gap: 0.375rem;
2124
+ }
2125
+
2126
+ .solution-dep-tag {
2127
+ padding: 0.125rem 0.5rem;
2128
+ background: hsl(var(--muted));
2129
+ color: hsl(var(--muted-foreground));
2130
+ border-radius: 0.25rem;
2131
+ font-size: 0.75rem;
2132
+ }
2133
+
2134
+ /* ==========================================
2135
+ LIFECYCLE PHASE BADGES
2136
+ ========================================== */
2137
+
2138
+ .phase-badge {
2139
+ display: inline-flex;
2140
+ align-items: center;
2141
+ justify-content: center;
2142
+ width: 1.25rem;
2143
+ height: 1.25rem;
2144
+ border-radius: 9999px;
2145
+ font-size: 0.6875rem;
2146
+ font-weight: 600;
2147
+ margin-right: 0.25rem;
2148
+ }
2149
+
2150
+ .phase-badge.phase-1 {
2151
+ background: hsl(217 91% 60% / 0.2);
2152
+ color: hsl(217 91% 60%);
2153
+ }
2154
+
2155
+ .phase-badge.phase-2 {
2156
+ background: hsl(262 83% 58% / 0.2);
2157
+ color: hsl(262 83% 58%);
2158
+ }
2159
+
2160
+ .phase-badge.phase-3 {
2161
+ background: hsl(25 95% 53% / 0.2);
2162
+ color: hsl(25 95% 53%);
2163
+ }
2164
+
2165
+ .phase-badge.phase-4 {
2166
+ background: hsl(142 71% 45% / 0.2);
2167
+ color: hsl(142 71% 45%);
2168
+ }
2169
+
2170
+ .phase-badge.phase-5 {
2171
+ background: hsl(199 89% 48% / 0.2);
2172
+ color: hsl(199 89% 48%);
2173
+ }
2174
+
2175
+ /* ==========================================
2176
+ QUEUE STATS GRID
2177
+ ========================================== */
2178
+
2179
+ .queue-stats-grid {
2180
+ display: grid;
2181
+ grid-template-columns: repeat(5, 1fr);
2182
+ gap: 0.75rem;
2183
+ }
2184
+
2185
+ @media (max-width: 768px) {
2186
+ .queue-stats-grid {
2187
+ grid-template-columns: repeat(3, 1fr);
2188
+ }
2189
+ }
2190
+
2191
+ @media (max-width: 480px) {
2192
+ .queue-stats-grid {
2193
+ grid-template-columns: repeat(2, 1fr);
2194
+ }
2195
+ }
2196
+
2197
+ .queue-stat-card {
2198
+ display: flex;
2199
+ flex-direction: column;
2200
+ align-items: center;
2201
+ justify-content: center;
2202
+ padding: 0.75rem 1rem;
2203
+ background: hsl(var(--muted) / 0.3);
2204
+ border: 1px solid hsl(var(--border));
2205
+ border-radius: 0.5rem;
2206
+ text-align: center;
2207
+ }
2208
+
2209
+ .queue-stat-card .queue-stat-value {
2210
+ font-size: 1.5rem;
2211
+ font-weight: 700;
2212
+ color: hsl(var(--foreground));
2213
+ line-height: 1.2;
2214
+ }
2215
+
2216
+ .queue-stat-card .queue-stat-label {
2217
+ font-size: 0.75rem;
2218
+ color: hsl(var(--muted-foreground));
2219
+ text-transform: uppercase;
2220
+ letter-spacing: 0.025em;
2221
+ margin-top: 0.25rem;
2222
+ }
2223
+
2224
+ .queue-stat-card.pending {
2225
+ border-color: hsl(var(--muted-foreground) / 0.3);
2226
+ }
2227
+
2228
+ .queue-stat-card.pending .queue-stat-value {
2229
+ color: hsl(var(--muted-foreground));
2230
+ }
2231
+
2232
+ .queue-stat-card.executing {
2233
+ border-color: hsl(45 93% 47% / 0.5);
2234
+ background: hsl(45 93% 47% / 0.05);
2235
+ }
2236
+
2237
+ .queue-stat-card.executing .queue-stat-value {
2238
+ color: hsl(45 93% 47%);
2239
+ }
2240
+
2241
+ .queue-stat-card.completed {
2242
+ border-color: hsl(var(--success) / 0.5);
2243
+ background: hsl(var(--success) / 0.05);
2244
+ }
2245
+
2246
+ .queue-stat-card.completed .queue-stat-value {
2247
+ color: hsl(var(--success));
2248
+ }
2249
+
2250
+ .queue-stat-card.failed {
2251
+ border-color: hsl(var(--destructive) / 0.5);
2252
+ background: hsl(var(--destructive) / 0.05);
2253
+ }
2254
+
2255
+ .queue-stat-card.failed .queue-stat-value {
2256
+ color: hsl(var(--destructive));
2257
+ }
2258
+
2259
+ /* ==========================================
2260
+ QUEUE INFO CARDS
2261
+ ========================================== */
2262
+
2263
+ .queue-info-card {
2264
+ display: flex;
2265
+ flex-direction: column;
2266
+ gap: 0.125rem;
2267
+ }
2268
+
2269
+ .queue-info-label {
2270
+ font-size: 0.6875rem;
2271
+ color: hsl(var(--muted-foreground));
2272
+ text-transform: uppercase;
2273
+ letter-spacing: 0.05em;
2274
+ }
2275
+
2276
+ .queue-info-value {
2277
+ font-size: 0.875rem;
2278
+ color: hsl(var(--foreground));
2279
+ }
2280
+
2281
+ /* Queue Status Badge */
2282
+ .queue-status-badge {
2283
+ display: inline-flex;
2284
+ align-items: center;
2285
+ padding: 0.125rem 0.5rem;
2286
+ border-radius: 9999px;
2287
+ font-size: 0.6875rem;
2288
+ font-weight: 500;
2289
+ text-transform: uppercase;
2290
+ }
2291
+
2292
+ .queue-status-badge.active {
2293
+ background: hsl(217 91% 60% / 0.15);
2294
+ color: hsl(217 91% 60%);
2295
+ }
2296
+
2297
+ .queue-status-badge.completed {
2298
+ background: hsl(var(--success) / 0.15);
2299
+ color: hsl(var(--success));
2300
+ }
2301
+
2302
+ .queue-status-badge.failed {
2303
+ background: hsl(var(--destructive) / 0.15);
2304
+ color: hsl(var(--destructive));
2305
+ }
2306
+
2307
+ .queue-status-badge.archived {
2308
+ background: hsl(var(--muted));
2309
+ color: hsl(var(--muted-foreground));
2310
+ }
2311
+
2312
+ /* ==========================================
2313
+ SOLUTION TASK SECTIONS
2314
+ ========================================== */
2315
+
2316
+ .solution-task-section {
2317
+ margin-bottom: 0.75rem;
2318
+ padding-bottom: 0.75rem;
2319
+ border-bottom: 1px solid hsl(var(--border) / 0.3);
2320
+ }
2321
+
2322
+ .solution-task-section:last-child {
2323
+ margin-bottom: 0;
2324
+ padding-bottom: 0;
2325
+ border-bottom: none;
2326
+ }
2327
+
2328
+ /* ==========================================
2329
+ TEST SECTION STYLES
2330
+ ========================================== */
2331
+
2332
+ .test-subsection,
2333
+ .acceptance-subsection {
2334
+ margin-bottom: 0.5rem;
2335
+ }
2336
+
2337
+ .test-subsection:last-child,
2338
+ .acceptance-subsection:last-child {
2339
+ margin-bottom: 0;
2340
+ }
2341
+
2342
+ .test-label,
2343
+ .acceptance-label {
2344
+ display: block;
2345
+ font-size: 0.6875rem;
2346
+ font-weight: 500;
2347
+ color: hsl(var(--muted-foreground));
2348
+ text-transform: uppercase;
2349
+ letter-spacing: 0.025em;
2350
+ margin-bottom: 0.25rem;
2351
+ }
2352
+
2353
+ .test-list {
2354
+ margin: 0;
2355
+ padding-left: 1.25rem;
2356
+ font-size: 0.8125rem;
2357
+ color: hsl(var(--foreground));
2358
+ }
2359
+
2360
+ .test-list li {
2361
+ margin: 0.125rem 0;
2362
+ }
2363
+
2364
+ .test-commands,
2365
+ .verification-commands {
2366
+ display: flex;
2367
+ flex-direction: column;
2368
+ gap: 0.25rem;
2369
+ }
2370
+
2371
+ .test-command,
2372
+ .verification-command {
2373
+ display: block;
2374
+ padding: 0.375rem 0.625rem;
2375
+ background: hsl(var(--muted) / 0.5);
2376
+ border: 1px solid hsl(var(--border));
2377
+ border-radius: 0.25rem;
2378
+ font-family: var(--font-mono);
2379
+ font-size: 0.75rem;
2380
+ color: hsl(var(--foreground));
2381
+ word-break: break-all;
2382
+ }
2383
+
2384
+ .coverage-target {
2385
+ font-size: 0.6875rem;
2386
+ font-weight: 400;
2387
+ color: hsl(var(--muted-foreground));
2388
+ margin-left: 0.25rem;
2389
+ }
2390
+
2391
+ /* ==========================================
2392
+ COMMIT INFO STYLES
2393
+ ========================================== */
2394
+
2395
+ .commit-info {
2396
+ background: hsl(var(--muted) / 0.3);
2397
+ border: 1px solid hsl(var(--border));
2398
+ border-radius: 0.375rem;
2399
+ padding: 0.625rem;
2400
+ }
2401
+
2402
+ .commit-type {
2403
+ display: flex;
2404
+ align-items: center;
2405
+ gap: 0.5rem;
2406
+ margin-bottom: 0.5rem;
2407
+ }
2408
+
2409
+ .commit-type-badge {
2410
+ display: inline-flex;
2411
+ align-items: center;
2412
+ padding: 0.125rem 0.5rem;
2413
+ border-radius: 0.25rem;
2414
+ font-size: 0.75rem;
2415
+ font-weight: 600;
2416
+ text-transform: lowercase;
2417
+ }
2418
+
2419
+ .commit-type-badge.feat {
2420
+ background: hsl(142 71% 45% / 0.15);
2421
+ color: hsl(142 71% 45%);
2422
+ }
2423
+
2424
+ .commit-type-badge.fix {
2425
+ background: hsl(0 84% 60% / 0.15);
2426
+ color: hsl(0 84% 60%);
2427
+ }
2428
+
2429
+ .commit-type-badge.refactor {
2430
+ background: hsl(262 83% 58% / 0.15);
2431
+ color: hsl(262 83% 58%);
2432
+ }
2433
+
2434
+ .commit-type-badge.test {
2435
+ background: hsl(199 89% 48% / 0.15);
2436
+ color: hsl(199 89% 48%);
2437
+ }
2438
+
2439
+ .commit-type-badge.docs {
2440
+ background: hsl(45 93% 47% / 0.15);
2441
+ color: hsl(45 93% 47%);
2442
+ }
2443
+
2444
+ .commit-type-badge.chore {
2445
+ background: hsl(var(--muted));
2446
+ color: hsl(var(--muted-foreground));
2447
+ }
2448
+
2449
+ .commit-scope {
2450
+ font-size: 0.75rem;
2451
+ color: hsl(var(--muted-foreground));
2452
+ }
2453
+
2454
+ .commit-breaking {
2455
+ display: inline-flex;
2456
+ align-items: center;
2457
+ padding: 0.125rem 0.375rem;
2458
+ background: hsl(var(--destructive) / 0.15);
2459
+ color: hsl(var(--destructive));
2460
+ border-radius: 0.25rem;
2461
+ font-size: 0.625rem;
2462
+ font-weight: 700;
2463
+ letter-spacing: 0.05em;
2464
+ }
2465
+
2466
+ .commit-message {
2467
+ margin: 0;
2468
+ padding: 0.5rem;
2469
+ background: hsl(var(--background));
2470
+ border: 1px solid hsl(var(--border));
2471
+ border-radius: 0.25rem;
2472
+ font-family: var(--font-mono);
2473
+ font-size: 0.75rem;
2474
+ color: hsl(var(--foreground));
2475
+ white-space: pre-wrap;
2476
+ word-break: break-word;
2477
+ }
2478
+
2479
+ /* Modification Point Target */
2480
+ .mod-point-target {
2481
+ font-size: 0.75rem;
2482
+ color: hsl(var(--primary));
2483
+ font-family: var(--font-mono);
2484
+ }
2485
+
2486
+ /* JSON Toggle */
2487
+ .solution-json-toggle {
2488
+ display: flex;
2489
+ align-items: center;
2490
+ gap: 0.5rem;
2491
+ width: 100%;
2492
+ padding: 0.75rem 1rem;
2493
+ background: hsl(var(--muted) / 0.3);
2494
+ border: 1px solid hsl(var(--border));
2495
+ border-radius: 0.375rem;
2496
+ color: hsl(var(--muted-foreground));
2497
+ font-size: 0.875rem;
2498
+ cursor: pointer;
2499
+ transition: all 0.15s ease;
2500
+ }
2501
+
2502
+ .solution-json-toggle:hover {
2503
+ background: hsl(var(--muted) / 0.5);
2504
+ color: hsl(var(--foreground));
2505
+ }
2506
+
2507
+ .solution-json-content {
2508
+ margin-top: 0.5rem;
2509
+ border: 1px solid hsl(var(--border));
2510
+ border-radius: 0.375rem;
2511
+ overflow: hidden;
2512
+ }
2513
+
2514
+ .solution-json-pre {
2515
+ margin: 0;
2516
+ padding: 1rem;
2517
+ background: hsl(var(--muted) / 0.3);
2518
+ font-family: var(--font-mono);
2519
+ font-size: 0.75rem;
2520
+ line-height: 1.5;
2521
+ color: hsl(var(--foreground));
2522
+ overflow-x: auto;
2523
+ white-space: pre-wrap;
2524
+ word-break: break-all;
2525
+ max-height: 300px;
2526
+ overflow-y: auto;
2527
+ }
2528
+
2529
+ /* Responsive Solution Modal */
2530
+ @media (max-width: 640px) {
2531
+ .solution-modal-content {
2532
+ max-height: 95vh;
2533
+ margin: 0.5rem;
2534
+ }
2535
+
2536
+ .solution-overview {
2537
+ flex-wrap: wrap;
2538
+ justify-content: center;
2539
+ }
2540
+
2541
+ .solution-stat {
2542
+ min-width: 80px;
2543
+ }
2544
+ }