snap-ally 0.0.2 → 0.1.0-beta

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,1536 @@
1
+ :root {
2
+ --bg-color: #f8fafc;
3
+ --card-bg: rgba(255, 255, 255, 0.7);
4
+ --primary: #6366f1;
5
+ --primary-dark: #4f46e5;
6
+ --primary-soft: #eef2ff;
7
+ --text-main: #0f172a;
8
+ --text-muted: #64748b;
9
+
10
+ --passed: #10b981;
11
+ --failed: #ef4444;
12
+ --flaky: #f59e0b;
13
+ --skipped: #6366f1;
14
+
15
+ /* Default Severity Colors - These can be overridden via JS dynamically */
16
+ --critical: #ff00ff;
17
+ --serious: #e67700;
18
+ --moderate: #ca8a04;
19
+ --minor: #0891b2;
20
+
21
+ --glass-bg: rgba(255, 255, 255, 0.85);
22
+ --glass-border: rgba(255, 255, 255, 0.6);
23
+ --glass-shadow: 0 12px 40px rgba(0, 0, 0, 0.08);
24
+ --card-radius: 24px;
25
+ }
26
+
27
+ * {
28
+ box-sizing: border-box;
29
+ margin: 0;
30
+ padding: 0;
31
+ }
32
+
33
+ body {
34
+ font-family: 'Inter', sans-serif;
35
+ background-color: var(--bg-color);
36
+ color: var(--text-main);
37
+ padding: 100px 0 0;
38
+ margin: 0;
39
+ min-height: 100vh;
40
+ display: flex;
41
+ flex-direction: column;
42
+ line-height: 1.6;
43
+ }
44
+
45
+ /* Fixed Header */
46
+ header {
47
+ position: fixed;
48
+ top: 0;
49
+ left: 0;
50
+ right: 0;
51
+ z-index: 1000;
52
+ background: rgba(255, 255, 255, 0.8);
53
+ backdrop-filter: blur(20px) saturate(180%);
54
+ -webkit-backdrop-filter: blur(20px) saturate(180%);
55
+ border-bottom: 1px solid var(--glass-border);
56
+ padding: 14px 40px;
57
+ display: flex;
58
+ justify-content: space-between;
59
+ align-items: center;
60
+ box-shadow: 0 4px 30px rgba(0, 0, 0, 0.03);
61
+ }
62
+
63
+ .brand {
64
+ display: flex;
65
+ align-items: center;
66
+ gap: 12px;
67
+ text-decoration: none;
68
+ }
69
+
70
+ .brand-icon {
71
+ width: 38px;
72
+ height: 38px;
73
+ background: linear-gradient(135deg, var(--primary), var(--primary-dark));
74
+ border-radius: 12px;
75
+ display: flex;
76
+ align-items: center;
77
+ justify-content: center;
78
+ color: white;
79
+ box-shadow: 0 4px 15px rgba(99, 102, 241, 0.25);
80
+ }
81
+
82
+ .brand h1,
83
+ .brand-text {
84
+ font-family: 'Outfit', sans-serif;
85
+ font-size: 1.4rem;
86
+ font-weight: 700;
87
+ margin: 0;
88
+ background: linear-gradient(to right, var(--primary-dark), #818cf8);
89
+ -webkit-background-clip: text;
90
+ background-clip: text;
91
+ -webkit-text-fill-color: transparent;
92
+ }
93
+
94
+ /* Footer */
95
+ footer {
96
+ background: rgba(255, 255, 255, 0.7);
97
+ backdrop-filter: blur(12px);
98
+ -webkit-backdrop-filter: blur(12px);
99
+ border-top: 1px solid var(--glass-border);
100
+ padding: 24px 40px;
101
+ margin-top: auto;
102
+ display: flex;
103
+ justify-content: space-between;
104
+ align-items: center;
105
+ color: var(--text-muted);
106
+ font-size: 0.9rem;
107
+ }
108
+
109
+ .powered-by {
110
+ display: flex;
111
+ align-items: center;
112
+ gap: 8px;
113
+ font-weight: 500;
114
+ }
115
+
116
+ .badge-tool {
117
+ background: #f1f5f9;
118
+ padding: 2px 10px;
119
+ border-radius: 8px;
120
+ font-weight: 700;
121
+ color: #334155;
122
+ font-size: 0.8rem;
123
+ }
124
+
125
+ .container {
126
+ max-width: 1200px !important;
127
+ margin: 0 auto;
128
+ padding: 0 20px;
129
+ margin-bottom: 40px;
130
+ width: 100%;
131
+ }
132
+
133
+ .btn-back {
134
+ text-decoration: none;
135
+ color: var(--text-muted);
136
+ font-weight: 600;
137
+ display: flex;
138
+ align-items: center;
139
+ gap: 6px;
140
+ }
141
+
142
+ .btn-back-icon {
143
+ font-size: 20px;
144
+ }
145
+
146
+ .btn-token {
147
+ border-radius: 10px;
148
+ font-weight: 700;
149
+ padding: 8px 16px;
150
+ }
151
+
152
+ .btn-token-icon {
153
+ vertical-align: middle;
154
+ font-size: 18px;
155
+ margin-right: 4px;
156
+ }
157
+
158
+ /* Component Level Styles */
159
+
160
+ /* Cards General */
161
+ .card {
162
+ background: #fff;
163
+ border-radius: 16px;
164
+ padding: 20px;
165
+ margin-bottom: 16px;
166
+ border: 1px solid #f1f5f9;
167
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.02);
168
+ }
169
+
170
+ .card h2 {
171
+ font-family: 'Outfit', sans-serif;
172
+ font-size: 1rem;
173
+ font-weight: 600;
174
+ margin-bottom: 12px;
175
+ display: flex;
176
+ align-items: center;
177
+ gap: 8px;
178
+ color: var(--text-main);
179
+ }
180
+
181
+ .section-icon {
182
+ color: var(--primary);
183
+ font-size: 20px;
184
+ }
185
+
186
+ /* Status Badges */
187
+ .status-badge {
188
+ display: inline-flex;
189
+ align-items: center;
190
+ gap: 6px;
191
+ padding: 4px 10px;
192
+ border-radius: 8px;
193
+ font-weight: 700;
194
+ font-size: 0.65rem;
195
+ text-transform: uppercase;
196
+ letter-spacing: 0.05em;
197
+ }
198
+
199
+ .status-passed {
200
+ background: #e6f9f3;
201
+ color: var(--passed);
202
+ }
203
+
204
+ .status-failed {
205
+ background: #fee2e2;
206
+ color: var(--failed);
207
+ }
208
+
209
+ .status-flaky {
210
+ background: #fffbeb;
211
+ color: var(--flaky);
212
+ }
213
+
214
+ .status-passed-a11y {
215
+ background: #e6f9f3;
216
+ color: var(--passed);
217
+ }
218
+
219
+ .status-icon-small {
220
+ font-size: 20px;
221
+ flex-shrink: 0;
222
+ }
223
+
224
+ .status-icon-passed {
225
+ color: var(--passed);
226
+ }
227
+
228
+ .status-icon-failed {
229
+ color: var(--failed);
230
+ }
231
+
232
+ .status-icon-flaky {
233
+ color: var(--flaky);
234
+ }
235
+
236
+ .status-icon-skipped {
237
+ color: var(--skipped);
238
+ }
239
+
240
+ .sev-badge,
241
+ .severity-badge {
242
+ padding: 6px 16px;
243
+ border-radius: 10px;
244
+ font-size: 0.75rem;
245
+ font-weight: 800;
246
+ letter-spacing: 0.5px;
247
+ color: #fff;
248
+ white-space: nowrap;
249
+ }
250
+
251
+ .sev-badge.critical,
252
+ .severity-badge.critical {
253
+ background: var(--critical);
254
+ }
255
+
256
+ .sev-badge.serious,
257
+ .severity-badge.serious {
258
+ background: var(--serious);
259
+ }
260
+
261
+ .sev-badge.moderate,
262
+ .severity-badge.moderate {
263
+ background: var(--moderate);
264
+ }
265
+
266
+ .sev-badge.minor,
267
+ .severity-badge.minor {
268
+ background: var(--minor);
269
+ }
270
+
271
+ .browser-chip {
272
+ padding: 2px 8px;
273
+ border-radius: 6px;
274
+ background: #f1f5f9;
275
+ color: #475569;
276
+ font-weight: 500;
277
+ font-size: 0.75rem;
278
+ text-transform: capitalize;
279
+ }
280
+
281
+ .chip-chromium,
282
+ .chip-desktop-chromium {
283
+ background: #e0f2fe;
284
+ color: #0284c7;
285
+ }
286
+
287
+ .chip-firefox,
288
+ .chip-desktop-firefox {
289
+ background: #ffedd5;
290
+ color: #c2410c;
291
+ }
292
+
293
+ .chip-webkit,
294
+ .chip-desktop-webkit {
295
+ background: #f3f4f6;
296
+ color: #4b5563;
297
+ }
298
+
299
+ .chip-mobile-chrome {
300
+ background: #e0f2fe;
301
+ color: #0284c7;
302
+ }
303
+
304
+ .chip-mobile-safari {
305
+ background: #f3f4f6;
306
+ color: #4b5563;
307
+ }
308
+
309
+ /* Success Heroes */
310
+ /* Success Heroes Redesign */
311
+ .success-verified-card {
312
+ padding: 60px 40px;
313
+ background: linear-gradient(135deg, #10b981 0%, #059669 100%);
314
+ border-radius: 32px;
315
+ border: none;
316
+ box-shadow: 0 20px 50px rgba(16, 185, 129, 0.2);
317
+ margin-bottom: 24px;
318
+ color: white;
319
+ position: relative;
320
+ overflow: hidden;
321
+ }
322
+
323
+ .success-verified-card::before {
324
+ content: '';
325
+ position: absolute;
326
+ top: -50%;
327
+ right: -20%;
328
+ width: 300px;
329
+ height: 300px;
330
+ background: rgba(255, 255, 255, 0.1);
331
+ border-radius: 50%;
332
+ pointer-events: none;
333
+ }
334
+
335
+ .success-content-layout {
336
+ display: flex;
337
+ align-items: center;
338
+ gap: 40px;
339
+ position: relative;
340
+ z-index: 1;
341
+ }
342
+
343
+ .success-icon-container {
344
+ position: relative;
345
+ width: 100px;
346
+ height: 100px;
347
+ display: flex;
348
+ align-items: center;
349
+ justify-content: center;
350
+ background: rgba(255, 255, 255, 0.2);
351
+ border-radius: 30px;
352
+ backdrop-filter: blur(10px);
353
+ }
354
+
355
+ .success-icon-container span {
356
+ font-size: 60px;
357
+ color: white;
358
+ z-index: 2;
359
+ }
360
+
361
+ .icon-pulse {
362
+ position: absolute;
363
+ width: 100%;
364
+ height: 100%;
365
+ border-radius: 30px;
366
+ background: rgba(255, 255, 255, 0.3);
367
+ animation: pulseSuccess 2s infinite;
368
+ z-index: 1;
369
+ }
370
+
371
+ @keyframes pulseSuccess {
372
+ 0% { transform: scale(1); opacity: 0.8; }
373
+ 100% { transform: scale(1.3); opacity: 0; }
374
+ }
375
+
376
+ .success-text-group {
377
+ text-align: left;
378
+ }
379
+
380
+ .success-hero-title {
381
+ font-family: 'Outfit', sans-serif;
382
+ font-weight: 700;
383
+ font-size: 2.2rem;
384
+ color: white;
385
+ margin-bottom: 8px;
386
+ letter-spacing: -0.5px;
387
+ }
388
+
389
+ .success-hero-desc {
390
+ max-width: 600px;
391
+ margin: 0;
392
+ color: rgba(255, 255, 255, 0.9);
393
+ font-size: 1.1rem;
394
+ margin-bottom: 20px;
395
+ }
396
+
397
+ .success-badges {
398
+ display: flex;
399
+ gap: 12px;
400
+ }
401
+
402
+ .success-msg-badge {
403
+ display: inline-flex;
404
+ align-items: center;
405
+ gap: 8px;
406
+ background: rgba(0, 0, 0, 0.15);
407
+ padding: 6px 14px;
408
+ border-radius: 12px;
409
+ font-size: 0.85rem;
410
+ font-weight: 700;
411
+ backdrop-filter: blur(5px);
412
+ color: white;
413
+ }
414
+
415
+ .success-msg-badge span {
416
+ font-size: 18px;
417
+ }
418
+
419
+ .browser-success-container {
420
+ padding: 40px 30px;
421
+ background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
422
+ box-shadow: 0 15px 35px rgba(99, 102, 241, 0.2);
423
+ }
424
+
425
+ .browser-success-container .success-icon-container {
426
+ width: 70px;
427
+ height: 70px;
428
+ }
429
+
430
+ .browser-success-container .success-icon-container span {
431
+ font-size: 40px;
432
+ }
433
+
434
+ .browser-success-container .success-hero-title {
435
+ font-size: 1.6rem;
436
+ }
437
+
438
+ /* Violation / Error Cards */
439
+ .error-card {
440
+ background: #fff1f2;
441
+ border-color: #fecdd3;
442
+ }
443
+
444
+ .violations-title {
445
+ color: #9f1239;
446
+ display: flex;
447
+ align-items: center;
448
+ gap: 10px;
449
+ margin-bottom: 16px;
450
+ }
451
+
452
+ .violations-container {
453
+ display: flex;
454
+ flex-direction: column;
455
+ gap: 16px;
456
+ }
457
+
458
+ .violation-item {
459
+ background: rgba(255, 255, 255, 0.6);
460
+ border-radius: 12px;
461
+ padding: 16px;
462
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.02);
463
+ border-top: 1px solid rgba(255, 255, 255, 0.8);
464
+ border-left: 5px solid transparent;
465
+ }
466
+
467
+ .violation-item.critical {
468
+ border-left-color: var(--critical);
469
+ }
470
+
471
+ .violation-item.serious {
472
+ border-left-color: var(--serious);
473
+ }
474
+
475
+ .violation-item.moderate {
476
+ border-left-color: var(--moderate);
477
+ }
478
+
479
+ .violation-item.minor {
480
+ border-left-color: var(--minor);
481
+ }
482
+
483
+ .violation-header {
484
+ display: flex;
485
+ justify-content: space-between;
486
+ align-items: flex-start;
487
+ margin-bottom: 8px;
488
+ }
489
+
490
+ .rule-id {
491
+ font-family: 'ui-monospace', monospace;
492
+ font-weight: 700;
493
+ color: var(--text-main);
494
+ background: #f1f5f9;
495
+ padding: 4px 8px;
496
+ border-radius: 6px;
497
+ font-size: 0.85rem;
498
+ }
499
+
500
+ .help-text {
501
+ font-weight: 600;
502
+ color: #881337;
503
+ margin-bottom: 4px;
504
+ }
505
+
506
+ .desc-text {
507
+ font-size: 0.9rem;
508
+ color: #475569;
509
+ margin-bottom: 8px;
510
+ }
511
+
512
+ .instance-grid {
513
+ margin-top: 12px;
514
+ display: grid;
515
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
516
+ gap: 12px;
517
+ }
518
+
519
+ .instance-card {
520
+ border: 1px solid #fecdd3;
521
+ border-radius: 8px;
522
+ overflow: hidden;
523
+ background: #fff;
524
+ }
525
+
526
+ .instance-img-wrap {
527
+ position: relative;
528
+ padding-top: 56.25%;
529
+ }
530
+
531
+ .instance-img {
532
+ position: absolute;
533
+ top: 0;
534
+ left: 0;
535
+ width: 100%;
536
+ height: 100%;
537
+ object-fit: cover;
538
+ object-position: top;
539
+ }
540
+
541
+ .instance-info {
542
+ padding: 8px;
543
+ font-size: 0.7rem;
544
+ color: #881337;
545
+ border-top: 1px solid #fecdd3;
546
+ font-family: 'ui-monospace', monospace;
547
+ white-space: nowrap;
548
+ overflow: hidden;
549
+ text-overflow: ellipsis;
550
+ }
551
+
552
+ .occ-row {
553
+ font-size: 0.85rem;
554
+ display: flex;
555
+ align-items: center;
556
+ gap: 6px;
557
+ color: #64748b;
558
+ margin-top: 12px;
559
+ }
560
+
561
+ /* Lists */
562
+ ol,
563
+ ul {
564
+ padding-left: 20px;
565
+ }
566
+
567
+ li {
568
+ margin-bottom: 10px;
569
+ padding-left: 4px;
570
+ color: #334155;
571
+ }
572
+
573
+ li::marker {
574
+ font-weight: 600;
575
+ color: var(--text-muted);
576
+ }
577
+
578
+ /* Buttons & Links */
579
+ .btn-a11y {
580
+ display: inline-flex;
581
+ background: var(--primary);
582
+ color: white;
583
+ border: none;
584
+ padding: 6px 14px;
585
+ border-radius: 8px;
586
+ font-weight: 700;
587
+ box-shadow: 0 4px 12px rgba(79, 70, 229, 0.25);
588
+ white-space: nowrap;
589
+ font-size: 0.8rem;
590
+ text-decoration: none;
591
+ align-items: center;
592
+ gap: 6px;
593
+ transition: transform 0.2s, box-shadow 0.2s;
594
+ }
595
+
596
+ .btn-a11y:hover {
597
+ transform: translateY(-2px);
598
+ box-shadow: 0 6px 16px rgba(79, 70, 229, 0.35);
599
+ }
600
+
601
+ .back-link {
602
+ text-decoration: none;
603
+ display: flex;
604
+ align-items: center;
605
+ gap: 6px;
606
+ color: var(--text-muted);
607
+ font-size: 0.9rem;
608
+ font-weight: 500;
609
+ transition: color 0.2s;
610
+ background: rgba(0, 0, 0, 0.05);
611
+ padding: 8px 16px;
612
+ border-radius: 8px;
613
+ }
614
+
615
+ .back-link:hover {
616
+ color: var(--primary);
617
+ }
618
+
619
+ .btn-guide {
620
+ color: var(--text-muted);
621
+ text-decoration: none;
622
+ display: flex;
623
+ align-items: center;
624
+ gap: 4px;
625
+ font-size: 0.7rem;
626
+ font-weight: 700;
627
+ background: #f1f5f9;
628
+ padding: 6px 10px;
629
+ border-radius: 6px;
630
+ }
631
+
632
+ /* Images & Media */
633
+ .screenshot-grid {
634
+ display: grid;
635
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
636
+ gap: 16px;
637
+ margin-top: 20px;
638
+ }
639
+
640
+ .screenshot-item {
641
+ border-radius: 10px;
642
+ overflow: hidden;
643
+ border: 1px solid #e2e8f0;
644
+ }
645
+
646
+ img {
647
+ width: 100%;
648
+ height: auto;
649
+ display: block;
650
+ }
651
+
652
+ video {
653
+ width: 100%;
654
+ border-radius: 10px;
655
+ margin-top: 8px;
656
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
657
+ background: #000;
658
+ border: 1px solid #000;
659
+ }
660
+
661
+ .attachment-item {
662
+ display: flex;
663
+ align-items: center;
664
+ gap: 12px;
665
+ padding: 10px 16px;
666
+ background: #f8fafc;
667
+ border-radius: 10px;
668
+ text-decoration: none;
669
+ color: var(--primary);
670
+ font-weight: 500;
671
+ margin-bottom: 8px;
672
+ border: 1px solid transparent;
673
+ transition: all 0.2s;
674
+ font-size: 0.95rem;
675
+ }
676
+
677
+ .attachment-item:hover {
678
+ background: #eff6ff;
679
+ border-color: var(--primary-dark);
680
+ transform: translateX(2px);
681
+ }
682
+
683
+ /* Specific to Report Summary hero */
684
+ .meta-row {
685
+ display: flex;
686
+ justify-content: space-between;
687
+ align-items: center;
688
+ gap: 16px;
689
+ margin-top: 16px;
690
+ padding-top: 16px;
691
+ border-top: 1px solid #f1f5f9;
692
+ flex-wrap: wrap;
693
+ }
694
+
695
+ .meta-left {
696
+ display: flex;
697
+ gap: 8px;
698
+ flex-wrap: wrap;
699
+ align-items: center;
700
+ }
701
+
702
+ .summary-hero,
703
+ .page-hero,
704
+ .report-header {
705
+ background: linear-gradient(135deg, #fff 0%, #f1f5f9 100%);
706
+ border: 1px solid var(--glass-border);
707
+ border-radius: 24px;
708
+ padding: 24px;
709
+ margin-bottom: 24px;
710
+ box-shadow: var(--glass-shadow);
711
+ display: flex;
712
+ justify-content: space-between;
713
+ align-items: center;
714
+ gap: 24px;
715
+ }
716
+
717
+ .hero-content h2 {
718
+ font-size: 0.75rem;
719
+ letter-spacing: 0.15em;
720
+ color: var(--text-muted);
721
+ margin-bottom: 8px;
722
+ font-weight: 700;
723
+ text-transform: uppercase;
724
+ }
725
+
726
+ .page-url {
727
+ font-family: 'Outfit', sans-serif;
728
+ font-size: 1.25rem;
729
+ font-weight: 600;
730
+ word-break: break-all;
731
+ color: var(--text-primary);
732
+ margin: 0;
733
+ }
734
+
735
+ .report-status {
736
+ display: flex;
737
+ align-items: center;
738
+ gap: 10px;
739
+ font-weight: 500;
740
+ }
741
+
742
+ .status-icon {
743
+ width: 40px;
744
+ height: 40px;
745
+ border-radius: 12px;
746
+ display: flex;
747
+ align-items: center;
748
+ justify-content: center;
749
+ font-size: 24px;
750
+ }
751
+
752
+ .status-label {
753
+ font-size: 0.85rem;
754
+ color: var(--text-muted);
755
+ font-weight: 600;
756
+ text-transform: uppercase;
757
+ }
758
+
759
+ .status-val {
760
+ font-weight: 700;
761
+ font-size: 1.25rem;
762
+ text-transform: capitalize;
763
+ }
764
+
765
+ .hero-right {
766
+ text-align: right;
767
+ }
768
+
769
+ .gen-date {
770
+ font-size: 0.85rem;
771
+ color: var(--text-muted);
772
+ margin-bottom: 6px;
773
+ }
774
+
775
+ .gen-date-val {
776
+ font-weight: 600;
777
+ color: var(--text-main);
778
+ }
779
+
780
+ .runtime-box {
781
+ font-size: 0.9rem;
782
+ color: var(--text-muted);
783
+ }
784
+
785
+ .runtime-val {
786
+ color: var(--text-main);
787
+ font-size: 1.1rem;
788
+ }
789
+
790
+ /* Tabs */
791
+ .tabs-container {
792
+ display: flex;
793
+ gap: 12px;
794
+ margin-bottom: 32px;
795
+ padding: 4px;
796
+ background: #e2e8f0;
797
+ border-radius: 14px;
798
+ width: fit-content;
799
+ }
800
+
801
+ .tab-btn {
802
+ padding: 10px 20px;
803
+ border: none;
804
+ background: none;
805
+ font-family: 'Inter', sans-serif;
806
+ font-weight: 600;
807
+ font-size: 0.9rem;
808
+ color: var(--text-muted);
809
+ cursor: pointer;
810
+ border-radius: 10px;
811
+ transition: all 0.2s ease;
812
+ }
813
+
814
+ .tab-btn.active {
815
+ background: white;
816
+ color: var(--primary);
817
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
818
+ }
819
+
820
+ .tab-content {
821
+ display: none;
822
+ }
823
+
824
+ .tab-content.active {
825
+ display: block;
826
+ animation: fadeIn 0.3s ease;
827
+ }
828
+
829
+ @keyframes fadeIn {
830
+ from {
831
+ opacity: 0;
832
+ transform: translateY(10px);
833
+ }
834
+
835
+ to {
836
+ opacity: 1;
837
+ transform: translateY(0);
838
+ }
839
+ }
840
+
841
+ /* Accordions */
842
+ .group-section {
843
+ margin-bottom: 30px;
844
+ border: 1px solid var(--glass-border);
845
+ border-radius: 20px;
846
+ overflow: hidden;
847
+ background: white;
848
+ box-shadow: var(--glass-shadow);
849
+ }
850
+
851
+ .group-header {
852
+ background: #eff6ff;
853
+ padding: 20px 24px;
854
+ font-weight: 700;
855
+ color: var(--primary-dark);
856
+ display: flex;
857
+ justify-content: space-between;
858
+ align-items: center;
859
+ cursor: pointer;
860
+ transition: background 0.2s ease;
861
+ }
862
+
863
+ .group-header:hover {
864
+ background: #dbeafe;
865
+ }
866
+
867
+ .group-content {
868
+ padding: 8px 16px 16px;
869
+ }
870
+
871
+ .group-toggle-icon {
872
+ transition: transform 0.2s ease;
873
+ }
874
+
875
+ .collapsed .group-toggle-icon {
876
+ transform: rotate(-90deg);
877
+ }
878
+
879
+ .collapsed .group-content {
880
+ display: none;
881
+ }
882
+
883
+ /* Grid Layout */
884
+ .metrics-grid {
885
+ display: grid;
886
+ grid-template-columns: repeat(3, 1fr);
887
+ gap: 20px;
888
+ margin-bottom: 40px;
889
+ }
890
+
891
+ .metric-stats {
892
+ display: flex;
893
+ flex-direction: column;
894
+ gap: 12px;
895
+ }
896
+
897
+ .stat-item {
898
+ display: flex;
899
+ justify-content: space-between;
900
+ align-items: center;
901
+ font-size: 0.95rem;
902
+ }
903
+
904
+ .stat-label {
905
+ color: var(--text-muted);
906
+ font-weight: 500;
907
+ }
908
+
909
+ .stat-value {
910
+ font-family: 'Outfit', sans-serif;
911
+ font-weight: 700;
912
+ font-size: 1.1rem;
913
+ }
914
+
915
+ .stat-value.test-passed {
916
+ color: var(--passed);
917
+ }
918
+
919
+ .stat-value.test-failed {
920
+ color: var(--failed);
921
+ }
922
+
923
+ .stat-value.test-flaky {
924
+ color: var(--flaky);
925
+ }
926
+
927
+ .stat-value.test-skipped {
928
+ color: var(--skipped);
929
+ }
930
+
931
+ .stat-value.a11y-total {
932
+ color: var(--critical);
933
+ }
934
+
935
+ .metric-card {
936
+ background: white;
937
+ border-radius: 16px;
938
+ padding: 20px;
939
+ display: flex;
940
+ flex-direction: column;
941
+ justify-content: space-between;
942
+ gap: 16px;
943
+ border: 1px solid #f1f5f9;
944
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.03);
945
+ transition: transform 0.2s, box-shadow 0.2s;
946
+ }
947
+
948
+ .metric-card:hover {
949
+ transform: translateY(-4px);
950
+ box-shadow: 0 12px 24px rgba(0, 0, 0, 0.06);
951
+ }
952
+
953
+ .metric-card.critical {
954
+ border-top: 4px solid var(--critical);
955
+ }
956
+
957
+ .metric-card.serious {
958
+ border-top: 4px solid var(--serious);
959
+ }
960
+
961
+ .metric-card.moderate {
962
+ border-top: 4px solid var(--moderate);
963
+ }
964
+
965
+ .metric-card.minor {
966
+ border-top: 4px solid var(--minor);
967
+ }
968
+
969
+ .metric-header {
970
+ display: flex;
971
+ justify-content: space-between;
972
+ align-items: flex-start;
973
+ gap: 8px;
974
+ }
975
+
976
+ .metric-rule {
977
+ font-family: 'ui-monospace', monospace;
978
+ font-weight: 700;
979
+ font-size: 0.9rem;
980
+ color: var(--text-main);
981
+ }
982
+
983
+ .metric-sev {
984
+ font-size: 0.75rem;
985
+ font-weight: 800;
986
+ text-transform: uppercase;
987
+ padding: 2px 8px;
988
+ border-radius: 6px;
989
+ }
990
+
991
+ .metric-sev.critical {
992
+ color: var(--critical);
993
+ background: rgba(201, 42, 42, 0.1);
994
+ }
995
+
996
+ .metric-sev.serious {
997
+ color: var(--serious);
998
+ background: rgba(230, 119, 0, 0.1);
999
+ }
1000
+
1001
+ .metric-sev.moderate {
1002
+ color: var(--moderate);
1003
+ background: rgba(202, 138, 4, 0.1);
1004
+ }
1005
+
1006
+ .metric-sev.minor {
1007
+ color: var(--minor);
1008
+ background: rgba(8, 145, 178, 0.1);
1009
+ }
1010
+
1011
+ .metric-desc {
1012
+ font-size: 0.85rem;
1013
+ color: var(--text-muted);
1014
+ margin-top: 8px;
1015
+ display: -webkit-box;
1016
+ -webkit-line-clamp: 2;
1017
+ line-clamp: 2;
1018
+ -webkit-box-orient: vertical;
1019
+ overflow: hidden;
1020
+ }
1021
+
1022
+ .metric-footer {
1023
+ display: flex;
1024
+ justify-content: space-between;
1025
+ align-items: center;
1026
+ margin-top: auto;
1027
+ }
1028
+
1029
+ .metric-count {
1030
+ font-size: 1.8rem;
1031
+ font-weight: 800;
1032
+ font-family: 'Outfit', sans-serif;
1033
+ line-height: 1;
1034
+ }
1035
+
1036
+ .metric-count.critical {
1037
+ color: var(--critical);
1038
+ }
1039
+
1040
+ .metric-count.serious {
1041
+ color: var(--serious);
1042
+ }
1043
+
1044
+ .metric-count.moderate {
1045
+ color: var(--moderate);
1046
+ }
1047
+
1048
+ .metric-count.minor {
1049
+ color: var(--minor);
1050
+ }
1051
+
1052
+ /* Charts */
1053
+ .chart-box {
1054
+ background: var(--card-bg);
1055
+ backdrop-filter: blur(12px);
1056
+ border: 1px solid var(--glass-border);
1057
+ border-radius: 24px;
1058
+ padding: 24px;
1059
+ box-shadow: var(--glass-shadow);
1060
+ margin-bottom: 40px;
1061
+ }
1062
+
1063
+ .chart-title {
1064
+ font-family: 'Outfit', sans-serif;
1065
+ font-size: 1.1rem;
1066
+ margin-bottom: 20px;
1067
+ color: var(--text-main);
1068
+ display: flex;
1069
+ justify-content: space-between;
1070
+ align-items: center;
1071
+ }
1072
+
1073
+ .chart-legend {
1074
+ display: flex;
1075
+ gap: 16px;
1076
+ font-size: 0.85rem;
1077
+ font-weight: 600;
1078
+ }
1079
+
1080
+ .legend-item {
1081
+ display: flex;
1082
+ align-items: center;
1083
+ gap: 6px;
1084
+ }
1085
+
1086
+ .legend-dot {
1087
+ width: 14px;
1088
+ height: 14px;
1089
+ border-radius: 4px;
1090
+ }
1091
+
1092
+ .legend-dot.critical {
1093
+ background: var(--critical);
1094
+ }
1095
+
1096
+ .legend-dot.serious {
1097
+ background: var(--serious);
1098
+ }
1099
+
1100
+ .legend-dot.moderate {
1101
+ background: var(--moderate);
1102
+ }
1103
+
1104
+ .legend-dot.minor {
1105
+ background: var(--minor);
1106
+ }
1107
+
1108
+ .insights-header {
1109
+ font-family: 'Outfit', sans-serif;
1110
+ font-size: 1.25rem;
1111
+ margin-bottom: 24px;
1112
+ color: var(--text-main);
1113
+ display: flex;
1114
+ align-items: center;
1115
+ gap: 8px;
1116
+ }
1117
+
1118
+ .test-card {
1119
+ background: #fff;
1120
+ border-radius: 12px;
1121
+ padding: 16px 20px;
1122
+ margin-top: 8px;
1123
+ display: flex;
1124
+ align-items: center;
1125
+ gap: 16px;
1126
+ border: 1px solid #f1f5f9;
1127
+ transition: all 0.2s ease;
1128
+ text-decoration: none;
1129
+ color: inherit;
1130
+ }
1131
+
1132
+ .test-card:hover {
1133
+ border-color: var(--primary);
1134
+ box-shadow: 0 4px 12px rgba(79, 70, 229, 0.08);
1135
+ transform: translateX(4px);
1136
+ background: #f8fafc;
1137
+ }
1138
+
1139
+ .test-main-info {
1140
+ flex: 1;
1141
+ display: flex;
1142
+ align-items: center;
1143
+ justify-content: space-between;
1144
+ width: 100%;
1145
+ }
1146
+
1147
+ .test-title-group {
1148
+ display: flex;
1149
+ align-items: center;
1150
+ gap: 16px;
1151
+ }
1152
+
1153
+ .test-title {
1154
+ font-weight: 600;
1155
+ margin: 0;
1156
+ display: block;
1157
+ }
1158
+
1159
+ .test-meta {
1160
+ display: flex;
1161
+ gap: 12px;
1162
+ font-size: 0.8rem;
1163
+ color: var(--text-muted);
1164
+ align-items: center;
1165
+ }
1166
+
1167
+ .err-badge {
1168
+ background: #fee2e2;
1169
+ color: #ef4444;
1170
+ font-size: 0.7rem;
1171
+ font-weight: 800;
1172
+ padding: 2px 8px;
1173
+ border-radius: 6px;
1174
+ white-space: nowrap;
1175
+ }
1176
+
1177
+ .test-dur {
1178
+ font-size: 0.8rem;
1179
+ color: var(--text-muted);
1180
+ font-weight: 700;
1181
+ }
1182
+
1183
+ /* Violation Cards */
1184
+ .violation-card {
1185
+ background: var(--glass-bg);
1186
+ backdrop-filter: blur(8px);
1187
+ border-radius: var(--card-radius);
1188
+ border: 1px solid var(--glass-border);
1189
+ overflow: hidden;
1190
+ margin-bottom: 24px;
1191
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04);
1192
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
1193
+ }
1194
+
1195
+ .violation-card:hover {
1196
+ transform: translateY(-2px);
1197
+ box-shadow: 0 12px 30px rgba(0, 0, 0, 0.08);
1198
+ }
1199
+
1200
+ .violation-header {
1201
+ padding: 12px 20px;
1202
+ display: flex;
1203
+ justify-content: space-between;
1204
+ align-items: center;
1205
+ gap: 20px;
1206
+ background: rgba(255, 255, 255, 0.5);
1207
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
1208
+ }
1209
+
1210
+ .title-meta {
1211
+ display: flex;
1212
+ align-items: center;
1213
+ gap: 16px;
1214
+ flex-wrap: wrap;
1215
+ }
1216
+
1217
+ .violation-title {
1218
+ font-family: 'Outfit', sans-serif;
1219
+ font-size: 1.25rem;
1220
+ font-weight: 700;
1221
+ color: var(--text-main);
1222
+ display: block;
1223
+ margin: 0;
1224
+ }
1225
+
1226
+ .violation-rule-info {
1227
+ font-size: 0.85rem;
1228
+ color: var(--text-muted);
1229
+ margin: 0;
1230
+ display: flex;
1231
+ align-items: center;
1232
+ gap: 8px;
1233
+ }
1234
+
1235
+ .rule-name {
1236
+ font-weight: 700;
1237
+ color: var(--text-main);
1238
+ }
1239
+
1240
+ .rule-sep {
1241
+ opacity: 0.5;
1242
+ }
1243
+
1244
+ .violation-body {
1245
+ padding: 16px 20px;
1246
+ }
1247
+
1248
+ .fix-suggestion {
1249
+ background: #f0fdf4;
1250
+ border: 1px solid #bbf7d0;
1251
+ padding: 12px 16px;
1252
+ border-radius: 12px;
1253
+ margin-bottom: 24px;
1254
+ font-size: 0.95rem;
1255
+ color: #166534;
1256
+ display: flex;
1257
+ gap: 12px;
1258
+ align-items: flex-start;
1259
+ }
1260
+
1261
+ .fix-icon {
1262
+ color: #059669;
1263
+ font-size: 20px;
1264
+ }
1265
+
1266
+ .fix-title {
1267
+ font-weight: 700;
1268
+ margin-bottom: 4px;
1269
+ }
1270
+
1271
+ .fix-link {
1272
+ margin-left: 8px;
1273
+ color: #059669;
1274
+ font-weight: 600;
1275
+ text-decoration: none;
1276
+ border-bottom: 1.5px solid rgba(5, 150, 105, 0.3);
1277
+ }
1278
+
1279
+ .fix-link-icon {
1280
+ font-size: 14px;
1281
+ vertical-align: middle;
1282
+ }
1283
+
1284
+ /* Instances */
1285
+ .instances-title {
1286
+ font-size: 0.9rem;
1287
+ font-weight: 700;
1288
+ color: var(--text-main);
1289
+ margin-bottom: 16px;
1290
+ display: flex;
1291
+ align-items: center;
1292
+ gap: 8px;
1293
+ }
1294
+
1295
+ .instances-icon {
1296
+ font-size: 18px;
1297
+ color: var(--primary);
1298
+ }
1299
+
1300
+ .bug-section-title {
1301
+ font-size: 0.75rem;
1302
+ text-transform: uppercase;
1303
+ letter-spacing: 0.05em;
1304
+ color: var(--text-muted);
1305
+ font-weight: 700;
1306
+ margin-bottom: 8px;
1307
+ }
1308
+
1309
+ .bug-content-box {
1310
+ background: #f8fafc;
1311
+ border-radius: 8px;
1312
+ padding: 12px;
1313
+ font-size: 0.9rem;
1314
+ color: var(--text-main);
1315
+ border: 1px solid #f1f5f9;
1316
+ }
1317
+
1318
+ /* Restoration of Bug List UI (Accordion) */
1319
+ .bug-list-item {
1320
+ border: 1px solid #e2e8f0;
1321
+ border-radius: 12px;
1322
+ margin-bottom: 12px;
1323
+ overflow: hidden;
1324
+ background: #fff;
1325
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03);
1326
+ }
1327
+
1328
+ .bug-item-header {
1329
+ background: #fff;
1330
+ padding: 14px 20px;
1331
+ display: flex;
1332
+ justify-content: space-between;
1333
+ align-items: center;
1334
+ cursor: pointer;
1335
+ transition: background 0.2s;
1336
+ }
1337
+
1338
+ .bug-item-header:hover {
1339
+ background: #f8fafc;
1340
+ }
1341
+
1342
+ .bug-item-header .chevron {
1343
+ transition: transform 0.3s;
1344
+ color: var(--text-muted);
1345
+ }
1346
+
1347
+ .bug-item-header[aria-expanded="true"] .chevron {
1348
+ transform: rotate(180deg);
1349
+ }
1350
+
1351
+ .bug-snippet {
1352
+ font-family: 'JetBrains Mono', monospace;
1353
+ font-size: 0.85rem;
1354
+ color: var(--primary-dark);
1355
+ background: var(--primary-soft);
1356
+ padding: 6px 12px;
1357
+ border-radius: 8px;
1358
+ max-width: 100%;
1359
+ white-space: nowrap;
1360
+ overflow: hidden;
1361
+ text-overflow: ellipsis;
1362
+ border: 1px solid rgba(99, 102, 241, 0.1);
1363
+ }
1364
+
1365
+ .bug-details-body {
1366
+ padding: 20px;
1367
+ background: #f8fafc;
1368
+ border-top: 1px solid #f1f5f9;
1369
+ }
1370
+
1371
+ .log-bug-btn {
1372
+ display: inline-flex !important;
1373
+ align-items: center !important;
1374
+ justify-content: center !important;
1375
+ gap: 8px !important;
1376
+ padding: 6px 16px !important;
1377
+ background: linear-gradient(135deg, var(--primary), var(--primary-dark));
1378
+ color: #fff;
1379
+ border: none;
1380
+ box-shadow: 0 4px 10px rgba(99, 102, 241, 0.2);
1381
+ transition: all 0.2s ease;
1382
+ font-size: 0.85rem;
1383
+ letter-spacing: 0.3px;
1384
+ border-radius: 6px;
1385
+ cursor: pointer;
1386
+ }
1387
+
1388
+ .log-bug-btn:hover {
1389
+ transform: translateY(-1px);
1390
+ box-shadow: 0 6px 15px rgba(99, 102, 241, 0.3);
1391
+ color: #fff;
1392
+ }
1393
+
1394
+ .log-bug-btn span {
1395
+ font-size: 18px !important;
1396
+ margin: 0 !important;
1397
+ display: inline-block;
1398
+ vertical-align: middle;
1399
+ }
1400
+
1401
+ /* ADO Modal Standardized */
1402
+ .ado-modal-premium .modal-content {
1403
+ border-radius: 20px;
1404
+ border: 1px solid var(--glass-border);
1405
+ box-shadow: 0 25px 50px rgba(0, 0, 0, 0.15);
1406
+ background: rgba(255, 255, 255, 0.98);
1407
+ backdrop-filter: blur(10px);
1408
+ overflow: hidden;
1409
+ }
1410
+
1411
+ .ado-modal-premium .modal-header {
1412
+ background: #f8fafc;
1413
+ padding: 24px 32px;
1414
+ border-bottom: 1px solid var(--glass-border);
1415
+ }
1416
+
1417
+ .ado-modal-premium .modal-title {
1418
+ font-family: 'Outfit', sans-serif;
1419
+ font-weight: 700;
1420
+ font-size: 1.25rem;
1421
+ color: var(--text-main);
1422
+ display: flex;
1423
+ align-items: center;
1424
+ gap: 12px;
1425
+ }
1426
+
1427
+ .ado-modal-premium .modal-body {
1428
+ padding: 24px 32px;
1429
+ max-height: 550px;
1430
+ overflow-y: auto;
1431
+ }
1432
+
1433
+ .ado-modal-premium .modal-footer {
1434
+ padding: 12px 32px;
1435
+ background: #f8fafc;
1436
+ border-top: 1px solid var(--glass-border);
1437
+ }
1438
+
1439
+ .ado-field-group {
1440
+ margin-bottom: 20px;
1441
+ }
1442
+
1443
+ .ado-form-label {
1444
+ display: block;
1445
+ font-weight: 700;
1446
+ font-size: 0.8rem;
1447
+ color: var(--text-muted);
1448
+ margin-bottom: 8px;
1449
+ text-transform: uppercase;
1450
+ letter-spacing: 0.5px;
1451
+ }
1452
+
1453
+ .ado-form-input {
1454
+ display: block;
1455
+ width: 100%;
1456
+ padding: 12px 16px;
1457
+ font-size: 0.95rem;
1458
+ font-weight: 400;
1459
+ line-height: 1.5;
1460
+ color: var(--text-main);
1461
+ background-color: #fff;
1462
+ background-clip: padding-box;
1463
+ border: 1.5px solid #e2e8f0;
1464
+ border-radius: 12px;
1465
+ transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
1466
+ }
1467
+
1468
+ .ado-form-input:focus {
1469
+ color: var(--text-main);
1470
+ background-color: #fff;
1471
+ border-color: var(--primary);
1472
+ outline: 0;
1473
+ box-shadow: 0 0 0 4px rgba(99, 102, 241, 0.1);
1474
+ }
1475
+
1476
+ select.ado-form-input {
1477
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
1478
+ background-repeat: no-repeat;
1479
+ background-position: right 1rem center;
1480
+ background-size: 16px 12px;
1481
+ appearance: none;
1482
+ }
1483
+
1484
+ .ado-repro-preview {
1485
+ background: #f8fafc;
1486
+ border: 1.5px solid #e2e8f0;
1487
+ padding: 16px;
1488
+ border-radius: 12px;
1489
+ font-size: 0.9rem;
1490
+ line-height: 1.6;
1491
+ color: var(--text-main);
1492
+ }
1493
+
1494
+ .ado-repro-preview b { color: var(--primary-dark); }
1495
+ .ado-repro-preview hr { margin: 16px 0; opacity: 0.1; }
1496
+
1497
+ .screenshot-thumb, .video-preview-player {
1498
+ width: 100%;
1499
+ border-radius: 12px;
1500
+ background: #000;
1501
+ border: 1.5px solid #e2e8f0;
1502
+ display: block;
1503
+ object-fit: contain;
1504
+ }
1505
+ .screenshot-thumb { height: auto; max-height: 480px; }
1506
+ .video-preview-player { height: 280px; }
1507
+
1508
+ /* Token Modal Styles */
1509
+ .modal-header-custom { padding: 32px 32px 16px; border-bottom: none; }
1510
+ .modal-title-custom { font-weight: 700; font-size: 1.5rem; font-family: 'Outfit', sans-serif; }
1511
+ .modal-body-custom { padding: 0 32px 24px; }
1512
+ .modal-footer-custom { padding: 0 32px 32px; border-top: none; }
1513
+ .modal-desc { font-size: 0.95rem; color: var(--text-muted); margin-bottom: 24px; }
1514
+ .token-input-wrap { position: relative; }
1515
+ .token-icon { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--text-muted); font-size: 20px; }
1516
+ .token-input { border-radius: 12px; padding: 14px 14px 14px 44px; background: #f8fafc; }
1517
+ .btn-init { border-radius: 14px; font-weight: 700; padding: 16px; background: var(--primary); }
1518
+
1519
+ /* Restored Bug Details Body elements */
1520
+ .bug-section-title {
1521
+ font-size: 0.75rem;
1522
+ text-transform: uppercase;
1523
+ letter-spacing: 0.05em;
1524
+ color: var(--text-muted);
1525
+ font-weight: 700;
1526
+ margin-bottom: 8px;
1527
+ }
1528
+
1529
+ .bug-content-box {
1530
+ background: #f8fafc;
1531
+ border-radius: 8px;
1532
+ padding: 12px;
1533
+ font-size: 0.9rem;
1534
+ color: var(--text-main);
1535
+ border: 1px solid #f1f5f9;
1536
+ }