@mtharrison/loupe 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3003 @@
1
+ /* client/src/styles.css */
2
+ :root {
3
+ color-scheme: light;
4
+ --background: #9aaec4;
5
+ --background-strong: #6b8097;
6
+ --panel: rgba(244, 248, 252, 0.95);
7
+ --panel-strong: rgba(255, 255, 255, 0.98);
8
+ --panel-soft: rgba(47, 88, 152, 0.05);
9
+ --foreground: #192332;
10
+ --muted-foreground: #647487;
11
+ --line: rgba(88, 105, 130, 0.16);
12
+ --line-strong: rgba(64, 104, 175, 0.34);
13
+ --primary: #285da8;
14
+ --primary-strong: #1b447b;
15
+ --secondary: rgba(73, 102, 148, 0.1);
16
+ --warning: #b7791f;
17
+ --danger: #b5525d;
18
+ --success: #2f7d62;
19
+ --shadow: 0 22px 60px rgba(30, 48, 72, 0.16);
20
+ --radius: 22px;
21
+ --page-gutter: 1.5rem;
22
+ }
23
+ :root[data-theme=dark] {
24
+ color-scheme: dark;
25
+ --background: #0e1723;
26
+ --background-strong: #050b14;
27
+ --panel: rgba(18, 27, 40, 0.94);
28
+ --panel-strong: rgba(23, 33, 49, 0.98);
29
+ --panel-soft: rgba(88, 144, 219, 0.12);
30
+ --foreground: #e6edf8;
31
+ --muted-foreground: #95a8c1;
32
+ --line: rgba(128, 153, 189, 0.18);
33
+ --line-strong: rgba(116, 169, 255, 0.42);
34
+ --primary: #86b8ff;
35
+ --primary-strong: #d6e5ff;
36
+ --secondary: rgba(108, 142, 194, 0.14);
37
+ --warning: #e4b05c;
38
+ --danger: #ef8798;
39
+ --success: #69c59c;
40
+ --shadow: 0 28px 80px rgba(1, 8, 20, 0.48);
41
+ }
42
+ * {
43
+ box-sizing: border-box;
44
+ }
45
+ html,
46
+ body,
47
+ #app {
48
+ min-height: 100%;
49
+ }
50
+ body {
51
+ margin: 0;
52
+ background:
53
+ radial-gradient(
54
+ circle at top left,
55
+ rgba(95, 137, 205, 0.24),
56
+ transparent 30rem),
57
+ radial-gradient(
58
+ circle at top right,
59
+ rgba(194, 210, 231, 0.22),
60
+ transparent 24rem),
61
+ linear-gradient(
62
+ 180deg,
63
+ #cad6e2 0%,
64
+ #a5b7c9 42%,
65
+ #7c90a8 100%);
66
+ color: var(--foreground);
67
+ transition: background 180ms ease, color 180ms ease;
68
+ font-family:
69
+ "Satoshi",
70
+ "SF Pro Display",
71
+ "Segoe UI",
72
+ ui-sans-serif,
73
+ system-ui,
74
+ sans-serif;
75
+ }
76
+ :root[data-theme=dark] body {
77
+ background:
78
+ radial-gradient(
79
+ circle at top left,
80
+ rgba(95, 137, 205, 0.24),
81
+ transparent 30rem),
82
+ radial-gradient(
83
+ circle at top right,
84
+ rgba(194, 210, 231, 0.22),
85
+ transparent 24rem),
86
+ linear-gradient(
87
+ 180deg,
88
+ #cad6e2 0%,
89
+ #a5b7c9 42%,
90
+ #7c90a8 100%);
91
+ }
92
+ button,
93
+ input,
94
+ select {
95
+ font: inherit;
96
+ }
97
+ button {
98
+ cursor: pointer;
99
+ }
100
+ pre {
101
+ margin: 0;
102
+ white-space: pre-wrap;
103
+ word-break: break-word;
104
+ font-family:
105
+ "SFMono-Regular",
106
+ ui-monospace,
107
+ "Cascadia Code",
108
+ "Source Code Pro",
109
+ Menlo,
110
+ monospace;
111
+ }
112
+ .app-shell {
113
+ position: relative;
114
+ height: 100dvh;
115
+ min-height: 100dvh;
116
+ overflow-x: hidden;
117
+ overflow-y: hidden;
118
+ }
119
+ .background-glow {
120
+ position: absolute;
121
+ inset: 0;
122
+ pointer-events: none;
123
+ opacity: 0.32;
124
+ }
125
+ .glow {
126
+ position: absolute;
127
+ border-radius: 9999px;
128
+ filter: blur(110px);
129
+ opacity: 0.58;
130
+ }
131
+ .glow-teal {
132
+ top: -3rem;
133
+ left: -6rem;
134
+ width: 26rem;
135
+ height: 26rem;
136
+ background: rgba(89, 132, 200, 0.26);
137
+ }
138
+ .glow-coral {
139
+ right: -7rem;
140
+ top: 2rem;
141
+ width: 22rem;
142
+ height: 22rem;
143
+ background: rgba(121, 145, 178, 0.22);
144
+ }
145
+ .grid-noise {
146
+ position: absolute;
147
+ inset: 0;
148
+ background-image:
149
+ linear-gradient(rgba(255, 255, 255, 0.08) 1px, transparent 1px),
150
+ linear-gradient(
151
+ 90deg,
152
+ rgba(255, 255, 255, 0.08) 1px,
153
+ transparent 1px);
154
+ background-size: 58px 58px;
155
+ mask-image:
156
+ linear-gradient(
157
+ 180deg,
158
+ rgba(0, 0, 0, 0.22),
159
+ transparent 82%);
160
+ }
161
+ .app-frame {
162
+ position: relative;
163
+ z-index: 1;
164
+ display: flex;
165
+ flex-direction: column;
166
+ gap: 0.85rem;
167
+ height: 100dvh;
168
+ min-height: 100dvh;
169
+ padding: var(--page-gutter);
170
+ justify-items: center;
171
+ align-items: center;
172
+ justify-self: center;
173
+ }
174
+ .board-shell {
175
+ display: flex;
176
+ flex: 1;
177
+ flex-direction: column;
178
+ height: 100%;
179
+ gap: 0.85rem;
180
+ min-height: 0;
181
+ overflow: hidden;
182
+ border: 1px solid rgba(255, 255, 255, 0.65);
183
+ background:
184
+ linear-gradient(
185
+ 180deg,
186
+ rgba(249, 252, 255, 0.98),
187
+ rgba(238, 244, 249, 0.97)),
188
+ linear-gradient(
189
+ 135deg,
190
+ rgba(255, 255, 255, 0.5),
191
+ transparent);
192
+ border-radius: 30px;
193
+ padding: 0.95rem;
194
+ box-shadow: 0 0 72px rgba(37, 57, 87, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.6);
195
+ }
196
+ .inspector-shell {
197
+ min-height: 0;
198
+ gap: 0.9rem;
199
+ }
200
+ .inspector-header {
201
+ display: flex;
202
+ align-items: center;
203
+ justify-content: space-between;
204
+ gap: 0.9rem;
205
+ padding: 0.2rem 0.15rem 0.3rem;
206
+ }
207
+ .brand-mark {
208
+ display: flex;
209
+ align-items: center;
210
+ gap: 0.58rem;
211
+ min-width: 0;
212
+ }
213
+ .brand-logo {
214
+ display: grid;
215
+ place-items: center;
216
+ flex: 0 0 auto;
217
+ width: 2.3rem;
218
+ height: 2.3rem;
219
+ padding: 0.05rem;
220
+ }
221
+ .brand-logo-svg {
222
+ display: block;
223
+ width: 100%;
224
+ height: 100%;
225
+ color: #17324b;
226
+ filter: drop-shadow(0 4px 10px rgba(23, 50, 75, 0.06));
227
+ }
228
+ .brand-copy {
229
+ display: flex;
230
+ flex-direction: column;
231
+ gap: 0.18rem;
232
+ min-width: 0;
233
+ }
234
+ .brand-wordmark {
235
+ display: flex;
236
+ align-items: center;
237
+ color: #132e48;
238
+ }
239
+ .brand-wordmark-svg {
240
+ display: block;
241
+ width: clamp(8rem, 13vw, 10.15rem);
242
+ height: auto;
243
+ }
244
+ .brand-subtitle {
245
+ color: var(--muted-foreground);
246
+ font-size: 0.82rem;
247
+ line-height: 1.25;
248
+ }
249
+ .inspector-header-side {
250
+ display: flex;
251
+ align-items: center;
252
+ gap: 0.65rem;
253
+ flex-wrap: wrap;
254
+ justify-content: flex-end;
255
+ }
256
+ .inspector-header-side > * {
257
+ flex-shrink: 0;
258
+ }
259
+ .inspector-header-actions {
260
+ display: flex;
261
+ align-items: center;
262
+ justify-content: flex-end;
263
+ gap: 0.65rem;
264
+ min-height: 2.75rem;
265
+ }
266
+ .inspector-status {
267
+ display: flex;
268
+ align-items: center;
269
+ gap: 0.48rem;
270
+ flex-wrap: wrap;
271
+ min-height: 2.75rem;
272
+ padding: 0.28rem 0.55rem;
273
+ border-radius: 999px;
274
+ border: 1px solid var(--line);
275
+ background: rgba(255, 255, 255, 0.7);
276
+ box-sizing: border-box;
277
+ }
278
+ .inspector-chip {
279
+ display: inline-flex;
280
+ align-items: center;
281
+ border-radius: 999px;
282
+ padding: 0.24rem 0.6rem;
283
+ background: rgba(40, 93, 168, 0.08);
284
+ color: var(--primary-strong);
285
+ font-size: 0.72rem;
286
+ font-weight: 700;
287
+ letter-spacing: 0.04em;
288
+ text-transform: uppercase;
289
+ }
290
+ .inspector-live-status {
291
+ display: inline-flex;
292
+ align-items: center;
293
+ gap: 0.45rem;
294
+ color: var(--muted-foreground);
295
+ font-size: 0.84rem;
296
+ font-weight: 600;
297
+ min-height: 1.85rem;
298
+ padding: 0.22rem 0.38rem;
299
+ border-radius: 999px;
300
+ line-height: 1;
301
+ }
302
+ .inspector-live-status.is-live {
303
+ color: var(--success);
304
+ background: rgba(47, 125, 98, 0.08);
305
+ }
306
+ .inspector-live-dot {
307
+ position: relative;
308
+ display: inline-block;
309
+ width: 0.5rem;
310
+ height: 0.5rem;
311
+ border-radius: 999px;
312
+ background: var(--warning);
313
+ box-shadow: 0 0 0 4px rgba(183, 121, 31, 0.14);
314
+ }
315
+ .inspector-live-dot::after {
316
+ content: "";
317
+ position: absolute;
318
+ inset: -0.32rem;
319
+ border-radius: inherit;
320
+ background: transparent;
321
+ opacity: 0;
322
+ transform: scale(0.55);
323
+ }
324
+ .inspector-live-status.is-live .inspector-live-dot {
325
+ background: var(--success);
326
+ box-shadow: 0 0 0 4px rgba(47, 125, 98, 0.14);
327
+ animation: live-dot-breathe 1.8s ease-in-out infinite;
328
+ }
329
+ .inspector-live-status.is-live .inspector-live-dot::after {
330
+ background: rgba(47, 125, 98, 0.18);
331
+ animation: live-pulse-ring 1.8s ease-out infinite;
332
+ }
333
+ .inspector-meta {
334
+ display: inline-flex;
335
+ align-items: center;
336
+ color: var(--muted-foreground);
337
+ font-size: 0.84rem;
338
+ padding-left: 0.65rem;
339
+ border-left: 1px solid var(--line);
340
+ line-height: 1;
341
+ }
342
+ .toolbar-card {
343
+ background: rgba(250, 252, 255, 0.78);
344
+ }
345
+ .filters-grid {
346
+ display: grid;
347
+ grid-template-columns: minmax(0, 1.9fr) repeat(2, minmax(10rem, 0.82fr)) auto;
348
+ gap: 0.75rem;
349
+ align-items: end;
350
+ }
351
+ .toolbar-content {
352
+ display: flex;
353
+ flex-direction: column;
354
+ gap: 0.75rem;
355
+ }
356
+ .inspector-filters-grid {
357
+ gap: 0.75rem;
358
+ }
359
+ .toolbar-actions {
360
+ display: flex;
361
+ align-items: flex-end;
362
+ justify-content: flex-end;
363
+ gap: 0.6rem;
364
+ flex-wrap: wrap;
365
+ }
366
+ .filters-secondary-row {
367
+ display: grid;
368
+ grid-template-columns: minmax(0, 22rem);
369
+ gap: 0.75rem;
370
+ }
371
+ .workspace-grid {
372
+ display: grid;
373
+ flex: 1;
374
+ grid-template-columns: minmax(40rem, 46rem) minmax(0, 1fr);
375
+ gap: 0.9rem;
376
+ align-items: start;
377
+ min-height: 0;
378
+ overflow: auto;
379
+ padding-right: 0.2rem;
380
+ }
381
+ .workspace-grid::-webkit-scrollbar {
382
+ width: 10px;
383
+ }
384
+ .workspace-grid::-webkit-scrollbar-thumb {
385
+ background: rgba(148, 163, 184, 0.22);
386
+ border-radius: 999px;
387
+ }
388
+ .ui-card {
389
+ display: flex;
390
+ flex-direction: column;
391
+ border-radius: var(--radius);
392
+ border: 1px solid var(--line);
393
+ background: rgba(250, 252, 255, 0.88);
394
+ box-shadow: 0 8px 26px rgba(32, 50, 76, 0.08);
395
+ min-height: 0;
396
+ }
397
+ .sidebar-card {
398
+ min-width: 0;
399
+ }
400
+ .timeline-card {
401
+ min-width: 0;
402
+ }
403
+ .navigator-card,
404
+ .content-card {
405
+ min-width: 0;
406
+ }
407
+ .navigator-card {
408
+ align-self: start;
409
+ }
410
+ .session-sidebar-card {
411
+ overflow: hidden;
412
+ }
413
+ .session-sidebar-shell {
414
+ display: flex;
415
+ min-height: 0;
416
+ flex: 1;
417
+ flex-direction: column;
418
+ }
419
+ .session-sidebar-toolbar {
420
+ display: flex;
421
+ align-items: center;
422
+ justify-content: space-between;
423
+ gap: 0.75rem;
424
+ padding: 0.95rem 0.95rem 0;
425
+ }
426
+ .session-sidebar-toolbar-copy {
427
+ display: flex;
428
+ min-width: 0;
429
+ flex-direction: column;
430
+ gap: 0.18rem;
431
+ }
432
+ .session-sidebar-toolbar-title {
433
+ font-size: 0.82rem;
434
+ font-weight: 700;
435
+ letter-spacing: 0.08em;
436
+ text-transform: uppercase;
437
+ color: var(--muted-foreground);
438
+ }
439
+ .session-sidebar-toolbar-meta {
440
+ color: var(--muted-foreground);
441
+ font-size: 0.84rem;
442
+ }
443
+ .session-sidebar-select {
444
+ width: auto;
445
+ min-width: min(14rem, 100%);
446
+ max-width: 16rem;
447
+ }
448
+ .session-sidebar-shell .hierarchy-timeline-panel {
449
+ margin: 0;
450
+ flex: 1;
451
+ min-height: 0;
452
+ border: 0;
453
+ border-radius: 0;
454
+ background: transparent;
455
+ box-shadow: none;
456
+ }
457
+ .session-sidebar-shell .hierarchy-timeline-list {
458
+ max-height: none;
459
+ flex: 1;
460
+ }
461
+ .session-sidebar-empty {
462
+ display: flex;
463
+ flex: 1;
464
+ min-height: 0;
465
+ padding: 0.95rem;
466
+ }
467
+ .content-card {
468
+ overflow: hidden;
469
+ }
470
+ .inspector-card {
471
+ background: rgba(248, 251, 254, 0.8);
472
+ }
473
+ .ui-card-header {
474
+ display: flex;
475
+ flex-direction: column;
476
+ gap: 0.25rem;
477
+ padding: 0.95rem 0.95rem 0;
478
+ }
479
+ .ui-card-title {
480
+ margin: 0;
481
+ font-size: 1rem;
482
+ font-weight: 650;
483
+ letter-spacing: -0.02em;
484
+ }
485
+ .ui-card-description {
486
+ margin: 0;
487
+ color: var(--muted-foreground);
488
+ font-size: 0.92rem;
489
+ }
490
+ .ui-card-content {
491
+ padding: 0.95rem;
492
+ min-height: 0;
493
+ }
494
+ .card-content-static {
495
+ display: block;
496
+ }
497
+ .ui-button {
498
+ display: inline-flex;
499
+ align-items: center;
500
+ justify-content: center;
501
+ gap: 0.55rem;
502
+ border-radius: 10px;
503
+ border: 1px solid var(--line);
504
+ min-height: 2.75rem;
505
+ padding: 0.72rem 1rem;
506
+ font-weight: 600;
507
+ transition:
508
+ transform 160ms ease,
509
+ border-color 160ms ease,
510
+ background 160ms ease,
511
+ color 160ms ease;
512
+ }
513
+ .ui-button:hover {
514
+ transform: none;
515
+ }
516
+ .ui-button:focus-visible,
517
+ .sheet-close:focus-visible,
518
+ .nav-item:focus-visible,
519
+ .nav-switch-button:focus-visible,
520
+ .theme-switch-button:focus-visible,
521
+ .expandable-toggle:focus-visible,
522
+ .tree-node-toggle:focus-visible,
523
+ .tree-node-select:focus-visible,
524
+ .trace-row:focus-visible,
525
+ .tabs-trigger:focus-visible,
526
+ .ui-input:focus-visible,
527
+ .ui-select:focus-visible {
528
+ outline: 2px solid rgba(40, 93, 168, 0.28);
529
+ outline-offset: 2px;
530
+ }
531
+ .ui-button-default {
532
+ background:
533
+ linear-gradient(
534
+ 135deg,
535
+ #285da8,
536
+ #4f81ca);
537
+ border-color: rgba(40, 93, 168, 0.24);
538
+ color: #f5f9ff;
539
+ }
540
+ .ui-button-outline {
541
+ background: rgba(255, 255, 255, 0.78);
542
+ border-color: var(--line);
543
+ color: var(--foreground);
544
+ }
545
+ .clear-traces-button {
546
+ min-width: 8rem;
547
+ min-height: 2.75rem;
548
+ padding: 0.66rem 1rem;
549
+ border-radius: 14px;
550
+ }
551
+ .theme-switch {
552
+ display: inline-flex;
553
+ align-items: center;
554
+ gap: 0.28rem;
555
+ min-height: 2.75rem;
556
+ padding: 0.18rem;
557
+ border-radius: 14px;
558
+ border: 1px solid var(--line);
559
+ background: rgba(245, 249, 253, 0.92);
560
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
561
+ box-sizing: border-box;
562
+ }
563
+ .theme-switch-button {
564
+ display: inline-flex;
565
+ align-items: center;
566
+ gap: 0.5rem;
567
+ border: 0;
568
+ background: transparent;
569
+ color: var(--muted-foreground);
570
+ border-radius: 10px;
571
+ min-height: 2.35rem;
572
+ padding: 0.5rem 0.92rem;
573
+ font-weight: 650;
574
+ line-height: 1;
575
+ }
576
+ .theme-switch-button.is-active {
577
+ background: rgba(255, 255, 255, 0.96);
578
+ color: var(--primary-strong);
579
+ box-shadow: inset 0 0 0 1px rgba(40, 93, 168, 0.2), 0 1px 2px rgba(19, 46, 72, 0.08);
580
+ }
581
+ .clear-traces-button.is-confirming {
582
+ border-color: rgba(181, 82, 93, 0.34);
583
+ background: rgba(181, 82, 93, 0.08);
584
+ color: var(--danger);
585
+ }
586
+ .ui-badge {
587
+ display: inline-flex;
588
+ align-items: center;
589
+ gap: 0.4rem;
590
+ border-radius: 999px;
591
+ padding: 0.32rem 0.68rem;
592
+ font-size: 0.74rem;
593
+ font-weight: 650;
594
+ letter-spacing: 0.03em;
595
+ text-transform: uppercase;
596
+ }
597
+ .ui-badge-secondary {
598
+ background: rgba(73, 102, 148, 0.1);
599
+ color: var(--muted-foreground);
600
+ }
601
+ .ui-badge[data-semantic] {
602
+ border: 1px solid color-mix(in srgb, var(--semantic-badge-color) 28%, transparent);
603
+ background: color-mix(in srgb, var(--semantic-badge-color) 18%, white);
604
+ color: color-mix(in srgb, var(--semantic-badge-color) 78%, #27405c);
605
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.62);
606
+ }
607
+ .ui-badge[data-semantic=session] {
608
+ --semantic-badge-color: rgba(54, 103, 214, 0.92);
609
+ }
610
+ .ui-badge[data-semantic=actor] {
611
+ --semantic-badge-color: rgba(71, 160, 92, 0.9);
612
+ }
613
+ .ui-badge[data-semantic=child-actor],
614
+ .ui-badge[data-semantic=stage] {
615
+ --semantic-badge-color: rgba(130, 95, 214, 0.9);
616
+ }
617
+ .ui-badge[data-semantic=guardrail] {
618
+ --semantic-badge-color: rgba(219, 150, 58, 0.92);
619
+ }
620
+ .ui-badge[data-semantic=call] {
621
+ --semantic-badge-color: rgba(61, 108, 225, 0.9);
622
+ }
623
+ .ui-badge-outline {
624
+ border: 1px solid rgba(40, 93, 168, 0.16);
625
+ background: rgba(40, 93, 168, 0.08);
626
+ color: var(--primary);
627
+ }
628
+ .ui-badge-success {
629
+ background: rgba(47, 125, 98, 0.12);
630
+ color: var(--success);
631
+ }
632
+ .ui-badge-warning {
633
+ background: rgba(183, 121, 31, 0.12);
634
+ color: var(--warning);
635
+ }
636
+ .ui-badge-destructive {
637
+ background: rgba(251, 113, 133, 0.14);
638
+ color: var(--danger);
639
+ }
640
+ .filter-field {
641
+ display: flex;
642
+ flex-direction: column;
643
+ gap: 0.3rem;
644
+ min-width: 0;
645
+ }
646
+ .filter-label {
647
+ color: var(--muted-foreground);
648
+ font-size: 0.74rem;
649
+ text-transform: uppercase;
650
+ letter-spacing: 0.08em;
651
+ }
652
+ .filter-input-shell {
653
+ display: flex;
654
+ align-items: center;
655
+ gap: 0.55rem;
656
+ min-height: 2.8rem;
657
+ border-radius: 10px;
658
+ border: 1px solid var(--line);
659
+ background: rgba(255, 255, 255, 0.9);
660
+ padding: 0 0.82rem;
661
+ }
662
+ .filter-input-shell svg {
663
+ width: 1rem;
664
+ height: 1rem;
665
+ color: var(--muted-foreground);
666
+ }
667
+ .ui-input,
668
+ .ui-select {
669
+ width: 100%;
670
+ background: transparent;
671
+ border: 0;
672
+ outline: 0;
673
+ color: var(--foreground);
674
+ min-height: 2.8rem;
675
+ }
676
+ .ui-select {
677
+ border-radius: 10px;
678
+ border: 1px solid var(--line);
679
+ background: rgba(255, 255, 255, 0.9);
680
+ padding: 0 0.82rem;
681
+ }
682
+ .navigator-header {
683
+ display: flex;
684
+ align-items: center;
685
+ justify-content: space-between;
686
+ gap: 0.85rem;
687
+ flex-wrap: wrap;
688
+ }
689
+ .nav-switch {
690
+ display: inline-flex;
691
+ align-items: center;
692
+ gap: 0.28rem;
693
+ padding: 0.24rem;
694
+ border-radius: 12px;
695
+ border: 1px solid var(--line);
696
+ background: rgba(245, 249, 253, 0.92);
697
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
698
+ }
699
+ .nav-switch-button {
700
+ border: 0;
701
+ background: transparent;
702
+ color: var(--muted-foreground);
703
+ border-radius: 10px;
704
+ padding: 0.58rem 0.9rem;
705
+ font-weight: 650;
706
+ }
707
+ .nav-switch-button.is-active {
708
+ background: rgba(255, 255, 255, 0.96);
709
+ color: var(--primary-strong);
710
+ box-shadow: inset 0 -2px 0 rgba(40, 93, 168, 0.72), inset 0 0 0 1px rgba(40, 93, 168, 0.16);
711
+ }
712
+ .navigator-content {
713
+ display: flex;
714
+ flex-direction: column;
715
+ gap: 0.8rem;
716
+ }
717
+ .trace-group-list {
718
+ display: flex;
719
+ flex-direction: column;
720
+ gap: 0.9rem;
721
+ }
722
+ .trace-group {
723
+ display: flex;
724
+ flex-direction: column;
725
+ gap: 0.5rem;
726
+ content-visibility: auto;
727
+ contain-intrinsic-size: 18rem;
728
+ }
729
+ .trace-group-button {
730
+ display: flex;
731
+ width: 100%;
732
+ align-items: center;
733
+ justify-content: space-between;
734
+ gap: 0.8rem;
735
+ border: 1px solid var(--line);
736
+ border-radius: 14px;
737
+ background: rgba(246, 250, 254, 0.92);
738
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72);
739
+ color: inherit;
740
+ padding: 0.78rem 0.88rem;
741
+ text-align: left;
742
+ }
743
+ .trace-group.has-active-trace .trace-group-button,
744
+ .trace-group-button:hover {
745
+ border-color: var(--line-strong);
746
+ background: rgba(242, 248, 255, 0.96);
747
+ }
748
+ .trace-group-copy {
749
+ display: flex;
750
+ min-width: 0;
751
+ flex: 1;
752
+ flex-direction: column;
753
+ gap: 0.15rem;
754
+ }
755
+ .trace-group-title {
756
+ font-size: 0.92rem;
757
+ font-weight: 700;
758
+ letter-spacing: -0.02em;
759
+ }
760
+ .trace-group-meta {
761
+ color: var(--muted-foreground);
762
+ font-size: 0.78rem;
763
+ }
764
+ .trace-group-side {
765
+ display: flex;
766
+ flex: 0 0 auto;
767
+ align-items: center;
768
+ flex-wrap: wrap;
769
+ gap: 0.55rem;
770
+ justify-content: flex-end;
771
+ }
772
+ .trace-group-chevron {
773
+ width: 0.95rem;
774
+ height: 0.95rem;
775
+ color: var(--muted-foreground);
776
+ transition: transform 160ms ease;
777
+ }
778
+ .trace-group-chevron.is-open {
779
+ transform: rotate(90deg);
780
+ }
781
+ .trace-group-body {
782
+ display: flex;
783
+ flex-direction: column;
784
+ gap: 0.35rem;
785
+ padding-left: 0.15rem;
786
+ border-left: 0;
787
+ }
788
+ .nav-list {
789
+ display: flex;
790
+ flex-direction: column;
791
+ gap: 0.22rem;
792
+ }
793
+ .nav-item {
794
+ position: relative;
795
+ display: flex;
796
+ width: 100%;
797
+ align-items: center;
798
+ justify-content: space-between;
799
+ gap: 0.8rem;
800
+ border: 1px solid var(--line);
801
+ border-radius: 12px;
802
+ background: rgba(255, 255, 255, 0.9);
803
+ box-shadow: 0 4px 12px rgba(32, 50, 76, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.72);
804
+ color: inherit;
805
+ padding: 0.74rem 0.85rem;
806
+ text-align: left;
807
+ }
808
+ .nav-list > .nav-item:nth-child(even) {
809
+ background: rgba(248, 251, 255, 0.92);
810
+ }
811
+ .nav-item:hover,
812
+ .nav-item.is-active {
813
+ border-color: var(--line-strong);
814
+ background: rgba(238, 246, 255, 0.99);
815
+ box-shadow:
816
+ inset 4px 0 0 rgba(40, 93, 168, 0.78),
817
+ 0 10px 24px rgba(32, 50, 76, 0.1),
818
+ 0 0 0 1px rgba(40, 93, 168, 0.12),
819
+ inset 0 1px 0 rgba(255, 255, 255, 0.72);
820
+ }
821
+ .nav-item-copy {
822
+ display: flex;
823
+ min-width: 0;
824
+ flex: 1;
825
+ flex-direction: column;
826
+ gap: 0.18rem;
827
+ }
828
+ .nav-item-side {
829
+ display: flex;
830
+ flex: 0 0 auto;
831
+ flex-direction: column;
832
+ align-items: flex-end;
833
+ gap: 0.42rem;
834
+ min-width: 8.1rem;
835
+ }
836
+ .nav-item-title {
837
+ font-weight: 650;
838
+ letter-spacing: -0.02em;
839
+ overflow-wrap: anywhere;
840
+ }
841
+ .trace-nav-kicker {
842
+ color: var(--primary);
843
+ font-size: 0.72rem;
844
+ font-weight: 700;
845
+ letter-spacing: 0.08em;
846
+ text-transform: uppercase;
847
+ }
848
+ .nav-item-meta {
849
+ color: var(--muted-foreground);
850
+ font-size: 0.79rem;
851
+ line-height: 1.4;
852
+ }
853
+ .trace-nav-meta-row {
854
+ display: flex;
855
+ align-items: center;
856
+ flex-wrap: wrap;
857
+ gap: 0.2rem 0.6rem;
858
+ color: var(--muted-foreground);
859
+ font-size: 0.78rem;
860
+ line-height: 1.5;
861
+ }
862
+ .trace-nav-meta-row span:first-child {
863
+ color: var(--muted-foreground);
864
+ font-family:
865
+ ui-monospace,
866
+ SFMono-Regular,
867
+ Menlo,
868
+ Consolas,
869
+ monospace;
870
+ font-size: 0.72rem;
871
+ font-weight: 650;
872
+ letter-spacing: -0.02em;
873
+ white-space: nowrap;
874
+ }
875
+ .trace-nav-item .nav-item-title {
876
+ font-size: 0.96rem;
877
+ }
878
+ .nav-item-side-meta {
879
+ display: flex;
880
+ flex-wrap: wrap;
881
+ justify-content: flex-end;
882
+ gap: 0.35rem;
883
+ }
884
+ .trace-elapsed-bar {
885
+ display: flex;
886
+ align-items: center;
887
+ justify-content: flex-end;
888
+ gap: 0.45rem;
889
+ width: 100%;
890
+ }
891
+ .trace-elapsed-bar.is-compact {
892
+ min-width: 7.4rem;
893
+ }
894
+ .trace-elapsed-track {
895
+ position: relative;
896
+ flex: 1;
897
+ min-width: 4.25rem;
898
+ height: 1rem;
899
+ }
900
+ .trace-elapsed-track::before {
901
+ content: "";
902
+ position: absolute;
903
+ left: 0;
904
+ right: 0;
905
+ top: 50%;
906
+ height: 2px;
907
+ border-radius: 999px;
908
+ background: rgba(84, 100, 125, 0.2);
909
+ transform: translateY(-50%);
910
+ }
911
+ .trace-elapsed-span {
912
+ position: absolute;
913
+ left: 0;
914
+ top: 50%;
915
+ width: calc(var(--elapsed-scale, 0.2) * 100%);
916
+ height: 4px;
917
+ border-radius: 999px;
918
+ background:
919
+ linear-gradient(
920
+ 90deg,
921
+ rgba(86, 127, 236, 0.92),
922
+ rgba(40, 93, 168, 0.96));
923
+ transform: translateY(-50%);
924
+ }
925
+ .trace-elapsed-span::before,
926
+ .trace-elapsed-span::after {
927
+ content: "";
928
+ position: absolute;
929
+ top: 50%;
930
+ width: 3px;
931
+ height: 0.72rem;
932
+ border-radius: 999px;
933
+ background: inherit;
934
+ transform: translateY(-50%);
935
+ }
936
+ .trace-elapsed-span::before {
937
+ left: 0;
938
+ }
939
+ .trace-elapsed-span::after {
940
+ right: 0;
941
+ }
942
+ .trace-elapsed-bar.is-pending .trace-elapsed-span {
943
+ background:
944
+ linear-gradient(
945
+ 90deg,
946
+ rgba(69, 104, 222, 0.45),
947
+ rgba(69, 104, 222, 0.9));
948
+ }
949
+ .trace-elapsed-label {
950
+ min-width: 3.85rem;
951
+ color: var(--foreground);
952
+ font-family:
953
+ ui-monospace,
954
+ SFMono-Regular,
955
+ Menlo,
956
+ Consolas,
957
+ monospace;
958
+ font-size: 0.73rem;
959
+ font-weight: 700;
960
+ text-align: right;
961
+ white-space: nowrap;
962
+ letter-spacing: -0.02em;
963
+ }
964
+ .content-scroll {
965
+ min-height: 0;
966
+ flex: 1;
967
+ overflow: auto;
968
+ }
969
+ .trace-detail-panel {
970
+ display: flex;
971
+ min-height: 0;
972
+ flex: 1;
973
+ flex-direction: column;
974
+ }
975
+ .hierarchy-timeline-panel {
976
+ display: flex;
977
+ flex-direction: column;
978
+ gap: 0.8rem;
979
+ margin: 1rem 1rem 0;
980
+ padding: 0.95rem 1rem 1rem;
981
+ border: 1px solid var(--line);
982
+ border-radius: 16px;
983
+ background: rgba(248, 251, 255, 0.82);
984
+ box-shadow: 0 10px 28px rgba(32, 50, 76, 0.05), inset 0 1px 0 rgba(255, 255, 255, 0.72);
985
+ }
986
+ .hierarchy-timeline-header {
987
+ display: flex;
988
+ align-items: flex-start;
989
+ justify-content: space-between;
990
+ gap: 0.9rem;
991
+ }
992
+ .hierarchy-timeline-header-side {
993
+ display: flex;
994
+ align-items: center;
995
+ justify-content: flex-end;
996
+ gap: 0.55rem;
997
+ flex-wrap: wrap;
998
+ }
999
+ .hierarchy-timeline-title {
1000
+ font-size: 0.86rem;
1001
+ font-weight: 700;
1002
+ letter-spacing: 0.08em;
1003
+ text-transform: uppercase;
1004
+ color: var(--muted-foreground);
1005
+ }
1006
+ .hierarchy-timeline-meta {
1007
+ display: flex;
1008
+ flex-wrap: wrap;
1009
+ gap: 0.25rem 0.7rem;
1010
+ margin-top: 0.22rem;
1011
+ color: var(--muted-foreground);
1012
+ font-size: 0.82rem;
1013
+ }
1014
+ .hierarchy-timeline-hint {
1015
+ color: var(--muted-foreground);
1016
+ font-size: 0.76rem;
1017
+ line-height: 1.4;
1018
+ }
1019
+ .hierarchy-timeline-axis {
1020
+ display: grid;
1021
+ grid-template-columns: 4.75rem minmax(0, 1fr) minmax(13rem, 19rem);
1022
+ gap: 0.75rem;
1023
+ align-items: end;
1024
+ }
1025
+ .hierarchy-timeline-axis-track,
1026
+ .hierarchy-timeline-row-track {
1027
+ background-image:
1028
+ linear-gradient(
1029
+ 90deg,
1030
+ rgba(84, 100, 125, 0.1) 0,
1031
+ rgba(84, 100, 125, 0.1) 1px,
1032
+ transparent 1px);
1033
+ background-repeat: repeat-x;
1034
+ background-size: 25% 100%;
1035
+ }
1036
+ .hierarchy-timeline-axis-track {
1037
+ position: relative;
1038
+ height: 1.6rem;
1039
+ }
1040
+ .hierarchy-timeline-axis-track::before {
1041
+ content: "";
1042
+ position: absolute;
1043
+ left: 0;
1044
+ right: 0;
1045
+ bottom: 0.18rem;
1046
+ height: 1px;
1047
+ background: rgba(84, 100, 125, 0.18);
1048
+ }
1049
+ .hierarchy-timeline-axis-tick {
1050
+ position: absolute;
1051
+ left: calc(var(--timeline-axis-offset, 0) * 100%);
1052
+ bottom: 0.18rem;
1053
+ display: inline-flex;
1054
+ flex-direction: column;
1055
+ align-items: center;
1056
+ gap: 0.18rem;
1057
+ transform: translateX(-50%);
1058
+ }
1059
+ .hierarchy-timeline-axis-tick:first-child {
1060
+ transform: translateX(0);
1061
+ align-items: flex-start;
1062
+ }
1063
+ .hierarchy-timeline-axis-tick:last-child {
1064
+ transform: translateX(-100%);
1065
+ align-items: flex-end;
1066
+ }
1067
+ .hierarchy-timeline-axis-tick::before {
1068
+ content: "";
1069
+ width: 1px;
1070
+ height: 0.44rem;
1071
+ background: rgba(84, 100, 125, 0.24);
1072
+ }
1073
+ .hierarchy-timeline-axis-label {
1074
+ color: var(--muted-foreground);
1075
+ font-family:
1076
+ ui-monospace,
1077
+ SFMono-Regular,
1078
+ Menlo,
1079
+ Consolas,
1080
+ monospace;
1081
+ font-size: 0.7rem;
1082
+ font-weight: 650;
1083
+ white-space: nowrap;
1084
+ }
1085
+ .hierarchy-timeline-list {
1086
+ display: flex;
1087
+ flex-direction: column;
1088
+ gap: 0.22rem;
1089
+ max-height: 28rem;
1090
+ overflow: auto;
1091
+ padding-right: 0.2rem;
1092
+ }
1093
+ .hierarchy-timeline-row {
1094
+ --timeline-row-color: rgba(69, 104, 222, 0.88);
1095
+ display: grid;
1096
+ grid-template-columns: 4.75rem minmax(0, 1fr) minmax(13rem, 19rem);
1097
+ gap: 0.75rem;
1098
+ align-items: center;
1099
+ width: 100%;
1100
+ padding: 0.44rem 0.55rem;
1101
+ border-radius: 12px;
1102
+ border: 1px solid transparent;
1103
+ background: rgba(255, 255, 255, 0.42);
1104
+ color: inherit;
1105
+ cursor: default;
1106
+ font: inherit;
1107
+ text-align: left;
1108
+ appearance: none;
1109
+ content-visibility: auto;
1110
+ contain-intrinsic-size: 3rem;
1111
+ }
1112
+ .hierarchy-timeline-row.is-clickable {
1113
+ cursor: pointer;
1114
+ border-color: rgba(40, 93, 168, 0.08);
1115
+ background: rgba(255, 255, 255, 0.7);
1116
+ box-shadow: 0 6px 18px rgba(32, 50, 76, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.72);
1117
+ }
1118
+ .hierarchy-timeline-row.is-clickable:hover {
1119
+ border-color: rgba(40, 93, 168, 0.14);
1120
+ background: rgba(242, 248, 255, 0.86);
1121
+ }
1122
+ .hierarchy-timeline-row.is-structure {
1123
+ border-style: dashed;
1124
+ border-color: rgba(84, 100, 125, 0.08);
1125
+ background: rgba(255, 255, 255, 0.24);
1126
+ box-shadow: none;
1127
+ }
1128
+ .hierarchy-timeline-row:focus-visible {
1129
+ outline: 2px solid rgba(40, 93, 168, 0.22);
1130
+ outline-offset: 2px;
1131
+ }
1132
+ .hierarchy-timeline-row.is-in-path {
1133
+ background: rgba(240, 246, 255, 0.54);
1134
+ }
1135
+ .hierarchy-timeline-row.is-structure.is-in-path {
1136
+ background: rgba(240, 246, 255, 0.38);
1137
+ }
1138
+ .hierarchy-timeline-row.is-detail-trace:not(.is-active) {
1139
+ border-color: rgba(40, 93, 168, 0.16);
1140
+ background: rgba(238, 246, 255, 0.76);
1141
+ box-shadow: inset 2px 0 0 rgba(40, 93, 168, 0.58), 0 8px 18px rgba(32, 50, 76, 0.05);
1142
+ }
1143
+ .hierarchy-timeline-row.is-active {
1144
+ border-color: rgba(40, 93, 168, 0.18);
1145
+ background: rgba(234, 243, 255, 0.82);
1146
+ box-shadow: inset 3px 0 0 rgba(40, 93, 168, 0.74), 0 8px 20px rgba(32, 50, 76, 0.06);
1147
+ }
1148
+ .hierarchy-timeline-row.is-session {
1149
+ --timeline-row-color: rgba(54, 103, 214, 0.92);
1150
+ }
1151
+ .hierarchy-timeline-row.is-actor {
1152
+ --timeline-row-color: rgba(71, 160, 92, 0.9);
1153
+ }
1154
+ .hierarchy-timeline-row.is-child-actor,
1155
+ .hierarchy-timeline-row.is-stage {
1156
+ --timeline-row-color: rgba(130, 95, 214, 0.9);
1157
+ }
1158
+ .hierarchy-timeline-row.is-guardrail {
1159
+ --timeline-row-color: rgba(219, 150, 58, 0.92);
1160
+ }
1161
+ .hierarchy-timeline-row.is-trace {
1162
+ --timeline-row-color: rgba(61, 108, 225, 0.9);
1163
+ }
1164
+ .hierarchy-timeline-row-time {
1165
+ color: var(--muted-foreground);
1166
+ font-family:
1167
+ ui-monospace,
1168
+ SFMono-Regular,
1169
+ Menlo,
1170
+ Consolas,
1171
+ monospace;
1172
+ font-size: 0.72rem;
1173
+ font-weight: 600;
1174
+ text-align: right;
1175
+ white-space: nowrap;
1176
+ }
1177
+ .hierarchy-timeline-row-labels {
1178
+ position: relative;
1179
+ display: flex;
1180
+ min-width: 0;
1181
+ flex-direction: column;
1182
+ gap: 0.15rem;
1183
+ padding-left: calc(var(--timeline-depth, 0) * 0.95rem);
1184
+ }
1185
+ .hierarchy-timeline-row-labels::before {
1186
+ content: "";
1187
+ position: absolute;
1188
+ left: calc(var(--timeline-depth, 0) * 0.95rem - 0.42rem);
1189
+ top: 0.2rem;
1190
+ bottom: 0.2rem;
1191
+ width: 1px;
1192
+ background: rgba(84, 100, 125, 0.12);
1193
+ }
1194
+ .hierarchy-timeline-row.is-root .hierarchy-timeline-row-labels::before {
1195
+ display: none;
1196
+ }
1197
+ .hierarchy-timeline-row-title {
1198
+ display: flex;
1199
+ align-items: center;
1200
+ gap: 0.45rem;
1201
+ min-width: 0;
1202
+ flex-wrap: wrap;
1203
+ }
1204
+ .hierarchy-timeline-row-title-text {
1205
+ min-width: 0;
1206
+ font-size: 0.92rem;
1207
+ font-weight: 650;
1208
+ letter-spacing: -0.02em;
1209
+ overflow: hidden;
1210
+ text-overflow: ellipsis;
1211
+ white-space: nowrap;
1212
+ }
1213
+ .hierarchy-timeline-row-meta {
1214
+ color: var(--muted-foreground);
1215
+ font-size: 0.78rem;
1216
+ line-height: 1.4;
1217
+ }
1218
+ .hierarchy-timeline-row.is-structure .hierarchy-timeline-row-title-text {
1219
+ font-size: 0.88rem;
1220
+ font-weight: 600;
1221
+ }
1222
+ .hierarchy-timeline-row.is-structure .hierarchy-timeline-row-meta {
1223
+ font-size: 0.74rem;
1224
+ }
1225
+ .hierarchy-timeline-row-bars {
1226
+ display: grid;
1227
+ grid-template-columns: minmax(10rem, 1fr) auto;
1228
+ grid-template-areas: "track duration" "action action";
1229
+ column-gap: 0.65rem;
1230
+ row-gap: 0.45rem;
1231
+ align-items: center;
1232
+ }
1233
+ .hierarchy-timeline-row-track {
1234
+ grid-area: track;
1235
+ position: relative;
1236
+ height: 1rem;
1237
+ }
1238
+ .hierarchy-timeline-row-track::before {
1239
+ content: "";
1240
+ position: absolute;
1241
+ left: 0;
1242
+ right: 0;
1243
+ top: 50%;
1244
+ height: 1px;
1245
+ background: rgba(84, 100, 125, 0.12);
1246
+ transform: translateY(-50%);
1247
+ }
1248
+ .hierarchy-timeline-row-bar {
1249
+ position: absolute;
1250
+ top: 50%;
1251
+ left: calc(var(--timeline-offset, 0) * 100%);
1252
+ width: max(0.5rem, calc(var(--timeline-span, 0.1) * 100%));
1253
+ height: 0.72rem;
1254
+ border-radius: 999px;
1255
+ background: color-mix(in srgb, var(--timeline-row-color) 24%, transparent);
1256
+ border: 1px solid color-mix(in srgb, var(--timeline-row-color) 72%, white);
1257
+ box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.24), 0 1px 2px rgba(32, 50, 76, 0.08);
1258
+ transform: translateY(-50%);
1259
+ }
1260
+ .hierarchy-timeline-row-bar::before,
1261
+ .hierarchy-timeline-row-bar::after {
1262
+ content: "";
1263
+ position: absolute;
1264
+ top: 50%;
1265
+ width: 2px;
1266
+ height: 0.9rem;
1267
+ border-radius: 999px;
1268
+ background: color-mix(in srgb, var(--timeline-row-color) 92%, white);
1269
+ transform: translateY(-50%);
1270
+ }
1271
+ .hierarchy-timeline-row-bar::before {
1272
+ left: -1px;
1273
+ }
1274
+ .hierarchy-timeline-row-bar::after {
1275
+ right: -1px;
1276
+ }
1277
+ .hierarchy-timeline-row-duration {
1278
+ grid-area: duration;
1279
+ color: var(--muted-foreground);
1280
+ font-family:
1281
+ ui-monospace,
1282
+ SFMono-Regular,
1283
+ Menlo,
1284
+ Consolas,
1285
+ monospace;
1286
+ font-size: 0.72rem;
1287
+ font-weight: 600;
1288
+ text-align: right;
1289
+ white-space: nowrap;
1290
+ }
1291
+ .hierarchy-timeline-row-action {
1292
+ grid-area: action;
1293
+ display: flex;
1294
+ align-items: center;
1295
+ justify-content: flex-end;
1296
+ min-width: 0;
1297
+ }
1298
+ .hierarchy-timeline-row-inspect {
1299
+ display: inline-flex;
1300
+ align-items: center;
1301
+ justify-content: center;
1302
+ align-self: flex-end;
1303
+ min-height: 2rem;
1304
+ padding: 0.42rem 0.72rem;
1305
+ border: 1px solid rgba(40, 93, 168, 0.18);
1306
+ border-radius: 999px;
1307
+ border-color: rgba(40, 93, 168, 0.18);
1308
+ background: rgba(40, 93, 168, 0.08);
1309
+ color: var(--primary-strong);
1310
+ font-size: 0.75rem;
1311
+ font-weight: 700;
1312
+ line-height: 1;
1313
+ pointer-events: none;
1314
+ user-select: none;
1315
+ white-space: nowrap;
1316
+ }
1317
+ .hierarchy-timeline-row.is-clickable:hover .hierarchy-timeline-row-inspect {
1318
+ border-color: rgba(40, 93, 168, 0.26);
1319
+ background: rgba(40, 93, 168, 0.12);
1320
+ }
1321
+ .trace-detail-header {
1322
+ display: flex;
1323
+ align-items: flex-start;
1324
+ justify-content: space-between;
1325
+ gap: 1rem;
1326
+ padding: 1rem 1rem 0.95rem;
1327
+ }
1328
+ .trace-detail-heading {
1329
+ display: flex;
1330
+ min-width: 0;
1331
+ flex: 1;
1332
+ flex-direction: column;
1333
+ gap: 0.45rem;
1334
+ }
1335
+ .trace-detail-title-row {
1336
+ display: flex;
1337
+ align-items: flex-start;
1338
+ justify-content: space-between;
1339
+ gap: 1rem;
1340
+ flex-wrap: wrap;
1341
+ }
1342
+ .trace-detail-title-row h2 {
1343
+ margin: 0;
1344
+ font-size: 1.24rem;
1345
+ letter-spacing: -0.02em;
1346
+ }
1347
+ .trace-detail-heading p {
1348
+ margin: 0;
1349
+ color: var(--muted-foreground);
1350
+ line-height: 1.55;
1351
+ }
1352
+ .trace-detail-subtitle {
1353
+ color: var(--muted-foreground);
1354
+ font-size: 0.84rem;
1355
+ }
1356
+ .trace-detail-meta {
1357
+ display: flex;
1358
+ align-items: center;
1359
+ gap: 0.5rem;
1360
+ flex-wrap: wrap;
1361
+ }
1362
+ .trace-metric-pill {
1363
+ display: inline-flex;
1364
+ align-items: center;
1365
+ justify-content: center;
1366
+ border-radius: 999px;
1367
+ border: 1px solid var(--line);
1368
+ background: rgba(243, 247, 251, 0.92);
1369
+ color: var(--foreground);
1370
+ font-size: 0.76rem;
1371
+ font-weight: 700;
1372
+ letter-spacing: 0.02em;
1373
+ line-height: 1;
1374
+ padding: 0.44rem 0.74rem;
1375
+ white-space: nowrap;
1376
+ }
1377
+ .trace-metric-pill.is-latency {
1378
+ border-color: rgba(40, 93, 168, 0.18);
1379
+ background: rgba(40, 93, 168, 0.1);
1380
+ color: var(--primary-strong);
1381
+ }
1382
+ .trace-metric-pill.is-cost {
1383
+ border-color: rgba(47, 125, 98, 0.18);
1384
+ background: rgba(47, 125, 98, 0.1);
1385
+ color: var(--success);
1386
+ }
1387
+ .trace-detail-actions {
1388
+ display: flex;
1389
+ flex: 0 0 auto;
1390
+ align-items: center;
1391
+ }
1392
+ .trace-detail-body {
1393
+ display: flex;
1394
+ min-height: 0;
1395
+ flex: 1;
1396
+ padding: 1rem;
1397
+ }
1398
+ .trace-detail-main {
1399
+ display: grid;
1400
+ flex: 1;
1401
+ min-height: 0;
1402
+ grid-template-columns: minmax(0, 1fr);
1403
+ gap: 1rem;
1404
+ align-items: start;
1405
+ }
1406
+ .trace-detail-main.has-secondary-inspector {
1407
+ grid-template-columns: minmax(0, 2.05fr) minmax(14.5rem, 0.72fr);
1408
+ }
1409
+ .trace-detail-primary,
1410
+ .trace-detail-secondary {
1411
+ min-width: 0;
1412
+ min-height: 0;
1413
+ }
1414
+ .trace-detail-primary {
1415
+ display: flex;
1416
+ min-height: 0;
1417
+ flex-direction: column;
1418
+ gap: 1rem;
1419
+ }
1420
+ .trace-detail-secondary {
1421
+ display: flex;
1422
+ min-height: 0;
1423
+ flex-direction: column;
1424
+ overflow: auto;
1425
+ padding-right: 0.15rem;
1426
+ }
1427
+ .trace-detail-secondary .hierarchy-timeline-panel {
1428
+ margin: 0;
1429
+ padding: 0.82rem 0.84rem 0.9rem;
1430
+ border-radius: 14px;
1431
+ background: rgba(250, 252, 255, 0.9);
1432
+ }
1433
+ .trace-detail-secondary .hierarchy-timeline-axis,
1434
+ .trace-detail-secondary .hierarchy-timeline-row {
1435
+ grid-template-columns: 4.5rem minmax(0, 1fr) minmax(9rem, 12.5rem);
1436
+ gap: 0.6rem;
1437
+ }
1438
+ .trace-detail-secondary .hierarchy-timeline-list {
1439
+ max-height: min(34rem, calc(100dvh - 22rem));
1440
+ }
1441
+ .trace-detail-secondary .hierarchy-timeline-row-bars {
1442
+ grid-template-columns: minmax(8rem, 1fr) auto;
1443
+ gap: 0.55rem;
1444
+ }
1445
+ .trace-detail-secondary .hierarchy-timeline-row-title-text {
1446
+ font-size: 0.88rem;
1447
+ }
1448
+ .trace-detail-secondary .hierarchy-timeline-row-meta {
1449
+ font-size: 0.76rem;
1450
+ }
1451
+ .trace-detail-toolbar {
1452
+ display: flex;
1453
+ align-items: center;
1454
+ justify-content: space-between;
1455
+ gap: 0.65rem;
1456
+ }
1457
+ .trace-detail-scroll {
1458
+ min-height: 0;
1459
+ flex: 1;
1460
+ overflow: auto;
1461
+ padding-right: 0.2rem;
1462
+ }
1463
+ .trace-detail-empty {
1464
+ display: flex;
1465
+ min-height: 0;
1466
+ flex: 1;
1467
+ }
1468
+ .tree-root {
1469
+ display: flex;
1470
+ flex-direction: column;
1471
+ gap: 0.5rem;
1472
+ }
1473
+ .tree-node-wrap {
1474
+ display: flex;
1475
+ flex-direction: column;
1476
+ gap: 0.45rem;
1477
+ width: 100%;
1478
+ padding-left: calc(var(--depth, 0) * 0.75rem);
1479
+ content-visibility: auto;
1480
+ contain-intrinsic-size: 4rem;
1481
+ }
1482
+ .tree-node-card {
1483
+ display: flex;
1484
+ align-items: center;
1485
+ gap: 0.7rem;
1486
+ width: 100%;
1487
+ padding: 0.28rem;
1488
+ border-radius: 12px;
1489
+ border: 1px solid var(--line);
1490
+ background: rgba(255, 255, 255, 0.98);
1491
+ box-shadow: 0 6px 18px rgba(32, 50, 76, 0.05), inset 0 1px 0 rgba(255, 255, 255, 0.72);
1492
+ }
1493
+ .tree-node-card:hover,
1494
+ .tree-node-card.is-active {
1495
+ border-color: var(--line-strong);
1496
+ background: rgba(244, 249, 255, 0.99);
1497
+ box-shadow:
1498
+ inset 4px 0 0 rgba(40, 93, 168, 0.72),
1499
+ 0 8px 20px rgba(32, 50, 76, 0.08),
1500
+ 0 0 0 1px rgba(40, 93, 168, 0.1),
1501
+ inset 0 1px 0 rgba(255, 255, 255, 0.72);
1502
+ }
1503
+ .tree-node-card.is-trace {
1504
+ background: rgba(246, 249, 253, 0.88);
1505
+ box-shadow: 0 4px 12px rgba(32, 50, 76, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.7);
1506
+ }
1507
+ .tree-node-card.is-detail-trace:not(.is-active) {
1508
+ border-color: rgba(40, 93, 168, 0.18);
1509
+ background: rgba(239, 246, 255, 0.9);
1510
+ box-shadow:
1511
+ inset 2px 0 0 rgba(40, 93, 168, 0.54),
1512
+ 0 6px 18px rgba(32, 50, 76, 0.05),
1513
+ inset 0 1px 0 rgba(255, 255, 255, 0.72);
1514
+ }
1515
+ .tree-node-toggle,
1516
+ .tree-node-select {
1517
+ border: 0;
1518
+ background: transparent;
1519
+ color: inherit;
1520
+ }
1521
+ .tree-node-toggle {
1522
+ display: inline-flex;
1523
+ align-items: center;
1524
+ justify-content: center;
1525
+ flex: 0 0 auto;
1526
+ width: 1.8rem;
1527
+ height: 1.8rem;
1528
+ border-radius: 0.65rem;
1529
+ background: rgba(232, 238, 246, 0.9);
1530
+ color: var(--muted-foreground);
1531
+ }
1532
+ .tree-node-toggle svg {
1533
+ width: 0.95rem;
1534
+ height: 0.95rem;
1535
+ transition: transform 160ms ease;
1536
+ }
1537
+ .tree-node-toggle .is-open {
1538
+ transform: rotate(90deg);
1539
+ }
1540
+ .tree-node-toggle.is-static {
1541
+ opacity: 0.5;
1542
+ }
1543
+ .tree-node-toggle:disabled {
1544
+ cursor: default;
1545
+ }
1546
+ .tree-node-select {
1547
+ display: flex;
1548
+ flex: 1;
1549
+ min-width: 0;
1550
+ text-align: left;
1551
+ font: inherit;
1552
+ padding: 0.48rem 0;
1553
+ }
1554
+ .tree-trace-select {
1555
+ align-items: center;
1556
+ justify-content: space-between;
1557
+ gap: 0.85rem;
1558
+ padding: 0.48rem 0.1rem 0.48rem 0;
1559
+ }
1560
+ .tree-node-copy {
1561
+ display: flex;
1562
+ min-width: 0;
1563
+ flex-direction: column;
1564
+ gap: 0.16rem;
1565
+ }
1566
+ .tree-trace-wrap {
1567
+ contain-intrinsic-size: 5.5rem;
1568
+ }
1569
+ .tree-node-label {
1570
+ font-weight: 600;
1571
+ white-space: normal;
1572
+ overflow-wrap: anywhere;
1573
+ }
1574
+ .tree-node-meta {
1575
+ color: var(--muted-foreground);
1576
+ font-size: 0.8rem;
1577
+ }
1578
+ .tree-node-children {
1579
+ display: flex;
1580
+ flex-direction: column;
1581
+ gap: 0.45rem;
1582
+ }
1583
+ .trace-list {
1584
+ display: flex;
1585
+ flex-direction: column;
1586
+ gap: 0.75rem;
1587
+ }
1588
+ .trace-row {
1589
+ display: flex;
1590
+ flex-direction: column;
1591
+ gap: 0.72rem;
1592
+ width: 100%;
1593
+ padding: 0.95rem 1rem;
1594
+ border-radius: 12px;
1595
+ border: 1px solid var(--line);
1596
+ background: rgba(255, 254, 251, 0.98);
1597
+ box-shadow: 0 6px 18px rgba(88, 54, 29, 0.06), inset 0 1px 0 rgba(255, 255, 255, 0.76);
1598
+ color: inherit;
1599
+ text-align: left;
1600
+ }
1601
+ .trace-row:hover,
1602
+ .trace-row.is-active {
1603
+ border-color: var(--line-strong);
1604
+ background: rgba(252, 246, 239, 0.98);
1605
+ box-shadow:
1606
+ inset 3px 0 0 rgba(200, 95, 27, 0.82),
1607
+ 0 10px 26px rgba(88, 54, 29, 0.08),
1608
+ inset 0 1px 0 rgba(255, 255, 255, 0.76);
1609
+ }
1610
+ .trace-row-header,
1611
+ .trace-row-footer {
1612
+ display: flex;
1613
+ align-items: flex-start;
1614
+ justify-content: space-between;
1615
+ gap: 0.8rem;
1616
+ flex-wrap: wrap;
1617
+ }
1618
+ .trace-row-heading {
1619
+ display: flex;
1620
+ min-width: 0;
1621
+ flex-direction: column;
1622
+ gap: 0.15rem;
1623
+ }
1624
+ .trace-row-title {
1625
+ font-weight: 650;
1626
+ letter-spacing: -0.02em;
1627
+ }
1628
+ .trace-row-subtitle,
1629
+ .trace-row-footer {
1630
+ color: var(--muted-foreground);
1631
+ font-size: 0.84rem;
1632
+ }
1633
+ .trace-row-preview {
1634
+ color: rgba(45, 31, 22, 0.9);
1635
+ line-height: 1.45;
1636
+ display: -webkit-box;
1637
+ overflow: hidden;
1638
+ -webkit-line-clamp: 2;
1639
+ -webkit-box-orient: vertical;
1640
+ }
1641
+ .trace-row-chips {
1642
+ display: flex;
1643
+ flex-wrap: wrap;
1644
+ gap: 0.45rem;
1645
+ }
1646
+ .tabs-list {
1647
+ display: flex;
1648
+ flex-wrap: wrap;
1649
+ gap: 0.3rem;
1650
+ padding: 0.2rem;
1651
+ border: 1px solid var(--line);
1652
+ border-radius: 14px;
1653
+ background: rgba(243, 247, 251, 0.92);
1654
+ }
1655
+ .tabs-trigger {
1656
+ border: 1px solid transparent;
1657
+ background: transparent;
1658
+ color: var(--muted-foreground);
1659
+ border-radius: 10px;
1660
+ padding: 0.52rem 0.82rem;
1661
+ font-weight: 650;
1662
+ opacity: 0.88;
1663
+ transition:
1664
+ background 160ms ease,
1665
+ border-color 160ms ease,
1666
+ box-shadow 160ms ease,
1667
+ color 160ms ease;
1668
+ }
1669
+ .tabs-trigger:hover {
1670
+ background: rgba(40, 93, 168, 0.05);
1671
+ color: var(--foreground);
1672
+ opacity: 1;
1673
+ }
1674
+ .tabs-root[data-value=conversation] .tabs-trigger[data-tab-value=conversation],
1675
+ .tabs-root[data-value=request] .tabs-trigger[data-tab-value=request],
1676
+ .tabs-root[data-value=response] .tabs-trigger[data-tab-value=response],
1677
+ .tabs-root[data-value=context] .tabs-trigger[data-tab-value=context],
1678
+ .tabs-root[data-value=stream] .tabs-trigger[data-tab-value=stream] {
1679
+ background: rgba(255, 255, 255, 0.98);
1680
+ border-color: rgba(40, 93, 168, 0.18);
1681
+ box-shadow: inset 0 -3px 0 rgba(40, 93, 168, 0.84), 0 6px 14px rgba(30, 48, 72, 0.06);
1682
+ color: var(--primary-strong);
1683
+ opacity: 1;
1684
+ }
1685
+ .ui-separator {
1686
+ width: 100%;
1687
+ height: 1px;
1688
+ background: var(--line);
1689
+ }
1690
+ .detail-grid {
1691
+ display: grid;
1692
+ gap: 0.9rem;
1693
+ min-height: 0;
1694
+ }
1695
+ .sheet-root {
1696
+ position: fixed;
1697
+ inset: 0;
1698
+ pointer-events: none;
1699
+ z-index: 50;
1700
+ }
1701
+ .sheet-root.is-open {
1702
+ pointer-events: auto;
1703
+ }
1704
+ .sheet-overlay {
1705
+ position: absolute;
1706
+ inset: 0;
1707
+ border: 0;
1708
+ background: rgba(77, 42, 17, 0.2);
1709
+ opacity: 0;
1710
+ transition: opacity 180ms ease;
1711
+ }
1712
+ .sheet-root.is-open .sheet-overlay {
1713
+ opacity: 1;
1714
+ }
1715
+ .sheet-panel {
1716
+ position: absolute;
1717
+ top: 0;
1718
+ right: 0;
1719
+ display: flex;
1720
+ width: min(56rem, 92vw);
1721
+ height: 100%;
1722
+ flex-direction: column;
1723
+ border-left: 1px solid rgba(114, 76, 47, 0.14);
1724
+ background: rgba(253, 248, 240, 0.97);
1725
+ box-shadow: -24px 0 70px rgba(91, 54, 27, 0.16);
1726
+ transform: translateX(100%);
1727
+ transition: transform 220ms ease;
1728
+ backdrop-filter: blur(14px);
1729
+ }
1730
+ .sheet-root.is-open .sheet-panel {
1731
+ transform: translateX(0);
1732
+ }
1733
+ .sheet-header {
1734
+ display: flex;
1735
+ align-items: flex-start;
1736
+ justify-content: space-between;
1737
+ gap: 1rem;
1738
+ padding: 1.1rem 1.15rem 0.9rem;
1739
+ border-bottom: 1px solid var(--line);
1740
+ }
1741
+ .sheet-header-copy {
1742
+ display: flex;
1743
+ flex-direction: column;
1744
+ gap: 0.65rem;
1745
+ }
1746
+ .sheet-header-copy h2 {
1747
+ margin: 0;
1748
+ font-size: 1.2rem;
1749
+ letter-spacing: -0.02em;
1750
+ }
1751
+ .sheet-header-copy p {
1752
+ margin: 0.2rem 0 0;
1753
+ color: var(--muted-foreground);
1754
+ }
1755
+ .sheet-meta {
1756
+ display: flex;
1757
+ flex-wrap: wrap;
1758
+ gap: 0.5rem;
1759
+ }
1760
+ .sheet-subtitle {
1761
+ color: var(--muted-foreground);
1762
+ font-size: 0.84rem;
1763
+ }
1764
+ .sheet-header-actions {
1765
+ display: flex;
1766
+ align-items: center;
1767
+ gap: 0.75rem;
1768
+ }
1769
+ .sheet-close {
1770
+ display: inline-flex;
1771
+ align-items: center;
1772
+ justify-content: center;
1773
+ width: 2.75rem;
1774
+ height: 2.75rem;
1775
+ border-radius: 10px;
1776
+ border: 1px solid var(--line);
1777
+ background: rgba(255, 251, 245, 0.88);
1778
+ color: var(--foreground);
1779
+ }
1780
+ .sheet-body {
1781
+ display: flex;
1782
+ min-height: 0;
1783
+ flex: 1;
1784
+ flex-direction: column;
1785
+ gap: 1rem;
1786
+ padding: 1rem 1.15rem 1.15rem;
1787
+ }
1788
+ .sheet-toolbar {
1789
+ display: flex;
1790
+ align-items: center;
1791
+ justify-content: space-between;
1792
+ gap: 0.85rem;
1793
+ }
1794
+ .sheet-scroll {
1795
+ min-height: 0;
1796
+ flex: 1;
1797
+ overflow: auto;
1798
+ padding-right: 0.2rem;
1799
+ }
1800
+ .conversation-layout {
1801
+ display: flex;
1802
+ flex-direction: column;
1803
+ gap: 1rem;
1804
+ }
1805
+ .conversation-meta {
1806
+ display: flex;
1807
+ flex-wrap: wrap;
1808
+ gap: 0.7rem;
1809
+ }
1810
+ .conversation-meta-primary,
1811
+ .conversation-meta-secondary {
1812
+ display: flex;
1813
+ flex-wrap: wrap;
1814
+ gap: 0.55rem;
1815
+ }
1816
+ .conversation-thread {
1817
+ display: flex;
1818
+ flex-direction: column;
1819
+ gap: 0;
1820
+ }
1821
+ .conversation-thread > * + * {
1822
+ margin-top: 0.95rem;
1823
+ padding-top: 0.95rem;
1824
+ border-top: 1px solid rgba(88, 105, 130, 0.12);
1825
+ }
1826
+ .conversation-row {
1827
+ display: flex;
1828
+ flex-direction: column;
1829
+ gap: 0.45rem;
1830
+ max-width: min(52rem, 100%);
1831
+ }
1832
+ .conversation-row.is-user {
1833
+ align-self: flex-end;
1834
+ }
1835
+ .conversation-row.is-assistant,
1836
+ .conversation-row.is-system,
1837
+ .conversation-row.is-tool,
1838
+ .conversation-row.is-tool-call {
1839
+ align-self: flex-start;
1840
+ }
1841
+ .conversation-role {
1842
+ color: var(--muted-foreground);
1843
+ font-size: 0.74rem;
1844
+ font-weight: 700;
1845
+ letter-spacing: 0.06em;
1846
+ text-transform: uppercase;
1847
+ }
1848
+ .conversation-bubble {
1849
+ --expandable-fade-color: rgba(255, 255, 255, 0.96);
1850
+ border: 1px solid var(--line);
1851
+ border-radius: 14px;
1852
+ background: rgba(255, 255, 255, 0.9);
1853
+ padding: 0.9rem 1rem;
1854
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72);
1855
+ }
1856
+ .conversation-row.is-user .conversation-bubble {
1857
+ --expandable-fade-color: rgba(224, 236, 248, 0.96);
1858
+ background: rgba(224, 236, 248, 0.88);
1859
+ }
1860
+ .conversation-row.is-assistant .conversation-bubble {
1861
+ --expandable-fade-color: rgba(255, 255, 255, 0.98);
1862
+ background: rgba(255, 255, 255, 0.96);
1863
+ }
1864
+ .conversation-row.is-system .conversation-role {
1865
+ color: var(--primary);
1866
+ }
1867
+ .conversation-row.is-system .conversation-bubble {
1868
+ --expandable-fade-color: rgba(235, 242, 250, 0.98);
1869
+ border-color: rgba(40, 93, 168, 0.16);
1870
+ background: rgba(235, 242, 250, 0.94);
1871
+ box-shadow: inset 3px 0 0 rgba(40, 93, 168, 0.4);
1872
+ }
1873
+ .tool-result-bubble {
1874
+ --expandable-fade-color: rgba(245, 248, 251, 0.98);
1875
+ display: flex;
1876
+ flex-direction: column;
1877
+ gap: 0.8rem;
1878
+ background: rgba(245, 248, 251, 0.94);
1879
+ }
1880
+ .tool-call-bubble {
1881
+ display: flex;
1882
+ flex-direction: column;
1883
+ gap: 0.8rem;
1884
+ background: rgba(237, 243, 249, 0.96);
1885
+ }
1886
+ .tool-result-meta {
1887
+ display: flex;
1888
+ flex-wrap: wrap;
1889
+ gap: 0.55rem;
1890
+ }
1891
+ .tool-result-content pre {
1892
+ margin: 0;
1893
+ white-space: pre-wrap;
1894
+ line-height: 1.6;
1895
+ }
1896
+ .expandable-content {
1897
+ display: flex;
1898
+ min-width: 0;
1899
+ flex-direction: column;
1900
+ gap: 0.55rem;
1901
+ }
1902
+ .expandable-content-frame {
1903
+ position: relative;
1904
+ min-width: 0;
1905
+ }
1906
+ .expandable-content-frame.is-collapsed {
1907
+ max-height: var(--collapsed-height, 16rem);
1908
+ overflow: hidden;
1909
+ }
1910
+ .expandable-content-fade {
1911
+ position: absolute;
1912
+ right: 0;
1913
+ bottom: 0;
1914
+ left: 0;
1915
+ height: 4.5rem;
1916
+ background:
1917
+ linear-gradient(
1918
+ 180deg,
1919
+ rgba(255, 255, 255, 0),
1920
+ var(--expandable-fade-color));
1921
+ pointer-events: none;
1922
+ }
1923
+ .expandable-toggle {
1924
+ align-self: flex-start;
1925
+ border: 0;
1926
+ border-radius: 8px;
1927
+ background: transparent;
1928
+ color: var(--primary-strong);
1929
+ cursor: pointer;
1930
+ font-size: 0.82rem;
1931
+ font-weight: 650;
1932
+ line-height: 1;
1933
+ padding: 0;
1934
+ }
1935
+ .expandable-toggle:hover {
1936
+ text-decoration: underline;
1937
+ text-underline-offset: 0.18em;
1938
+ }
1939
+ .conversation-bubble p {
1940
+ margin: 0;
1941
+ line-height: 1.6;
1942
+ white-space: pre-wrap;
1943
+ }
1944
+ .markdown-body {
1945
+ color: inherit;
1946
+ }
1947
+ .markdown-body > :first-child {
1948
+ margin-top: 0;
1949
+ }
1950
+ .markdown-body > :last-child {
1951
+ margin-bottom: 0;
1952
+ }
1953
+ .markdown-body p,
1954
+ .markdown-body ul,
1955
+ .markdown-body ol,
1956
+ .markdown-body pre,
1957
+ .markdown-body blockquote,
1958
+ .markdown-body table {
1959
+ margin: 0 0 0.9rem;
1960
+ }
1961
+ .markdown-body ul,
1962
+ .markdown-body ol {
1963
+ padding-left: 1.3rem;
1964
+ }
1965
+ .markdown-body li + li {
1966
+ margin-top: 0.3rem;
1967
+ }
1968
+ .markdown-body a {
1969
+ color: var(--primary);
1970
+ text-decoration: underline;
1971
+ text-underline-offset: 0.16em;
1972
+ }
1973
+ .markdown-body code {
1974
+ padding: 0.1rem 0.32rem;
1975
+ border-radius: 6px;
1976
+ background: rgba(91, 123, 168, 0.12);
1977
+ font-size: 0.92em;
1978
+ }
1979
+ .markdown-body pre {
1980
+ overflow: auto;
1981
+ padding: 0.9rem 1rem;
1982
+ border-radius: 10px;
1983
+ border: 1px solid rgba(88, 105, 130, 0.14);
1984
+ background: rgba(243, 247, 251, 0.96);
1985
+ }
1986
+ .markdown-body pre code {
1987
+ padding: 0;
1988
+ background: transparent;
1989
+ }
1990
+ .markdown-body blockquote {
1991
+ padding-left: 0.9rem;
1992
+ border-left: 2px solid rgba(40, 93, 168, 0.24);
1993
+ color: var(--muted-foreground);
1994
+ }
1995
+ .tool-call-header {
1996
+ display: flex;
1997
+ align-items: center;
1998
+ justify-content: flex-start;
1999
+ flex-wrap: wrap;
2000
+ gap: 0.75rem;
2001
+ }
2002
+ .tool-call-body {
2003
+ display: flex;
2004
+ flex-direction: column;
2005
+ gap: 0.8rem;
2006
+ }
2007
+ .tool-call-section {
2008
+ display: flex;
2009
+ flex-direction: column;
2010
+ gap: 0.4rem;
2011
+ }
2012
+ .tool-call-label {
2013
+ color: var(--muted-foreground);
2014
+ font-size: 0.74rem;
2015
+ font-weight: 700;
2016
+ letter-spacing: 0.06em;
2017
+ text-transform: uppercase;
2018
+ }
2019
+ .detail-section {
2020
+ background: rgba(250, 252, 255, 0.86);
2021
+ }
2022
+ .metadata-card-content {
2023
+ display: flex;
2024
+ flex-direction: column;
2025
+ gap: 1rem;
2026
+ }
2027
+ .metadata-grid {
2028
+ display: grid;
2029
+ grid-template-columns: minmax(8rem, 10rem) minmax(0, 1fr);
2030
+ gap: 0.7rem 0.9rem;
2031
+ margin: 0;
2032
+ }
2033
+ .metadata-grid dt {
2034
+ color: var(--muted-foreground);
2035
+ font-size: 0.82rem;
2036
+ padding-top: 0.18rem;
2037
+ }
2038
+ .metadata-grid dd {
2039
+ margin: 0;
2040
+ }
2041
+ .metadata-value-shell {
2042
+ display: flex;
2043
+ align-items: flex-start;
2044
+ justify-content: space-between;
2045
+ gap: 0.75rem;
2046
+ }
2047
+ .metadata-value-copy {
2048
+ display: flex;
2049
+ min-width: 0;
2050
+ flex: 1;
2051
+ flex-direction: column;
2052
+ gap: 0.2rem;
2053
+ }
2054
+ .metadata-value {
2055
+ color: var(--foreground);
2056
+ font-weight: 600;
2057
+ overflow-wrap: anywhere;
2058
+ }
2059
+ .metadata-value.is-monospace {
2060
+ font-family:
2061
+ "SFMono-Regular",
2062
+ ui-monospace,
2063
+ "Cascadia Code",
2064
+ "Source Code Pro",
2065
+ Menlo,
2066
+ monospace;
2067
+ font-size: 0.84rem;
2068
+ }
2069
+ .metadata-secondary {
2070
+ color: var(--muted-foreground);
2071
+ font-size: 0.76rem;
2072
+ line-height: 1.45;
2073
+ }
2074
+ .metadata-actions {
2075
+ display: flex;
2076
+ flex: 0 0 auto;
2077
+ gap: 0.35rem;
2078
+ }
2079
+ .metadata-action-button {
2080
+ display: inline-flex;
2081
+ align-items: center;
2082
+ justify-content: center;
2083
+ width: 1.95rem;
2084
+ height: 1.95rem;
2085
+ border: 1px solid var(--line);
2086
+ border-radius: 9px;
2087
+ background: rgba(255, 255, 255, 0.86);
2088
+ color: var(--muted-foreground);
2089
+ transition:
2090
+ border-color 160ms ease,
2091
+ background 160ms ease,
2092
+ color 160ms ease;
2093
+ }
2094
+ .metadata-action-button:hover {
2095
+ border-color: rgba(40, 93, 168, 0.22);
2096
+ background: rgba(40, 93, 168, 0.08);
2097
+ color: var(--primary);
2098
+ }
2099
+ .metadata-action-button svg {
2100
+ width: 0.9rem;
2101
+ height: 0.9rem;
2102
+ }
2103
+ .timing-overview {
2104
+ display: flex;
2105
+ flex-direction: column;
2106
+ gap: 0.55rem;
2107
+ }
2108
+ .timing-bar {
2109
+ position: relative;
2110
+ height: 0.55rem;
2111
+ border-radius: 999px;
2112
+ background: rgba(40, 93, 168, 0.08);
2113
+ overflow: hidden;
2114
+ }
2115
+ .timing-bar-fill {
2116
+ position: absolute;
2117
+ inset: 0;
2118
+ border-radius: inherit;
2119
+ background:
2120
+ linear-gradient(
2121
+ 90deg,
2122
+ rgba(40, 93, 168, 0.35),
2123
+ rgba(47, 125, 98, 0.45));
2124
+ }
2125
+ .timing-marker {
2126
+ position: absolute;
2127
+ top: 50%;
2128
+ width: 0.7rem;
2129
+ height: 0.7rem;
2130
+ border: 2px solid rgba(255, 255, 255, 0.96);
2131
+ border-radius: 999px;
2132
+ background: var(--primary);
2133
+ box-shadow: 0 2px 6px rgba(30, 48, 72, 0.18);
2134
+ transform: translate(-50%, -50%);
2135
+ }
2136
+ .timing-legend {
2137
+ display: flex;
2138
+ justify-content: space-between;
2139
+ gap: 0.8rem;
2140
+ flex-wrap: wrap;
2141
+ color: var(--muted-foreground);
2142
+ font-size: 0.76rem;
2143
+ }
2144
+ .tag-chip-list {
2145
+ display: flex;
2146
+ flex-wrap: wrap;
2147
+ gap: 0.7rem;
2148
+ }
2149
+ .tag-chip {
2150
+ display: flex;
2151
+ align-items: center;
2152
+ gap: 0.55rem;
2153
+ max-width: 100%;
2154
+ border: 1px solid var(--line);
2155
+ border-radius: 999px;
2156
+ background: rgba(255, 255, 255, 0.92);
2157
+ padding: 0.38rem 0.42rem 0.38rem 0.72rem;
2158
+ }
2159
+ .tag-chip-copy {
2160
+ display: flex;
2161
+ min-width: 0;
2162
+ align-items: center;
2163
+ gap: 0.45rem;
2164
+ }
2165
+ .tag-chip-key {
2166
+ color: var(--primary);
2167
+ font-size: 0.72rem;
2168
+ font-weight: 700;
2169
+ letter-spacing: 0.06em;
2170
+ text-transform: uppercase;
2171
+ }
2172
+ .tag-chip-value {
2173
+ min-width: 0;
2174
+ color: var(--foreground);
2175
+ font-family:
2176
+ "SFMono-Regular",
2177
+ ui-monospace,
2178
+ "Cascadia Code",
2179
+ "Source Code Pro",
2180
+ Menlo,
2181
+ monospace;
2182
+ font-size: 0.82rem;
2183
+ }
2184
+ .tag-chip-actions {
2185
+ display: flex;
2186
+ gap: 0.3rem;
2187
+ }
2188
+ .kv-grid {
2189
+ display: grid;
2190
+ grid-template-columns: minmax(8rem, 11rem) 1fr;
2191
+ gap: 0.55rem 0.85rem;
2192
+ margin: 0;
2193
+ }
2194
+ .kv-grid dt {
2195
+ color: var(--muted-foreground);
2196
+ }
2197
+ .kv-grid dd {
2198
+ margin: 0;
2199
+ word-break: break-word;
2200
+ }
2201
+ .message-stack {
2202
+ display: flex;
2203
+ flex-direction: column;
2204
+ gap: 0.8rem;
2205
+ }
2206
+ .message-card {
2207
+ --expandable-fade-color: rgba(255, 255, 255, 0.98);
2208
+ display: flex;
2209
+ flex-direction: column;
2210
+ gap: 0.75rem;
2211
+ padding: 0.9rem;
2212
+ border-radius: 12px;
2213
+ background: rgba(255, 255, 255, 0.92);
2214
+ border: 1px solid rgba(88, 105, 130, 0.08);
2215
+ }
2216
+ .message-card-header {
2217
+ display: flex;
2218
+ align-items: flex-start;
2219
+ justify-content: space-between;
2220
+ gap: 0.65rem;
2221
+ flex-wrap: wrap;
2222
+ }
2223
+ .message-card-header-meta {
2224
+ display: flex;
2225
+ flex-wrap: wrap;
2226
+ gap: 0.45rem;
2227
+ }
2228
+ .message-card-body {
2229
+ color: var(--foreground);
2230
+ display: flex;
2231
+ flex-direction: column;
2232
+ gap: 0.75rem;
2233
+ }
2234
+ .message-card-hint {
2235
+ color: var(--muted-foreground);
2236
+ font-size: 0.84rem;
2237
+ font-weight: 600;
2238
+ }
2239
+ .message-card.role-system {
2240
+ --expandable-fade-color: rgba(236, 242, 250, 0.98);
2241
+ border-color: rgba(40, 93, 168, 0.14);
2242
+ background: rgba(236, 242, 250, 0.94);
2243
+ }
2244
+ .message-card.role-assistant {
2245
+ --expandable-fade-color: rgba(255, 255, 255, 0.98);
2246
+ background: rgba(255, 255, 255, 0.96);
2247
+ }
2248
+ .message-card.role-user {
2249
+ --expandable-fade-color: rgba(227, 237, 248, 0.96);
2250
+ background: rgba(227, 237, 248, 0.82);
2251
+ }
2252
+ .message-card.role-tool {
2253
+ --expandable-fade-color: rgba(243, 247, 251, 0.98);
2254
+ background: rgba(243, 247, 251, 0.94);
2255
+ }
2256
+ .tool-call-stack {
2257
+ display: flex;
2258
+ flex-direction: column;
2259
+ gap: 0.7rem;
2260
+ }
2261
+ .tool-call-stack.is-compact {
2262
+ gap: 0.55rem;
2263
+ }
2264
+ .tool-call-stack-item {
2265
+ display: flex;
2266
+ flex-direction: column;
2267
+ gap: 0.75rem;
2268
+ padding: 0.8rem;
2269
+ border-radius: 12px;
2270
+ border: 1px solid rgba(88, 105, 130, 0.12);
2271
+ background: rgba(243, 247, 251, 0.92);
2272
+ }
2273
+ .stream-card-content {
2274
+ display: flex;
2275
+ flex-direction: column;
2276
+ gap: 0.95rem;
2277
+ }
2278
+ .stream-density-chart {
2279
+ display: grid;
2280
+ grid-template-columns: repeat(auto-fit, minmax(0.22rem, 1fr));
2281
+ align-items: end;
2282
+ gap: 0.2rem;
2283
+ min-height: 6.75rem;
2284
+ border: 1px solid rgba(88, 105, 130, 0.12);
2285
+ border-radius: 12px;
2286
+ background:
2287
+ linear-gradient(
2288
+ 180deg,
2289
+ rgba(244, 248, 252, 0.96),
2290
+ rgba(235, 241, 247, 0.94));
2291
+ padding: 0.85rem 0.85rem 0.7rem;
2292
+ }
2293
+ .stream-density-bar {
2294
+ display: block;
2295
+ width: 100%;
2296
+ min-height: 0.6rem;
2297
+ height: var(--height);
2298
+ border-radius: 999px 999px 0.28rem 0.28rem;
2299
+ background:
2300
+ linear-gradient(
2301
+ 180deg,
2302
+ rgba(40, 93, 168, 0.94),
2303
+ rgba(47, 125, 98, 0.55));
2304
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4);
2305
+ }
2306
+ .stream-density-legend {
2307
+ display: flex;
2308
+ flex-wrap: wrap;
2309
+ gap: 0.7rem 1rem;
2310
+ color: var(--muted-foreground);
2311
+ font-size: 0.78rem;
2312
+ }
2313
+ .stream-segment-list {
2314
+ display: flex;
2315
+ flex-direction: column;
2316
+ gap: 0.65rem;
2317
+ max-height: 20rem;
2318
+ overflow: auto;
2319
+ padding-right: 0.2rem;
2320
+ }
2321
+ .stream-segment {
2322
+ display: grid;
2323
+ grid-template-columns: auto minmax(0, 1fr);
2324
+ gap: 0.75rem;
2325
+ align-items: start;
2326
+ padding: 0.78rem 0.85rem;
2327
+ border: 1px solid rgba(88, 105, 130, 0.12);
2328
+ border-radius: 12px;
2329
+ background: rgba(255, 255, 255, 0.94);
2330
+ }
2331
+ .stream-segment-time {
2332
+ display: inline-flex;
2333
+ align-items: center;
2334
+ justify-content: center;
2335
+ border-radius: 999px;
2336
+ border: 1px solid rgba(40, 93, 168, 0.18);
2337
+ background: rgba(40, 93, 168, 0.08);
2338
+ color: var(--primary-strong);
2339
+ font-family:
2340
+ "SFMono-Regular",
2341
+ ui-monospace,
2342
+ "Cascadia Code",
2343
+ "Source Code Pro",
2344
+ Menlo,
2345
+ monospace;
2346
+ font-size: 0.76rem;
2347
+ font-weight: 700;
2348
+ padding: 0.24rem 0.6rem;
2349
+ white-space: nowrap;
2350
+ }
2351
+ .stream-segment-copy {
2352
+ min-width: 0;
2353
+ line-height: 1.6;
2354
+ white-space: pre-wrap;
2355
+ overflow-wrap: anywhere;
2356
+ }
2357
+ .json-frame {
2358
+ border: 1px solid rgba(88, 105, 130, 0.14);
2359
+ border-radius: 12px;
2360
+ background: rgba(243, 247, 251, 0.96);
2361
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78);
2362
+ overflow: auto;
2363
+ }
2364
+ .json-syntax {
2365
+ margin: 0;
2366
+ overflow: visible;
2367
+ color: #304155;
2368
+ font-size: 0.84rem;
2369
+ line-height: 1.6;
2370
+ padding: 0.9rem 1rem;
2371
+ }
2372
+ .conversation-bubble .json-frame,
2373
+ .tool-result-content .json-frame,
2374
+ .tool-call-section .json-frame {
2375
+ background: rgba(250, 252, 255, 0.98);
2376
+ }
2377
+ .json-token-key {
2378
+ color: #245aa5;
2379
+ }
2380
+ .json-token-string {
2381
+ color: #4f6277;
2382
+ }
2383
+ .json-token-number {
2384
+ color: #7b4bb5;
2385
+ }
2386
+ .json-token-boolean {
2387
+ color: #2f7d62;
2388
+ }
2389
+ .json-token-null {
2390
+ color: #b5525d;
2391
+ }
2392
+ .muted-copy {
2393
+ color: var(--muted-foreground);
2394
+ }
2395
+ .empty-state {
2396
+ display: flex;
2397
+ flex: 1;
2398
+ min-height: 14rem;
2399
+ align-items: center;
2400
+ justify-content: center;
2401
+ flex-direction: column;
2402
+ gap: 0.7rem;
2403
+ text-align: center;
2404
+ color: var(--muted-foreground);
2405
+ }
2406
+ .empty-state-icon {
2407
+ display: grid;
2408
+ place-items: center;
2409
+ width: 3.5rem;
2410
+ height: 3.5rem;
2411
+ border-radius: 1rem;
2412
+ background: rgba(245, 229, 206, 0.76);
2413
+ border: 1px solid rgba(181, 126, 79, 0.12);
2414
+ }
2415
+ .empty-state-icon svg {
2416
+ width: 1.3rem;
2417
+ height: 1.3rem;
2418
+ }
2419
+ .empty-state-title {
2420
+ color: var(--foreground);
2421
+ font-weight: 650;
2422
+ }
2423
+ .empty-state-description {
2424
+ max-width: 24rem;
2425
+ line-height: 1.6;
2426
+ }
2427
+ :root[data-theme=dark] .background-glow {
2428
+ opacity: 0.06;
2429
+ }
2430
+ :root[data-theme=dark] .glow-teal {
2431
+ background: rgba(134, 184, 255, 0.14);
2432
+ }
2433
+ :root[data-theme=dark] .glow-coral {
2434
+ background: rgba(255, 255, 255, 0.06);
2435
+ }
2436
+ :root[data-theme=dark] .grid-noise {
2437
+ background-image:
2438
+ linear-gradient(rgba(255, 255, 255, 0.04) 1px, transparent 1px),
2439
+ linear-gradient(
2440
+ 90deg,
2441
+ rgba(255, 255, 255, 0.04) 1px,
2442
+ transparent 1px);
2443
+ }
2444
+ :root[data-theme=dark] .board-shell {
2445
+ border-color: rgba(128, 153, 189, 0.16);
2446
+ background:
2447
+ linear-gradient(
2448
+ 180deg,
2449
+ rgba(18, 27, 40, 0.98),
2450
+ rgba(11, 18, 29, 0.96)),
2451
+ linear-gradient(
2452
+ 135deg,
2453
+ rgba(255, 255, 255, 0.04),
2454
+ transparent);
2455
+ box-shadow: 0 28px 90px rgba(1, 7, 18, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.05);
2456
+ }
2457
+ :root[data-theme=dark] .brand-logo {
2458
+ border-color: rgba(128, 153, 189, 0.16);
2459
+ background:
2460
+ linear-gradient(
2461
+ 180deg,
2462
+ rgba(27, 39, 56, 0.94),
2463
+ rgba(16, 24, 36, 0.92)),
2464
+ linear-gradient(
2465
+ 135deg,
2466
+ rgba(134, 184, 255, 0.1),
2467
+ transparent);
2468
+ box-shadow: 0 14px 28px rgba(1, 7, 18, 0.24), inset 0 1px 0 rgba(255, 255, 255, 0.06);
2469
+ }
2470
+ :root[data-theme=dark] .brand-logo-svg,
2471
+ :root[data-theme=dark] .brand-wordmark {
2472
+ color: #f3f7ff;
2473
+ }
2474
+ :root[data-theme=dark] .inspector-status,
2475
+ :root[data-theme=dark] .toolbar-card,
2476
+ :root[data-theme=dark] .ui-card,
2477
+ :root[data-theme=dark] .inspector-card,
2478
+ :root[data-theme=dark] .detail-section {
2479
+ background: rgba(18, 27, 40, 0.78);
2480
+ }
2481
+ :root[data-theme=dark] .inspector-status {
2482
+ background: rgba(14, 21, 32, 0.78);
2483
+ }
2484
+ :root[data-theme=dark] .inspector-chip {
2485
+ background: rgba(134, 184, 255, 0.12);
2486
+ color: var(--primary-strong);
2487
+ }
2488
+ :root[data-theme=dark] .ui-button-outline,
2489
+ :root[data-theme=dark] .filter-input-shell,
2490
+ :root[data-theme=dark] .ui-select,
2491
+ :root[data-theme=dark] .nav-switch,
2492
+ :root[data-theme=dark] .theme-switch,
2493
+ :root[data-theme=dark] .metadata-action-button,
2494
+ :root[data-theme=dark] .sheet-close {
2495
+ border-color: var(--line);
2496
+ background: rgba(20, 29, 43, 0.92);
2497
+ color: var(--foreground);
2498
+ }
2499
+ :root[data-theme=dark] .ui-input::placeholder {
2500
+ color: rgba(149, 168, 193, 0.82);
2501
+ }
2502
+ :root[data-theme=dark] .ui-button:focus-visible,
2503
+ :root[data-theme=dark] .sheet-close:focus-visible,
2504
+ :root[data-theme=dark] .nav-item:focus-visible,
2505
+ :root[data-theme=dark] .nav-switch-button:focus-visible,
2506
+ :root[data-theme=dark] .theme-switch-button:focus-visible,
2507
+ :root[data-theme=dark] .expandable-toggle:focus-visible,
2508
+ :root[data-theme=dark] .tree-node-toggle:focus-visible,
2509
+ :root[data-theme=dark] .tree-node-select:focus-visible,
2510
+ :root[data-theme=dark] .trace-row:focus-visible,
2511
+ :root[data-theme=dark] .tabs-trigger:focus-visible,
2512
+ :root[data-theme=dark] .ui-input:focus-visible,
2513
+ :root[data-theme=dark] .ui-select:focus-visible {
2514
+ outline-color: rgba(134, 184, 255, 0.5);
2515
+ }
2516
+ :root[data-theme=dark] .clear-traces-button.is-confirming {
2517
+ border-color: rgba(239, 135, 152, 0.3);
2518
+ background: rgba(239, 135, 152, 0.12);
2519
+ }
2520
+ :root[data-theme=dark] .nav-switch-button.is-active {
2521
+ background: rgba(31, 45, 66, 0.98);
2522
+ color: var(--primary-strong);
2523
+ box-shadow: inset 0 -2px 0 rgba(134, 184, 255, 0.82), inset 0 0 0 1px rgba(134, 184, 255, 0.16);
2524
+ }
2525
+ :root[data-theme=dark] .theme-switch-button.is-active {
2526
+ background: rgba(31, 45, 66, 0.98);
2527
+ color: var(--primary-strong);
2528
+ box-shadow: inset 0 0 0 1px rgba(134, 184, 255, 0.2), 0 1px 2px rgba(1, 7, 18, 0.24);
2529
+ }
2530
+ :root[data-theme=dark] .trace-group-button,
2531
+ :root[data-theme=dark] .nav-item,
2532
+ :root[data-theme=dark] .tree-node-card,
2533
+ :root[data-theme=dark] .trace-row,
2534
+ :root[data-theme=dark] .tag-chip,
2535
+ :root[data-theme=dark] .message-card,
2536
+ :root[data-theme=dark] .tool-call-stack-item,
2537
+ :root[data-theme=dark] .stream-segment,
2538
+ :root[data-theme=dark] .conversation-bubble {
2539
+ border-color: rgba(128, 153, 189, 0.16);
2540
+ background: rgba(21, 31, 46, 0.94);
2541
+ box-shadow: 0 10px 24px rgba(2, 10, 24, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.04);
2542
+ }
2543
+ :root[data-theme=dark] .nav-list > .nav-item:nth-child(even),
2544
+ :root[data-theme=dark] .tree-node-card.is-trace,
2545
+ :root[data-theme=dark] .message-card.role-tool {
2546
+ --expandable-fade-color: rgba(18, 27, 40, 0.99);
2547
+ background: rgba(18, 27, 40, 0.96);
2548
+ }
2549
+ :root[data-theme=dark] .tree-node-card.is-detail-trace:not(.is-active) {
2550
+ border-color: rgba(134, 184, 255, 0.18);
2551
+ background: rgba(24, 35, 52, 0.98);
2552
+ box-shadow:
2553
+ inset 2px 0 0 rgba(134, 184, 255, 0.62),
2554
+ 0 10px 24px rgba(2, 10, 24, 0.18),
2555
+ inset 0 1px 0 rgba(255, 255, 255, 0.05);
2556
+ }
2557
+ :root[data-theme=dark] .trace-group.has-active-trace .trace-group-button,
2558
+ :root[data-theme=dark] .trace-group-button:hover,
2559
+ :root[data-theme=dark] .nav-item:hover,
2560
+ :root[data-theme=dark] .nav-item.is-active,
2561
+ :root[data-theme=dark] .tree-node-card:hover,
2562
+ :root[data-theme=dark] .tree-node-card.is-active,
2563
+ :root[data-theme=dark] .trace-row:hover,
2564
+ :root[data-theme=dark] .trace-row.is-active {
2565
+ border-color: var(--line-strong);
2566
+ background: rgba(29, 43, 64, 0.99);
2567
+ box-shadow:
2568
+ inset 4px 0 0 rgba(134, 184, 255, 0.82),
2569
+ 0 14px 32px rgba(2, 10, 24, 0.26),
2570
+ 0 0 0 1px rgba(134, 184, 255, 0.12),
2571
+ inset 0 1px 0 rgba(255, 255, 255, 0.05);
2572
+ }
2573
+ :root[data-theme=dark] .trace-row-preview {
2574
+ color: rgba(230, 238, 249, 0.84);
2575
+ }
2576
+ :root[data-theme=dark] .trace-group-body,
2577
+ :root[data-theme=dark] .conversation-thread > * + * {
2578
+ border-color: rgba(128, 153, 189, 0.12);
2579
+ }
2580
+ :root[data-theme=dark] .trace-nav-meta-row span:first-child,
2581
+ :root[data-theme=dark] .trace-elapsed-label {
2582
+ color: rgba(182, 197, 219, 0.76);
2583
+ }
2584
+ :root[data-theme=dark] .trace-elapsed-track::before {
2585
+ background: rgba(128, 153, 189, 0.22);
2586
+ }
2587
+ :root[data-theme=dark] .trace-elapsed-span {
2588
+ background:
2589
+ linear-gradient(
2590
+ 90deg,
2591
+ rgba(165, 203, 255, 0.92),
2592
+ rgba(104, 158, 255, 0.96));
2593
+ box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.06), 0 0 0 4px rgba(134, 184, 255, 0.08);
2594
+ }
2595
+ :root[data-theme=dark] .trace-elapsed-bar.is-pending .trace-elapsed-span {
2596
+ background:
2597
+ linear-gradient(
2598
+ 90deg,
2599
+ rgba(134, 184, 255, 0.45),
2600
+ rgba(134, 184, 255, 0.9));
2601
+ }
2602
+ :root[data-theme=dark] .hierarchy-timeline-panel {
2603
+ border-color: rgba(128, 153, 189, 0.16);
2604
+ background: rgba(18, 27, 40, 0.8);
2605
+ box-shadow: 0 14px 32px rgba(2, 10, 24, 0.24), inset 0 1px 0 rgba(255, 255, 255, 0.04);
2606
+ }
2607
+ :root[data-theme=dark] .hierarchy-timeline-axis-track,
2608
+ :root[data-theme=dark] .hierarchy-timeline-row-track {
2609
+ background-image:
2610
+ linear-gradient(
2611
+ 90deg,
2612
+ rgba(128, 153, 189, 0.14) 0,
2613
+ rgba(128, 153, 189, 0.14) 1px,
2614
+ transparent 1px);
2615
+ }
2616
+ :root[data-theme=dark] .hierarchy-timeline-axis-label {
2617
+ color: rgba(182, 197, 219, 0.76);
2618
+ }
2619
+ :root[data-theme=dark] .ui-badge[data-semantic] {
2620
+ border-color: color-mix(in srgb, var(--semantic-badge-color) 30%, rgba(128, 153, 189, 0.14));
2621
+ background: color-mix(in srgb, var(--semantic-badge-color) 20%, rgba(20, 29, 43, 0.94));
2622
+ color: color-mix(in srgb, var(--semantic-badge-color) 74%, white);
2623
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
2624
+ }
2625
+ :root[data-theme=dark] .hierarchy-timeline-row {
2626
+ background: rgba(22, 32, 47, 0.52);
2627
+ }
2628
+ :root[data-theme=dark] .hierarchy-timeline-hint {
2629
+ color: rgba(182, 197, 219, 0.72);
2630
+ }
2631
+ :root[data-theme=dark] .hierarchy-timeline-row.is-clickable {
2632
+ border-color: rgba(134, 184, 255, 0.12);
2633
+ background: rgba(24, 35, 52, 0.74);
2634
+ box-shadow: 0 8px 20px rgba(2, 10, 24, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.04);
2635
+ }
2636
+ :root[data-theme=dark] .hierarchy-timeline-row.is-structure {
2637
+ border-color: rgba(128, 153, 189, 0.08);
2638
+ background: rgba(18, 27, 40, 0.26);
2639
+ }
2640
+ :root[data-theme=dark] .hierarchy-timeline-row.is-in-path {
2641
+ background: rgba(27, 40, 60, 0.7);
2642
+ }
2643
+ :root[data-theme=dark] .hierarchy-timeline-row.is-structure.is-in-path {
2644
+ background: rgba(24, 35, 52, 0.38);
2645
+ }
2646
+ :root[data-theme=dark] .hierarchy-timeline-row.is-detail-trace:not(.is-active) {
2647
+ border-color: rgba(134, 184, 255, 0.16);
2648
+ background: rgba(26, 38, 57, 0.84);
2649
+ box-shadow: inset 2px 0 0 rgba(134, 184, 255, 0.6), 0 8px 18px rgba(2, 10, 24, 0.18);
2650
+ }
2651
+ :root[data-theme=dark] .hierarchy-timeline-row.is-active {
2652
+ border-color: rgba(134, 184, 255, 0.2);
2653
+ background: rgba(31, 45, 66, 0.94);
2654
+ box-shadow: inset 3px 0 0 rgba(134, 184, 255, 0.82), 0 10px 22px rgba(2, 10, 24, 0.18);
2655
+ }
2656
+ :root[data-theme=dark] .hierarchy-timeline-row-time,
2657
+ :root[data-theme=dark] .hierarchy-timeline-row-meta,
2658
+ :root[data-theme=dark] .hierarchy-timeline-row-duration,
2659
+ :root[data-theme=dark] .hierarchy-timeline-meta,
2660
+ :root[data-theme=dark] .hierarchy-timeline-title {
2661
+ color: rgba(182, 197, 219, 0.78);
2662
+ }
2663
+ :root[data-theme=dark] .hierarchy-timeline-row-inspect {
2664
+ border-color: rgba(134, 184, 255, 0.18);
2665
+ background: rgba(134, 184, 255, 0.12);
2666
+ color: rgba(186, 214, 255, 0.96);
2667
+ }
2668
+ :root[data-theme=dark] .hierarchy-timeline-row.is-clickable:hover .hierarchy-timeline-row-inspect {
2669
+ border-color: rgba(134, 184, 255, 0.24);
2670
+ background: rgba(134, 184, 255, 0.18);
2671
+ }
2672
+ :root[data-theme=dark] .hierarchy-timeline-row-title-text {
2673
+ color: var(--foreground);
2674
+ }
2675
+ :root[data-theme=dark] .hierarchy-timeline-axis-track::before,
2676
+ :root[data-theme=dark] .hierarchy-timeline-axis-tick::before,
2677
+ :root[data-theme=dark] .hierarchy-timeline-row-labels::before,
2678
+ :root[data-theme=dark] .hierarchy-timeline-row-track::before {
2679
+ background: rgba(128, 153, 189, 0.14);
2680
+ }
2681
+ :root[data-theme=dark] .hierarchy-timeline-row-bar {
2682
+ box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.06), 0 1px 3px rgba(2, 10, 24, 0.24);
2683
+ }
2684
+ :root[data-theme=dark] .trace-detail-secondary .hierarchy-timeline-panel {
2685
+ background: rgba(18, 27, 40, 0.9);
2686
+ }
2687
+ :root[data-theme=dark] .tree-node-toggle {
2688
+ background: rgba(31, 45, 66, 0.96);
2689
+ }
2690
+ :root[data-theme=dark] .trace-metric-pill {
2691
+ border-color: var(--line);
2692
+ background: rgba(26, 38, 57, 0.94);
2693
+ color: var(--foreground);
2694
+ }
2695
+ :root[data-theme=dark] .trace-metric-pill.is-latency,
2696
+ :root[data-theme=dark] .stream-segment-time {
2697
+ border-color: rgba(134, 184, 255, 0.24);
2698
+ background: rgba(134, 184, 255, 0.12);
2699
+ color: var(--primary-strong);
2700
+ }
2701
+ :root[data-theme=dark] .trace-metric-pill.is-cost {
2702
+ border-color: rgba(105, 197, 156, 0.24);
2703
+ background: rgba(105, 197, 156, 0.12);
2704
+ color: var(--success);
2705
+ }
2706
+ :root[data-theme=dark] .tabs-list {
2707
+ background: rgba(16, 24, 36, 0.92);
2708
+ }
2709
+ :root[data-theme=dark] .tabs-trigger:hover {
2710
+ background: rgba(134, 184, 255, 0.08);
2711
+ color: var(--foreground);
2712
+ }
2713
+ :root[data-theme=dark] .tabs-root[data-value=conversation] .tabs-trigger[data-tab-value=conversation],
2714
+ :root[data-theme=dark] .tabs-root[data-value=request] .tabs-trigger[data-tab-value=request],
2715
+ :root[data-theme=dark] .tabs-root[data-value=response] .tabs-trigger[data-tab-value=response],
2716
+ :root[data-theme=dark] .tabs-root[data-value=context] .tabs-trigger[data-tab-value=context],
2717
+ :root[data-theme=dark] .tabs-root[data-value=stream] .tabs-trigger[data-tab-value=stream] {
2718
+ background: rgba(31, 45, 66, 0.98);
2719
+ border-color: rgba(134, 184, 255, 0.2);
2720
+ box-shadow: inset 0 -3px 0 rgba(134, 184, 255, 0.84), 0 6px 16px rgba(1, 7, 18, 0.22);
2721
+ color: var(--primary-strong);
2722
+ }
2723
+ :root[data-theme=dark] .sheet-overlay {
2724
+ background: rgba(1, 8, 20, 0.55);
2725
+ }
2726
+ :root[data-theme=dark] .sheet-panel {
2727
+ border-left-color: rgba(128, 153, 189, 0.14);
2728
+ background: rgba(12, 18, 28, 0.96);
2729
+ box-shadow: -24px 0 70px rgba(1, 7, 18, 0.42);
2730
+ }
2731
+ :root[data-theme=dark] .conversation-row.is-user .conversation-bubble,
2732
+ :root[data-theme=dark] .message-card.role-user {
2733
+ --expandable-fade-color: rgba(33, 47, 69, 0.98);
2734
+ background: rgba(33, 47, 69, 0.96);
2735
+ }
2736
+ :root[data-theme=dark] .conversation-row.is-assistant .conversation-bubble,
2737
+ :root[data-theme=dark] .message-card.role-assistant {
2738
+ --expandable-fade-color: rgba(22, 32, 48, 0.99);
2739
+ background: rgba(22, 32, 48, 0.98);
2740
+ }
2741
+ :root[data-theme=dark] .conversation-row.is-system .conversation-bubble,
2742
+ :root[data-theme=dark] .message-card.role-system {
2743
+ --expandable-fade-color: rgba(26, 39, 57, 0.99);
2744
+ border-color: rgba(134, 184, 255, 0.24);
2745
+ background: rgba(26, 39, 57, 0.98);
2746
+ box-shadow: inset 3px 0 0 rgba(134, 184, 255, 0.42);
2747
+ }
2748
+ :root[data-theme=dark] .tool-result-bubble {
2749
+ --expandable-fade-color: rgba(17, 26, 39, 0.99);
2750
+ background: rgba(17, 26, 39, 0.96);
2751
+ }
2752
+ :root[data-theme=dark] .tool-call-bubble {
2753
+ background: rgba(20, 32, 48, 0.98);
2754
+ }
2755
+ :root[data-theme=dark] .markdown-body code {
2756
+ background: rgba(101, 134, 182, 0.18);
2757
+ }
2758
+ :root[data-theme=dark] .markdown-body pre,
2759
+ :root[data-theme=dark] .json-frame,
2760
+ :root[data-theme=dark] .stream-density-chart {
2761
+ border-color: rgba(128, 153, 189, 0.22);
2762
+ background: rgba(16, 24, 36, 0.98);
2763
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), 0 1px 2px rgba(1, 7, 18, 0.18);
2764
+ }
2765
+ :root[data-theme=dark] .stream-density-chart {
2766
+ background:
2767
+ linear-gradient(
2768
+ 180deg,
2769
+ rgba(15, 22, 33, 0.98),
2770
+ rgba(9, 14, 22, 0.96));
2771
+ }
2772
+ :root[data-theme=dark] .stream-density-bar,
2773
+ :root[data-theme=dark] .timing-bar-fill {
2774
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.08);
2775
+ }
2776
+ :root[data-theme=dark] .timing-bar {
2777
+ background: rgba(134, 184, 255, 0.1);
2778
+ }
2779
+ :root[data-theme=dark] .timing-marker {
2780
+ border-color: rgba(16, 24, 36, 0.95);
2781
+ }
2782
+ :root[data-theme=dark] .conversation-bubble .json-frame,
2783
+ :root[data-theme=dark] .tool-result-content .json-frame,
2784
+ :root[data-theme=dark] .tool-call-section .json-frame {
2785
+ background: rgba(13, 20, 31, 0.99);
2786
+ }
2787
+ :root[data-theme=dark] .json-syntax {
2788
+ color: #dde7f6;
2789
+ }
2790
+ :root[data-theme=dark] .json-token-key {
2791
+ color: #acd0ff;
2792
+ }
2793
+ :root[data-theme=dark] .json-token-string {
2794
+ color: #d2dced;
2795
+ }
2796
+ :root[data-theme=dark] .json-token-number {
2797
+ color: #cba8ff;
2798
+ }
2799
+ :root[data-theme=dark] .json-token-boolean {
2800
+ color: #7fd4ad;
2801
+ }
2802
+ :root[data-theme=dark] .json-token-null {
2803
+ color: #f399a6;
2804
+ }
2805
+ :root[data-theme=dark] .empty-state-icon {
2806
+ background: rgba(29, 42, 60, 0.92);
2807
+ border-color: rgba(128, 153, 189, 0.12);
2808
+ }
2809
+ :root[data-theme=dark] .workspace-grid::-webkit-scrollbar-thumb {
2810
+ background: rgba(128, 153, 189, 0.28);
2811
+ }
2812
+ [data-icon=inline-start] {
2813
+ width: 1rem;
2814
+ height: 1rem;
2815
+ }
2816
+ @keyframes live-dot-breathe {
2817
+ 0%, 100% {
2818
+ transform: scale(1);
2819
+ box-shadow: 0 0 0 4px rgba(47, 125, 98, 0.14);
2820
+ }
2821
+ 35% {
2822
+ transform: scale(1.14);
2823
+ box-shadow: 0 0 0 5px rgba(47, 125, 98, 0.18);
2824
+ }
2825
+ 60% {
2826
+ transform: scale(0.96);
2827
+ box-shadow: 0 0 0 4px rgba(47, 125, 98, 0.1);
2828
+ }
2829
+ }
2830
+ @keyframes live-pulse-ring {
2831
+ 0% {
2832
+ opacity: 0.55;
2833
+ transform: scale(0.55);
2834
+ }
2835
+ 72% {
2836
+ opacity: 0;
2837
+ transform: scale(1.9);
2838
+ }
2839
+ 100% {
2840
+ opacity: 0;
2841
+ transform: scale(1.9);
2842
+ }
2843
+ }
2844
+ @media (max-width: 1360px) {
2845
+ .filters-grid {
2846
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2847
+ }
2848
+ .toolbar-actions {
2849
+ grid-column: 1 / -1;
2850
+ justify-content: flex-start;
2851
+ }
2852
+ }
2853
+ @media (max-width: 1180px) {
2854
+ .workspace-grid,
2855
+ .filters-grid,
2856
+ .filters-secondary-row {
2857
+ grid-template-columns: minmax(0, 1fr);
2858
+ }
2859
+ .inspector-header {
2860
+ flex-direction: column;
2861
+ align-items: stretch;
2862
+ }
2863
+ .inspector-header-side,
2864
+ .inspector-status {
2865
+ justify-content: space-between;
2866
+ }
2867
+ .navigator-header,
2868
+ .trace-detail-toolbar {
2869
+ flex-direction: column;
2870
+ align-items: stretch;
2871
+ }
2872
+ .trace-detail-main.has-secondary-inspector {
2873
+ grid-template-columns: minmax(0, 1fr);
2874
+ }
2875
+ .trace-detail-secondary {
2876
+ overflow: visible;
2877
+ padding-right: 0;
2878
+ }
2879
+ .hierarchy-timeline-axis {
2880
+ grid-template-columns: 4.5rem minmax(0, 1fr) minmax(11rem, 1fr);
2881
+ }
2882
+ .hierarchy-timeline-row {
2883
+ grid-template-columns: 4.5rem minmax(0, 1fr) minmax(11rem, 1fr);
2884
+ }
2885
+ .sheet-panel {
2886
+ width: min(100vw, 48rem);
2887
+ }
2888
+ }
2889
+ @media (max-width: 720px) {
2890
+ :root {
2891
+ --page-gutter: 1rem;
2892
+ }
2893
+ .app-frame {
2894
+ padding: var(--page-gutter);
2895
+ }
2896
+ .board-shell {
2897
+ border-radius: 24px;
2898
+ padding: 0.85rem;
2899
+ }
2900
+ .inspector-header-side,
2901
+ .inspector-status,
2902
+ .toolbar-actions,
2903
+ .sheet-toolbar,
2904
+ .trace-detail-toolbar,
2905
+ .trace-detail-header,
2906
+ .navigator-header {
2907
+ flex-direction: column;
2908
+ align-items: stretch;
2909
+ }
2910
+ .ui-button {
2911
+ width: 100%;
2912
+ }
2913
+ .sheet-panel {
2914
+ width: 100vw;
2915
+ }
2916
+ .sheet-header,
2917
+ .sheet-body {
2918
+ padding-left: 0.95rem;
2919
+ padding-right: 0.95rem;
2920
+ }
2921
+ .sheet-header {
2922
+ flex-direction: column;
2923
+ }
2924
+ .sheet-header-actions {
2925
+ justify-content: flex-end;
2926
+ }
2927
+ .tabs-list {
2928
+ width: 100%;
2929
+ }
2930
+ .trace-detail-title-row {
2931
+ flex-direction: column;
2932
+ align-items: stretch;
2933
+ }
2934
+ .metadata-grid {
2935
+ grid-template-columns: minmax(0, 1fr);
2936
+ }
2937
+ .metadata-grid dt {
2938
+ padding-top: 0;
2939
+ }
2940
+ .metadata-value-shell,
2941
+ .tag-chip {
2942
+ flex-direction: column;
2943
+ align-items: stretch;
2944
+ }
2945
+ .metadata-actions,
2946
+ .tag-chip-actions {
2947
+ justify-content: flex-start;
2948
+ }
2949
+ .nav-item-side,
2950
+ .tree-trace-select {
2951
+ min-width: 0;
2952
+ width: 100%;
2953
+ }
2954
+ .tree-trace-select {
2955
+ flex-direction: column;
2956
+ align-items: stretch;
2957
+ }
2958
+ .trace-elapsed-bar,
2959
+ .nav-item-side-meta {
2960
+ justify-content: flex-start;
2961
+ }
2962
+ .trace-detail-secondary .hierarchy-timeline-axis,
2963
+ .trace-detail-secondary .hierarchy-timeline-row {
2964
+ grid-template-columns: minmax(0, 1fr);
2965
+ }
2966
+ .trace-detail-secondary .hierarchy-timeline-axis-track {
2967
+ grid-column: auto;
2968
+ }
2969
+ .trace-detail-secondary .hierarchy-timeline-row-time {
2970
+ text-align: left;
2971
+ }
2972
+ .trace-detail-secondary .hierarchy-timeline-row-bars {
2973
+ grid-column: auto;
2974
+ grid-template-columns: minmax(0, 1fr) auto;
2975
+ }
2976
+ .trace-detail-secondary .hierarchy-timeline-row-action {
2977
+ justify-content: flex-start;
2978
+ }
2979
+ .hierarchy-timeline-header,
2980
+ .hierarchy-timeline-header-side {
2981
+ flex-direction: column;
2982
+ align-items: stretch;
2983
+ }
2984
+ .hierarchy-timeline-axis {
2985
+ grid-template-columns: minmax(0, 1fr);
2986
+ }
2987
+ .hierarchy-timeline-axis-track {
2988
+ grid-column: auto;
2989
+ }
2990
+ .hierarchy-timeline-row {
2991
+ grid-template-columns: minmax(0, 1fr);
2992
+ }
2993
+ .hierarchy-timeline-row-time {
2994
+ text-align: left;
2995
+ }
2996
+ .hierarchy-timeline-row-bars {
2997
+ grid-column: auto;
2998
+ grid-template-columns: minmax(0, 1fr) auto;
2999
+ }
3000
+ .hierarchy-timeline-row-action {
3001
+ justify-content: flex-start;
3002
+ }
3003
+ }