claude-code-marketplace 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.
@@ -0,0 +1,1242 @@
1
+ /* === VARIABLES (from cck) === */
2
+
3
+ :root {
4
+ --bg-deep: #101114;
5
+ --bg-surface: #16181c;
6
+ --bg-elevated: #1e2025;
7
+ --bg-hover: #282a30;
8
+ --border: #363840;
9
+ --text-primary: #f0f1f3;
10
+ --text-secondary: #c2c4c9;
11
+ --text-tertiary: #9a9da5;
12
+ --text-muted: #7d808a;
13
+ --accent: #e86f33;
14
+ --accent-text: #f0a070;
15
+ --accent-dim: rgba(232, 111, 51, 0.22);
16
+ --accent-glow: rgba(232, 111, 51, 0.55);
17
+ --success: #3ecf8e;
18
+ --success-dim: rgba(62, 207, 142, 0.18);
19
+ --warning: #f0b429;
20
+ --warning-dim: rgba(240, 180, 41, 0.18);
21
+ --error: #ef4444;
22
+ --error-dim: rgba(239, 68, 68, 0.18);
23
+ --team: #c4956a;
24
+ --team-dim: rgba(196, 149, 106, 0.18);
25
+ --plan: #86a886;
26
+ --plan-dim: rgba(134, 168, 134, 0.18);
27
+ --mono: 'IBM Plex Mono', monospace;
28
+ --serif: 'Playfair Display', serif;
29
+
30
+ --scope-user: #c4956a;
31
+ --scope-user-dim: rgba(196, 149, 106, 0.18);
32
+ --scope-project: #7ab5a0;
33
+ --scope-project-dim: rgba(122, 181, 160, 0.18);
34
+ --scope-local: #f0b429;
35
+ --scope-local-dim: rgba(240, 180, 41, 0.18);
36
+ }
37
+
38
+ body.light {
39
+ --bg-deep: #e8e6e3;
40
+ --bg-surface: #f4f3f1;
41
+ --bg-elevated: #dddbd8;
42
+ --bg-hover: #d2d0cc;
43
+ --border: #a09b94;
44
+ --text-primary: #0a0a0a;
45
+ --text-secondary: #444444;
46
+ --text-tertiary: #666666;
47
+ --text-muted: #888888;
48
+ --accent-text: #b85a20;
49
+ --accent-dim: rgba(232, 111, 51, 0.18);
50
+ --accent-glow: rgba(232, 111, 51, 0.5);
51
+ --success: #1a8a5a;
52
+ --success-dim: rgba(26, 138, 90, 0.15);
53
+ --warning: #b07d0a;
54
+ --warning-dim: rgba(176, 125, 10, 0.15);
55
+ --error: #c53030;
56
+ --error-dim: rgba(197, 48, 48, 0.15);
57
+ --plan: #5a7a5a;
58
+ --plan-dim: rgba(90, 122, 90, 0.15);
59
+
60
+ --scope-user: #9a6d3a;
61
+ --scope-user-dim: rgba(154, 109, 58, 0.15);
62
+ --scope-project: #4d8a72;
63
+ --scope-project-dim: rgba(77, 138, 114, 0.15);
64
+ --scope-local: #b07d0a;
65
+ --scope-local-dim: rgba(176, 125, 10, 0.15);
66
+ }
67
+
68
+ @media (prefers-color-scheme: light) {
69
+ body:not(.dark-forced) {
70
+ --bg-deep: #e8e6e3;
71
+ --bg-surface: #f4f3f1;
72
+ --bg-elevated: #dddbd8;
73
+ --bg-hover: #d2d0cc;
74
+ --border: #a09b94;
75
+ --text-primary: #0a0a0a;
76
+ --text-secondary: #444444;
77
+ --text-tertiary: #666666;
78
+ --text-muted: #888888;
79
+ --accent-text: #b85a20;
80
+ --accent-dim: rgba(232, 111, 51, 0.18);
81
+ --accent-glow: rgba(232, 111, 51, 0.5);
82
+ --success: #1a8a5a;
83
+ --success-dim: rgba(26, 138, 90, 0.15);
84
+ --warning: #b07d0a;
85
+ --warning-dim: rgba(176, 125, 10, 0.15);
86
+ --error: #c53030;
87
+ --error-dim: rgba(197, 48, 48, 0.15);
88
+ --plan: #5a7a5a;
89
+ --plan-dim: rgba(90, 122, 90, 0.15);
90
+ --scope-user: #9a6d3a;
91
+ --scope-user-dim: rgba(154, 109, 58, 0.15);
92
+ --scope-project: #4d8a72;
93
+ --scope-project-dim: rgba(77, 138, 114, 0.15);
94
+ --scope-local: #b07d0a;
95
+ --scope-local-dim: rgba(176, 125, 10, 0.15);
96
+ }
97
+ }
98
+
99
+ /* === RESET === */
100
+
101
+ * {
102
+ box-sizing: border-box;
103
+ margin: 0;
104
+ padding: 0;
105
+ }
106
+
107
+ body {
108
+ font-family: var(--mono);
109
+ font-size: 13px;
110
+ background: var(--bg-deep);
111
+ color: var(--text-primary);
112
+ line-height: 1.5;
113
+ height: 100vh;
114
+ display: flex;
115
+ zoom: 1.2;
116
+ flex-direction: column;
117
+ overflow: hidden;
118
+ -webkit-font-smoothing: antialiased;
119
+ }
120
+
121
+ /* === SCROLLBAR === */
122
+
123
+ ::-webkit-scrollbar {
124
+ width: 6px;
125
+ height: 6px;
126
+ }
127
+ ::-webkit-scrollbar-track {
128
+ background: transparent;
129
+ }
130
+ ::-webkit-scrollbar-thumb {
131
+ background: var(--border);
132
+ border-radius: 3px;
133
+ }
134
+ ::-webkit-scrollbar-thumb:hover {
135
+ background: var(--text-muted);
136
+ }
137
+
138
+ /* === TOPBAR === */
139
+
140
+ .topbar {
141
+ display: flex;
142
+ align-items: center;
143
+ gap: 12px;
144
+ padding: 10px 16px;
145
+ background: var(--bg-surface);
146
+ border-bottom: 1px solid var(--border);
147
+ flex-shrink: 0;
148
+ z-index: 10;
149
+ }
150
+
151
+ .topbar-logo {
152
+ display: flex;
153
+ align-items: center;
154
+ gap: 10px;
155
+ }
156
+
157
+ .topbar-logo .logo-mark {
158
+ width: 24px;
159
+ height: 24px;
160
+ background: var(--accent);
161
+ border-radius: 6px;
162
+ display: flex;
163
+ align-items: center;
164
+ justify-content: center;
165
+ }
166
+
167
+ .topbar-logo .logo-mark svg {
168
+ width: 14px;
169
+ height: 14px;
170
+ color: white;
171
+ }
172
+
173
+ .topbar-logo .logo-text {
174
+ font-family: var(--serif);
175
+ font-size: 17px;
176
+ font-weight: 500;
177
+ letter-spacing: -0.02em;
178
+ }
179
+
180
+ .accent {
181
+ color: var(--accent);
182
+ }
183
+ .spacer {
184
+ flex: 1;
185
+ }
186
+
187
+ .topbar-search {
188
+ display: flex;
189
+ align-items: center;
190
+ gap: 6px;
191
+ background: var(--bg-elevated);
192
+ border: 1px solid var(--border);
193
+ border-radius: 6px;
194
+ padding: 6px 10px;
195
+ transition: border-color 0.15s ease;
196
+ }
197
+ .topbar-search:focus-within {
198
+ border-color: var(--accent);
199
+ }
200
+ .topbar-search svg {
201
+ color: var(--text-muted);
202
+ flex-shrink: 0;
203
+ }
204
+ .topbar-search input {
205
+ background: none;
206
+ border: none;
207
+ color: var(--text-primary);
208
+ font-size: 12px;
209
+ font-family: var(--mono);
210
+ outline: none;
211
+ width: 200px;
212
+ }
213
+ .topbar-search input::placeholder {
214
+ color: var(--text-muted);
215
+ }
216
+
217
+ .topbar-select {
218
+ background: var(--bg-elevated);
219
+ border: 1px solid var(--border);
220
+ border-radius: 6px;
221
+ color: var(--text-secondary);
222
+ font-family: var(--mono);
223
+ font-size: 11px;
224
+ padding: 4px 8px;
225
+ outline: none;
226
+ cursor: pointer;
227
+ }
228
+ .topbar-select:focus {
229
+ border-color: var(--accent);
230
+ }
231
+ .topbar-select option {
232
+ background: var(--bg-surface);
233
+ color: var(--text-primary);
234
+ }
235
+
236
+ .topbar-project {
237
+ display: flex;
238
+ align-items: center;
239
+ gap: 6px;
240
+ font-size: 11px;
241
+ color: var(--text-tertiary);
242
+ background: var(--bg-elevated);
243
+ padding: 6px 10px;
244
+ border-radius: 6px;
245
+ cursor: pointer;
246
+ border: 1px solid var(--border);
247
+ max-width: 300px;
248
+ transition: all 0.15s ease;
249
+ }
250
+ .topbar-project:hover {
251
+ border-color: var(--accent);
252
+ color: var(--text-secondary);
253
+ }
254
+ .topbar-project svg {
255
+ color: var(--text-muted);
256
+ flex-shrink: 0;
257
+ }
258
+ .topbar-project span {
259
+ overflow: hidden;
260
+ text-overflow: ellipsis;
261
+ white-space: nowrap;
262
+ }
263
+
264
+ .topbar-btn {
265
+ display: flex;
266
+ align-items: center;
267
+ gap: 5px;
268
+ padding: 6px 10px;
269
+ border-radius: 6px;
270
+ font-size: 11px;
271
+ font-weight: 500;
272
+ cursor: pointer;
273
+ border: 1px solid var(--border);
274
+ background: var(--bg-elevated);
275
+ color: var(--text-tertiary);
276
+ font-family: var(--mono);
277
+ transition: all 0.15s ease;
278
+ white-space: nowrap;
279
+ text-transform: uppercase;
280
+ letter-spacing: 0.03em;
281
+ }
282
+ .topbar-btn:hover {
283
+ border-color: var(--accent);
284
+ color: var(--text-secondary);
285
+ }
286
+ .topbar-btn svg {
287
+ color: var(--text-muted);
288
+ }
289
+ .topbar-btn.loading svg {
290
+ animation: spin 1s linear infinite;
291
+ }
292
+ @keyframes spin {
293
+ from {
294
+ transform: rotate(0deg);
295
+ }
296
+ to {
297
+ transform: rotate(360deg);
298
+ }
299
+ }
300
+
301
+ /* === MAIN LAYOUT === */
302
+
303
+ .main-layout {
304
+ display: flex;
305
+ flex: 1;
306
+ overflow: hidden;
307
+ }
308
+
309
+ /* === TREE PANEL === */
310
+
311
+ .tree-panel {
312
+ flex: 1;
313
+ display: flex;
314
+ flex-direction: column;
315
+ overflow: hidden;
316
+ min-width: 400px;
317
+ }
318
+
319
+ .tree-container {
320
+ flex: 1;
321
+ overflow-y: auto;
322
+ overflow-x: hidden;
323
+ }
324
+
325
+ .loading {
326
+ display: flex;
327
+ align-items: center;
328
+ justify-content: center;
329
+ height: 100%;
330
+ color: var(--text-muted);
331
+ font-size: 12px;
332
+ }
333
+
334
+ /* === TREE ROWS === */
335
+
336
+ .tree-row {
337
+ display: flex;
338
+ align-items: center;
339
+ gap: 6px;
340
+ padding: 6px 12px;
341
+ font-size: 12px;
342
+ cursor: pointer;
343
+ transition: background 0.1s ease;
344
+ min-height: 34px;
345
+ flex-wrap: nowrap;
346
+ border-left: 2px solid transparent;
347
+ }
348
+ .tree-row:hover {
349
+ background: var(--bg-hover);
350
+ }
351
+ .tree-row.selected {
352
+ background: var(--bg-hover);
353
+ border-left-color: var(--accent);
354
+ }
355
+ .tree-row.focused {
356
+ outline: 1px solid var(--accent);
357
+ outline-offset: -1px;
358
+ background: var(--bg-hover);
359
+ }
360
+ .tree-row.marketplace-row {
361
+ background: var(--bg-surface);
362
+ border-bottom: 1px solid var(--border);
363
+ position: sticky;
364
+ top: 0;
365
+ z-index: 2;
366
+ font-size: 11px;
367
+ text-transform: uppercase;
368
+ letter-spacing: 0.04em;
369
+ padding: 8px 12px;
370
+ }
371
+ .tree-row.marketplace-row.virtual .tree-icon {
372
+ color: var(--plan);
373
+ }
374
+
375
+ .tree-indent {
376
+ flex-shrink: 0;
377
+ }
378
+ .tree-chevron {
379
+ width: 16px;
380
+ height: 16px;
381
+ display: flex;
382
+ align-items: center;
383
+ justify-content: center;
384
+ color: var(--text-muted);
385
+ font-size: 9px;
386
+ transition: transform 0.15s ease;
387
+ flex-shrink: 0;
388
+ }
389
+ .tree-chevron.expanded {
390
+ transform: rotate(90deg);
391
+ }
392
+ .tree-icon {
393
+ flex-shrink: 0;
394
+ width: 18px;
395
+ display: flex;
396
+ align-items: center;
397
+ justify-content: center;
398
+ opacity: 0.45;
399
+ }
400
+ .tree-icon svg {
401
+ width: 14px;
402
+ height: 14px;
403
+ }
404
+ .tree-label {
405
+ flex-shrink: 0;
406
+ white-space: nowrap;
407
+ text-overflow: ellipsis;
408
+ color: var(--text-secondary);
409
+ }
410
+ .version {
411
+ font-size: 10px;
412
+ color: var(--accent);
413
+ background: var(--accent-dim);
414
+ padding: 1px 5px;
415
+ border-radius: 3px;
416
+ margin-left: 6px;
417
+ font-family: var(--mono);
418
+ letter-spacing: 0.02em;
419
+ white-space: nowrap;
420
+ flex-shrink: 0;
421
+ }
422
+ .tree-label .mkt-name {
423
+ font-weight: 600;
424
+ color: var(--text-primary);
425
+ }
426
+ .tree-meta {
427
+ font-size: 10px;
428
+ color: var(--text-muted);
429
+ flex-shrink: 0;
430
+ white-space: nowrap;
431
+ }
432
+
433
+ /* === SCOPE TOGGLE BOXES === */
434
+
435
+ .scope-toggles {
436
+ display: flex;
437
+ gap: 3px;
438
+ flex-shrink: 0;
439
+ }
440
+ .scope-toggle {
441
+ width: 20px;
442
+ height: 16px;
443
+ border-radius: 3px;
444
+ font-size: 9px;
445
+ font-weight: 700;
446
+ display: flex;
447
+ align-items: center;
448
+ justify-content: center;
449
+ cursor: pointer;
450
+ transition: all 0.15s ease;
451
+ border: 1px solid;
452
+ font-family: var(--mono);
453
+ }
454
+ .scope-toggle:hover {
455
+ transform: scale(1.15);
456
+ }
457
+
458
+ .scope-toggle.user {
459
+ border-color: rgba(196, 149, 106, 0.4);
460
+ color: rgba(196, 149, 106, 0.5);
461
+ }
462
+ .scope-toggle.user.active {
463
+ background: var(--scope-user-dim);
464
+ color: var(--scope-user);
465
+ border-color: var(--scope-user);
466
+ }
467
+ .scope-toggle.user.disabled {
468
+ background: var(--scope-user-dim);
469
+ color: var(--scope-user);
470
+ border-color: var(--scope-user);
471
+ opacity: 0.4;
472
+ text-decoration: line-through;
473
+ }
474
+
475
+ .scope-toggle.project {
476
+ border-color: rgba(122, 181, 160, 0.4);
477
+ color: rgba(122, 181, 160, 0.5);
478
+ }
479
+ .scope-toggle.project.active {
480
+ background: var(--scope-project-dim);
481
+ color: var(--scope-project);
482
+ border-color: var(--scope-project);
483
+ }
484
+ .scope-toggle.project.disabled {
485
+ background: var(--scope-project-dim);
486
+ color: var(--scope-project);
487
+ border-color: var(--scope-project);
488
+ opacity: 0.4;
489
+ text-decoration: line-through;
490
+ }
491
+
492
+ .scope-toggle.local {
493
+ border-color: rgba(240, 180, 41, 0.4);
494
+ color: rgba(240, 180, 41, 0.5);
495
+ }
496
+ .scope-toggle.local.active {
497
+ background: var(--scope-local-dim);
498
+ color: var(--scope-local);
499
+ border-color: var(--scope-local);
500
+ }
501
+ .scope-toggle.local.disabled {
502
+ background: var(--scope-local-dim);
503
+ color: var(--scope-local);
504
+ border-color: var(--scope-local);
505
+ opacity: 0.4;
506
+ text-decoration: line-through;
507
+ }
508
+
509
+ /* Light theme: boost inactive scope contrast further */
510
+ body.light .scope-toggle.user {
511
+ border-color: rgba(154, 109, 58, 0.5);
512
+ color: rgba(154, 109, 58, 0.6);
513
+ }
514
+ body.light .scope-toggle.project {
515
+ border-color: rgba(77, 138, 114, 0.5);
516
+ color: rgba(77, 138, 114, 0.6);
517
+ }
518
+ body.light .scope-toggle.local {
519
+ border-color: rgba(176, 125, 10, 0.5);
520
+ color: rgba(176, 125, 10, 0.6);
521
+ }
522
+
523
+ /* === BADGES === */
524
+
525
+ .badge {
526
+ padding: 1px 7px;
527
+ border-radius: 4px;
528
+ font-size: 10px;
529
+ font-weight: 500;
530
+ flex-shrink: 0;
531
+ text-transform: uppercase;
532
+ letter-spacing: 0.03em;
533
+ }
534
+ .badge-github {
535
+ background: var(--accent-dim);
536
+ color: var(--accent-text);
537
+ display: inline-flex;
538
+ align-items: center;
539
+ gap: 3px;
540
+ }
541
+ .badge-directory {
542
+ background: var(--warning-dim);
543
+ color: var(--warning);
544
+ }
545
+ .badge-git {
546
+ background: var(--team-dim);
547
+ color: var(--team);
548
+ }
549
+ .badge-virtual {
550
+ background: var(--plan-dim);
551
+ color: var(--plan);
552
+ }
553
+
554
+ /* === UPDATE INDICATORS === */
555
+
556
+ .update-indicator {
557
+ color: var(--success);
558
+ font-weight: 700;
559
+ font-size: 12px;
560
+ margin-left: 4px;
561
+ }
562
+
563
+ .update-badge {
564
+ font-size: 10px;
565
+ color: var(--success);
566
+ background: var(--success-dim);
567
+ padding: 1px 6px;
568
+ border-radius: 3px;
569
+ flex-shrink: 0;
570
+ font-weight: 500;
571
+ }
572
+
573
+ .update-banner {
574
+ display: flex;
575
+ align-items: center;
576
+ justify-content: space-between;
577
+ gap: 12px;
578
+ padding: 10px 12px;
579
+ margin-bottom: 16px;
580
+ background: var(--success-dim);
581
+ border: 1px solid rgba(62, 207, 142, 0.3);
582
+ border-radius: 6px;
583
+ font-size: 12px;
584
+ color: var(--success);
585
+ }
586
+
587
+ .badge-count {
588
+ font-size: 10px;
589
+ color: var(--text-muted);
590
+ flex-shrink: 0;
591
+ }
592
+
593
+ .mkt-info-btn {
594
+ background: none;
595
+ border: none;
596
+ outline: none;
597
+ color: var(--text-muted);
598
+ cursor: pointer;
599
+ padding: 4px;
600
+ margin-left: auto;
601
+ border-radius: 4px;
602
+ display: flex;
603
+ align-items: center;
604
+ flex-shrink: 0;
605
+ }
606
+ .mkt-info-btn:hover {
607
+ color: var(--accent);
608
+ }
609
+
610
+ .detail-meta-grid {
611
+ display: grid;
612
+ grid-template-columns: auto 1fr;
613
+ gap: 6px 12px;
614
+ font-size: 12px;
615
+ }
616
+ .meta-label {
617
+ color: var(--text-muted);
618
+ white-space: nowrap;
619
+ }
620
+ .meta-value {
621
+ color: var(--text-secondary);
622
+ }
623
+
624
+ .mkt-actions {
625
+ display: flex;
626
+ gap: 8px;
627
+ }
628
+
629
+ .mkt-plugin-item {
630
+ display: flex;
631
+ justify-content: space-between;
632
+ padding: 5px 8px;
633
+ font-size: 12px;
634
+ color: var(--text-secondary);
635
+ border-radius: 4px;
636
+ cursor: pointer;
637
+ transition: background 0.1s;
638
+ }
639
+ .mkt-plugin-item:hover {
640
+ background: var(--bg-hover);
641
+ }
642
+
643
+ /* === TREE CHILDREN === */
644
+
645
+ .tree-children {
646
+ display: none;
647
+ }
648
+ .tree-children.open {
649
+ display: block;
650
+ }
651
+
652
+ .tree-desc-inline {
653
+ font-size: 11px;
654
+ color: var(--text-muted);
655
+ opacity: 0.8;
656
+ white-space: nowrap;
657
+ overflow: hidden;
658
+ text-overflow: ellipsis;
659
+ min-width: 0;
660
+ flex: 1 1 0;
661
+ }
662
+
663
+ /* === COMPONENT ROWS === */
664
+
665
+ .comp-row {
666
+ display: flex;
667
+ align-items: center;
668
+ gap: 6px;
669
+ padding: 3px 12px 3px 76px;
670
+ font-size: 11px;
671
+ color: var(--text-tertiary);
672
+ min-height: 26px;
673
+ }
674
+ .comp-row:hover {
675
+ background: var(--bg-hover);
676
+ cursor: pointer;
677
+ }
678
+ .comp-icon {
679
+ width: 16px;
680
+ display: flex;
681
+ align-items: center;
682
+ justify-content: center;
683
+ flex-shrink: 0;
684
+ opacity: 0.5;
685
+ }
686
+ .comp-icon svg {
687
+ width: 12px;
688
+ height: 12px;
689
+ }
690
+ .comp-count {
691
+ margin-left: auto;
692
+ font-size: 10px;
693
+ color: var(--text-muted);
694
+ font-family: var(--mono);
695
+ background: var(--bg-elevated);
696
+ padding: 0 5px;
697
+ border-radius: 3px;
698
+ }
699
+
700
+ /* === DETAIL PANEL === */
701
+
702
+ .detail-panel {
703
+ width: 500px;
704
+ flex-shrink: 0;
705
+ background: var(--bg-surface);
706
+ border-left: 1px solid var(--border);
707
+ display: flex;
708
+ flex-direction: column;
709
+ overflow: hidden;
710
+ }
711
+
712
+ .detail-empty {
713
+ display: flex;
714
+ flex-direction: column;
715
+ align-items: center;
716
+ justify-content: center;
717
+ height: 100%;
718
+ color: var(--text-muted);
719
+ gap: 12px;
720
+ font-size: 12px;
721
+ }
722
+
723
+ .detail-header {
724
+ padding: 14px 16px;
725
+ border-bottom: 1px solid var(--border);
726
+ display: flex;
727
+ align-items: center;
728
+ justify-content: space-between;
729
+ flex-shrink: 0;
730
+ background-image: linear-gradient(to right, transparent, var(--border), transparent);
731
+ background-size: 100% 1px;
732
+ background-repeat: no-repeat;
733
+ background-position: bottom;
734
+ border-bottom: none;
735
+ }
736
+ .detail-header h3 {
737
+ font-size: 14px;
738
+ font-weight: 600;
739
+ color: var(--text-primary);
740
+ display: flex;
741
+ align-items: center;
742
+ gap: 8px;
743
+ }
744
+ .detail-header h3 svg {
745
+ width: 16px;
746
+ height: 16px;
747
+ opacity: 0.5;
748
+ }
749
+ .detail-header h3 .version {
750
+ font-size: 11px;
751
+ font-weight: 400;
752
+ }
753
+ .detail-close {
754
+ background: transparent;
755
+ border: 1px solid transparent;
756
+ border-radius: 6px;
757
+ color: var(--text-muted);
758
+ cursor: pointer;
759
+ font-size: 15px;
760
+ padding: 4px 8px;
761
+ transition: all 0.15s ease;
762
+ }
763
+ .detail-close:hover {
764
+ background: var(--bg-hover);
765
+ border-color: var(--border);
766
+ color: var(--text-secondary);
767
+ }
768
+
769
+ .detail-body {
770
+ flex: 1;
771
+ overflow-y: auto;
772
+ padding: 16px;
773
+ }
774
+
775
+ .detail-section {
776
+ margin-bottom: 20px;
777
+ }
778
+ .detail-section h4 {
779
+ font-size: 10px;
780
+ text-transform: uppercase;
781
+ letter-spacing: 0.08em;
782
+ color: var(--text-muted);
783
+ margin-bottom: 8px;
784
+ font-weight: 600;
785
+ }
786
+
787
+ .detail-desc {
788
+ font-size: 12px;
789
+ line-height: 1.6;
790
+ color: var(--text-secondary);
791
+ margin-bottom: 10px;
792
+ }
793
+
794
+ .detail-meta-row {
795
+ display: flex;
796
+ gap: 8px;
797
+ align-items: center;
798
+ flex-wrap: wrap;
799
+ margin-bottom: 4px;
800
+ }
801
+ .detail-meta-item {
802
+ font-size: 10px;
803
+ color: var(--text-muted);
804
+ text-transform: uppercase;
805
+ letter-spacing: 0.03em;
806
+ }
807
+
808
+ /* === SCOPE MATRIX === */
809
+
810
+ .scope-matrix {
811
+ display: flex;
812
+ flex-direction: column;
813
+ gap: 4px;
814
+ }
815
+ .scope-matrix-row {
816
+ display: flex;
817
+ align-items: center;
818
+ gap: 10px;
819
+ padding: 8px 10px;
820
+ background: var(--bg-elevated);
821
+ border-radius: 6px;
822
+ font-size: 12px;
823
+ border: 1px solid var(--border);
824
+ transition: border-color 0.15s ease;
825
+ }
826
+ .scope-matrix-row:hover {
827
+ border-color: var(--accent-dim);
828
+ }
829
+ .scope-matrix-label {
830
+ width: 60px;
831
+ font-weight: 700;
832
+ font-size: 10px;
833
+ text-transform: uppercase;
834
+ letter-spacing: 0.05em;
835
+ flex-shrink: 0;
836
+ }
837
+ .scope-matrix-label.user {
838
+ color: var(--scope-user);
839
+ }
840
+ .scope-matrix-label.project {
841
+ color: var(--scope-project);
842
+ }
843
+ .scope-matrix-label.local {
844
+ color: var(--scope-local);
845
+ }
846
+ .scope-matrix-status {
847
+ flex: 1;
848
+ color: var(--text-tertiary);
849
+ font-size: 11px;
850
+ }
851
+ .scope-matrix-actions {
852
+ display: flex;
853
+ gap: 4px;
854
+ flex-shrink: 0;
855
+ }
856
+
857
+ /* === ACTION BUTTONS === */
858
+
859
+ .action-btn {
860
+ padding: 4px 10px;
861
+ border-radius: 4px;
862
+ font-size: 10px;
863
+ font-weight: 500;
864
+ cursor: pointer;
865
+ border: 1px solid var(--border);
866
+ background: var(--bg-elevated);
867
+ color: var(--text-tertiary);
868
+ font-family: var(--mono);
869
+ transition: all 0.15s ease;
870
+ white-space: nowrap;
871
+ text-transform: uppercase;
872
+ letter-spacing: 0.03em;
873
+ }
874
+ .action-btn:hover {
875
+ border-color: var(--accent);
876
+ color: var(--text-secondary);
877
+ }
878
+ .action-btn:disabled {
879
+ opacity: 0.35;
880
+ cursor: not-allowed;
881
+ }
882
+ .action-btn.primary {
883
+ background: var(--accent);
884
+ border-color: var(--accent);
885
+ color: #fff;
886
+ }
887
+ .action-btn.primary:hover {
888
+ background: var(--accent-glow);
889
+ }
890
+ .action-btn.danger {
891
+ color: var(--error);
892
+ }
893
+ .action-btn.danger:hover {
894
+ border-color: var(--error);
895
+ }
896
+
897
+ /* === DETAIL COMPONENT ROWS === */
898
+
899
+ .detail-comp-group {
900
+ margin-bottom: 8px;
901
+ }
902
+ .detail-comp-header {
903
+ display: flex;
904
+ align-items: center;
905
+ gap: 8px;
906
+ padding: 7px 10px;
907
+ border-radius: 6px 6px 0 0;
908
+ font-size: 12px;
909
+ font-weight: 600;
910
+ color: var(--text-secondary);
911
+ background: var(--bg-elevated);
912
+ border: 1px solid var(--border);
913
+ }
914
+ .detail-comp-header .count {
915
+ margin-left: auto;
916
+ color: var(--text-muted);
917
+ font-family: var(--mono);
918
+ font-size: 10px;
919
+ background: var(--bg-deep);
920
+ padding: 0 5px;
921
+ border-radius: 3px;
922
+ }
923
+ .detail-comp-items {
924
+ border: 1px solid var(--border);
925
+ border-top: none;
926
+ border-radius: 0 0 6px 6px;
927
+ overflow: hidden;
928
+ }
929
+ .detail-comp-item {
930
+ display: flex;
931
+ align-items: center;
932
+ gap: 8px;
933
+ padding: 5px 10px 5px 28px;
934
+ font-size: 12px;
935
+ color: var(--text-tertiary);
936
+ cursor: pointer;
937
+ transition: background 0.12s;
938
+ }
939
+ .detail-comp-item:hover {
940
+ background: var(--bg-hover);
941
+ color: var(--text-secondary);
942
+ }
943
+ .detail-comp-item .icon {
944
+ width: 14px;
945
+ display: flex;
946
+ align-items: center;
947
+ opacity: 0.5;
948
+ }
949
+ .detail-comp-item .icon svg {
950
+ width: 12px;
951
+ height: 12px;
952
+ }
953
+ .detail-comp-item.disabled {
954
+ cursor: default;
955
+ opacity: 0.5;
956
+ }
957
+ .detail-comp-item.disabled:hover {
958
+ background: none;
959
+ color: var(--text-tertiary);
960
+ }
961
+
962
+ /* === TOAST === */
963
+
964
+ .toast {
965
+ position: fixed;
966
+ bottom: 20px;
967
+ right: 20px;
968
+ padding: 10px 16px;
969
+ border-radius: 6px;
970
+ font-size: 12px;
971
+ font-weight: 500;
972
+ font-family: var(--mono);
973
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
974
+ z-index: 1000;
975
+ opacity: 0;
976
+ transform: translateY(10px);
977
+ transition: all 300ms ease;
978
+ max-width: 400px;
979
+ }
980
+ .toast.show {
981
+ opacity: 1;
982
+ transform: translateY(0);
983
+ }
984
+ .toast.success {
985
+ background: var(--success);
986
+ color: #000;
987
+ }
988
+ .toast.error {
989
+ background: var(--error);
990
+ color: #fff;
991
+ }
992
+ .toast.info {
993
+ background: var(--accent);
994
+ color: #fff;
995
+ }
996
+
997
+ /* === MODAL === */
998
+
999
+ .modal-overlay {
1000
+ position: fixed;
1001
+ inset: 0;
1002
+ background: rgba(0, 0, 0, 0.6);
1003
+ display: none;
1004
+ align-items: center;
1005
+ justify-content: center;
1006
+ z-index: 100;
1007
+ }
1008
+ .modal-overlay.open {
1009
+ display: flex;
1010
+ }
1011
+ .modal {
1012
+ background: var(--bg-surface);
1013
+ border: 1px solid var(--border);
1014
+ border-radius: 8px;
1015
+ box-shadow: 0 8px 40px rgba(0, 0, 0, 0.4);
1016
+ min-width: 360px;
1017
+ max-width: 500px;
1018
+ }
1019
+ .modal-header {
1020
+ display: flex;
1021
+ align-items: center;
1022
+ justify-content: space-between;
1023
+ padding: 14px 16px;
1024
+ border-bottom: 1px solid var(--border);
1025
+ }
1026
+ .modal-header h3 {
1027
+ font-size: 13px;
1028
+ font-weight: 600;
1029
+ }
1030
+ .modal-close {
1031
+ background: none;
1032
+ border: none;
1033
+ color: var(--text-muted);
1034
+ cursor: pointer;
1035
+ font-size: 16px;
1036
+ padding: 4px;
1037
+ }
1038
+ .modal-body {
1039
+ padding: 16px;
1040
+ }
1041
+ .modal-body .scope-option {
1042
+ display: flex;
1043
+ align-items: center;
1044
+ gap: 10px;
1045
+ padding: 10px 12px;
1046
+ margin-bottom: 6px;
1047
+ border-radius: 6px;
1048
+ border: 1px solid var(--border);
1049
+ cursor: pointer;
1050
+ transition: all 0.15s ease;
1051
+ }
1052
+ .modal-body .scope-option:hover {
1053
+ border-color: var(--accent);
1054
+ background: var(--bg-hover);
1055
+ }
1056
+ .modal-body .scope-option .dot {
1057
+ width: 10px;
1058
+ height: 10px;
1059
+ border-radius: 3px;
1060
+ flex-shrink: 0;
1061
+ }
1062
+ .modal-field {
1063
+ margin-bottom: 16px;
1064
+ }
1065
+ .modal-field label {
1066
+ display: block;
1067
+ font-size: 10px;
1068
+ text-transform: uppercase;
1069
+ letter-spacing: 0.08em;
1070
+ color: var(--text-muted);
1071
+ margin-bottom: 6px;
1072
+ font-weight: 600;
1073
+ }
1074
+ .modal-field input[type='text'] {
1075
+ width: 100%;
1076
+ padding: 8px 10px;
1077
+ background: var(--bg-elevated);
1078
+ border: 1px solid var(--border);
1079
+ border-radius: 6px;
1080
+ color: var(--text-primary);
1081
+ font-family: var(--mono);
1082
+ font-size: 12px;
1083
+ outline: none;
1084
+ transition: border-color 0.15s ease;
1085
+ }
1086
+ .modal-field input[type='text']:focus {
1087
+ border-color: var(--accent);
1088
+ }
1089
+ .modal-field input[type='text']::placeholder {
1090
+ color: var(--text-muted);
1091
+ }
1092
+ .modal-hint {
1093
+ display: block;
1094
+ font-size: 10px;
1095
+ color: var(--text-muted);
1096
+ margin-top: 4px;
1097
+ }
1098
+ .modal-actions {
1099
+ display: flex;
1100
+ justify-content: flex-end;
1101
+ gap: 6px;
1102
+ margin-top: 16px;
1103
+ }
1104
+
1105
+ /* === HELP MODAL === */
1106
+
1107
+ .help-modal {
1108
+ min-width: 420px;
1109
+ max-width: 520px;
1110
+ }
1111
+ .help-sections {
1112
+ display: grid;
1113
+ gap: 16px;
1114
+ }
1115
+ .help-section h4 {
1116
+ margin: 0 0 8px;
1117
+ font-size: 10px;
1118
+ text-transform: uppercase;
1119
+ letter-spacing: 0.08em;
1120
+ color: var(--text-muted);
1121
+ font-weight: 600;
1122
+ }
1123
+ .help-section table {
1124
+ width: 100%;
1125
+ font-size: 12px;
1126
+ border-collapse: collapse;
1127
+ }
1128
+ .help-section td {
1129
+ padding: 4px 0;
1130
+ }
1131
+ .help-section td:first-child {
1132
+ color: var(--text-secondary);
1133
+ white-space: nowrap;
1134
+ width: 130px;
1135
+ }
1136
+ .help-section td:last-child {
1137
+ color: var(--text-tertiary);
1138
+ }
1139
+
1140
+ kbd {
1141
+ background: var(--bg-hover);
1142
+ border: 1px solid var(--border);
1143
+ padding: 2px 6px;
1144
+ border-radius: 4px;
1145
+ font-family: var(--mono);
1146
+ font-size: 11px;
1147
+ color: var(--text-secondary);
1148
+ white-space: nowrap;
1149
+ }
1150
+
1151
+ /* === CONTENT MODAL === */
1152
+
1153
+ .content-modal {
1154
+ min-width: unset;
1155
+ max-width: unset;
1156
+ width: 70vw;
1157
+ height: 70vh;
1158
+ display: flex;
1159
+ flex-direction: column;
1160
+ }
1161
+ .content-modal-body {
1162
+ display: flex;
1163
+ flex: 1;
1164
+ overflow: hidden;
1165
+ }
1166
+ .content-tree {
1167
+ width: 220px;
1168
+ min-width: 180px;
1169
+ border-right: 1px solid var(--border);
1170
+ overflow-y: auto;
1171
+ padding: 8px 0;
1172
+ }
1173
+ .content-tree-item {
1174
+ display: flex;
1175
+ align-items: center;
1176
+ gap: 6px;
1177
+ padding: 4px 12px;
1178
+ font-size: 11px;
1179
+ color: var(--text-tertiary);
1180
+ cursor: pointer;
1181
+ white-space: nowrap;
1182
+ transition: background 0.1s ease;
1183
+ }
1184
+ .content-tree-item:hover {
1185
+ background: var(--bg-hover);
1186
+ color: var(--text-secondary);
1187
+ }
1188
+ .content-tree-item.active {
1189
+ background: var(--bg-hover);
1190
+ color: var(--accent);
1191
+ }
1192
+ .content-tree-item .icon {
1193
+ width: 16px;
1194
+ display: flex;
1195
+ align-items: center;
1196
+ flex-shrink: 0;
1197
+ opacity: 0.5;
1198
+ }
1199
+ .content-tree-item .icon svg {
1200
+ width: 12px;
1201
+ height: 12px;
1202
+ }
1203
+ .content-viewer {
1204
+ flex: 1;
1205
+ display: flex;
1206
+ flex-direction: column;
1207
+ overflow: hidden;
1208
+ }
1209
+ .content-viewer-path {
1210
+ padding: 6px 12px;
1211
+ font-size: 10px;
1212
+ color: var(--text-muted);
1213
+ border-bottom: 1px solid var(--border);
1214
+ font-family: var(--mono);
1215
+ flex-shrink: 0;
1216
+ }
1217
+ .content-viewer-code {
1218
+ flex: 1;
1219
+ margin: 0;
1220
+ padding: 12px 16px;
1221
+ overflow: auto;
1222
+ font-family: var(--mono);
1223
+ font-size: 11px;
1224
+ line-height: 1.6;
1225
+ color: var(--text-secondary);
1226
+ background: var(--bg-deep);
1227
+ white-space: pre-wrap;
1228
+ word-break: break-word;
1229
+ }
1230
+ .content-viewer-code code {
1231
+ font-family: inherit;
1232
+ font-size: inherit;
1233
+ background: none;
1234
+ }
1235
+ .content-viewer-code .hljs {
1236
+ background: transparent;
1237
+ padding: 0;
1238
+ }
1239
+ .content-viewer-code .hl-frontmatter {
1240
+ color: var(--text-muted);
1241
+ opacity: 0.6;
1242
+ }