@orchestra-mcp/tasks 0.2.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.
package/dist/index.css ADDED
@@ -0,0 +1,3859 @@
1
+ /* src/BacklogView/BacklogView.css */
2
+ .backlog {
3
+ display: flex;
4
+ gap: 16px;
5
+ overflow-x: auto;
6
+ padding: 8px;
7
+ min-height: 200px;
8
+ }
9
+ .backlog__column {
10
+ min-width: 260px;
11
+ max-width: 320px;
12
+ flex-shrink: 0;
13
+ background: var(--color-bg-alt, #1e1e2e);
14
+ border: 1px solid var(--color-border, #333);
15
+ border-radius: 8px;
16
+ display: flex;
17
+ flex-direction: column;
18
+ }
19
+ .backlog__column-header {
20
+ display: flex;
21
+ align-items: center;
22
+ gap: 8px;
23
+ padding: 12px 14px;
24
+ border-bottom: 1px solid var(--color-border, #333);
25
+ font-weight: 600;
26
+ font-size: 13px;
27
+ color: var(--color-fg, #ccc);
28
+ }
29
+ .backlog__column-dot {
30
+ width: 8px;
31
+ height: 8px;
32
+ border-radius: 50%;
33
+ flex-shrink: 0;
34
+ }
35
+ .backlog__column-title {
36
+ flex: 1;
37
+ }
38
+ .backlog__column-count {
39
+ background: var(--color-bg-active, #2a2a3a);
40
+ color: var(--color-fg-muted, #888);
41
+ font-size: 11px;
42
+ padding: 2px 7px;
43
+ border-radius: 10px;
44
+ font-weight: 500;
45
+ }
46
+ .backlog__cards {
47
+ padding: 8px;
48
+ display: flex;
49
+ flex-direction: column;
50
+ gap: 6px;
51
+ flex: 1;
52
+ overflow-y: auto;
53
+ }
54
+ .backlog__card {
55
+ all: unset;
56
+ box-sizing: border-box;
57
+ display: flex;
58
+ flex-direction: column;
59
+ gap: 6px;
60
+ padding: 10px 12px;
61
+ background: var(--color-bg, #181825);
62
+ border: 1px solid var(--color-border, #333);
63
+ border-radius: 6px;
64
+ cursor: pointer;
65
+ transition: all 0.15s ease;
66
+ width: 100%;
67
+ text-align: left;
68
+ }
69
+ .backlog__card:hover {
70
+ border-color: var(--color-accent, #7c3aed);
71
+ background: var(--color-bg-active, #2a2a3a);
72
+ }
73
+ .backlog__card-top {
74
+ display: flex;
75
+ align-items: center;
76
+ justify-content: space-between;
77
+ }
78
+ .backlog__card-type {
79
+ font-size: 12px;
80
+ }
81
+ .backlog__card-priority {
82
+ width: 8px;
83
+ height: 8px;
84
+ border-radius: 50%;
85
+ }
86
+ .backlog__card-priority--low {
87
+ background: #22c55e;
88
+ }
89
+ .backlog__card-priority--medium {
90
+ background: #eab308;
91
+ }
92
+ .backlog__card-priority--high {
93
+ background: #f97316;
94
+ }
95
+ .backlog__card-priority--critical {
96
+ background: #ef4444;
97
+ }
98
+ .backlog__card-title {
99
+ font-size: 13px;
100
+ font-weight: 500;
101
+ color: var(--color-fg, #ccc);
102
+ line-height: 1.4;
103
+ }
104
+ .backlog__card-desc {
105
+ font-size: 12px;
106
+ color: var(--color-fg-muted, #888);
107
+ line-height: 1.3;
108
+ }
109
+ .backlog__card-bottom {
110
+ display: flex;
111
+ align-items: center;
112
+ justify-content: space-between;
113
+ gap: 6px;
114
+ }
115
+ .backlog__card-tags {
116
+ display: flex;
117
+ flex-wrap: wrap;
118
+ gap: 4px;
119
+ }
120
+ .backlog__card-tag {
121
+ font-size: 10px;
122
+ padding: 2px 6px;
123
+ border-radius: 4px;
124
+ background: var(--color-bg-alt, #1e1e2e);
125
+ color: var(--color-fg-muted, #888);
126
+ border: 1px solid var(--color-border, #333);
127
+ }
128
+ .backlog__card-assignee {
129
+ font-size: 10px;
130
+ width: 24px;
131
+ height: 24px;
132
+ border-radius: 50%;
133
+ background: var(--color-accent, #7c3aed);
134
+ color: #fff;
135
+ display: flex;
136
+ align-items: center;
137
+ justify-content: center;
138
+ font-weight: 600;
139
+ flex-shrink: 0;
140
+ }
141
+ [data-variant=compact] .backlog {
142
+ gap: 10px;
143
+ padding: 4px;
144
+ }
145
+ [data-variant=compact] .backlog__column {
146
+ min-width: 220px;
147
+ border-radius: 4px;
148
+ }
149
+ [data-variant=compact] .backlog__column-header {
150
+ padding: 8px 10px;
151
+ font-size: 12px;
152
+ }
153
+ [data-variant=compact] .backlog__cards {
154
+ padding: 4px;
155
+ gap: 4px;
156
+ }
157
+ [data-variant=compact] .backlog__card {
158
+ padding: 6px 8px;
159
+ gap: 4px;
160
+ border-radius: 4px;
161
+ }
162
+ [data-variant=compact] .backlog__card-title {
163
+ font-size: 12px;
164
+ }
165
+ .backlog--compact .backlog__column {
166
+ min-width: 220px;
167
+ }
168
+ .backlog--compact .backlog__card {
169
+ padding: 6px 8px;
170
+ }
171
+ [data-variant=modern] .backlog__column {
172
+ border-radius: 12px;
173
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
174
+ border: none;
175
+ }
176
+ [data-variant=modern] .backlog__card {
177
+ border-radius: 10px;
178
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
179
+ border: none;
180
+ }
181
+ [data-variant=modern] .backlog__card:hover {
182
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
183
+ transform: translateY(-1px);
184
+ }
185
+ [data-variant=modern] .backlog__card-tag {
186
+ border-radius: 8px;
187
+ }
188
+
189
+ /* src/StatusGrid/StatusGrid.css */
190
+ .status-grid {
191
+ display: flex;
192
+ flex-wrap: wrap;
193
+ gap: 8px;
194
+ }
195
+ .status-grid__cell {
196
+ all: unset;
197
+ box-sizing: border-box;
198
+ display: flex;
199
+ align-items: center;
200
+ gap: 8px;
201
+ padding: 8px 14px;
202
+ background: var(--color-bg-alt, #1e1e2e);
203
+ border: 1px solid var(--color-border, #333);
204
+ border-radius: 8px;
205
+ cursor: pointer;
206
+ transition: all 0.15s ease;
207
+ font-size: 13px;
208
+ color: var(--color-fg, #ccc);
209
+ }
210
+ .status-grid__cell:hover {
211
+ border-color: var(--color-accent, #7c3aed);
212
+ background: var(--color-bg-active, #2a2a3a);
213
+ }
214
+ .status-grid__cell--active {
215
+ border-color: var(--color-accent, #7c3aed);
216
+ background: var(--color-bg-active, #2a2a3a);
217
+ box-shadow: 0 0 0 1px var(--color-accent, #7c3aed);
218
+ }
219
+ .status-grid__dot {
220
+ width: 8px;
221
+ height: 8px;
222
+ border-radius: 50%;
223
+ flex-shrink: 0;
224
+ }
225
+ .status-grid__label {
226
+ font-weight: 500;
227
+ flex: 1;
228
+ }
229
+ .status-grid__count {
230
+ background: var(--color-bg-active, #2a2a3a);
231
+ color: var(--color-fg-muted, #888);
232
+ font-size: 11px;
233
+ padding: 2px 7px;
234
+ border-radius: 10px;
235
+ font-weight: 600;
236
+ min-width: 20px;
237
+ text-align: center;
238
+ }
239
+ [data-variant=compact] .status-grid__cell {
240
+ padding: 6px 10px;
241
+ font-size: 12px;
242
+ border-radius: 4px;
243
+ }
244
+ [data-variant=compact] .status-grid__dot {
245
+ width: 6px;
246
+ height: 6px;
247
+ }
248
+ [data-variant=modern] .status-grid__cell {
249
+ border-radius: 12px;
250
+ border: none;
251
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
252
+ }
253
+ [data-variant=modern] .status-grid__cell:hover {
254
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
255
+ transform: translateY(-1px);
256
+ }
257
+
258
+ /* src/TaskList/TaskList.css */
259
+ .task-list {
260
+ display: flex;
261
+ flex-direction: column;
262
+ gap: 4px;
263
+ }
264
+ .task-list__empty {
265
+ padding: 24px;
266
+ text-align: center;
267
+ color: var(--color-fg-muted, #888);
268
+ font-size: 13px;
269
+ }
270
+ .task-list__row {
271
+ all: unset;
272
+ box-sizing: border-box;
273
+ display: flex;
274
+ align-items: center;
275
+ gap: 8px;
276
+ padding: 8px 12px;
277
+ background: var(--color-bg, #181825);
278
+ border: 1px solid var(--color-border-subtle, var(--color-border, #333));
279
+ border-radius: 6px;
280
+ cursor: pointer;
281
+ transition: all 0.15s ease;
282
+ font-size: 13px;
283
+ color: var(--color-fg, #ccc);
284
+ width: 100%;
285
+ text-align: left;
286
+ }
287
+ .task-list__row:hover {
288
+ border-color: var(--color-accent, #7c3aed);
289
+ background: var(--color-bg-active, #2a2a3a);
290
+ }
291
+ .task-list__type {
292
+ font-size: 12px;
293
+ flex-shrink: 0;
294
+ }
295
+ .task-list__priority {
296
+ width: 8px;
297
+ height: 8px;
298
+ border-radius: 50%;
299
+ flex-shrink: 0;
300
+ }
301
+ .task-list__id {
302
+ color: var(--color-fg-muted, #888);
303
+ font-size: 11px;
304
+ font-family: var(--font-family-mono, monospace);
305
+ flex-shrink: 0;
306
+ min-width: 56px;
307
+ }
308
+ .task-list__title {
309
+ flex: 1;
310
+ overflow: hidden;
311
+ text-overflow: ellipsis;
312
+ white-space: nowrap;
313
+ }
314
+ .task-list__badge {
315
+ font-size: 10px;
316
+ font-weight: 600;
317
+ padding: 2px 8px;
318
+ border-radius: 10px;
319
+ border: 1px solid;
320
+ flex-shrink: 0;
321
+ white-space: nowrap;
322
+ }
323
+ [data-variant=compact] .task-list__row {
324
+ padding: 6px 8px;
325
+ gap: 6px;
326
+ font-size: 12px;
327
+ border-radius: 4px;
328
+ }
329
+ [data-variant=compact] .task-list__id {
330
+ font-size: 10px;
331
+ min-width: 48px;
332
+ }
333
+ [data-variant=compact] .task-list__badge {
334
+ font-size: 9px;
335
+ padding: 1px 6px;
336
+ }
337
+ [data-variant=modern] .task-list__row {
338
+ border-radius: 10px;
339
+ border: none;
340
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
341
+ }
342
+ [data-variant=modern] .task-list__row:hover {
343
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
344
+ transform: translateY(-1px);
345
+ }
346
+
347
+ /* src/DetailPanel/DetailPanel.css */
348
+ .detail-overlay {
349
+ position: fixed;
350
+ inset: 0;
351
+ background: rgba(0, 0, 0, 0.5);
352
+ z-index: 1000;
353
+ display: flex;
354
+ justify-content: flex-end;
355
+ animation: detail-fade-in 0.15s ease;
356
+ }
357
+ @keyframes detail-fade-in {
358
+ from {
359
+ opacity: 0;
360
+ }
361
+ to {
362
+ opacity: 1;
363
+ }
364
+ }
365
+ @keyframes detail-slide-in {
366
+ from {
367
+ transform: translateX(100%);
368
+ }
369
+ to {
370
+ transform: translateX(0);
371
+ }
372
+ }
373
+ .detail-panel {
374
+ width: 480px;
375
+ max-width: 90vw;
376
+ height: 100vh;
377
+ background: var(--color-bg, #181825);
378
+ border-left: 1px solid var(--color-border, #333);
379
+ display: flex;
380
+ flex-direction: column;
381
+ animation: detail-slide-in 0.2s ease;
382
+ overflow: hidden;
383
+ }
384
+ .detail-panel__header {
385
+ display: flex;
386
+ align-items: flex-start;
387
+ justify-content: space-between;
388
+ padding: 20px 20px 16px;
389
+ border-bottom: 1px solid var(--color-border, #333);
390
+ gap: 12px;
391
+ }
392
+ .detail-panel__titles {
393
+ flex: 1;
394
+ min-width: 0;
395
+ }
396
+ .detail-panel__subtitle {
397
+ font-size: 11px;
398
+ font-family: var(--font-family-mono, monospace);
399
+ color: var(--color-fg-muted, #888);
400
+ margin-bottom: 4px;
401
+ display: block;
402
+ }
403
+ .detail-panel__title {
404
+ font-size: 16px;
405
+ font-weight: 600;
406
+ margin: 0;
407
+ color: var(--color-fg, #ccc);
408
+ line-height: 1.3;
409
+ }
410
+ .detail-panel__close {
411
+ all: unset;
412
+ cursor: pointer;
413
+ padding: 4px;
414
+ border-radius: 4px;
415
+ color: var(--color-fg-muted, #888);
416
+ flex-shrink: 0;
417
+ transition: color 0.15s;
418
+ }
419
+ .detail-panel__close:hover {
420
+ color: var(--color-fg, #ccc);
421
+ }
422
+ .detail-panel__fields {
423
+ display: grid;
424
+ grid-template-columns: repeat(2, 1fr);
425
+ gap: 12px;
426
+ padding: 16px 20px;
427
+ border-bottom: 1px solid var(--color-border, #333);
428
+ }
429
+ .detail-panel__field {
430
+ display: flex;
431
+ flex-direction: column;
432
+ gap: 2px;
433
+ }
434
+ .detail-panel__field-label {
435
+ font-size: 11px;
436
+ font-weight: 600;
437
+ text-transform: uppercase;
438
+ letter-spacing: 0.5px;
439
+ color: var(--color-fg-muted, #888);
440
+ }
441
+ .detail-panel__field-value {
442
+ font-size: 13px;
443
+ color: var(--color-fg, #ccc);
444
+ font-weight: 500;
445
+ }
446
+ .detail-panel__body {
447
+ flex: 1;
448
+ overflow-y: auto;
449
+ padding: 20px;
450
+ font-size: 13px;
451
+ line-height: 1.6;
452
+ color: var(--color-fg, #ccc);
453
+ }
454
+ .detail-panel__body h1,
455
+ .detail-panel__body h2,
456
+ .detail-panel__body h3 {
457
+ color: var(--color-fg, #ccc);
458
+ margin: 16px 0 8px;
459
+ }
460
+ .detail-panel__body h1 {
461
+ font-size: 18px;
462
+ }
463
+ .detail-panel__body h2 {
464
+ font-size: 15px;
465
+ }
466
+ .detail-panel__body h3 {
467
+ font-size: 14px;
468
+ }
469
+ .detail-panel__body p {
470
+ margin: 0 0 12px;
471
+ }
472
+ .detail-panel__body code {
473
+ font-family: var(--font-family-mono, monospace);
474
+ font-size: 12px;
475
+ background: var(--color-bg-alt, #1e1e2e);
476
+ padding: 2px 6px;
477
+ border-radius: 4px;
478
+ border: 1px solid var(--color-border, #333);
479
+ }
480
+ .detail-panel__body pre {
481
+ background: var(--color-bg-alt, #1e1e2e);
482
+ border: 1px solid var(--color-border, #333);
483
+ border-radius: 6px;
484
+ padding: 12px;
485
+ overflow-x: auto;
486
+ margin: 0 0 12px;
487
+ }
488
+ .detail-panel__body pre code {
489
+ background: none;
490
+ border: none;
491
+ padding: 0;
492
+ }
493
+ .detail-panel__body ul,
494
+ .detail-panel__body ol {
495
+ padding-left: 20px;
496
+ margin: 0 0 12px;
497
+ }
498
+ .detail-panel__body li {
499
+ margin-bottom: 4px;
500
+ }
501
+ .detail-panel__body blockquote {
502
+ border-left: 3px solid var(--color-accent, #7c3aed);
503
+ padding-left: 12px;
504
+ margin: 0 0 12px;
505
+ color: var(--color-fg-muted, #888);
506
+ }
507
+ [data-variant=compact] .detail-panel {
508
+ width: 400px;
509
+ }
510
+ [data-variant=compact] .detail-panel__header {
511
+ padding: 14px 16px 12px;
512
+ }
513
+ [data-variant=compact] .detail-panel__title {
514
+ font-size: 14px;
515
+ }
516
+ [data-variant=compact] .detail-panel__fields {
517
+ padding: 12px 16px;
518
+ gap: 8px;
519
+ }
520
+ [data-variant=compact] .detail-panel__body {
521
+ padding: 16px;
522
+ font-size: 12px;
523
+ }
524
+ [data-variant=modern] .detail-panel {
525
+ border-left: none;
526
+ box-shadow: -8px 0 32px rgba(0, 0, 0, 0.3);
527
+ }
528
+ [data-variant=modern] .detail-panel__header {
529
+ border-bottom: none;
530
+ padding-bottom: 12px;
531
+ }
532
+ [data-variant=modern] .detail-panel__fields {
533
+ border-bottom: none;
534
+ }
535
+
536
+ /* src/Dashboard/DashboardGrid.css */
537
+ .dashboard-grid {
538
+ display: grid;
539
+ grid-template-columns: repeat(12, 1fr);
540
+ grid-auto-rows: minmax(280px, auto);
541
+ gap: 12px;
542
+ padding: 12px;
543
+ width: 100%;
544
+ position: relative;
545
+ align-items: stretch;
546
+ }
547
+ .dashboard-grid__item {
548
+ overflow: hidden;
549
+ position: relative;
550
+ display: flex;
551
+ flex-direction: column;
552
+ border-radius: 8px;
553
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
554
+ will-change: transform, opacity;
555
+ min-height: 100%;
556
+ height: 100%;
557
+ }
558
+ .dashboard-grid__item--collapsed {
559
+ grid-row-end: span 1 !important;
560
+ height: fit-content;
561
+ overflow: hidden;
562
+ }
563
+ .dashboard-grid__drag-handle {
564
+ position: absolute;
565
+ top: 0;
566
+ left: 0;
567
+ right: 80px;
568
+ height: 36px;
569
+ z-index: 1;
570
+ cursor: grab;
571
+ user-select: none;
572
+ -webkit-user-select: none;
573
+ touch-action: none;
574
+ }
575
+ .dashboard-grid__drag-handle:active {
576
+ cursor: grabbing;
577
+ }
578
+ .dashboard-grid__item--dragging {
579
+ opacity: 0.3;
580
+ transform: scale(0.95);
581
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.6, 1);
582
+ }
583
+ .dashboard-grid__drop-preview {
584
+ background:
585
+ linear-gradient(
586
+ 90deg,
587
+ rgba(124, 58, 237, 0.1) 0%,
588
+ rgba(124, 58, 237, 0.2) 50%,
589
+ rgba(124, 58, 237, 0.1) 100%);
590
+ background-size: 200% 100%;
591
+ border: 2px dashed var(--color-accent, #7c3aed);
592
+ border-radius: 8px;
593
+ pointer-events: none;
594
+ min-height: 80px;
595
+ animation: shimmer 1.5s ease-in-out infinite;
596
+ position: relative;
597
+ }
598
+ .dashboard-grid__drop-preview::before {
599
+ content: "";
600
+ position: absolute;
601
+ inset: 0;
602
+ border-radius: 6px;
603
+ background:
604
+ radial-gradient(
605
+ circle at 50% 50%,
606
+ rgba(124, 58, 237, 0.15) 0%,
607
+ transparent 70%);
608
+ animation: pulse 1s ease-in-out infinite;
609
+ }
610
+ @keyframes shimmer {
611
+ 0% {
612
+ background-position: -200% 0;
613
+ }
614
+ 100% {
615
+ background-position: 200% 0;
616
+ }
617
+ }
618
+ @keyframes pulse {
619
+ 0%, 100% {
620
+ opacity: 0.5;
621
+ transform: scale(1);
622
+ }
623
+ 50% {
624
+ opacity: 1;
625
+ transform: scale(1.02);
626
+ }
627
+ }
628
+ .dashboard-grid__ghost {
629
+ opacity: 0.9;
630
+ transform: rotate(-2deg);
631
+ filter: drop-shadow(0 10px 40px rgba(0, 0, 0, 0.3)) drop-shadow(0 0 0 1px rgba(124, 58, 237, 0.5));
632
+ transition: transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);
633
+ animation: float 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
634
+ }
635
+ @keyframes float {
636
+ from {
637
+ transform: rotate(0deg) scale(1);
638
+ }
639
+ to {
640
+ transform: rotate(-2deg) scale(1.03);
641
+ }
642
+ }
643
+ .dashboard-grid__item:not(.dashboard-grid__item--dragging):hover {
644
+ transform: translateY(-1px);
645
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
646
+ }
647
+ @media (max-width: 900px) {
648
+ .dashboard-grid {
649
+ grid-template-columns: repeat(6, 1fr);
650
+ gap: 8px;
651
+ padding: 8px;
652
+ }
653
+ }
654
+ @media (max-width: 600px) {
655
+ .dashboard-grid {
656
+ grid-template-columns: 1fr;
657
+ gap: 6px;
658
+ padding: 6px;
659
+ }
660
+ .dashboard-grid__item {
661
+ grid-column: 1 / -1 !important;
662
+ }
663
+ }
664
+ [data-variant=compact] .dashboard-grid {
665
+ gap: 8px;
666
+ padding: 8px;
667
+ }
668
+ [data-variant=compact] .dashboard-grid__item {
669
+ border-radius: 4px;
670
+ }
671
+ [data-variant=compact] .dashboard-grid__drop-preview {
672
+ border-radius: 4px;
673
+ }
674
+ [data-variant=modern] .dashboard-grid__item {
675
+ border-radius: 12px;
676
+ }
677
+ [data-variant=modern] .dashboard-grid__item:not(.dashboard-grid__item--dragging):hover {
678
+ transform: translateY(-2px);
679
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
680
+ }
681
+ [data-variant=modern] .dashboard-grid__drop-preview {
682
+ border-radius: 12px;
683
+ border-width: 3px;
684
+ }
685
+ [data-variant=modern] .dashboard-grid__ghost {
686
+ border-radius: 12px;
687
+ transform: rotate(-3deg) scale(1.05);
688
+ }
689
+
690
+ /* src/Dashboard/ResizeHandle.css */
691
+ .resize-handle {
692
+ position: absolute;
693
+ bottom: 0;
694
+ right: 0;
695
+ width: 16px;
696
+ height: 16px;
697
+ cursor: nwse-resize;
698
+ z-index: 10;
699
+ opacity: 0;
700
+ transition: opacity 0.15s ease;
701
+ }
702
+ .resize-handle::after {
703
+ content: "";
704
+ position: absolute;
705
+ bottom: 3px;
706
+ right: 3px;
707
+ width: 8px;
708
+ height: 8px;
709
+ border-right: 2px solid var(--color-fg-muted, #888);
710
+ border-bottom: 2px solid var(--color-fg-muted, #888);
711
+ border-radius: 0 0 2px 0;
712
+ }
713
+ .dashboard-grid__item:hover .resize-handle {
714
+ opacity: 1;
715
+ }
716
+
717
+ /* src/Dashboard/WidgetContextMenu.css */
718
+ .widget-ctx {
719
+ position: fixed;
720
+ z-index: 9999;
721
+ min-width: 160px;
722
+ padding: 4px;
723
+ border-radius: 8px;
724
+ background: var(--color-bg, #fff);
725
+ border: 1px solid var(--color-border, #e2e8f0);
726
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
727
+ font-family:
728
+ system-ui,
729
+ -apple-system,
730
+ sans-serif;
731
+ }
732
+ .widget-ctx__group {
733
+ display: flex;
734
+ flex-direction: column;
735
+ }
736
+ .widget-ctx__label {
737
+ padding: 4px 10px;
738
+ font-size: 10px;
739
+ font-weight: 700;
740
+ text-transform: uppercase;
741
+ letter-spacing: 0.5px;
742
+ color: var(--color-fg-muted, #64748b);
743
+ }
744
+ .widget-ctx__item {
745
+ all: unset;
746
+ box-sizing: border-box;
747
+ display: block;
748
+ width: 100%;
749
+ padding: 6px 10px;
750
+ font-size: 13px;
751
+ color: var(--color-fg, #1e293b);
752
+ border-radius: 4px;
753
+ cursor: pointer;
754
+ transition: background 0.1s;
755
+ text-align: left;
756
+ }
757
+ .widget-ctx__item:hover {
758
+ background: var(--color-bg-active, #f1f5f9);
759
+ }
760
+ .widget-ctx__item--active {
761
+ color: var(--color-accent, #7c3aed);
762
+ font-weight: 600;
763
+ }
764
+ .widget-ctx__divider {
765
+ height: 1px;
766
+ background: var(--color-border, #e2e8f0);
767
+ margin: 4px 0;
768
+ }
769
+ [data-variant=compact] .widget-ctx {
770
+ min-width: 140px;
771
+ padding: 3px;
772
+ border-radius: 6px;
773
+ }
774
+ [data-variant=compact] .widget-ctx__item {
775
+ padding: 4px 8px;
776
+ font-size: 12px;
777
+ }
778
+ [data-variant=modern] .widget-ctx {
779
+ border-radius: 12px;
780
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
781
+ }
782
+
783
+ /* src/ProjectsSidebar/ProjectItem.css */
784
+ .project-item__wrapper {
785
+ position: relative;
786
+ overflow: hidden;
787
+ border-radius: 8px;
788
+ margin-bottom: 2px;
789
+ }
790
+ .project-item__action {
791
+ position: absolute;
792
+ top: 0;
793
+ bottom: 0;
794
+ display: flex;
795
+ align-items: center;
796
+ gap: 6px;
797
+ padding: 0 16px;
798
+ font-size: 12px;
799
+ font-weight: 600;
800
+ color: #fff;
801
+ opacity: 0;
802
+ transition: opacity 0.15s ease;
803
+ pointer-events: none;
804
+ }
805
+ .project-item__action--visible {
806
+ opacity: 1;
807
+ }
808
+ .project-item__action--pin {
809
+ left: 0;
810
+ right: 0;
811
+ background: var(--color-accent, #6366f1);
812
+ border-radius: 8px;
813
+ justify-content: flex-start;
814
+ }
815
+ .project-item__action--delete {
816
+ left: 0;
817
+ right: 0;
818
+ background: var(--color-danger, #e53e3e);
819
+ border-radius: 8px;
820
+ justify-content: flex-end;
821
+ }
822
+ .project-item {
823
+ display: flex;
824
+ align-items: center;
825
+ gap: 10px;
826
+ padding: 10px 12px;
827
+ min-height: 64px;
828
+ border: none;
829
+ border-radius: 8px;
830
+ background: var(--color-bg, #1a1a1a);
831
+ color: var(--color-fg);
832
+ cursor: pointer;
833
+ width: 100%;
834
+ text-align: left;
835
+ transition: background 0.12s ease, transform 0.25s ease;
836
+ position: relative;
837
+ z-index: 1;
838
+ touch-action: pan-y;
839
+ }
840
+ .project-item:hover {
841
+ background: var(--color-bg-alt);
842
+ }
843
+ .project-item:focus-visible {
844
+ outline: 2px solid var(--color-accent);
845
+ outline-offset: -2px;
846
+ border-radius: 8px;
847
+ }
848
+ .project-item--active {
849
+ background: var(--color-bg-active, var(--color-bg-alt));
850
+ }
851
+ .project-item__wrapper--selected {
852
+ outline: 2px solid var(--color-accent, #6366f1);
853
+ outline-offset: -2px;
854
+ }
855
+ .project-item--selected {
856
+ background: color-mix(in srgb, var(--color-accent, #6366f1) 10%, var(--color-bg, #1a1a1a));
857
+ }
858
+ .project-item--selected:hover {
859
+ background: color-mix(in srgb, var(--color-accent, #6366f1) 14%, var(--color-bg, #1a1a1a));
860
+ }
861
+ .project-item__checkbox {
862
+ display: flex;
863
+ align-items: center;
864
+ justify-content: center;
865
+ width: 20px;
866
+ height: 20px;
867
+ flex-shrink: 0;
868
+ border-radius: 50%;
869
+ border: 2px solid var(--color-fg-muted, #999);
870
+ background: transparent;
871
+ transition: background 0.12s ease, border-color 0.12s ease;
872
+ line-height: 0;
873
+ }
874
+ .project-item__checkbox--checked {
875
+ background: var(--color-accent, #6366f1);
876
+ border-color: var(--color-accent, #6366f1);
877
+ color: #fff;
878
+ }
879
+ .project-item__icon {
880
+ display: flex;
881
+ align-items: center;
882
+ justify-content: center;
883
+ width: 36px;
884
+ height: 36px;
885
+ flex-shrink: 0;
886
+ border-radius: 8px;
887
+ background: var(--color-bg-contrast, rgba(255,255,255,0.05));
888
+ color: var(--color-accent);
889
+ line-height: 0;
890
+ transition: transform 0.12s ease, opacity 0.12s ease;
891
+ }
892
+ .project-item__icon:hover {
893
+ transform: scale(1.05);
894
+ opacity: 0.9;
895
+ cursor: pointer;
896
+ }
897
+ .project-item__body {
898
+ flex: 1;
899
+ min-width: 0;
900
+ display: flex;
901
+ flex-direction: column;
902
+ gap: 2px;
903
+ }
904
+ .project-item__title {
905
+ font-size: 13px;
906
+ font-weight: 600;
907
+ color: var(--color-fg);
908
+ white-space: nowrap;
909
+ overflow: hidden;
910
+ text-overflow: ellipsis;
911
+ line-height: 1.3;
912
+ }
913
+ .project-item__preview {
914
+ font-size: 12px;
915
+ color: var(--color-fg-muted);
916
+ white-space: nowrap;
917
+ overflow: hidden;
918
+ text-overflow: ellipsis;
919
+ max-width: 200px;
920
+ line-height: 1.3;
921
+ }
922
+ .project-item__status {
923
+ font-size: 10px;
924
+ padding: 1px 5px;
925
+ border-radius: 4px;
926
+ background: var(--color-bg-alt);
927
+ color: var(--color-fg-muted);
928
+ white-space: nowrap;
929
+ line-height: 1.4;
930
+ width: fit-content;
931
+ text-transform: uppercase;
932
+ }
933
+ .project-item__meta {
934
+ flex-shrink: 0;
935
+ display: flex;
936
+ flex-direction: column;
937
+ align-items: flex-end;
938
+ gap: 4px;
939
+ min-width: 48px;
940
+ }
941
+ .project-item__pin-badge {
942
+ color: var(--color-accent, #6366f1);
943
+ line-height: 0;
944
+ opacity: 0.7;
945
+ }
946
+ .project-item__rename-input {
947
+ width: 100%;
948
+ background: var(--color-bg);
949
+ border: 1px solid var(--color-accent, #6366f1);
950
+ border-radius: 5px;
951
+ padding: 2px 6px;
952
+ font-size: 13px;
953
+ font-weight: 600;
954
+ color: var(--color-fg);
955
+ outline: none;
956
+ box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.2);
957
+ }
958
+ .project-item__menu {
959
+ position: fixed;
960
+ z-index: 1000;
961
+ min-width: 180px;
962
+ background: var(--color-bg-alt, #1e1e1e);
963
+ border: 1px solid var(--color-border, rgba(255,255,255,0.08));
964
+ border-radius: 10px;
965
+ padding: 4px;
966
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.35), 0 2px 8px rgba(0, 0, 0, 0.2);
967
+ animation: project-menu-in 0.12s cubic-bezier(0.34, 1.56, 0.64, 1);
968
+ }
969
+ @keyframes project-menu-in {
970
+ from {
971
+ opacity: 0;
972
+ transform: scale(0.92);
973
+ }
974
+ to {
975
+ opacity: 1;
976
+ transform: scale(1);
977
+ }
978
+ }
979
+ .project-item__menu-item {
980
+ display: flex;
981
+ align-items: center;
982
+ gap: 9px;
983
+ width: 100%;
984
+ padding: 8px 10px;
985
+ border: none;
986
+ border-radius: 7px;
987
+ background: transparent;
988
+ color: var(--color-fg);
989
+ font-size: 13px;
990
+ font-weight: 500;
991
+ cursor: pointer;
992
+ text-align: left;
993
+ transition: background 0.1s ease;
994
+ }
995
+ .project-item__menu-item:hover {
996
+ background: var(--color-bg-hover, rgba(255,255,255,0.06));
997
+ }
998
+ .project-item__menu-item--danger {
999
+ color: var(--color-danger, #e53e3e);
1000
+ }
1001
+ .project-item__menu-item--danger:hover {
1002
+ background: rgba(229, 62, 62, 0.1);
1003
+ }
1004
+ .project-item__menu-item--danger:not(:first-child) {
1005
+ margin-top: 2px;
1006
+ border-top: 1px solid var(--color-border, rgba(255,255,255,0.06));
1007
+ padding-top: 10px;
1008
+ }
1009
+ .project-item__menu-chevron {
1010
+ margin-left: auto;
1011
+ color: var(--color-fg-dim);
1012
+ line-height: 0;
1013
+ }
1014
+ .project-item__menu-parent {
1015
+ position: relative;
1016
+ }
1017
+ .project-item__menu-parent > .project-item__menu-item {
1018
+ background: transparent;
1019
+ }
1020
+ .project-item__menu-parent:hover > .project-item__menu-item {
1021
+ background: var(--color-bg-hover, rgba(255,255,255,0.06));
1022
+ }
1023
+ .project-item__submenu {
1024
+ position: absolute;
1025
+ left: 100%;
1026
+ top: -4px;
1027
+ min-width: 200px;
1028
+ background: var(--color-bg-alt, #1e1e1e);
1029
+ border: 1px solid var(--color-border, rgba(255,255,255,0.08));
1030
+ border-radius: 10px;
1031
+ padding: 4px;
1032
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.35), 0 2px 8px rgba(0, 0, 0, 0.2);
1033
+ animation: project-menu-in 0.12s cubic-bezier(0.34, 1.56, 0.64, 1);
1034
+ }
1035
+ .project-item__icon-grid {
1036
+ display: grid;
1037
+ grid-template-columns: repeat(5, 1fr);
1038
+ gap: 4px;
1039
+ padding: 6px;
1040
+ }
1041
+ .project-item__icon-pick {
1042
+ display: flex;
1043
+ align-items: center;
1044
+ justify-content: center;
1045
+ width: 32px;
1046
+ height: 32px;
1047
+ border: none;
1048
+ border-radius: 6px;
1049
+ background: transparent;
1050
+ color: var(--color-fg-muted);
1051
+ cursor: pointer;
1052
+ transition: background 0.1s, color 0.1s;
1053
+ }
1054
+ .project-item__icon-pick:hover {
1055
+ background: var(--color-bg-hover, rgba(255,255,255,0.06));
1056
+ color: var(--color-fg);
1057
+ }
1058
+ .project-item__icon-pick--active {
1059
+ background: var(--color-accent);
1060
+ color: #fff;
1061
+ }
1062
+ .project-item__color-grid {
1063
+ display: grid;
1064
+ grid-template-columns: repeat(5, 1fr);
1065
+ gap: 6px;
1066
+ padding: 8px;
1067
+ }
1068
+ .project-item__color-pick {
1069
+ width: 24px;
1070
+ height: 24px;
1071
+ border: 2px solid transparent;
1072
+ border-radius: 50%;
1073
+ cursor: pointer;
1074
+ transition: transform 0.1s, border-color 0.1s;
1075
+ }
1076
+ .project-item__color-pick:hover {
1077
+ transform: scale(1.15);
1078
+ }
1079
+ .project-item__color-pick--active {
1080
+ border-color: var(--color-fg-bright, #fff);
1081
+ transform: scale(1.15);
1082
+ }
1083
+ .project-item__dialog {
1084
+ border: none;
1085
+ border-radius: 14px;
1086
+ padding: 0;
1087
+ background: transparent;
1088
+ box-shadow: none;
1089
+ max-width: 320px;
1090
+ width: calc(100vw - 48px);
1091
+ position: fixed;
1092
+ top: 50%;
1093
+ left: 50%;
1094
+ translate: -50% -50%;
1095
+ margin: 0;
1096
+ }
1097
+ .project-item__dialog::backdrop {
1098
+ background: rgba(0, 0, 0, 0.5);
1099
+ backdrop-filter: blur(4px);
1100
+ animation: project-dialog-backdrop-in 0.15s ease;
1101
+ }
1102
+ @keyframes project-dialog-backdrop-in {
1103
+ from {
1104
+ opacity: 0;
1105
+ }
1106
+ to {
1107
+ opacity: 1;
1108
+ }
1109
+ }
1110
+ .project-item__dialog-inner {
1111
+ background: var(--color-bg-alt, #1e1e1e);
1112
+ border: 1px solid var(--color-border, rgba(255,255,255,0.08));
1113
+ border-radius: 14px;
1114
+ padding: 24px 20px 20px;
1115
+ display: flex;
1116
+ flex-direction: column;
1117
+ align-items: center;
1118
+ gap: 8px;
1119
+ text-align: center;
1120
+ animation: project-dialog-in 0.18s cubic-bezier(0.34, 1.56, 0.64, 1);
1121
+ }
1122
+ @keyframes project-dialog-in {
1123
+ from {
1124
+ opacity: 0;
1125
+ transform: scale(0.88) translateY(8px);
1126
+ }
1127
+ to {
1128
+ opacity: 1;
1129
+ transform: scale(1) translateY(0);
1130
+ }
1131
+ }
1132
+ .project-item__dialog-icon {
1133
+ width: 52px;
1134
+ height: 52px;
1135
+ border-radius: 50%;
1136
+ background: rgba(229, 62, 62, 0.12);
1137
+ color: var(--color-danger, #e53e3e);
1138
+ display: flex;
1139
+ align-items: center;
1140
+ justify-content: center;
1141
+ margin-bottom: 4px;
1142
+ }
1143
+ .project-item__dialog-title {
1144
+ font-size: 15px;
1145
+ font-weight: 700;
1146
+ color: var(--color-fg);
1147
+ margin: 0;
1148
+ }
1149
+ .project-item__dialog-body {
1150
+ font-size: 12.5px;
1151
+ color: var(--color-fg-muted);
1152
+ line-height: 1.5;
1153
+ margin: 2px 0 10px;
1154
+ }
1155
+ .project-item__dialog-body strong {
1156
+ color: var(--color-fg);
1157
+ font-weight: 600;
1158
+ }
1159
+ .project-item__dialog-actions {
1160
+ display: flex;
1161
+ gap: 8px;
1162
+ width: 100%;
1163
+ }
1164
+ .project-item__dialog-btn {
1165
+ flex: 1;
1166
+ display: flex;
1167
+ align-items: center;
1168
+ justify-content: center;
1169
+ gap: 5px;
1170
+ padding: 9px 16px;
1171
+ border: none;
1172
+ border-radius: 8px;
1173
+ font-size: 13px;
1174
+ font-weight: 600;
1175
+ cursor: pointer;
1176
+ transition: opacity 0.1s ease, transform 0.1s ease;
1177
+ }
1178
+ .project-item__dialog-btn:hover {
1179
+ opacity: 0.88;
1180
+ transform: translateY(-1px);
1181
+ }
1182
+ .project-item__dialog-btn:active {
1183
+ transform: translateY(0);
1184
+ }
1185
+ .project-item__dialog-btn--cancel {
1186
+ background: var(--color-bg);
1187
+ color: var(--color-fg-muted);
1188
+ border: 1px solid var(--color-border, rgba(255,255,255,0.1));
1189
+ }
1190
+ .project-item__dialog-btn--delete {
1191
+ background: var(--color-danger, #e53e3e);
1192
+ color: #fff;
1193
+ }
1194
+ [data-variant=compact] .project-item__wrapper {
1195
+ border-radius: 6px;
1196
+ }
1197
+ [data-variant=compact] .project-item {
1198
+ padding: 6px 8px;
1199
+ gap: 8px;
1200
+ border-radius: 6px;
1201
+ }
1202
+ [data-variant=compact] .project-item__icon {
1203
+ width: 28px;
1204
+ height: 28px;
1205
+ border-radius: 6px;
1206
+ }
1207
+ [data-variant=compact] .project-item__title {
1208
+ font-size: 12px;
1209
+ }
1210
+ [data-variant=compact] .project-item__preview {
1211
+ font-size: 11px;
1212
+ }
1213
+ [data-variant=modern] .project-item__wrapper {
1214
+ border-radius: 10px;
1215
+ margin-bottom: 4px;
1216
+ }
1217
+ [data-variant=modern] .project-item {
1218
+ padding: 12px 16px;
1219
+ gap: 12px;
1220
+ border-radius: 10px;
1221
+ }
1222
+ [data-variant=modern] .project-item--active {
1223
+ background: var(--color-bg-active, var(--color-bg-alt));
1224
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
1225
+ }
1226
+ [data-variant=modern] .project-item__icon {
1227
+ width: 40px;
1228
+ height: 40px;
1229
+ border-radius: 10px;
1230
+ }
1231
+ [data-variant=modern] .project-item__title {
1232
+ font-size: 14px;
1233
+ }
1234
+ [data-variant=modern] .project-item__preview {
1235
+ font-size: 12.5px;
1236
+ }
1237
+
1238
+ /* src/ProjectsSidebar/ProjectsSidebar.css */
1239
+ .projects-sidebar {
1240
+ display: flex;
1241
+ flex-direction: column;
1242
+ width: 320px;
1243
+ height: 100%;
1244
+ flex-shrink: 0;
1245
+ border-right: 1px solid var(--color-border);
1246
+ background: var(--color-bg);
1247
+ user-select: none;
1248
+ overflow: hidden;
1249
+ }
1250
+ .projects-sidebar__header {
1251
+ display: flex;
1252
+ align-items: center;
1253
+ justify-content: space-between;
1254
+ padding: 12px 16px;
1255
+ flex-shrink: 0;
1256
+ }
1257
+ .projects-sidebar__title {
1258
+ font-size: 16px;
1259
+ font-weight: 600;
1260
+ color: var(--color-fg);
1261
+ margin: 0;
1262
+ }
1263
+ .projects-sidebar__new-btn {
1264
+ display: flex;
1265
+ align-items: center;
1266
+ justify-content: center;
1267
+ width: 32px;
1268
+ height: 32px;
1269
+ border: none;
1270
+ border-radius: 8px;
1271
+ background: var(--color-accent);
1272
+ color: var(--color-fg-bright);
1273
+ cursor: pointer;
1274
+ transition: opacity 0.15s ease;
1275
+ }
1276
+ .projects-sidebar__new-btn:hover {
1277
+ opacity: 0.85;
1278
+ }
1279
+ .projects-sidebar__new-btn:focus-visible {
1280
+ outline: 2px solid var(--color-accent);
1281
+ outline-offset: 2px;
1282
+ }
1283
+ .projects-sidebar__search {
1284
+ position: relative;
1285
+ padding: 0 16px 8px;
1286
+ flex-shrink: 0;
1287
+ }
1288
+ .projects-sidebar__search-icon {
1289
+ position: absolute;
1290
+ left: 26px;
1291
+ top: 0;
1292
+ height: 36px;
1293
+ display: flex;
1294
+ align-items: center;
1295
+ color: var(--color-fg-muted);
1296
+ pointer-events: none;
1297
+ }
1298
+ .projects-sidebar__search-input {
1299
+ width: 100%;
1300
+ height: 36px;
1301
+ padding: 0 12px 0 36px;
1302
+ border: 1px solid var(--color-border);
1303
+ border-radius: 18px;
1304
+ background: var(--color-bg-alt);
1305
+ color: var(--color-fg);
1306
+ font-size: 13px;
1307
+ outline: none;
1308
+ transition: border-color 0.15s ease;
1309
+ }
1310
+ .projects-sidebar__search-input::placeholder {
1311
+ color: var(--color-fg-muted);
1312
+ }
1313
+ .projects-sidebar__search-input:focus {
1314
+ border-color: var(--color-accent);
1315
+ }
1316
+ .projects-sidebar__list {
1317
+ flex: 1;
1318
+ overflow-y: auto;
1319
+ overflow-x: hidden;
1320
+ padding: 4px 8px;
1321
+ }
1322
+ .projects-sidebar__empty {
1323
+ flex: 1;
1324
+ display: flex;
1325
+ flex-direction: column;
1326
+ align-items: center;
1327
+ justify-content: center;
1328
+ gap: 8px;
1329
+ padding: 32px 16px;
1330
+ color: var(--color-fg-muted);
1331
+ }
1332
+ .projects-sidebar__empty-icon {
1333
+ opacity: 0.2;
1334
+ }
1335
+ .projects-sidebar__empty-text {
1336
+ font-size: 13px;
1337
+ }
1338
+ .projects-sidebar__loading {
1339
+ flex: 1;
1340
+ display: flex;
1341
+ align-items: center;
1342
+ justify-content: center;
1343
+ padding: 32px 0;
1344
+ }
1345
+ .projects-sidebar__spinner {
1346
+ animation: projects-sidebar-spin 0.8s linear infinite;
1347
+ color: var(--color-fg-muted);
1348
+ }
1349
+ @keyframes projects-sidebar-spin {
1350
+ from {
1351
+ transform: rotate(0deg);
1352
+ }
1353
+ to {
1354
+ transform: rotate(360deg);
1355
+ }
1356
+ }
1357
+ [data-variant=compact] .projects-sidebar {
1358
+ width: 280px;
1359
+ }
1360
+ [data-variant=compact] .projects-sidebar__header {
1361
+ padding: 8px 12px;
1362
+ }
1363
+ [data-variant=compact] .projects-sidebar__title {
1364
+ font-size: 14px;
1365
+ }
1366
+ [data-variant=compact] .projects-sidebar__new-btn {
1367
+ width: 28px;
1368
+ height: 28px;
1369
+ border-radius: 6px;
1370
+ }
1371
+ [data-variant=compact] .projects-sidebar__search {
1372
+ padding: 0 12px 6px;
1373
+ }
1374
+ [data-variant=compact] .projects-sidebar__search-icon {
1375
+ left: 22px;
1376
+ height: 32px;
1377
+ }
1378
+ [data-variant=compact] .projects-sidebar__search-input {
1379
+ height: 32px;
1380
+ font-size: 12px;
1381
+ padding: 0 10px 0 32px;
1382
+ }
1383
+ [data-variant=modern] .projects-sidebar {
1384
+ width: 360px;
1385
+ box-shadow: 1px 0 6px rgba(0, 0, 0, 0.06);
1386
+ }
1387
+ [data-variant=modern] .projects-sidebar__header {
1388
+ padding: 16px 20px;
1389
+ }
1390
+ [data-variant=modern] .projects-sidebar__title {
1391
+ font-size: 18px;
1392
+ }
1393
+ [data-variant=modern] .projects-sidebar__new-btn {
1394
+ width: 36px;
1395
+ height: 36px;
1396
+ border-radius: 10px;
1397
+ }
1398
+ [data-variant=modern] .projects-sidebar__search {
1399
+ padding: 0 20px 10px;
1400
+ }
1401
+ [data-variant=modern] .projects-sidebar__search-icon {
1402
+ left: 30px;
1403
+ height: 40px;
1404
+ }
1405
+ [data-variant=modern] .projects-sidebar__search-input {
1406
+ height: 40px;
1407
+ font-size: 14px;
1408
+ border-radius: 20px;
1409
+ padding: 0 14px 0 40px;
1410
+ }
1411
+
1412
+ /* src/ProjectDashboard/DashboardHeader.css */
1413
+ .dashboard-header {
1414
+ display: flex;
1415
+ align-items: center;
1416
+ gap: 8px;
1417
+ padding: 12px 16px;
1418
+ border-bottom: 1px solid var(--color-border);
1419
+ flex-shrink: 0;
1420
+ }
1421
+ .dashboard-header__title {
1422
+ font-size: 16px;
1423
+ font-weight: 600;
1424
+ color: var(--color-fg);
1425
+ margin: 0;
1426
+ white-space: nowrap;
1427
+ overflow: hidden;
1428
+ text-overflow: ellipsis;
1429
+ }
1430
+ .dashboard-header__spacer {
1431
+ flex: 1;
1432
+ }
1433
+ .dashboard-header__btn {
1434
+ display: flex;
1435
+ align-items: center;
1436
+ justify-content: center;
1437
+ width: 32px;
1438
+ height: 32px;
1439
+ border: none;
1440
+ border-radius: 8px;
1441
+ background: transparent;
1442
+ color: var(--color-fg-muted);
1443
+ cursor: pointer;
1444
+ flex-shrink: 0;
1445
+ transition: background 0.15s, color 0.15s;
1446
+ }
1447
+ .dashboard-header__btn:hover {
1448
+ background: var(--color-bg-active);
1449
+ color: var(--color-fg);
1450
+ }
1451
+ [data-variant=compact] .dashboard-header {
1452
+ padding: 8px 12px;
1453
+ gap: 6px;
1454
+ }
1455
+ [data-variant=compact] .dashboard-header__title {
1456
+ font-size: 14px;
1457
+ }
1458
+ [data-variant=compact] .dashboard-header__btn {
1459
+ width: 28px;
1460
+ height: 28px;
1461
+ border-radius: 6px;
1462
+ }
1463
+ [data-variant=modern] .dashboard-header {
1464
+ padding: 14px 20px;
1465
+ }
1466
+ [data-variant=modern] .dashboard-header__btn {
1467
+ border-radius: 10px;
1468
+ }
1469
+
1470
+ /* src/ProjectDashboard/DashboardSettings.css */
1471
+ .dashboard-settings {
1472
+ position: fixed;
1473
+ z-index: 9999;
1474
+ width: 260px;
1475
+ background: var(--color-bg-alt, #1e1e1e);
1476
+ border: 1px solid var(--color-border, rgba(255,255,255,0.08));
1477
+ border-radius: 10px;
1478
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.35), 0 2px 8px rgba(0, 0, 0, 0.2);
1479
+ padding: 8px;
1480
+ animation: settings-fade-in 0.12s cubic-bezier(0.34, 1.56, 0.64, 1);
1481
+ }
1482
+ @keyframes settings-fade-in {
1483
+ from {
1484
+ opacity: 0;
1485
+ transform: scale(0.92);
1486
+ }
1487
+ to {
1488
+ opacity: 1;
1489
+ transform: scale(1);
1490
+ }
1491
+ }
1492
+ .dashboard-settings__divider {
1493
+ height: 1px;
1494
+ background: var(--color-border, rgba(255,255,255,0.06));
1495
+ margin: 4px 0;
1496
+ }
1497
+ .dashboard-settings__section {
1498
+ padding: 6px 4px;
1499
+ }
1500
+ .dashboard-settings__section:last-child {
1501
+ padding-bottom: 4px;
1502
+ }
1503
+ .dashboard-settings__label {
1504
+ display: block;
1505
+ font-size: 11px;
1506
+ font-weight: 500;
1507
+ color: var(--color-fg-muted);
1508
+ text-transform: uppercase;
1509
+ letter-spacing: 0.04em;
1510
+ margin-bottom: 8px;
1511
+ }
1512
+ .dashboard-settings__chips {
1513
+ display: flex;
1514
+ gap: 4px;
1515
+ }
1516
+ .dashboard-settings__chip {
1517
+ display: flex;
1518
+ align-items: center;
1519
+ justify-content: center;
1520
+ min-width: 36px;
1521
+ height: 30px;
1522
+ padding: 0 8px;
1523
+ border: 1px solid var(--color-border);
1524
+ border-radius: 6px;
1525
+ background: transparent;
1526
+ color: var(--color-fg-muted);
1527
+ font-size: 12px;
1528
+ font-weight: 500;
1529
+ cursor: pointer;
1530
+ transition:
1531
+ background 0.15s,
1532
+ color 0.15s,
1533
+ border-color 0.15s;
1534
+ }
1535
+ .dashboard-settings__chip:hover {
1536
+ background: var(--color-bg-active);
1537
+ color: var(--color-fg);
1538
+ }
1539
+ .dashboard-settings__chip--active {
1540
+ background: var(--color-accent);
1541
+ color: var(--color-bg);
1542
+ border-color: var(--color-accent);
1543
+ }
1544
+ .dashboard-settings__widget-list {
1545
+ list-style: none;
1546
+ margin: 0;
1547
+ padding: 0;
1548
+ display: flex;
1549
+ flex-direction: column;
1550
+ gap: 4px;
1551
+ }
1552
+ .dashboard-settings__widget-row {
1553
+ display: flex;
1554
+ align-items: center;
1555
+ justify-content: space-between;
1556
+ padding: 4px 6px;
1557
+ border-radius: 7px;
1558
+ transition: background 0.1s;
1559
+ }
1560
+ .dashboard-settings__widget-row:hover {
1561
+ background: var(--color-bg-hover, rgba(255,255,255,0.06));
1562
+ }
1563
+ .dashboard-settings__widget-name {
1564
+ font-size: 13px;
1565
+ font-weight: 500;
1566
+ color: var(--color-fg);
1567
+ }
1568
+ .dashboard-settings__toggle {
1569
+ display: flex;
1570
+ align-items: center;
1571
+ justify-content: center;
1572
+ width: 26px;
1573
+ height: 26px;
1574
+ border: none;
1575
+ border-radius: 6px;
1576
+ background: transparent;
1577
+ color: var(--color-fg-muted);
1578
+ cursor: pointer;
1579
+ transition: background 0.1s, color 0.1s;
1580
+ }
1581
+ .dashboard-settings__toggle:hover {
1582
+ background: var(--color-bg-hover, rgba(255,255,255,0.06));
1583
+ color: var(--color-fg);
1584
+ }
1585
+ .dashboard-settings__toggle--on {
1586
+ color: var(--color-accent);
1587
+ }
1588
+ [data-variant=compact] .dashboard-settings {
1589
+ width: 240px;
1590
+ padding: 6px;
1591
+ border-radius: 8px;
1592
+ }
1593
+ [data-variant=compact] .dashboard-settings__chip {
1594
+ min-width: 32px;
1595
+ height: 26px;
1596
+ font-size: 11px;
1597
+ }
1598
+ [data-variant=modern] .dashboard-settings {
1599
+ border-radius: 12px;
1600
+ }
1601
+
1602
+ /* src/StatusBadge/StatusBadge.css */
1603
+ .status-badge--dot {
1604
+ display: inline-block;
1605
+ border-radius: 50%;
1606
+ flex-shrink: 0;
1607
+ }
1608
+ .status-badge--dot.status-badge--sm {
1609
+ width: 8px;
1610
+ height: 8px;
1611
+ }
1612
+ .status-badge--dot.status-badge--md {
1613
+ width: 10px;
1614
+ height: 10px;
1615
+ }
1616
+ .status-badge--pill {
1617
+ display: inline-flex;
1618
+ align-items: center;
1619
+ gap: 5px;
1620
+ border-radius: 99px;
1621
+ font-weight: 500;
1622
+ white-space: nowrap;
1623
+ flex-shrink: 0;
1624
+ }
1625
+ .status-badge--pill.status-badge--sm {
1626
+ padding: 1px 8px 1px 6px;
1627
+ font-size: 11px;
1628
+ }
1629
+ .status-badge--pill.status-badge--md {
1630
+ padding: 2px 10px 2px 8px;
1631
+ font-size: 12px;
1632
+ }
1633
+ .status-badge__dot {
1634
+ width: 6px;
1635
+ height: 6px;
1636
+ border-radius: 50%;
1637
+ flex-shrink: 0;
1638
+ }
1639
+
1640
+ /* src/PriorityIcon/PriorityIcon.css */
1641
+ .priority-icon {
1642
+ display: inline-flex;
1643
+ align-items: center;
1644
+ justify-content: center;
1645
+ flex-shrink: 0;
1646
+ line-height: 1;
1647
+ }
1648
+
1649
+ /* src/InlineEdit/InlineEdit.css */
1650
+ .inline-edit__text {
1651
+ cursor: pointer;
1652
+ border-radius: 4px;
1653
+ padding: 1px 4px;
1654
+ margin: -1px -4px;
1655
+ transition: background 0.15s;
1656
+ position: relative;
1657
+ }
1658
+ .inline-edit__text:hover {
1659
+ background: var(--color-bg-alt, #1e1e2e);
1660
+ }
1661
+ .inline-edit__text--multiline {
1662
+ white-space: pre-wrap;
1663
+ min-height: 20px;
1664
+ }
1665
+ .inline-edit--saving {
1666
+ opacity: 0.6;
1667
+ }
1668
+ .inline-edit__indicator {
1669
+ display: inline-block;
1670
+ width: 8px;
1671
+ height: 8px;
1672
+ border: 1.5px solid currentColor;
1673
+ border-top-color: transparent;
1674
+ border-radius: 50%;
1675
+ animation: inline-edit-spin 0.6s linear infinite;
1676
+ margin-left: 6px;
1677
+ vertical-align: middle;
1678
+ }
1679
+ @keyframes inline-edit-spin {
1680
+ to {
1681
+ transform: rotate(360deg);
1682
+ }
1683
+ }
1684
+ .inline-edit__placeholder {
1685
+ color: var(--color-fg-muted, #888);
1686
+ font-style: italic;
1687
+ }
1688
+ .inline-edit__input,
1689
+ .inline-edit__textarea,
1690
+ .inline-edit__select {
1691
+ width: 100%;
1692
+ background: var(--color-bg-alt, #1e1e2e);
1693
+ color: var(--color-fg, #ccc);
1694
+ border: 1px solid var(--color-accent, #7c3aed);
1695
+ border-radius: 4px;
1696
+ padding: 4px 8px;
1697
+ font: inherit;
1698
+ outline: none;
1699
+ }
1700
+ .inline-edit__input {
1701
+ font-size: inherit;
1702
+ font-weight: inherit;
1703
+ }
1704
+ .inline-edit__textarea {
1705
+ resize: none;
1706
+ min-height: 60px;
1707
+ line-height: 1.5;
1708
+ font-size: 13px;
1709
+ }
1710
+ .inline-edit__select {
1711
+ cursor: pointer;
1712
+ font-size: 13px;
1713
+ }
1714
+
1715
+ /* src/LabelsSection/LabelsSection.css */
1716
+ .labels-section__list {
1717
+ display: flex;
1718
+ flex-wrap: wrap;
1719
+ gap: 6px;
1720
+ align-items: center;
1721
+ }
1722
+ .labels-section__pill {
1723
+ font-size: 11px;
1724
+ padding: 2px 8px;
1725
+ border-radius: 10px;
1726
+ background: var(--color-bg-alt, #1e1e2e);
1727
+ border: 1px solid var(--color-border, #333);
1728
+ color: var(--color-fg, #ccc);
1729
+ display: flex;
1730
+ align-items: center;
1731
+ gap: 4px;
1732
+ }
1733
+ .labels-section__pill--removing {
1734
+ opacity: 0.5;
1735
+ }
1736
+ .labels-section__remove {
1737
+ background: none;
1738
+ border: none;
1739
+ color: var(--color-fg-muted, #888);
1740
+ cursor: pointer;
1741
+ font-size: 12px;
1742
+ padding: 0;
1743
+ line-height: 1;
1744
+ }
1745
+ .labels-section__remove:hover {
1746
+ color: #ef4444;
1747
+ }
1748
+ .labels-section__input {
1749
+ font-size: 11px;
1750
+ padding: 2px 8px;
1751
+ border-radius: 10px;
1752
+ border: 1px solid var(--color-accent, #7c3aed);
1753
+ background: transparent;
1754
+ color: var(--color-fg, #ccc);
1755
+ outline: none;
1756
+ width: 80px;
1757
+ }
1758
+ .labels-section__add {
1759
+ font-size: 11px;
1760
+ padding: 2px 8px;
1761
+ border-radius: 10px;
1762
+ border: 1px dashed var(--color-border, #333);
1763
+ background: transparent;
1764
+ color: var(--color-fg-muted, #888);
1765
+ cursor: pointer;
1766
+ }
1767
+ .labels-section__add:hover {
1768
+ border-color: var(--color-accent, #7c3aed);
1769
+ color: var(--color-accent, #7c3aed);
1770
+ }
1771
+ .labels-section__empty {
1772
+ font-size: 11px;
1773
+ color: var(--color-fg-muted, #888);
1774
+ display: flex;
1775
+ align-items: center;
1776
+ gap: 8px;
1777
+ }
1778
+
1779
+ /* src/LinksSection/LinksSection.css */
1780
+ .links-section__list {
1781
+ list-style: none;
1782
+ margin: 0;
1783
+ padding: 0;
1784
+ }
1785
+ .links-section__item {
1786
+ display: flex;
1787
+ align-items: center;
1788
+ gap: 8px;
1789
+ padding: 4px 0;
1790
+ }
1791
+ .links-section__type-badge {
1792
+ font-size: 10px;
1793
+ text-transform: uppercase;
1794
+ padding: 1px 6px;
1795
+ border-radius: 4px;
1796
+ background: var(--color-bg-alt, #1e1e2e);
1797
+ color: var(--color-fg-muted, #888);
1798
+ }
1799
+ .links-section__link {
1800
+ color: var(--color-accent, #7c3aed);
1801
+ text-decoration: none;
1802
+ font-size: 13px;
1803
+ }
1804
+ .links-section__link:hover {
1805
+ text-decoration: underline;
1806
+ }
1807
+ .links-section__form {
1808
+ display: flex;
1809
+ flex-wrap: wrap;
1810
+ gap: 6px;
1811
+ margin-top: 8px;
1812
+ }
1813
+ .links-section__form select,
1814
+ .links-section__form input {
1815
+ font-size: 12px;
1816
+ padding: 4px 8px;
1817
+ border-radius: 4px;
1818
+ border: 1px solid var(--color-border, #333);
1819
+ background: transparent;
1820
+ color: var(--color-fg, #ccc);
1821
+ }
1822
+ .links-section__save {
1823
+ font-size: 11px;
1824
+ padding: 4px 12px;
1825
+ border-radius: 4px;
1826
+ cursor: pointer;
1827
+ background: var(--color-accent, #7c3aed);
1828
+ color: white;
1829
+ border: none;
1830
+ }
1831
+ .links-section__cancel {
1832
+ font-size: 11px;
1833
+ padding: 4px 12px;
1834
+ border-radius: 4px;
1835
+ cursor: pointer;
1836
+ background: transparent;
1837
+ border: 1px solid var(--color-border, #333);
1838
+ color: var(--color-fg-muted, #888);
1839
+ }
1840
+ .links-section__add {
1841
+ font-size: 11px;
1842
+ padding: 2px 8px;
1843
+ border-radius: 10px;
1844
+ border: 1px dashed var(--color-border, #333);
1845
+ background: transparent;
1846
+ color: var(--color-fg-muted, #888);
1847
+ cursor: pointer;
1848
+ margin-top: 8px;
1849
+ }
1850
+ .links-section__add:hover {
1851
+ border-color: var(--color-accent, #7c3aed);
1852
+ color: var(--color-accent, #7c3aed);
1853
+ }
1854
+ .links-section__empty {
1855
+ font-size: 11px;
1856
+ color: var(--color-fg-muted, #888);
1857
+ display: flex;
1858
+ align-items: center;
1859
+ gap: 8px;
1860
+ }
1861
+
1862
+ /* src/TaskDetailPanel/StatusActions.css */
1863
+ .status-actions {
1864
+ display: flex;
1865
+ align-items: center;
1866
+ gap: 6px;
1867
+ margin-bottom: 16px;
1868
+ }
1869
+ .status-actions__btn {
1870
+ all: unset;
1871
+ box-sizing: border-box;
1872
+ display: inline-flex;
1873
+ align-items: center;
1874
+ gap: 4px;
1875
+ height: 28px;
1876
+ padding: 0 10px;
1877
+ border-radius: 6px;
1878
+ font-size: 12px;
1879
+ font-weight: 500;
1880
+ cursor: pointer;
1881
+ white-space: nowrap;
1882
+ transition:
1883
+ background 0.12s ease,
1884
+ color 0.12s ease,
1885
+ opacity 0.12s ease;
1886
+ }
1887
+ .status-actions__btn--start {
1888
+ background: rgba(34, 197, 94, 0.15);
1889
+ color: #22c55e;
1890
+ }
1891
+ .status-actions__btn--start:hover {
1892
+ background: rgba(34, 197, 94, 0.25);
1893
+ }
1894
+ .status-actions__btn--advance {
1895
+ background: rgba(124, 58, 237, 0.15);
1896
+ color: var(--color-accent, #7c3aed);
1897
+ }
1898
+ .status-actions__btn--advance:hover {
1899
+ background: rgba(124, 58, 237, 0.25);
1900
+ }
1901
+ .status-actions__btn--block {
1902
+ background: rgba(245, 158, 11, 0.15);
1903
+ color: #f59e0b;
1904
+ }
1905
+ .status-actions__btn--block:hover {
1906
+ background: rgba(245, 158, 11, 0.25);
1907
+ }
1908
+ .status-actions__btn--complete {
1909
+ background: rgba(34, 197, 94, 0.15);
1910
+ color: #22c55e;
1911
+ }
1912
+ .status-actions__btn--complete:hover {
1913
+ background: rgba(34, 197, 94, 0.25);
1914
+ }
1915
+ .status-actions__btn--loading {
1916
+ pointer-events: none;
1917
+ opacity: 0.6;
1918
+ }
1919
+ .status-actions__btn:disabled {
1920
+ cursor: default;
1921
+ }
1922
+ .status-actions__spinner {
1923
+ display: inline-block;
1924
+ width: 12px;
1925
+ height: 12px;
1926
+ border: 1.5px solid currentColor;
1927
+ border-top-color: transparent;
1928
+ border-radius: 50%;
1929
+ animation: status-actions-spin 0.6s linear infinite;
1930
+ }
1931
+ @keyframes status-actions-spin {
1932
+ to {
1933
+ transform: rotate(360deg);
1934
+ }
1935
+ }
1936
+
1937
+ /* src/EvidenceLog/EvidenceLog.css */
1938
+ .evidence-log {
1939
+ margin-bottom: 16px;
1940
+ }
1941
+ .evidence-log__timeline {
1942
+ position: relative;
1943
+ padding-left: 16px;
1944
+ }
1945
+ .evidence-log__entry {
1946
+ position: relative;
1947
+ padding-bottom: 16px;
1948
+ padding-left: 16px;
1949
+ }
1950
+ .evidence-log__entry:last-child {
1951
+ padding-bottom: 0;
1952
+ }
1953
+ .evidence-log__marker {
1954
+ position: absolute;
1955
+ left: -16px;
1956
+ top: 4px;
1957
+ width: 8px;
1958
+ height: 8px;
1959
+ border-radius: 50%;
1960
+ background: var(--color-accent, #7c3aed);
1961
+ z-index: 1;
1962
+ }
1963
+ .evidence-log__entry::before {
1964
+ content: "";
1965
+ position: absolute;
1966
+ left: -12px;
1967
+ top: 12px;
1968
+ bottom: 0;
1969
+ width: 2px;
1970
+ background: var(--color-border, #333);
1971
+ }
1972
+ .evidence-log__entry:last-child::before {
1973
+ display: none;
1974
+ }
1975
+ .evidence-log__content {
1976
+ min-width: 0;
1977
+ }
1978
+ .evidence-log__header {
1979
+ display: flex;
1980
+ align-items: center;
1981
+ gap: 6px;
1982
+ margin-bottom: 4px;
1983
+ }
1984
+ .evidence-log__icon {
1985
+ font-size: 12px;
1986
+ }
1987
+ .evidence-log__gate {
1988
+ font-size: 11px;
1989
+ font-weight: 600;
1990
+ text-transform: uppercase;
1991
+ letter-spacing: 0.5px;
1992
+ color: var(--color-fg, #ccc);
1993
+ }
1994
+ .evidence-log__time {
1995
+ font-size: 10px;
1996
+ color: var(--color-fg-muted, #888);
1997
+ margin-left: auto;
1998
+ }
1999
+ .evidence-log__text {
2000
+ font-size: 12px;
2001
+ color: var(--color-fg-muted, #888);
2002
+ margin: 0;
2003
+ line-height: 1.5;
2004
+ white-space: pre-wrap;
2005
+ }
2006
+ .evidence-log__toggle {
2007
+ background: none;
2008
+ border: none;
2009
+ color: var(--color-accent, #7c3aed);
2010
+ font-size: 11px;
2011
+ cursor: pointer;
2012
+ padding: 0;
2013
+ margin-top: 4px;
2014
+ }
2015
+
2016
+ /* src/StaleNotification/StaleNotification.css */
2017
+ .stale-notification {
2018
+ display: flex;
2019
+ align-items: center;
2020
+ gap: 8px;
2021
+ padding: 6px 12px;
2022
+ margin-bottom: 12px;
2023
+ background: rgba(59, 130, 246, 0.1);
2024
+ border: 1px solid rgba(59, 130, 246, 0.3);
2025
+ border-radius: 8px;
2026
+ font-size: 12px;
2027
+ color: var(--color-fg, #ccc);
2028
+ animation: stale-slide-in 0.2s ease-out;
2029
+ }
2030
+ @keyframes stale-slide-in {
2031
+ from {
2032
+ opacity: 0;
2033
+ transform: translateY(-4px);
2034
+ }
2035
+ to {
2036
+ opacity: 1;
2037
+ transform: translateY(0);
2038
+ }
2039
+ }
2040
+ .stale-notification__text {
2041
+ flex: 1;
2042
+ }
2043
+ .stale-notification__btn {
2044
+ border: none;
2045
+ background: none;
2046
+ cursor: pointer;
2047
+ font-size: 12px;
2048
+ padding: 2px 8px;
2049
+ border-radius: 4px;
2050
+ }
2051
+ .stale-notification__btn--refresh {
2052
+ background: rgba(59, 130, 246, 0.2);
2053
+ color: var(--color-accent, #3b82f6);
2054
+ }
2055
+ .stale-notification__btn--refresh:hover {
2056
+ background: rgba(59, 130, 246, 0.3);
2057
+ }
2058
+ .stale-notification__btn--dismiss {
2059
+ color: var(--color-fg-muted, #888);
2060
+ font-size: 14px;
2061
+ padding: 2px 4px;
2062
+ }
2063
+ .stale-notification__btn--dismiss:hover {
2064
+ color: var(--color-fg, #ccc);
2065
+ }
2066
+
2067
+ /* src/TaskDetailPanel/TaskDetailPanel.css */
2068
+ .task-detail__loading {
2069
+ padding: 24px 0;
2070
+ text-align: center;
2071
+ color: var(--color-fg-muted, #888);
2072
+ font-size: 13px;
2073
+ }
2074
+ .task-detail__error {
2075
+ padding: 12px;
2076
+ margin-bottom: 12px;
2077
+ background: rgba(239, 68, 68, 0.1);
2078
+ border: 1px solid rgba(239, 68, 68, 0.3);
2079
+ border-radius: 6px;
2080
+ color: #ef4444;
2081
+ font-size: 13px;
2082
+ }
2083
+ .task-detail__status-row {
2084
+ display: flex;
2085
+ align-items: center;
2086
+ gap: 8px;
2087
+ margin-bottom: 16px;
2088
+ }
2089
+ .task-detail__section {
2090
+ margin-bottom: 16px;
2091
+ }
2092
+ .task-detail__section-header {
2093
+ display: flex;
2094
+ align-items: center;
2095
+ justify-content: space-between;
2096
+ margin-bottom: 8px;
2097
+ }
2098
+ .task-detail__section-title {
2099
+ font-size: 11px;
2100
+ font-weight: 600;
2101
+ text-transform: uppercase;
2102
+ letter-spacing: 0.5px;
2103
+ color: var(--color-fg-muted, #888);
2104
+ margin: 0;
2105
+ }
2106
+ .task-detail__edit-btn {
2107
+ all: unset;
2108
+ box-sizing: border-box;
2109
+ cursor: pointer;
2110
+ font-size: 11px;
2111
+ font-weight: 500;
2112
+ color: var(--color-accent, #7c3aed);
2113
+ padding: 2px 8px;
2114
+ border-radius: 4px;
2115
+ transition: background 0.15s ease;
2116
+ }
2117
+ .task-detail__edit-btn:hover {
2118
+ background: var(--color-bg-alt, #1e1e2e);
2119
+ }
2120
+ .task-detail__markdown {
2121
+ font-size: 13px;
2122
+ line-height: 1.6;
2123
+ color: var(--color-fg, #ccc);
2124
+ }
2125
+ .task-detail__empty {
2126
+ color: var(--color-fg-muted, #888);
2127
+ font-size: 13px;
2128
+ font-style: italic;
2129
+ cursor: pointer;
2130
+ padding: 8px;
2131
+ border-radius: 4px;
2132
+ transition: background 0.15s ease;
2133
+ }
2134
+ .task-detail__empty:hover {
2135
+ background: var(--color-bg-alt, #1e1e2e);
2136
+ }
2137
+ .task-detail__description {
2138
+ margin: 0;
2139
+ white-space: pre-wrap;
2140
+ }
2141
+ .task-detail__labels {
2142
+ display: flex;
2143
+ flex-wrap: wrap;
2144
+ gap: 6px;
2145
+ }
2146
+ .task-detail__label {
2147
+ font-size: 11px;
2148
+ padding: 2px 8px;
2149
+ border-radius: 10px;
2150
+ background: var(--color-bg-alt, #1e1e2e);
2151
+ border: 1px solid var(--color-border, #333);
2152
+ color: var(--color-fg, #ccc);
2153
+ }
2154
+ .task-detail__deps,
2155
+ .task-detail__links {
2156
+ list-style: none;
2157
+ padding: 0;
2158
+ margin: 0;
2159
+ }
2160
+ .task-detail__dep {
2161
+ font-size: 12px;
2162
+ font-family: var(--font-family-mono, monospace);
2163
+ padding: 4px 0;
2164
+ color: var(--color-fg-muted, #888);
2165
+ }
2166
+ .task-detail__link {
2167
+ display: flex;
2168
+ align-items: center;
2169
+ gap: 8px;
2170
+ padding: 4px 0;
2171
+ }
2172
+ .task-detail__link a {
2173
+ color: var(--color-accent, #7c3aed);
2174
+ text-decoration: none;
2175
+ font-size: 13px;
2176
+ }
2177
+ .task-detail__link a:hover {
2178
+ text-decoration: underline;
2179
+ }
2180
+ .task-detail__link-type {
2181
+ font-size: 10px;
2182
+ text-transform: uppercase;
2183
+ color: var(--color-fg-muted, #888);
2184
+ background: var(--color-bg-alt, #1e1e2e);
2185
+ padding: 1px 6px;
2186
+ border-radius: 4px;
2187
+ }
2188
+ .task-detail__timestamps {
2189
+ display: flex;
2190
+ flex-direction: column;
2191
+ gap: 4px;
2192
+ padding-top: 12px;
2193
+ border-top: 1px solid var(--color-border, #333);
2194
+ }
2195
+ .task-detail__timestamp {
2196
+ font-size: 11px;
2197
+ color: var(--color-fg-muted, #888);
2198
+ }
2199
+ .task-detail__editable-title {
2200
+ font-size: 16px;
2201
+ font-weight: 600;
2202
+ line-height: 1.3;
2203
+ }
2204
+
2205
+ /* src/widgets/BacklogTreeHeader.css */
2206
+ .backlog-header {
2207
+ display: flex;
2208
+ flex-direction: column;
2209
+ gap: 8px;
2210
+ padding: 8px 0;
2211
+ border-bottom: 1px solid var(--color-border, #2a2a3a);
2212
+ margin-bottom: 4px;
2213
+ }
2214
+ .backlog-header__top {
2215
+ display: flex;
2216
+ align-items: center;
2217
+ gap: 8px;
2218
+ }
2219
+ .backlog-header__search {
2220
+ flex: 1;
2221
+ padding: 7px 12px;
2222
+ border-radius: 8px;
2223
+ border: 1px solid var(--color-border, #2a2a3a);
2224
+ background: var(--color-bg, #141422);
2225
+ color: var(--color-fg, #ccc);
2226
+ font-size: 12px;
2227
+ outline: none;
2228
+ transition: border-color 0.15s, box-shadow 0.15s;
2229
+ }
2230
+ .backlog-header__search::placeholder {
2231
+ color: var(--color-fg-muted, #888);
2232
+ }
2233
+ .backlog-header__search:focus {
2234
+ border-color: var(--color-accent, #7c3aed);
2235
+ box-shadow: 0 0 0 2px rgba(124, 58, 237, 0.2);
2236
+ }
2237
+ .backlog-header__count {
2238
+ font-size: 11px;
2239
+ color: var(--color-fg-muted, #888);
2240
+ white-space: nowrap;
2241
+ font-weight: 600;
2242
+ }
2243
+ .backlog-header__filters {
2244
+ display: flex;
2245
+ gap: 4px;
2246
+ flex-wrap: wrap;
2247
+ }
2248
+ .backlog-header__filter {
2249
+ all: unset;
2250
+ box-sizing: border-box;
2251
+ padding: 4px 12px;
2252
+ border-radius: 14px;
2253
+ font-size: 11px;
2254
+ font-weight: 500;
2255
+ cursor: pointer;
2256
+ color: var(--color-fg-muted, #888);
2257
+ background: var(--color-bg-alt, #1e1e2e);
2258
+ border: 1px solid var(--color-border, #2a2a3a);
2259
+ transition: all 0.15s;
2260
+ }
2261
+ .backlog-header__filter:hover {
2262
+ color: var(--color-fg, #ccc);
2263
+ background: var(--color-bg-active, #2a2a3a);
2264
+ border-color: var(--color-fg-muted, #555);
2265
+ }
2266
+ .backlog-header__filter--active {
2267
+ color: #fff;
2268
+ background: var(--color-accent, #7c3aed);
2269
+ border-color: var(--color-accent, #7c3aed);
2270
+ }
2271
+ [data-variant=compact] .backlog-header {
2272
+ gap: 6px;
2273
+ padding: 6px 0;
2274
+ }
2275
+ [data-variant=compact] .backlog-header__search {
2276
+ padding: 5px 10px;
2277
+ font-size: 11px;
2278
+ border-radius: 6px;
2279
+ }
2280
+ [data-variant=compact] .backlog-header__filter {
2281
+ padding: 3px 10px;
2282
+ font-size: 10px;
2283
+ border-radius: 12px;
2284
+ }
2285
+ [data-variant=modern] .backlog-header__search {
2286
+ border-radius: 10px;
2287
+ }
2288
+ [data-variant=modern] .backlog-header__filter {
2289
+ border-radius: 16px;
2290
+ }
2291
+
2292
+ /* src/widgets/BacklogTreeWidget.css */
2293
+ .backlog-tree {
2294
+ display: flex;
2295
+ flex-direction: column;
2296
+ gap: 1px;
2297
+ flex: 1;
2298
+ overflow-y: auto;
2299
+ min-height: 0;
2300
+ }
2301
+ .backlog-tree__node {
2302
+ all: unset;
2303
+ box-sizing: border-box;
2304
+ display: flex;
2305
+ align-items: center;
2306
+ gap: 8px;
2307
+ padding: 7px 10px;
2308
+ width: 100%;
2309
+ cursor: pointer;
2310
+ font-size: 13px;
2311
+ color: var(--color-fg, #ccc);
2312
+ border-radius: 6px;
2313
+ transition: background 0.12s ease;
2314
+ text-align: left;
2315
+ }
2316
+ .backlog-tree__node:hover {
2317
+ background: var(--color-bg-active, #2a2a3a);
2318
+ }
2319
+ .backlog-tree__node--selected {
2320
+ background: var(--color-bg-active, #2a2a3a);
2321
+ box-shadow: inset 2px 0 0 var(--color-accent, #7c3aed);
2322
+ }
2323
+ .backlog-tree__expand {
2324
+ display: inline-flex;
2325
+ align-items: center;
2326
+ justify-content: center;
2327
+ width: 16px;
2328
+ height: 16px;
2329
+ flex-shrink: 0;
2330
+ font-size: 10px;
2331
+ color: var(--color-fg-muted, #888);
2332
+ user-select: none;
2333
+ }
2334
+ .backlog-tree__expand--open {
2335
+ }
2336
+ .backlog-tree__expand--hidden {
2337
+ visibility: hidden;
2338
+ }
2339
+ .backlog-tree__type-icon {
2340
+ font-size: 12px;
2341
+ flex-shrink: 0;
2342
+ }
2343
+ .backlog-tree__title {
2344
+ flex: 1;
2345
+ overflow: hidden;
2346
+ text-overflow: ellipsis;
2347
+ white-space: nowrap;
2348
+ min-width: 0;
2349
+ }
2350
+ .backlog-tree__status {
2351
+ font-size: 10px;
2352
+ font-weight: 600;
2353
+ padding: 2px 8px;
2354
+ border-radius: 10px;
2355
+ background: rgba(124, 58, 237, 0.15);
2356
+ color: var(--color-accent, #a78bfa);
2357
+ flex-shrink: 0;
2358
+ white-space: nowrap;
2359
+ }
2360
+ .backlog-tree__priority-dot {
2361
+ width: 6px;
2362
+ height: 6px;
2363
+ border-radius: 50%;
2364
+ flex-shrink: 0;
2365
+ }
2366
+ .backlog-tree__children {
2367
+ display: flex;
2368
+ flex-direction: column;
2369
+ gap: 1px;
2370
+ }
2371
+ .backlog-tree__empty {
2372
+ padding: 24px;
2373
+ text-align: center;
2374
+ color: var(--color-fg-muted, #888);
2375
+ font-size: 13px;
2376
+ }
2377
+ [data-variant=compact] .backlog-tree__node {
2378
+ padding: 4px 8px;
2379
+ font-size: 12px;
2380
+ gap: 4px;
2381
+ }
2382
+ [data-variant=compact] .backlog-tree__status {
2383
+ font-size: 9px;
2384
+ padding: 1px 6px;
2385
+ }
2386
+ [data-variant=modern] .backlog-tree__node {
2387
+ border-radius: 8px;
2388
+ padding: 8px 12px;
2389
+ }
2390
+ [data-variant=modern] .backlog-tree__node:hover {
2391
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
2392
+ }
2393
+ [data-variant=modern] .backlog-tree__node--selected {
2394
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1), inset 2px 0 0 var(--color-accent, #7c3aed);
2395
+ }
2396
+ .backlog-tree-wrapper {
2397
+ display: flex;
2398
+ flex-direction: column;
2399
+ height: 100%;
2400
+ }
2401
+ .backlog-tree__task-count {
2402
+ font-size: 10px;
2403
+ color: var(--color-fg-muted, #888);
2404
+ font-weight: 600;
2405
+ flex-shrink: 0;
2406
+ white-space: nowrap;
2407
+ }
2408
+ .backlog-tree__mini-bar {
2409
+ width: 40px;
2410
+ height: 4px;
2411
+ border-radius: 2px;
2412
+ background: var(--color-bg-alt, #1e1e2e);
2413
+ flex-shrink: 0;
2414
+ overflow: hidden;
2415
+ }
2416
+ .backlog-tree__mini-bar-fill {
2417
+ display: block;
2418
+ height: 100%;
2419
+ border-radius: 2px;
2420
+ background: var(--color-accent, #7c3aed);
2421
+ transition: width 0.3s ease;
2422
+ }
2423
+ .backlog-tree__labels {
2424
+ display: inline-flex;
2425
+ gap: 3px;
2426
+ flex-shrink: 0;
2427
+ }
2428
+ .backlog-tree__label {
2429
+ font-size: 9px;
2430
+ font-weight: 600;
2431
+ padding: 1px 6px;
2432
+ border-radius: 8px;
2433
+ color: #fff;
2434
+ white-space: nowrap;
2435
+ opacity: 0.85;
2436
+ }
2437
+ .backlog-tree__estimate {
2438
+ font-size: 10px;
2439
+ font-weight: 700;
2440
+ color: var(--color-accent, #7c3aed);
2441
+ flex-shrink: 0;
2442
+ white-space: nowrap;
2443
+ }
2444
+ [data-variant=compact] .backlog-tree__mini-bar {
2445
+ width: 30px;
2446
+ height: 3px;
2447
+ }
2448
+ [data-variant=compact] .backlog-tree__task-count {
2449
+ font-size: 9px;
2450
+ }
2451
+ [data-variant=compact] .backlog-tree__label {
2452
+ font-size: 8px;
2453
+ padding: 1px 5px;
2454
+ }
2455
+ [data-variant=compact] .backlog-tree__estimate {
2456
+ font-size: 9px;
2457
+ }
2458
+
2459
+ /* src/widgets/TaskDistributionWidget.css */
2460
+ .task-distribution {
2461
+ display: flex;
2462
+ flex-direction: column;
2463
+ gap: 12px;
2464
+ }
2465
+ .task-distribution__tabs {
2466
+ display: flex;
2467
+ gap: 4px;
2468
+ }
2469
+ .task-distribution__tab {
2470
+ all: unset;
2471
+ box-sizing: border-box;
2472
+ padding: 6px 12px;
2473
+ font-size: 12px;
2474
+ font-weight: 500;
2475
+ color: var(--color-fg-muted, #888);
2476
+ border-radius: 6px;
2477
+ cursor: pointer;
2478
+ transition: all 0.15s ease;
2479
+ }
2480
+ .task-distribution__tab:hover {
2481
+ background: var(--color-bg-active, #2a2a3a);
2482
+ color: var(--color-fg, #ccc);
2483
+ }
2484
+ .task-distribution__tab--active {
2485
+ background: var(--color-accent, #7c3aed);
2486
+ color: #fff;
2487
+ }
2488
+ .task-distribution__chart {
2489
+ display: flex;
2490
+ flex-direction: column;
2491
+ gap: 8px;
2492
+ }
2493
+ .task-distribution__row {
2494
+ display: flex;
2495
+ align-items: center;
2496
+ gap: 8px;
2497
+ }
2498
+ .task-distribution__label {
2499
+ width: 80px;
2500
+ font-size: 12px;
2501
+ color: var(--color-fg-muted, #888);
2502
+ text-align: right;
2503
+ overflow: hidden;
2504
+ text-overflow: ellipsis;
2505
+ white-space: nowrap;
2506
+ flex-shrink: 0;
2507
+ }
2508
+ .task-distribution__bar-track {
2509
+ flex: 1;
2510
+ height: 18px;
2511
+ background: var(--color-bg-alt, #1e1e2e);
2512
+ border-radius: 4px;
2513
+ overflow: hidden;
2514
+ }
2515
+ .task-distribution__bar-fill {
2516
+ height: 100%;
2517
+ border-radius: 4px;
2518
+ transition: width 0.3s ease;
2519
+ min-width: 0;
2520
+ }
2521
+ .task-distribution__value {
2522
+ width: 32px;
2523
+ font-size: 12px;
2524
+ font-weight: 600;
2525
+ color: var(--color-fg, #ccc);
2526
+ text-align: right;
2527
+ flex-shrink: 0;
2528
+ }
2529
+ [data-variant=compact] .task-distribution__tab {
2530
+ padding: 4px 8px;
2531
+ font-size: 11px;
2532
+ }
2533
+ [data-variant=compact] .task-distribution__label {
2534
+ width: 60px;
2535
+ font-size: 11px;
2536
+ }
2537
+ [data-variant=compact] .task-distribution__bar-track {
2538
+ height: 14px;
2539
+ }
2540
+ [data-variant=modern] .task-distribution__tab {
2541
+ border-radius: 10px;
2542
+ }
2543
+ [data-variant=modern] .task-distribution__bar-track {
2544
+ border-radius: 8px;
2545
+ height: 22px;
2546
+ }
2547
+ [data-variant=modern] .task-distribution__bar-fill {
2548
+ border-radius: 8px;
2549
+ }
2550
+
2551
+ /* src/widgets/RecentActivityWidget.css */
2552
+ .recent-activity {
2553
+ display: flex;
2554
+ flex-direction: column;
2555
+ gap: 2px;
2556
+ max-height: 320px;
2557
+ overflow-y: auto;
2558
+ }
2559
+ .recent-activity__item {
2560
+ all: unset;
2561
+ box-sizing: border-box;
2562
+ display: flex;
2563
+ align-items: center;
2564
+ gap: 8px;
2565
+ padding: 8px 10px;
2566
+ width: 100%;
2567
+ cursor: pointer;
2568
+ border-radius: 4px;
2569
+ transition: background 0.12s ease;
2570
+ font-size: 13px;
2571
+ color: var(--color-fg, #ccc);
2572
+ text-align: left;
2573
+ }
2574
+ .recent-activity__item:hover {
2575
+ background: var(--color-bg-active, #2a2a3a);
2576
+ }
2577
+ .recent-activity__icon {
2578
+ font-size: 14px;
2579
+ flex-shrink: 0;
2580
+ width: 20px;
2581
+ text-align: center;
2582
+ }
2583
+ .recent-activity__body {
2584
+ flex: 1;
2585
+ min-width: 0;
2586
+ display: flex;
2587
+ flex-direction: column;
2588
+ gap: 2px;
2589
+ }
2590
+ .recent-activity__title {
2591
+ overflow: hidden;
2592
+ text-overflow: ellipsis;
2593
+ white-space: nowrap;
2594
+ }
2595
+ .recent-activity__detail {
2596
+ font-size: 11px;
2597
+ color: var(--color-fg-muted, #888);
2598
+ overflow: hidden;
2599
+ text-overflow: ellipsis;
2600
+ white-space: nowrap;
2601
+ }
2602
+ .recent-activity__meta {
2603
+ display: flex;
2604
+ align-items: center;
2605
+ gap: 6px;
2606
+ flex-shrink: 0;
2607
+ }
2608
+ .recent-activity__time {
2609
+ font-size: 11px;
2610
+ color: var(--color-fg-muted, #888);
2611
+ white-space: nowrap;
2612
+ }
2613
+ .recent-activity__provider {
2614
+ font-size: 9px;
2615
+ font-weight: 600;
2616
+ padding: 1px 6px;
2617
+ border-radius: 6px;
2618
+ background: var(--color-bg-alt, #1e1e2e);
2619
+ color: var(--color-fg-muted, #888);
2620
+ text-transform: uppercase;
2621
+ letter-spacing: 0.5px;
2622
+ }
2623
+ .recent-activity__empty {
2624
+ padding: 24px;
2625
+ text-align: center;
2626
+ color: var(--color-fg-muted, #888);
2627
+ font-size: 13px;
2628
+ }
2629
+ [data-variant=compact] .recent-activity__item {
2630
+ padding: 5px 8px;
2631
+ font-size: 12px;
2632
+ gap: 6px;
2633
+ }
2634
+ [data-variant=compact] .recent-activity__icon {
2635
+ font-size: 12px;
2636
+ width: 16px;
2637
+ }
2638
+ [data-variant=modern] .recent-activity__item {
2639
+ border-radius: 8px;
2640
+ padding: 10px 12px;
2641
+ }
2642
+ [data-variant=modern] .recent-activity__item:hover {
2643
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
2644
+ }
2645
+
2646
+ /* src/widgets/SprintProgressWidget.css */
2647
+ .sprint-progress {
2648
+ display: flex;
2649
+ flex-direction: column;
2650
+ gap: 12px;
2651
+ }
2652
+ .sprint-progress__header {
2653
+ display: flex;
2654
+ align-items: baseline;
2655
+ justify-content: space-between;
2656
+ gap: 8px;
2657
+ }
2658
+ .sprint-progress__name {
2659
+ font-size: 14px;
2660
+ font-weight: 600;
2661
+ color: var(--color-fg, #ccc);
2662
+ }
2663
+ .sprint-progress__dates {
2664
+ font-size: 11px;
2665
+ color: var(--color-fg-muted, #888);
2666
+ }
2667
+ .sprint-progress__days {
2668
+ font-size: 12px;
2669
+ font-weight: 600;
2670
+ color: var(--color-accent, #7c3aed);
2671
+ text-align: right;
2672
+ }
2673
+ .sprint-progress__bars {
2674
+ display: flex;
2675
+ flex-direction: column;
2676
+ gap: 10px;
2677
+ }
2678
+ .sprint-progress__metric {
2679
+ display: flex;
2680
+ flex-direction: column;
2681
+ gap: 4px;
2682
+ }
2683
+ .sprint-progress__metric-header {
2684
+ display: flex;
2685
+ justify-content: space-between;
2686
+ font-size: 12px;
2687
+ color: var(--color-fg-muted, #888);
2688
+ }
2689
+ .sprint-progress__metric-value {
2690
+ font-weight: 600;
2691
+ color: var(--color-fg, #ccc);
2692
+ }
2693
+ .sprint-progress__bar-track {
2694
+ width: 100%;
2695
+ height: 8px;
2696
+ border-radius: 4px;
2697
+ background: var(--color-bg-alt, #1e1e2e);
2698
+ overflow: hidden;
2699
+ }
2700
+ .sprint-progress__bar-fill {
2701
+ height: 100%;
2702
+ border-radius: 4px;
2703
+ transition: width 0.3s ease;
2704
+ min-width: 0;
2705
+ }
2706
+ .sprint-progress__bar-fill--points {
2707
+ background: var(--color-accent, #7c3aed);
2708
+ }
2709
+ .sprint-progress__bar-fill--tasks {
2710
+ background: #22c55e;
2711
+ }
2712
+ .sprint-progress__empty {
2713
+ padding: 24px;
2714
+ text-align: center;
2715
+ color: var(--color-fg-muted, #888);
2716
+ font-size: 13px;
2717
+ }
2718
+ [data-variant=compact] .sprint-progress {
2719
+ gap: 8px;
2720
+ }
2721
+ [data-variant=compact] .sprint-progress__name {
2722
+ font-size: 13px;
2723
+ }
2724
+ [data-variant=compact] .sprint-progress__bar-track {
2725
+ height: 6px;
2726
+ }
2727
+ [data-variant=modern] .sprint-progress__bar-track {
2728
+ height: 10px;
2729
+ border-radius: 6px;
2730
+ }
2731
+ [data-variant=modern] .sprint-progress__bar-fill {
2732
+ border-radius: 6px;
2733
+ }
2734
+ [data-variant=modern] .sprint-progress__bar-fill--points {
2735
+ background:
2736
+ linear-gradient(
2737
+ 90deg,
2738
+ var(--color-accent, #7c3aed),
2739
+ var(--color-accent-light, #a78bfa));
2740
+ }
2741
+ [data-variant=modern] .sprint-progress__bar-fill--tasks {
2742
+ background:
2743
+ linear-gradient(
2744
+ 90deg,
2745
+ #22c55e,
2746
+ #4ade80);
2747
+ }
2748
+
2749
+ /* src/widgets/TeamWorkloadWidget.css */
2750
+ .team-workload {
2751
+ display: flex;
2752
+ flex-direction: column;
2753
+ gap: 10px;
2754
+ }
2755
+ .team-workload__row {
2756
+ all: unset;
2757
+ box-sizing: border-box;
2758
+ display: flex;
2759
+ align-items: center;
2760
+ gap: 10px;
2761
+ width: 100%;
2762
+ cursor: pointer;
2763
+ padding: 4px 0;
2764
+ transition: opacity 0.12s ease;
2765
+ }
2766
+ .team-workload__row:hover {
2767
+ opacity: 0.85;
2768
+ }
2769
+ .team-workload__avatar {
2770
+ width: 28px;
2771
+ height: 28px;
2772
+ border-radius: 50%;
2773
+ display: flex;
2774
+ align-items: center;
2775
+ justify-content: center;
2776
+ font-size: 11px;
2777
+ font-weight: 700;
2778
+ color: #fff;
2779
+ background: var(--color-accent, #7c3aed);
2780
+ flex-shrink: 0;
2781
+ overflow: hidden;
2782
+ }
2783
+ .team-workload__avatar img {
2784
+ width: 100%;
2785
+ height: 100%;
2786
+ object-fit: cover;
2787
+ }
2788
+ .team-workload__info {
2789
+ display: flex;
2790
+ flex-direction: column;
2791
+ gap: 3px;
2792
+ flex: 1;
2793
+ min-width: 0;
2794
+ }
2795
+ .team-workload__name {
2796
+ font-size: 12px;
2797
+ font-weight: 500;
2798
+ color: var(--color-fg, #ccc);
2799
+ overflow: hidden;
2800
+ text-overflow: ellipsis;
2801
+ white-space: nowrap;
2802
+ }
2803
+ .team-workload__bar-track {
2804
+ width: 100%;
2805
+ height: 14px;
2806
+ border-radius: 4px;
2807
+ background: var(--color-bg-alt, #1e1e2e);
2808
+ overflow: hidden;
2809
+ display: flex;
2810
+ }
2811
+ .team-workload__segment {
2812
+ height: 100%;
2813
+ transition: width 0.3s ease;
2814
+ min-width: 0;
2815
+ }
2816
+ .team-workload__segment--completed {
2817
+ background: #22c55e;
2818
+ }
2819
+ .team-workload__segment--in-progress {
2820
+ background: #3b82f6;
2821
+ }
2822
+ .team-workload__segment--assigned {
2823
+ background: var(--color-fg-muted, #888);
2824
+ opacity: 0.4;
2825
+ }
2826
+ .team-workload__count {
2827
+ font-size: 11px;
2828
+ font-weight: 600;
2829
+ color: var(--color-fg-muted, #888);
2830
+ flex-shrink: 0;
2831
+ min-width: 24px;
2832
+ text-align: right;
2833
+ }
2834
+ .team-workload__legend {
2835
+ display: flex;
2836
+ gap: 12px;
2837
+ justify-content: flex-end;
2838
+ font-size: 10px;
2839
+ color: var(--color-fg-muted, #888);
2840
+ }
2841
+ .team-workload__legend-item {
2842
+ display: flex;
2843
+ align-items: center;
2844
+ gap: 4px;
2845
+ }
2846
+ .team-workload__legend-dot {
2847
+ width: 8px;
2848
+ height: 8px;
2849
+ border-radius: 2px;
2850
+ flex-shrink: 0;
2851
+ }
2852
+ .team-workload__empty {
2853
+ padding: 24px;
2854
+ text-align: center;
2855
+ color: var(--color-fg-muted, #888);
2856
+ font-size: 13px;
2857
+ }
2858
+ [data-variant=compact] .team-workload__avatar {
2859
+ width: 22px;
2860
+ height: 22px;
2861
+ font-size: 9px;
2862
+ }
2863
+ [data-variant=compact] .team-workload__bar-track {
2864
+ height: 10px;
2865
+ }
2866
+ [data-variant=compact] .team-workload__name {
2867
+ font-size: 11px;
2868
+ }
2869
+ [data-variant=modern] .team-workload__bar-track {
2870
+ height: 18px;
2871
+ border-radius: 6px;
2872
+ }
2873
+ [data-variant=modern] .team-workload__avatar {
2874
+ border-radius: 8px;
2875
+ }
2876
+
2877
+ /* src/widgets/ProgressDistributionWidget.css */
2878
+ .progress-dist {
2879
+ display: flex;
2880
+ flex-direction: column;
2881
+ align-items: center;
2882
+ gap: 16px;
2883
+ padding: 8px 0;
2884
+ }
2885
+ .progress-dist__title {
2886
+ display: none;
2887
+ }
2888
+ .progress-dist__chart {
2889
+ margin: 0 auto;
2890
+ }
2891
+ .progress-dist__legend {
2892
+ width: 100%;
2893
+ display: flex;
2894
+ flex-direction: column;
2895
+ gap: 6px;
2896
+ }
2897
+ .progress-dist__legend-row {
2898
+ display: flex;
2899
+ align-items: center;
2900
+ gap: 8px;
2901
+ padding: 4px 0;
2902
+ font-size: 13px;
2903
+ }
2904
+ .progress-dist__legend-dot {
2905
+ width: 10px;
2906
+ height: 10px;
2907
+ border-radius: 50%;
2908
+ flex-shrink: 0;
2909
+ }
2910
+ .progress-dist__legend-label {
2911
+ flex: 1;
2912
+ color: var(--color-fg-muted, #94a3b8);
2913
+ }
2914
+ .progress-dist__legend-value {
2915
+ font-weight: 700;
2916
+ color: var(--color-fg, #e2e8f0);
2917
+ min-width: 30px;
2918
+ text-align: right;
2919
+ }
2920
+ .progress-dist__empty {
2921
+ text-align: center;
2922
+ color: var(--color-fg-muted);
2923
+ padding: 24px;
2924
+ }
2925
+
2926
+ /* src/widgets/ActiveTasksWidget.css */
2927
+ .active-tasks {
2928
+ display: flex;
2929
+ flex-direction: column;
2930
+ gap: 4px;
2931
+ }
2932
+ .active-tasks__empty {
2933
+ display: flex;
2934
+ flex-direction: column;
2935
+ align-items: center;
2936
+ justify-content: center;
2937
+ padding: 40px 16px;
2938
+ text-align: center;
2939
+ gap: 12px;
2940
+ min-height: 140px;
2941
+ }
2942
+ .active-tasks__empty-icon {
2943
+ width: 56px;
2944
+ height: 56px;
2945
+ opacity: 0.6;
2946
+ }
2947
+ .active-tasks__empty h3 {
2948
+ font-size: 16px;
2949
+ font-weight: 700;
2950
+ color: var(--color-fg, #e2e8f0);
2951
+ margin: 0;
2952
+ }
2953
+ .active-tasks__empty p {
2954
+ font-size: 13px;
2955
+ color: var(--color-fg-muted, #64748b);
2956
+ margin: 0;
2957
+ max-width: 240px;
2958
+ line-height: 1.5;
2959
+ }
2960
+ .active-tasks__count {
2961
+ font-size: 12px;
2962
+ color: var(--color-fg-muted, #888);
2963
+ margin-bottom: 8px;
2964
+ }
2965
+ .active-tasks__list {
2966
+ display: flex;
2967
+ flex-direction: column;
2968
+ gap: 2px;
2969
+ }
2970
+ .active-tasks__item {
2971
+ all: unset;
2972
+ box-sizing: border-box;
2973
+ display: flex;
2974
+ align-items: flex-start;
2975
+ gap: 10px;
2976
+ padding: 10px;
2977
+ border-radius: 8px;
2978
+ cursor: pointer;
2979
+ width: 100%;
2980
+ text-align: left;
2981
+ transition: background 0.15s ease;
2982
+ border: 1px solid transparent;
2983
+ }
2984
+ .active-tasks__item:hover {
2985
+ background: var(--color-bg-active, #2a2a3e);
2986
+ border-color: var(--color-border, #333);
2987
+ }
2988
+ .active-tasks__priority-dot {
2989
+ width: 8px;
2990
+ height: 8px;
2991
+ border-radius: 50%;
2992
+ flex-shrink: 0;
2993
+ margin-top: 5px;
2994
+ }
2995
+ .active-tasks__info {
2996
+ flex: 1;
2997
+ min-width: 0;
2998
+ display: flex;
2999
+ flex-direction: column;
3000
+ gap: 2px;
3001
+ }
3002
+ .active-tasks__title {
3003
+ font-size: 13px;
3004
+ color: var(--color-fg, #e2e8f0);
3005
+ white-space: nowrap;
3006
+ overflow: hidden;
3007
+ text-overflow: ellipsis;
3008
+ }
3009
+ .active-tasks__breadcrumb {
3010
+ font-size: 11px;
3011
+ color: var(--color-fg-muted, #888);
3012
+ white-space: nowrap;
3013
+ overflow: hidden;
3014
+ text-overflow: ellipsis;
3015
+ }
3016
+ .active-tasks__badge {
3017
+ font-size: 10px;
3018
+ font-weight: 600;
3019
+ padding: 2px 8px;
3020
+ border-radius: 10px;
3021
+ background: var(--color-accent, #7c3aed);
3022
+ color: #fff;
3023
+ white-space: nowrap;
3024
+ flex-shrink: 0;
3025
+ opacity: 0.8;
3026
+ }
3027
+ [data-variant=compact] .active-tasks__item {
3028
+ padding: 6px 8px;
3029
+ gap: 8px;
3030
+ border-radius: 6px;
3031
+ }
3032
+ [data-variant=compact] .active-tasks__title {
3033
+ font-size: 12px;
3034
+ }
3035
+ [data-variant=compact] .active-tasks__priority-dot {
3036
+ width: 6px;
3037
+ height: 6px;
3038
+ margin-top: 4px;
3039
+ }
3040
+ [data-variant=compact] .active-tasks__badge {
3041
+ font-size: 9px;
3042
+ padding: 2px 6px;
3043
+ }
3044
+ [data-variant=modern] .active-tasks__item {
3045
+ border-radius: 10px;
3046
+ padding: 12px;
3047
+ }
3048
+ [data-variant=modern] .active-tasks__item:hover {
3049
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
3050
+ }
3051
+
3052
+ /* src/widgets/SessionMetricsWidget.css */
3053
+ .session-metrics {
3054
+ display: flex;
3055
+ gap: 8px;
3056
+ flex-wrap: wrap;
3057
+ }
3058
+ .session-metrics__card {
3059
+ background: var(--color-bg-alt, #1e1e2e);
3060
+ border: none;
3061
+ border-top: 3px solid;
3062
+ border-radius: 6px;
3063
+ padding: 10px 14px;
3064
+ text-align: left;
3065
+ flex: 1 1 100px;
3066
+ min-width: 90px;
3067
+ }
3068
+ .session-metrics__label {
3069
+ display: block;
3070
+ font-size: 10px;
3071
+ color: var(--color-fg-muted, #888);
3072
+ text-transform: uppercase;
3073
+ letter-spacing: 0.5px;
3074
+ white-space: nowrap;
3075
+ }
3076
+ .session-metrics__value {
3077
+ display: block;
3078
+ font-size: 22px;
3079
+ font-weight: 700;
3080
+ color: var(--color-fg, #e2e8f0);
3081
+ margin-top: 2px;
3082
+ }
3083
+ .session-metrics__empty {
3084
+ text-align: center;
3085
+ color: var(--color-fg-muted, #888);
3086
+ padding: 16px;
3087
+ }
3088
+ [data-variant=compact] .session-metrics__value {
3089
+ font-size: 18px;
3090
+ }
3091
+ [data-variant=compact] .session-metrics__card {
3092
+ padding: 8px 10px;
3093
+ min-width: 70px;
3094
+ }
3095
+ [data-variant=compact] .session-metrics__label {
3096
+ font-size: 9px;
3097
+ }
3098
+ [data-variant=modern] .session-metrics__card {
3099
+ border-radius: 10px;
3100
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
3101
+ }
3102
+
3103
+ /* src/widgets/FeatureAdoptionWidget.css */
3104
+ .feature-adoption {
3105
+ display: flex;
3106
+ flex-direction: column;
3107
+ gap: 6px;
3108
+ max-height: 240px;
3109
+ overflow-y: auto;
3110
+ }
3111
+ .feature-adoption__row {
3112
+ display: flex;
3113
+ align-items: center;
3114
+ gap: 10px;
3115
+ }
3116
+ .feature-adoption__name {
3117
+ font-size: 12px;
3118
+ color: var(--color-fg, #e2e8f0);
3119
+ white-space: nowrap;
3120
+ min-width: 100px;
3121
+ flex-shrink: 0;
3122
+ }
3123
+ .feature-adoption__bar-track {
3124
+ flex: 1;
3125
+ height: 16px;
3126
+ background: var(--color-bg-alt, #1e1e2e);
3127
+ border-radius: 4px;
3128
+ overflow: hidden;
3129
+ }
3130
+ .feature-adoption__bar-fill {
3131
+ height: 100%;
3132
+ border-radius: 4px;
3133
+ transition: width 0.3s ease;
3134
+ min-width: 2px;
3135
+ }
3136
+ .feature-adoption__count {
3137
+ font-size: 12px;
3138
+ color: var(--color-fg-muted, #888);
3139
+ min-width: 32px;
3140
+ text-align: right;
3141
+ flex-shrink: 0;
3142
+ }
3143
+ .feature-adoption__empty {
3144
+ text-align: center;
3145
+ color: var(--color-fg-muted, #888);
3146
+ padding: 16px;
3147
+ }
3148
+ [data-variant=compact] .feature-adoption__name {
3149
+ font-size: 11px;
3150
+ min-width: 80px;
3151
+ }
3152
+ [data-variant=compact] .feature-adoption__bar-track {
3153
+ height: 12px;
3154
+ }
3155
+ [data-variant=compact] .feature-adoption__count {
3156
+ font-size: 11px;
3157
+ }
3158
+ [data-variant=compact] .feature-adoption__row {
3159
+ gap: 6px;
3160
+ }
3161
+ [data-variant=modern] .feature-adoption__bar-track {
3162
+ border-radius: 8px;
3163
+ height: 18px;
3164
+ }
3165
+ [data-variant=modern] .feature-adoption__bar-fill {
3166
+ border-radius: 8px;
3167
+ }
3168
+
3169
+ /* src/widgets/ProjectStatusWidget.css */
3170
+ .project-status-widget {
3171
+ display: flex;
3172
+ flex-direction: column;
3173
+ gap: 14px;
3174
+ }
3175
+ .project-status-widget__summary {
3176
+ display: flex;
3177
+ gap: 12px;
3178
+ }
3179
+ .project-status-widget__stat {
3180
+ flex: 1;
3181
+ display: flex;
3182
+ flex-direction: column;
3183
+ align-items: center;
3184
+ background: var(--color-bg-alt);
3185
+ border-radius: 8px;
3186
+ padding: 12px;
3187
+ gap: 4px;
3188
+ }
3189
+ .project-status-widget__stat-value {
3190
+ font-size: 24px;
3191
+ font-weight: 700;
3192
+ color: var(--color-accent);
3193
+ line-height: 1.2;
3194
+ }
3195
+ .project-status-widget__stat-label {
3196
+ font-size: 11px;
3197
+ color: var(--color-fg-muted);
3198
+ text-transform: uppercase;
3199
+ letter-spacing: 0.03em;
3200
+ }
3201
+ .project-status-widget__progress {
3202
+ width: 100%;
3203
+ height: 8px;
3204
+ background: var(--color-bg-alt);
3205
+ border-radius: 4px;
3206
+ overflow: hidden;
3207
+ }
3208
+ .project-status-widget__progress-fill {
3209
+ height: 100%;
3210
+ background: var(--color-accent);
3211
+ border-radius: 4px;
3212
+ transition: width 0.4s ease;
3213
+ }
3214
+ .project-status-widget__statuses {
3215
+ display: grid;
3216
+ grid-template-columns: repeat(3, 1fr);
3217
+ gap: 6px;
3218
+ }
3219
+ .project-status-widget__status-chip {
3220
+ display: flex;
3221
+ align-items: center;
3222
+ gap: 6px;
3223
+ background: var(--color-bg-alt);
3224
+ border-radius: 6px;
3225
+ padding: 6px 10px;
3226
+ }
3227
+ .project-status-widget__status-dot {
3228
+ width: 8px;
3229
+ height: 8px;
3230
+ border-radius: 50%;
3231
+ flex-shrink: 0;
3232
+ }
3233
+ .project-status-widget__status-label {
3234
+ font-size: 12px;
3235
+ color: var(--color-fg);
3236
+ flex: 1;
3237
+ white-space: nowrap;
3238
+ overflow: hidden;
3239
+ text-overflow: ellipsis;
3240
+ }
3241
+ .project-status-widget__status-count {
3242
+ font-size: 12px;
3243
+ color: var(--color-fg-muted);
3244
+ font-family: var(--font-mono, monospace);
3245
+ flex-shrink: 0;
3246
+ }
3247
+ @container (max-width: 400px) {
3248
+ .project-status-widget__statuses {
3249
+ grid-template-columns: repeat(2, 1fr);
3250
+ }
3251
+ }
3252
+ [data-variant=compact] .project-status-widget {
3253
+ gap: 10px;
3254
+ }
3255
+ [data-variant=compact] .project-status-widget__stat {
3256
+ padding: 8px;
3257
+ border-radius: 6px;
3258
+ }
3259
+ [data-variant=compact] .project-status-widget__stat-value {
3260
+ font-size: 20px;
3261
+ }
3262
+ [data-variant=compact] .project-status-widget__stat-label {
3263
+ font-size: 10px;
3264
+ }
3265
+ [data-variant=compact] .project-status-widget__progress {
3266
+ height: 6px;
3267
+ }
3268
+ [data-variant=compact] .project-status-widget__status-chip {
3269
+ padding: 4px 8px;
3270
+ border-radius: 4px;
3271
+ }
3272
+ [data-variant=compact] .project-status-widget__status-label,
3273
+ [data-variant=compact] .project-status-widget__status-count {
3274
+ font-size: 11px;
3275
+ }
3276
+ [data-variant=modern] .project-status-widget__stat {
3277
+ border-radius: 10px;
3278
+ padding: 14px;
3279
+ }
3280
+ [data-variant=modern] .project-status-widget__progress {
3281
+ height: 10px;
3282
+ border-radius: 5px;
3283
+ }
3284
+ [data-variant=modern] .project-status-widget__progress-fill {
3285
+ border-radius: 5px;
3286
+ }
3287
+ [data-variant=modern] .project-status-widget__status-chip {
3288
+ border-radius: 8px;
3289
+ padding: 8px 12px;
3290
+ }
3291
+
3292
+ /* src/ProjectDashboard/ProjectDashboard.css */
3293
+ .project-dashboard {
3294
+ display: flex;
3295
+ flex-direction: column;
3296
+ height: 100%;
3297
+ width: 100%;
3298
+ overflow: hidden;
3299
+ position: relative;
3300
+ }
3301
+ .project-dashboard__body {
3302
+ flex: 1;
3303
+ overflow: auto;
3304
+ position: relative;
3305
+ width: 100%;
3306
+ }
3307
+ .project-dashboard__placeholder {
3308
+ display: flex;
3309
+ align-items: center;
3310
+ justify-content: center;
3311
+ height: 100%;
3312
+ min-height: 80px;
3313
+ color: var(--color-fg-muted);
3314
+ font-size: 13px;
3315
+ background: var(--color-bg-alt);
3316
+ border-radius: 8px;
3317
+ }
3318
+ .project-dashboard__grid--cols-1 {
3319
+ grid-template-columns: 1fr !important;
3320
+ }
3321
+ .project-dashboard__grid--cols-2 {
3322
+ grid-template-columns: repeat(2, 1fr) !important;
3323
+ }
3324
+ .project-dashboard__grid--cols-4 {
3325
+ grid-template-columns: repeat(4, 1fr) !important;
3326
+ }
3327
+ .project-dashboard__grid--cols-6 {
3328
+ grid-template-columns: repeat(6, 1fr) !important;
3329
+ }
3330
+ .project-dashboard__grid--cols-12 {
3331
+ grid-template-columns: repeat(12, 1fr) !important;
3332
+ }
3333
+
3334
+ /* src/BacklogTree/QuickActions.css */
3335
+ .quick-actions {
3336
+ position: absolute;
3337
+ right: 4px;
3338
+ top: 50%;
3339
+ transform: translateY(-50%);
3340
+ display: flex;
3341
+ align-items: center;
3342
+ gap: 2px;
3343
+ opacity: 0;
3344
+ pointer-events: none;
3345
+ transition: opacity 0.15s ease;
3346
+ }
3347
+ .backlog-sidebar__task-wrap:hover .quick-actions {
3348
+ opacity: 1;
3349
+ pointer-events: auto;
3350
+ }
3351
+ .backlog-sidebar__task-wrap:hover .backlog-sidebar__title {
3352
+ mask-image:
3353
+ linear-gradient(
3354
+ to right,
3355
+ black 60%,
3356
+ transparent 90%);
3357
+ -webkit-mask-image:
3358
+ linear-gradient(
3359
+ to right,
3360
+ black 60%,
3361
+ transparent 90%);
3362
+ }
3363
+ .quick-actions__btn {
3364
+ all: unset;
3365
+ box-sizing: border-box;
3366
+ display: inline-flex;
3367
+ align-items: center;
3368
+ gap: 3px;
3369
+ height: 20px;
3370
+ padding: 0 6px;
3371
+ border-radius: 4px;
3372
+ font-size: 10px;
3373
+ font-weight: 500;
3374
+ cursor: pointer;
3375
+ background: var(--color-bg-active, #2a2a3a);
3376
+ color: var(--color-fg-muted, #999);
3377
+ transition: background 0.12s ease, color 0.12s ease;
3378
+ white-space: nowrap;
3379
+ }
3380
+ .quick-actions__btn--start:hover {
3381
+ background: rgba(34, 197, 94, 0.15);
3382
+ color: #22c55e;
3383
+ }
3384
+ .quick-actions__btn--advance:hover {
3385
+ background: rgba(59, 130, 246, 0.15);
3386
+ color: #3b82f6;
3387
+ }
3388
+ .quick-actions__btn--block:hover {
3389
+ background: rgba(239, 68, 68, 0.15);
3390
+ color: #ef4444;
3391
+ }
3392
+ .quick-actions--disabled {
3393
+ pointer-events: none;
3394
+ opacity: 0.5;
3395
+ }
3396
+ .quick-actions__btn--loading {
3397
+ pointer-events: none;
3398
+ opacity: 0.7;
3399
+ }
3400
+ .quick-actions__spinner {
3401
+ display: inline-block;
3402
+ width: 10px;
3403
+ height: 10px;
3404
+ border: 1.5px solid currentColor;
3405
+ border-top-color: transparent;
3406
+ border-radius: 50%;
3407
+ animation: quick-actions-spin 0.6s linear infinite;
3408
+ }
3409
+ @keyframes quick-actions-spin {
3410
+ to {
3411
+ transform: rotate(360deg);
3412
+ }
3413
+ }
3414
+
3415
+ /* src/BacklogTree/BacklogTree.css */
3416
+ .backlog-sidebar {
3417
+ display: flex;
3418
+ flex-direction: column;
3419
+ gap: 1px;
3420
+ overflow-y: auto;
3421
+ flex: 1;
3422
+ }
3423
+ .backlog-sidebar__row {
3424
+ all: unset;
3425
+ box-sizing: border-box;
3426
+ display: flex;
3427
+ align-items: center;
3428
+ gap: 6px;
3429
+ padding: 5px 8px;
3430
+ width: 100%;
3431
+ cursor: pointer;
3432
+ font-size: 12px;
3433
+ color: var(--color-fg, #ccc);
3434
+ border-radius: 4px;
3435
+ transition: background 0.12s ease;
3436
+ text-align: left;
3437
+ }
3438
+ .backlog-sidebar__row:hover {
3439
+ background: var(--color-bg-active, #2a2a3a);
3440
+ }
3441
+ .backlog-sidebar__row--epic {
3442
+ font-weight: 600;
3443
+ font-size: 12px;
3444
+ }
3445
+ .backlog-sidebar__row--story {
3446
+ padding-left: 24px;
3447
+ font-size: 12px;
3448
+ }
3449
+ .backlog-sidebar__row--task {
3450
+ padding-left: 44px;
3451
+ font-size: 11px;
3452
+ color: var(--color-fg-muted, #999);
3453
+ }
3454
+ .backlog-sidebar__row--task:hover {
3455
+ color: var(--color-fg, #ccc);
3456
+ }
3457
+ .backlog-sidebar__chevron {
3458
+ display: inline-flex;
3459
+ align-items: center;
3460
+ font-size: 8px;
3461
+ color: var(--color-fg-muted, #888);
3462
+ transition: transform 0.15s ease;
3463
+ flex-shrink: 0;
3464
+ width: 12px;
3465
+ }
3466
+ .backlog-sidebar__chevron--open {
3467
+ transform: rotate(90deg);
3468
+ }
3469
+ .backlog-sidebar__title {
3470
+ flex: 1;
3471
+ overflow: hidden;
3472
+ text-overflow: ellipsis;
3473
+ white-space: nowrap;
3474
+ min-width: 0;
3475
+ }
3476
+ .backlog-sidebar__count {
3477
+ font-size: 10px;
3478
+ color: var(--color-fg-muted, #888);
3479
+ flex-shrink: 0;
3480
+ }
3481
+ .backlog-sidebar__children {
3482
+ display: flex;
3483
+ flex-direction: column;
3484
+ gap: 1px;
3485
+ }
3486
+ .backlog-sidebar__assignee {
3487
+ flex-shrink: 0;
3488
+ width: 18px;
3489
+ height: 18px;
3490
+ border-radius: 50%;
3491
+ background: var(--color-accent, #6366f1);
3492
+ color: var(--color-fg-bright, #fff);
3493
+ font-size: 8px;
3494
+ font-weight: 600;
3495
+ display: inline-flex;
3496
+ align-items: center;
3497
+ justify-content: center;
3498
+ line-height: 1;
3499
+ }
3500
+ .backlog-sidebar__task-wrap {
3501
+ position: relative;
3502
+ }
3503
+ .backlog-sidebar__task-wrap--pending {
3504
+ opacity: 0.7;
3505
+ pointer-events: none;
3506
+ position: relative;
3507
+ }
3508
+ .backlog-sidebar__task-wrap--pending::after {
3509
+ content: "";
3510
+ position: absolute;
3511
+ inset: 0;
3512
+ background:
3513
+ linear-gradient(
3514
+ 90deg,
3515
+ transparent,
3516
+ rgba(255, 255, 255, 0.05),
3517
+ transparent);
3518
+ animation: optimistic-shimmer 1.5s ease-in-out infinite;
3519
+ }
3520
+ @keyframes optimistic-shimmer {
3521
+ 0% {
3522
+ transform: translateX(-100%);
3523
+ }
3524
+ 100% {
3525
+ transform: translateX(100%);
3526
+ }
3527
+ }
3528
+ .backlog-sidebar__loading,
3529
+ .backlog-sidebar__empty {
3530
+ padding: 24px 12px;
3531
+ text-align: center;
3532
+ color: var(--color-fg-muted, #888);
3533
+ font-size: 12px;
3534
+ }
3535
+
3536
+ /* src/TaskFilter/TaskFilter.css */
3537
+ .task-filter {
3538
+ display: flex;
3539
+ align-items: center;
3540
+ gap: 4px;
3541
+ padding: 6px 8px;
3542
+ border-bottom: 1px solid var(--color-border, #333);
3543
+ flex-shrink: 0;
3544
+ }
3545
+ .task-filter__trigger {
3546
+ all: unset;
3547
+ box-sizing: border-box;
3548
+ display: inline-flex;
3549
+ align-items: center;
3550
+ gap: 3px;
3551
+ height: 22px;
3552
+ padding: 0 8px;
3553
+ border-radius: 4px;
3554
+ font-size: 10px;
3555
+ font-weight: 500;
3556
+ cursor: pointer;
3557
+ background: var(--color-bg-active, #2a2a3a);
3558
+ color: var(--color-fg-muted, #999);
3559
+ transition: background 0.12s ease, color 0.12s ease;
3560
+ white-space: nowrap;
3561
+ position: relative;
3562
+ }
3563
+ .task-filter__trigger:hover,
3564
+ .task-filter__trigger--active {
3565
+ color: var(--color-fg, #ccc);
3566
+ background: var(--color-bg-hover, #333);
3567
+ }
3568
+ .task-filter__count {
3569
+ font-size: 9px;
3570
+ background: var(--color-accent, #6366f1);
3571
+ color: var(--color-fg-bright, #fff);
3572
+ border-radius: 6px;
3573
+ padding: 0 4px;
3574
+ min-width: 14px;
3575
+ text-align: center;
3576
+ line-height: 14px;
3577
+ }
3578
+ .task-filter__dropdown-wrap {
3579
+ position: relative;
3580
+ }
3581
+ .task-filter__dropdown {
3582
+ position: absolute;
3583
+ top: calc(100% + 4px);
3584
+ left: 0;
3585
+ z-index: 100;
3586
+ background: var(--color-bg-surface, #1e1e2e);
3587
+ border: 1px solid var(--color-border, #333);
3588
+ border-radius: 6px;
3589
+ padding: 4px;
3590
+ min-width: 160px;
3591
+ max-height: 240px;
3592
+ overflow-y: auto;
3593
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
3594
+ }
3595
+ .task-filter__option {
3596
+ all: unset;
3597
+ box-sizing: border-box;
3598
+ display: flex;
3599
+ align-items: center;
3600
+ gap: 6px;
3601
+ width: 100%;
3602
+ padding: 4px 8px;
3603
+ border-radius: 4px;
3604
+ font-size: 11px;
3605
+ color: var(--color-fg, #ccc);
3606
+ cursor: pointer;
3607
+ }
3608
+ .task-filter__option:hover {
3609
+ background: var(--color-bg-active, #2a2a3a);
3610
+ }
3611
+ .task-filter__option--selected {
3612
+ color: var(--color-accent, #6366f1);
3613
+ }
3614
+ .task-filter__checkbox {
3615
+ width: 12px;
3616
+ height: 12px;
3617
+ border: 1px solid var(--color-fg-muted, #666);
3618
+ border-radius: 2px;
3619
+ display: inline-flex;
3620
+ align-items: center;
3621
+ justify-content: center;
3622
+ flex-shrink: 0;
3623
+ font-size: 8px;
3624
+ }
3625
+ .task-filter__checkbox--checked {
3626
+ background: var(--color-accent, #6366f1);
3627
+ border-color: var(--color-accent, #6366f1);
3628
+ color: #fff;
3629
+ }
3630
+ .task-filter__actions {
3631
+ display: flex;
3632
+ gap: 4px;
3633
+ padding: 4px 8px;
3634
+ border-bottom: 1px solid var(--color-border, #333);
3635
+ margin-bottom: 4px;
3636
+ }
3637
+ .task-filter__action-btn {
3638
+ all: unset;
3639
+ font-size: 10px;
3640
+ color: var(--color-accent, #6366f1);
3641
+ cursor: pointer;
3642
+ }
3643
+ .task-filter__action-btn:hover {
3644
+ text-decoration: underline;
3645
+ }
3646
+ .task-filter__clear {
3647
+ all: unset;
3648
+ font-size: 10px;
3649
+ color: var(--color-fg-muted, #999);
3650
+ cursor: pointer;
3651
+ margin-left: auto;
3652
+ }
3653
+ .task-filter__clear:hover {
3654
+ color: var(--color-fg, #ccc);
3655
+ }
3656
+ .task-filter__search-wrap {
3657
+ display: flex;
3658
+ align-items: center;
3659
+ flex: 1;
3660
+ min-width: 0;
3661
+ position: relative;
3662
+ }
3663
+ .task-filter__search {
3664
+ all: unset;
3665
+ box-sizing: border-box;
3666
+ width: 100%;
3667
+ height: 22px;
3668
+ padding: 0 22px 0 6px;
3669
+ border-radius: 4px;
3670
+ font-size: 11px;
3671
+ color: var(--color-fg, #ccc);
3672
+ background: var(--color-bg-active, #2a2a3a);
3673
+ border: 1px solid transparent;
3674
+ transition: border-color 0.12s ease;
3675
+ }
3676
+ .task-filter__search::placeholder {
3677
+ color: var(--color-fg-muted, #666);
3678
+ }
3679
+ .task-filter__search:focus {
3680
+ border-color: var(--color-accent, #6366f1);
3681
+ outline: none;
3682
+ }
3683
+ .task-filter__search-clear {
3684
+ all: unset;
3685
+ position: absolute;
3686
+ right: 4px;
3687
+ top: 50%;
3688
+ transform: translateY(-50%);
3689
+ cursor: pointer;
3690
+ color: var(--color-fg-muted, #666);
3691
+ font-size: 12px;
3692
+ line-height: 1;
3693
+ display: inline-flex;
3694
+ align-items: center;
3695
+ }
3696
+ .task-filter__search-clear:hover {
3697
+ color: var(--color-fg, #ccc);
3698
+ }
3699
+
3700
+ /* src/ConnectionStatus/ConnectionStatus.css */
3701
+ .connection-status {
3702
+ display: contents;
3703
+ }
3704
+ .connection-status__dot {
3705
+ display: inline-block;
3706
+ width: 8px;
3707
+ height: 8px;
3708
+ border-radius: 50%;
3709
+ flex-shrink: 0;
3710
+ }
3711
+ .connection-status__dot--connected {
3712
+ background-color: var(--color-status-connected, #22c55e);
3713
+ }
3714
+ .connection-status__dot--reconnecting {
3715
+ background-color: var(--color-status-reconnecting, #f59e0b);
3716
+ animation: connection-pulse 1.5s ease-in-out infinite;
3717
+ }
3718
+ .connection-status__dot--disconnected {
3719
+ background-color: var(--color-status-disconnected, #ef4444);
3720
+ }
3721
+ @keyframes connection-pulse {
3722
+ 0%, 100% {
3723
+ opacity: 1;
3724
+ }
3725
+ 50% {
3726
+ opacity: 0.3;
3727
+ }
3728
+ }
3729
+ .connection-status__banner {
3730
+ font-size: 11px;
3731
+ padding: 4px 12px;
3732
+ border-bottom: 1px solid transparent;
3733
+ flex-shrink: 0;
3734
+ }
3735
+ .connection-status__banner--reconnecting {
3736
+ color: var(--color-status-reconnecting, #f59e0b);
3737
+ background-color: var(--color-status-reconnecting-bg, rgba(245, 158, 11, 0.08));
3738
+ border-bottom-color: var(--color-status-reconnecting-border, rgba(245, 158, 11, 0.15));
3739
+ }
3740
+ .connection-status__banner--disconnected {
3741
+ color: var(--color-status-disconnected, #ef4444);
3742
+ background-color: var(--color-status-disconnected-bg, rgba(239, 68, 68, 0.08));
3743
+ border-bottom-color: var(--color-status-disconnected-border, rgba(239, 68, 68, 0.15));
3744
+ }
3745
+
3746
+ /* src/TasksSidebar/TasksSidebar.css */
3747
+ .tasks-sidebar {
3748
+ display: flex;
3749
+ flex-direction: column;
3750
+ height: 100%;
3751
+ overflow: hidden;
3752
+ }
3753
+ .tasks-sidebar__header {
3754
+ display: flex;
3755
+ align-items: center;
3756
+ gap: 8px;
3757
+ padding: 10px 12px;
3758
+ border-bottom: 1px solid var(--color-border, #333);
3759
+ flex-shrink: 0;
3760
+ }
3761
+ .tasks-sidebar__back,
3762
+ .tasks-sidebar__refresh {
3763
+ all: unset;
3764
+ cursor: pointer;
3765
+ color: var(--color-fg-muted, #888);
3766
+ font-size: 14px;
3767
+ display: inline-flex;
3768
+ align-items: center;
3769
+ padding: 2px;
3770
+ border-radius: 4px;
3771
+ transition: color 0.12s ease, background 0.12s ease;
3772
+ }
3773
+ .tasks-sidebar__back:hover,
3774
+ .tasks-sidebar__refresh:hover {
3775
+ color: var(--color-fg, #ccc);
3776
+ background: var(--color-bg-active, #2a2a3a);
3777
+ }
3778
+ .tasks-sidebar__project-name {
3779
+ flex: 1;
3780
+ font-size: 13px;
3781
+ font-weight: 600;
3782
+ color: var(--color-fg, #e2e8f0);
3783
+ overflow: hidden;
3784
+ text-overflow: ellipsis;
3785
+ white-space: nowrap;
3786
+ }
3787
+
3788
+ /* src/LifecycleProgressBar/LifecycleProgressBar.css */
3789
+ .lifecycle-bar {
3790
+ display: flex;
3791
+ flex-direction: column;
3792
+ gap: 4px;
3793
+ }
3794
+ .lifecycle-bar__track {
3795
+ display: flex;
3796
+ align-items: center;
3797
+ gap: 0;
3798
+ }
3799
+ .lifecycle-bar__dot {
3800
+ flex-shrink: 0;
3801
+ border-radius: 50%;
3802
+ transition: transform 0.15s ease, opacity 0.15s ease;
3803
+ }
3804
+ .lifecycle-bar__dot--past {
3805
+ opacity: 1;
3806
+ }
3807
+ .lifecycle-bar__dot--current {
3808
+ opacity: 1;
3809
+ transform: scale(1.35);
3810
+ animation: lifecycle-pulse 1.6s ease-in-out infinite;
3811
+ }
3812
+ .lifecycle-bar__dot--future {
3813
+ opacity: 0.25;
3814
+ background-color: #6b7280;
3815
+ }
3816
+ .lifecycle-bar__line {
3817
+ flex: 1 1 0%;
3818
+ min-width: 4px;
3819
+ transition: background-color 0.15s ease;
3820
+ }
3821
+ .lifecycle-bar__line--past {
3822
+ background-color: var(--color-border-active, #555);
3823
+ }
3824
+ .lifecycle-bar__line--future {
3825
+ background-color: var(--color-border, #333);
3826
+ }
3827
+ .lifecycle-bar__special {
3828
+ font-weight: 600;
3829
+ line-height: 1;
3830
+ letter-spacing: 0.02em;
3831
+ }
3832
+ .lifecycle-bar--sm .lifecycle-bar__dot {
3833
+ width: 6px;
3834
+ height: 6px;
3835
+ }
3836
+ .lifecycle-bar--sm .lifecycle-bar__line {
3837
+ height: 1.5px;
3838
+ }
3839
+ .lifecycle-bar--sm .lifecycle-bar__special {
3840
+ font-size: 10px;
3841
+ }
3842
+ .lifecycle-bar--md .lifecycle-bar__dot {
3843
+ width: 8px;
3844
+ height: 8px;
3845
+ }
3846
+ .lifecycle-bar--md .lifecycle-bar__line {
3847
+ height: 2px;
3848
+ }
3849
+ .lifecycle-bar--md .lifecycle-bar__special {
3850
+ font-size: 11px;
3851
+ }
3852
+ @keyframes lifecycle-pulse {
3853
+ 0%, 100% {
3854
+ box-shadow: 0 0 0 0 currentColor;
3855
+ }
3856
+ 50% {
3857
+ box-shadow: 0 0 0 3px currentColor;
3858
+ }
3859
+ }