claude-discover 1.10.0 → 1.10.2

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.
@@ -124,9 +124,9 @@
124
124
  &:hover rect { filter: brightness(1.15); }
125
125
  &.selected rect { filter: brightness(1.2); }
126
126
  }
127
- /* Legend on the left; centered nav group: ‹ date › — where the date is a
128
- button opening the granularity menu — plus a floating "Today" link. The
129
- empty 1fr side cells keep the nav group truly centered. */
127
+ /* Legend on the left, centered nav group (‹ date › plus a floating "Today"
128
+ link), granularity tabs on the right. The equal 1fr side cells keep the nav
129
+ group truly centered. */
130
130
  .gantt-toolbar {
131
131
  display: grid;
132
132
  grid-template-columns: 1fr auto 1fr;
@@ -143,35 +143,18 @@
143
143
  gap: 4px;
144
144
  }
145
145
 
146
- /* The date is the granularity trigger: click it to open the menu below. */
147
- .gantt-period {
148
- position: relative;
149
- display: inline-flex;
150
- }
151
-
152
146
  .gantt-toolbar-title {
153
- display: inline-flex;
154
- align-items: center;
155
- justify-content: center;
156
- gap: 5px;
157
147
  margin: 0;
158
- background: transparent;
159
- border: none;
160
- border-radius: 6px;
161
148
  padding: 3px 8px;
162
149
  font-size: 18px;
163
150
  font-weight: 600;
164
151
  color: var(--text);
165
152
  white-space: nowrap;
166
153
  min-width: 130px;
167
- cursor: pointer;
154
+ text-align: center;
168
155
  user-select: none;
169
- transition: background 0.12s, color 0.12s;
170
156
  }
171
157
 
172
- .gantt-toolbar-title:hover { background: rgba(74, 158, 255, 0.15); }
173
- .gantt-toolbar-title[aria-expanded="true"] { background: rgba(74, 158, 255, 0.22); }
174
-
175
158
  .gantt-nav-arrow {
176
159
  background: transparent;
177
160
  border: none;
@@ -254,47 +237,36 @@
254
237
  border-radius: 2px;
255
238
  }
256
239
 
