agent-regression-lab 0.4.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,266 +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
- --shadow: 0 16px 40px rgba(76, 58, 26, 0.08);
14
- }
15
- * {
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 {
16
32
  box-sizing: border-box;
33
+ margin: 0;
34
+ padding: 0;
17
35
  }
36
+ html,
18
37
  body {
19
- margin: 0;
20
- background:
21
- radial-gradient(
22
- circle at top,
23
- #f8f3ea 0,
24
- var(--bg) 45%,
25
- #e4dccd 100%);
38
+ height: 100%;
39
+ background: var(--bg);
26
40
  color: var(--ink);
27
- font-family:
28
- "IBM Plex Sans",
29
- "Helvetica Neue",
30
- sans-serif;
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;
31
47
  }
32
48
  a {
33
- color: var(--accent);
49
+ color: inherit;
34
50
  text-decoration: none;
35
51
  }
36
- pre {
37
- white-space: pre-wrap;
38
- word-break: break-word;
39
- background: #f7f1e6;
40
- border: 1px solid var(--line);
41
- padding: 0.8rem;
42
- border-radius: 10px;
43
- }
44
52
  .shell {
45
- min-height: 100vh;
53
+ display: flex;
54
+ flex-direction: column;
55
+ height: 100vh;
56
+ overflow: hidden;
46
57
  }
47
- .topbar {
48
- position: sticky;
49
- top: 0;
50
- backdrop-filter: blur(10px);
51
- background: rgba(241, 237, 228, 0.92);
58
+ .chrome {
59
+ height: 48px;
60
+ flex-shrink: 0;
61
+ background: var(--bg);
52
62
  border-bottom: 1px solid var(--line);
53
- padding: 1rem 1.25rem;
63
+ display: flex;
64
+ align-items: center;
65
+ padding: 0 1.5rem;
66
+ position: relative;
67
+ z-index: 100;
54
68
  }
55
69
  .brand {
56
- font-family: "IBM Plex Mono", monospace;
57
- font-size: 0.95rem;
70
+ font-family: var(--serif);
71
+ font-style: italic;
72
+ font-weight: 400;
73
+ font-size: 1.5rem;
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;
80
+ text-decoration: none;
81
+ }
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;
58
173
  text-transform: uppercase;
59
- letter-spacing: 0.08em;
174
+ margin-bottom: .8rem;
175
+ }
176
+ .sb-title {
177
+ font-family: var(--serif);
178
+ font-weight: 400;
179
+ font-size: 1.7rem;
60
180
  color: var(--ink);
181
+ letter-spacing: -.015em;
182
+ line-height: 1.05;
61
183
  }
62
- .page {
63
- max-width: 1200px;
64
- margin: 0 auto;
65
- padding: 1.25rem;
184
+ .sb-title em {
185
+ font-style: italic;
186
+ color: var(--accent);
187
+ font-weight: 400;
66
188
  }
67
- .hero {
68
- margin-bottom: 1rem;
189
+ .tally {
190
+ display: flex;
191
+ gap: 2rem;
192
+ margin-top: 1rem;
69
193
  }
70
- .hero h1 {
71
- margin: 0 0 0.35rem;
72
- font-size: 2rem;
194
+ .t-cell {
195
+ display: flex;
196
+ flex-direction: column;
197
+ gap: 4px;
73
198
  }
74
- .hero p,
75
- .muted {
76
- color: var(--muted);
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);
234
+ border: 1px solid var(--line);
235
+ border-radius: 3px;
236
+ padding: 6px 10px;
77
237
  }
78
- .filters,
79
- .stats,
80
- .panel-grid,
81
- .compare-grid {
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;
266
+ }
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;
82
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;
294
+ top: 0;
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;
400
+ border-bottom: 1px solid var(--line);
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);
408
+ }
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 {
417
+ color: var(--ink);
418
+ }
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;
427
+ }
428
+ @keyframes blink {
429
+ 50% {
430
+ opacity: 0;
431
+ }
432
+ }
433
+ .cmd-r {
434
+ margin-left: auto;
435
+ display: flex;
83
436
  gap: 1rem;
437
+ font-size: .66rem;
438
+ color: var(--ink-mid);
439
+ letter-spacing: .04em;
84
440
  }
85
- .filters {
86
- grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
87
- margin-bottom: 1rem;
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;
88
449
  }
89
- input,
90
- select {
91
- width: 100%;
92
- padding: 0.75rem 0.85rem;
93
- border: 1px solid var(--line);
94
- border-radius: 10px;
95
- background: var(--panel);
450
+ .ov-hero {
451
+ padding: 4rem 3rem 3rem;
96
452
  }
97
- .stats {
98
- grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
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);
99
469
  margin-bottom: 1rem;
100
470
  }
101
- .stat,
102
- .panel,
103
- .empty {
104
- background: var(--panel);
105
- border: 1px solid var(--line);
106
- border-radius: 16px;
107
- padding: 1rem;
108
- box-shadow: var(--shadow);
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;
109
481
  }
110
- .stat-value {
111
- font-size: 1.4rem;
112
- margin-top: 0.25rem;
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;
113
490
  }
114
- .panel-grid,
115
- .compare-grid {
116
- grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
117
- margin-bottom: 1rem;
491
+ .oh-sub .hi {
492
+ color: var(--ink);
493
+ font-weight: 500;
494
+ opacity: 1;
118
495
  }
119
- .dashboard-stats .stat {
120
- border-top: 4px solid var(--line);
496
+ .chart-wrap {
497
+ padding: 1rem 3rem 3rem;
121
498
  }
122
- .pass-text {
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);
513
+ }
514
+ .dh {
515
+ padding: 4rem 3rem 2.5rem;
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 {
123
530
  color: var(--pass);
531
+ text-shadow: 0 0 50px color-mix(in srgb, var(--pass) 25%, transparent);
124
532
  }
125
- .fail-text {
533
+ .dh-score.f {
126
534
  color: var(--fail);
535
+ text-shadow: 0 0 50px color-mix(in srgb, var(--fail) 25%, transparent);
127
536
  }
128
- .error-text {
129
- color: var(--error);
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;
130
606
  }
131
- .table {
132
- width: 100%;
133
- border-collapse: collapse;
134
- background: var(--panel);
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;
621
+ gap: 1rem;
622
+ }
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;
637
+ }
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);
642
+ }
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);
647
+ }
648
+ .ts-stats {
649
+ font-family: var(--mono);
650
+ font-size: .75rem;
651
+ color: var(--ink-mid);
652
+ }
653
+ .ts-stats .v {
654
+ color: var(--ink);
655
+ font-weight: 500;
656
+ }
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);
733
+ }
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);
135
749
  border: 1px solid var(--line);
