leva 0.1.10 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -2
  3. data/app/assets/stylesheets/leva/application.css +3083 -15
  4. data/app/controllers/leva/design_system_controller.rb +9 -0
  5. data/app/views/layouts/leva/application.html.erb +23 -24
  6. data/app/views/leva/dataset_records/index.html.erb +63 -61
  7. data/app/views/leva/dataset_records/show.html.erb +115 -25
  8. data/app/views/leva/datasets/_dataset.html.erb +11 -18
  9. data/app/views/leva/datasets/_form.html.erb +18 -14
  10. data/app/views/leva/datasets/edit.html.erb +16 -4
  11. data/app/views/leva/datasets/index.html.erb +33 -41
  12. data/app/views/leva/datasets/new.html.erb +15 -4
  13. data/app/views/leva/datasets/show.html.erb +120 -139
  14. data/app/views/leva/design_system/index.html.erb +1731 -0
  15. data/app/views/leva/experiments/_experiment.html.erb +46 -31
  16. data/app/views/leva/experiments/_form.html.erb +62 -35
  17. data/app/views/leva/experiments/edit.html.erb +17 -3
  18. data/app/views/leva/experiments/index.html.erb +41 -36
  19. data/app/views/leva/experiments/new.html.erb +40 -19
  20. data/app/views/leva/experiments/show.html.erb +155 -98
  21. data/app/views/leva/runner_results/show.html.erb +271 -54
  22. data/app/views/leva/workbench/_evaluation_area.html.erb +18 -4
  23. data/app/views/leva/workbench/_prompt_content.html.erb +116 -111
  24. data/app/views/leva/workbench/_prompt_form.html.erb +24 -23
  25. data/app/views/leva/workbench/_prompt_sidebar.html.erb +57 -12
  26. data/app/views/leva/workbench/_results_section.html.erb +274 -112
  27. data/app/views/leva/workbench/_top_bar.html.erb +16 -6
  28. data/app/views/leva/workbench/edit.html.erb +46 -15
  29. data/app/views/leva/workbench/index.html.erb +5 -8
  30. data/app/views/leva/workbench/new.html.erb +74 -42
  31. data/config/routes.rb +2 -0
  32. data/lib/leva/engine.rb +10 -0
  33. data/lib/leva/version.rb +1 -1
  34. metadata +4 -2
@@ -1,28 +1,3096 @@
1
1
  /*
2
- * This is a manifest file that'll be compiled into application.css, which will include all the files
3
- * listed below.
4
- *
5
- * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
- * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
- *
8
- * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
- * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
- * files in this directory. Styles in this file should be added after the last require_* statement.
11
- * It is generally better to create a new file per style scope.
2
+ * LEVA Design System
3
+ * A warm, refined design system for AI evaluation workflows
12
4
  *
13
5
  *= require_tree .
14
6
  *= require_self
15
7
  */
16
8
 
17
- /* Global styles for text overflow handling */
9
+ /* ============================================
10
+ DESIGN TOKENS
11
+ ============================================ */
12
+
13
+ :root {
14
+ /*
15
+ * Warm Gray Palette
16
+ * Neutral grays with subtle warm undertones
17
+ * Better contrast between levels
18
+ */
19
+ --gray-50: #faf9f8;
20
+ --gray-100: #f3f2f0;
21
+ --gray-200: #e5e4e1;
22
+ --gray-300: #d1cfc9;
23
+ --gray-400: #9d9a92;
24
+ --gray-500: #706d65;
25
+ --gray-600: #52504a;
26
+ --gray-700: #3a3935;
27
+ --gray-800: #262522;
28
+ --gray-900: #1a1918;
29
+ --gray-950: #0f0e0e;
30
+
31
+ /*
32
+ * Accent Colors - Warm Copper/Amber
33
+ * Rich and warm with character, not boring
34
+ */
35
+ --accent-50: #fef8f3;
36
+ --accent-100: #fceee0;
37
+ --accent-200: #f8d9bc;
38
+ --accent-300: #f2be8d;
39
+ --accent-400: #e9995c;
40
+ --accent-500: #db7f3a;
41
+ --accent-600: #c46a2a;
42
+ --accent-700: #a35424;
43
+ --accent-800: #844524;
44
+ --accent-900: #6c3a21;
45
+ --accent-950: #3a1c0f;
46
+
47
+ /* Semantic Colors - Muted & harmonious */
48
+ --success-400: #7db367;
49
+ --success-500: #5d9648;
50
+ --success-600: #4a7a3a;
51
+ --warning-400: #d4a84a;
52
+ --warning-500: #b8923a;
53
+ --error-400: #cf6f62;
54
+ --error-500: #b55549;
55
+ --error-600: #96453b;
56
+ --info-400: #6a9fc4;
57
+ --info-500: #5087aa;
58
+
59
+ /*
60
+ * Typography
61
+ * Clean, timeless Helvetica with monospace for code
62
+ */
63
+ --font-sans: 'Helvetica Neue', Helvetica, Arial, sans-serif;
64
+ --font-display: 'Helvetica Neue', Helvetica, Arial, sans-serif;
65
+ --font-mono: 'Fira Code', 'SF Mono', 'Monaco', monospace;
66
+
67
+ --text-xs: 0.75rem; /* 12px */
68
+ --text-sm: 0.875rem; /* 14px */
69
+ --text-base: 1rem; /* 16px */
70
+ --text-lg: 1.125rem; /* 18px */
71
+ --text-xl: 1.25rem; /* 20px */
72
+ --text-2xl: 1.5rem; /* 24px */
73
+ --text-3xl: 1.875rem; /* 30px */
74
+ --text-4xl: 2.25rem; /* 36px */
75
+
76
+ --leading-tight: 1.25;
77
+ --leading-normal: 1.5;
78
+ --leading-relaxed: 1.625;
79
+
80
+ --tracking-tight: -0.025em;
81
+ --tracking-normal: 0;
82
+ --tracking-wide: 0.025em;
83
+
84
+ /*
85
+ * Spacing Scale
86
+ * More generous spacing for better breathing room
87
+ * Based on 4px with larger jumps
88
+ */
89
+ --space-0: 0;
90
+ --space-1: 0.25rem; /* 4px */
91
+ --space-2: 0.5rem; /* 8px */
92
+ --space-3: 0.75rem; /* 12px */
93
+ --space-4: 1rem; /* 16px */
94
+ --space-5: 1.5rem; /* 24px */
95
+ --space-6: 2rem; /* 32px */
96
+ --space-8: 2.5rem; /* 40px */
97
+ --space-10: 3rem; /* 48px */
98
+ --space-12: 4rem; /* 64px */
99
+ --space-16: 5rem; /* 80px */
100
+ --space-20: 6rem; /* 96px */
101
+
102
+ /* Border Radius */
103
+ --radius-sm: 4px;
104
+ --radius-md: 6px;
105
+ --radius-lg: 8px;
106
+ --radius-xl: 12px;
107
+
108
+ /* Shadows - Warm tinted */
109
+ --shadow-sm: 0 1px 2px rgba(15, 14, 14, 0.12);
110
+ --shadow-md: 0 4px 8px rgba(15, 14, 14, 0.15), 0 2px 4px rgba(15, 14, 14, 0.08);
111
+ --shadow-lg: 0 12px 20px rgba(15, 14, 14, 0.18), 0 4px 8px rgba(15, 14, 14, 0.1);
112
+ --shadow-xl: 0 24px 32px rgba(15, 14, 14, 0.2), 0 12px 16px rgba(15, 14, 14, 0.12);
113
+ --shadow-glow: 0 0 24px rgba(219, 127, 58, 0.2);
114
+
115
+ /* Border Colors */
116
+ --border-color: var(--gray-800);
117
+ --border-color-subtle: var(--gray-700);
118
+
119
+ /* Text Colors - Semantic */
120
+ --text-primary: var(--gray-100);
121
+ --text-secondary: var(--gray-300);
122
+ --text-tertiary: var(--gray-500);
123
+ --text-muted: var(--gray-600);
124
+
125
+ /* Transitions */
126
+ --transition-fast: 120ms ease;
127
+ --transition-base: 200ms ease;
128
+ --transition-slow: 300ms ease;
129
+
130
+ /* Z-Index Scale */
131
+ --z-dropdown: 100;
132
+ --z-sticky: 200;
133
+ --z-modal: 300;
134
+ --z-toast: 400;
135
+ }
136
+
137
+
138
+ /* ============================================
139
+ BASE RESET & TYPOGRAPHY
140
+ ============================================ */
141
+
142
+ *, *::before, *::after {
143
+ box-sizing: border-box;
144
+ }
145
+
146
+ html {
147
+ font-family: var(--font-sans);
148
+ font-size: 16px;
149
+ line-height: var(--leading-normal);
150
+ -webkit-font-smoothing: antialiased;
151
+ -moz-osx-font-smoothing: grayscale;
152
+ background: var(--gray-950);
153
+ color: var(--gray-100);
154
+ }
155
+
156
+ body {
157
+ margin: 0;
158
+ min-height: 100vh;
159
+ background:
160
+ radial-gradient(ellipse 80% 50% at 50% -20%, rgba(219, 127, 58, 0.04), transparent),
161
+ linear-gradient(180deg, var(--gray-950) 0%, var(--gray-900) 100%);
162
+ background-attachment: fixed;
163
+ }
164
+
165
+ /* Typography */
166
+ h1, h2, h3, h4, h5, h6 {
167
+ font-family: var(--font-display);
168
+ font-weight: 600;
169
+ line-height: var(--leading-tight);
170
+ color: var(--gray-50);
171
+ margin: 0 0 var(--space-4) 0;
172
+ letter-spacing: -0.02em;
173
+ }
174
+
175
+ h1 { font-size: var(--text-3xl); }
176
+ h2 { font-size: var(--text-2xl); }
177
+ h3 { font-size: var(--text-xl); }
178
+ h4 { font-size: var(--text-lg); }
179
+
180
+ p {
181
+ margin: 0 0 var(--space-4) 0;
182
+ color: var(--gray-300);
183
+ }
184
+
185
+ a {
186
+ color: var(--accent-400);
187
+ text-decoration: none;
188
+ transition: color var(--transition-fast);
189
+ }
190
+
191
+ a:hover {
192
+ color: var(--accent-300);
193
+ }
194
+
195
+ code, pre {
196
+ font-family: var(--font-mono);
197
+ font-size: var(--text-sm);
198
+ }
199
+
18
200
  pre {
19
201
  word-wrap: break-word;
20
202
  word-break: break-word;
21
203
  max-width: 100%;
204
+ margin: 0;
205
+ padding: var(--space-4);
206
+ background: var(--gray-900);
207
+ border-radius: var(--radius-md);
208
+ overflow-x: auto;
209
+ color: var(--gray-200);
22
210
  }
23
211
 