257
- .gantt-granularity-caret {
258
- font-size: 15px;
259
- }
260
-
261
- /* Floating menu centered under the date. */
262
- .gantt-granularity-menu {
263
- position: absolute;
264
- top: calc(100% + 6px);
265
- left: 50%;
266
- transform: translateX(-50%);
240
+ /* Spans the period summary panel below it, so the tabs sit centered over it. */
241
+ .gantt-granularity {
242
+ justify-self: end;
243
+ width: var(--gantt-side-width);
267
244
  display: flex;
268
- flex-direction: column;
269
- min-width: 120px;
245
+ gap: 3px;
246
+ padding: 3px;
270
247
  background: var(--bg-elev);
271
- border: 1px solid rgba(80, 120, 168, 0.45);
248
+ border: 1px solid rgb(127 162 205 / 0.35);
272
249
  border-radius: 8px;
273
- box-shadow: 0 6px 14px rgba(0,0,0,0.4);
274
- overflow: hidden;
275
- z-index: 20;
276
- }
277
250
 
278
- .gantt-granularity-option {
279
- background: transparent;
280
- border: none;
281
- color: #c6d2e3;
282
- font-size: 12px;
283
- text-align: left;
284
- padding: 7px 14px;
285
- cursor: pointer;
286
- transition: background 0.12s, color 0.12s;
287
- }
288
-
289
- .gantt-granularity-option:hover {
290
- background: rgba(74, 158, 255, 0.15);
291
- color: #fff;
292
- }
251
+ & button {
252
+ flex: 1;
253
+ background: transparent;
254
+ border: none;
255
+ border-radius: 6px;
256
+ color: var(--text-dim);
257
+ font-family: var(--font-mono), monospace;
258
+ font-size: 12px;
259
+ font-weight: 600;
260
+ text-transform: uppercase;
261
+ letter-spacing: 0.4px;
262
+ padding: 6px 0;
263
+ cursor: pointer;
264
+ user-select: none;
265
+ transition: background 0.12s, color 0.12s;
293
266
 
294
- .gantt-granularity-option.active {
295
- background: rgba(74, 158, 255, 0.22);
296
- color: #fff;
297
- font-weight: 600;
267
+ &:hover { background: rgba(74, 158, 255, 0.1); color: var(--text); }
268
+ &.active { background: rgba(74, 158, 255, 0.3); color: #fff; }
269
+ }
298
270
  }
299
271
  .cost-chart {
300
272
  position: relative;
@@ -654,6 +626,33 @@
654
626
  text-overflow: ellipsis;
655
627
  white-space: nowrap;
656
628
  }
629
+ .divider {
630
+ display: flex;
631
+ align-items: center;
632
+ gap: 12px;
633
+ width: 100%;
634
+ padding: 0;
635
+ border: 0;
636
+ background: none;
637
+ color: var(--text-faint);
638
+ font: inherit;
639
+ white-space: nowrap;
640
+
641
+ /* Wavy rules (~~~ label ~~~): a repeating sine stroke masked over the text color */
642
+ &::before, &::after {
643
+ content: '';
644
+ flex: 1;
645
+ height: 8px;
646
+ background: currentColor;
647
+ opacity: 0.6;
648
+ mask: url("./wave-D-wH63sc.svg") repeat-x center / 20px 8px;
649
+ }
650
+ }
651
+
652
+ button.divider {
653
+ cursor: pointer;
654
+ &:hover { color: var(--text-dim); }
655
+ }
657
656
  .markdown { white-space: normal; max-height: 500px; overflow: auto; }
658
657
  .markdown > *:first-child { margin-top: 0; }
659
658
  .markdown > *:last-child { margin-bottom: 0; }
@@ -750,6 +749,10 @@
750
749
 
751
750
  .conv-row { position: relative; }
752
751
 
752
+ .conv-continues-from { margin-bottom: 20px; }
753
+ .conv-continues-to { margin-top: 20px; }
754
+ .conv-divider { margin: 20px 0; }
755
+
753
756
  .token-point {
754
757
  position: absolute;
755
758
  right: -18px; /* dot centered on the line: gutter 28 − line offset 13 + dot radius 2.5 ≈ 18 */
@@ -764,8 +767,10 @@
764
767
  border-radius: 50%;
765
768
  }
766
769
 
767
- .token-point-user .token-point-dot { background: #5da9c9; }
770
+ .token-point-user .token-point-dot,
771
+ .token-point-compact .token-point-dot { background: #5da9c9; } /* the summary is input, like a user message */
768
772
  .token-point-assistant .token-point-dot { background: #9aa3b2; }
773
+ .token-point-system .token-point-dot { background: var(--text-faint); } /* the least of the three: no color of its own */
769
774
  .token-point-command .token-point-dot { background: var(--accent); } /* slash commands: no tokens, just a marker */
770
775
  .token-point.negative .token-point-dot { background: #63a76b; } /* compaction shrank the context — good news, so green */
771
776
 
@@ -853,6 +858,8 @@
853
858
 
854
859
  .msg-author { color: var(--text); font-weight: 600; font-size: calc(12px * var(--font-scale, 1)); }
855
860
  .msg-user .msg-author { color: rgb(113, 183, 214); }
861
+ .msg-system .msg-author { color: var(--text-dim); }
862
+ .msg-proxy .msg-author, .msg-proxy .msg-icon { color: #a78bfa; }
856
863
 
857
864
  .msg-summary {
858
865
  background: transparent;
@@ -882,7 +889,7 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
882
889
  color: var(--border);
883
890
  }
884
891
 
885
- /* Context injected with a user message, disclosed from its header's `attachments · N items` summary. */
892
+ /* Context injected with a You or System row, disclosed from its header's `N attachments` summary. */
886
893
  .msg-context {
887
894
  margin-bottom: 8px;
888
895
  display: flex;
@@ -915,7 +922,8 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
915
922
  & .turn-blocks > .aux { align-self: stretch; }
916
923
  & .turn-blocks > .tool-result { align-self: stretch; }
917
924
 
918
- & .block-text {
925
+ /* Only the message itself — a skill body folded into a command turn reads plainly */
926
+ & .turn-blocks > .block-text {
919
927
  background: var(--bg-elev);
920
928
  border: 1px solid rgb(47 78 91);
921
929
  color: rgb(113, 183, 214);
@@ -930,13 +938,16 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
930
938
 
931
939
  .turn-assistant .block-text { color: var(--text); }
932
940
 
933
- .turn-meta-note {
934
- & .block-text {
935
- background: transparent;
941
+ .turn-system {
942
+ & .turn-blocks > .aux { align-self: flex-start; }
943
+ & .turn-blocks > .block-text {
936
944
  border: 1px dashed var(--border);
945
+ border-radius: 6px;
946
+ padding: 5px 10px;
947
+ margin: 0;
937
948
  }
938
949
  }
939
- .turn-assistant.turn-meta-note .turn-blocks > .aux { align-self: flex-start; }
950
+ .aux-speaker { opacity: 0.6; }
940
951
 
941
952
  .tool-result {
942
953
  font-size: calc(12px * var(--font-scale, 1));
@@ -961,6 +972,13 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
961
972
  overflow: auto;
962
973
  }
963
974
 
975
+ & .saved-output a {
976
+ color: var(--accent);
977
+ text-decoration: none;
978
+ word-break: break-all;
979
+ &:hover { text-decoration: underline; }
980
+ }
981
+
964
982
  &.error {
965
983
  & .tool-result-label { color: var(--danger); }
966
984
  & pre { border-left-color: var(--danger); color: var(--danger); }
@@ -1016,6 +1034,12 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
1016
1034
  &.error .aux-toggle { color: var(--danger); }
1017
1035
  }
1018
1036
 
1037
+ .system-note {
1038
+ &.warning :is(.aux-toggle, .aux-label) { color: var(--warn); }
1039
+ &.error .aux-label { color: var(--danger); }
1040
+ &.mode .aux-label { color: var(--accent); font-weight: 600; }
1041
+ }
1042
+
1019
1043
  .aux-toggle {
1020
1044
  background: transparent;
1021
1045
  border: none;
@@ -1075,7 +1099,7 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
1075
1099
  letter-spacing: 0.04em;
1076
1100
  padding-top: 6px;
1077
1101
  }
1078
- .instruction-source:first-child { padding-top: 0; }
1102
+ .msg-header + .instruction-source { padding-top: 0; }
1079
1103
 
1080
1104
  /* Full-width toggle so the estimated token count can sit right-aligned, like msg-header-right. */
1081
1105
  /* Nested tool rows cancel the aux-body's right padding so their counts line up with the strips'. */
@@ -1206,6 +1230,28 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
1206
1230
  padding: 0 1px;
1207
1231
  }
1208
1232
  .jsonl-viewer-loading { color: var(--text-faint); }
1233
+ .error-message {
1234
+ padding: 20px; text-align: center;
1235
+ color: var(--danger); word-break: break-word;
1236
+ }
1237
+
1238
+ .app-crash {
1239
+ display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px;
1240
+ height: 100vh; padding: 20px; text-align: center;
1241
+ color: var(--danger); word-break: break-word;
1242
+ }
1243
+
1244
+ .error-banner {
1245
+ position: fixed; top: 8px; left: 50%; transform: translateX(-50%); z-index: 1000;
1246
+ display: flex; align-items: flex-start; gap: 10px;
1247
+ max-width: min(720px, calc(100vw - 16px)); padding: 8px 8px 8px 14px;
1248
+ border: 1px solid var(--danger); border-radius: 6px;
1249
+ background: #1f1215; color: var(--text);
1250
+ word-break: break-word;
1251
+
1252
+ button { flex: none; padding: 0 6px; border: none; background: transparent; color: var(--text-faint); font-size: 16px; line-height: 1; }
1253
+ button:hover { color: var(--text); background: transparent; }
1254
+ }
1209
1255
  .requests-view {
1210
1256
  flex: 1;
1211
1257
  display: flex;
@@ -1423,109 +1469,6 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
1423
1469
  .requests-empty {
1424
1470
  padding: 10px 20px;
1425
1471
  }
1426
- .toggle {
1427
- display: inline-flex;
1428
- align-items: center;
1429
- gap: 8px;
1430
- font-size: 12px;
1431
- color: var(--text-dim);
1432
- cursor: pointer;
1433
- user-select: none;
1434
- padding: 4px 10px;
1435
- background: rgb(11 13 18 / 0.8);
1436
- border: 1px solid var(--bg);
1437
- border-radius: 999px;
1438
- }
1439
-
1440
- .toggle:hover {
1441
- color: var(--text);
1442
- border-color: var(--border-strong);
1443
- }
1444
-
1445
- .toggle input {
1446
- appearance: none;
1447
- -webkit-appearance: none;
1448
- width: 26px;
1449
- height: 14px;
1450
- background: var(--bg-elev-2);
1451
- border: 1px solid var(--border);
1452
- border-radius: 999px;
1453
- position: relative;
1454
- cursor: pointer;
1455
- margin: 0;
1456
- transition: background 120ms ease, border-color 120ms ease;
1457
- }
1458
-
1459
- .toggle input::after {
1460
- content: '';
1461
- position: absolute;
1462
- top: 1px;
1463
- left: 1px;
1464
- width: 10px;
1465
- height: 10px;
1466
- background: var(--text-dim);
1467
- border-radius: 50%;
1468
- transition: transform 120ms ease, background 120ms ease;
1469
- }
1470
-
1471
- .toggle input:checked {
1472
- background: var(--accent);
1473
- border-color: var(--accent);
1474
- }
1475
-
1476
- .toggle input:checked::after {
1477
- transform: translateX(12px);
1478
- background: #fff;
1479
- }
1480
- .prompt-editor-wrap {
1481
- position: relative;
1482
- }
1483
-
1484
- .prompt-editor-raw {
1485
- field-sizing: content; /* auto-grow to the text, like the old contentEditable (Chromium 123+) */
1486
- display: block;
1487
- width: 100%;
1488
- word-break: break-word;
1489
- font-family: var(--font-mono), monospace;
1490
- font-size: 12px;
1491
- line-height: 1.5;
1492
- margin: 0;
1493
- padding: 0;
1494
- border: none;
1495
- background: transparent;
1496
- color: inherit;
1497
- resize: none;
1498
- outline: none;
1499
- }
1500
-
1501
- .prompt-editor-raw:focus {
1502
- outline: 1px solid #4a9eff;
1503
- outline-offset: 4px;
1504
- }
1505
-
1506
- .prompt-editor-styled {
1507
- cursor: text;
1508
- }
1509
-
1510
- .prompt-editor-reset {
1511
- position: absolute;
1512
- top: 0;
1513
- right: 0;
1514
- font-size: 11px;
1515
- color: var(--text-dim);
1516
- background: var(--bg, #1a1a1a);
1517
- border: 1px solid var(--border);
1518
- border-radius: 999px;
1519
- padding: 2px 10px;
1520
- cursor: pointer;
1521
- font-family: inherit;
1522
- z-index: 2;
1523
- }
1524
-
1525
- .prompt-editor-reset:hover {
1526
- color: var(--text);
1527
- border-color: var(--border-strong);
1528
- }
1529
1472
  .agent-prompt-typing {
1530
1473
  display: inline-flex;
1531
1474
  align-items: center;
@@ -1554,112 +1497,12 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
1554
1497
  }
1555
1498
 
1556
1499
  .agent-prompt-output {
1557
- flex: 1;
1558
- min-height: 0;
1559
- overflow: auto;
1560
- border: 1px solid var(--border);
1561
- border-radius: 6px;
1562
- padding: 12px 16px;
1563
- }
1564
- .agent-view {
1565
- flex: 1;
1566
- min-height: 0;
1567
- display: grid;
1568
- grid-template-columns: 1fr 1fr;
1569
- grid-template-rows: auto 1fr;
1570
- padding: 16px 20px;
1571
- position: relative;
1572
- gap: 12px;
1573
- }
1574
-
1575
- .agent-view-actions {
1576
- grid-column: 1 / -1;
1577
- display: inline-flex;
1578
- align-items: center;
1579
- gap: 8px;
1580
- justify-self: end;
1581
- z-index: 1;
1582
- }
1583
-
1584
- .agent-view-block {
1585
- min-height: 0;
1500
+ align-self: stretch;
1501
+ max-height: 320px;
1586
1502
  overflow: auto;
1587
- border: 1px solid var(--border);
1588
- border-radius: 6px;
1589
- padding: 12px 16px;
1590
- }
1591
-
1592
- .agent-view-close {
1593
- font-size: 14px;
1594
- line-height: 1;
1595
- color: var(--text-faint);
1596
- background: transparent;
1597
- border: 1px solid var(--border);
1598
- border-radius: 4px;
1599
- padding: 4px 8px;
1600
- cursor: pointer;
1601
-
1602
- &:hover { color: var(--text); background: var(--bg-elev-2); }
1603
- }
1604
-
1605
- .agent-view-raw {
1606
- white-space: pre-wrap;
1607
- word-break: break-word;
1608
- font-family: var(--font-mono), monospace;
1503
+ background: var(--bg-elev-1, var(--bg));
1609
1504
  font-size: 12px;
1610
- line-height: 1.5;
1611
- margin: 0;
1612
- }
1613
-
1614
- .agent-view-right {
1615
- display: flex;
1616
- flex-direction: column;
1617
- gap: 12px;
1618
- min-height: 0;
1619
- min-width: 0;
1620
- }
1621
-
1622
- .agent-view-left,
1623
- .agent-view-right > .agent-prompt-wrap,
1624
- .agent-view-right > .agent-view-output-wrap {
1625
- flex: 1 1 0;
1626
- min-height: 0;
1627
- min-width: 0;
1628
- display: flex;
1629
- flex-direction: column;
1630
- gap: 6px;
1631
- }
1632
-
1633
- .agent-view-left > .agent-view-block,
1634
- .agent-view-output-wrap > .agent-prompt-output,
1635
- .agent-prompt-wrap > .agent-view-block {
1636
- flex: 1;
1637
- min-height: 0;
1638
1505
  }
1639
-
1640
- .agent-prompt-wrap {
1641
- position: relative;
1642
- }
1643
-
1644
- .agent-view-label {
1645
- font-size: 11px;
1646
- font-weight: 600;
1647
- text-transform: uppercase;
1648
- letter-spacing: 0.6px;
1649
- color: var(--text-faint);
1650
- }
1651
-
1652
- .agent-prompt-actions {
1653
- position: absolute;
1654
- right: 8px;
1655
- bottom: 8px;
1656
- display: inline-flex;
1657
- align-items: center;
1658
- gap: 8px;
1659
- padding: 4px 6px;
1660
- background: var(--bg);
1661
- }
1662
-
1663
1506
  .session-summary {
1664
1507
  width: 280px;
1665
1508
  flex-shrink: 0;
@@ -1675,45 +1518,22 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
1675
1518
  .summary-ai {
1676
1519
  display: flex;
1677
1520
  flex-direction: column;
1521
+ align-items: flex-end;
1678
1522
  gap: 8px;
1679
1523
  padding-bottom: 15px;
1680
1524
  border-bottom: 1px solid var(--border);
1681
1525
  }
1682
1526
 
1683
- .summary-ai-row {
1684
- display: flex;
1685
- justify-content: flex-end;
1686
- align-items: center;
1687
- gap: 4px;
1688
- }
1689
-
1690
- .summary-ai-gear {
1691
- padding: 4px 8px;
1692
- font-size: 14px;
1693
- line-height: 1;
1694
- color: var(--text-faint);
1695
- background: transparent;
1696
- cursor: pointer;
1697
- border: none;
1698
-
1699
- &:hover { color: var(--text); background: transparent; }
1700
- }
1701
-
1702
-
1703
- .summary-ai-output {
1704
- max-height: 320px;
1705
- overflow: auto;
1706
- background: var(--bg-elev-1, var(--bg));
1707
- font-size: 12px;
1527
+ /* Both labels share one grid cell so the button keeps the wider label's width.
1528
+ Doubled class: styles.css loads later and would re-center the text */
1529
+ .button-primary.summary-ai-button {
1530
+ display: inline-grid;
1531
+ text-align: left;
1708
1532
 
1709
- .agent-prompt-output {
1710
- padding: 0;
1711
- border: none;
1712
- border-radius: 0;
1713
- }
1533
+ & > span { grid-area: 1 / 1; }
1534
+ & > .hidden { visibility: hidden; }
1714
1535
  }
1715
1536
 
1716
-
1717
1537
  .summary-section {
1718
1538
  display: flex;
1719
1539
  flex-direction: column;
@@ -1782,6 +1602,8 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
1782
1602
 
1783
1603
  &.mono { font-family: var(--font-mono), monospace; }
1784
1604
 
1605
+ /* A 36-char UUID fits the 248px column on one line, even with a scrollbar */
1606
+ & .session-id { font-size: 11.2px; }
1785
1607
  & .warn { color: var(--warn); }
1786
1608
  & .danger { color: var(--danger); }
1787
1609
  }
@@ -1803,6 +1625,60 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
1803
1625
  &.tone-warn .progress-bar-fill { background: var(--warn); }
1804
1626
  &.tone-danger .progress-bar-fill { background: var(--danger); }
1805
1627
  }
1628
+ .toggle {
1629
+ display: inline-flex;
1630
+ align-items: center;
1631
+ gap: 8px;
1632
+ font-size: 12px;
1633
+ color: var(--text-dim);
1634
+ cursor: pointer;
1635
+ user-select: none;
1636
+ padding: 4px 10px;
1637
+ background: rgb(11 13 18 / 0.8);
1638
+ border: 1px solid var(--bg);
1639
+ border-radius: 999px;
1640
+ }
1641
+
1642
+ .toggle:hover {
1643
+ color: var(--text);
1644
+ border-color: var(--border-strong);
1645
+ }
1646
+
1647
+ .toggle input {
1648
+ appearance: none;
1649
+ -webkit-appearance: none;
1650
+ width: 26px;
1651
+ height: 14px;
1652
+ background: var(--bg-elev-2);
1653
+ border: 1px solid var(--border);
1654
+ border-radius: 999px;
1655
+ position: relative;
1656
+ cursor: pointer;
1657
+ margin: 0;
1658
+ transition: background 120ms ease, border-color 120ms ease;
1659
+ }
1660
+
1661
+ .toggle input::after {
1662
+ content: '';
1663
+ position: absolute;
1664
+ top: 1px;
1665
+ left: 1px;
1666
+ width: 10px;
1667
+ height: 10px;
1668
+ background: var(--text-dim);
1669
+ border-radius: 50%;
1670
+ transition: transform 120ms ease, background 120ms ease;
1671
+ }
1672
+
1673
+ .toggle input:checked {
1674
+ background: var(--accent);
1675
+ border-color: var(--accent);
1676
+ }
1677
+
1678
+ .toggle input:checked::after {
1679
+ transform: translateX(12px);
1680
+ background: #fff;
1681
+ }
1806
1682
  .session-view {
1807
1683
  display: flex;
1808
1684
  flex-direction: column;
@@ -2083,6 +1959,18 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
2083
1959
  white-space: nowrap;
2084
1960
  }
2085
1961
 
1962
+ /* A blue-tinted .statusbar-seg (StatusSwitch lays out the full-height fill and the tooltip) */
1963
+ .statusbar-update { background: rgb(96 165 250 / 0.14); }
1964
+ .statusbar-seg.statusbar-update:hover { background: rgb(96 165 250 / 0.24); }
1965
+ .statusbar-update .statusbar-msg {
1966
+ display: inline-flex;
1967
+ align-items: center;
1968
+ gap: 4px;
1969
+ color: var(--accent);
1970
+ font-weight: 700;
1971
+ white-space: nowrap;
1972
+ }
1973
+
2086
1974
  /* Session-loading indicator (compact progress bar, mirrors SessionSummary's .progress-bar) */
2087
1975
  /* Pinned to the left; the auto margin pushes everything else right.
2088
1976
  Fixed width + tabular-nums keep the layout from shifting as the count changes. */
@@ -2140,6 +2028,7 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
2140
2028
  }
2141
2029
 
2142
2030
  .gantt-pane {
2031
+ --gantt-side-width: 247px;
2143
2032
  display: flex;
2144
2033
  flex-direction: column;
2145
2034
  min-height: 0;
@@ -2154,7 +2043,7 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
2154
2043
 
2155
2044
  & > * { min-width: 0; min-height: 0; }
2156
2045
  & > .gantt-wrap { flex: 1; }
2157
- & > .gantt-side { flex: 0 0 247px; }
2046
+ & > .gantt-side { flex: 0 0 var(--gantt-side-width); }
2158
2047
  }
2159
2048
 
2160
2049
  .body-outer {