@viren/claude-code-dashboard 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1320 @@
1
+ :root {
2
+ --bg: #0a0a0a;
3
+ --surface: #111;
4
+ --surface2: #1a1a1a;
5
+ --border: #262626;
6
+ --text: #e5e5e5;
7
+ --text-dim: #777;
8
+ --accent: #c4956a;
9
+ --accent-dim: #8b6a4a;
10
+ --green: #4ade80;
11
+ --blue: #60a5fa;
12
+ --purple: #a78bfa;
13
+ --yellow: #fbbf24;
14
+ --red: #f87171;
15
+ }
16
+ [data-theme="light"] {
17
+ --bg: #f5f5f5;
18
+ --surface: #fff;
19
+ --surface2: #f0f0f0;
20
+ --border: #e0e0e0;
21
+ --text: #1a1a1a;
22
+ --text-dim: #666;
23
+ --accent: #9b6b47;
24
+ --accent-dim: #b8956e;
25
+ --green: #16a34a;
26
+ --blue: #2563eb;
27
+ --purple: #7c3aed;
28
+ --yellow: #ca8a04;
29
+ --red: #dc2626;
30
+ }
31
+ * {
32
+ margin: 0;
33
+ padding: 0;
34
+ box-sizing: border-box;
35
+ }
36
+ body {
37
+ font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", sans-serif;
38
+ background: var(--bg);
39
+ color: var(--text);
40
+ padding: 2.5rem 2rem;
41
+ line-height: 1.5;
42
+ max-width: 1200px;
43
+ margin: 0 auto;
44
+ }
45
+ code,
46
+ .cmd-name {
47
+ font-family: "SF Mono", "Fira Code", "JetBrains Mono", monospace;
48
+ }
49
+ h1 {
50
+ font-size: 1.4rem;
51
+ font-weight: 600;
52
+ color: var(--accent);
53
+ margin-bottom: 0.2rem;
54
+ }
55
+ .header-actions {
56
+ position: fixed;
57
+ top: 1rem;
58
+ right: 1rem;
59
+ z-index: 100;
60
+ display: flex;
61
+ gap: 0.4rem;
62
+ align-items: center;
63
+ }
64
+ .header-btn {
65
+ background: var(--surface);
66
+ border: 1px solid var(--border);
67
+ border-radius: 8px;
68
+ padding: 0.4rem 0.6rem;
69
+ cursor: pointer;
70
+ color: var(--text-dim);
71
+ font-size: 0.75rem;
72
+ transition:
73
+ background 0.15s,
74
+ border-color 0.15s;
75
+ }
76
+ .header-btn:hover {
77
+ border-color: var(--accent-dim);
78
+ color: var(--text);
79
+ }
80
+ .sub {
81
+ color: var(--text-dim);
82
+ font-size: 0.78rem;
83
+ margin-bottom: 1rem;
84
+ }
85
+ kbd {
86
+ background: var(--surface2);
87
+ border: 1px solid var(--border);
88
+ border-radius: 3px;
89
+ padding: 0.05rem 0.3rem;
90
+ font-size: 0.7rem;
91
+ font-family: inherit;
92
+ }
93
+
94
+ /* ── Tabs ─────────────────────────────────────────────────── */
95
+ .tab-nav {
96
+ display: flex;
97
+ gap: 0;
98
+ border-bottom: 1px solid var(--border);
99
+ margin-bottom: 1.5rem;
100
+ overflow-x: auto;
101
+ }
102
+ .tab-btn {
103
+ padding: 0.6rem 1.2rem;
104
+ font-size: 0.78rem;
105
+ font-weight: 500;
106
+ color: var(--text-dim);
107
+ background: none;
108
+ border: none;
109
+ border-bottom: 2px solid transparent;
110
+ cursor: pointer;
111
+ white-space: nowrap;
112
+ font-family: inherit;
113
+ transition:
114
+ color 0.15s,
115
+ border-color 0.15s;
116
+ }
117
+ .tab-btn:hover {
118
+ color: var(--text);
119
+ }
120
+ .tab-btn.active {
121
+ color: var(--accent);
122
+ border-bottom-color: var(--accent);
123
+ }
124
+ .tab-content {
125
+ display: none;
126
+ }
127
+ .tab-content.active {
128
+ display: block;
129
+ }
130
+
131
+ /* ── Cards ────────────────────────────────────────────────── */
132
+ .top-grid {
133
+ display: grid;
134
+ grid-template-columns: 1fr 1fr;
135
+ gap: 1.25rem;
136
+ margin-bottom: 1.25rem;
137
+ }
138
+ .top-grid > .card {
139
+ margin-bottom: 0;
140
+ }
141
+ @media (max-width: 900px) {
142
+ .top-grid {
143
+ grid-template-columns: 1fr;
144
+ }
145
+ }
146
+
147
+ .card {
148
+ background: var(--surface);
149
+ border: 1px solid var(--border);
150
+ border-radius: 10px;
151
+ padding: 1.25rem;
152
+ overflow: hidden;
153
+ margin-bottom: 1.25rem;
154
+ }
155
+ .card:last-child {
156
+ margin-bottom: 0;
157
+ }
158
+ .card h2 {
159
+ font-size: 0.7rem;
160
+ font-weight: 700;
161
+ text-transform: uppercase;
162
+ letter-spacing: 0.08em;
163
+ color: var(--text-dim);
164
+ margin-bottom: 0.75rem;
165
+ display: flex;
166
+ align-items: center;
167
+ gap: 0.5rem;
168
+ }
169
+ .card h2 .n {
170
+ background: var(--surface2);
171
+ border: 1px solid var(--border);
172
+ border-radius: 4px;
173
+ padding: 0.05rem 0.35rem;
174
+ font-size: 0.65rem;
175
+ color: var(--accent);
176
+ }
177
+
178
+ .cmd-row,
179
+ details.cmd-detail > summary {
180
+ display: flex;
181
+ align-items: baseline;
182
+ padding: 0.35rem 0.25rem;
183
+ gap: 0.75rem;
184
+ border-bottom: 1px solid var(--border);
185
+ font-size: 0.82rem;
186
+ }
187
+ .cmd-row:last-child,
188
+ details.cmd-detail:last-child:not([open]) > summary {
189
+ border-bottom: none;
190
+ }
191
+ .cmd-name {
192
+ font-weight: 600;
193
+ color: var(--green);
194
+ white-space: nowrap;
195
+ font-size: 0.8rem;
196
+ flex-shrink: 0;
197
+ }
198
+ .cmd-desc {
199
+ color: var(--text-dim);
200
+ font-size: 0.75rem;
201
+ text-align: right;
202
+ flex: 1;
203
+ min-width: 0;
204
+ overflow: hidden;
205
+ text-overflow: ellipsis;
206
+ white-space: nowrap;
207
+ }
208
+
209
+ details.cmd-detail {
210
+ border-bottom: 1px solid var(--border);
211
+ }
212
+ details.cmd-detail:last-child {
213
+ border-bottom: none;
214
+ }
215
+ details.cmd-detail > summary {
216
+ cursor: pointer;
217
+ list-style: none;
218
+ border-radius: 4px;
219
+ transition: background 0.1s;
220
+ }
221
+ details.cmd-detail[open] > summary,
222
+ details.cmd-detail > summary:hover {
223
+ background: var(--surface2);
224
+ }
225
+ details.cmd-detail > summary::-webkit-details-marker {
226
+ display: none;
227
+ }
228
+ .detail-body {
229
+ padding: 0.6rem 0.5rem 0.6rem 1rem;
230
+ background: var(--surface2);
231
+ border-radius: 0 0 6px 6px;
232
+ margin-bottom: 0.15rem;
233
+ }
234
+ .detail-section {
235
+ color: var(--blue);
236
+ font-size: 0.72rem;
237
+ font-weight: 600;
238
+ margin-top: 0.35rem;
239
+ }
240
+ .detail-section:first-child {
241
+ margin-top: 0;
242
+ }
243
+ .detail-step,
244
+ .detail-key {
245
+ font-size: 0.7rem;
246
+ padding: 0.1rem 0 0.1rem 0.9rem;
247
+ position: relative;
248
+ }
249
+ .detail-step {
250
+ color: var(--text);
251
+ }
252
+ .detail-step::before {
253
+ content: "\2192";
254
+ position: absolute;
255
+ left: 0;
256
+ color: var(--accent-dim);
257
+ font-size: 0.65rem;
258
+ }
259
+ .detail-key {
260
+ color: var(--yellow);
261
+ }
262
+ .detail-key::before {
263
+ content: "\2022";
264
+ position: absolute;
265
+ left: 0.15rem;
266
+ color: var(--accent-dim);
267
+ }
268
+
269
+ .label {
270
+ color: var(--text-dim);
271
+ font-size: 0.65rem;
272
+ font-weight: 700;
273
+ text-transform: uppercase;
274
+ letter-spacing: 0.06em;
275
+ margin: 0.85rem 0 0.35rem;
276
+ }
277
+ .label:first-child {
278
+ margin-top: 0;
279
+ }
280
+
281
+ .agent-section {
282
+ border-bottom: 1px solid var(--border);
283
+ }
284
+ .agent-section:last-child {
285
+ border-bottom: none;
286
+ }
287
+ .agent-section > summary {
288
+ cursor: pointer;
289
+ list-style: none;
290
+ display: flex;
291
+ align-items: baseline;
292
+ padding: 0.3rem 0.25rem;
293
+ font-size: 0.78rem;
294
+ font-weight: 500;
295
+ color: var(--text);
296
+ border-radius: 4px;
297
+ transition: background 0.1s;
298
+ }
299
+ .agent-section > summary::-webkit-details-marker {
300
+ display: none;
301
+ }
302
+ .agent-section > summary:hover,
303
+ .agent-section[open] > summary {
304
+ background: var(--surface2);
305
+ }
306
+ .agent-section[open] > summary {
307
+ color: var(--blue);
308
+ }
309
+ .agent-section-preview {
310
+ padding: 0.3rem 0.4rem 0.5rem 1rem;
311
+ background: var(--surface2);
312
+ border-radius: 0 0 4px 4px;
313
+ margin-bottom: 0.1rem;
314
+ }
315
+ .agent-section-preview .line {
316
+ color: var(--text-dim);
317
+ font-size: 0.68rem;
318
+ line-height: 1.5;
319
+ padding: 0.05rem 0;
320
+ }
321
+
322
+ .chain {
323
+ display: flex;
324
+ align-items: center;
325
+ gap: 0.5rem;
326
+ flex-wrap: wrap;
327
+ padding: 0.65rem 0.75rem;
328
+ background: var(--surface2);
329
+ border-radius: 6px;
330
+ margin-top: 0.4rem;
331
+ }
332
+ .chain:first-child {
333
+ margin-top: 0;
334
+ }
335
+ .chain-node {
336
+ background: var(--surface);
337
+ border: 1px solid var(--accent-dim);
338
+ border-radius: 5px;
339
+ padding: 0.25rem 0.55rem;
340
+ font-size: 0.75rem;
341
+ font-weight: 500;
342
+ color: var(--accent);
343
+ }
344
+ .chain-arrow {
345
+ color: var(--text-dim);
346
+ font-size: 0.85rem;
347
+ }
348
+
349
+ .stats {
350
+ display: grid;
351
+ grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
352
+ gap: 0.65rem;
353
+ margin-bottom: 1.5rem;
354
+ }
355
+ .stat {
356
+ text-align: center;
357
+ padding: 0.65rem 0.5rem;
358
+ background: var(--surface);
359
+ border: 1px solid var(--border);
360
+ border-radius: 8px;
361
+ cursor: pointer;
362
+ transition:
363
+ border-color 0.15s,
364
+ transform 0.1s;
365
+ }
366
+ .stat:hover {
367
+ border-color: var(--accent-dim);
368
+ transform: translateY(-1px);
369
+ }
370
+ .stat b {
371
+ display: block;
372
+ font-size: 1.4rem;
373
+ color: var(--accent);
374
+ }
375
+ .stat span {
376
+ font-size: 0.6rem;
377
+ color: var(--text-dim);
378
+ text-transform: uppercase;
379
+ letter-spacing: 0.06em;
380
+ }
381
+ .stat.coverage b {
382
+ color: var(--coverage-color, var(--accent));
383
+ }
384
+
385
+ .search-bar {
386
+ margin-bottom: 1rem;
387
+ position: relative;
388
+ }
389
+ .search-bar input {
390
+ width: 100%;
391
+ padding: 0.6rem 0.9rem;
392
+ padding-right: 4rem;
393
+ font-size: 0.82rem;
394
+ background: var(--surface);
395
+ border: 1px solid var(--border);
396
+ border-radius: 8px;
397
+ color: var(--text);
398
+ outline: none;
399
+ transition: border-color 0.15s;
400
+ font-family: inherit;
401
+ }
402
+ .search-bar input::placeholder {
403
+ color: var(--text-dim);
404
+ }
405
+ .search-bar input:focus {
406
+ border-color: var(--accent-dim);
407
+ }
408
+ .search-hint {
409
+ position: absolute;
410
+ right: 0.75rem;
411
+ top: 50%;
412
+ transform: translateY(-50%);
413
+ pointer-events: none;
414
+ }
415
+
416
+ .repo-grid {
417
+ display: grid;
418
+ grid-template-columns: repeat(3, 1fr);
419
+ gap: 0.75rem;
420
+ margin-bottom: 1.25rem;
421
+ }
422
+ @media (max-width: 1000px) {
423
+ .repo-grid {
424
+ grid-template-columns: 1fr 1fr;
425
+ }
426
+ }
427
+ @media (max-width: 600px) {
428
+ .repo-grid {
429
+ grid-template-columns: 1fr;
430
+ }
431
+ }
432
+
433
+ .repo-card {
434
+ background: var(--surface);
435
+ border: 1px solid var(--border);
436
+ border-radius: 10px;
437
+ overflow: hidden;
438
+ transition: border-color 0.15s;
439
+ }
440
+ .repo-card[open] {
441
+ grid-column: 1 / -1;
442
+ border-color: var(--accent-dim);
443
+ }
444
+ .repo-card > summary {
445
+ cursor: pointer;
446
+ list-style: none;
447
+ padding: 0.85rem 1rem;
448
+ display: flex;
449
+ flex-direction: column;
450
+ gap: 0.3rem;
451
+ min-height: 7.5rem;
452
+ justify-content: center;
453
+ }
454
+ .repo-card > summary::-webkit-details-marker {
455
+ display: none;
456
+ }
457
+ .repo-card > summary:hover {
458
+ background: var(--surface2);
459
+ }
460
+ .repo-header {
461
+ display: flex;
462
+ align-items: center;
463
+ justify-content: space-between;
464
+ }
465
+ .repo-card .repo-name {
466
+ font-size: 0.88rem;
467
+ font-weight: 600;
468
+ color: var(--text);
469
+ display: flex;
470
+ align-items: center;
471
+ gap: 0.4rem;
472
+ }
473
+ .repo-card .repo-preview {
474
+ font-size: 0.7rem;
475
+ color: var(--text-dim);
476
+ line-height: 1.4;
477
+ display: -webkit-box;
478
+ -webkit-line-clamp: 2;
479
+ -webkit-box-orient: vertical;
480
+ overflow: hidden;
481
+ }
482
+ .repo-card .badges {
483
+ display: flex;
484
+ gap: 0.3rem;
485
+ margin-top: 0.2rem;
486
+ flex-wrap: wrap;
487
+ }
488
+ .badge {
489
+ font-size: 0.58rem;
490
+ font-weight: 600;
491
+ text-transform: uppercase;
492
+ letter-spacing: 0.04em;
493
+ padding: 0.12rem 0.4rem;
494
+ border-radius: 3px;
495
+ border: 1px solid;
496
+ }
497
+ .badge.cmds {
498
+ color: var(--green);
499
+ border-color: #4ade8033;
500
+ background: #4ade8010;
501
+ }
502
+ .badge.rules {
503
+ color: var(--purple);
504
+ border-color: #a78bfa33;
505
+ background: #a78bfa10;
506
+ }
507
+ .badge.agent {
508
+ color: var(--blue);
509
+ border-color: #60a5fa33;
510
+ background: #60a5fa10;
511
+ }
512
+ .badge.skills {
513
+ color: var(--yellow);
514
+ border-color: #fbbf2433;
515
+ background: #fbbf2410;
516
+ }
517
+ .badge.source {
518
+ font-size: 0.5rem;
519
+ padding: 0.08rem 0.3rem;
520
+ margin-left: 0.4rem;
521
+ text-transform: none;
522
+ letter-spacing: 0.02em;
523
+ flex-shrink: 0;
524
+ }
525
+ .badge.source.superpowers {
526
+ color: var(--purple);
527
+ border-color: #a78bfa33;
528
+ background: #a78bfa10;
529
+ }
530
+ .badge.source.skillssh {
531
+ color: var(--blue);
532
+ border-color: #60a5fa33;
533
+ background: #60a5fa10;
534
+ }
535
+ .badge.source.custom {
536
+ color: var(--text-dim);
537
+ border-color: var(--border);
538
+ background: var(--surface2);
539
+ }
540
+ .skill-name {
541
+ color: var(--yellow) !important;
542
+ }
543
+ .skill-category {
544
+ margin-top: 0.75rem;
545
+ }
546
+ .skill-category:first-child {
547
+ margin-top: 0;
548
+ }
549
+ .skill-category-label {
550
+ font-size: 0.6rem;
551
+ font-weight: 700;
552
+ text-transform: uppercase;
553
+ letter-spacing: 0.06em;
554
+ color: var(--text-dim);
555
+ padding: 0.3rem 0;
556
+ margin-bottom: 0.25rem;
557
+ border-bottom: 1px solid var(--border);
558
+ display: flex;
559
+ align-items: center;
560
+ gap: 0.4rem;
561
+ }
562
+ .skill-category-label .cat-n {
563
+ font-size: 0.55rem;
564
+ color: var(--accent-dim);
565
+ }
566
+
567
+ .mcp-row {
568
+ display: flex;
569
+ align-items: center;
570
+ gap: 0.5rem;
571
+ padding: 0.3rem 0.25rem;
572
+ border-bottom: 1px solid var(--border);
573
+ font-size: 0.8rem;
574
+ flex-wrap: wrap;
575
+ }
576
+ .mcp-row:last-child {
577
+ border-bottom: none;
578
+ }
579
+ .mcp-row.mcp-disabled {
580
+ opacity: 0.5;
581
+ }
582
+ .mcp-disabled-hint {
583
+ font-size: 0.6rem;
584
+ color: var(--red);
585
+ opacity: 0.8;
586
+ }
587
+ .mcp-name {
588
+ font-family: "SF Mono", "Fira Code", "JetBrains Mono", monospace;
589
+ font-weight: 600;
590
+ color: var(--text);
591
+ font-size: 0.78rem;
592
+ }
593
+ .mcp-projects {
594
+ font-size: 0.65rem;
595
+ color: var(--text-dim);
596
+ margin-left: auto;
597
+ }
598
+ .badge.mcp-global {
599
+ color: var(--green);
600
+ border-color: #4ade8033;
601
+ background: #4ade8010;
602
+ }
603
+ .badge.mcp-project {
604
+ color: var(--blue);
605
+ border-color: #60a5fa33;
606
+ background: #60a5fa10;
607
+ }
608
+ .badge.mcp-recent {
609
+ color: var(--yellow);
610
+ border-color: #fbbf2433;
611
+ background: #fbbf2410;
612
+ }
613
+ .badge.mcp-type {
614
+ color: var(--text-dim);
615
+ border-color: var(--border);
616
+ background: var(--surface2);
617
+ text-transform: none;
618
+ font-size: 0.5rem;
619
+ }
620
+ .mcp-promote {
621
+ font-size: 0.72rem;
622
+ color: var(--text-dim);
623
+ padding: 0.4rem 0.5rem;
624
+ background: rgba(251, 191, 36, 0.05);
625
+ border: 1px solid rgba(251, 191, 36, 0.15);
626
+ border-radius: 6px;
627
+ margin-top: 0.3rem;
628
+ }
629
+ .mcp-promote .mcp-name {
630
+ color: var(--yellow);
631
+ }
632
+ .mcp-promote code {
633
+ font-size: 0.65rem;
634
+ color: var(--accent);
635
+ }
636
+
637
+ .card-header {
638
+ display: flex;
639
+ align-items: center;
640
+ justify-content: space-between;
641
+ margin-bottom: 0.5rem;
642
+ }
643
+ .card-header h2 {
644
+ margin-bottom: 0;
645
+ }
646
+ .copy-md-btn {
647
+ background: var(--surface2);
648
+ border: 1px solid var(--border);
649
+ border-radius: 5px;
650
+ padding: 0.25rem 0.5rem;
651
+ font-size: 0.65rem;
652
+ color: var(--text-dim);
653
+ cursor: pointer;
654
+ transition:
655
+ border-color 0.15s,
656
+ color 0.15s;
657
+ white-space: nowrap;
658
+ }
659
+ .copy-md-btn:hover {
660
+ border-color: var(--accent-dim);
661
+ color: var(--text);
662
+ }
663
+ .copy-toast {
664
+ position: fixed;
665
+ bottom: 1.5rem;
666
+ left: 50%;
667
+ transform: translateX(-50%) translateY(20px);
668
+ background: var(--surface);
669
+ border: 1px solid var(--accent-dim);
670
+ color: var(--text);
671
+ padding: 0.5rem 1rem;
672
+ border-radius: 8px;
673
+ font-size: 0.75rem;
674
+ opacity: 0;
675
+ pointer-events: none;
676
+ transition:
677
+ opacity 0.2s,
678
+ transform 0.2s;
679
+ z-index: 200;
680
+ }
681
+ .copy-toast.visible {
682
+ opacity: 1;
683
+ transform: translateX(-50%) translateY(0);
684
+ }
685
+ .insight-card {
686
+ margin-bottom: 1.25rem;
687
+ }
688
+ .insight-row {
689
+ display: flex;
690
+ align-items: flex-start;
691
+ gap: 0.6rem;
692
+ padding: 0.5rem 0.6rem;
693
+ border-radius: 6px;
694
+ margin-bottom: 0.35rem;
695
+ font-size: 0.78rem;
696
+ line-height: 1.4;
697
+ }
698
+ .insight-row:last-child {
699
+ margin-bottom: 0;
700
+ }
701
+ .insight-icon {
702
+ flex-shrink: 0;
703
+ font-size: 0.85rem;
704
+ line-height: 1;
705
+ margin-top: 0.1rem;
706
+ }
707
+ .insight-body {
708
+ flex: 1;
709
+ min-width: 0;
710
+ }
711
+ .insight-title {
712
+ font-weight: 600;
713
+ color: var(--text);
714
+ }
715
+ .insight-detail {
716
+ color: var(--text-dim);
717
+ font-size: 0.72rem;
718
+ margin-top: 0.15rem;
719
+ }
720
+ .insight-action {
721
+ color: var(--accent-dim);
722
+ font-size: 0.68rem;
723
+ font-style: italic;
724
+ margin-top: 0.15rem;
725
+ }
726
+ .insight-row.warning {
727
+ background: rgba(251, 191, 36, 0.06);
728
+ border: 1px solid rgba(251, 191, 36, 0.15);
729
+ }
730
+ .insight-row.info {
731
+ background: rgba(96, 165, 250, 0.06);
732
+ border: 1px solid rgba(96, 165, 250, 0.15);
733
+ }
734
+ .insight-row.tip {
735
+ background: rgba(74, 222, 128, 0.06);
736
+ border: 1px solid rgba(74, 222, 128, 0.15);
737
+ }
738
+ .insight-row.promote {
739
+ background: rgba(192, 132, 252, 0.06);
740
+ border: 1px solid rgba(192, 132, 252, 0.15);
741
+ }
742
+
743
+ .report-card {
744
+ margin-bottom: 1.25rem;
745
+ }
746
+ .report-subtitle {
747
+ font-size: 0.72rem;
748
+ color: var(--text-dim);
749
+ margin-bottom: 0.75rem;
750
+ }
751
+ .report-stats {
752
+ display: flex;
753
+ flex-wrap: wrap;
754
+ gap: 0.5rem;
755
+ margin-bottom: 0.75rem;
756
+ }
757
+ .report-stat {
758
+ background: var(--bg);
759
+ border: 1px solid var(--border);
760
+ border-radius: 6px;
761
+ padding: 0.4rem 0.6rem;
762
+ text-align: center;
763
+ min-width: 70px;
764
+ }
765
+ .report-stat b {
766
+ display: block;
767
+ font-size: 1rem;
768
+ color: var(--accent);
769
+ }
770
+ .report-stat span {
771
+ font-size: 0.55rem;
772
+ color: var(--text-dim);
773
+ text-transform: uppercase;
774
+ letter-spacing: 0.04em;
775
+ }
776
+ .report-glance {
777
+ display: flex;
778
+ flex-direction: column;
779
+ gap: 0.5rem;
780
+ margin-bottom: 0.75rem;
781
+ }
782
+ .report-glance-item {
783
+ font-size: 0.75rem;
784
+ line-height: 1.5;
785
+ color: var(--text-dim);
786
+ padding: 0.5rem 0.6rem;
787
+ background: var(--bg);
788
+ border-radius: 6px;
789
+ border: 1px solid var(--border);
790
+ }
791
+ .report-glance-item strong {
792
+ color: var(--text);
793
+ font-weight: 600;
794
+ }
795
+ .report-link {
796
+ display: inline-block;
797
+ margin-top: 0.5rem;
798
+ font-size: 0.72rem;
799
+ color: var(--accent);
800
+ text-decoration: none;
801
+ }
802
+ .report-link:hover {
803
+ text-decoration: underline;
804
+ }
805
+ .mcp-former {
806
+ opacity: 0.4;
807
+ }
808
+ .badge.mcp-former-badge {
809
+ color: var(--text-dim);
810
+ border-color: var(--border);
811
+ background: var(--surface2);
812
+ font-style: italic;
813
+ }
814
+
815
+ .usage-bar-row {
816
+ display: flex;
817
+ align-items: center;
818
+ gap: 0.5rem;
819
+ padding: 0.25rem 0;
820
+ font-size: 0.75rem;
821
+ }
822
+ .usage-bar-label {
823
+ width: 100px;
824
+ flex-shrink: 0;
825
+ color: var(--text);
826
+ font-weight: 500;
827
+ font-size: 0.72rem;
828
+ }
829
+ .usage-bar-track {
830
+ flex: 1;
831
+ height: 8px;
832
+ background: var(--surface2);
833
+ border-radius: 4px;
834
+ overflow: hidden;
835
+ }
836
+ .usage-bar-fill {
837
+ height: 100%;
838
+ border-radius: 4px;
839
+ transition: width 0.3s;
840
+ }
841
+ .usage-bar-tool {
842
+ background: linear-gradient(90deg, var(--blue), var(--green));
843
+ }
844
+ .usage-bar-lang {
845
+ background: linear-gradient(90deg, var(--green), var(--accent));
846
+ }
847
+ .usage-bar-error {
848
+ background: linear-gradient(90deg, var(--red), var(--yellow));
849
+ }
850
+ .usage-bar-count {
851
+ font-size: 0.65rem;
852
+ color: var(--text-dim);
853
+ min-width: 40px;
854
+ text-align: right;
855
+ font-variant-numeric: tabular-nums;
856
+ }
857
+
858
+ .heatmap {
859
+ display: grid;
860
+ grid-template-rows: repeat(7, 10px);
861
+ grid-auto-flow: column;
862
+ grid-auto-columns: 10px;
863
+ gap: 3px;
864
+ overflow-x: auto;
865
+ width: fit-content;
866
+ max-width: 100%;
867
+ }
868
+ .heatmap-cell {
869
+ border-radius: 2px;
870
+ background: var(--surface2);
871
+ width: 10px;
872
+ height: 10px;
873
+ }
874
+ .heatmap-cell.l1 {
875
+ background: #0e4429;
876
+ }
877
+ .heatmap-cell.l2 {
878
+ background: #006d32;
879
+ }
880
+ .heatmap-cell.l3 {
881
+ background: #26a641;
882
+ }
883
+ .heatmap-cell.l4 {
884
+ background: #39d353;
885
+ }
886
+ [data-theme="light"] .heatmap-cell.l1 {
887
+ background: #9be9a8;
888
+ }
889
+ [data-theme="light"] .heatmap-cell.l2 {
890
+ background: #40c463;
891
+ }
892
+ [data-theme="light"] .heatmap-cell.l3 {
893
+ background: #30a14e;
894
+ }
895
+ [data-theme="light"] .heatmap-cell.l4 {
896
+ background: #216e39;
897
+ }
898
+
899
+ .heatmap-months {
900
+ display: flex;
901
+ font-size: 0.5rem;
902
+ color: var(--text-dim);
903
+ margin-bottom: 0.2rem;
904
+ }
905
+ .heatmap-month {
906
+ flex: 1;
907
+ }
908
+
909
+ .chart-tooltip {
910
+ position: fixed;
911
+ pointer-events: none;
912
+ background: var(--surface);
913
+ color: var(--text);
914
+ border: 1px solid var(--border);
915
+ border-radius: 6px;
916
+ padding: 0.3rem 0.5rem;
917
+ font-size: 0.7rem;
918
+ white-space: nowrap;
919
+ z-index: 999;
920
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
921
+ opacity: 0;
922
+ transition: opacity 0.1s;
923
+ }
924
+ .chart-tooltip.visible {
925
+ opacity: 1;
926
+ }
927
+
928
+ .peak-hours {
929
+ display: flex;
930
+ align-items: flex-end;
931
+ gap: 2px;
932
+ height: 40px;
933
+ }
934
+ .peak-bar {
935
+ flex: 1;
936
+ background: var(--purple);
937
+ border-radius: 2px 2px 0 0;
938
+ min-width: 4px;
939
+ opacity: 0.7;
940
+ }
941
+ .peak-labels {
942
+ display: flex;
943
+ gap: 2px;
944
+ font-size: 0.45rem;
945
+ color: var(--text-dim);
946
+ }
947
+ .peak-label {
948
+ flex: 1;
949
+ text-align: center;
950
+ min-width: 4px;
951
+ }
952
+
953
+ .model-row {
954
+ display: flex;
955
+ justify-content: space-between;
956
+ padding: 0.2rem 0;
957
+ font-size: 0.72rem;
958
+ border-bottom: 1px solid var(--border);
959
+ }
960
+ .model-row:last-child {
961
+ border-bottom: none;
962
+ }
963
+ .model-name {
964
+ color: var(--text);
965
+ font-weight: 500;
966
+ }
967
+ .model-tokens {
968
+ color: var(--text-dim);
969
+ font-variant-numeric: tabular-nums;
970
+ }
971
+ .token-breakdown {
972
+ margin-top: 0.25rem;
973
+ }
974
+ .tb-row {
975
+ display: flex;
976
+ justify-content: space-between;
977
+ padding: 0.15rem 0;
978
+ font-size: 0.68rem;
979
+ }
980
+ .tb-label {
981
+ color: var(--text-dim);
982
+ }
983
+ .tb-val {
984
+ color: var(--text);
985
+ font-variant-numeric: tabular-nums;
986
+ font-weight: 500;
987
+ }
988
+
989
+ .health-bar {
990
+ height: 4px;
991
+ background: var(--surface2);
992
+ border-radius: 2px;
993
+ margin: 0.4rem 0 0.5rem;
994
+ position: relative;
995
+ overflow: hidden;
996
+ }
997
+ .health-fill {
998
+ height: 100%;
999
+ border-radius: 2px;
1000
+ transition: width 0.3s;
1001
+ }
1002
+ .health-label {
1003
+ position: absolute;
1004
+ right: 0;
1005
+ top: -14px;
1006
+ font-size: 0.55rem;
1007
+ color: var(--text-dim);
1008
+ }
1009
+ .badge.stack {
1010
+ color: var(--accent);
1011
+ border-color: var(--accent-dim);
1012
+ background: rgba(196, 149, 106, 0.08);
1013
+ text-transform: none;
1014
+ }
1015
+ .drift {
1016
+ font-size: 0.58rem;
1017
+ margin-left: 0.4rem;
1018
+ font-weight: 600;
1019
+ }
1020
+ .drift-low {
1021
+ color: var(--text-dim);
1022
+ }
1023
+ .drift-medium {
1024
+ color: var(--yellow);
1025
+ }
1026
+ .drift-high {
1027
+ color: var(--red);
1028
+ }
1029
+ .quick-wins {
1030
+ display: flex;
1031
+ flex-wrap: wrap;
1032
+ gap: 0.3rem;
1033
+ margin-bottom: 0.5rem;
1034
+ }
1035
+ .quick-win {
1036
+ font-size: 0.6rem;
1037
+ padding: 0.15rem 0.4rem;
1038
+ border-radius: 3px;
1039
+ background: rgba(251, 191, 36, 0.08);
1040
+ border: 1px solid rgba(251, 191, 36, 0.2);
1041
+ color: var(--yellow);
1042
+ }
1043
+ .matched-skills {
1044
+ display: flex;
1045
+ flex-wrap: wrap;
1046
+ gap: 0.3rem;
1047
+ margin-bottom: 0.5rem;
1048
+ }
1049
+ .matched-skill {
1050
+ font-size: 0.6rem;
1051
+ padding: 0.12rem 0.4rem;
1052
+ border-radius: 3px;
1053
+ background: rgba(251, 191, 36, 0.08);
1054
+ border: 1px solid rgba(251, 191, 36, 0.2);
1055
+ color: var(--yellow);
1056
+ font-family: "SF Mono", monospace;
1057
+ }
1058
+ .similar-repos {
1059
+ display: flex;
1060
+ flex-wrap: wrap;
1061
+ gap: 0.3rem;
1062
+ margin-bottom: 0.5rem;
1063
+ }
1064
+ .similar-repo {
1065
+ font-size: 0.6rem;
1066
+ padding: 0.12rem 0.4rem;
1067
+ border-radius: 3px;
1068
+ background: rgba(99, 179, 237, 0.08);
1069
+ border: 1px solid rgba(99, 179, 237, 0.2);
1070
+ color: var(--blue);
1071
+ font-family: "SF Mono", monospace;
1072
+ }
1073
+ .similar-repo small {
1074
+ opacity: 0.6;
1075
+ }
1076
+ .consolidation-hint {
1077
+ padding: 0.45rem 0.6rem;
1078
+ background: var(--surface2);
1079
+ border-radius: 6px;
1080
+ margin-top: 0.4rem;
1081
+ display: flex;
1082
+ align-items: baseline;
1083
+ gap: 0.5rem;
1084
+ }
1085
+ .consolidation-hint:first-child {
1086
+ margin-top: 0;
1087
+ }
1088
+ .consolidation-stack {
1089
+ font-size: 0.7rem;
1090
+ font-weight: 600;
1091
+ color: var(--accent);
1092
+ white-space: nowrap;
1093
+ }
1094
+ .consolidation-text {
1095
+ font-size: 0.7rem;
1096
+ color: var(--text-dim);
1097
+ }
1098
+
1099
+ .unconfigured-item .stack-tag {
1100
+ font-size: 0.5rem;
1101
+ color: var(--accent-dim);
1102
+ margin-left: 0.3rem;
1103
+ }
1104
+
1105
+ .freshness-dot {
1106
+ display: inline-block;
1107
+ width: 6px;
1108
+ height: 6px;
1109
+ border-radius: 50%;
1110
+ }
1111
+ .freshness-dot.fresh {
1112
+ background: var(--green);
1113
+ }
1114
+ .freshness-dot.aging {
1115
+ background: var(--yellow);
1116
+ }
1117
+ .freshness-dot.stale {
1118
+ background: var(--red);
1119
+ }
1120
+
1121
+ .repo-body {
1122
+ padding: 0 1rem 1rem;
1123
+ }
1124
+ .repo-meta {
1125
+ display: flex;
1126
+ justify-content: space-between;
1127
+ align-items: center;
1128
+ margin-bottom: 0.5rem;
1129
+ padding-bottom: 0.4rem;
1130
+ border-bottom: 1px solid var(--border);
1131
+ }
1132
+ .repo-path {
1133
+ font-size: 0.68rem;
1134
+ color: var(--text-dim);
1135
+ font-family: "SF Mono", monospace;
1136
+ }
1137
+ .freshness {
1138
+ font-size: 0.65rem;
1139
+ font-weight: 500;
1140
+ }
1141
+ .freshness.fresh {
1142
+ color: var(--green);
1143
+ }
1144
+ .freshness.aging {
1145
+ color: var(--yellow);
1146
+ }
1147
+ .freshness.stale {
1148
+ color: var(--red);
1149
+ }
1150
+ .repo-desc {
1151
+ color: var(--text-dim);
1152
+ font-size: 0.75rem;
1153
+ line-height: 1.45;
1154
+ margin-bottom: 0.75rem;
1155
+ padding-bottom: 0.6rem;
1156
+ border-bottom: 1px solid var(--border);
1157
+ }
1158
+
1159
+ .unconfigured-grid {
1160
+ display: grid;
1161
+ grid-template-columns: repeat(4, 1fr);
1162
+ gap: 0.4rem;
1163
+ }
1164
+ @media (max-width: 900px) {
1165
+ .unconfigured-grid {
1166
+ grid-template-columns: repeat(2, 1fr);
1167
+ }
1168
+ }
1169
+ .unconfigured-item {
1170
+ font-size: 0.72rem;
1171
+ padding: 0.3rem 0.5rem;
1172
+ border-radius: 4px;
1173
+ background: var(--surface2);
1174
+ color: var(--text-dim);
1175
+ }
1176
+ .unconfigured-item .upath {
1177
+ font-size: 0.6rem;
1178
+ color: #555;
1179
+ display: block;
1180
+ overflow: hidden;
1181
+ text-overflow: ellipsis;
1182
+ white-space: nowrap;
1183
+ }
1184
+ .suggestion-hints {
1185
+ display: flex;
1186
+ flex-wrap: wrap;
1187
+ gap: 0.2rem;
1188
+ margin-top: 0.25rem;
1189
+ }
1190
+ .suggestion-hint {
1191
+ font-size: 0.5rem;
1192
+ padding: 0.08rem 0.3rem;
1193
+ border-radius: 2px;
1194
+ background: rgba(96, 165, 250, 0.08);
1195
+ border: 1px solid rgba(96, 165, 250, 0.15);
1196
+ color: var(--blue);
1197
+ }
1198
+
1199
+ .ts {
1200
+ text-align: center;
1201
+ color: var(--text-dim);
1202
+ font-size: 0.65rem;
1203
+ margin-top: 2rem;
1204
+ padding-top: 1rem;
1205
+ border-top: 1px solid var(--border);
1206
+ }
1207
+
1208
+ .theme-toggle {
1209
+ background: var(--surface);
1210
+ border: 1px solid var(--border);
1211
+ border-radius: 8px;
1212
+ padding: 0.4rem 0.6rem;
1213
+ cursor: pointer;
1214
+ color: var(--text-dim);
1215
+ font-size: 0.75rem;
1216
+ transition:
1217
+ background 0.15s,
1218
+ border-color 0.15s;
1219
+ }
1220
+ .theme-toggle:hover {
1221
+ border-color: var(--accent-dim);
1222
+ }
1223
+ .theme-icon::before {
1224
+ content: "\263E";
1225
+ }
1226
+ [data-theme="light"] .theme-icon::before {
1227
+ content: "\2600";
1228
+ }
1229
+
1230
+ .ref-grid {
1231
+ display: grid;
1232
+ grid-template-columns: 1fr 1fr;
1233
+ gap: 1.25rem;
1234
+ }
1235
+ @media (max-width: 700px) {
1236
+ .ref-grid {
1237
+ grid-template-columns: 1fr;
1238
+ }
1239
+ }
1240
+ .ref-row {
1241
+ display: flex;
1242
+ align-items: baseline;
1243
+ gap: 0.5rem;
1244
+ padding: 0.2rem 0;
1245
+ font-size: 0.72rem;
1246
+ }
1247
+ .ref-cmd {
1248
+ font-size: 0.7rem;
1249
+ color: var(--green);
1250
+ white-space: nowrap;
1251
+ min-width: 100px;
1252
+ }
1253
+ .ref-key {
1254
+ min-width: 90px;
1255
+ font-size: 0.65rem;
1256
+ }
1257
+ .ref-desc {
1258
+ color: var(--text-dim);
1259
+ font-size: 0.68rem;
1260
+ }
1261
+
1262
+ details.skill-category > summary {
1263
+ cursor: pointer;
1264
+ list-style: none;
1265
+ }
1266
+ details.skill-category > summary::-webkit-details-marker {
1267
+ display: none;
1268
+ }
1269
+ details.skill-category > summary:hover {
1270
+ color: var(--accent);
1271
+ }
1272
+ details.skill-category[open] > summary {
1273
+ color: var(--blue);
1274
+ }
1275
+
1276
+ .group-controls {
1277
+ display: flex;
1278
+ align-items: center;
1279
+ gap: 0.5rem;
1280
+ margin-bottom: 1rem;
1281
+ }
1282
+ .group-label {
1283
+ font-size: 0.7rem;
1284
+ color: var(--text-dim);
1285
+ text-transform: uppercase;
1286
+ letter-spacing: 0.06em;
1287
+ }
1288
+ .group-select {
1289
+ font-size: 0.75rem;
1290
+ padding: 0.3rem 0.5rem;
1291
+ background: var(--surface);
1292
+ color: var(--text);
1293
+ border: 1px solid var(--border);
1294
+ border-radius: 6px;
1295
+ outline: none;
1296
+ font-family: inherit;
1297
+ }
1298
+ .group-select:focus {
1299
+ border-color: var(--accent-dim);
1300
+ }
1301
+ .group-heading {
1302
+ font-size: 0.75rem;
1303
+ font-weight: 700;
1304
+ text-transform: uppercase;
1305
+ letter-spacing: 0.06em;
1306
+ color: var(--accent);
1307
+ padding: 0.5rem 0 0.25rem;
1308
+ margin-top: 0.75rem;
1309
+ border-bottom: 1px solid var(--border);
1310
+ grid-column: 1 / -1;
1311
+ }
1312
+
1313
+ .repo-card[open] .repo-preview {
1314
+ display: none;
1315
+ }
1316
+ details.cmd-detail[open] .cmd-desc {
1317
+ white-space: normal;
1318
+ text-overflow: unset;
1319
+ overflow: visible;
1320
+ }