136
- 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;
137
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);
138
898
  }
139
- .table th,
140
- .table td {
141
- text-align: left;
142
- padding: 0.85rem;
899
+ .diffs {
900
+ padding: 2.5rem 3rem 3rem;
901
+ }
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;
143
915
  border-bottom: 1px solid var(--line);
144
- vertical-align: top;
916
+ align-items: center;
917
+ }
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;
927
+ text-transform: uppercase;
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;
145
1003
  }
146
- .table th {
147
- font-family: "IBM Plex Mono", monospace;
148
- font-size: 0.8rem;
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;
149
1016
  text-transform: uppercase;
150
- letter-spacing: 0.04em;
151
- color: var(--muted);
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;
152
1048
  }
153
1049
  .pill {
154
1050
  display: inline-block;
155
- padding: 0.2rem 0.55rem;
1051
+ padding: .15rem .5rem;
156
1052
  border-radius: 999px;
157
- font-size: 0.8rem;
1053
+ font-size: .75rem;
158
1054
  font-weight: 700;
159
1055
  text-transform: uppercase;
160
- letter-spacing: 0.04em;
1056
+ letter-spacing: .04em;
1057
+ font-family: var(--mono);
161
1058
  }
162
1059
  .pill.pass {
163
- background: rgba(30, 106, 66, 0.12);
1060
+ background: color-mix(in srgb, var(--pass) 12%, transparent);
164
1061
  color: var(--pass);
165
1062
  }
166
1063
  .pill.fail {
167
- background: rgba(154, 44, 31, 0.12);
1064
+ background: color-mix(in srgb, var(--fail) 12%, transparent);
168
1065
  color: var(--fail);
169
1066
  }
170
1067
  .pill.error {
171
- background: rgba(91, 30, 114, 0.12);
172
- color: var(--error);
1068
+ background: color-mix(in srgb, var(--warn) 12%, transparent);
1069
+ color: var(--warn);
173
1070
  }