24
- textarea {
25
- word-wrap: break-word;
26
- word-break: break-word;
27
- max-width: 100%;
212
+ code {
213
+ padding: var(--space-1) var(--space-2);
214
+ background: var(--gray-800);
215
+ border-radius: var(--radius-sm);
216
+ color: var(--accent-300);
217
+ }
218
+
219
+ pre code {
220
+ padding: 0;
221
+ background: none;
222
+ color: inherit;
223
+ }
224
+
225
+ small {
226
+ font-size: var(--text-sm);
227
+ color: var(--gray-400);
228
+ }
229
+
230
+ strong {
231
+ font-weight: 600;
232
+ color: var(--gray-100);
233
+ }
234
+
235
+
236
+ /* ============================================
237
+ LAYOUT
238
+ ============================================ */
239
+
240
+ .container {
241
+ width: 100%;
242
+ max-width: 1280px;
243
+ margin: 0 auto;
244
+ padding: 0;
245
+ min-width: 0; /* Prevent overflow issues */
246
+ }
247
+
248
+ .page {
249
+ padding: var(--space-10) var(--space-8);
250
+ min-width: 0; /* Prevent content from overflowing */
251
+ }
252
+
253
+ .page-header {
254
+ display: flex;
255
+ align-items: center;
256
+ justify-content: space-between;
257
+ margin-bottom: var(--space-8);
258
+ gap: var(--space-4);
259
+ }
260
+
261
+ .page-header h1 {
262
+ margin: 0;
263
+ }
264
+
265
+ .page-header-content {
266
+ flex: 1;
267
+ min-width: 0;
268
+ }
269
+
270
+ .page-header-title-row {
271
+ display: flex;
272
+ align-items: center;
273
+ gap: var(--space-4);
274
+ }
275
+
276
+ .page-header-title-row h1 {
277
+ margin: 0;
278
+ }
279
+
280
+ .page-title {
281
+ font-size: var(--text-3xl);
282
+ color: var(--gray-50);
283
+ margin: 0;
284
+ }
285
+
286
+ .page-subtitle {
287
+ font-size: var(--text-lg);
288
+ color: var(--gray-400);
289
+ font-weight: 400;
290
+ font-family: var(--font-sans);
291
+ }
292
+
293
+ /* Grid System */
294
+ .grid {
295
+ display: grid;
296
+ gap: var(--space-6);
297
+ }
298
+
299
+ .grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
300
+ .grid-cols-3 { grid-template-columns: repeat(3, 1fr); }
301
+ .grid-cols-4 { grid-template-columns: repeat(4, 1fr); }
302
+
303
+ @media (max-width: 768px) {
304
+ .grid-cols-2, .grid-cols-3, .grid-cols-4 {
305
+ grid-template-columns: 1fr;
306
+ }
307
+ }
308
+
309
+ /* Flex Utilities */
310
+ .flex { display: flex; }
311
+ .flex-col { flex-direction: column; }
312
+ .flex-1 { flex: 1; }
313
+ .items-center { align-items: center; }
314
+ .items-start { align-items: flex-start; }
315
+ .justify-between { justify-content: space-between; }
316
+ .justify-center { justify-content: center; }
317
+ .justify-end { justify-content: flex-end; }
318
+ .gap-2 { gap: var(--space-2); }
319
+ .gap-3 { gap: var(--space-3); }
320
+ .gap-4 { gap: var(--space-4); }
321
+ .gap-6 { gap: var(--space-6); }
322
+ .gap-8 { gap: var(--space-8); }
323
+
324
+ /* Spacing Utilities */
325
+ .mt-2 { margin-top: var(--space-2); }
326
+ .mt-4 { margin-top: var(--space-4); }
327
+ .mt-6 { margin-top: var(--space-6); }
328
+ .mt-8 { margin-top: var(--space-8); }
329
+ .mb-2 { margin-bottom: var(--space-2); }
330
+ .mb-4 { margin-bottom: var(--space-4); }
331
+ .mb-6 { margin-bottom: var(--space-6); }
332
+ .mb-8 { margin-bottom: var(--space-8); }
333
+ .ml-auto { margin-left: auto; }
334
+ .mr-auto { margin-right: auto; }
335
+
336
+ .p-4 { padding: var(--space-4); }
337
+ .p-5 { padding: var(--space-5); }
338
+ .p-6 { padding: var(--space-6); }
339
+ .px-4 { padding-left: var(--space-4); padding-right: var(--space-4); }
340
+ .py-4 { padding-top: var(--space-4); padding-bottom: var(--space-4); }
341
+ .py-8 { padding-top: var(--space-8); padding-bottom: var(--space-8); }
342
+
343
+
344
+ /* ============================================
345
+ NAVIGATION
346
+ ============================================ */
347
+
348
+ .nav {
349
+ background: var(--gray-900);
350
+ border-bottom: 1px solid rgba(58, 57, 53, 0.5);
351
+ position: sticky;
352
+ top: 0;
353
+ z-index: var(--z-sticky);
354
+ }
355
+
356
+ .nav-inner {
357
+ display: flex;
358
+ align-items: center;
359
+ height: 48px;
360
+ padding: 0 var(--space-5);
361
+ max-width: 1400px;
362
+ margin: 0 auto;
363
+ }
364
+
365
+ .nav-brand {
366
+ display: flex;
367
+ align-items: center;
368
+ gap: 6px;
369
+ font-family: var(--font-display);
370
+ font-size: 14px;
371
+ font-weight: 600;
372
+ color: var(--gray-200);
373
+ text-decoration: none;
374
+ letter-spacing: -0.02em;
375
+ }
376
+
377
+ .nav-brand:hover {
378
+ color: var(--gray-50);
379
+ }
380
+
381
+ .nav-brand:hover svg {
382
+ color: var(--accent-400);
383
+ }
384
+
385
+ .nav-brand svg {
386
+ width: 18px;
387
+ height: 18px;
388
+ color: var(--gray-500);
389
+ transition: color var(--transition-fast);
390
+ }
391
+
392
+ .nav-links {
393
+ display: flex;
394
+ align-items: center;
395
+ gap: var(--space-1);
396
+ margin-left: var(--space-4);
397
+ padding-left: var(--space-4);
398
+ border-left: 1px solid var(--gray-800);
399
+ }
400
+
401
+ .nav-link {
402
+ position: relative;
403
+ padding: 6px 10px;
404
+ font-size: 13px;
405
+ font-weight: 500;
406
+ color: var(--gray-500);
407
+ transition: color var(--transition-fast);
408
+ text-decoration: none;
409
+ }
410
+
411
+ .nav-link:hover {
412
+ color: var(--gray-300);
413
+ }
414
+
415
+ .nav-link.active {
416
+ color: var(--gray-100);
417
+ }
418
+
419
+ .nav-link.active::after {
420
+ content: '';
421
+ position: absolute;
422
+ bottom: 0;
423
+ left: 10px;
424
+ right: 10px;
425
+ height: 2px;
426
+ background: var(--accent-500);
427
+ border-radius: 1px;
428
+ }
429
+
430
+
431
+ /* ============================================
432
+ CARDS
433
+ ============================================ */
434
+
435
+ .card {
436
+ background: var(--gray-900);
437
+ border: 1px solid var(--gray-800);
438
+ border-radius: var(--radius-md);
439
+ padding: var(--space-4);
440
+ }
441
+
442
+ .card-header {
443
+ display: flex;
444
+ align-items: center;
445
+ justify-content: space-between;
446
+ margin-bottom: var(--space-3);
447
+ padding-bottom: var(--space-3);
448
+ border-bottom: 1px solid var(--gray-800);
449
+ }
450
+
451
+ .card-title {
452
+ font-size: var(--text-base);
453
+ font-weight: 500;
454
+ color: var(--gray-100);
455
+ margin: 0;
456
+ }
457
+
458
+ .card-body {
459
+ color: var(--gray-300);
460
+ }
461
+
462
+ .card-footer {
463
+ margin-top: var(--space-3);
464
+ padding-top: var(--space-3);
465
+ border-top: 1px solid var(--gray-800);
466
+ }
467
+
468
+ /* Card Variants */
469
+ .card-subtle {
470
+ background: var(--gray-800);
471
+ border: none;
472
+ padding: var(--space-4);
473
+ }
474
+
475
+ .card-elevated {
476
+ box-shadow: var(--shadow-lg);
477
+ border: none;
478
+ }
479
+
480
+ .card-hover {
481
+ transition: all var(--transition-base);
482
+ cursor: pointer;
483
+ }
484
+
485
+ .card-hover:hover {
486
+ border-color: var(--gray-700);
487
+ transform: translateY(-2px);
488
+ box-shadow: var(--shadow-md);
489
+ }
490
+
491
+ /* Workbench-specific card - minimal styling */
492
+ .card-workbench {
493
+ background: transparent;
494
+ border: none;
495
+ padding: 0;
496
+ }
497
+
498
+ .card-workbench .panel-section-header {
499
+ margin-bottom: var(--space-2);
500
+ }
501
+
502
+ /* Stat Cards */
503
+ .stat-card {
504
+ background: var(--gray-800);
505
+ border-radius: var(--radius-lg);
506
+ padding: var(--space-5);
507
+ text-align: center;
508
+ }
509
+
510
+ .stat-value {
511
+ font-family: var(--font-display);
512
+ font-size: var(--text-3xl);
513
+ font-weight: 500;
514
+ color: var(--gray-50);
515
+ line-height: 1;
516
+ margin-bottom: var(--space-2);
517
+ }
518
+
519
+ .stat-label {
520
+ font-size: var(--text-sm);
521
+ color: var(--gray-400);
522
+ text-transform: uppercase;
523
+ letter-spacing: var(--tracking-wide);
524
+ }
525
+
526
+
527
+ /* ============================================
528
+ BUTTONS
529
+ ============================================ */
530
+
531
+ .btn {
532
+ display: inline-flex;
533
+ align-items: center;
534
+ justify-content: center;
535
+ gap: var(--space-2);
536
+ padding: var(--space-2) var(--space-4);
537
+ font-family: var(--font-sans);
538
+ font-size: var(--text-sm);
539
+ font-weight: 500;
540
+ line-height: 1.5;
541
+ border: none;
542
+ border-radius: var(--radius-md);
543
+ cursor: pointer;
544
+ transition: all var(--transition-fast);
545
+ text-decoration: none;
546
+ white-space: nowrap;
547
+ }
548
+
549
+ .btn:disabled {
550
+ opacity: 0.5;
551
+ cursor: not-allowed;
552
+ }
553
+
554
+ .btn svg {
555
+ width: 16px;
556
+ height: 16px;
557
+ flex-shrink: 0;
558
+ }
559
+
560
+ /* Button Sizes */
561
+ .btn-sm {
562
+ padding: var(--space-1) var(--space-3);
563
+ font-size: var(--text-xs);
564
+ }
565
+
566
+ .btn-lg {
567
+ padding: var(--space-3) var(--space-6);
568
+ font-size: var(--text-base);
569
+ }
570
+
571
+ /* Button Variants */
572
+ .btn-primary {
573
+ background: var(--accent-600);
574
+ color: white;
575
+ }
576
+
577
+ .btn-primary:hover {
578
+ background: var(--accent-500);
579
+ color: white;
580
+ }
581
+
582
+ .btn-secondary {
583
+ background: var(--gray-700);
584
+ color: var(--gray-100);
585
+ }
586
+
587
+ .btn-secondary:hover {
588
+ background: var(--gray-600);
589
+ color: var(--gray-50);
590
+ }
591
+
592
+ .btn-ghost {
593
+ background: transparent;
594
+ color: var(--gray-300);
595
+ }
596
+
597
+ .btn-ghost:hover {
598
+ background: var(--gray-800);
599
+ color: var(--gray-100);
600
+ }
601
+
602
+ .btn-danger {
603
+ background: var(--error-600);
604
+ color: white;
605
+ }
606
+
607
+ .btn-danger:hover {
608
+ background: var(--error-500);
609
+ color: white;
610
+ }
611
+
612
+ .btn-success {
613
+ background: var(--success-600);
614
+ color: white;
615
+ }
616
+
617
+ .btn-success:hover {
618
+ background: var(--success-500);
619
+ color: white;
620
+ }
621
+
622
+ /* Icon Button */
623
+ .btn-icon {
624
+ padding: var(--space-2);
625
+ border-radius: var(--radius-md);
626
+ }
627
+
628
+ .btn-icon.btn-sm {
629
+ padding: var(--space-1);
630
+ }
631
+
632
+ /* Button Group */
633
+ .btn-group {
634
+ display: flex;
635
+ gap: var(--space-2);
636
+ }
637
+
638
+
639
+ /* ============================================
640
+ FORMS
641
+ ============================================ */
642
+
643
+ .form-group {
644
+ margin-bottom: var(--space-5);
645
+ }
646
+
647
+ .form-label {
648
+ display: block;
649
+ font-size: var(--text-sm);
650
+ font-weight: 500;
651
+ color: var(--gray-300);
652
+ margin-bottom: var(--space-2);
653
+ }
654
+
655
+ .form-hint {
656
+ font-size: var(--text-sm);
657
+ color: var(--gray-500);
658
+ margin-top: var(--space-1);
659
+ }
660
+
661
+ .form-input,
662
+ .form-select,
663
+ .form-textarea {
664
+ width: 100%;
665
+ padding: var(--space-3) var(--space-4);
666
+ font-family: var(--font-sans);
667
+ font-size: var(--text-base);
668
+ color: var(--gray-100);
669
+ background: var(--gray-800);
670
+ border: 1px solid var(--gray-700);
671
+ border-radius: var(--radius-md);
672
+ transition: all var(--transition-fast);
673
+ }
674
+
675
+ .form-input:focus,
676
+ .form-select:focus,
677
+ .form-textarea:focus {
678
+ outline: none;
679
+ border-color: var(--accent-500);
680
+ box-shadow: 0 0 0 3px rgba(219, 127, 58, 0.2);
681
+ }
682
+
683
+ .form-input::placeholder,
684
+ .form-textarea::placeholder {
685
+ color: var(--gray-500);
686
+ }
687
+
688
+ .form-textarea {
689
+ min-height: 120px;
690
+ resize: vertical;
691
+ line-height: var(--leading-relaxed);
692
+ }
693
+
694
+ .form-select {
695
+ appearance: none;
696
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23a8a298' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
697
+ background-repeat: no-repeat;
698
+ background-position: right var(--space-3) center;
699
+ padding-right: var(--space-10);
700
+ }
701
+
702
+ /* Checkbox & Radio */
703
+ .form-check {
704
+ display: flex;
705
+ align-items: center;
706
+ gap: var(--space-3);
707
+ margin-bottom: var(--space-3);
708
+ }
709
+
710
+ .form-check-input {
711
+ width: 18px;
712
+ height: 18px;
713
+ accent-color: var(--accent-500);
714
+ cursor: pointer;
715
+ }
716
+
717
+ .form-check-label {
718
+ font-size: var(--text-sm);
719
+ color: var(--gray-200);
720
+ cursor: pointer;
721
+ }
722
+
723
+ /* Form Actions */
724
+ .form-actions {
725
+ display: flex;
726
+ align-items: center;
727
+ justify-content: flex-end;
728
+ gap: var(--space-3);
729
+ margin-top: var(--space-8);
730
+ padding-top: var(--space-6);
731
+ border-top: 1px solid var(--gray-800);
732
+ }
733
+
734
+ /* Form Sections */
735
+ .form-section {
736
+ margin-bottom: var(--space-2);
737
+ }
738
+
739
+ .form-section-title {
740
+ font-size: var(--text-base);
741
+ font-weight: 600;
742
+ color: var(--gray-200);
743
+ margin: 0 0 var(--space-4) 0;
744
+ }
745
+
746
+ .form-section-desc {
747
+ font-size: var(--text-sm);
748
+ color: var(--gray-500);
749
+ margin: 0 0 var(--space-4) 0;
750
+ }
751
+
752
+ .form-divider {
753
+ border: none;
754
+ border-top: 1px solid var(--gray-800);
755
+ margin: var(--space-6) 0;
756
+ }
757
+
758
+ /* Form Row - Side by side fields */
759
+ .form-row {
760
+ display: flex;
761
+ gap: var(--space-4);
762
+ }
763
+
764
+ @media (max-width: 640px) {
765
+ .form-row {
766
+ flex-direction: column;
767
+ gap: 0;
768
+ }
769
+ }
770
+
771
+ /* Evaluator Checkbox Grid */
772
+ .evaluator-checkbox-grid {
773
+ display: grid;
774
+ grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
775
+ gap: var(--space-2);
776
+ }
777
+
778
+ .evaluator-checkbox {
779
+ display: flex;
780
+ align-items: center;
781
+ gap: var(--space-3);
782
+ padding: var(--space-3) var(--space-4);
783
+ background: var(--gray-800);
784
+ border: 1px solid var(--gray-700);
785
+ border-radius: var(--radius-md);
786
+ cursor: pointer;
787
+ transition: all var(--transition-fast);
788
+ }
789
+
790
+ .evaluator-checkbox:hover {
791
+ background: var(--gray-750, #2a2928);
792
+ border-color: var(--gray-600);
793
+ }
794
+
795
+ .evaluator-checkbox:has(input:checked) {
796
+ background: rgba(219, 127, 58, 0.08);
797
+ border-color: var(--accent-600);
798
+ }
799
+
800
+ .evaluator-checkbox-label {
801
+ font-size: var(--text-sm);
802
+ font-weight: 500;
803
+ color: var(--gray-200);
804
+ }
805
+
806
+ /* Form Errors */
807
+ .form-errors {
808
+ background: rgba(169, 59, 48, 0.15);
809
+ border: 1px solid var(--error-600);
810
+ border-radius: var(--radius-md);
811
+ padding: var(--space-4);
812
+ margin-bottom: var(--space-6);
813
+ }
814
+
815
+ .form-errors-title {
816
+ font-weight: 600;
817
+ color: var(--error-400);
818
+ margin-bottom: var(--space-2);
819
+ }
820
+
821
+ .form-errors ul {
822
+ margin: 0;
823
+ padding-left: var(--space-5);
824
+ color: var(--error-400);
825
+ }
826
+
827
+
828
+ /* ============================================
829
+ TABLES
830
+ ============================================ */
831
+
832
+ .table-wrapper {
833
+ background: var(--gray-900);
834
+ border: 1px solid var(--gray-800);
835
+ border-radius: var(--radius-lg);
836
+ overflow: hidden;
837
+ min-width: 0; /* Prevent overflow on narrow screens */
838
+ }
839
+
840
+ .table-scroll {
841
+ overflow-x: auto;
842
+ }
843
+
844
+ .table {
845
+ width: 100%;
846
+ border-collapse: collapse;
847
+ font-size: var(--text-sm);
848
+ }
849
+
850
+ .table th {
851
+ padding: var(--space-4) var(--space-4);
852
+ text-align: left;
853
+ font-size: var(--text-xs);
854
+ font-weight: 600;
855
+ color: var(--gray-400);
856
+ text-transform: uppercase;
857
+ letter-spacing: var(--tracking-wide);
858
+ background: var(--gray-800);
859
+ border-bottom: 1px solid var(--gray-700);
860
+ }
861
+
862
+ .table td {
863
+ padding: var(--space-4);
864
+ color: var(--gray-200);
865
+ border-bottom: 1px solid var(--gray-800);
866
+ vertical-align: middle;
867
+ }
868
+
869
+ .table tbody tr {
870
+ transition: background var(--transition-fast);
871
+ }
872
+
873
+ .table tbody tr:hover {
874
+ background: var(--gray-850, rgba(42, 40, 37, 0.5));
875
+ }
876
+
877
+ .table tbody tr:last-child td {
878
+ border-bottom: none;
879
+ }
880
+
881
+ /* Table Cell Variants */
882
+ .table td.text-right,
883
+ .table th.text-right {
884
+ text-align: right;
885
+ }
886
+
887
+ .table .cell-actions {
888
+ text-align: right;
889
+ white-space: nowrap;
890
+ }
891
+
892
+ .table .cell-truncate {
893
+ max-width: 300px;
894
+ overflow: hidden;
895
+ text-overflow: ellipsis;
896
+ white-space: nowrap;
897
+ }
898
+
899
+ .table .cell-mono {
900
+ font-family: var(--font-mono);
901
+ font-size: var(--text-xs);
902
+ }
903
+
904
+
905
+ /* ============================================
906
+ BADGES & STATUS
907
+ ============================================ */
908
+
909
+ .badge {
910
+ display: inline-flex;
911
+ align-items: center;
912
+ padding: var(--space-1) var(--space-3);
913
+ font-size: var(--text-xs);
914
+ font-weight: 600;
915
+ border-radius: 999px;
916
+ text-transform: uppercase;
917
+ letter-spacing: 0.02em;
918
+ }
919
+
920
+ .badge-default {
921
+ background: var(--gray-700);
922
+ color: var(--gray-200);
923
+ }
924
+
925
+ .badge-accent {
926
+ background: rgba(219, 127, 58, 0.15);
927
+ color: var(--accent-400);
928
+ }
929
+
930
+ .badge-success {
931
+ background: rgba(125, 179, 103, 0.15);
932
+ color: var(--success-400);
933
+ }
934
+
935
+ .badge-warning {
936
+ background: rgba(212, 168, 74, 0.15);
937
+ color: var(--warning-400);
938
+ }
939
+
940
+ .badge-error {
941
+ background: rgba(207, 111, 98, 0.15);
942
+ color: var(--error-400);
943
+ }
944
+
945
+ .badge-info {
946
+ background: rgba(106, 159, 196, 0.15);
947
+ color: var(--info-400);
948
+ }
949
+
950
+ /* Status Dots */
951
+ .status-dot {
952
+ display: inline-block;
953
+ width: 8px;
954
+ height: 8px;
955
+ border-radius: 50%;
956
+ margin-right: var(--space-2);
957
+ }
958
+
959
+ .status-dot-success { background: var(--success-500); }
960
+ .status-dot-warning { background: var(--warning-500); }
961
+ .status-dot-error { background: var(--error-500); }
962
+ .status-dot-info { background: var(--info-500); }
963
+ .status-dot-pending { background: var(--gray-500); }
964
+
965
+
966
+ /* ============================================
967
+ SCORE DISPLAYS
968
+ ============================================ */
969
+
970
+ .score {
971
+ font-family: var(--font-display);
972
+ font-weight: 500;
973
+ font-size: var(--text-lg);
974
+ }
975
+
976
+ .score-xs { font-size: var(--text-xs); }
977
+ .score-sm { font-size: var(--text-sm); }
978
+ .score-lg { font-size: var(--text-2xl); }
979
+ .score-xl { font-size: var(--text-3xl); }
980
+
981
+ /* Score Colors */
982
+ .score-excellent { color: var(--success-400); }
983
+ .score-good { color: #9fcc6f; }
984
+ .score-fair { color: var(--warning-400); }
985
+ .score-poor { color: #e8a158; }
986
+ .score-bad { color: var(--error-400); }
987
+
988
+ /* Score Cards */
989
+ .score-card {
990
+ background: var(--gray-800);
991
+ border-radius: var(--radius-lg);
992
+ padding: var(--space-5);
993
+ text-align: center;
994
+ }
995
+
996
+ .score-card-value {
997
+ font-family: var(--font-display);
998
+ font-size: var(--text-3xl);
999
+ font-weight: 500;
1000
+ line-height: 1;
1001
+ margin-bottom: var(--space-2);
1002
+ }
1003
+
1004
+ .score-card-label {
1005
+ font-size: var(--text-sm);
1006
+ color: var(--gray-400);
1007
+ }
1008
+
1009
+ .score-card-count {
1010
+ font-size: var(--text-xs);
1011
+ color: var(--gray-500);
1012
+ margin-top: var(--space-2);
1013
+ }
1014
+
1015
+
1016
+ /* ============================================
1017
+ EMPTY STATES
1018
+ ============================================ */
1019
+
1020
+ .empty-state {
1021
+ text-align: center;
1022
+ padding: var(--space-16) var(--space-6);
1023
+ }
1024
+
1025
+ .empty-state-icon {
1026
+ width: 48px;
1027
+ height: 48px;
1028
+ margin: 0 auto var(--space-4);
1029
+ color: var(--gray-500);
1030
+ }
1031
+
1032
+ .empty-state-title {
1033
+ font-size: var(--text-xl);
1034
+ color: var(--gray-200);
1035
+ margin-bottom: var(--space-2);
1036
+ }
1037
+
1038
+ .empty-state-description {
1039
+ color: var(--gray-400);
1040
+ margin-bottom: var(--space-6);
1041
+ max-width: 400px;
1042
+ margin-left: auto;
1043
+ margin-right: auto;
1044
+ }
1045
+
1046
+
1047
+ /* ============================================
1048
+ SIDEBAR LAYOUT (WORKBENCH)
1049
+ ============================================ */
1050
+
1051
+ .layout-workbench {
1052
+ display: flex;
1053
+ height: calc(100vh - 64px);
1054
+ }
1055
+
1056
+ .sidebar {
1057
+ width: 220px;
1058
+ background: var(--gray-900);
1059
+ border-right: 1px solid var(--gray-800);
1060
+ display: flex;
1061
+ flex-direction: column;
1062
+ flex-shrink: 0;
1063
+ transition: width var(--transition-base);
1064
+ }
1065
+
1066
+ .sidebar.collapsed {
1067
+ width: 48px;
1068
+ }
1069
+
1070
+ .sidebar.collapsed .sidebar-header {
1071
+ padding: var(--space-2);
1072
+ justify-content: center;
1073
+ }
1074
+
1075
+ .sidebar.collapsed .sidebar-title,
1076
+ .sidebar.collapsed .sidebar-header > div > span,
1077
+ .sidebar.collapsed .sidebar-item-badge {
1078
+ display: none;
1079
+ }
1080
+
1081
+ .sidebar.collapsed .sidebar-header > div {
1082
+ justify-content: center;
1083
+ }
1084
+
1085
+ .sidebar.collapsed .sidebar-content {
1086
+ padding: var(--space-1);
1087
+ }
1088
+
1089
+ .sidebar.collapsed .sidebar-item {
1090
+ justify-content: center;
1091
+ padding: var(--space-2);
1092
+ height: 32px;
1093
+ width: 32px;
1094
+ margin: 0 auto var(--space-1);
1095
+ border-radius: var(--radius-sm);
1096
+ }
1097
+
1098
+ .sidebar.collapsed .sidebar-item > div {
1099
+ display: none;
1100
+ }
1101
+
1102
+ .sidebar.collapsed .sidebar-item::before {
1103
+ content: '';
1104
+ width: 8px;
1105
+ height: 8px;
1106
+ border-radius: 50%;
1107
+ background: var(--gray-600);
1108
+ }
1109
+
1110
+ .sidebar.collapsed .sidebar-item.active::before {
1111
+ background: var(--accent-500);
1112
+ }
1113
+
1114
+ .sidebar.collapsed .sidebar-item:hover::before {
1115
+ background: var(--gray-400);
1116
+ }
1117
+
1118
+ .sidebar.collapsed .sidebar-footer {
1119
+ padding: var(--space-2);
1120
+ }
1121
+
1122
+ .sidebar.collapsed .sidebar-footer .btn {
1123
+ padding: var(--space-2);
1124
+ justify-content: center;
1125
+ width: 32px;
1126
+ height: 32px;
1127
+ margin: 0 auto;
1128
+ }
1129
+
1130
+ .sidebar.collapsed .sidebar-footer .btn span {
1131
+ display: none;
1132
+ }
1133
+
1134
+ .sidebar-collapse-btn {
1135
+ background: none;
1136
+ border: none;
1137
+ padding: 6px;
1138
+ cursor: pointer;
1139
+ color: var(--gray-500);
1140
+ border-radius: var(--radius-sm);
1141
+ transition: all var(--transition-fast);
1142
+ display: flex;
1143
+ align-items: center;
1144
+ justify-content: center;
1145
+ }
1146
+
1147
+ .sidebar-collapse-btn:hover {
1148
+ color: var(--gray-200);
1149
+ background: var(--gray-700);
1150
+ }
1151
+
1152
+ .sidebar-collapse-btn:active {
1153
+ transform: scale(0.95);
1154
+ }
1155
+
1156
+ .sidebar-collapse-btn svg {
1157
+ width: 14px;
1158
+ height: 14px;
1159
+ transition: transform var(--transition-base);
1160
+ }
1161
+
1162
+ .sidebar.collapsed .sidebar-collapse-btn {
1163
+ margin: 0 auto;
1164
+ }
1165
+
1166
+ .sidebar.collapsed .sidebar-collapse-btn svg {
1167
+ transform: rotate(180deg);
1168
+ }
1169
+
1170
+ .sidebar-header {
1171
+ padding: var(--space-3) var(--space-4);
1172
+ border-bottom: 1px solid var(--gray-800);
1173
+ }
1174
+
1175
+ .sidebar-title {
1176
+ font-family: var(--font-display);
1177
+ font-size: var(--text-sm);
1178
+ font-weight: 600;
1179
+ color: var(--gray-400);
1180
+ margin: 0;
1181
+ text-transform: uppercase;
1182
+ letter-spacing: var(--tracking-wide);
1183
+ }
1184
+
1185
+ .sidebar-content {
1186
+ flex: 1;
1187
+ overflow-y: auto;
1188
+ padding: var(--space-2);
1189
+ }
1190
+
1191
+ .sidebar-footer {
1192
+ padding: var(--space-3);
1193
+ border-top: 1px solid var(--gray-800);
1194
+ }
1195
+
1196
+ /* Sidebar Items */
1197
+ .sidebar-item {
1198
+ display: flex;
1199
+ align-items: center;
1200
+ justify-content: space-between;
1201
+ gap: var(--space-2);
1202
+ padding: var(--space-2) var(--space-3);
1203
+ font-size: var(--text-sm);
1204
+ color: var(--gray-300);
1205
+ border-radius: var(--radius-sm);
1206
+ transition: all var(--transition-fast);
1207
+ cursor: pointer;
1208
+ text-decoration: none;
1209
+ }
1210
+
1211
+ .sidebar-item:hover {
1212
+ background: var(--gray-800);
1213
+ color: var(--gray-100);
1214
+ }
1215
+
1216
+ .sidebar-item.active {
1217
+ background: var(--gray-700);
1218
+ color: var(--gray-50);
1219
+ }
1220
+
1221
+ .sidebar-item.active .sidebar-item-badge {
1222
+ color: var(--gray-400);
1223
+ }
1224
+
1225
+ .sidebar-item-badge {
1226
+ font-size: var(--text-xs);
1227
+ color: var(--gray-500);
1228
+ font-family: var(--font-mono);
1229
+ }
1230
+
1231
+
1232
+ /* ============================================
1233
+ WORKBENCH PANELS
1234
+ ============================================ */
1235
+
1236
+ .main-content {
1237
+ flex: 1;
1238
+ display: flex;
1239
+ flex-direction: column;
1240
+ min-width: 0;
1241
+ }
1242
+
1243
+ .content-header {
1244
+ display: flex;
1245
+ align-items: center;
1246
+ justify-content: space-between;
1247
+ padding: var(--space-3) var(--space-5);
1248
+ background: var(--gray-900);
1249
+ border-bottom: 1px solid var(--gray-800);
1250
+ }
1251
+
1252
+ .content-header-title {
1253
+ font-size: var(--text-base);
1254
+ font-weight: 600;
1255
+ color: var(--gray-50);
1256
+ margin: 0;
1257
+ }
1258
+
1259
+ .content-header-subtitle {
1260
+ font-size: var(--text-xs);
1261
+ color: var(--gray-500);
1262
+ margin-left: var(--space-2);
1263
+ }
1264
+
1265
+ .content-body {
1266
+ flex: 1;
1267
+ display: flex;
1268
+ overflow: hidden;
1269
+ }
1270
+
1271
+ .panel {
1272
+ flex: 1;
1273
+ padding: var(--space-4);
1274
+ overflow-y: auto;
1275
+ }
1276
+
1277
+ .panel-divider {
1278
+ width: 1px;
1279
+ background: var(--gray-800);
1280
+ }
1281
+
1282
+ /* Resize Handle */
1283
+ .resize-handle {
1284
+ width: 6px;
1285
+ background: transparent;
1286
+ cursor: col-resize;
1287
+ position: relative;
1288
+ flex-shrink: 0;
1289
+ transition: background var(--transition-fast), width var(--transition-base), opacity var(--transition-base);
1290
+ }
1291
+
1292
+ .resize-handle::after {
1293
+ content: '';
1294
+ position: absolute;
1295
+ top: 50%;
1296
+ left: 50%;
1297
+ transform: translate(-50%, -50%);
1298
+ width: 2px;
1299
+ height: 32px;
1300
+ background: var(--gray-700);
1301
+ border-radius: 1px;
1302
+ opacity: 0;
1303
+ transition: opacity var(--transition-fast);
1304
+ }
1305
+
1306
+ .resize-handle:hover {
1307
+ background: var(--gray-800);
1308
+ }
1309
+
1310
+ .resize-handle:hover::after {
1311
+ opacity: 1;
1312
+ }
1313
+
1314
+ .resize-handle.dragging {
1315
+ background: var(--accent-500);
1316
+ }
1317
+
1318
+ .resize-handle.dragging::after {
1319
+ opacity: 1;
1320
+ background: var(--accent-400);
1321
+ }
1322
+
1323
+ .panel-right {
1324
+ width: 320px;
1325
+ min-width: 200px;
1326
+ max-width: 50vw;
1327
+ flex-shrink: 0;
1328
+ background: var(--gray-900);
1329
+ border-left: none;
1330
+ padding: var(--space-4);
1331
+ overflow-y: auto;
1332
+ transition: width var(--transition-base), padding var(--transition-base);
1333
+ }
1334
+
1335
+ .panel-right.resizing {
1336
+ user-select: none;
1337
+ pointer-events: none;
1338
+ transition: none;
1339
+ }
1340
+
1341
+ .panel-right.collapsed {
1342
+ width: 48px !important;
1343
+ min-width: 48px !important;
1344
+ max-width: 48px !important;
1345
+ padding: var(--space-2);
1346
+ overflow: hidden;
1347
+ }
1348
+
1349
+ .panel-right.collapsed .run-controls,
1350
+ .panel-right.collapsed .output-section,
1351
+ .panel-right.collapsed .eval-section {
1352
+ display: none;
1353
+ }
1354
+
1355
+ /* Hide resize handle when panel is collapsed */
1356
+ .content-body:has(.panel-right.collapsed) .resize-handle {
1357
+ width: 0;
1358
+ opacity: 0;
1359
+ pointer-events: none;
1360
+ }
1361
+
1362
+ .panel-right-collapse-btn {
1363
+ position: absolute;
1364
+ top: var(--space-2);
1365
+ right: var(--space-2);
1366
+ background: transparent;
1367
+ border: none;
1368
+ padding: 6px;
1369
+ cursor: pointer;
1370
+ color: var(--gray-500);
1371
+ border-radius: var(--radius-sm);
1372
+ transition: all var(--transition-fast);
1373
+ display: flex;
1374
+ align-items: center;
1375
+ justify-content: center;
1376
+ z-index: 10;
1377
+ }
1378
+
1379
+ .panel-right-collapse-btn:hover {
1380
+ color: var(--gray-200);
1381
+ background: var(--gray-700);
1382
+ }
1383
+
1384
+ .panel-right-collapse-btn:active {
1385
+ transform: scale(0.95);
1386
+ }
1387
+
1388
+ .panel-right-collapse-btn svg {
1389
+ width: 14px;
1390
+ height: 14px;
1391
+ transition: transform var(--transition-base);
1392
+ }
1393
+
1394
+ .panel-right.collapsed .panel-right-collapse-btn {
1395
+ position: static;
1396
+ width: 32px;
1397
+ height: 32px;
1398
+ margin: 0 auto;
1399
+ background: var(--gray-800);
1400
+ }
1401
+
1402
+ .panel-right.collapsed .panel-right-collapse-btn svg {
1403
+ transform: rotate(180deg);
1404
+ }
1405
+
1406
+ /* Panel Sections */
1407
+ .panel-section {
1408
+ margin-bottom: var(--space-4);
1409
+ }
1410
+
1411
+ .panel-section:last-child {
1412
+ margin-bottom: 0;
1413
+ }
1414
+
1415
+ .panel-section-header {
1416
+ display: flex;
1417
+ align-items: center;
1418
+ justify-content: space-between;
1419
+ margin-bottom: var(--space-2);
1420
+ }
1421
+
1422
+ .panel-section-title {
1423
+ font-size: var(--text-xs);
1424
+ font-weight: 600;
1425
+ color: var(--gray-400);
1426
+ text-transform: uppercase;
1427
+ letter-spacing: var(--tracking-wide);
1428
+ margin: 0;
1429
+ }
1430
+
1431
+ .panel-section-title--accent {
1432
+ color: var(--accent-400);
1433
+ }
1434
+
1435
+
1436
+ /* ============================================
1437
+ COLLAPSIBLE / ACCORDION
1438
+ ============================================ */
1439
+
1440
+ .collapsible {
1441
+ border: 1px solid var(--gray-800);
1442
+ border-radius: var(--radius-md);
1443
+ overflow: hidden;
1444
+ }
1445
+
1446
+ .collapsible-header {
1447
+ display: flex;
1448
+ align-items: center;
1449
+ justify-content: space-between;
1450
+ padding: var(--space-3);
1451
+ background: var(--gray-800);
1452
+ cursor: pointer;
1453
+ user-select: none;
1454
+ transition: background var(--transition-fast);
1455
+ }
1456
+
1457
+ .collapsible-header:hover {
1458
+ background: var(--gray-700);
1459
+ }
1460
+
1461
+ .collapsible-title {
1462
+ font-size: var(--text-xs);
1463
+ font-weight: 500;
1464
+ color: var(--gray-300);
1465
+ margin: 0;
1466
+ }
1467
+
1468
+ .collapsible-icon {
1469
+ width: 14px;
1470
+ height: 14px;
1471
+ color: var(--gray-500);
1472
+ transition: transform var(--transition-base);
1473
+ }
1474
+
1475
+ .collapsible[open] .collapsible-icon {
1476
+ transform: rotate(180deg);
1477
+ }
1478
+
1479
+ .collapsible-body {
1480
+ padding: var(--space-3);
1481
+ background: var(--gray-900);
1482
+ }
1483
+
1484
+ /* Using native details/summary */
1485
+ details.collapsible summary {
1486
+ list-style: none;
1487
+ }
1488
+
1489
+ details.collapsible summary::-webkit-details-marker {
1490
+ display: none;
1491
+ }
1492
+
1493
+
1494
+ /* ============================================
1495
+ TAGS / CHIPS
1496
+ ============================================ */
1497
+
1498
+ .tag {
1499
+ display: inline-flex;
1500
+ align-items: center;
1501
+ padding: var(--space-1) var(--space-2);
1502
+ font-size: var(--text-xs);
1503
+ font-family: var(--font-mono);
1504
+ border-radius: var(--radius-sm);
1505
+ gap: var(--space-1);
1506
+ }
1507
+
1508
+ .tag-green {
1509
+ background: rgba(125, 179, 103, 0.12);
1510
+ color: var(--success-400);
1511
+ }
1512
+
1513
+ .tag-yellow {
1514
+ background: rgba(212, 168, 74, 0.12);
1515
+ color: var(--warning-400);
1516
+ }
1517
+
1518
+ .tag-orange {
1519
+ background: rgba(219, 127, 58, 0.12);
1520
+ color: var(--accent-400);
1521
+ }
1522
+
1523
+ .tag-blue {
1524
+ background: rgba(106, 159, 196, 0.12);
1525
+ color: var(--info-400);
1526
+ }
1527
+
1528
+ .tag-gray {
1529
+ background: var(--gray-800);
1530
+ color: var(--gray-300);
1531
+ }
1532
+
1533
+
1534
+ /* ============================================
1535
+ DIALOGS / MODALS
1536
+ ============================================ */
1537
+
1538
+ dialog {
1539
+ background: var(--gray-800);
1540
+ border: 1px solid var(--gray-700);
1541
+ border-radius: var(--radius-xl);
1542
+ padding: var(--space-6);
1543
+ max-width: 600px;
1544
+ width: 90%;
1545
+ max-height: 80vh;
1546
+ color: var(--gray-100);
1547
+ box-shadow: var(--shadow-xl);
1548
+ }
1549
+
1550
+ dialog::backdrop {
1551
+ background: rgba(18, 17, 16, 0.8);
1552
+ backdrop-filter: blur(4px);
1553
+ }
1554
+
1555
+ .dialog-header {
1556
+ display: flex;
1557
+ align-items: center;
1558
+ justify-content: space-between;
1559
+ margin-bottom: var(--space-5);
1560
+ }
1561
+
1562
+ .dialog-title {
1563
+ font-size: var(--text-xl);
1564
+ margin: 0;
1565
+ }
1566
+
1567
+ .dialog-close {
1568
+ padding: var(--space-2);
1569
+ color: var(--gray-400);
1570
+ background: none;
1571
+ border: none;
1572
+ cursor: pointer;
1573
+ border-radius: var(--radius-md);
1574
+ transition: all var(--transition-fast);
1575
+ }
1576
+
1577
+ .dialog-close:hover {
1578
+ color: var(--gray-100);
1579
+ background: var(--gray-700);
1580
+ }
1581
+
1582
+ .dialog-body {
1583
+ overflow-y: auto;
1584
+ }
1585
+
1586
+ .dialog-footer {
1587
+ display: flex;
1588
+ justify-content: flex-end;
1589
+ gap: var(--space-3);
1590
+ margin-top: var(--space-6);
1591
+ padding-top: var(--space-4);
1592
+ border-top: 1px solid var(--gray-700);
1593
+ }
1594
+
1595
+
1596
+ /* ============================================
1597
+ LOADING & SPINNERS
1598
+ ============================================ */
1599
+
1600
+ .spinner {
1601
+ width: 16px;
1602
+ height: 16px;
1603
+ border: 2px solid var(--gray-600);
1604
+ border-top-color: var(--accent-400);
1605
+ border-radius: 50%;
1606
+ animation: spin 0.8s linear infinite;
1607
+ }
1608
+
1609
+ .spinner-sm {
1610
+ width: 12px;
1611
+ height: 12px;
1612
+ border-width: 1.5px;
1613
+ }
1614
+
1615
+ .spinner-lg {
1616
+ width: 24px;
1617
+ height: 24px;
1618
+ border-width: 3px;
1619
+ }
1620
+
1621
+ @keyframes spin {
1622
+ to { transform: rotate(360deg); }
1623
+ }
1624
+
1625
+ /* Loading Overlay */
1626
+ .loading-overlay {
1627
+ position: absolute;
1628
+ inset: 0;
1629
+ display: flex;
1630
+ align-items: center;
1631
+ justify-content: center;
1632
+ background: rgba(18, 17, 16, 0.7);
1633
+ backdrop-filter: blur(2px);
1634
+ z-index: var(--z-modal);
1635
+ }
1636
+
1637
+
1638
+ /* ============================================
1639
+ TEXT UTILITIES
1640
+ ============================================ */
1641
+
1642
+ .text-xs { font-size: var(--text-xs); }
1643
+ .text-sm { font-size: var(--text-sm); }
1644
+ .text-base { font-size: var(--text-base); }
1645
+ .text-lg { font-size: var(--text-lg); }
1646
+ .text-xl { font-size: var(--text-xl); }
1647
+ .text-2xl { font-size: var(--text-2xl); }
1648
+ .text-3xl { font-size: var(--text-3xl); }
1649
+
1650
+ .font-medium { font-weight: 500; }
1651
+ .font-semibold { font-weight: 600; }
1652
+ .font-bold { font-weight: 700; }
1653
+
1654
+ .text-muted { color: var(--gray-400); }
1655
+ .text-subtle { color: var(--gray-500); }
1656
+ .text-accent { color: var(--accent-400); }
1657
+ .text-success { color: var(--success-400); }
1658
+ .text-warning { color: var(--warning-400); }
1659
+ .text-error { color: var(--error-400); }
1660
+
1661
+ .text-center { text-align: center; }
1662
+ .text-right { text-align: right; }
1663
+ .text-left { text-align: left; }
1664
+
1665
+ .truncate {
1666
+ overflow: hidden;
1667
+ text-overflow: ellipsis;
1668
+ white-space: nowrap;
1669
+ }
1670
+
1671
+ .text-nowrap {
1672
+ white-space: nowrap;
1673
+ }
1674
+
1675
+ .uppercase {
1676
+ text-transform: uppercase;
1677
+ letter-spacing: var(--tracking-wide);
1678
+ }
1679
+
1680
+ .font-mono { font-family: var(--font-mono); }
1681
+ .font-display { font-family: var(--font-display); }
1682
+
1683
+
1684
+ /* ============================================
1685
+ VISIBILITY & DISPLAY
1686
+ ============================================ */
1687
+
1688
+ .hidden { display: none !important; }
1689
+ .block { display: block; }
1690
+ .inline-block { display: inline-block; }
1691
+ .inline { display: inline; }
1692
+
1693
+ .overflow-hidden { overflow: hidden; }
1694
+ .overflow-auto { overflow: auto; }
1695
+ .overflow-x-auto { overflow-x: auto; }
1696
+ .overflow-y-auto { overflow-y: auto; }
1697
+
1698
+ .relative { position: relative; }
1699
+ .absolute { position: absolute; }
1700
+ .sticky { position: sticky; }
1701
+
1702
+
1703
+ /* ============================================
1704
+ DIVIDERS
1705
+ ============================================ */
1706
+
1707
+ .divider {
1708
+ border: none;
1709
+ border-top: 1px solid var(--gray-800);
1710
+ margin: var(--space-6) 0;
1711
+ }
1712
+
1713
+ .divider-subtle {
1714
+ border-top-color: var(--gray-850, rgba(42, 40, 37, 0.5));
1715
+ }
1716
+
1717
+
1718
+ /* ============================================
1719
+ ICONS
1720
+ ============================================ */
1721
+
1722
+ .icon {
1723
+ width: 20px;
1724
+ height: 20px;
1725
+ flex-shrink: 0;
1726
+ }
1727
+
1728
+ .icon-sm {
1729
+ width: 16px;
1730
+ height: 16px;
1731
+ }
1732
+
1733
+ .icon-lg {
1734
+ width: 24px;
1735
+ height: 24px;
1736
+ }
1737
+
1738
+ .icon-xl {
1739
+ width: 32px;
1740
+ height: 32px;
1741
+ }
1742
+
1743
+
1744
+ /* ============================================
1745
+ ANIMATIONS
1746
+ ============================================ */
1747
+
1748
+ @keyframes fadeIn {
1749
+ from { opacity: 0; }
1750
+ to { opacity: 1; }
1751
+ }
1752
+
1753
+ @keyframes slideUp {
1754
+ from {
1755
+ opacity: 0;
1756
+ transform: translateY(8px);
1757
+ }
1758
+ to {
1759
+ opacity: 1;
1760
+ transform: translateY(0);
1761
+ }
1762
+ }
1763
+
1764
+ @keyframes pulse {
1765
+ 0%, 100% { opacity: 1; }
1766
+ 50% { opacity: 0.5; }
1767
+ }
1768
+
1769
+ .animate-fade-in {
1770
+ animation: fadeIn var(--transition-base);
1771
+ }
1772
+
1773
+ .animate-slide-up {
1774
+ animation: slideUp var(--transition-base);
1775
+ }
1776
+
1777
+ .animate-pulse {
1778
+ animation: pulse 2s ease-in-out infinite;
1779
+ }
1780
+
1781
+
1782
+ /* ============================================
1783
+ RESPONSIVE BREAKPOINTS
1784
+ ============================================ */
1785
+
1786
+ @media (max-width: 1024px) {
1787
+ .panel-right {
1788
+ width: 50%;
1789
+ }
1790
+ }
1791
+
1792
+ @media (max-width: 768px) {
1793
+ .layout-workbench {
1794
+ flex-direction: column;
1795
+ height: auto;
1796
+ }
1797
+
1798
+ .sidebar {
1799
+ width: 100%;
1800
+ border-right: none;
1801
+ border-bottom: 1px solid var(--gray-800);
1802
+ }
1803
+
1804
+ .content-body {
1805
+ flex-direction: column;
1806
+ }
1807
+
1808
+ .panel-right {
1809
+ width: 100%;
1810
+ border-left: none;
1811
+ border-top: 1px solid var(--gray-800);
1812
+ }
1813
+
1814
+ .page-header {
1815
+ flex-direction: column;
1816
+ align-items: flex-start;
1817
+ }
1818
+
1819
+ .page {
1820
+ padding: var(--space-8) var(--space-6);
1821
+ }
1822
+ }
1823
+
1824
+ @media (max-width: 480px) {
1825
+ .page {
1826
+ padding: var(--space-6) var(--space-4);
1827
+ }
1828
+
1829
+ .table th,
1830
+ .table td {
1831
+ padding: var(--space-3);
1832
+ }
1833
+ }
1834
+
1835
+
1836
+ /* ============================================
1837
+ WORKBENCH SPECIFIC
1838
+ ============================================ */
1839
+
1840
+ /* Prompt textarea - code-like appearance */
1841
+ .prompt-textarea {
1842
+ width: 100%;
1843
+ min-height: 80px;
1844
+ padding: var(--space-3);
1845
+ font-family: var(--font-mono);
1846
+ font-size: var(--text-sm);
1847
+ line-height: var(--leading-relaxed);
1848
+ color: var(--gray-100);
1849
+ background: var(--gray-800);
1850
+ border: 1px solid var(--gray-700);
1851
+ border-radius: var(--radius-md);
1852
+ resize: vertical;
1853
+ transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
1854
+ }
1855
+
1856
+ .prompt-textarea:focus {
1857
+ outline: none;
1858
+ border-color: var(--accent-500);
1859
+ box-shadow: 0 0 0 2px rgba(219, 127, 58, 0.15);
1860
+ }
1861
+
1862
+ .prompt-textarea::placeholder {
1863
+ color: var(--gray-500);
1864
+ }
1865
+
1866
+ /* Compact label */
1867
+ .label-inline {
1868
+ display: flex;
1869
+ align-items: center;
1870
+ justify-content: space-between;
1871
+ margin-bottom: var(--space-2);
1872
+ }
1873
+
1874
+ .label-inline .panel-section-title {
1875
+ margin: 0;
1876
+ }
1877
+
1878
+ /* Results display */
1879
+ .result-block {
1880
+ background: var(--gray-800);
1881
+ border-radius: var(--radius-md);
1882
+ padding: var(--space-2) var(--space-3);
1883
+ margin-bottom: var(--space-2);
1884
+ }
1885
+
1886
+ .result-block:last-child {
1887
+ margin-bottom: 0;
1888
+ }
1889
+
1890
+ .result-label {
1891
+ font-size: 10px;
1892
+ font-weight: 600;
1893
+ color: var(--gray-500);
1894
+ text-transform: uppercase;
1895
+ letter-spacing: var(--tracking-wide);
1896
+ margin-bottom: var(--space-1);
1897
+ }
1898
+
1899
+ .result-value {
1900
+ font-family: var(--font-mono);
1901
+ font-size: var(--text-xs);
1902
+ color: var(--gray-200);
1903
+ word-break: break-word;
1904
+ line-height: 1.5;
1905
+ }
1906
+
1907
+ .result-value pre {
1908
+ margin: 0;
1909
+ padding: 0;
1910
+ background: transparent;
1911
+ font-size: inherit;
1912
+ white-space: pre-wrap;
1913
+ }
1914
+
1915
+ /* Compact run button */
1916
+ .btn-run {
1917
+ width: 100%;
1918
+ padding: var(--space-3) var(--space-4);
1919
+ font-weight: 600;
1920
+ }
1921
+
1922
+ /* Evaluator grid - compact */
1923
+ .evaluator-grid {
1924
+ display: grid;
1925
+ grid-template-columns: repeat(2, 1fr);
1926
+ gap: var(--space-2);
1927
+ }
1928
+
1929
+ .evaluator-card {
1930
+ background: var(--gray-800);
1931
+ border-radius: var(--radius-md);
1932
+ padding: var(--space-2) var(--space-3);
1933
+ min-width: 0;
1934
+ }
1935
+
1936
+ .evaluator-header {
1937
+ display: flex;
1938
+ align-items: center;
1939
+ justify-content: space-between;
1940
+ gap: var(--space-1);
1941
+ margin-bottom: var(--space-1);
1942
+ }
1943
+
1944
+ .evaluator-name {
1945
+ font-size: 10px;
1946
+ font-weight: 500;
1947
+ color: var(--gray-400);
1948
+ white-space: nowrap;
1949
+ overflow: hidden;
1950
+ text-overflow: ellipsis;
1951
+ min-width: 0;
1952
+ }
1953
+
1954
+ .evaluator-score {
1955
+ font-family: var(--font-display);
1956
+ font-size: var(--text-lg);
1957
+ font-weight: 600;
1958
+ line-height: 1;
1959
+ }
1960
+
1961
+ /* Divider line */
1962
+ .section-divider {
1963
+ border: none;
1964
+ border-top: 1px solid var(--gray-800);
1965
+ margin: var(--space-4) 0;
1966
+ }
1967
+
1968
+ /* Inline header with title and version */
1969
+ .header-inline {
1970
+ display: flex;
1971
+ align-items: baseline;
1972
+ gap: var(--space-2);
1973
+ }
1974
+
1975
+ /* Compact form select for workbench */
1976
+ .form-select-sm {
1977
+ padding: var(--space-2) var(--space-3);
1978
+ padding-right: var(--space-8);
1979
+ font-size: var(--text-xs);
1980
+ background-position: right var(--space-2) center;
1981
+ }
1982
+
1983
+ /* Autosave status */
1984
+ .autosave-status {
1985
+ font-size: var(--text-xs);
1986
+ text-align: center;
1987
+ padding: var(--space-2);
1988
+ color: var(--gray-500);
1989
+ }
1990
+
1991
+ /* ============================================
1992
+ RIGHT PANEL - RUN CONTROLS
1993
+ ============================================ */
1994
+
1995
+ .run-controls {
1996
+ padding-bottom: var(--space-4);
1997
+ border-bottom: 1px solid var(--gray-800);
1998
+ margin-bottom: var(--space-4);
1999
+ }
2000
+
2001
+ .run-selects {
2002
+ display: flex;
2003
+ gap: var(--space-2);
2004
+ margin-bottom: var(--space-3);
2005
+ }
2006
+
2007
+ .run-select-group {
2008
+ flex: 1;
2009
+ min-width: 0;
2010
+ }
2011
+
2012
+ .run-label {
2013
+ display: block;
2014
+ font-size: 10px;
2015
+ font-weight: 600;
2016
+ color: var(--gray-500);
2017
+ text-transform: uppercase;
2018
+ letter-spacing: var(--tracking-wide);
2019
+ margin-bottom: var(--space-1);
2020
+ }
2021
+
2022
+ /* ============================================
2023
+ RIGHT PANEL - OUTPUT SECTION
2024
+ ============================================ */
2025
+
2026
+ .output-section {
2027
+ padding-bottom: var(--space-4);
2028
+ border-bottom: 1px solid var(--gray-800);
2029
+ margin-bottom: var(--space-4);
2030
+ }
2031
+
2032
+ .output-header {
2033
+ display: flex;
2034
+ align-items: baseline;
2035
+ justify-content: space-between;
2036
+ margin-bottom: var(--space-3);
2037
+ }
2038
+
2039
+ .output-title {
2040
+ font-size: var(--text-xs);
2041
+ font-weight: 600;
2042
+ color: var(--gray-400);
2043
+ text-transform: uppercase;
2044
+ letter-spacing: var(--tracking-wide);
2045
+ }
2046
+
2047
+ .output-meta {
2048
+ font-size: 10px;
2049
+ color: var(--gray-500);
2050
+ }
2051
+
2052
+ .output-grid {
2053
+ display: flex;
2054
+ flex-direction: column;
2055
+ gap: var(--space-1);
2056
+ }
2057
+
2058
+ .output-block {
2059
+ background: var(--gray-800);
2060
+ border-radius: var(--radius-sm);
2061
+ padding: var(--space-2) var(--space-3);
2062
+ display: flex;
2063
+ align-items: baseline;
2064
+ gap: var(--space-3);
2065
+ }
2066
+
2067
+ .output-block--expected {
2068
+ background: rgba(125, 179, 103, 0.08);
2069
+ border-left: 2px solid var(--success-500);
2070
+ }
2071
+
2072
+ .output-block--got {
2073
+ border-left: 2px solid var(--gray-700);
2074
+ }
2075
+
2076
+ .output-label {
2077
+ font-size: 10px;
2078
+ font-weight: 600;
2079
+ color: var(--gray-500);
2080
+ text-transform: uppercase;
2081
+ letter-spacing: 0.03em;
2082
+ flex-shrink: 0;
2083
+ width: 56px;
2084
+ }
2085
+
2086
+ .output-value {
2087
+ font-family: var(--font-mono);
2088
+ font-size: var(--text-sm);
2089
+ color: var(--gray-100);
2090
+ line-height: 1.5;
2091
+ word-break: break-word;
2092
+ }
2093
+
2094
+ .output-empty {
2095
+ text-align: center;
2096
+ padding: var(--space-6) var(--space-4);
2097
+ font-size: var(--text-sm);
2098
+ color: var(--gray-500);
2099
+ }
2100
+
2101
+ /* ============================================
2102
+ RIGHT PANEL - EVALUATORS
2103
+ ============================================ */
2104
+
2105
+ .eval-section {
2106
+ /* No bottom border - last section */
2107
+ }
2108
+
2109
+ .eval-header {
2110
+ display: flex;
2111
+ align-items: center;
2112
+ justify-content: space-between;
2113
+ margin-bottom: var(--space-3);
2114
+ }
2115
+
2116
+ .eval-title {
2117
+ font-size: var(--text-xs);
2118
+ font-weight: 600;
2119
+ color: var(--gray-400);
2120
+ text-transform: uppercase;
2121
+ letter-spacing: var(--tracking-wide);
2122
+ }
2123
+
2124
+ .eval-grid {
2125
+ display: flex;
2126
+ flex-wrap: wrap;
2127
+ gap: var(--space-2);
2128
+ }
2129
+
2130
+ .eval-card {
2131
+ flex: 1 1 calc(50% - var(--space-1));
2132
+ min-width: 0;
2133
+ background: var(--gray-800);
2134
+ border: 1px solid transparent;
2135
+ border-radius: var(--radius-md);
2136
+ padding: var(--space-3);
2137
+ cursor: pointer;
2138
+ transition: all var(--transition-fast);
2139
+ text-align: left;
2140
+ font-family: inherit;
2141
+ color: inherit;
2142
+ }
2143
+
2144
+ .eval-card:hover {
2145
+ background: var(--gray-750, #2a2928);
2146
+ }
2147
+
2148
+ .eval-card-inner {
2149
+ display: flex;
2150
+ flex-direction: column;
2151
+ gap: var(--space-1);
2152
+ }
2153
+
2154
+ .eval-name {
2155
+ font-size: 11px;
2156
+ font-weight: 500;
2157
+ color: var(--gray-400);
2158
+ white-space: nowrap;
2159
+ overflow: hidden;
2160
+ text-overflow: ellipsis;
2161
+ min-width: 0;
2162
+ }
2163
+
2164
+ .eval-score {
2165
+ font-family: var(--font-display);
2166
+ font-size: var(--text-xl);
2167
+ font-weight: 600;
2168
+ line-height: 1;
2169
+ }
2170
+
2171
+ .eval-score--empty {
2172
+ font-size: var(--text-sm);
2173
+ color: var(--gray-600);
2174
+ }
2175
+
2176
+ /* Evaluation Summary - Experiment Show Page */
2177
+ .eval-summary {
2178
+ display: flex;
2179
+ gap: var(--space-3);
2180
+ }
2181
+
2182
+ .eval-summary-card {
2183
+ display: flex;
2184
+ flex-direction: column;
2185
+ align-items: center;
2186
+ gap: var(--space-1);
2187
+ background: var(--gray-850, #222120);
2188
+ border: 1px solid var(--gray-700);
2189
+ border-radius: var(--radius-lg);
2190
+ padding: var(--space-4) var(--space-5);
2191
+ min-width: 110px;
2192
+ transition: all var(--transition-fast);
2193
+ }
2194
+
2195
+ .eval-summary-card:hover {
2196
+ border-color: var(--gray-600);
2197
+ background: var(--gray-800);
2198
+ }
2199
+
2200
+ .eval-summary-score {
2201
+ font-family: var(--font-mono);
2202
+ font-size: 1.75rem;
2203
+ font-weight: 700;
2204
+ line-height: 1;
2205
+ display: flex;
2206
+ align-items: baseline;
2207
+ }
2208
+
2209
+ .eval-summary-pct {
2210
+ font-size: 0.875rem;
2211
+ font-weight: 500;
2212
+ opacity: 0.5;
2213
+ margin-left: 1px;
2214
+ }
2215
+
2216
+ .eval-summary-name {
2217
+ font-size: 11px;
2218
+ font-weight: 600;
2219
+ color: var(--gray-400);
2220
+ text-transform: uppercase;
2221
+ letter-spacing: 0.04em;
2222
+ }
2223
+
2224
+ .eval-summary-bar {
2225
+ width: 100%;
2226
+ height: 4px;
2227
+ background: var(--gray-700);
2228
+ border-radius: 2px;
2229
+ overflow: hidden;
2230
+ margin-top: var(--space-2);
2231
+ }
2232
+
2233
+ .eval-summary-bar-fill {
2234
+ height: 100%;
2235
+ border-radius: 2px;
2236
+ transition: width 0.3s ease;
2237
+ }
2238
+
2239
+ .eval-summary-bar-fill.score-excellent { background: var(--success-500); }
2240
+ .eval-summary-bar-fill.score-good { background: var(--success-400); }
2241
+ .eval-summary-bar-fill.score-fair { background: var(--warning-500); }
2242
+ .eval-summary-bar-fill.score-poor { background: var(--error-400); }
2243
+ .eval-summary-bar-fill.score-bad { background: var(--error-500); }
2244
+
2245
+ .eval-summary-count {
2246
+ font-size: 10px;
2247
+ color: var(--gray-500);
2248
+ margin-top: var(--space-1);
2249
+ }
2250
+
2251
+ /* Experiment Metadata - Inline layout */
2252
+ .exp-meta {
2253
+ display: flex;
2254
+ flex-wrap: wrap;
2255
+ gap: var(--space-5);
2256
+ padding: var(--space-3) 0;
2257
+ margin-bottom: var(--space-4);
2258
+ }
2259
+
2260
+ .exp-meta-item {
2261
+ display: flex;
2262
+ align-items: baseline;
2263
+ gap: var(--space-2);
2264
+ padding-right: var(--space-5);
2265
+ border-right: 1px solid var(--gray-700);
2266
+ }
2267
+
2268
+ .exp-meta-item:last-child {
2269
+ border-right: none;
2270
+ padding-right: 0;
2271
+ }
2272
+
2273
+ .exp-meta-label {
2274
+ font-size: var(--text-xs);
2275
+ color: var(--gray-500);
2276
+ }
2277
+
2278
+ .exp-meta-value {
2279
+ font-size: var(--text-sm);
2280
+ font-weight: 500;
2281
+ color: var(--gray-200);
2282
+ }
2283
+
2284
+ .exp-meta-link {
2285
+ color: var(--accent-400);
2286
+ text-decoration: none;
2287
+ }
2288
+
2289
+ .exp-meta-link:hover {
2290
+ text-decoration: underline;
2291
+ }
2292
+
2293
+ /* Section Header */
2294
+ .section-header {
2295
+ display: flex;
2296
+ align-items: baseline;
2297
+ gap: var(--space-3);
2298
+ margin-bottom: var(--space-4);
2299
+ padding-bottom: var(--space-3);
2300
+ border-bottom: 1px solid var(--gray-800);
2301
+ }
2302
+
2303
+ .section-title {
2304
+ font-size: var(--text-lg);
2305
+ font-weight: 600;
2306
+ color: var(--gray-100);
2307
+ margin: 0;
2308
+ }
2309
+
2310
+ .section-count {
2311
+ font-size: var(--text-sm);
2312
+ color: var(--gray-500);
2313
+ }
2314
+
2315
+ /* Results Table */
2316
+ .table-results {
2317
+ font-size: var(--text-sm);
2318
+ }
2319
+
2320
+ .table-results th {
2321
+ font-size: 11px;
2322
+ font-weight: 600;
2323
+ color: var(--gray-400);
2324
+ text-transform: uppercase;
2325
+ letter-spacing: 0.04em;
2326
+ padding: var(--space-3) var(--space-4);
2327
+ }
2328
+
2329
+ .table-results td {
2330
+ padding: var(--space-3) var(--space-4);
2331
+ vertical-align: middle;
2332
+ }
2333
+
2334
+ .table-results .cell-truncate {
2335
+ max-width: 200px;
2336
+ overflow: hidden;
2337
+ text-overflow: ellipsis;
2338
+ white-space: nowrap;
2339
+ }
2340
+
2341
+ .empty-state-inline {
2342
+ padding: var(--space-6) var(--space-4);
2343
+ text-align: center;
2344
+ background: var(--gray-850, #222120);
2345
+ border-radius: var(--radius-md);
2346
+ }
2347
+
2348
+ /* Prediction Badge */
2349
+ .prediction-badge {
2350
+ display: inline-block;
2351
+ padding: var(--space-1) var(--space-2);
2352
+ background: var(--gray-700);
2353
+ border-radius: var(--radius-sm);
2354
+ font-size: var(--text-sm);
2355
+ font-weight: 500;
2356
+ color: var(--gray-200);
2357
+ }
2358
+
2359
+ /* Breadcrumb Navigation */
2360
+ .breadcrumb {
2361
+ display: flex;
2362
+ align-items: center;
2363
+ gap: var(--space-2);
2364
+ font-size: var(--text-sm);
2365
+ }
2366
+
2367
+ .breadcrumb-link {
2368
+ color: var(--accent-400);
2369
+ text-decoration: none;
2370
+ }
2371
+
2372
+ .breadcrumb-link:hover {
2373
+ text-decoration: underline;
2374
+ }
2375
+
2376
+ .breadcrumb-sep {
2377
+ color: var(--gray-600);
2378
+ }
2379
+
2380
+ .breadcrumb-current {
2381
+ color: var(--gray-400);
2382
+ }
2383
+
2384
+ /* Result Comparison - Side by side panels */
2385
+ .result-comparison {
2386
+ display: grid;
2387
+ grid-template-columns: 1fr 1fr;
2388
+ gap: var(--space-4);
2389
+ }
2390
+
2391
+ .result-panel {
2392
+ background: var(--gray-850, #222120);
2393
+ border: 1px solid var(--gray-700);
2394
+ border-radius: var(--radius-lg);
2395
+ overflow: hidden;
2396
+ }
2397
+
2398
+ .result-panel--expected {
2399
+ border-color: var(--gray-600);
2400
+ }
2401
+
2402
+ .result-panel-header {
2403
+ padding: var(--space-3) var(--space-4);
2404
+ background: var(--gray-800);
2405
+ border-bottom: 1px solid var(--gray-700);
2406
+ }
2407
+
2408
+ .result-panel-label {
2409
+ font-size: 11px;
2410
+ font-weight: 600;
2411
+ color: var(--gray-400);
2412
+ text-transform: uppercase;
2413
+ letter-spacing: 0.05em;
2414
+ }
2415
+
2416
+ .result-panel-content {
2417
+ padding: var(--space-4);
2418
+ }
2419
+
2420
+ .result-value-block {
2421
+ display: flex;
2422
+ align-items: flex-start;
2423
+ gap: var(--space-2);
2424
+ }
2425
+
2426
+ .result-index {
2427
+ flex-shrink: 0;
2428
+ width: 20px;
2429
+ height: 20px;
2430
+ display: flex;
2431
+ align-items: center;
2432
+ justify-content: center;
2433
+ background: var(--gray-700);
2434
+ border-radius: var(--radius-sm);
2435
+ font-size: 11px;
2436
+ font-weight: 600;
2437
+ color: var(--gray-400);
2438
+ }
2439
+
2440
+ .result-code {
2441
+ margin: 0;
2442
+ padding: var(--space-3);
2443
+ background: var(--gray-900);
2444
+ border-radius: var(--radius-md);
2445
+ font-size: var(--text-sm);
2446
+ overflow-x: auto;
2447
+ }
2448
+
2449
+ .result-code code {
2450
+ color: var(--gray-200);
2451
+ }
2452
+
2453
+
2454
+ /* ============================================
2455
+ EXPERIMENTS TABLE
2456
+ ============================================ */
2457
+
2458
+ .table-experiments td,
2459
+ .table-experiments th {
2460
+ padding: var(--space-3) var(--space-4);
2461
+ }
2462
+
2463
+ .table-experiments tbody tr {
2464
+ cursor: pointer;
2465
+ transition: background var(--transition-fast);
2466
+ }
2467
+
2468
+ .table-experiments tbody tr:hover {
2469
+ background: var(--gray-800);
2470
+ }
2471
+
2472
+ /* Numeric cells - right aligned with monospace */
2473
+ .cell-numeric {
2474
+ font-family: var(--font-mono);
2475
+ font-size: var(--text-sm);
2476
+ font-variant-numeric: tabular-nums;
2477
+ }
2478
+
2479
+ /* Inline score display for tables */
2480
+ .score-inline {
2481
+ font-family: var(--font-mono);
2482
+ font-size: var(--text-sm);
2483
+ font-weight: 500;
2484
+ font-variant-numeric: tabular-nums;
2485
+ }
2486
+
2487
+ /* Experiment row - clickable */
2488
+ .experiment-row {
2489
+ position: relative;
2490
+ }
2491
+
2492
+ .experiment-row td:first-child {
2493
+ position: relative;
2494
+ }
2495
+
2496
+ /* Full row link overlay */
2497
+ .experiment-row .row-link {
2498
+ position: absolute;
2499
+ inset: 0;
2500
+ z-index: 1;
2501
+ }
2502
+
2503
+ /* Experiment name cell - stacked layout */
2504
+ .experiment-name-cell {
2505
+ display: flex;
2506
+ flex-direction: column;
2507
+ gap: 2px;
2508
+ }
2509
+
2510
+ .experiment-name {
2511
+ font-weight: 500;
2512
+ color: var(--gray-100);
2513
+ position: relative;
2514
+ z-index: 2;
2515
+ }
2516
+
2517
+ .experiment-desc {
2518
+ display: block;
2519
+ max-width: 280px;
2520
+ }
2521
+
2522
+ .experiment-row:hover .experiment-name {
2523
+ color: var(--gray-50);
2524
+ }
2525
+
2526
+ /* Status indicator - inline dot + text */
2527
+ .status-indicator {
2528
+ display: inline-flex;
2529
+ align-items: center;
2530
+ gap: var(--space-2);
2531
+ }
2532
+
2533
+ .status-text {
2534
+ font-size: var(--text-sm);
2535
+ color: var(--gray-400);
2536
+ }
2537
+
2538
+ /* Table cell typography */
2539
+ .cell-dataset {
2540
+ font-size: var(--text-sm);
2541
+ color: var(--gray-400);
2542
+ }
2543
+
2544
+ .cell-timestamp {
2545
+ font-size: var(--text-sm);
2546
+ color: var(--gray-500);
2547
+ }
2548
+
2549
+ .cell-count {
2550
+ font-family: var(--font-mono);
2551
+ font-size: var(--text-sm);
2552
+ color: var(--gray-400);
2553
+ font-variant-numeric: tabular-nums;
2554
+ }
2555
+
2556
+ /* Score pill - compact score display */
2557
+ .score-pill {
2558
+ display: inline-block;
2559
+ font-family: var(--font-mono);
2560
+ font-size: var(--text-xs);
2561
+ font-weight: 600;
2562
+ font-variant-numeric: tabular-nums;
2563
+ padding: 2px 6px;
2564
+ border-radius: var(--radius-sm);
2565
+ background: var(--gray-800);
2566
+ }
2567
+
2568
+ .score-pill.score-excellent { background: rgba(125, 179, 103, 0.15); }
2569
+ .score-pill.score-good { background: rgba(159, 204, 111, 0.12); }
2570
+ .score-pill.score-fair { background: rgba(212, 168, 74, 0.12); }
2571
+ .score-pill.score-poor { background: rgba(232, 161, 88, 0.12); }
2572
+ .score-pill.score-bad { background: rgba(207, 111, 98, 0.12); }
2573
+
2574
+ .score-empty {
2575
+ font-size: var(--text-sm);
2576
+ color: var(--gray-600);
2577
+ }
2578
+
2579
+ /* Experiment description in table */
2580
+ .experiment-desc {
2581
+ display: block;
2582
+ max-width: 280px;
2583
+ font-size: var(--text-xs);
2584
+ color: var(--gray-500);
2585
+ overflow: hidden;
2586
+ text-overflow: ellipsis;
2587
+ white-space: nowrap;
2588
+ }
2589
+
2590
+ /* Center align for status column */
2591
+ .table th.text-center,
2592
+ .table td.text-center {
2593
+ text-align: center;
2594
+ }
2595
+
2596
+
2597
+ /* ============================================
2598
+ CLICKABLE TABLES (Generic)
2599
+ ============================================ */
2600
+
2601
+ .table-clickable td,
2602
+ .table-clickable th {
2603
+ padding: var(--space-3) var(--space-4);
2604
+ }
2605
+
2606
+ .table-clickable tbody tr {
2607
+ cursor: pointer;
2608
+ transition: background var(--transition-fast);
2609
+ }
2610
+
2611
+ .table-clickable tbody tr:hover {
2612
+ background: var(--gray-800);
2613
+ }
2614
+
2615
+ .clickable-row {
2616
+ cursor: pointer;
2617
+ transition: background var(--transition-fast);
2618
+ }
2619
+
2620
+ .clickable-row:hover {
2621
+ background: var(--gray-800);
2622
+ }
2623
+
2624
+ .clickable-row:hover .row-title {
2625
+ color: var(--gray-50);
2626
+ }
2627
+
2628
+ .row-title {
2629
+ font-weight: 500;
2630
+ color: var(--gray-100);
2631
+ }
2632
+
2633
+
2634
+ /* ============================================
2635
+ RUNNER RESULT PAGE
2636
+ ============================================ */
2637
+
2638
+ /* Result Meta Bar - Horizontal metadata display */
2639
+ .result-meta-bar {
2640
+ display: flex;
2641
+ align-items: center;
2642
+ flex-wrap: wrap;
2643
+ gap: var(--space-4);
2644
+ padding: var(--space-3) var(--space-4);
2645
+ background: var(--gray-850, #222120);
2646
+ border: 1px solid var(--gray-800);
2647
+ border-radius: var(--radius-lg);
2648
+ }
2649
+
2650
+ .result-meta-item {
2651
+ display: flex;
2652
+ align-items: center;
2653
+ gap: var(--space-2);
2654
+ }
2655
+
2656
+ .result-meta-label {
2657
+ font-size: var(--text-xs);
2658
+ color: var(--gray-500);
2659
+ text-transform: uppercase;
2660
+ letter-spacing: var(--tracking-wide);
2661
+ }
2662
+
2663
+ .result-meta-value {
2664
+ font-size: var(--text-sm);
2665
+ font-weight: 500;
2666
+ color: var(--gray-200);
2667
+ }
2668
+
2669
+ .result-meta-link {
2670
+ color: var(--accent-400);
2671
+ text-decoration: none;
2672
+ transition: color var(--transition-fast);
2673
+ }
2674
+
2675
+ .result-meta-link:hover {
2676
+ color: var(--accent-300);
2677
+ text-decoration: underline;
2678
+ }
2679
+
2680
+ .result-meta-divider {
2681
+ width: 1px;
2682
+ height: 20px;
2683
+ background: var(--gray-700);
2684
+ }
2685
+
2686
+ @media (max-width: 768px) {
2687
+ .result-meta-bar {
2688
+ flex-direction: column;
2689
+ align-items: flex-start;
2690
+ gap: var(--space-3);
2691
+ }
2692
+
2693
+ .result-meta-divider {
2694
+ display: none;
2695
+ }
2696
+ }
2697
+
2698
+ /* Result Section - Grouped content areas */
2699
+ .result-section {
2700
+ /* Container for grouped content */
2701
+ }
2702
+
2703
+ .result-section-header {
2704
+ display: flex;
2705
+ align-items: center;
2706
+ justify-content: space-between;
2707
+ margin-bottom: var(--space-4);
2708
+ padding-bottom: var(--space-3);
2709
+ border-bottom: 1px solid var(--gray-800);
2710
+ }
2711
+
2712
+ .result-section-title {
2713
+ display: flex;
2714
+ align-items: center;
2715
+ gap: var(--space-2);
2716
+ font-size: var(--text-base);
2717
+ font-weight: 600;
2718
+ color: var(--gray-200);
2719
+ margin: 0;
2720
+ }
2721
+
2722
+ .result-section-title svg {
2723
+ color: var(--gray-500);
2724
+ }
2725
+
2726
+ .result-section-count {
2727
+ font-size: var(--text-xs);
2728
+ color: var(--gray-500);
2729
+ }
2730
+
2731
+ /* Eval Summary Card Enhancements */
2732
+ .eval-summary-card {
2733
+ cursor: default;
2734
+ transition: all var(--transition-fast);
2735
+ }
2736
+
2737
+ .eval-summary-card:hover {
2738
+ transform: translateY(-2px);
2739
+ box-shadow: var(--shadow-md);
2740
+ }
2741
+
2742
+ .eval-summary-label {
2743
+ font-size: 10px;
2744
+ font-weight: 600;
2745
+ text-transform: uppercase;
2746
+ letter-spacing: 0.05em;
2747
+ margin-top: var(--space-1);
2748
+ opacity: 0.8;
2749
+ }
2750
+
2751
+ /* Comparison Match Badge */
2752
+ .comparison-match-badge {
2753
+ display: inline-flex;
2754
+ align-items: center;
2755
+ gap: var(--space-1);
2756
+ padding: var(--space-1) var(--space-3);
2757
+ font-size: var(--text-xs);
2758
+ font-weight: 600;
2759
+ border-radius: 999px;
2760
+ text-transform: uppercase;
2761
+ letter-spacing: 0.02em;
2762
+ }
2763
+
2764
+ .comparison-match-badge--match {
2765
+ background: rgba(125, 179, 103, 0.15);
2766
+ color: var(--success-400);
2767
+ }
2768
+
2769
+ .comparison-match-badge--mismatch {
2770
+ background: rgba(212, 168, 74, 0.15);
2771
+ color: var(--warning-400);
2772
+ }
2773
+
2774
+ /* Result Panel Enhancements */
2775
+ .result-panel-header {
2776
+ display: flex;
2777
+ align-items: center;
2778
+ justify-content: space-between;
2779
+ }
2780
+
2781
+ .result-panel-header-content {
2782
+ display: flex;
2783
+ align-items: center;
2784
+ gap: var(--space-2);
2785
+ }
2786
+
2787
+ .result-panel-header-content svg {
2788
+ color: var(--gray-500);
2789
+ }
2790
+
2791
+ .result-panel-meta {
2792
+ font-size: 10px;
2793
+ color: var(--gray-500);
2794
+ font-family: var(--font-mono);
2795
+ }
2796
+
2797
+ .result-panel--prediction .result-panel-header-content svg {
2798
+ color: var(--info-400);
2799
+ }
2800
+
2801
+ .result-panel--expected .result-panel-header-content svg {
2802
+ color: var(--success-400);
2803
+ }
2804
+
2805
+ .result-empty-state {
2806
+ display: flex;
2807
+ flex-direction: column;
2808
+ align-items: center;
2809
+ gap: var(--space-2);
2810
+ padding: var(--space-6) var(--space-4);
2811
+ text-align: center;
2812
+ color: var(--gray-500);
2813
+ font-size: var(--text-sm);
2814
+ }
2815
+
2816
+ /* Panel hover enhancement */
2817
+ .result-panel {
2818
+ transition: border-color var(--transition-fast);
2819
+ }
2820
+
2821
+ .result-panel:hover {
2822
+ border-color: var(--gray-600);
2823
+ }
2824
+
2825
+ /* Raw Output Collapsible - Enhanced styling */
2826
+ .raw-output-collapsible {
2827
+ border: 1px solid var(--gray-800);
2828
+ border-radius: var(--radius-lg);
2829
+ overflow: hidden;
2830
+ background: var(--gray-850, #222120);
2831
+ }
2832
+
2833
+ .raw-output-header {
2834
+ display: flex;
2835
+ align-items: center;
2836
+ justify-content: space-between;
2837
+ padding: var(--space-3) var(--space-4);
2838
+ background: var(--gray-800);
2839
+ cursor: pointer;
2840
+ user-select: none;
2841
+ transition: background var(--transition-fast);
2842
+ list-style: none;
2843
+ }
2844
+
2845
+ .raw-output-header::-webkit-details-marker {
2846
+ display: none;
2847
+ }
2848
+
2849
+ .raw-output-header:hover {
2850
+ background: var(--gray-750, #2a2928);
2851
+ }
2852
+
2853
+ .raw-output-header-left {
2854
+ display: flex;
2855
+ align-items: center;
2856
+ gap: var(--space-3);
2857
+ }
2858
+
2859
+ .raw-output-icon {
2860
+ color: var(--gray-500);
2861
+ }
2862
+
2863
+ .raw-output-title {
2864
+ font-size: var(--text-sm);
2865
+ font-weight: 600;
2866
+ color: var(--gray-200);
2867
+ }
2868
+
2869
+ .raw-output-stats {
2870
+ display: flex;
2871
+ align-items: center;
2872
+ gap: var(--space-2);
2873
+ margin-left: var(--space-2);
2874
+ }
2875
+
2876
+ .raw-output-stat {
2877
+ font-size: var(--text-xs);
2878
+ color: var(--gray-500);
2879
+ font-family: var(--font-mono);
2880
+ }
2881
+
2882
+ .raw-output-stat-sep {
2883
+ width: 3px;
2884
+ height: 3px;
2885
+ background: var(--gray-600);
2886
+ border-radius: 50%;
2887
+ }
2888
+
2889
+ .raw-output-header-right {
2890
+ display: flex;
2891
+ align-items: center;
2892
+ gap: var(--space-2);
2893
+ }
2894
+
2895
+ .raw-output-expand-hint {
2896
+ font-size: var(--text-xs);
2897
+ color: var(--gray-500);
2898
+ text-transform: uppercase;
2899
+ letter-spacing: var(--tracking-wide);
2900
+ }
2901
+
2902
+ .raw-output-expand-hint .collapse-text {
2903
+ display: none;
2904
+ }
2905
+
2906
+ .raw-output-collapsible[open] .raw-output-expand-hint .expand-text {
2907
+ display: none;
2908
+ }
2909
+
2910
+ .raw-output-collapsible[open] .raw-output-expand-hint .collapse-text {
2911
+ display: inline;
2912
+ }
2913
+
2914
+ .raw-output-chevron {
2915
+ width: 16px;
2916
+ height: 16px;
2917
+ color: var(--gray-500);
2918
+ transition: transform var(--transition-base);
2919
+ }
2920
+
2921
+ .raw-output-collapsible[open] .raw-output-chevron {
2922
+ transform: rotate(180deg);
2923
+ }
2924
+
2925
+ .raw-output-body {
2926
+ border-top: 1px solid var(--gray-800);
2927
+ animation: slideDown var(--transition-base);
2928
+ }
2929
+
2930
+ @keyframes slideDown {
2931
+ from {
2932
+ opacity: 0;
2933
+ transform: translateY(-8px);
2934
+ }
2935
+ to {
2936
+ opacity: 1;
2937
+ transform: translateY(0);
2938
+ }
2939
+ }
2940
+
2941
+ .raw-output-toolbar {
2942
+ display: flex;
2943
+ align-items: center;
2944
+ justify-content: space-between;
2945
+ padding: var(--space-2) var(--space-4);
2946
+ background: var(--gray-900);
2947
+ border-bottom: 1px solid var(--gray-800);
2948
+ }
2949
+
2950
+ .raw-output-lang-hint {
2951
+ display: flex;
2952
+ align-items: center;
2953
+ gap: var(--space-2);
2954
+ font-size: var(--text-xs);
2955
+ color: var(--gray-500);
2956
+ }
2957
+
2958
+ .raw-output-lang-hint svg {
2959
+ color: var(--gray-600);
2960
+ }
2961
+
2962
+ .raw-output-code {
2963
+ margin: 0;
2964
+ padding: var(--space-4);
2965
+ background: var(--gray-900);
2966
+ font-size: var(--text-sm);
2967
+ line-height: 1.6;
2968
+ overflow-x: auto;
2969
+ max-height: 400px;
2970
+ overflow-y: auto;
2971
+ }
2972
+
2973
+ .raw-output-code code {
2974
+ color: var(--gray-200);
2975
+ }
2976
+
2977
+ /* Result Footer */
2978
+ .result-footer {
2979
+ padding-top: var(--space-6);
2980
+ border-top: 1px solid var(--gray-800);
2981
+ }
2982
+
2983
+ .result-footer-content {
2984
+ display: flex;
2985
+ align-items: center;
2986
+ gap: var(--space-3);
2987
+ }
2988
+
2989
+ .result-footer-label {
2990
+ font-size: var(--text-sm);
2991
+ color: var(--gray-500);
2992
+ }
2993
+
2994
+ .result-footer-link {
2995
+ display: inline-flex;
2996
+ align-items: center;
2997
+ gap: var(--space-2);
2998
+ padding: var(--space-2) var(--space-3);
2999
+ font-size: var(--text-sm);
3000
+ font-weight: 500;
3001
+ color: var(--gray-300);
3002
+ background: var(--gray-800);
3003
+ border-radius: var(--radius-md);
3004
+ text-decoration: none;
3005
+ transition: all var(--transition-fast);
3006
+ }
3007
+
3008
+ .result-footer-link:hover {
3009
+ background: var(--gray-700);
3010
+ color: var(--gray-100);
3011
+ }
3012
+
3013
+ .result-footer-link svg:first-child {
3014
+ color: var(--gray-500);
3015
+ }
3016
+
3017
+ .result-footer-link svg:last-child {
3018
+ color: var(--gray-600);
3019
+ margin-left: var(--space-1);
3020
+ }
3021
+
3022
+
3023
+ /* ============================================
3024
+ SETUP REQUIRED STATE
3025
+ ============================================ */
3026
+
3027
+ .setup-required {
3028
+ text-align: center;
3029
+ padding: var(--space-6) var(--space-4);
3030
+ }
3031
+
3032
+ .setup-required-icon {
3033
+ display: inline-flex;
3034
+ align-items: center;
3035
+ justify-content: center;
3036
+ width: 56px;
3037
+ height: 56px;
3038
+ background: rgba(212, 168, 74, 0.12);
3039
+ border-radius: var(--radius-lg);
3040
+ margin-bottom: var(--space-4);
3041
+ color: var(--warning-400);
3042
+ }
3043
+
3044
+ .setup-required-title {
3045
+ font-size: var(--text-xl);
3046
+ font-weight: 600;
3047
+ color: var(--warning-400);
3048
+ margin: 0 0 var(--space-2) 0;
3049
+ }
3050
+
3051
+ .setup-required-desc {
3052
+ font-size: var(--text-sm);
3053
+ color: var(--gray-400);
3054
+ margin: 0;
3055
+ }
3056
+
3057
+ .setup-help {
3058
+ padding: var(--space-4) 0;
3059
+ }
3060
+
3061
+ .setup-help-title {
3062
+ font-size: var(--text-base);
3063
+ font-weight: 600;
3064
+ color: var(--gray-200);
3065
+ margin: 0 0 var(--space-2) 0;
3066
+ }
3067
+
3068
+ .setup-help-text {
3069
+ font-size: var(--text-sm);
3070
+ color: var(--gray-400);
3071
+ margin: 0 0 var(--space-4) 0;
3072
+ line-height: var(--leading-relaxed);
3073
+ }
3074
+
3075
+ .setup-code-block {
3076
+ display: block;
3077
+ padding: var(--space-3) var(--space-4);
3078
+ background: var(--gray-800);
3079
+ border: 1px solid var(--gray-700);
3080
+ border-radius: var(--radius-md);
3081
+ margin-bottom: var(--space-3);
3082
+ }
3083
+
3084
+ .setup-code-block code {
3085
+ font-family: var(--font-mono);
3086
+ font-size: var(--text-sm);
3087
+ color: var(--accent-300);
3088
+ background: transparent;
3089
+ padding: 0;
3090
+ }
3091
+
3092
+ .setup-help-hint {
3093
+ font-size: var(--text-sm);
3094
+ color: var(--gray-500);
3095
+ margin: 0;
28
3096
  }