agent-regression-lab 0.3.0 → 0.5.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.
@@ -1,174 +1,1166 @@
1
1
  /* src/ui/styles.css */
2
2
  :root {
3
- color-scheme: light;
4
- --bg: #f1ede4;
5
- --panel: #fffdf7;
6
- --ink: #1c1a16;
7
- --muted: #665f54;
8
- --line: #d6ccbc;
9
- --accent: #9e3d22;
10
- --pass: #1e6a42;
11
- --fail: #9a2c1f;
12
- --error: #5b1e72;
13
- }
14
- * {
3
+ --bg: #07090e;
4
+ --bg-2: #0a0e15;
5
+ --ink: #f1ebdd;
6
+ --ink-mid: rgba(241,235,221,0.70);
7
+ --ink-lo: rgba(241,235,221,0.38);
8
+ --accent: #00e5cc;
9
+ --accent-lo: rgba(0,229,204,0.18);
10
+ --accent-xs: rgba(0,229,204,0.05);
11
+ --line: rgba(241,235,221,0.09);
12
+ --line-hi: rgba(241,235,221,0.20);
13
+ --pass: #1fd68a;
14
+ --fail: #ff3d57;
15
+ --warn: #ffaa33;
16
+ --serif:
17
+ "Instrument Serif",
18
+ Georgia,
19
+ serif;
20
+ --mono:
21
+ "Geist Mono",
22
+ "JetBrains Mono",
23
+ monospace;
24
+ --sans:
25
+ "Geist",
26
+ system-ui,
27
+ sans-serif;
28
+ }
29
+ *,
30
+ *::before,
31
+ *::after {
15
32
  box-sizing: border-box;
33
+ margin: 0;
34
+ padding: 0;
16
35
  }
