@mtharrison/loupe 1.0.1 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,5 @@
1
+ @import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&display=swap";
2
+
1
3
  /* client/src/styles.css */
2
4
  :root {
3
5
  color-scheme: light;
@@ -19,6 +21,11 @@
19
21
  --shadow: 0 22px 60px rgba(30, 48, 72, 0.16);
20
22
  --radius: 22px;
21
23
  --page-gutter: 1.5rem;
24
+ --brand-font:
25
+ "Space Grotesk",
26
+ "Avenir Next",
27
+ "Segoe UI",
28
+ sans-serif;
22
29
  }
23
30
  :root[data-theme=dark] {
24
31
  color-scheme: dark;
@@ -179,14 +186,16 @@ pre {
179
186
  min-height: 100dvh;
180
187
  padding: var(--page-gutter);
181
188
  justify-items: center;
182
- align-items: center;
189
+ align-items: stretch;
183
190
  justify-self: center;
191
+ width: 100%;
184
192
  }
185
193
  .board-shell {
186
194
  display: flex;
187
195
  flex: 1;
188
196
  flex-direction: column;
189
197
  height: 100%;
198
+ width: 100%;
190
199
  gap: 0.85rem;
191
200
  min-height: 0;
192
201
  overflow: hidden;
@@ -205,6 +214,7 @@ pre {
205
214
  box-shadow: 0 0 72px rgba(37, 57, 87, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.6);
206
215
  }
207
216
  .inspector-shell {
217
+ width: 100%;
208
218
  min-height: 0;
209
219
  gap: 0.9rem;
210
220
  }
@@ -247,10 +257,13 @@ pre {
247
257
  align-items: center;
248
258
  color: #132e48;
249
259
  }
250
- .brand-wordmark-svg {
260
+ .brand-wordmark-text {
251
261
  display: block;
252
- width: clamp(8rem, 13vw, 10.15rem);
253
- height: auto;
262
+ font-family: var(--brand-font);
263
+ font-size: clamp(1.65rem, 2.5vw, 2.15rem);
264
+ font-weight: 700;
265
+ letter-spacing: -0.06em;
266
+ line-height: 0.95;
254
267
  }
255
268
  .brand-subtitle {
256
269
  color: var(--muted-foreground);
@@ -382,13 +395,19 @@ pre {
382
395
  .workspace-grid {
383
396
  display: grid;
384
397
  flex: 1;
385
- grid-template-columns: minmax(40rem, 46rem) minmax(0, 1fr);
398
+ grid-template-columns: minmax(30rem, 36rem) minmax(0, 1fr);
386
399
  gap: 0.9rem;
387
- align-items: start;
400
+ align-items: stretch;
388
401
  min-height: 0;
389
402
  overflow: auto;
390
403
  padding-right: 0.2rem;
391
404
  }
405
+ .workspace-grid.is-sidebar-collapsed {
406
+ grid-template-columns: minmax(0, 1fr);
407
+ }
408
+ .workspace-grid.is-sidebar-collapsed .session-sidebar-card {
409
+ display: none;
410
+ }
392
411
  .workspace-grid::-webkit-scrollbar {
393
412
  width: 10px;
394
413
  }
@@ -407,9 +426,11 @@ pre {
407
426
  }
408
427
  .sidebar-card {
409
428
  min-width: 0;
429
+ height: 100%;
410
430
  }
411
431
  .timeline-card {
412
432
  min-width: 0;
433
+ height: 100%;
413
434
  }
414
435
  .navigator-card,
415
436
  .content-card {
@@ -427,39 +448,126 @@ pre {
427
448
  flex: 1;
428
449
  flex-direction: column;
429
450
  }
430
- .session-sidebar-toolbar {
451
+ .session-nav-section {
431
452
  display: flex;
432
- align-items: center;
433
- justify-content: space-between;
434
- gap: 0.75rem;
453
+ flex-direction: column;
454
+ gap: 0.55rem;
435
455
  margin: 0.4rem 0.4rem 0;
436
- padding: 0.88rem 0.92rem;
456
+ padding: 0.72rem 0.78rem;
437
457
  border: 1px solid var(--line);
438
458
  border-radius: 16px;
439
459
  background: rgba(250, 252, 255, 0.9);
440
460
  box-shadow: 0 8px 22px rgba(32, 50, 76, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.7);
441
461
  }
442
- .session-sidebar-toolbar-copy {
462
+ .session-nav-header {
443
463
  display: flex;
464
+ align-items: center;
465
+ justify-content: space-between;
466
+ gap: 0.75rem;
467
+ }
468
+ .session-nav-title-row {
469
+ display: flex;
470
+ align-items: center;
471
+ gap: 0.5rem;
444
472
  min-width: 0;
445
- flex-direction: column;
446
- gap: 0.18rem;
447
473
  }
448
- .session-sidebar-toolbar-title {
474
+ .session-nav-title {
449
475
  font-size: 0.82rem;
450
476
  font-weight: 700;
451
477
  letter-spacing: 0.08em;
452
478
  text-transform: uppercase;
453
479
  color: var(--muted-foreground);
454
480
  }
455
- .session-sidebar-toolbar-meta {
481
+ .session-nav-filter-badge {
482
+ min-height: 1.3rem;
483
+ padding: 0.12rem 0.44rem;
484
+ font-size: 0.66rem;
485
+ }
486
+ .session-nav-meta {
456
487
  color: var(--muted-foreground);
457
488
  font-size: 0.84rem;
458
489
  }
459
- .session-sidebar-select {
460
- width: auto;
461
- min-width: min(14rem, 100%);
462
- max-width: 16rem;
490
+ .session-nav-list {
491
+ display: flex;
492
+ flex-direction: column;
493
+ gap: 0.4rem;
494
+ max-height: min(16rem, 34vh);
495
+ overflow: auto;
496
+ padding-right: 0.12rem;
497
+ scrollbar-gutter: stable;
498
+ }
499
+ .session-nav-card {
500
+ display: flex;
501
+ width: 100%;
502
+ min-width: 0;
503
+ flex-direction: column;
504
+ gap: 0.28rem;
505
+ padding: 0.62rem 0.7rem;
506
+ border: 1px solid rgba(40, 93, 168, 0.08);
507
+ border-radius: 14px;
508
+ background: rgba(255, 255, 255, 0.92);
509
+ color: inherit;
510
+ text-align: left;
511
+ box-shadow: 0 6px 16px rgba(32, 50, 76, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.72);
512
+ transition:
513
+ border-color 160ms ease,
514
+ background 160ms ease,
515
+ box-shadow 160ms ease,
516
+ transform 160ms ease;
517
+ }
518
+ .session-nav-card:hover {
519
+ border-color: rgba(40, 93, 168, 0.16);
520
+ background: rgba(247, 251, 255, 0.96);
521
+ box-shadow: 0 10px 24px rgba(32, 50, 76, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.78);
522
+ }
523
+ .session-nav-card.is-active {
524
+ border-color: rgba(40, 93, 168, 0.26);
525
+ background:
526
+ linear-gradient(
527
+ 180deg,
528
+ rgba(241, 247, 255, 0.98),
529
+ rgba(233, 242, 255, 0.94));
530
+ box-shadow: inset 3px 0 0 rgba(40, 93, 168, 0.84), 0 12px 28px rgba(32, 50, 76, 0.12);
531
+ }
532
+ .session-nav-card-header,
533
+ .session-nav-card-footer {
534
+ display: flex;
535
+ align-items: center;
536
+ justify-content: space-between;
537
+ gap: 0.65rem;
538
+ }
539
+ .session-nav-card-title {
540
+ min-width: 0;
541
+ font-size: 0.9rem;
542
+ font-weight: 650;
543
+ letter-spacing: -0.02em;
544
+ overflow: hidden;
545
+ text-overflow: ellipsis;
546
+ white-space: nowrap;
547
+ }
548
+ .session-nav-card-time {
549
+ flex: 0 0 auto;
550
+ color: var(--muted-foreground);
551
+ font-size: 0.74rem;
552
+ font-weight: 600;
553
+ white-space: nowrap;
554
+ }
555
+ .session-nav-card-meta {
556
+ color: var(--muted-foreground);
557
+ font-size: 0.75rem;
558
+ line-height: 1.4;
559
+ }
560
+ .session-nav-card-id {
561
+ min-width: 0;
562
+ color: var(--muted-foreground);
563
+ font-family:
564
+ "SFMono-Regular",
565
+ ui-monospace,
566
+ "Cascadia Code",
567
+ "Source Code Pro",
568
+ Menlo,
569
+ monospace;
570
+ font-size: 0.71rem;
463
571
  }
464
572
  .session-sidebar-shell .hierarchy-timeline-panel {
465
573
  margin: 0;
@@ -474,12 +582,59 @@ pre {
474
582
  max-height: none;
475
583
  flex: 1;
476
584
  }
585
+ .session-sidebar-shell .hierarchy-timeline-axis,
586
+ .session-sidebar-shell .hierarchy-timeline-row {
587
+ grid-template-columns: 4.1rem minmax(0, 1fr) minmax(6.5rem, 8rem);
588
+ gap: 0.45rem;
589
+ }
590
+ .session-sidebar-shell .hierarchy-timeline-row-labels {
591
+ padding: 0.72rem 0.5rem 0.72rem 1.2rem;
592
+ }
593
+ .session-sidebar-shell .hierarchy-timeline-row-bars {
594
+ grid-template-columns: minmax(5.75rem, 1fr) auto;
595
+ column-gap: 0.35rem;
596
+ padding-top: 0.72rem;
597
+ padding-bottom: 0.72rem;
598
+ padding-left: 0.4rem;
599
+ padding-right: 1rem;
600
+ }
601
+ .session-sidebar-shell .hierarchy-timeline-axis-label {
602
+ font-size: 0.64rem;
603
+ }
604
+ .session-sidebar-shell .hierarchy-timeline-row-title {
605
+ flex-wrap: nowrap;
606
+ }
607
+ .session-sidebar-shell .hierarchy-timeline-row-title-text,
608
+ .session-sidebar-shell .hierarchy-timeline-row-meta {
609
+ overflow: hidden;
610
+ text-overflow: ellipsis;
611
+ white-space: nowrap;
612
+ }
613
+ .session-sidebar-shell .hierarchy-timeline-row-title-text {
614
+ font-size: 0.85rem;
615
+ }
616
+ .session-sidebar-shell .hierarchy-timeline-row-meta {
617
+ font-size: 0.72rem;
618
+ }
619
+ .session-sidebar-shell .hierarchy-timeline-panel {
620
+ gap: 0.65rem;
621
+ padding: 0.8rem 0.82rem 0.86rem;
622
+ }
477
623
  .session-sidebar-empty {
478
624
  display: flex;
479
625
  flex: 1;
480
626
  min-height: 0;
481
627
  padding: 0.95rem;
482
628
  }
629
+ .session-sidebar-empty-state {
630
+ display: flex;
631
+ flex: 1;
632
+ min-height: 0;
633
+ flex-direction: column;
634
+ align-items: center;
635
+ justify-content: center;
636
+ gap: 0.85rem;
637
+ }
483
638
  .content-card {
484
639
  overflow: hidden;
485
640
  }
@@ -533,12 +688,15 @@ pre {
533
688
  .sheet-close:focus-visible,
534
689
  .nav-item:focus-visible,
535
690
  .nav-switch-button:focus-visible,
691
+ .session-nav-card:focus-visible,
536
692
  .theme-switch-button:focus-visible,
537
693
  .expandable-toggle:focus-visible,
538
694
  .tree-node-toggle:focus-visible,
539
695
  .tree-node-select:focus-visible,
540
696
  .trace-row:focus-visible,
541
697
  .tabs-trigger:focus-visible,
698
+ .trace-detail-breadcrumb-segment:focus-visible,
699
+ .ui-badge-button:focus-visible,
542
700
  .ui-input:focus-visible,
543
701
  .ui-select:focus-visible {
544
702
  outline: 2px solid rgba(40, 93, 168, 0.28);
@@ -601,6 +759,11 @@ pre {
601
759
  background: rgba(40, 93, 168, 0.08);
602
760
  color: var(--primary-strong);
603
761
  }
762
+ .session-panel-toggle.is-active {
763
+ border-color: rgba(40, 93, 168, 0.2);
764
+ background: rgba(40, 93, 168, 0.08);
765
+ color: var(--primary-strong);
766
+ }
604
767
  .clear-traces-button.is-confirming {
605
768
  border-color: rgba(181, 82, 93, 0.34);
606
769
  background: rgba(181, 82, 93, 0.08);
@@ -617,6 +780,18 @@ pre {
617
780
  letter-spacing: 0.03em;
618
781
  text-transform: uppercase;
619
782
  }
783
+ .ui-badge-button {
784
+ border: 0;
785
+ cursor: pointer;
786
+ transition:
787
+ transform 160ms ease,
788
+ filter 160ms ease,
789
+ box-shadow 160ms ease;
790
+ }
791
+ .ui-badge-button:hover {
792
+ transform: translateY(-1px);
793
+ filter: brightness(0.98);
794
+ }
620
795
  .ui-badge-secondary {
621
796
  background: rgba(73, 102, 148, 0.1);
622
797
  color: var(--muted-foreground);
@@ -628,20 +803,35 @@ pre {
628
803
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.62);
629
804
  }
630
805
  .ui-badge[data-semantic=session] {
631
- --semantic-badge-color: rgba(54, 103, 214, 0.92);
806
+ --semantic-badge-color: rgba(86, 107, 147, 0.92);
632
807
  }
633
808
  .ui-badge[data-semantic=actor] {
634
- --semantic-badge-color: rgba(71, 160, 92, 0.9);
809
+ --semantic-badge-color: rgba(60, 110, 214, 0.9);
635
810
  }
636
811
  .ui-badge[data-semantic=child-actor],
637
812
  .ui-badge[data-semantic=stage] {
638
- --semantic-badge-color: rgba(130, 95, 214, 0.9);
813
+ --semantic-badge-color: rgba(34, 154, 161, 0.9);
639
814
  }
640
815
  .ui-badge[data-semantic=guardrail] {
641
- --semantic-badge-color: rgba(219, 150, 58, 0.92);
816
+ --semantic-badge-color: rgba(184, 129, 44, 0.92);
642
817
  }
643
818
  .ui-badge[data-semantic=call] {
644
- --semantic-badge-color: rgba(61, 108, 225, 0.9);
819
+ --semantic-badge-color: rgba(92, 121, 171, 0.9);
820
+ }
821
+ .ui-badge[data-semantic=system] {
822
+ --semantic-badge-color: rgba(40, 93, 168, 0.92);
823
+ }
824
+ .ui-badge[data-semantic=assistant] {
825
+ --semantic-badge-color: rgba(91, 108, 168, 0.88);
826
+ }
827
+ .ui-badge[data-semantic=user] {
828
+ --semantic-badge-color: rgba(46, 181, 129, 0.92);
829
+ }
830
+ .ui-badge[data-semantic=tool] {
831
+ --semantic-badge-color: rgba(59, 146, 111, 0.9);
832
+ }
833
+ .ui-badge[data-semantic=tool-call] {
834
+ --semantic-badge-color: rgba(219, 150, 58, 0.92);
645
835
  }
646
836
  .ui-badge-outline {
647
837
  border: 1px solid rgba(40, 93, 168, 0.16);
@@ -1120,11 +1310,13 @@ pre {
1120
1310
  .hierarchy-timeline-row {
1121
1311
  --timeline-time-column: 4.75rem;
1122
1312
  --timeline-column-gap: 0.45rem;
1123
- --timeline-indent: 0.94rem;
1124
- --timeline-gutter-base: 1.16rem;
1313
+ --timeline-indent: 1rem;
1314
+ --timeline-gutter-base: 1.25rem;
1315
+ --timeline-connector-base: 0.22rem;
1125
1316
  --timeline-gutter-width: calc( var(--timeline-depth, 0) * var(--timeline-indent) + var(--timeline-gutter-base) );
1126
- --timeline-branch-offset: calc( var(--timeline-depth, 0) * var(--timeline-indent) + 0.12rem );
1127
- --timeline-row-color: rgba(69, 104, 222, 0.88);
1317
+ --timeline-row-color: rgba(92, 121, 171, 0.9);
1318
+ --timeline-bar-stroke: color-mix(in srgb, var(--timeline-row-color) 74%, white);
1319
+ --timeline-connector-color: color-mix( in srgb, var(--timeline-row-color) 28%, rgba(84, 100, 125, 0.18) );
1128
1320
  position: relative;
1129
1321
  display: grid;
1130
1322
  grid-template-columns: var(--timeline-time-column) minmax(0, 1fr) minmax(13rem, 19rem);
@@ -1200,20 +1392,20 @@ pre {
1200
1392
  box-shadow: inset 3px 0 0 rgba(40, 93, 168, 0.74), 0 8px 20px rgba(32, 50, 76, 0.06);
1201
1393
  }
1202
1394
  .hierarchy-timeline-row.is-session {
1203
- --timeline-row-color: rgba(54, 103, 214, 0.92);
1395
+ --timeline-row-color: rgba(86, 107, 147, 0.92);
1204
1396
  }
1205
1397
  .hierarchy-timeline-row.is-actor {
1206
- --timeline-row-color: rgba(71, 160, 92, 0.9);
1398
+ --timeline-row-color: rgba(60, 110, 214, 0.9);
1207
1399
  }
1208
1400
  .hierarchy-timeline-row.is-child-actor,
1209
1401
  .hierarchy-timeline-row.is-stage {
1210
- --timeline-row-color: rgba(130, 95, 214, 0.9);
1402
+ --timeline-row-color: rgba(34, 154, 161, 0.9);
1211
1403
  }
1212
1404
  .hierarchy-timeline-row.is-guardrail {
1213
- --timeline-row-color: rgba(219, 150, 58, 0.92);
1405
+ --timeline-row-color: rgba(184, 129, 44, 0.92);
1214
1406
  }
1215
1407
  .hierarchy-timeline-row.is-trace {
1216
- --timeline-row-color: rgba(61, 108, 225, 0.9);
1408
+ --timeline-row-color: rgba(92, 121, 171, 0.9);
1217
1409
  }
1218
1410
  .hierarchy-timeline-row-time {
1219
1411
  align-self: stretch;
@@ -1243,27 +1435,60 @@ pre {
1243
1435
  min-width: 0;
1244
1436
  }
1245
1437
  .hierarchy-timeline-row-gutter::before {
1438
+ display: none;
1439
+ }
1440
+ .hierarchy-timeline-row-gutter::after {
1441
+ display: none;
1442
+ }
1443
+ .hierarchy-timeline-row.is-root .hierarchy-timeline-row-gutter::before,
1444
+ .hierarchy-timeline-row.is-root .hierarchy-timeline-row-gutter::after {
1445
+ display: none;
1446
+ }
1447
+ .hierarchy-timeline-row-ancestor,
1448
+ .hierarchy-timeline-row-connector {
1449
+ position: absolute;
1450
+ top: -0.15rem;
1451
+ bottom: -0.15rem;
1452
+ width: var(--timeline-indent);
1453
+ left: calc(var(--timeline-connector-index, 0) * var(--timeline-indent) + var(--timeline-connector-base));
1454
+ }
1455
+ .hierarchy-timeline-row-ancestor::before,
1456
+ .hierarchy-timeline-row-connector-top,
1457
+ .hierarchy-timeline-row-connector-bottom {
1246
1458
  content: "";
1247
1459
  position: absolute;
1248
- top: -0.14rem;
1249
- left: var(--timeline-branch-offset);
1250
- bottom: -0.14rem;
1460
+ left: calc(var(--timeline-indent) * 0.5);
1251
1461
  width: 1px;
1252
- background: color-mix(in srgb, var(--timeline-row-color) 18%, rgba(84, 100, 125, 0.12));
1462
+ background: var(--timeline-connector-color);
1253
1463
  }
1254
- .hierarchy-timeline-row-gutter::after {
1255
- content: "";
1464
+ .hierarchy-timeline-row-ancestor::before {
1465
+ top: 0;
1466
+ bottom: 0;
1467
+ opacity: 0;
1468
+ }
1469
+ .hierarchy-timeline-row-ancestor.has-line::before {
1470
+ opacity: 1;
1471
+ }
1472
+ .hierarchy-timeline-row-connector-top {
1473
+ top: 0;
1474
+ bottom: 50%;
1475
+ }
1476
+ .hierarchy-timeline-row-connector-elbow {
1256
1477
  position: absolute;
1257
1478
  top: 50%;
1258
- left: var(--timeline-branch-offset);
1259
- right: 0.08rem;
1479
+ left: calc(var(--timeline-indent) * 0.5);
1480
+ width: calc(var(--timeline-indent) * 0.62);
1260
1481
  height: 1px;
1261
- background: color-mix(in srgb, var(--timeline-row-color) 18%, rgba(84, 100, 125, 0.12));
1482
+ background: var(--timeline-connector-color);
1262
1483
  transform: translateY(-50%);
1263
1484
  }
1264
- .hierarchy-timeline-row.is-root .hierarchy-timeline-row-gutter::before,
1265
- .hierarchy-timeline-row.is-root .hierarchy-timeline-row-gutter::after {
1266
- display: none;
1485
+ .hierarchy-timeline-row-connector-bottom {
1486
+ top: 50%;
1487
+ bottom: 0;
1488
+ opacity: 0;
1489
+ }
1490
+ .hierarchy-timeline-row-connector-bottom.has-line {
1491
+ opacity: 1;
1267
1492
  }
1268
1493
  .hierarchy-timeline-row-labels {
1269
1494
  position: relative;
@@ -1280,6 +1505,23 @@ pre {
1280
1505
  min-width: 0;
1281
1506
  flex-wrap: wrap;
1282
1507
  }
1508
+ .hierarchy-timeline-row-flag {
1509
+ display: inline-flex;
1510
+ align-items: center;
1511
+ min-height: 1.3rem;
1512
+ padding: 0.12rem 0.42rem;
1513
+ border-radius: 999px;
1514
+ background: rgba(34, 154, 161, 0.1);
1515
+ color: #1d6970;
1516
+ font-size: 0.68rem;
1517
+ font-weight: 700;
1518
+ letter-spacing: 0.04em;
1519
+ text-transform: uppercase;
1520
+ }
1521
+ .hierarchy-timeline-row-flag.is-highlight {
1522
+ background: rgba(184, 129, 44, 0.1);
1523
+ color: #865815;
1524
+ }
1283
1525
  .hierarchy-timeline-row-title-text {
1284
1526
  min-width: 0;
1285
1527
  font-size: 0.92rem;
@@ -1305,14 +1547,11 @@ pre {
1305
1547
  .hierarchy-timeline-row-bars {
1306
1548
  display: grid;
1307
1549
  grid-template-columns: minmax(10rem, 1fr) auto;
1308
- grid-template-areas: "track duration" "action action";
1309
1550
  column-gap: 0.65rem;
1310
- row-gap: 0.45rem;
1311
1551
  align-items: center;
1312
1552
  padding: 0.58rem 0.82rem 0.58rem 0.18rem;
1313
1553
  }
1314
1554
  .hierarchy-timeline-row-track {
1315
- grid-area: track;
1316
1555
  position: relative;
1317
1556
  height: 1rem;
1318
1557
  }
@@ -1322,7 +1561,8 @@ pre {
1322
1561
  left: 0;
1323
1562
  right: 0;
1324
1563
  top: 50%;
1325
- height: 1px;
1564
+ height: 0.3rem;
1565
+ border-radius: 999px;
1326
1566
  background: rgba(84, 100, 125, 0.12);
1327
1567
  transform: translateY(-50%);
1328
1568
  }
@@ -1331,10 +1571,10 @@ pre {
1331
1571
  top: 50%;
1332
1572
  left: calc(var(--timeline-offset, 0) * 100%);
1333
1573
  width: max(0.5rem, calc(var(--timeline-span, 0.1) * 100%));
1334
- height: 0.72rem;
1574
+ height: 0.5rem;
1335
1575
  border-radius: 999px;
1336
- background: color-mix(in srgb, var(--timeline-row-color) 24%, transparent);
1337
- border: 1px solid color-mix(in srgb, var(--timeline-row-color) 72%, white);
1576
+ background: color-mix(in srgb, var(--timeline-row-color) 24%, white);
1577
+ border: 1px solid var(--timeline-bar-stroke);
1338
1578
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.24), 0 1px 2px rgba(32, 50, 76, 0.08);
1339
1579
  transform: translateY(-50%);
1340
1580
  }
@@ -1344,9 +1584,9 @@ pre {
1344
1584
  position: absolute;
1345
1585
  top: 50%;
1346
1586
  width: 2px;
1347
- height: 0.9rem;
1587
+ height: 0.7rem;
1348
1588
  border-radius: 999px;
1349
- background: color-mix(in srgb, var(--timeline-row-color) 92%, white);
1589
+ background: var(--timeline-bar-stroke);
1350
1590
  transform: translateY(-50%);
1351
1591
  }
1352
1592
  .hierarchy-timeline-row-bar::before {
@@ -1356,7 +1596,6 @@ pre {
1356
1596
  right: -1px;
1357
1597
  }
1358
1598
  .hierarchy-timeline-row-duration {
1359
- grid-area: duration;
1360
1599
  color: var(--muted-foreground);
1361
1600
  font-family:
1362
1601
  ui-monospace,
@@ -1369,36 +1608,6 @@ pre {
1369
1608
  text-align: right;
1370
1609
  white-space: nowrap;
1371
1610
  }
1372
- .hierarchy-timeline-row-action {
1373
- grid-area: action;
1374
- display: flex;
1375
- align-items: center;
1376
- justify-content: flex-end;
1377
- min-width: 0;
1378
- }
1379
- .hierarchy-timeline-row-inspect {
1380
- display: inline-flex;
1381
- align-items: center;
1382
- justify-content: center;
1383
- align-self: flex-end;
1384
- min-height: 2rem;
1385
- padding: 0.42rem 0.72rem;
1386
- border: 1px solid rgba(40, 93, 168, 0.18);
1387
- border-radius: 999px;
1388
- border-color: rgba(40, 93, 168, 0.18);
1389
- background: rgba(40, 93, 168, 0.08);
1390
- color: var(--primary-strong);
1391
- font-size: 0.75rem;
1392
- font-weight: 700;
1393
- line-height: 1;
1394
- pointer-events: none;
1395
- user-select: none;
1396
- white-space: nowrap;
1397
- }
1398
- .hierarchy-timeline-row.is-clickable:hover .hierarchy-timeline-row-inspect {
1399
- border-color: rgba(40, 93, 168, 0.26);
1400
- background: rgba(40, 93, 168, 0.12);
1401
- }
1402
1611
  .trace-detail-header {
1403
1612
  display: flex;
1404
1613
  align-items: flex-start;
@@ -1429,13 +1638,34 @@ pre {
1429
1638
  color: rgba(84, 100, 125, 0.5);
1430
1639
  }
1431
1640
  .trace-detail-breadcrumb-segment {
1641
+ border: 0;
1642
+ background: transparent;
1643
+ color: inherit;
1644
+ cursor: pointer;
1645
+ padding: 0;
1432
1646
  white-space: nowrap;
1647
+ transition:
1648
+ color 160ms ease,
1649
+ text-decoration-color 160ms ease,
1650
+ background 160ms ease;
1651
+ }
1652
+ .trace-detail-breadcrumb-segment:hover {
1653
+ color: var(--primary-strong);
1654
+ text-decoration: underline;
1655
+ text-decoration-thickness: 1px;
1656
+ text-underline-offset: 0.18em;
1433
1657
  }
1434
1658
  .trace-detail-breadcrumb-segment.is-current {
1435
1659
  border-radius: 999px;
1436
1660
  padding: 0.18rem 0.56rem;
1437
1661
  background: rgba(40, 93, 168, 0.08);
1438
1662
  color: var(--primary-strong);
1663
+ text-decoration: none;
1664
+ }
1665
+ .trace-detail-filter-pills {
1666
+ display: flex;
1667
+ flex-wrap: wrap;
1668
+ gap: 0.45rem;
1439
1669
  }
1440
1670
  .trace-detail-title-row {
1441
1671
  display: flex;
@@ -1506,8 +1736,9 @@ pre {
1506
1736
  flex: 1;
1507
1737
  min-height: 0;
1508
1738
  grid-template-columns: minmax(0, 1fr);
1739
+ grid-template-rows: minmax(0, 1fr);
1509
1740
  gap: 1rem;
1510
- align-items: start;
1741
+ align-items: stretch;
1511
1742
  }
1512
1743
  .trace-detail-main.has-secondary-inspector {
1513
1744
  grid-template-columns: minmax(0, 2.05fr) minmax(14.5rem, 0.72fr);
@@ -1559,17 +1790,52 @@ pre {
1559
1790
  align-items: center;
1560
1791
  justify-content: space-between;
1561
1792
  gap: 0.65rem;
1793
+ min-width: 0;
1794
+ }
1795
+ .trace-detail-tabs-shell {
1796
+ display: flex;
1797
+ min-width: 0;
1798
+ flex: 1;
1799
+ overflow-x: auto;
1800
+ overflow-y: hidden;
1801
+ scrollbar-width: none;
1802
+ }
1803
+ .trace-detail-tabs-shell::-webkit-scrollbar {
1804
+ display: none;
1805
+ }
1806
+ .trace-detail-tabs-shell > .tabs-root {
1807
+ min-width: max-content;
1562
1808
  }
1563
1809
  .trace-detail-json-toggle {
1810
+ flex: 0 0 auto;
1564
1811
  min-height: 2.4rem;
1565
1812
  padding: 0.52rem 0.82rem;
1566
1813
  color: var(--muted-foreground);
1567
1814
  }
1568
1815
  .trace-detail-scroll {
1816
+ display: flex;
1817
+ flex-direction: column;
1569
1818
  min-height: 0;
1570
1819
  flex: 1;
1571
- overflow: auto;
1820
+ overflow-x: hidden;
1821
+ overflow-y: scroll;
1572
1822
  padding-right: 0.2rem;
1823
+ scrollbar-gutter: stable;
1824
+ }
1825
+ .trace-detail-pane {
1826
+ display: flex;
1827
+ width: 100%;
1828
+ min-height: 100%;
1829
+ flex: 1 0 auto;
1830
+ flex-direction: column;
1831
+ }
1832
+ .trace-detail-pane > .detail-grid,
1833
+ .trace-detail-pane > .conversation-layout,
1834
+ .trace-detail-pane > .empty-state {
1835
+ min-height: 100%;
1836
+ }
1837
+ .trace-detail-pane > .detail-grid {
1838
+ align-content: start;
1573
1839
  }
1574
1840
  .trace-detail-empty {
1575
1841
  display: flex;
@@ -1783,16 +2049,22 @@ pre {
1783
2049
  opacity: 1;
1784
2050
  }
1785
2051
  .detail-tabs {
2052
+ display: inline-flex;
2053
+ width: max-content;
2054
+ min-width: max-content;
2055
+ flex-wrap: nowrap;
1786
2056
  padding: 0.24rem;
1787
2057
  border-radius: 16px;
1788
2058
  background: rgba(243, 247, 251, 0.98);
1789
2059
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72), 0 1px 2px rgba(32, 50, 76, 0.04);
1790
2060
  }
1791
2061
  .detail-tabs .tabs-trigger {
2062
+ flex: 0 0 auto;
1792
2063
  padding: 0.62rem 0.94rem;
1793
2064
  font-size: 0.84rem;
1794
2065
  font-weight: 700;
1795
2066
  letter-spacing: -0.01em;
2067
+ white-space: nowrap;
1796
2068
  }
1797
2069
  .tabs-root[data-value=conversation] .tabs-trigger[data-tab-value=conversation],
1798
2070
  .tabs-root[data-value=request] .tabs-trigger[data-tab-value=request],
@@ -1940,71 +2212,279 @@ pre {
1940
2212
  display: flex;
1941
2213
  flex-direction: column;
1942
2214
  gap: 0;
2215
+ min-width: 0;
1943
2216
  }
1944
2217
  .conversation-thread > * + * {
1945
2218
  margin-top: 0.95rem;
1946
2219
  padding-top: 0.95rem;
1947
2220
  border-top: 1px solid rgba(88, 105, 130, 0.12);
1948
2221
  }
2222
+ .conversation-context-rail {
2223
+ display: none;
2224
+ min-width: 0;
2225
+ }
2226
+ .conversation-context-rail-header {
2227
+ display: flex;
2228
+ flex-direction: column;
2229
+ gap: 0.18rem;
2230
+ }
2231
+ .conversation-context-rail-title {
2232
+ font-size: 0.82rem;
2233
+ font-weight: 700;
2234
+ letter-spacing: 0.08em;
2235
+ text-transform: uppercase;
2236
+ color: var(--muted-foreground);
2237
+ }
2238
+ .conversation-context-rail-copy {
2239
+ color: var(--muted-foreground);
2240
+ font-size: 0.82rem;
2241
+ line-height: 1.4;
2242
+ }
2243
+ .conversation-context-rail .detail-grid {
2244
+ gap: 0.75rem;
2245
+ }
2246
+ .detail-inline-context-layout {
2247
+ display: grid;
2248
+ grid-template-columns: minmax(0, 1.2fr) minmax(24rem, 32rem);
2249
+ align-items: start;
2250
+ gap: 1rem;
2251
+ min-width: 0;
2252
+ }
2253
+ .detail-inline-context-main {
2254
+ min-width: 0;
2255
+ }
2256
+ .detail-inline-context-layout .conversation-thread > * {
2257
+ width: 100%;
2258
+ }
2259
+ .detail-inline-context-layout .conversation-thread .conversation-row {
2260
+ width: 100%;
2261
+ max-width: none;
2262
+ }
2263
+ .detail-inline-context-layout .conversation-context-rail {
2264
+ display: flex;
2265
+ flex-direction: column;
2266
+ gap: 0.75rem;
2267
+ min-width: 0;
2268
+ }
1949
2269
  .conversation-row {
2270
+ --message-accent: rgba(120, 137, 159, 0.24);
2271
+ --message-border-color: rgba(88, 105, 130, 0.12);
2272
+ --message-surface: rgba(255, 255, 255, 0.92);
2273
+ --message-label-color: color-mix(in srgb, var(--foreground) 52%, var(--muted-foreground));
2274
+ --message-label-border: rgba(88, 105, 130, 0.12);
2275
+ --message-label-surface: rgba(88, 105, 130, 0.06);
2276
+ --message-role-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.62);
1950
2277
  display: flex;
1951
2278
  flex-direction: column;
1952
2279
  gap: 0.45rem;
1953
2280
  max-width: min(52rem, 100%);
1954
2281
  }
1955
- .conversation-row.is-user {
1956
- align-self: flex-end;
1957
- }
2282
+ .conversation-row.is-user,
1958
2283
  .conversation-row.is-assistant,
1959
2284
  .conversation-row.is-system,
1960
2285
  .conversation-row.is-tool,
1961
2286
  .conversation-row.is-tool-call {
1962
2287
  align-self: flex-start;
1963
2288
  }
2289
+ .conversation-row.is-user {
2290
+ --message-accent: rgba(46, 181, 129, 0.58);
2291
+ --message-border-color: rgba(46, 181, 129, 0.28);
2292
+ --message-surface: rgba(232, 251, 242, 0.98);
2293
+ --message-label-color: #178b61;
2294
+ --message-label-border: rgba(46, 181, 129, 0.26);
2295
+ --message-label-surface: rgba(46, 181, 129, 0.16);
2296
+ }
2297
+ .conversation-row.is-assistant {
2298
+ --message-accent: rgba(151, 96, 255, 0.48);
2299
+ --message-border-color: rgba(151, 96, 255, 0.24);
2300
+ --message-surface: rgba(247, 240, 255, 0.98);
2301
+ --message-label-color: #7a41e3;
2302
+ --message-label-border: rgba(151, 96, 255, 0.24);
2303
+ --message-label-surface: rgba(151, 96, 255, 0.16);
2304
+ }
2305
+ .conversation-row.is-system {
2306
+ --message-accent: rgba(46, 104, 255, 0.56);
2307
+ --message-border-color: rgba(46, 104, 255, 0.28);
2308
+ --message-surface: rgba(233, 240, 255, 0.98);
2309
+ --message-label-color: #245fd6;
2310
+ --message-label-border: rgba(46, 104, 255, 0.24);
2311
+ --message-label-surface: rgba(46, 104, 255, 0.16);
2312
+ }
2313
+ .conversation-row.is-tool {
2314
+ --message-accent: rgba(23, 171, 108, 0.52);
2315
+ --message-border-color: rgba(23, 171, 108, 0.25);
2316
+ --message-surface: rgba(231, 251, 240, 0.98);
2317
+ --message-label-color: #0f8a58;
2318
+ --message-label-border: rgba(23, 171, 108, 0.24);
2319
+ --message-label-surface: rgba(23, 171, 108, 0.16);
2320
+ }
2321
+ .conversation-row.is-tool-call {
2322
+ --message-accent: rgba(255, 153, 28, 0.56);
2323
+ --message-border-color: rgba(255, 153, 28, 0.28);
2324
+ --message-surface: rgba(255, 244, 227, 0.98);
2325
+ --message-label-color: #b96b00;
2326
+ --message-label-border: rgba(255, 153, 28, 0.24);
2327
+ --message-label-surface: rgba(255, 153, 28, 0.16);
2328
+ }
1964
2329
  .conversation-role {
1965
- color: var(--muted-foreground);
2330
+ align-self: flex-start;
2331
+ display: inline-flex;
2332
+ align-items: center;
2333
+ gap: 0.35rem;
2334
+ border: 1px solid var(--message-label-border);
2335
+ border-radius: 999px;
2336
+ background: var(--message-label-surface);
2337
+ box-shadow: var(--message-role-shadow);
2338
+ color: var(--message-label-color);
1966
2339
  font-size: 0.74rem;
1967
2340
  font-weight: 700;
1968
2341
  letter-spacing: 0.06em;
2342
+ padding: 0.28rem 0.55rem;
1969
2343
  text-transform: uppercase;
1970
2344
  }
1971
2345
  .conversation-bubble {
1972
2346
  --expandable-fade-color: rgba(255, 255, 255, 0.96);
1973
- border: 1px solid var(--line);
2347
+ border: 1px solid var(--message-border-color);
1974
2348
  border-radius: 14px;
1975
- background: rgba(255, 255, 255, 0.9);
2349
+ background: var(--message-surface);
1976
2350
  padding: 0.9rem 1rem;
1977
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72);
2351
+ box-shadow: inset 3px 0 0 var(--message-accent), inset 0 1px 0 rgba(255, 255, 255, 0.72);
2352
+ }
2353
+ .message-insight-banner {
2354
+ display: flex;
2355
+ flex-direction: column;
2356
+ gap: 0.55rem;
2357
+ margin-bottom: 0.85rem;
2358
+ }
2359
+ .message-insight-card {
2360
+ display: flex;
2361
+ flex-direction: column;
2362
+ gap: 0.35rem;
2363
+ padding: 0.7rem 0.8rem;
2364
+ border: 1px solid rgba(184, 129, 44, 0.16);
2365
+ border-radius: 12px;
2366
+ background: rgba(255, 248, 236, 0.9);
2367
+ }
2368
+ .message-insight-card.is-highlight {
2369
+ border-color: rgba(86, 107, 147, 0.16);
2370
+ background: rgba(241, 246, 255, 0.88);
2371
+ }
2372
+ .message-insight-card-header {
2373
+ display: flex;
2374
+ align-items: center;
2375
+ justify-content: space-between;
2376
+ gap: 0.5rem;
2377
+ flex-wrap: wrap;
2378
+ }
2379
+ .message-insight-card-tags,
2380
+ .structured-markup-tags {
2381
+ display: flex;
2382
+ flex-wrap: wrap;
2383
+ gap: 0.35rem;
2384
+ }
2385
+ .message-insight-card-copy {
2386
+ color: var(--foreground);
2387
+ font-size: 0.82rem;
2388
+ line-height: 1.45;
2389
+ }
2390
+ .trace-insights-content {
2391
+ display: flex;
2392
+ flex-direction: column;
2393
+ gap: 0.7rem;
2394
+ }
2395
+ .trace-insight-item {
2396
+ display: flex;
2397
+ flex-direction: column;
2398
+ gap: 0.35rem;
2399
+ padding: 0.78rem 0.85rem;
2400
+ border: 1px solid rgba(86, 107, 147, 0.14);
2401
+ border-radius: 12px;
2402
+ background: rgba(243, 247, 255, 0.84);
2403
+ }
2404
+ .trace-insight-item.is-structured {
2405
+ border-color: rgba(34, 154, 161, 0.16);
2406
+ background: rgba(240, 252, 252, 0.9);
2407
+ }
2408
+ .trace-insight-item-header,
2409
+ .trace-insight-item-tags {
2410
+ display: flex;
2411
+ align-items: center;
2412
+ gap: 0.45rem;
2413
+ flex-wrap: wrap;
2414
+ }
2415
+ .trace-insight-item-header {
2416
+ justify-content: space-between;
2417
+ }
2418
+ .trace-insight-item-source {
2419
+ color: var(--muted-foreground);
2420
+ font-size: 0.74rem;
2421
+ font-family:
2422
+ ui-monospace,
2423
+ SFMono-Regular,
2424
+ Menlo,
2425
+ Consolas,
2426
+ monospace;
2427
+ }
2428
+ .trace-insight-item-copy {
2429
+ color: var(--foreground);
2430
+ font-size: 0.83rem;
2431
+ line-height: 1.5;
2432
+ }
2433
+ .structured-markup-block {
2434
+ display: flex;
2435
+ flex-direction: column;
2436
+ gap: 0.75rem;
2437
+ }
2438
+ .structured-markup-header {
2439
+ display: flex;
2440
+ align-items: center;
2441
+ justify-content: space-between;
2442
+ gap: 0.5rem;
2443
+ flex-wrap: wrap;
2444
+ }
2445
+ .structured-markup-pre {
2446
+ margin: 0;
2447
+ padding: 0.9rem 1rem;
2448
+ border-radius: 12px;
2449
+ border: 1px solid rgba(34, 154, 161, 0.18);
2450
+ background: rgba(240, 252, 252, 0.92);
2451
+ line-height: 1.5;
2452
+ overflow: auto;
2453
+ }
2454
+ .structured-markup-token.is-tag-name {
2455
+ color: #1b6a72;
2456
+ font-weight: 700;
2457
+ }
2458
+ .structured-markup-token.is-tag-punctuation,
2459
+ .structured-markup-token.is-attr-punctuation {
2460
+ color: var(--muted-foreground);
2461
+ }
2462
+ .structured-markup-token.is-attr-name {
2463
+ color: #7a4d13;
2464
+ }
2465
+ .structured-markup-token.is-attr-value {
2466
+ color: #245fd6;
1978
2467
  }
1979
2468
  .conversation-row.is-user .conversation-bubble {
1980
- --expandable-fade-color: rgba(224, 236, 248, 0.96);
1981
- background: rgba(224, 236, 248, 0.88);
2469
+ --expandable-fade-color: rgba(232, 251, 242, 0.98);
1982
2470
  }
1983
2471
  .conversation-row.is-assistant .conversation-bubble {
1984
2472
  --expandable-fade-color: rgba(255, 255, 255, 0.98);
1985
- background: rgba(255, 255, 255, 0.96);
1986
- }
1987
- .conversation-row.is-system .conversation-role {
1988
- color: var(--primary);
1989
2473
  }
1990
2474
  .conversation-row.is-system .conversation-bubble {
1991
2475
  --expandable-fade-color: rgba(235, 242, 250, 0.98);
1992
- border-color: rgba(40, 93, 168, 0.16);
1993
- background: rgba(235, 242, 250, 0.94);
1994
- box-shadow: inset 3px 0 0 rgba(40, 93, 168, 0.4);
1995
2476
  }
1996
2477
  .tool-result-bubble {
1997
- --expandable-fade-color: rgba(245, 248, 251, 0.98);
2478
+ --expandable-fade-color: rgba(238, 248, 243, 0.98);
1998
2479
  display: flex;
1999
2480
  flex-direction: column;
2000
2481
  gap: 0.8rem;
2001
- background: rgba(245, 248, 251, 0.94);
2002
2482
  }
2003
2483
  .tool-call-bubble {
2484
+ --expandable-fade-color: rgba(252, 245, 232, 0.98);
2004
2485
  display: flex;
2005
2486
  flex-direction: column;
2006
2487
  gap: 0.8rem;
2007
- background: rgba(237, 243, 249, 0.96);
2008
2488
  }
2009
2489
  .tool-result-meta {
2010
2490
  display: flex;
@@ -2329,14 +2809,18 @@ pre {
2329
2809
  gap: 0.8rem;
2330
2810
  }
2331
2811
  .message-card {
2812
+ --message-accent: rgba(120, 137, 159, 0.22);
2813
+ --message-border-color: rgba(88, 105, 130, 0.1);
2814
+ --message-surface: rgba(255, 255, 255, 0.92);
2332
2815
  --expandable-fade-color: rgba(255, 255, 255, 0.98);
2333
2816
  display: flex;
2334
2817
  flex-direction: column;
2335
2818
  gap: 0.75rem;
2336
2819
  padding: 0.9rem;
2337
2820
  border-radius: 12px;
2338
- background: rgba(255, 255, 255, 0.92);
2339
- border: 1px solid rgba(88, 105, 130, 0.08);
2821
+ background: var(--message-surface);
2822
+ border: 1px solid var(--message-border-color);
2823
+ box-shadow: inset 3px 0 0 var(--message-accent), inset 0 1px 0 rgba(255, 255, 255, 0.68);
2340
2824
  }
2341
2825
  .message-card-header {
2342
2826
  display: flex;
@@ -2362,21 +2846,28 @@ pre {
2362
2846
  font-weight: 600;
2363
2847
  }
2364
2848
  .message-card.role-system {
2849
+ --message-accent: rgba(46, 104, 255, 0.56);
2850
+ --message-border-color: rgba(46, 104, 255, 0.24);
2851
+ --message-surface: rgba(233, 240, 255, 0.98);
2365
2852
  --expandable-fade-color: rgba(236, 242, 250, 0.98);
2366
- border-color: rgba(40, 93, 168, 0.14);
2367
- background: rgba(236, 242, 250, 0.94);
2368
2853
  }
2369
2854
  .message-card.role-assistant {
2855
+ --message-accent: rgba(151, 96, 255, 0.48);
2856
+ --message-border-color: rgba(151, 96, 255, 0.2);
2857
+ --message-surface: rgba(247, 240, 255, 0.98);
2370
2858
  --expandable-fade-color: rgba(255, 255, 255, 0.98);
2371
- background: rgba(255, 255, 255, 0.96);
2372
2859
  }
2373
2860
  .message-card.role-user {
2374
- --expandable-fade-color: rgba(227, 237, 248, 0.96);
2375
- background: rgba(227, 237, 248, 0.82);
2861
+ --message-accent: rgba(46, 181, 129, 0.58);
2862
+ --message-border-color: rgba(46, 181, 129, 0.24);
2863
+ --message-surface: rgba(232, 251, 242, 0.97);
2864
+ --expandable-fade-color: rgba(232, 251, 242, 0.98);
2376
2865
  }
2377
2866
  .message-card.role-tool {
2378
- --expandable-fade-color: rgba(243, 247, 251, 0.98);
2379
- background: rgba(243, 247, 251, 0.94);
2867
+ --message-accent: rgba(23, 171, 108, 0.52);
2868
+ --message-border-color: rgba(23, 171, 108, 0.22);
2869
+ --message-surface: rgba(231, 251, 240, 0.97);
2870
+ --expandable-fade-color: rgba(238, 248, 243, 0.98);
2380
2871
  }
2381
2872
  .tool-call-stack {
2382
2873
  display: flex;
@@ -2628,7 +3119,10 @@ pre {
2628
3119
  :root[data-theme=dark] .sheet-close:focus-visible,
2629
3120
  :root[data-theme=dark] .nav-item:focus-visible,
2630
3121
  :root[data-theme=dark] .nav-switch-button:focus-visible,
3122
+ :root[data-theme=dark] .session-nav-card:focus-visible,
2631
3123
  :root[data-theme=dark] .theme-switch-button:focus-visible,
3124
+ :root[data-theme=dark] .trace-detail-breadcrumb-segment:focus-visible,
3125
+ :root[data-theme=dark] .ui-badge-button:focus-visible,
2632
3126
  :root[data-theme=dark] .expandable-toggle:focus-visible,
2633
3127
  :root[data-theme=dark] .tree-node-toggle:focus-visible,
2634
3128
  :root[data-theme=dark] .tree-node-select:focus-visible,
@@ -2657,11 +3151,24 @@ pre {
2657
3151
  background: rgba(134, 184, 255, 0.14);
2658
3152
  color: var(--primary-strong);
2659
3153
  }
2660
- :root[data-theme=dark] .session-sidebar-toolbar {
3154
+ :root[data-theme=dark] .session-nav-section {
2661
3155
  border-color: rgba(128, 153, 189, 0.14);
2662
3156
  background: rgba(16, 24, 36, 0.82);
2663
3157
  box-shadow: 0 10px 24px rgba(2, 10, 24, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.04);
2664
3158
  }
3159
+ :root[data-theme=dark] .session-nav-card {
3160
+ border-color: rgba(128, 153, 189, 0.12);
3161
+ background: rgba(18, 27, 40, 0.92);
3162
+ box-shadow: 0 12px 28px rgba(2, 10, 24, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.04);
3163
+ }
3164
+ :root[data-theme=dark] .session-nav-card:hover,
3165
+ :root[data-theme=dark] .session-nav-card.is-active {
3166
+ border-color: rgba(134, 184, 255, 0.18);
3167
+ background: rgba(29, 43, 64, 0.88);
3168
+ }
3169
+ :root[data-theme=dark] .session-nav-card.is-active {
3170
+ box-shadow: inset 3px 0 0 rgba(134, 184, 255, 0.82), 0 16px 32px rgba(2, 10, 24, 0.28);
3171
+ }
2665
3172
  :root[data-theme=dark] .trace-group-button,
2666
3173
  :root[data-theme=dark] .nav-item,
2667
3174
  :root[data-theme=dark] .tree-node-card,
@@ -2803,17 +3310,22 @@ pre {
2803
3310
  :root[data-theme=dark] .hierarchy-timeline-row-gutter::after {
2804
3311
  background: color-mix(in srgb, var(--timeline-row-color) 24%, rgba(128, 153, 189, 0.14));
2805
3312
  }
3313
+ :root[data-theme=dark] .hierarchy-timeline-row-ancestor::before,
3314
+ :root[data-theme=dark] .hierarchy-timeline-row-connector-top,
3315
+ :root[data-theme=dark] .hierarchy-timeline-row-connector-elbow,
3316
+ :root[data-theme=dark] .hierarchy-timeline-row-connector-bottom {
3317
+ background: color-mix(in srgb, var(--timeline-row-color) 32%, rgba(128, 153, 189, 0.18));
3318
+ }
2806
3319
  :root[data-theme=dark] .hierarchy-timeline-row.is-structure .hierarchy-timeline-row-title-text {
2807
3320
  color: color-mix(in srgb, var(--timeline-row-color) 48%, white);
2808
3321
  }
2809
- :root[data-theme=dark] .hierarchy-timeline-row-inspect {
2810
- border-color: rgba(134, 184, 255, 0.18);
2811
- background: rgba(134, 184, 255, 0.12);
2812
- color: rgba(186, 214, 255, 0.96);
3322
+ :root[data-theme=dark] .hierarchy-timeline-row-flag {
3323
+ background: rgba(34, 154, 161, 0.18);
3324
+ color: #9be5e8;
2813
3325
  }
2814
- :root[data-theme=dark] .hierarchy-timeline-row.is-clickable:hover .hierarchy-timeline-row-inspect {
2815
- border-color: rgba(134, 184, 255, 0.24);
2816
- background: rgba(134, 184, 255, 0.18);
3326
+ :root[data-theme=dark] .hierarchy-timeline-row-flag.is-highlight {
3327
+ background: rgba(184, 129, 44, 0.18);
3328
+ color: #f0c780;
2817
3329
  }
2818
3330
  :root[data-theme=dark] .trace-detail-breadcrumb {
2819
3331
  color: rgba(182, 197, 219, 0.74);
@@ -2825,6 +3337,9 @@ pre {
2825
3337
  background: rgba(134, 184, 255, 0.14);
2826
3338
  color: rgba(186, 214, 255, 0.96);
2827
3339
  }
3340
+ :root[data-theme=dark] .trace-detail-breadcrumb-segment:hover {
3341
+ color: rgba(186, 214, 255, 0.96);
3342
+ }
2828
3343
  :root[data-theme=dark] .trace-detail-subtitle,
2829
3344
  :root[data-theme=dark] .trace-detail-json-toggle {
2830
3345
  color: rgba(182, 197, 219, 0.74);
@@ -2892,29 +3407,93 @@ pre {
2892
3407
  background: rgba(12, 18, 28, 0.96);
2893
3408
  box-shadow: -24px 0 70px rgba(1, 7, 18, 0.42);
2894
3409
  }
3410
+ :root[data-theme=dark] .conversation-row,
3411
+ :root[data-theme=dark] .message-card {
3412
+ --message-role-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
3413
+ }
2895
3414
  :root[data-theme=dark] .conversation-row.is-user .conversation-bubble,
2896
3415
  :root[data-theme=dark] .message-card.role-user {
2897
- --expandable-fade-color: rgba(33, 47, 69, 0.98);
2898
- background: rgba(33, 47, 69, 0.96);
3416
+ --message-accent: rgba(76, 218, 157, 0.58);
3417
+ --message-border-color: rgba(76, 218, 157, 0.28);
3418
+ --message-surface: rgba(10, 72, 49, 0.98);
3419
+ --message-label-color: rgba(209, 255, 234, 0.98);
3420
+ --message-label-border: rgba(76, 218, 157, 0.24);
3421
+ --message-label-surface: rgba(76, 218, 157, 0.18);
3422
+ --expandable-fade-color: rgba(10, 72, 49, 0.99);
2899
3423
  }
2900
3424
  :root[data-theme=dark] .conversation-row.is-assistant .conversation-bubble,
2901
3425
  :root[data-theme=dark] .message-card.role-assistant {
3426
+ --message-accent: rgba(177, 108, 255, 0.54);
3427
+ --message-border-color: rgba(177, 108, 255, 0.24);
3428
+ --message-surface: rgba(54, 24, 89, 0.98);
3429
+ --message-label-color: rgba(231, 208, 255, 0.98);
3430
+ --message-label-border: rgba(177, 108, 255, 0.22);
3431
+ --message-label-surface: rgba(177, 108, 255, 0.16);
2902
3432
  --expandable-fade-color: rgba(22, 32, 48, 0.99);
2903
- background: rgba(22, 32, 48, 0.98);
2904
3433
  }
2905
3434
  :root[data-theme=dark] .conversation-row.is-system .conversation-bubble,
2906
3435
  :root[data-theme=dark] .message-card.role-system {
3436
+ --message-accent: rgba(79, 136, 255, 0.62);
3437
+ --message-border-color: rgba(79, 136, 255, 0.28);
3438
+ --message-surface: rgba(17, 42, 96, 0.98);
3439
+ --message-label-color: rgba(203, 221, 255, 0.98);
3440
+ --message-label-border: rgba(79, 136, 255, 0.26);
3441
+ --message-label-surface: rgba(79, 136, 255, 0.18);
2907
3442
  --expandable-fade-color: rgba(26, 39, 57, 0.99);
2908
- border-color: rgba(134, 184, 255, 0.24);
2909
- background: rgba(26, 39, 57, 0.98);
2910
- box-shadow: inset 3px 0 0 rgba(134, 184, 255, 0.42);
3443
+ }
3444
+ :root[data-theme=dark] .conversation-row.is-tool .conversation-bubble,
3445
+ :root[data-theme=dark] .message-card.role-tool {
3446
+ --message-accent: rgba(60, 212, 144, 0.56);
3447
+ --message-border-color: rgba(60, 212, 144, 0.26);
3448
+ --message-surface: rgba(11, 63, 42, 0.98);
3449
+ --message-label-color: rgba(203, 255, 229, 0.98);
3450
+ --message-label-border: rgba(60, 212, 144, 0.22);
3451
+ --message-label-surface: rgba(60, 212, 144, 0.16);
3452
+ --expandable-fade-color: rgba(18, 34, 33, 0.99);
3453
+ }
3454
+ :root[data-theme=dark] .conversation-row.is-tool-call .conversation-bubble {
3455
+ --message-accent: rgba(255, 170, 66, 0.6);
3456
+ --message-border-color: rgba(255, 170, 66, 0.28);
3457
+ --message-surface: rgba(84, 43, 5, 0.98);
3458
+ --message-label-color: rgba(255, 228, 184, 0.98);
3459
+ --message-label-border: rgba(255, 170, 66, 0.24);
3460
+ --message-label-surface: rgba(255, 170, 66, 0.16);
3461
+ --expandable-fade-color: rgba(44, 31, 16, 0.99);
2911
3462
  }
2912
3463
  :root[data-theme=dark] .tool-result-bubble {
2913
- --expandable-fade-color: rgba(17, 26, 39, 0.99);
2914
- background: rgba(17, 26, 39, 0.96);
3464
+ --expandable-fade-color: rgba(18, 34, 33, 0.99);
2915
3465
  }
2916
3466
  :root[data-theme=dark] .tool-call-bubble {
2917
- background: rgba(20, 32, 48, 0.98);
3467
+ --expandable-fade-color: rgba(44, 31, 16, 0.99);
3468
+ }
3469
+ :root[data-theme=dark] .message-insight-card {
3470
+ border-color: rgba(184, 129, 44, 0.24);
3471
+ background: rgba(61, 45, 18, 0.8);
3472
+ }
3473
+ :root[data-theme=dark] .message-insight-card.is-highlight {
3474
+ border-color: rgba(86, 107, 147, 0.24);
3475
+ background: rgba(27, 38, 57, 0.82);
3476
+ }
3477
+ :root[data-theme=dark] .trace-insight-item {
3478
+ border-color: rgba(86, 107, 147, 0.24);
3479
+ background: rgba(27, 38, 57, 0.82);
3480
+ }
3481
+ :root[data-theme=dark] .trace-insight-item.is-structured {
3482
+ border-color: rgba(34, 154, 161, 0.22);
3483
+ background: rgba(14, 43, 46, 0.58);
3484
+ }
3485
+ :root[data-theme=dark] .structured-markup-pre {
3486
+ border-color: rgba(34, 154, 161, 0.22);
3487
+ background: rgba(14, 43, 46, 0.58);
3488
+ }
3489
+ :root[data-theme=dark] .structured-markup-token.is-tag-name {
3490
+ color: #8de0e6;
3491
+ }
3492
+ :root[data-theme=dark] .structured-markup-token.is-attr-name {
3493
+ color: #efc27d;
3494
+ }
3495
+ :root[data-theme=dark] .structured-markup-token.is-attr-value {
3496
+ color: #9bc0ff;
2918
3497
  }
2919
3498
  :root[data-theme=dark] .markdown-body code {
2920
3499
  background: rgba(101, 134, 182, 0.18);
@@ -3024,7 +3603,9 @@ pre {
3024
3603
  }
3025
3604
  }
3026
3605
  @media (max-width: 1180px) {
3027
- .workspace-grid,
3606
+ .workspace-grid {
3607
+ grid-template-columns: minmax(24rem, 28rem) minmax(0, 1fr);
3608
+ }
3028
3609
  .filters-grid,
3029
3610
  .filters-secondary-row {
3030
3611
  grid-template-columns: minmax(0, 1fr);
@@ -3037,8 +3618,7 @@ pre {
3037
3618
  .inspector-status {
3038
3619
  justify-content: space-between;
3039
3620
  }
3040
- .navigator-header,
3041
- .trace-detail-toolbar {
3621
+ .navigator-header {
3042
3622
  flex-direction: column;
3043
3623
  align-items: stretch;
3044
3624
  }
@@ -3061,6 +3641,62 @@ pre {
3061
3641
  width: min(100vw, 48rem);
3062
3642
  }
3063
3643
  }
3644
+ @media (max-width: 960px) {
3645
+ .app-shell {
3646
+ height: auto;
3647
+ min-height: 100dvh;
3648
+ overflow-y: auto;
3649
+ }
3650
+ .app-frame {
3651
+ height: auto;
3652
+ min-height: 100dvh;
3653
+ }
3654
+ .board-shell {
3655
+ flex: 0 0 auto;
3656
+ height: auto;
3657
+ min-height: calc(100dvh - (var(--page-gutter) * 2));
3658
+ overflow: visible;
3659
+ }
3660
+ .workspace-grid,
3661
+ .filters-grid,
3662
+ .filters-secondary-row {
3663
+ grid-template-columns: minmax(0, 1fr);
3664
+ }
3665
+ .workspace-grid {
3666
+ flex: 0 0 auto;
3667
+ overflow: visible;
3668
+ min-height: auto;
3669
+ }
3670
+ .sidebar-card,
3671
+ .timeline-card,
3672
+ .session-sidebar-shell,
3673
+ .trace-detail-panel,
3674
+ .trace-detail-main,
3675
+ .trace-detail-primary,
3676
+ .trace-detail-secondary {
3677
+ min-height: auto;
3678
+ height: auto;
3679
+ }
3680
+ .content-scroll,
3681
+ .session-nav-list,
3682
+ .hierarchy-timeline-list,
3683
+ .session-sidebar-shell .hierarchy-timeline-list,
3684
+ .trace-detail-scroll,
3685
+ .trace-detail-secondary {
3686
+ overflow: visible;
3687
+ max-height: none;
3688
+ }
3689
+ .trace-detail-scroll {
3690
+ padding-right: 0;
3691
+ }
3692
+ .session-sidebar-shell .hierarchy-timeline-panel {
3693
+ flex: 0 0 auto;
3694
+ }
3695
+ .trace-detail-toolbar {
3696
+ flex-direction: column;
3697
+ align-items: stretch;
3698
+ }
3699
+ }
3064
3700
  @media (max-width: 720px) {
3065
3701
  :root {
3066
3702
  --page-gutter: 1rem;
@@ -3099,7 +3735,7 @@ pre {
3099
3735
  .sheet-header-actions {
3100
3736
  justify-content: flex-end;
3101
3737
  }
3102
- .tabs-list {
3738
+ .tabs-list:not(.detail-tabs) {
3103
3739
  width: 100%;
3104
3740
  }
3105
3741
  .trace-detail-title-row {
@@ -3159,9 +3795,6 @@ pre {
3159
3795
  grid-column: auto;
3160
3796
  grid-template-columns: minmax(0, 1fr) auto;
3161
3797
  }
3162
- .trace-detail-secondary .hierarchy-timeline-row-action {
3163
- justify-content: flex-start;
3164
- }
3165
3798
  .hierarchy-timeline-header,
3166
3799
  .hierarchy-timeline-header-side {
3167
3800
  flex-direction: column;
@@ -3197,7 +3830,4 @@ pre {
3197
3830
  grid-column: auto;
3198
3831
  grid-template-columns: minmax(0, 1fr) auto;
3199
3832
  }
3200
- .hierarchy-timeline-row-action {
3201
- justify-content: flex-start;
3202
- }
3203
3833
  }