174
1071
  .pill.neutral {
175
- background: rgba(102, 95, 84, 0.14);
176
- color: var(--muted);
1072
+ background: rgba(241, 235, 221, 0.1);
1073
+ color: var(--ink-mid);
177
1074
  }
178
- .failure-panel {
179
- border-left: 6px solid var(--fail);
180
- }
181
- .emphasis-panel {
182
- border-left: 6px solid var(--accent);
1075
+ .muted {
1076
+ color: var(--ink-mid);
1077
+ font-size: .88rem;
183
1078
  }
184
- .stack,
185
- .timeline {
1079
+ .stack {
186
1080
  display: grid;
187
- gap: 0.75rem;
1081
+ gap: .75rem;
188
1082
  padding-left: 1rem;
1083
+ list-style: none;
189
1084
  }
190
- .timeline.compact {
191
- gap: 0.35rem;
1085
+ .stack li {
1086
+ font-size: .88rem;
1087
+ color: var(--ink-mid);
1088
+ line-height: 1.5;
192
1089
  }
193
- .timeline-detailed {
194
- padding-left: 0;
195
- list-style: none;
1090
+ .stats {
1091
+ display: grid;
1092
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
1093
+ gap: 1rem;
1094
+ margin-bottom: 1rem;
196
1095
  }
197
- .timeline-item {
198
- border-left: 3px solid var(--line);
199
- padding-left: 0.9rem;
200
- margin-left: 0.35rem;
1096
+ .stat {
1097
+ background: var(--bg-2);
1098
+ border: 1px solid var(--line);
1099
+ border-radius: 8px;
1100
+ padding: .8rem;
201
1101
  }
202
- .timeline-head,
203
- .diff-card-head,
204
- .compare-hero-head {
205
- display: flex;
206
- gap: 0.6rem;
207
- align-items: center;
208
- flex-wrap: wrap;
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);
209
1125
  }
210
- .timeline-step,
211
1126
  .event-chip {
212
1127
  display: inline-block;
213
- padding: 0.2rem 0.55rem;
1128
+ padding: .2rem .55rem;
214
1129
  border-radius: 999px;
215
- background: #efe5d5;
216
- color: var(--ink);
217
- font-size: 0.78rem;
218
- font-family: "IBM Plex Mono", monospace;
1130
+ background: color-mix(in srgb, var(--accent) 10%, transparent);
1131
+ color: var(--accent);
1132
+ font-size: .78rem;
1133
+ font-family: var(--mono);
219
1134
  text-transform: uppercase;
220
- }
221
- .diff-list {
222
- padding-left: 0;
223
- list-style: none;
224
- }
225
- .diff-card {
226
- border: 1px solid var(--line);
227
- border-radius: 12px;
228
- padding: 0.8rem;
229
- background: #faf5ec;
1135
+ letter-spacing: .04em;
230
1136
  }
231
1137
  .compare-hero {
232
1138
  margin-bottom: 1rem;
233
1139
  }
234
1140
  .compare-hero.pass {
235
- border-left: 6px solid var(--pass);
1141
+ border-left: 4px solid var(--pass);
236
1142
  }
237
1143
  .compare-hero.fail {
238
- border-left: 6px solid var(--fail);
1144
+ border-left: 4px solid var(--fail);
239
1145
  }
240
1146
  .compare-hero.error {
241
- border-left: 6px solid var(--error);
1147
+ border-left: 4px solid var(--warn);
242
1148
  }
243
1149
  .compare-hero.neutral {
244
- border-left: 6px solid var(--muted);
1150
+ border-left: 4px solid var(--ink-mid);
245
1151
  }
246
- .compact-stats {
247
- margin-top: 1rem;
248
- margin-bottom: 0;
249
- }
250
- .compare-side.baseline-side {
251
- border-top: 4px solid #b89d67;
252
- }
253
- .compare-side.candidate-side {
254
- border-top: 4px solid var(--accent);
255
- }
256
- .compact-item {
257
- border-left: none;
258
- padding-left: 0;
259
- margin-left: 0;
1152
+ .compare-hero-head {
1153
+ display: flex;
1154
+ gap: .6rem;
1155
+ align-items: center;
1156
+ flex-wrap: wrap;
1157
+ margin-bottom: .5rem;
260
1158
  }
261
- @media (max-width: 720px) {
262
- .table {
263
- display: block;
264
- overflow-x: auto;
265
- }
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;
266
1166
  }