36
+ html,
17
37
  body {
18
- margin: 0;
19
- background:
20
- radial-gradient(
21
- circle at top,
22
- #f8f3ea 0,
23
- var(--bg) 45%,
24
- #e4dccd 100%);
25
- color: var(--ink);
26
- font-family:
27
- "IBM Plex Sans",
28
- "Helvetica Neue",
29
- sans-serif;
38
+ height: 100%;
39
+ background: var(--bg);
40
+ color: var(--ink);
41
+ font-family: var(--sans);
42
+ font-size: 14px;
43
+ overflow: hidden;
44
+ -webkit-font-smoothing: antialiased;
45
+ font-feature-settings: "ss01", "cv11";
46
+ letter-spacing: -0.005em;
30
47
  }
31
48
  a {
49
+ color: inherit;
50
+ text-decoration: none;
51
+ }
52
+ .shell {
53
+ display: flex;
54
+ flex-direction: column;
55
+ height: 100vh;
56
+ overflow: hidden;
57
+ }
58
+ .chrome {
59
+ height: 48px;
60
+ flex-shrink: 0;
61
+ background: var(--bg);
62
+ border-bottom: 1px solid var(--line);
63
+ display: flex;
64
+ align-items: center;
65
+ padding: 0 1.5rem;
66
+ position: relative;
67
+ z-index: 100;
68
+ }
69
+ .brand {
70
+ font-family: var(--serif);
71
+ font-style: italic;
72
+ font-weight: 400;
73
+ font-size: 1.5rem;
32
74
  color: var(--accent);
75
+ line-height: 1;
76
+ letter-spacing: -.01em;
77
+ padding-right: 1rem;
78
+ border-right: 1px solid var(--line);
79
+ margin-right: 1rem;
33
80
  text-decoration: none;
34
81
  }
35
- pre {
36
- white-space: pre-wrap;
37
- word-break: break-word;
38
- background: #f7f1e6;
82
+ .brand-meta {
83
+ font-family: var(--mono);
84
+ font-size: .7rem;
85
+ color: var(--ink-mid);
86
+ letter-spacing: .04em;
87
+ }
88
+ .nav {
89
+ margin-left: 2.5rem;
90
+ display: flex;
91
+ gap: 4px;
92
+ }
93
+ .nv-btn {
94
+ background: none;
95
+ border: none;
96
+ color: var(--ink-mid);
97
+ font-family: var(--sans);
98
+ font-size: .78rem;
99
+ font-weight: 500;
100
+ padding: 8px 14px;
101
+ cursor: pointer;
102
+ position: relative;
103
+ transition: color .15s;
104
+ letter-spacing: .01em;
105
+ text-decoration: none;
106
+ display: inline-block;
107
+ }
108
+ .nv-btn:hover {
109
+ color: var(--ink);
110
+ }
111
+ .nv-btn.on {
112
+ color: var(--accent);
113
+ }
114
+ .nv-btn.on::after {
115
+ content: "";
116
+ position: absolute;
117
+ left: 14px;
118
+ right: 14px;
119
+ bottom: -1px;
120
+ height: 1px;
121
+ background: var(--accent);
122
+ }
123
+ .live {
124
+ margin-left: auto;
125
+ display: flex;
126
+ align-items: center;
127
+ gap: 8px;
128
+ font-family: var(--mono);
129
+ font-size: .6rem;
130
+ color: var(--ink-lo);
131
+ letter-spacing: .12em;
132
+ }
133
+ .live-dot {
134
+ width: 6px;
135
+ height: 6px;
136
+ border-radius: 50%;
137
+ background: var(--pass);
138
+ box-shadow: 0 0 6px var(--pass);
139
+ animation: pulse 2s ease-in-out infinite;
140
+ }
141
+ @keyframes pulse {
142
+ 0%, 100% {
143
+ opacity: 1;
144
+ }
145
+ 50% {
146
+ opacity: .35;
147
+ }
148
+ }
149
+ .view-body {
150
+ flex: 1;
151
+ display: flex;
152
+ overflow: hidden;
153
+ }
154
+ .sidebar {
155
+ width: 320px;
156
+ flex-shrink: 0;
157
+ background: var(--bg);
158
+ border-right: 1px solid var(--line);
159
+ display: flex;
160
+ flex-direction: column;
161
+ overflow: hidden;
162
+ }
163
+ .sb-head {
164
+ padding: 1.6rem 1.5rem 1.2rem;
165
+ border-bottom: 1px solid var(--line);
166
+ flex-shrink: 0;
167
+ }
168
+ .sb-kicker {
169
+ font-family: var(--mono);
170
+ font-size: .7rem;
171
+ color: var(--ink-mid);
172
+ letter-spacing: .12em;
173
+ text-transform: uppercase;
174
+ margin-bottom: .8rem;
175
+ }
176
+ .sb-title {
177
+ font-family: var(--serif);
178
+ font-weight: 400;
179
+ font-size: 1.7rem;
180
+ color: var(--ink);
181
+ letter-spacing: -.015em;
182
+ line-height: 1.05;
183
+ }
184
+ .sb-title em {
185
+ font-style: italic;
186
+ color: var(--accent);
187
+ font-weight: 400;
188
+ }
189
+ .tally {
190
+ display: flex;
191
+ gap: 2rem;
192
+ margin-top: 1rem;
193
+ }
194
+ .t-cell {
195
+ display: flex;
196
+ flex-direction: column;
197
+ gap: 4px;
198
+ }
199
+ .t-v {
200
+ font-family: var(--serif);
201
+ font-style: italic;
202
+ font-weight: 400;
203
+ font-size: 1.9rem;
204
+ line-height: 1;
205
+ letter-spacing: -.02em;
206
+ color: var(--ink);
207
+ }
208
+ .t-v.p {
209
+ color: var(--pass);
210
+ }
211
+ .t-v.f {
212
+ color: var(--fail);
213
+ }
214
+ .t-v.w {
215
+ color: var(--warn);
216
+ }
217
+ .t-l {
218
+ font-family: var(--mono);
219
+ font-size: .66rem;
220
+ color: var(--ink-mid);
221
+ letter-spacing: .1em;
222
+ text-transform: uppercase;
223
+ }
224
+ .sb-filter {
225
+ padding: .8rem 1.5rem;
226
+ border-bottom: 1px solid var(--line);
227
+ flex-shrink: 0;
228
+ }
229
+ .filt {
230
+ display: flex;
231
+ align-items: center;
232
+ gap: 8px;
233
+ background: var(--bg-2);
39
234
  border: 1px solid var(--line);
40
- padding: 0.8rem;
41
- border-radius: 10px;
235
+ border-radius: 3px;
236
+ padding: 6px 10px;
42
237
  }
43
- .shell {
44
- min-height: 100vh;
238
+ .filt:focus-within {
239
+ border-color: var(--accent-lo);
240
+ }
241
+ .filt-i {
242
+ font-family: var(--mono);
243
+ color: var(--accent);
244
+ font-size: .85rem;
245
+ }
246
+ .filt-in {
247
+ flex: 1;
248
+ background: none;
249
+ border: none;
250
+ outline: none;
251
+ font-family: var(--mono);
252
+ font-size: .8rem;
253
+ color: var(--ink);
254
+ caret-color: var(--accent);
255
+ }
256
+ .filt-in::placeholder {
257
+ color: var(--ink-lo);
258
+ }
259
+ .run-list {
260
+ flex: 1;
261
+ overflow-y: auto;
262
+ padding: .3rem 0;
263
+ }
264
+ .run-list::-webkit-scrollbar {
265
+ width: 4px;
45
266
  }
46
- .topbar {
47
- position: sticky;
267
+ .run-list::-webkit-scrollbar-thumb {
268
+ background: var(--line-hi);
269
+ }
270
+ .run-list-empty {
271
+ padding: 2rem 1.5rem;
272
+ color: var(--ink-lo);
273
+ font-family: var(--mono);
274
+ font-size: .75rem;
275
+ }
276
+ .run {
277
+ padding: .8rem 1.5rem;
278
+ cursor: pointer;
279
+ position: relative;
280
+ display: grid;
281
+ grid-template-columns: 1fr auto;
282
+ gap: 4px 14px;
283
+ align-items: center;
284
+ border-bottom: 1px solid var(--line);
285
+ transition: background .12s;
286
+ text-decoration: none;
287
+ color: inherit;
288
+ display: grid;
289
+ }
290
+ .run::before {
291
+ content: "";
292
+ position: absolute;
293
+ left: 0;
48
294
  top: 0;
49
- backdrop-filter: blur(10px);
50
- background: rgba(241, 237, 228, 0.92);
295
+ bottom: 0;
296
+ width: 2px;
297
+ background: transparent;
298
+ transition: background .12s;
299
+ }
300
+ .run:hover {
301
+ background: var(--accent-xs);
302
+ }
303
+ .run.on {
304
+ background: var(--accent-xs);
305
+ }
306
+ .run.on::before {
307
+ background: var(--accent);
308
+ }
309
+ .run.on.p::before {
310
+ background: var(--pass);
311
+ }
312
+ .run.on.f::before {
313
+ background: var(--fail);
314
+ }
315
+ .run-name {
316
+ font-family: var(--sans);
317
+ font-size: .92rem;
318
+ font-weight: 500;
319
+ color: var(--ink);
320
+ display: flex;
321
+ align-items: center;
322
+ gap: 8px;
323
+ letter-spacing: -.005em;
324
+ min-width: 0;
325
+ }
326
+ .run-name-text {
327
+ overflow: hidden;
328
+ text-overflow: ellipsis;
329
+ white-space: nowrap;
330
+ }
331
+ .run-dot {
332
+ width: 6px;
333
+ height: 6px;
334
+ border-radius: 50%;
335
+ flex-shrink: 0;
336
+ }
337
+ .run-dot.p {
338
+ background: var(--pass);
339
+ }
340
+ .run-dot.f {
341
+ background: var(--fail);
342
+ }
343
+ .run-dot.w {
344
+ background: var(--warn);
345
+ }
346
+ .run-score {
347
+ font-family: var(--serif);
348
+ font-style: italic;
349
+ font-weight: 400;
350
+ font-size: 1.9rem;
351
+ line-height: 1;
352
+ grid-row: 1/3;
353
+ grid-column: 2;
354
+ align-self: center;
355
+ letter-spacing: -.025em;
356
+ }
357
+ .run-score.p {
358
+ color: var(--pass);
359
+ }
360
+ .run-score.f {
361
+ color: var(--fail);
362
+ }
363
+ .run-score.w {
364
+ color: var(--warn);
365
+ }
366
+ .run-score.n {
367
+ color: var(--ink-lo);
368
+ }
369
+ .run-meta {
370
+ grid-column: 1/2;
371
+ font-family: var(--mono);
372
+ font-size: .7rem;
373
+ color: var(--ink-mid);
374
+ letter-spacing: .02em;
375
+ padding-left: 14px;
376
+ overflow: hidden;
377
+ text-overflow: ellipsis;
378
+ white-space: nowrap;
379
+ }
380
+ .main {
381
+ flex: 1;
382
+ display: flex;
383
+ flex-direction: column;
384
+ overflow: hidden;
385
+ background: var(--bg);
386
+ }
387
+ .scroll {
388
+ flex: 1;
389
+ overflow-y: auto;
390
+ }
391
+ .scroll::-webkit-scrollbar {
392
+ width: 6px;
393
+ }
394
+ .scroll::-webkit-scrollbar-thumb {
395
+ background: var(--line-hi);
396
+ }
397
+ .cmd {
398
+ height: 40px;
399
+ flex-shrink: 0;
51
400
  border-bottom: 1px solid var(--line);
52
- padding: 1rem 1.25rem;
401
+ display: flex;
402
+ align-items: center;
403
+ gap: .8rem;
404
+ padding: 0 2rem;
405
+ font-family: var(--mono);
406
+ font-size: .78rem;
407
+ background: var(--bg);
53
408
  }
54
- .brand {
55
- font-family: "IBM Plex Mono", monospace;
56
- font-size: 0.95rem;
57
- text-transform: uppercase;
58
- letter-spacing: 0.08em;
409
+ .cmd-p {
410
+ color: var(--accent);
411
+ font-weight: 500;
412
+ }
413
+ .cmd-t {
414
+ color: var(--ink-mid);
415
+ }
416
+ .cmd-t .w {
59
417
  color: var(--ink);
60
418
  }
61
- .page {
62
- max-width: 1200px;
63
- margin: 0 auto;
64
- padding: 1.25rem;
419
+ .cmd-caret {
420
+ display: inline-block;
421
+ width: 6px;
422
+ height: 12px;
423
+ background: var(--accent);
424
+ margin-left: 4px;
425
+ vertical-align: middle;
426
+ animation: blink 1.1s step-end infinite;
65
427
  }
66
- .hero {
428
+ @keyframes blink {
429
+ 50% {
430
+ opacity: 0;
431
+ }
432
+ }
433
+ .cmd-r {
434
+ margin-left: auto;
435
+ display: flex;
436
+ gap: 1rem;
437
+ font-size: .66rem;
438
+ color: var(--ink-mid);
439
+ letter-spacing: .04em;
440
+ }
441
+ .cmd-r kbd {
442
+ font-family: var(--mono);
443
+ font-size: .64rem;
444
+ border: 1px solid var(--line-hi);
445
+ padding: 1px 5px;
446
+ border-radius: 2px;
447
+ color: var(--ink);
448
+ margin-right: 4px;
449
+ }
450
+ .ov-hero {
451
+ padding: 4rem 3rem 3rem;
452
+ }
453
+ .oh-eyebrow {
454
+ font-family: var(--mono);
455
+ font-size: .72rem;
456
+ color: var(--ink-mid);
457
+ letter-spacing: .12em;
458
+ text-transform: uppercase;
459
+ margin-bottom: 1.2rem;
460
+ }
461
+ .oh-num {
462
+ font-family: var(--serif);
463
+ font-style: italic;
464
+ font-weight: 400;
465
+ font-size: 8.5rem;
466
+ line-height: .9;
467
+ letter-spacing: -.04em;
468
+ color: var(--ink);
67
469
  margin-bottom: 1rem;
68
470
  }
69
- .hero h1 {
70
- margin: 0 0 0.35rem;
71
- font-size: 2rem;
471
+ .oh-num .unit {
472
+ font-style: normal;
473
+ font-weight: 500;
474
+ font-family: var(--mono);
475
+ font-size: 1rem;
476
+ color: var(--ink-mid);
477
+ letter-spacing: .08em;
478
+ vertical-align: super;
479
+ margin-left: .6rem;
480
+ text-transform: uppercase;
72
481
  }
73
- .hero p,
74
- .muted {
75
- color: var(--muted);
482
+ .oh-sub {
483
+ font-family: var(--sans);
484
+ font-size: 1rem;
485
+ font-weight: 400;
486
+ color: var(--ink);
487
+ line-height: 1.55;
488
+ max-width: 520px;
489
+ opacity: .8;
490
+ }
491
+ .oh-sub .hi {
492
+ color: var(--ink);
493
+ font-weight: 500;
494
+ opacity: 1;
495
+ }
496
+ .chart-wrap {
497
+ padding: 1rem 3rem 3rem;
498
+ }
499
+ .chart-h {
500
+ font-family: var(--mono);
501
+ font-size: .72rem;
502
+ color: var(--ink-mid);
503
+ letter-spacing: .12em;
504
+ text-transform: uppercase;
505
+ margin-bottom: 1.2rem;
506
+ display: flex;
507
+ justify-content: space-between;
508
+ align-items: baseline;
509
+ }
510
+ .chart-h-r {
511
+ font-size: .72rem;
512
+ color: var(--ink-mid);
76
513
  }
77
- .filters,
78
- .stats,
79
- .panel-grid,
80
- .compare-grid {
514
+ .dh {
515
+ padding: 4rem 3rem 2.5rem;
81
516
  display: grid;
517
+ grid-template-columns: auto 1fr;
518
+ gap: 0 3rem;
519
+ align-items: center;
520
+ }
521
+ .dh-score {
522
+ font-family: var(--serif);
523
+ font-style: italic;
524
+ font-weight: 400;
525
+ font-size: 9.5rem;
526
+ line-height: .85;
527
+ letter-spacing: -.05em;
528
+ }
529
+ .dh-score.p {
530
+ color: var(--pass);
531
+ text-shadow: 0 0 50px color-mix(in srgb, var(--pass) 25%, transparent);
532
+ }
533
+ .dh-score.f {
534
+ color: var(--fail);
535
+ text-shadow: 0 0 50px color-mix(in srgb, var(--fail) 25%, transparent);
536
+ }
537
+ .dh-score.w {
538
+ color: var(--warn);
539
+ text-shadow: 0 0 50px color-mix(in srgb, var(--warn) 25%, transparent);
540
+ }
541
+ .dh-meta {
542
+ display: flex;
543
+ flex-direction: column;
544
+ gap: .8rem;
545
+ min-width: 0;
546
+ }
547
+ .dh-kicker {
548
+ font-family: var(--mono);
549
+ font-size: .72rem;
550
+ color: var(--accent);
551
+ letter-spacing: .12em;
552
+ text-transform: uppercase;
553
+ }
554
+ .dh-title {
555
+ font-family: var(--serif);
556
+ font-style: italic;
557
+ font-weight: 400;
558
+ font-size: 3.6rem;
559
+ line-height: .95;
560
+ letter-spacing: -.025em;
561
+ color: var(--ink);
562
+ }
563
+ .dh-row {
564
+ font-family: var(--mono);
565
+ font-size: .8rem;
566
+ color: var(--ink-mid);
567
+ display: flex;
568
+ gap: 1.4rem;
569
+ margin-top: .5rem;
570
+ flex-wrap: wrap;
571
+ }
572
+ .dh-row .d {
573
+ color: var(--ink-lo);
574
+ }
575
+ .dh-row .v {
576
+ color: var(--ink);
577
+ }
578
+ .failure-panel-block {
579
+ margin: 0 3rem 1.5rem;
580
+ border-left: 3px solid var(--fail);
581
+ padding: .9rem 1.2rem;
582
+ background: color-mix(in srgb, var(--fail) 6%, transparent);
583
+ border-radius: 0 4px 4px 0;
584
+ }
585
+ .fp-label {
586
+ font-family: var(--mono);
587
+ font-size: .7rem;
588
+ color: var(--fail);
589
+ letter-spacing: .1em;
590
+ text-transform: uppercase;
591
+ margin-bottom: .5rem;
592
+ }
593
+ .fp-item {
594
+ font-family: var(--mono);
595
+ font-size: .82rem;
596
+ color: var(--ink-mid);
597
+ margin-bottom: .3rem;
598
+ line-height: 1.5;
599
+ }
600
+ .fp-x {
601
+ color: var(--fail);
602
+ margin-right: .4rem;
603
+ }
604
+ .trace-section {
605
+ padding: 1rem 3rem 3rem;
606
+ }
607
+ .ts-head {
608
+ display: flex;
609
+ align-items: baseline;
610
+ justify-content: space-between;
611
+ margin-bottom: 1.6rem;
612
+ }
613
+ .ts-title {
614
+ font-family: var(--mono);
615
+ font-size: .72rem;
616
+ color: var(--ink-mid);
617
+ letter-spacing: .12em;
618
+ text-transform: uppercase;
619
+ display: flex;
620
+ align-items: center;
82
621
  gap: 1rem;
83
622
  }
84
- .filters {
85
- grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
86
- margin-bottom: 1rem;
623
+ .ts-badge {
624
+ font-family: var(--mono);
625
+ font-size: .66rem;
626
+ font-weight: 500;
627
+ padding: 3px 8px;
628
+ border: 1px solid var(--accent-lo);
629
+ background: var(--accent-xs);
630
+ color: var(--accent);
631
+ border-radius: 2px;
632
+ letter-spacing: .1em;
633
+ text-transform: uppercase;
634
+ display: inline-flex;
635
+ align-items: center;
636
+ gap: 6px;
87
637
  }
88
- input,
89
- select {
90
- width: 100%;
91
- padding: 0.75rem 0.85rem;
92
- border: 1px solid var(--line);
93
- border-radius: 10px;
94
- background: var(--panel);
638
+ .ts-badge-complete {
639
+ border-color: color-mix(in srgb, var(--pass) 30%, transparent);
640
+ background: color-mix(in srgb, var(--pass) 10%, transparent);
641
+ color: var(--pass);
95
642
  }
96
- .stats {
97
- grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
98
- margin-bottom: 1rem;
643
+ .ts-badge-fail {
644
+ border-color: color-mix(in srgb, var(--fail) 30%, transparent);
645
+ background: color-mix(in srgb, var(--fail) 10%, transparent);
646
+ color: var(--fail);
99
647
  }
100
- .stat,
101
- .panel,
102
- .empty {
103
- background: var(--panel);
104
- border: 1px solid var(--line);
105
- border-radius: 16px;
106
- padding: 1rem;
648
+ .ts-stats {
649
+ font-family: var(--mono);
650
+ font-size: .75rem;
651
+ color: var(--ink-mid);
107
652
  }
108
- .stat-value {
109
- font-size: 1.4rem;
110
- margin-top: 0.25rem;
653
+ .ts-stats .v {
654
+ color: var(--ink);
655
+ font-weight: 500;
111
656
  }
112
- .panel-grid,
113
- .compare-grid {
114
- grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
115
- margin-bottom: 1rem;
657
+ .trace {
658
+ position: relative;
659
+ padding-left: 40px;
660
+ }
661
+ .trace::before {
662
+ content: "";
663
+ position: absolute;
664
+ left: 11px;
665
+ top: 8px;
666
+ bottom: 16px;
667
+ width: 1px;
668
+ background: var(--line);
669
+ }
670
+ .t-step {
671
+ position: relative;
672
+ margin-bottom: 1.2rem;
673
+ opacity: 0;
674
+ transform: translateY(6px);
675
+ animation: stepIn .35s ease-out forwards;
676
+ }
677
+ @keyframes stepIn {
678
+ to {
679
+ opacity: 1;
680
+ transform: none;
681
+ }
682
+ }
683
+ .t-node {
684
+ position: absolute;
685
+ left: -40px;
686
+ top: 0;
687
+ width: 24px;
688
+ height: 24px;
689
+ border: 1px solid var(--line-hi);
690
+ background: var(--bg);
691
+ border-radius: 50%;
692
+ display: flex;
693
+ align-items: center;
694
+ justify-content: center;
695
+ font-family: var(--mono);
696
+ font-size: .54rem;
697
+ font-weight: 500;
698
+ color: var(--ink-mid);
699
+ z-index: 2;
700
+ }
701
+ .t-node.active {
702
+ border-color: var(--accent);
703
+ color: var(--accent);
704
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 12%, transparent);
705
+ }
706
+ .t-node.p {
707
+ border-color: var(--pass);
708
+ color: var(--pass);
709
+ }
710
+ .t-head {
711
+ display: flex;
712
+ align-items: baseline;
713
+ gap: 12px;
714
+ margin-bottom: 4px;
715
+ flex-wrap: wrap;
716
+ }
717
+ .t-kind {
718
+ font-family: var(--mono);
719
+ font-size: .66rem;
720
+ font-weight: 500;
721
+ letter-spacing: .1em;
722
+ text-transform: uppercase;
723
+ color: var(--ink-mid);
724
+ }
725
+ .t-kind.tool {
726
+ color: var(--accent);
727
+ }
728
+ .t-kind.asst {
729
+ color: var(--warn);
730
+ }
731
+ .t-kind.eval {
732
+ color: var(--pass);
116
733
  }
117
- .table {
118
- width: 100%;
119
- border-collapse: collapse;
120
- background: var(--panel);
734
+ .t-kind.user {
735
+ color: var(--ink-mid);
736
+ }
737
+ .t-title {
738
+ font-family: var(--sans);
739
+ font-weight: 500;
740
+ font-size: .95rem;
741
+ color: var(--ink);
742
+ letter-spacing: -.005em;
743
+ }
744
+ .t-body {
745
+ margin-top: 8px;
746
+ font-family: var(--mono);
747
+ font-size: .78rem;
748
+ background: var(--bg-2);
121
749
  border: 1px solid var(--line);
122
- border-radius: 16px;
750
+ border-radius: 3px;
751
+ padding: .75rem .95rem;
752
+ color: var(--ink);
753
+ line-height: 1.65;
754
+ white-space: pre-wrap;
755
+ word-break: break-word;
756
+ opacity: .88;
757
+ }
758
+ .cmp-hero {
759
+ padding: 4rem 3rem 2.5rem;
760
+ border-bottom: 1px solid var(--line);
761
+ }
762
+ .cmp-eyebrow {
763
+ font-family: var(--mono);
764
+ font-size: .72rem;
765
+ letter-spacing: .12em;
766
+ text-transform: uppercase;
767
+ margin-bottom: 1.2rem;
768
+ }
769
+ .cmp-grid {
770
+ display: grid;
771
+ grid-template-columns: 1fr auto 1fr;
772
+ gap: 0 2.5rem;
773
+ align-items: center;
774
+ }
775
+ .cmp-side {
776
+ display: flex;
777
+ flex-direction: column;
778
+ gap: 8px;
779
+ }
780
+ .cmp-side.r {
781
+ text-align: right;
782
+ align-items: flex-end;
783
+ }
784
+ .cmp-side-label {
785
+ font-family: var(--mono);
786
+ font-size: .75rem;
787
+ color: var(--ink-mid);
788
+ letter-spacing: .02em;
789
+ }
790
+ .cmp-side-label .v {
791
+ color: var(--ink);
792
+ font-weight: 500;
793
+ }
794
+ .cmp-side-score {
795
+ font-family: var(--serif);
796
+ font-style: italic;
797
+ font-weight: 400;
798
+ font-size: 6rem;
799
+ line-height: .9;
800
+ letter-spacing: -.035em;
801
+ }
802
+ .cmp-arrow {
803
+ font-family: var(--serif);
804
+ font-style: italic;
805
+ font-weight: 400;
806
+ font-size: 3rem;
807
+ text-align: center;
808
+ line-height: 1;
809
+ }
810
+ .cmp-delta {
811
+ font-family: var(--mono);
812
+ font-size: .78rem;
813
+ font-weight: 500;
814
+ margin-top: 8px;
815
+ letter-spacing: .1em;
816
+ text-transform: uppercase;
817
+ text-align: center;
818
+ }
819
+ .cmp-verdict {
820
+ font-family: var(--serif);
821
+ font-style: italic;
822
+ font-weight: 400;
823
+ font-size: 1.9rem;
824
+ color: var(--ink);
825
+ margin-top: 2rem;
826
+ letter-spacing: -.02em;
827
+ }
828
+ .cmp-verdict-sub {
829
+ font-family: var(--mono);
830
+ font-size: .75rem;
831
+ color: var(--ink-mid);
832
+ margin-top: 8px;
833
+ letter-spacing: .02em;
834
+ }
835
+ .diverge {
836
+ padding: 2.5rem 3rem;
837
+ border-bottom: 1px solid var(--line);
838
+ }
839
+ .dv-h {
840
+ font-family: var(--mono);
841
+ font-size: .72rem;
842
+ color: var(--ink-mid);
843
+ letter-spacing: .12em;
844
+ text-transform: uppercase;
845
+ margin-bottom: 1.2rem;
846
+ }
847
+ .dv-track {
848
+ display: grid;
849
+ grid-template-columns: 80px 1fr;
850
+ gap: 0;
851
+ padding: .5rem 0;
852
+ }
853
+ .dv-track + .dv-track {
854
+ border-top: 1px solid var(--line);
855
+ }
856
+ .dv-label {
857
+ font-family: var(--mono);
858
+ font-size: .7rem;
859
+ color: var(--ink-mid);
860
+ letter-spacing: .1em;
861
+ text-transform: uppercase;
862
+ display: flex;
863
+ align-items: center;
864
+ }
865
+ .dv-steps {
866
+ display: flex;
867
+ gap: 4px;
868
+ padding: 8px 0;
869
+ flex-wrap: wrap;
870
+ }
871
+ .dv-step {
872
+ flex: 1;
873
+ padding: 10px;
874
+ border-radius: 2px;
875
+ font-family: var(--mono);
876
+ font-size: .68rem;
877
+ font-weight: 500;
878
+ letter-spacing: .02em;
879
+ min-width: 60px;
123
880
  overflow: hidden;
881
+ text-overflow: ellipsis;
882
+ white-space: nowrap;
883
+ }
884
+ .dv-step.match {
885
+ background: var(--accent-xs);
886
+ border: 1px solid var(--accent-lo);
887
+ color: var(--accent);
888
+ }
889
+ .dv-step.miss {
890
+ background: color-mix(in srgb, var(--fail) 10%, transparent);
891
+ border: 1px solid color-mix(in srgb, var(--fail) 25%, transparent);
892
+ color: var(--fail);
893
+ }
894
+ .dv-step.extra {
895
+ background: color-mix(in srgb, var(--warn) 10%, transparent);
896
+ border: 1px solid color-mix(in srgb, var(--warn) 25%, transparent);
897
+ color: var(--warn);
898
+ }
899
+ .diffs {
900
+ padding: 2.5rem 3rem 3rem;
124
901
  }
125
- .table th,
126
- .table td {
127
- text-align: left;
128
- padding: 0.85rem;
902
+ .diffs-h {
903
+ font-family: var(--mono);
904
+ font-size: .62rem;
905
+ color: var(--ink-lo);
906
+ letter-spacing: .14em;
907
+ text-transform: uppercase;
908
+ margin-bottom: 1.2rem;
909
+ }
910
+ .diff-row {
911
+ display: grid;
912
+ grid-template-columns: 140px 1fr 24px 1fr;
913
+ gap: 14px;
914
+ padding: 1rem 0;
129
915
  border-bottom: 1px solid var(--line);
130
- vertical-align: top;
916
+ align-items: center;
131
917
  }
132
- .table th {
133
- font-family: "IBM Plex Mono", monospace;
134
- font-size: 0.8rem;
918
+ .diff-row:last-child {
919
+ border-bottom: none;
920
+ }
921
+ .df-label {
922
+ font-family: var(--mono);
923
+ font-size: .7rem;
924
+ font-weight: 500;
925
+ color: var(--ink-mid);
926
+ letter-spacing: .08em;
135
927
  text-transform: uppercase;
136
- letter-spacing: 0.04em;
137
- color: var(--muted);
928
+ }
929
+ .df-cell {
930
+ font-family: var(--mono);
931
+ font-size: .8rem;
932
+ color: var(--ink);
933
+ padding: 10px 12px;
934
+ border-radius: 3px;
935
+ line-height: 1.55;
936
+ }
937
+ .df-cell.base {
938
+ background: var(--accent-xs);
939
+ border: 1px solid var(--accent-lo);
940
+ }
941
+ .df-cell.cand {
942
+ background: color-mix(in srgb, var(--fail) 8%, transparent);
943
+ border: 1px solid color-mix(in srgb, var(--fail) 25%, transparent);
944
+ }
945
+ .df-arrow {
946
+ font-family: var(--serif);
947
+ font-style: italic;
948
+ color: var(--ink-lo);
949
+ font-size: 1.2rem;
950
+ text-align: center;
951
+ }
952
+ .empty {
953
+ flex: 1;
954
+ display: flex;
955
+ flex-direction: column;
956
+ align-items: center;
957
+ justify-content: center;
958
+ gap: 1.4rem;
959
+ padding: 4rem;
960
+ min-height: calc(100vh - 88px);
961
+ }
962
+ .em-mark {
963
+ font-family: var(--serif);
964
+ font-style: italic;
965
+ font-weight: 400;
966
+ font-size: 12rem;
967
+ line-height: .9;
968
+ letter-spacing: -.05em;
969
+ color: var(--ink-lo);
970
+ opacity: .25;
971
+ }
972
+ .em-title {
973
+ font-family: var(--serif);
974
+ font-style: italic;
975
+ font-weight: 400;
976
+ font-size: 2.8rem;
977
+ letter-spacing: -.025em;
978
+ color: var(--ink);
979
+ }
980
+ .em-sub {
981
+ font-family: var(--sans);
982
+ font-size: 1rem;
983
+ color: var(--ink-mid);
984
+ max-width: 400px;
985
+ text-align: center;
986
+ line-height: 1.55;
987
+ }
988
+ .em-cmd {
989
+ font-family: var(--mono);
990
+ font-size: .88rem;
991
+ padding: .75rem 1.3rem;
992
+ border: 1px solid var(--accent-lo);
993
+ background: var(--accent-xs);
994
+ color: var(--accent);
995
+ border-radius: 3px;
996
+ }
997
+ .panel {
998
+ background: var(--bg-2);
999
+ border: 1px solid var(--line);
1000
+ border-radius: 8px;
1001
+ padding: 1rem;
1002
+ margin-bottom: 1rem;
1003
+ }
1004
+ .failure-panel {
1005
+ border-left: 4px solid var(--fail);
1006
+ }
1007
+ .emphasis-panel {
1008
+ border-left: 4px solid var(--accent);
1009
+ }
1010
+ .panel h2 {
1011
+ font-family: var(--mono);
1012
+ font-size: .8rem;
1013
+ font-weight: 600;
1014
+ color: var(--ink);
1015
+ letter-spacing: .08em;
1016
+ text-transform: uppercase;
1017
+ margin-bottom: .75rem;
1018
+ }
1019
+ .panel h3 {
1020
+ font-family: var(--mono);
1021
+ font-size: .72rem;
1022
+ font-weight: 600;
1023
+ color: var(--ink-mid);
1024
+ margin: 1rem 0 .5rem;
1025
+ }
1026
+ .panel p {
1027
+ font-size: .88rem;
1028
+ color: var(--ink-mid);
1029
+ margin-bottom: .4rem;
1030
+ line-height: 1.5;
1031
+ }
1032
+ .panel p strong {
1033
+ color: var(--ink);
1034
+ font-weight: 600;
1035
+ }
1036
+ .panel pre {
1037
+ font-family: var(--mono);
1038
+ font-size: .78rem;
1039
+ background: var(--bg);
1040
+ border: 1px solid var(--line);
1041
+ padding: .6rem .8rem;
1042
+ border-radius: 4px;
1043
+ white-space: pre-wrap;
1044
+ word-break: break-word;
1045
+ color: var(--ink);
1046
+ line-height: 1.6;
1047
+ margin-top: .4rem;
138
1048
  }
139
1049
  .pill {
140
1050
  display: inline-block;
141
- padding: 0.2rem 0.55rem;
1051
+ padding: .15rem .5rem;
142
1052
  border-radius: 999px;
143
- font-size: 0.8rem;
1053
+ font-size: .75rem;
144
1054
  font-weight: 700;
145
1055
  text-transform: uppercase;
146
- letter-spacing: 0.04em;
1056
+ letter-spacing: .04em;
1057
+ font-family: var(--mono);
147
1058
  }
148
1059
  .pill.pass {
149
- background: rgba(30, 106, 66, 0.12);
1060
+ background: color-mix(in srgb, var(--pass) 12%, transparent);
150
1061
  color: var(--pass);
151
1062
  }
152
1063
  .pill.fail {
153
- background: rgba(154, 44, 31, 0.12);
1064
+ background: color-mix(in srgb, var(--fail) 12%, transparent);
154
1065
  color: var(--fail);
155
1066
  }
156
1067
  .pill.error {
157
- background: rgba(91, 30, 114, 0.12);
158
- color: var(--error);
1068
+ background: color-mix(in srgb, var(--warn) 12%, transparent);
1069
+ color: var(--warn);
159
1070
  }
160
- .stack,
161
- .timeline {
1071
+ .pill.neutral {
1072
+ background: rgba(241, 235, 221, 0.1);
1073
+ color: var(--ink-mid);
1074
+ }
1075
+ .muted {
1076
+ color: var(--ink-mid);
1077
+ font-size: .88rem;
1078
+ }
1079
+ .stack {
162
1080
  display: grid;
163
- gap: 0.75rem;
1081
+ gap: .75rem;
164
1082
  padding-left: 1rem;
1083
+ list-style: none;
165
1084
  }
166
- .timeline.compact {
167
- gap: 0.35rem;
1085
+ .stack li {
1086
+ font-size: .88rem;
1087
+ color: var(--ink-mid);
1088
+ line-height: 1.5;
168
1089
  }
169
- @media (max-width: 720px) {
170
- .table {
171
- display: block;
172
- overflow-x: auto;
173
- }
1090
+ .stats {
1091
+ display: grid;
1092
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
1093
+ gap: 1rem;
1094
+ margin-bottom: 1rem;
1095
+ }
1096
+ .stat {
1097
+ background: var(--bg-2);
1098
+ border: 1px solid var(--line);
1099
+ border-radius: 8px;
1100
+ padding: .8rem;
1101
+ }
1102
+ .stat div:first-child {
1103
+ font-size: .72rem;
1104
+ color: var(--ink-mid);
1105
+ font-family: var(--mono);
1106
+ }
1107
+ .stat-value {
1108
+ font-size: 1.3rem;
1109
+ margin-top: .2rem;
1110
+ font-family: var(--serif);
1111
+ font-style: italic;
1112
+ }
1113
+ .compact-stats {
1114
+ margin-top: .5rem;
1115
+ margin-bottom: 0;
1116
+ }
1117
+ .pass-text {
1118
+ color: var(--pass);
1119
+ }
1120
+ .fail-text {
1121
+ color: var(--fail);
1122
+ }
1123
+ .error-text {
1124
+ color: var(--warn);
1125
+ }
1126
+ .event-chip {
1127
+ display: inline-block;
1128
+ padding: .2rem .55rem;
1129
+ border-radius: 999px;
1130
+ background: color-mix(in srgb, var(--accent) 10%, transparent);
1131
+ color: var(--accent);
1132
+ font-size: .78rem;
1133
+ font-family: var(--mono);
1134
+ text-transform: uppercase;
1135
+ letter-spacing: .04em;
1136
+ }
1137
+ .compare-hero {
1138
+ margin-bottom: 1rem;
1139
+ }
1140
+ .compare-hero.pass {
1141
+ border-left: 4px solid var(--pass);
1142
+ }
1143
+ .compare-hero.fail {
1144
+ border-left: 4px solid var(--fail);
1145
+ }
1146
+ .compare-hero.error {
1147
+ border-left: 4px solid var(--warn);
1148
+ }
1149
+ .compare-hero.neutral {
1150
+ border-left: 4px solid var(--ink-mid);
1151
+ }
1152
+ .compare-hero-head {
1153
+ display: flex;
1154
+ gap: .6rem;
1155
+ align-items: center;
1156
+ flex-wrap: wrap;
1157
+ margin-bottom: .5rem;
1158
+ }
1159
+ .compare-hero-head h2 {
1160
+ font-family: var(--sans);
1161
+ font-size: 1.1rem;
1162
+ font-weight: 600;
1163
+ color: var(--ink);
1164
+ text-transform: none;
1165
+ letter-spacing: 0;
174
1166
  }