@arpproject/vibearp-mcp 1.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,1611 @@
1
+ /********************************************************************************************
2
+ * Copyright (C) 2025-2026 SZTAKI, Department of Distributed Systems (https://dsd.sztaki.hu).
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ *
7
+ * SPDX-License-Identifier: Apache-2.0
8
+ *******************************************************************************************/
9
+
10
+ /**
11
+ * RO-Crate MCP Dashboard Styles
12
+ */
13
+
14
+ /* CSS Variables */
15
+ :root {
16
+ --color-bg: #0d1117;
17
+ --color-bg-secondary: #161b22;
18
+ --color-bg-tertiary: #21262d;
19
+ --color-border: #30363d;
20
+ --color-text: #c9d1d9;
21
+ --color-text-secondary: #8b949e;
22
+ --color-text-muted: #6e7681;
23
+ --color-primary: #58a6ff;
24
+ --color-primary-hover: #79b8ff;
25
+ --color-success: #238636;
26
+ --color-success-bg: #1a5c24;
27
+ --color-danger: #f85149;
28
+ --color-danger-bg: #b62324;
29
+ --color-warning: #d29922;
30
+ --color-warning-bg: #9e6a03;
31
+ --color-info: #58a6ff;
32
+ --color-info-bg: #1f6feb;
33
+ --font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica,
34
+ Arial, sans-serif;
35
+ --font-mono: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
36
+ --spacing-xs: 0.25rem;
37
+ --spacing-sm: 0.5rem;
38
+ --spacing-md: 1rem;
39
+ --spacing-lg: 1.5rem;
40
+ --spacing-xl: 2rem;
41
+ --border-radius: 0.375rem;
42
+ --shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
43
+ }
44
+
45
+ /* Reset & Base */
46
+ * {
47
+ box-sizing: border-box;
48
+ margin: 0;
49
+ padding: 0;
50
+ }
51
+
52
+ body {
53
+ font-family: var(--font-family);
54
+ background-color: var(--color-bg);
55
+ color: var(--color-text);
56
+ line-height: 1.5;
57
+ min-height: 100vh;
58
+ }
59
+
60
+ .container {
61
+ max-width: 1400px;
62
+ margin: 0 auto;
63
+ padding: var(--spacing-lg);
64
+ }
65
+
66
+ /* Header */
67
+ .header {
68
+ display: flex;
69
+ justify-content: space-between;
70
+ align-items: center;
71
+ margin-bottom: var(--spacing-xl);
72
+ padding-bottom: var(--spacing-md);
73
+ border-bottom: 1px solid var(--color-border);
74
+ }
75
+
76
+ .header h1 {
77
+ font-size: 1.5rem;
78
+ font-weight: 600;
79
+ color: var(--color-text);
80
+ }
81
+
82
+ .header-controls {
83
+ display: flex;
84
+ gap: var(--spacing-md);
85
+ align-items: center;
86
+ }
87
+
88
+ /* Buttons */
89
+ .btn {
90
+ display: inline-flex;
91
+ align-items: center;
92
+ gap: var(--spacing-xs);
93
+ padding: var(--spacing-xs) var(--spacing-md);
94
+ font-size: 0.875rem;
95
+ font-weight: 500;
96
+ border: 1px solid var(--color-border);
97
+ border-radius: var(--border-radius);
98
+ background-color: var(--color-bg-tertiary);
99
+ color: var(--color-text);
100
+ cursor: pointer;
101
+ transition: background-color 0.15s ease;
102
+ }
103
+
104
+ .btn:hover {
105
+ background-color: var(--color-border);
106
+ }
107
+
108
+ .btn-secondary {
109
+ background-color: var(--color-bg-secondary);
110
+ }
111
+
112
+ .btn-danger {
113
+ background-color: var(--color-danger-bg);
114
+ border-color: var(--color-danger);
115
+ color: #fff;
116
+ }
117
+
118
+ .btn-danger:hover {
119
+ background-color: var(--color-danger);
120
+ }
121
+
122
+ .btn:disabled {
123
+ opacity: 0.6;
124
+ cursor: default;
125
+ }
126
+
127
+ .btn-sm {
128
+ padding: var(--spacing-xs) var(--spacing-sm);
129
+ font-size: 0.75rem;
130
+ }
131
+
132
+ .icon {
133
+ font-size: 1em;
134
+ }
135
+
136
+ /* Select */
137
+ .time-range-select {
138
+ padding: var(--spacing-xs) var(--spacing-sm);
139
+ font-size: 0.875rem;
140
+ border: 1px solid var(--color-border);
141
+ border-radius: var(--border-radius);
142
+ background-color: var(--color-bg-tertiary);
143
+ color: var(--color-text);
144
+ cursor: pointer;
145
+ }
146
+
147
+ .time-range-select:hover {
148
+ border-color: var(--color-text-secondary);
149
+ }
150
+
151
+ .time-range-select:focus {
152
+ outline: none;
153
+ border-color: var(--color-primary);
154
+ }
155
+
156
+ /* Error Banner */
157
+ .error-banner {
158
+ padding: var(--spacing-md);
159
+ margin-bottom: var(--spacing-md);
160
+ background-color: var(--color-danger-bg);
161
+ border: 1px solid var(--color-danger);
162
+ border-radius: var(--border-radius);
163
+ color: #fff;
164
+ }
165
+
166
+ .error-banner.hidden {
167
+ display: none;
168
+ }
169
+
170
+ /* Overview Cards */
171
+ .overview-cards {
172
+ display: grid;
173
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
174
+ gap: var(--spacing-md);
175
+ margin-bottom: var(--spacing-lg);
176
+ }
177
+
178
+ .card {
179
+ background-color: var(--color-bg-secondary);
180
+ border: 1px solid var(--color-border);
181
+ border-radius: var(--border-radius);
182
+ padding: var(--spacing-md);
183
+ box-shadow: var(--shadow);
184
+ }
185
+
186
+ .card-label {
187
+ font-size: 0.75rem;
188
+ font-weight: 600;
189
+ color: var(--color-text-secondary);
190
+ text-transform: uppercase;
191
+ letter-spacing: 0.5px;
192
+ margin-bottom: var(--spacing-xs);
193
+ }
194
+
195
+ .card-value {
196
+ font-size: 1.75rem;
197
+ font-weight: 700;
198
+ color: var(--color-text);
199
+ }
200
+
201
+ .card-value.neutral {
202
+ color: var(--color-text-secondary);
203
+ }
204
+
205
+ .card-value.success {
206
+ color: var(--color-success);
207
+ }
208
+
209
+ .card-value.danger {
210
+ color: var(--color-danger);
211
+ }
212
+
213
+ .card-value.warning {
214
+ color: var(--color-warning);
215
+ }
216
+
217
+ /* Dashboard Grid */
218
+ .dashboard-grid {
219
+ display: grid;
220
+ grid-template-columns: repeat(2, 1fr);
221
+ gap: var(--spacing-lg);
222
+ }
223
+
224
+ .panel.full-width {
225
+ grid-column: 1 / -1;
226
+ }
227
+
228
+ /* Panel */
229
+ .panel {
230
+ background-color: var(--color-bg-secondary);
231
+ border: 1px solid var(--color-border);
232
+ border-radius: var(--border-radius);
233
+ overflow: hidden;
234
+ box-shadow: var(--shadow);
235
+ }
236
+
237
+ .panel-header {
238
+ padding: var(--spacing-md);
239
+ border-bottom: 1px solid var(--color-border);
240
+ background-color: var(--color-bg-tertiary);
241
+ }
242
+
243
+ .panel-header h2 {
244
+ font-size: 1rem;
245
+ font-weight: 600;
246
+ color: var(--color-text);
247
+ }
248
+
249
+ .panel-content {
250
+ padding: var(--spacing-md);
251
+ max-height: 400px;
252
+ overflow-y: auto;
253
+ }
254
+
255
+ .panel-content::-webkit-scrollbar {
256
+ width: 8px;
257
+ }
258
+
259
+ .panel-content::-webkit-scrollbar-track {
260
+ background: var(--color-bg);
261
+ }
262
+
263
+ .panel-content::-webkit-scrollbar-thumb {
264
+ background: var(--color-border);
265
+ border-radius: 4px;
266
+ }
267
+
268
+ .panel-content::-webkit-scrollbar-thumb:hover {
269
+ background: var(--color-text-muted);
270
+ }
271
+
272
+ /* Tables */
273
+ .data-table {
274
+ width: 100%;
275
+ border-collapse: collapse;
276
+ font-size: 0.875rem;
277
+ }
278
+
279
+ .data-table th {
280
+ text-align: left;
281
+ padding: var(--spacing-sm);
282
+ font-weight: 600;
283
+ color: var(--color-text-secondary);
284
+ border-bottom: 1px solid var(--color-border);
285
+ position: sticky;
286
+ top: 0;
287
+ background-color: var(--color-bg-secondary);
288
+ }
289
+
290
+ .data-table td {
291
+ padding: var(--spacing-sm);
292
+ border-bottom: 1px solid var(--color-border);
293
+ }
294
+
295
+ .data-table tbody tr:hover {
296
+ background-color: var(--color-bg-tertiary);
297
+ }
298
+
299
+ .data-table tbody tr:last-child td {
300
+ border-bottom: none;
301
+ }
302
+
303
+ .data-table .loading {
304
+ text-align: center;
305
+ color: var(--color-text-secondary);
306
+ padding: var(--spacing-lg);
307
+ }
308
+
309
+ .data-table .empty {
310
+ text-align: center;
311
+ color: var(--color-text-muted);
312
+ padding: var(--spacing-md);
313
+ font-style: italic;
314
+ }
315
+
316
+ .data-table code {
317
+ font-family: var(--font-mono);
318
+ font-size: 0.8em;
319
+ padding: 2px 4px;
320
+ background-color: var(--color-bg-tertiary);
321
+ border-radius: 3px;
322
+ }
323
+
324
+ /* Badges */
325
+ .badge {
326
+ display: inline-block;
327
+ padding: 2px 8px;
328
+ font-size: 0.75rem;
329
+ font-weight: 600;
330
+ border-radius: 12px;
331
+ line-height: 1;
332
+ }
333
+
334
+ .badge-success {
335
+ background-color: var(--color-success-bg);
336
+ color: #7ee787;
337
+ }
338
+
339
+ .badge-danger {
340
+ background-color: var(--color-danger-bg);
341
+ color: #ffa198;
342
+ }
343
+
344
+ .badge-warning {
345
+ background-color: var(--color-warning-bg);
346
+ color: #e3b341;
347
+ }
348
+
349
+ .badge-info {
350
+ background-color: var(--color-info-bg);
351
+ color: #79c0ff;
352
+ }
353
+
354
+ .badge-neutral {
355
+ background-color: var(--color-bg-tertiary);
356
+ color: var(--color-text-secondary);
357
+ }
358
+
359
+ /* Errors List */
360
+ .errors-list {
361
+ max-height: 350px;
362
+ overflow-y: auto;
363
+ }
364
+
365
+ .error-item {
366
+ padding: var(--spacing-sm);
367
+ margin-bottom: var(--spacing-sm);
368
+ background-color: var(--color-bg-tertiary);
369
+ border-left: 3px solid var(--color-danger);
370
+ border-radius: 0 var(--border-radius) var(--border-radius) 0;
371
+ font-size: 0.875rem;
372
+ }
373
+
374
+ .error-item:last-child {
375
+ margin-bottom: 0;
376
+ }
377
+
378
+ .error-header {
379
+ display: flex;
380
+ justify-content: space-between;
381
+ align-items: center;
382
+ margin-bottom: var(--spacing-xs);
383
+ }
384
+
385
+ .error-code {
386
+ font-family: var(--font-mono);
387
+ font-size: 0.75rem;
388
+ color: var(--color-danger);
389
+ font-weight: 600;
390
+ }
391
+
392
+ .error-time {
393
+ font-size: 0.75rem;
394
+ color: var(--color-text-muted);
395
+ }
396
+
397
+ .error-tool {
398
+ font-size: 0.75rem;
399
+ color: var(--color-text-secondary);
400
+ margin-bottom: var(--spacing-xs);
401
+ }
402
+
403
+ .error-message {
404
+ font-size: 0.875rem;
405
+ color: var(--color-text);
406
+ word-break: break-word;
407
+ }
408
+
409
+ /* Session ID truncation */
410
+ .session-id {
411
+ font-family: var(--font-mono);
412
+ font-size: 0.75rem;
413
+ }
414
+
415
+ .session-id .truncated {
416
+ color: var(--color-text-muted);
417
+ }
418
+
419
+ /* Modal */
420
+ .modal {
421
+ position: fixed;
422
+ top: 0;
423
+ left: 0;
424
+ right: 0;
425
+ bottom: 0;
426
+ background-color: rgba(0, 0, 0, 0.7);
427
+ display: flex;
428
+ align-items: center;
429
+ justify-content: center;
430
+ z-index: 1000;
431
+ padding: var(--spacing-md);
432
+ }
433
+
434
+ .modal.hidden {
435
+ display: none;
436
+ }
437
+
438
+ .modal-content {
439
+ background-color: var(--color-bg-secondary);
440
+ border: 1px solid var(--color-border);
441
+ border-radius: var(--border-radius);
442
+ max-width: 900px;
443
+ width: 100%;
444
+ max-height: 90vh;
445
+ overflow: hidden;
446
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
447
+ }
448
+
449
+ .settings-modal-content {
450
+ max-width: 720px;
451
+ }
452
+
453
+ .tavily-test-modal-content {
454
+ max-width: 720px;
455
+ }
456
+
457
+ .profiles-modal-content {
458
+ max-width: 1120px;
459
+ }
460
+
461
+ .modal-header {
462
+ display: flex;
463
+ justify-content: space-between;
464
+ align-items: center;
465
+ padding: var(--spacing-md);
466
+ border-bottom: 1px solid var(--color-border);
467
+ background-color: var(--color-bg-tertiary);
468
+ }
469
+
470
+ .modal-header h2 {
471
+ font-size: 1rem;
472
+ font-weight: 600;
473
+ }
474
+
475
+ .modal-close {
476
+ background: none;
477
+ border: none;
478
+ font-size: 1.5rem;
479
+ color: var(--color-text-secondary);
480
+ cursor: pointer;
481
+ padding: 0;
482
+ width: 2rem;
483
+ height: 2rem;
484
+ display: flex;
485
+ align-items: center;
486
+ justify-content: center;
487
+ border-radius: var(--border-radius);
488
+ }
489
+
490
+ .modal-close:hover {
491
+ background-color: var(--color-border);
492
+ color: var(--color-text);
493
+ }
494
+
495
+ .modal-body {
496
+ padding: var(--spacing-md);
497
+ overflow-y: auto;
498
+ max-height: calc(90vh - 80px);
499
+ }
500
+
501
+ /* Session Detail Styles */
502
+ .session-detail-section {
503
+ margin-bottom: var(--spacing-lg);
504
+ }
505
+
506
+ .session-detail-section h3 {
507
+ font-size: 0.875rem;
508
+ font-weight: 600;
509
+ color: var(--color-text-secondary);
510
+ margin-bottom: var(--spacing-sm);
511
+ text-transform: uppercase;
512
+ letter-spacing: 0.5px;
513
+ }
514
+
515
+ .session-stats {
516
+ display: grid;
517
+ grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
518
+ gap: var(--spacing-md);
519
+ }
520
+
521
+ .session-stat {
522
+ padding: var(--spacing-sm);
523
+ background-color: var(--color-bg-tertiary);
524
+ border-radius: var(--border-radius);
525
+ }
526
+
527
+ .session-stat-label {
528
+ font-size: 0.75rem;
529
+ color: var(--color-text-muted);
530
+ margin-bottom: 2px;
531
+ }
532
+
533
+ .session-stat-value {
534
+ font-size: 1.25rem;
535
+ font-weight: 600;
536
+ color: var(--color-text);
537
+ }
538
+
539
+ /* Code block for displaying JSON/parameters */
540
+ .code-block {
541
+ background-color: var(--color-bg-tertiary);
542
+ border: 1px solid var(--color-border);
543
+ border-radius: var(--border-radius);
544
+ padding: var(--spacing-md);
545
+ font-family: var(--font-mono);
546
+ font-size: 0.75rem;
547
+ line-height: 1.4;
548
+ overflow-x: auto;
549
+ white-space: pre-wrap;
550
+ word-break: break-word;
551
+ max-height: 400px;
552
+ overflow-y: auto;
553
+ }
554
+
555
+ /* Auto-refresh indicator */
556
+ .auto-refresh {
557
+ display: inline-flex;
558
+ align-items: center;
559
+ gap: var(--spacing-xs);
560
+ font-size: 0.75rem;
561
+ color: var(--color-text-muted);
562
+ margin-left: var(--spacing-md);
563
+ }
564
+
565
+ .auto-refresh::before {
566
+ content: '';
567
+ width: 6px;
568
+ height: 6px;
569
+ border-radius: 50%;
570
+ background-color: var(--color-success);
571
+ animation: pulse 2s ease-in-out infinite;
572
+ }
573
+
574
+ @keyframes pulse {
575
+ 0%, 100% {
576
+ opacity: 1;
577
+ }
578
+ 50% {
579
+ opacity: 0.5;
580
+ }
581
+ }
582
+
583
+ /* Utility classes */
584
+ .hidden {
585
+ display: none !important;
586
+ }
587
+
588
+ .text-success {
589
+ color: var(--color-success);
590
+ }
591
+
592
+ .text-danger {
593
+ color: var(--color-danger);
594
+ }
595
+
596
+ .text-warning {
597
+ color: var(--color-warning);
598
+ }
599
+
600
+ .text-muted {
601
+ color: var(--color-text-muted);
602
+ }
603
+
604
+ /* Settings Form */
605
+ .settings-form {
606
+ padding: 0;
607
+ }
608
+
609
+ .settings-section {
610
+ margin-bottom: var(--spacing-lg);
611
+ padding: var(--spacing-md);
612
+ border: 1px solid var(--color-border);
613
+ border-radius: var(--border-radius);
614
+ background-color: var(--color-bg);
615
+ }
616
+
617
+ .settings-section:last-child {
618
+ margin-bottom: 0;
619
+ }
620
+
621
+ .settings-section-header {
622
+ display: flex;
623
+ align-items: center;
624
+ justify-content: space-between;
625
+ padding-bottom: var(--spacing-sm);
626
+ margin-bottom: var(--spacing-sm);
627
+ border-bottom: 1px solid var(--color-border);
628
+ }
629
+
630
+ .settings-section-header h3 {
631
+ margin: 0;
632
+ font-size: 0.95rem;
633
+ font-weight: 600;
634
+ color: var(--color-text);
635
+ }
636
+
637
+ .settings-help {
638
+ margin: 0 0 var(--spacing-sm) 0;
639
+ color: var(--color-text-secondary);
640
+ font-size: 0.8rem;
641
+ line-height: 1.45;
642
+ }
643
+
644
+ .settings-help code {
645
+ font-family: var(--font-mono);
646
+ font-size: 0.9em;
647
+ }
648
+
649
+ .setting-row {
650
+ display: flex;
651
+ justify-content: space-between;
652
+ align-items: flex-start;
653
+ gap: var(--spacing-lg);
654
+ padding: var(--spacing-sm) 0;
655
+ border-bottom: 1px solid var(--color-border);
656
+ }
657
+
658
+ .setting-row:last-child {
659
+ border-bottom: none;
660
+ }
661
+
662
+ .setting-label {
663
+ flex: 1;
664
+ padding-right: var(--spacing-md);
665
+ }
666
+
667
+ .setting-description {
668
+ display: block;
669
+ font-size: 0.75rem;
670
+ color: var(--color-text-muted);
671
+ margin-top: 4px;
672
+ }
673
+
674
+ .setting-control {
675
+ display: flex;
676
+ align-items: center;
677
+ gap: var(--spacing-sm);
678
+ min-width: 0;
679
+ }
680
+
681
+ .setting-credential-control {
682
+ flex: 1;
683
+ min-width: 280px;
684
+ max-width: 390px;
685
+ flex-direction: column;
686
+ align-items: stretch;
687
+ gap: var(--spacing-xs);
688
+ }
689
+
690
+ .setting-credential-control .text-input {
691
+ width: 100%;
692
+ }
693
+
694
+ .settings-inline-action {
695
+ align-self: flex-start;
696
+ }
697
+
698
+ .setting-input-with-action {
699
+ position: relative;
700
+ width: 100%;
701
+ }
702
+
703
+ .setting-input-with-action .text-input {
704
+ padding-right: 2.5rem;
705
+ }
706
+
707
+ .password-visibility-button {
708
+ position: absolute;
709
+ top: 50%;
710
+ right: 0.25rem;
711
+ display: inline-flex;
712
+ align-items: center;
713
+ justify-content: center;
714
+ width: 30px;
715
+ height: 30px;
716
+ padding: 0;
717
+ border: 0;
718
+ border-radius: 4px;
719
+ background: transparent;
720
+ color: var(--color-text-muted);
721
+ cursor: pointer;
722
+ transform: translateY(-50%);
723
+ }
724
+
725
+ .password-visibility-button:hover {
726
+ background-color: var(--color-bg);
727
+ color: var(--color-text);
728
+ }
729
+
730
+ .password-visibility-button.is-visible {
731
+ color: var(--color-primary);
732
+ }
733
+
734
+ .password-visibility-button:disabled {
735
+ cursor: wait;
736
+ opacity: 0.6;
737
+ }
738
+
739
+ .password-visibility-button:focus-visible {
740
+ outline: 2px solid var(--color-primary);
741
+ outline-offset: 1px;
742
+ }
743
+
744
+ .password-visibility-button svg {
745
+ width: 18px;
746
+ height: 18px;
747
+ fill: none;
748
+ stroke: currentColor;
749
+ stroke-linecap: round;
750
+ stroke-linejoin: round;
751
+ stroke-width: 1.8;
752
+ }
753
+
754
+ .setting-reset {
755
+ display: inline-flex;
756
+ align-items: center;
757
+ gap: var(--spacing-xs);
758
+ color: var(--color-text-muted);
759
+ font-size: 0.75rem;
760
+ cursor: pointer;
761
+ }
762
+
763
+ .setting-reset input {
764
+ accent-color: var(--color-primary);
765
+ }
766
+
767
+ .setting-value {
768
+ justify-content: flex-end;
769
+ min-width: 0;
770
+ max-width: 360px;
771
+ }
772
+
773
+ .setting-value code {
774
+ display: block;
775
+ max-width: 100%;
776
+ padding: 0.35rem 0.5rem;
777
+ overflow-wrap: anywhere;
778
+ border: 1px solid var(--color-border);
779
+ border-radius: 4px;
780
+ background: var(--color-bg-secondary);
781
+ color: var(--color-text-primary);
782
+ font-size: 0.75rem;
783
+ line-height: 1.35;
784
+ }
785
+
786
+ .artifact-row {
787
+ margin-bottom: var(--spacing-md);
788
+ }
789
+
790
+ .artifact-label {
791
+ margin-bottom: 0.35rem;
792
+ color: var(--color-text-secondary);
793
+ font-weight: 600;
794
+ }
795
+
796
+ .artifact-path {
797
+ white-space: pre-wrap;
798
+ overflow-wrap: anywhere;
799
+ }
800
+
801
+ /* Toggle Switch */
802
+ .toggle {
803
+ position: relative;
804
+ display: inline-block;
805
+ width: 44px;
806
+ height: 24px;
807
+ }
808
+
809
+ .toggle input {
810
+ opacity: 0;
811
+ width: 0;
812
+ height: 0;
813
+ }
814
+
815
+ .toggle-slider {
816
+ position: absolute;
817
+ cursor: pointer;
818
+ top: 0;
819
+ left: 0;
820
+ right: 0;
821
+ bottom: 0;
822
+ background-color: var(--color-bg-tertiary);
823
+ transition: 0.3s;
824
+ border-radius: 24px;
825
+ border: 1px solid var(--color-border);
826
+ }
827
+
828
+ .toggle-slider:before {
829
+ position: absolute;
830
+ content: '';
831
+ height: 18px;
832
+ width: 18px;
833
+ left: 2px;
834
+ bottom: 2px;
835
+ background-color: var(--color-text-secondary);
836
+ transition: 0.3s;
837
+ border-radius: 50%;
838
+ }
839
+
840
+ .toggle input:checked + .toggle-slider {
841
+ background-color: var(--color-success-bg);
842
+ border-color: var(--color-success);
843
+ }
844
+
845
+ .toggle input:checked + .toggle-slider:before {
846
+ transform: translateX(20px);
847
+ background-color: #7ee787;
848
+ }
849
+
850
+ /* Number Input */
851
+ .number-input {
852
+ width: 80px;
853
+ padding: var(--spacing-xs) var(--spacing-sm);
854
+ font-size: 0.875rem;
855
+ border: 1px solid var(--color-border);
856
+ border-radius: var(--border-radius);
857
+ background-color: var(--color-bg-tertiary);
858
+ color: var(--color-text);
859
+ text-align: right;
860
+ }
861
+
862
+ .text-input {
863
+ width: 100%;
864
+ min-width: 0;
865
+ padding: var(--spacing-xs) var(--spacing-sm);
866
+ font-size: 0.875rem;
867
+ border: 1px solid var(--color-border);
868
+ border-radius: var(--border-radius);
869
+ background-color: var(--color-bg-tertiary);
870
+ color: var(--color-text);
871
+ }
872
+
873
+ .text-input:focus {
874
+ outline: none;
875
+ border-color: var(--color-primary);
876
+ }
877
+
878
+ .number-input:focus {
879
+ outline: none;
880
+ border-color: var(--color-primary);
881
+ }
882
+
883
+ .tavily-query-input {
884
+ width: min(420px, 100%);
885
+ min-width: 0;
886
+ }
887
+
888
+ .input-suffix {
889
+ font-size: 0.875rem;
890
+ color: var(--color-text-muted);
891
+ }
892
+
893
+ .setting-actions {
894
+ display: flex;
895
+ gap: var(--spacing-sm);
896
+ margin-top: var(--spacing-lg);
897
+ padding-top: var(--spacing-md);
898
+ border-top: 1px solid var(--color-border);
899
+ }
900
+
901
+ /* Metadata profile manager */
902
+ .profiles-modal-body {
903
+ padding: var(--spacing-lg);
904
+ overflow-y: auto;
905
+ max-height: calc(90vh - 80px);
906
+ }
907
+
908
+ .profiles-toolbar {
909
+ display: flex;
910
+ align-items: center;
911
+ justify-content: space-between;
912
+ gap: var(--spacing-lg);
913
+ margin-bottom: var(--spacing-md);
914
+ }
915
+
916
+ .profiles-toolbar h3,
917
+ .profiles-remote-header h3 {
918
+ margin: 0;
919
+ font-size: 1rem;
920
+ font-weight: 600;
921
+ color: var(--color-text);
922
+ }
923
+
924
+ .profiles-toolbar-actions {
925
+ display: flex;
926
+ align-items: center;
927
+ gap: var(--spacing-sm);
928
+ flex-wrap: wrap;
929
+ justify-content: flex-end;
930
+ }
931
+
932
+ .icon-button {
933
+ width: 38px;
934
+ height: 38px;
935
+ border: 1px solid transparent;
936
+ border-radius: var(--border-radius);
937
+ background: transparent;
938
+ color: var(--color-text-secondary);
939
+ cursor: pointer;
940
+ }
941
+
942
+ .icon-button:hover {
943
+ color: var(--color-text);
944
+ background-color: var(--color-bg);
945
+ border-color: var(--color-border);
946
+ }
947
+
948
+ .provider-manage-icon {
949
+ display: inline-grid;
950
+ grid-template-columns: repeat(3, 4px);
951
+ gap: 4px;
952
+ place-content: center;
953
+ }
954
+
955
+ .provider-manage-icon span,
956
+ .provider-sliders-icon span {
957
+ display: block;
958
+ width: 4px;
959
+ height: 22px;
960
+ background: currentColor;
961
+ position: relative;
962
+ }
963
+
964
+ .provider-manage-icon span::after,
965
+ .provider-sliders-icon span::after {
966
+ content: '';
967
+ position: absolute;
968
+ left: -3px;
969
+ width: 10px;
970
+ height: 4px;
971
+ background: currentColor;
972
+ }
973
+
974
+ .provider-manage-icon span:nth-child(1)::after,
975
+ .provider-sliders-icon span:nth-child(1)::after {
976
+ top: 5px;
977
+ }
978
+
979
+ .provider-manage-icon span:nth-child(2)::after,
980
+ .provider-sliders-icon span:nth-child(2)::after {
981
+ top: 12px;
982
+ }
983
+
984
+ .provider-manage-icon span:nth-child(3)::after,
985
+ .provider-sliders-icon span:nth-child(3)::after {
986
+ top: 8px;
987
+ }
988
+
989
+ .profiles-storage-strip {
990
+ display: grid;
991
+ grid-template-columns: 110px minmax(0, 1fr);
992
+ gap: var(--spacing-md);
993
+ align-items: center;
994
+ padding: var(--spacing-sm) var(--spacing-md);
995
+ margin-bottom: var(--spacing-md);
996
+ border: 1px solid var(--color-border);
997
+ border-radius: var(--border-radius);
998
+ background-color: var(--color-bg);
999
+ }
1000
+
1001
+ .profiles-storage-label {
1002
+ font-size: 0.75rem;
1003
+ font-weight: 600;
1004
+ color: var(--color-text-secondary);
1005
+ text-transform: uppercase;
1006
+ letter-spacing: 0.5px;
1007
+ }
1008
+
1009
+ .profiles-storage-strip code {
1010
+ min-width: 0;
1011
+ overflow-wrap: anywhere;
1012
+ font-family: var(--font-mono);
1013
+ font-size: 0.75rem;
1014
+ color: var(--color-text);
1015
+ }
1016
+
1017
+ .profiles-table-wrap {
1018
+ max-height: 360px;
1019
+ overflow-x: hidden;
1020
+ overflow-y: auto;
1021
+ border: 1px solid var(--color-border);
1022
+ border-radius: var(--border-radius);
1023
+ }
1024
+
1025
+ .profiles-table {
1026
+ width: 100%;
1027
+ min-width: 0;
1028
+ table-layout: fixed;
1029
+ }
1030
+
1031
+ .profiles-table td,
1032
+ .profiles-table th {
1033
+ vertical-align: middle;
1034
+ min-width: 0;
1035
+ overflow: hidden;
1036
+ }
1037
+
1038
+ .profiles-table th:nth-child(1),
1039
+ .profiles-table td:nth-child(1) {
1040
+ width: 88px;
1041
+ }
1042
+
1043
+ .profiles-table th:nth-child(2),
1044
+ .profiles-table td:nth-child(2) {
1045
+ width: 190px;
1046
+ }
1047
+
1048
+ .profiles-table th:nth-child(3),
1049
+ .profiles-table td:nth-child(3),
1050
+ .profiles-table th:nth-child(4),
1051
+ .profiles-table td:nth-child(4) {
1052
+ width: 88px;
1053
+ }
1054
+
1055
+ .profiles-table th:nth-child(7),
1056
+ .profiles-table td:nth-child(7) {
1057
+ width: 96px;
1058
+ }
1059
+
1060
+ .profiles-table th:nth-child(5),
1061
+ .profiles-table th:nth-child(6),
1062
+ .profiles-table td:nth-child(5),
1063
+ .profiles-table td:nth-child(6) {
1064
+ width: auto;
1065
+ }
1066
+
1067
+ .profiles-table code {
1068
+ display: inline-block;
1069
+ }
1070
+
1071
+ .url-cell {
1072
+ display: inline-block;
1073
+ max-width: 100%;
1074
+ overflow: hidden;
1075
+ text-overflow: ellipsis;
1076
+ white-space: nowrap;
1077
+ vertical-align: middle;
1078
+ }
1079
+
1080
+ a.url-cell {
1081
+ color: var(--color-info);
1082
+ text-decoration: none;
1083
+ }
1084
+
1085
+ a.url-cell:hover {
1086
+ text-decoration: underline;
1087
+ }
1088
+
1089
+ .profiles-pagination {
1090
+ display: flex;
1091
+ justify-content: flex-end;
1092
+ align-items: center;
1093
+ gap: var(--spacing-sm);
1094
+ padding: var(--spacing-sm) 0 0;
1095
+ }
1096
+
1097
+ .pager-button {
1098
+ border: 1px solid var(--color-border);
1099
+ background: var(--color-bg-secondary);
1100
+ color: var(--color-text);
1101
+ border-radius: 6px;
1102
+ min-width: 30px;
1103
+ height: 30px;
1104
+ font-size: 1.1rem;
1105
+ line-height: 1;
1106
+ cursor: pointer;
1107
+ }
1108
+
1109
+ .pager-button:disabled {
1110
+ opacity: 0.45;
1111
+ cursor: default;
1112
+ }
1113
+
1114
+ .pager-page {
1115
+ display: inline-flex;
1116
+ align-items: center;
1117
+ justify-content: center;
1118
+ min-width: 28px;
1119
+ height: 28px;
1120
+ border-radius: 8px;
1121
+ background: var(--color-bg-tertiary);
1122
+ color: var(--color-text);
1123
+ font-weight: 600;
1124
+ }
1125
+
1126
+ .pager-size-select {
1127
+ border: 1px solid var(--color-border);
1128
+ background: var(--color-bg-secondary);
1129
+ color: var(--color-text);
1130
+ border-radius: 6px;
1131
+ height: 32px;
1132
+ padding: 0 var(--spacing-sm);
1133
+ font-size: 0.875rem;
1134
+ }
1135
+
1136
+ .profiles-import-bar {
1137
+ display: grid;
1138
+ grid-template-columns: minmax(0, 1fr) auto;
1139
+ gap: var(--spacing-sm);
1140
+ align-items: center;
1141
+ margin: var(--spacing-md) 0;
1142
+ padding-top: var(--spacing-md);
1143
+ border-top: 1px solid var(--color-border);
1144
+ }
1145
+
1146
+ .profiles-remote-panel {
1147
+ margin-top: var(--spacing-md);
1148
+ padding-top: var(--spacing-md);
1149
+ border-top: 1px solid var(--color-border);
1150
+ }
1151
+
1152
+ .profiles-remote-header {
1153
+ margin-bottom: var(--spacing-sm);
1154
+ }
1155
+
1156
+ .settings-message {
1157
+ margin-top: var(--spacing-md);
1158
+ padding: var(--spacing-sm);
1159
+ border-radius: var(--border-radius);
1160
+ font-size: 0.875rem;
1161
+ }
1162
+
1163
+ .settings-message.success {
1164
+ background-color: var(--color-success-bg);
1165
+ color: #7ee787;
1166
+ }
1167
+
1168
+ .settings-message.error {
1169
+ background-color: var(--color-danger-bg);
1170
+ color: #ffa198;
1171
+ }
1172
+
1173
+ /* Remote provider dialogs */
1174
+ .provider-select-modal-content {
1175
+ max-width: 660px;
1176
+ min-height: 520px;
1177
+ }
1178
+
1179
+ .provider-manage-modal-content {
1180
+ max-width: 900px;
1181
+ min-height: 680px;
1182
+ }
1183
+
1184
+ .provider-dialog-body {
1185
+ padding: var(--spacing-lg);
1186
+ }
1187
+
1188
+ .provider-dialog-heading,
1189
+ .provider-manage-heading {
1190
+ display: flex;
1191
+ align-items: center;
1192
+ gap: var(--spacing-md);
1193
+ }
1194
+
1195
+ .provider-manage-heading {
1196
+ justify-content: space-between;
1197
+ margin-bottom: var(--spacing-lg);
1198
+ }
1199
+
1200
+ .provider-dialog-heading h3 {
1201
+ margin: 0;
1202
+ font-size: 1rem;
1203
+ color: var(--color-text);
1204
+ }
1205
+
1206
+ .provider-dialog-icon {
1207
+ width: 52px;
1208
+ height: 52px;
1209
+ border-radius: var(--border-radius);
1210
+ display: grid;
1211
+ place-items: center;
1212
+ color: var(--color-primary);
1213
+ background: var(--color-bg);
1214
+ }
1215
+
1216
+ .provider-server-icon::before {
1217
+ content: '';
1218
+ width: 24px;
1219
+ height: 20px;
1220
+ background:
1221
+ linear-gradient(currentColor 0 0) 0 0 / 24px 4px no-repeat,
1222
+ linear-gradient(currentColor 0 0) 0 8px / 24px 4px no-repeat,
1223
+ linear-gradient(currentColor 0 0) 0 16px / 24px 4px no-repeat;
1224
+ }
1225
+
1226
+ .provider-sliders-icon {
1227
+ display: grid;
1228
+ grid-template-columns: repeat(3, 4px);
1229
+ gap: 5px;
1230
+ }
1231
+
1232
+ .provider-select-list,
1233
+ .provider-manage-list {
1234
+ margin-top: var(--spacing-lg);
1235
+ border: 1px solid var(--color-border);
1236
+ border-radius: var(--border-radius);
1237
+ min-height: 120px;
1238
+ overflow: hidden;
1239
+ }
1240
+
1241
+ .provider-manage-list {
1242
+ min-height: 360px;
1243
+ }
1244
+
1245
+ .provider-row {
1246
+ display: grid;
1247
+ grid-template-columns: 48px minmax(0, 1fr) auto;
1248
+ gap: var(--spacing-md);
1249
+ align-items: center;
1250
+ padding: var(--spacing-md);
1251
+ border-bottom: 1px solid var(--color-border);
1252
+ background: var(--color-surface);
1253
+ }
1254
+
1255
+ .provider-row:last-child {
1256
+ border-bottom: 0;
1257
+ }
1258
+
1259
+ .provider-row.clickable {
1260
+ cursor: pointer;
1261
+ }
1262
+
1263
+ .provider-row.clickable:hover {
1264
+ background: var(--color-bg);
1265
+ }
1266
+
1267
+ .provider-row-icon {
1268
+ width: 36px;
1269
+ height: 36px;
1270
+ border-radius: var(--border-radius);
1271
+ display: grid;
1272
+ place-items: center;
1273
+ color: var(--color-primary);
1274
+ background: var(--color-bg);
1275
+ }
1276
+
1277
+ .provider-row-title {
1278
+ font-weight: 600;
1279
+ color: var(--color-text);
1280
+ }
1281
+
1282
+ .provider-row-url {
1283
+ margin-top: 2px;
1284
+ color: var(--color-text-secondary);
1285
+ font-size: 0.875rem;
1286
+ overflow-wrap: anywhere;
1287
+ }
1288
+
1289
+ .provider-row-actions {
1290
+ display: flex;
1291
+ align-items: center;
1292
+ gap: var(--spacing-sm);
1293
+ }
1294
+
1295
+ .provider-arrow {
1296
+ color: var(--color-text-secondary);
1297
+ font-size: 1.5rem;
1298
+ }
1299
+
1300
+ .provider-dialog-footer {
1301
+ display: flex;
1302
+ justify-content: space-between;
1303
+ align-items: center;
1304
+ gap: var(--spacing-md);
1305
+ padding: var(--spacing-md) var(--spacing-lg);
1306
+ border-top: 1px solid var(--color-border);
1307
+ }
1308
+
1309
+ .provider-link-button {
1310
+ border: 0;
1311
+ background: transparent;
1312
+ color: var(--color-primary);
1313
+ cursor: pointer;
1314
+ padding: var(--spacing-sm);
1315
+ font: inherit;
1316
+ }
1317
+
1318
+ .provider-link-button:hover {
1319
+ text-decoration: underline;
1320
+ }
1321
+
1322
+ .provider-mini-gear {
1323
+ margin-right: var(--spacing-xs);
1324
+ }
1325
+
1326
+ .provider-form {
1327
+ margin-top: var(--spacing-md);
1328
+ padding-top: var(--spacing-md);
1329
+ border-top: 1px solid var(--color-border);
1330
+ }
1331
+
1332
+ .provider-form-grid {
1333
+ display: grid;
1334
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1335
+ gap: var(--spacing-sm);
1336
+ }
1337
+
1338
+ .provider-form-wide {
1339
+ grid-column: 1 / -1;
1340
+ }
1341
+
1342
+ /* CEDAR browser dialog */
1343
+ .cedar-browser-modal-content {
1344
+ max-width: 920px;
1345
+ height: min(760px, 90vh);
1346
+ display: flex;
1347
+ flex-direction: column;
1348
+ }
1349
+
1350
+ .cedar-browser-body {
1351
+ flex: 1;
1352
+ display: flex;
1353
+ flex-direction: column;
1354
+ min-height: 0;
1355
+ padding: var(--spacing-md);
1356
+ }
1357
+
1358
+ .cedar-browser-toolbar {
1359
+ display: flex;
1360
+ align-items: center;
1361
+ gap: var(--spacing-sm);
1362
+ padding-bottom: var(--spacing-sm);
1363
+ border-bottom: 1px solid var(--color-border);
1364
+ }
1365
+
1366
+ .cedar-browser-spacer {
1367
+ flex: 1;
1368
+ }
1369
+
1370
+ .cedar-search-input {
1371
+ width: min(360px, 60vw);
1372
+ }
1373
+
1374
+ .cedar-browser-tree {
1375
+ flex: 1;
1376
+ min-height: 0;
1377
+ overflow: auto;
1378
+ padding: var(--spacing-md) 0;
1379
+ }
1380
+
1381
+ .cedar-tree-list,
1382
+ .cedar-tree-children {
1383
+ list-style: none;
1384
+ margin: 0;
1385
+ padding: 0;
1386
+ }
1387
+
1388
+ .cedar-tree-children {
1389
+ margin-left: 26px;
1390
+ }
1391
+
1392
+ .cedar-tree-node {
1393
+ min-height: 34px;
1394
+ }
1395
+
1396
+ .cedar-tree-row {
1397
+ display: grid;
1398
+ grid-template-columns: 28px 28px minmax(0, 1fr);
1399
+ align-items: center;
1400
+ gap: var(--spacing-xs);
1401
+ padding: 3px var(--spacing-xs);
1402
+ border-radius: var(--border-radius);
1403
+ cursor: pointer;
1404
+ }
1405
+
1406
+ .cedar-tree-row:hover,
1407
+ .cedar-tree-row.selected {
1408
+ background: var(--color-bg);
1409
+ }
1410
+
1411
+ .cedar-tree-row.disabled {
1412
+ opacity: 0.55;
1413
+ cursor: default;
1414
+ }
1415
+
1416
+ .cedar-tree-toggle {
1417
+ width: 24px;
1418
+ height: 24px;
1419
+ border: 0;
1420
+ background: transparent;
1421
+ color: var(--color-text-secondary);
1422
+ font-size: 1.1rem;
1423
+ cursor: pointer;
1424
+ }
1425
+
1426
+ .cedar-tree-toggle.placeholder {
1427
+ cursor: default;
1428
+ }
1429
+
1430
+ .cedar-tree-icon {
1431
+ width: 22px;
1432
+ height: 18px;
1433
+ color: var(--color-primary);
1434
+ }
1435
+
1436
+ .cedar-tree-icon.folder::before {
1437
+ content: '';
1438
+ display: block;
1439
+ width: 22px;
1440
+ height: 16px;
1441
+ border-radius: 3px;
1442
+ background: currentColor;
1443
+ box-shadow: 4px -4px 0 -1px currentColor;
1444
+ }
1445
+
1446
+ .cedar-tree-icon.template::before {
1447
+ content: '';
1448
+ display: block;
1449
+ width: 16px;
1450
+ height: 20px;
1451
+ border: 2px solid currentColor;
1452
+ border-radius: 2px;
1453
+ background:
1454
+ linear-gradient(currentColor 0 0) 3px 5px / 10px 2px no-repeat,
1455
+ linear-gradient(currentColor 0 0) 3px 10px / 10px 2px no-repeat,
1456
+ linear-gradient(currentColor 0 0) 3px 15px / 7px 2px no-repeat;
1457
+ }
1458
+
1459
+ .cedar-tree-name {
1460
+ color: var(--color-text);
1461
+ overflow-wrap: anywhere;
1462
+ }
1463
+
1464
+ .cedar-tree-loading,
1465
+ .cedar-tree-error {
1466
+ padding: var(--spacing-sm) 0 var(--spacing-sm) 58px;
1467
+ color: var(--color-text-secondary);
1468
+ font-style: italic;
1469
+ }
1470
+
1471
+ .cedar-tree-error {
1472
+ color: var(--color-danger);
1473
+ }
1474
+
1475
+ .cedar-browser-footer {
1476
+ display: flex;
1477
+ justify-content: space-between;
1478
+ align-items: center;
1479
+ gap: var(--spacing-md);
1480
+ padding: var(--spacing-md);
1481
+ border-top: 1px solid var(--color-border);
1482
+ }
1483
+
1484
+ .cedar-browser-selection {
1485
+ flex: 1;
1486
+ min-width: 0;
1487
+ display: flex;
1488
+ align-items: center;
1489
+ gap: var(--spacing-xs);
1490
+ }
1491
+
1492
+ .cedar-browser-placeholder {
1493
+ color: var(--color-text-secondary);
1494
+ font-style: italic;
1495
+ overflow: hidden;
1496
+ text-overflow: ellipsis;
1497
+ white-space: nowrap;
1498
+ }
1499
+
1500
+ .cedar-browser-actions {
1501
+ display: flex;
1502
+ gap: var(--spacing-sm);
1503
+ }
1504
+
1505
+ .cedar-search-button::before {
1506
+ content: '⌕';
1507
+ font-size: 1.5rem;
1508
+ }
1509
+
1510
+ .cedar-expand-button::before {
1511
+ content: '↕';
1512
+ font-size: 1.2rem;
1513
+ }
1514
+
1515
+ .cedar-collapse-button::before {
1516
+ content: '×';
1517
+ font-size: 1.4rem;
1518
+ }
1519
+
1520
+ .cedar-locate-button::before {
1521
+ content: '⌖';
1522
+ }
1523
+
1524
+ .cedar-clear-button::before {
1525
+ content: '×';
1526
+ color: var(--color-danger);
1527
+ }
1528
+
1529
+ /* Responsive */
1530
+ @media (max-width: 768px) {
1531
+ .dashboard-grid {
1532
+ grid-template-columns: 1fr;
1533
+ }
1534
+
1535
+ .overview-cards {
1536
+ grid-template-columns: repeat(2, 1fr);
1537
+ }
1538
+
1539
+ .header {
1540
+ flex-direction: column;
1541
+ align-items: flex-start;
1542
+ gap: var(--spacing-md);
1543
+ }
1544
+
1545
+ .header-controls {
1546
+ width: 100%;
1547
+ justify-content: space-between;
1548
+ flex-wrap: wrap;
1549
+ }
1550
+
1551
+ .setting-row,
1552
+ .profiles-toolbar {
1553
+ flex-direction: column;
1554
+ align-items: stretch;
1555
+ }
1556
+
1557
+ .setting-control,
1558
+ .profiles-toolbar-actions {
1559
+ justify-content: flex-start;
1560
+ }
1561
+
1562
+ .profiles-storage-strip,
1563
+ .profiles-import-bar {
1564
+ grid-template-columns: 1fr;
1565
+ }
1566
+
1567
+ .provider-manage-heading,
1568
+ .provider-row,
1569
+ .provider-dialog-footer,
1570
+ .provider-form-grid {
1571
+ grid-template-columns: 1fr;
1572
+ }
1573
+
1574
+ .provider-manage-heading,
1575
+ .provider-dialog-footer {
1576
+ align-items: stretch;
1577
+ }
1578
+
1579
+ .data-table {
1580
+ font-size: 0.75rem;
1581
+ }
1582
+
1583
+ .data-table th,
1584
+ .data-table td {
1585
+ padding: var(--spacing-xs);
1586
+ }
1587
+ }
1588
+
1589
+ /* Animation for refresh button */
1590
+ @keyframes spin {
1591
+ from {
1592
+ transform: rotate(0deg);
1593
+ }
1594
+ to {
1595
+ transform: rotate(360deg);
1596
+ }
1597
+ }
1598
+
1599
+ .icon.spinning {
1600
+ animation: spin 1s linear infinite;
1601
+ }
1602
+
1603
+ /* Links in test results */
1604
+ .panel-content a {
1605
+ color: var(--color-primary);
1606
+ text-decoration: none;
1607
+ }
1608
+
1609
+ .panel-content a:hover {
1610
+ text-decoration: underline;
1611
+ }