claude-code-kanban 7.6.0 → 7.7.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.
package/public/style.css CHANGED
@@ -1427,6 +1427,135 @@ body.booting .boot-splash {
1427
1427
  gap: 6px;
1428
1428
  }
1429
1429
 
1430
+ /* #region KANBOT */
1431
+ .sidebar-footer .footer-kanbot {
1432
+ display: inline-flex;
1433
+ padding: 2px;
1434
+ border: none;
1435
+ border-radius: 4px;
1436
+ background: none;
1437
+ cursor: pointer;
1438
+ opacity: 0.85;
1439
+ }
1440
+
1441
+ .sidebar-footer .footer-kanbot:hover {
1442
+ background: var(--bg-hover);
1443
+ opacity: 1;
1444
+ }
1445
+
1446
+ .kanbot-popover {
1447
+ display: none;
1448
+ position: fixed;
1449
+ left: 12px;
1450
+ bottom: 40px;
1451
+ z-index: 900;
1452
+ flex-direction: column;
1453
+ width: min(460px, calc(100vw - 24px));
1454
+ height: min(560px, calc(100vh - 60px));
1455
+ border: 1px solid var(--border);
1456
+ border-radius: 10px;
1457
+ background: var(--bg-deep);
1458
+ box-shadow: 0 12px 40px rgb(0 0 0 / 35%);
1459
+ overflow: hidden;
1460
+ }
1461
+
1462
+ .kanbot-popover.visible {
1463
+ display: flex;
1464
+ }
1465
+
1466
+ .kanbot-popover.expanded {
1467
+ left: 50%;
1468
+ top: 50%;
1469
+ bottom: auto;
1470
+ width: min(1200px, calc(100vw - 48px));
1471
+ height: calc(100vh - 96px);
1472
+ transform: translate(-50%, -50%);
1473
+ }
1474
+
1475
+ .kanbot-popover.docked {
1476
+ left: auto;
1477
+ right: 0;
1478
+ top: 0;
1479
+ bottom: 0;
1480
+ width: min(var(--kanbot-width, 540px), 100vw);
1481
+ height: auto;
1482
+ border-width: 0 0 0 1px;
1483
+ border-radius: 0;
1484
+ }
1485
+
1486
+ .kanbot-resize {
1487
+ display: none;
1488
+ }
1489
+
1490
+ .kanbot-popover.docked .kanbot-resize {
1491
+ display: block;
1492
+ }
1493
+
1494
+ .kanbot-popover.resizing .kanbot-frame {
1495
+ pointer-events: none;
1496
+ }
1497
+
1498
+ .kanbot-head {
1499
+ display: flex;
1500
+ align-items: center;
1501
+ gap: 8px;
1502
+ padding: 6px 8px 6px 12px;
1503
+ border-bottom: 1px solid var(--border);
1504
+ background: var(--bg-elevated);
1505
+ font-size: 12px;
1506
+ }
1507
+
1508
+ .kanbot-status {
1509
+ flex: 1;
1510
+ color: var(--text-tertiary);
1511
+ font-family: var(--font-mono);
1512
+ font-size: 11px;
1513
+ }
1514
+
1515
+ .kanbot-dock,
1516
+ .kanbot-expand,
1517
+ .kanbot-collapse,
1518
+ .kanbot-close {
1519
+ padding: 0 6px;
1520
+ border: none;
1521
+ background: none;
1522
+ color: var(--text-secondary);
1523
+ font-size: 16px;
1524
+ line-height: 1;
1525
+ cursor: pointer;
1526
+ }
1527
+
1528
+ .kanbot-dock,
1529
+ .kanbot-expand {
1530
+ display: inline-flex;
1531
+ align-items: center;
1532
+ align-self: stretch;
1533
+ }
1534
+
1535
+ .kanbot-dock svg,
1536
+ .kanbot-expand svg {
1537
+ width: 13px;
1538
+ height: 13px;
1539
+ }
1540
+
1541
+ .kanbot-dock.active {
1542
+ color: var(--accent);
1543
+ }
1544
+
1545
+ .kanbot-body {
1546
+ flex: 1;
1547
+ min-height: 0;
1548
+ padding: 4px 0 0 6px;
1549
+ }
1550
+
1551
+ .kanbot-frame {
1552
+ display: block;
1553
+ width: 100%;
1554
+ height: 100%;
1555
+ border: 0;
1556
+ }
1557
+ /* #endregion */
1558
+
1430
1559
  .sidebar-footer .footer-plugin-warning {
1431
1560
  padding: 0;
1432
1561
  border: none;
@@ -1727,9 +1856,9 @@ body.booting .boot-splash {
1727
1856
 
1728
1857
  .icon-btn-danger:hover,
1729
1858
  .icon-btn-danger:focus-visible {
1730
- background: color-mix(in srgb, var(--danger) 12%, transparent);
1731
- color: color-mix(in srgb, var(--danger) 80%, black);
1732
- border-color: var(--danger);
1859
+ background: var(--bg-elevated);
1860
+ color: var(--text-primary);
1861
+ border-color: var(--border);
1733
1862
  }
1734
1863
 
1735
1864
  /* theme picker: palette icon button + custom popover with per-theme swatches
@@ -3540,9 +3669,8 @@ code.ct .ct-has[aria-expanded='false'] .ct-name::after {
3540
3669
  }
3541
3670
 
3542
3671
  .terminal-manager-end.btn-secondary:hover {
3543
- color: var(--danger);
3544
- border-color: color-mix(in srgb, var(--danger) 50%, transparent);
3545
- background: color-mix(in srgb, var(--danger) 8%, transparent);
3672
+ color: var(--text-primary);
3673
+ background: var(--bg-elevated);
3546
3674
  }
3547
3675
 
3548
3676
  .terminal-manager-footer {
@@ -3871,8 +3999,8 @@ body.light .show-card.focused {
3871
3999
  }
3872
4000
 
3873
4001
  .show-btn.remove:hover:not(:disabled) {
3874
- color: var(--danger);
3875
- background: var(--danger-dim);
4002
+ color: var(--text-primary);
4003
+ background: var(--bg-elevated);
3876
4004
  }
3877
4005
 
3878
4006
  .show-ticks {
@@ -4086,19 +4214,6 @@ body.light .show-card.focused {
4086
4214
  background: color-mix(in srgb, var(--danger) 10%, transparent);
4087
4215
  }
4088
4216
 
4089
- .show-md pre.mermaid {
4090
- min-height: 40px;
4091
- margin: 0.6em 0;
4092
- overflow-x: auto;
4093
- text-align: center;
4094
- background: transparent;
4095
- color: transparent;
4096
- }
4097
-
4098
- .show-md pre.mermaid[data-processed] {
4099
- color: inherit;
4100
- }
4101
-
4102
4217
  .show-md pre.mermaid svg {
4103
4218
  max-width: 100%;
4104
4219
  height: auto;
@@ -5197,7 +5312,7 @@ body.show-resizing iframe {
5197
5312
  }
5198
5313
  .pinned-item-unpin:hover {
5199
5314
  opacity: 1;
5200
- color: var(--danger);
5315
+ color: var(--text-primary);
5201
5316
  }
5202
5317
  .msg-pin-btn.pinned svg,
5203
5318
  #msg-detail-pin-btn.active svg,
@@ -5449,6 +5564,10 @@ body.show-resizing iframe {
5449
5564
  margin: 0.8em 0;
5450
5565
  border-color: var(--border);
5451
5566
  }
5567
+ .rendered-md img {
5568
+ max-width: 100%;
5569
+ height: auto;
5570
+ }
5452
5571
  .msg-detail-pre {
5453
5572
  white-space: pre-wrap;
5454
5573
  word-break: break-all;
@@ -5626,24 +5745,11 @@ body.show-resizing iframe {
5626
5745
  .msg-waiting-discard:hover {
5627
5746
  /* biome-ignore lint/complexity/noImportantStyles: override parent hover opacity */
5628
5747
  opacity: 1 !important;
5629
- color: var(--danger);
5748
+ color: var(--text-primary);
5630
5749
  }
5631
5750
  .msg-waiting .msg-text {
5632
5751
  font-weight: 500;
5633
5752
  }
5634
- .msg-waiting-pill {
5635
- display: inline-block;
5636
- padding: 1px 6px;
5637
- margin-right: 6px;
5638
- border-radius: 3px;
5639
- background: color-mix(in srgb, var(--warning) 22%, transparent);
5640
- color: var(--warning);
5641
- font-size: 10px;
5642
- font-weight: 600;
5643
- text-transform: uppercase;
5644
- letter-spacing: 0.3px;
5645
- vertical-align: middle;
5646
- }
5647
5753
  .msg-waiting-body {
5648
5754
  font-size: 12px;
5649
5755
  margin-top: 4px;
@@ -5673,8 +5779,9 @@ body.show-resizing iframe {
5673
5779
  margin-top: 0;
5674
5780
  }
5675
5781
  .msg-waiting-actions {
5676
- flex-shrink: 0;
5782
+ flex: 1;
5677
5783
  display: flex;
5784
+ justify-content: flex-end;
5678
5785
  gap: 6px;
5679
5786
  }
5680
5787
  .msg-waiting-actions button {
@@ -5728,25 +5835,20 @@ body.show-resizing iframe {
5728
5835
  cursor: pointer;
5729
5836
  transition: all 0.15s ease;
5730
5837
  }
5731
- /* One quiet color treatment for both button families — the card's compact
5732
- buttons need the descendant selector to out-rank `.msg-waiting-actions button` */
5733
- .waiting-btn-allow,
5734
- .msg-waiting-actions .msg-waiting-allow {
5735
- color: var(--success);
5736
- border-color: color-mix(in srgb, var(--success) 35%, transparent);
5838
+ .waiting-btn-allow {
5839
+ color: var(--accent);
5840
+ border-color: color-mix(in srgb, var(--accent) 40%, transparent);
5737
5841
  }
5738
- .waiting-btn-allow:hover:not(:disabled),
5739
- .msg-waiting-actions .msg-waiting-allow:hover {
5740
- background: color-mix(in srgb, var(--success) 10%, transparent);
5842
+ .waiting-btn-allow:hover:not(:disabled) {
5843
+ background: color-mix(in srgb, var(--accent) 12%, transparent);
5741
5844
  }
5742
- .waiting-btn-deny,
5743
- .msg-waiting-actions .msg-waiting-deny {
5744
- color: var(--danger);
5745
- border-color: color-mix(in srgb, var(--danger) 35%, transparent);
5845
+ .waiting-btn-deny {
5846
+ color: var(--text-secondary);
5847
+ border-color: var(--border);
5746
5848
  }
5747
- .waiting-btn-deny:hover,
5748
- .msg-waiting-actions .msg-waiting-deny:hover {
5749
- background: color-mix(in srgb, var(--danger) 10%, transparent);
5849
+ .waiting-btn-deny:hover {
5850
+ background: var(--bg-elevated);
5851
+ color: var(--text-primary);
5750
5852
  }
5751
5853
  .waiting-btn-allow:disabled {
5752
5854
  opacity: 0.4;
@@ -5828,8 +5930,9 @@ body.show-resizing iframe {
5828
5930
  }
5829
5931
  .waiting-option {
5830
5932
  display: flex;
5831
- flex-direction: column;
5832
- gap: 2px;
5933
+ flex-direction: row;
5934
+ align-items: flex-start;
5935
+ gap: 10px;
5833
5936
  width: 100%;
5834
5937
  text-align: left;
5835
5938
  border: 1px solid var(--border);
@@ -5905,78 +6008,343 @@ body.show-resizing iframe {
5905
6008
  .waiting-option-input::placeholder {
5906
6009
  color: var(--text-secondary);
5907
6010
  }
5908
- .msg-item.msg-idle .msg-icon {
5909
- width: 12px;
5910
- height: 12px;
5911
- }
5912
- .teammate-name {
5913
- font-weight: 600;
5914
- font-size: 11px;
6011
+ /* #region ASK_PROMPTS */
6012
+ .waiting-option-text {
6013
+ display: flex;
6014
+ flex-direction: column;
6015
+ gap: 2px;
6016
+ min-width: 0;
6017
+ flex: 1;
5915
6018
  }
5916
- .idle-label,
5917
- .protocol-label {
6019
+ .waiting-option-key,
6020
+ .waiting-qtabs-hint kbd,
6021
+ .waiting-footer-hint kbd {
6022
+ font-family: var(--mono);
5918
6023
  font-size: 10px;
5919
- color: var(--text-muted);
5920
- font-style: italic;
6024
+ line-height: 1;
6025
+ border: 1px solid var(--border);
6026
+ border-bottom-width: 2px;
6027
+ border-radius: 4px;
6028
+ padding: 2px 5px;
6029
+ background: var(--bg-elevated);
6030
+ color: var(--text-secondary);
5921
6031
  }
5922
- .teammate-idle-detail {
5923
- padding: 12px;
5924
- text-align: center;
5925
- color: var(--text-muted);
6032
+ .waiting-option-key {
6033
+ flex: none;
6034
+ margin-top: 1px;
5926
6035
  }
5927
- .msg-time {
5928
- font-size: 10px;
5929
- color: var(--text-muted);
5930
- margin-top: 4px;
6036
+ .waiting-option.selected .waiting-option-key {
6037
+ border-color: var(--accent);
6038
+ color: var(--accent);
5931
6039
  }
5932
- .msg-empty {
5933
- text-align: center;
5934
- color: var(--text-muted);
5935
- padding: 40px 20px;
5936
- font-size: 12px;
6040
+ .waiting-qtabs {
6041
+ display: flex;
6042
+ align-items: center;
6043
+ gap: 4px;
6044
+ border-bottom: 1px solid var(--border);
5937
6045
  }
5938
-
5939
- .agent-log-back {
6046
+ .waiting-qtab {
6047
+ display: inline-flex;
6048
+ align-items: center;
6049
+ gap: 6px;
5940
6050
  border: none;
6051
+ border-bottom: 2px solid transparent;
5941
6052
  background: none;
5942
- cursor: pointer;
5943
6053
  color: var(--text-secondary);
5944
- font-size: 16px;
5945
- padding: 0 8px 0 0;
5946
- line-height: 1;
6054
+ font-family: var(--mono);
6055
+ font-size: 12px;
6056
+ padding: 6px 10px;
6057
+ margin-bottom: -1px;
6058
+ cursor: pointer;
5947
6059
  }
5948
- .agent-log-back:hover {
6060
+ .waiting-qtab:hover {
5949
6061
  color: var(--text-primary);
5950
6062
  }
5951
- .agent-log-title {
5952
- display: flex;
5953
- align-items: baseline;
5954
- gap: 6px;
5955
- }
5956
- .agent-log-id {
5957
- font-size: 11px;
5958
- color: var(--text-tertiary);
5959
- }
5960
- .agent-log-model {
5961
- font-family: var(--mono);
5962
- font-size: 12px;
5963
- font-weight: 600;
6063
+ .waiting-qtab.active {
5964
6064
  color: var(--text-primary);
6065
+ border-bottom-color: var(--accent);
6066
+ font-weight: 600;
5965
6067
  }
5966
- .msg-agent-log-btn {
5967
- flex-shrink: 0;
5968
- margin-left: 0;
5969
- background: none;
5970
- border: none;
5971
- color: var(--text-muted);
5972
- cursor: pointer;
5973
- padding: 2px;
5974
- opacity: 0;
5975
- transition: opacity 0.15s;
5976
- align-self: flex-start;
6068
+ .waiting-qtab-n {
6069
+ display: grid;
6070
+ place-items: center;
6071
+ width: 16px;
6072
+ height: 16px;
6073
+ border-radius: 50%;
6074
+ font-size: 10px;
6075
+ background: var(--bg-elevated);
6076
+ border: 1px solid var(--border);
5977
6077
  }
5978
- .msg-item:hover .msg-agent-log-btn {
5979
- opacity: 1;
6078
+ .waiting-qtab.done .waiting-qtab-n {
6079
+ background: color-mix(in srgb, var(--success) 18%, transparent);
6080
+ border-color: color-mix(in srgb, var(--success) 45%, transparent);
6081
+ color: var(--success);
6082
+ }
6083
+ .waiting-qtab-check {
6084
+ color: var(--success);
6085
+ font-size: 11px;
6086
+ }
6087
+ .waiting-qtabs-hint,
6088
+ .waiting-footer-hint {
6089
+ margin-left: auto;
6090
+ font-size: 11px;
6091
+ color: var(--text-muted);
6092
+ display: inline-flex;
6093
+ gap: 4px;
6094
+ align-items: center;
6095
+ white-space: nowrap;
6096
+ }
6097
+ .waiting-review {
6098
+ border: 1px solid var(--border);
6099
+ border-radius: 6px;
6100
+ background: color-mix(in srgb, var(--bg-deep) 40%, transparent);
6101
+ }
6102
+ .waiting-review-row {
6103
+ display: flex;
6104
+ justify-content: space-between;
6105
+ gap: 16px;
6106
+ padding: 10px 14px;
6107
+ font-size: 12px;
6108
+ }
6109
+ .waiting-review-row + .waiting-review-row {
6110
+ border-top: 1px solid var(--border);
6111
+ }
6112
+ .waiting-review-q {
6113
+ color: var(--text-secondary);
6114
+ text-transform: uppercase;
6115
+ font-size: 10px;
6116
+ letter-spacing: 0.5px;
6117
+ padding-top: 2px;
6118
+ }
6119
+ .waiting-review-a {
6120
+ font-weight: 600;
6121
+ text-align: right;
6122
+ }
6123
+ .waiting-review-a.empty {
6124
+ font-weight: 400;
6125
+ color: var(--warning);
6126
+ }
6127
+ #msg-detail-waiting-footer .waiting-footer-hint {
6128
+ margin-right: auto;
6129
+ margin-left: 0;
6130
+ }
6131
+ .perm-card {
6132
+ display: grid;
6133
+ gap: 8px;
6134
+ margin-bottom: 12px;
6135
+ }
6136
+ .perm-head {
6137
+ display: flex;
6138
+ align-items: center;
6139
+ justify-content: space-between;
6140
+ }
6141
+ .perm-tool {
6142
+ font-family: var(--mono);
6143
+ font-size: 11px;
6144
+ font-weight: 600;
6145
+ padding: 2px 8px;
6146
+ border-radius: 10px;
6147
+ color: var(--warning);
6148
+ background: color-mix(in srgb, var(--warning) 16%, transparent);
6149
+ }
6150
+ .perm-wait {
6151
+ font-family: var(--mono);
6152
+ font-size: 11px;
6153
+ color: var(--text-muted);
6154
+ }
6155
+ .perm-label {
6156
+ font-size: 10px;
6157
+ letter-spacing: 0.3px;
6158
+ color: var(--text-muted);
6159
+ font-family: var(--mono);
6160
+ word-break: break-all;
6161
+ }
6162
+ .perm-code {
6163
+ margin: 0;
6164
+ padding: 10px 12px;
6165
+ border: 1px solid var(--border);
6166
+ border-radius: 6px;
6167
+ background: var(--bg-deep);
6168
+ font-family: var(--mono);
6169
+ font-size: 12.5px;
6170
+ white-space: pre-wrap;
6171
+ word-break: break-word;
6172
+ }
6173
+ .perm-note {
6174
+ font-size: 12px;
6175
+ color: var(--text-secondary);
6176
+ }
6177
+ .perm-cwd {
6178
+ font-family: var(--mono);
6179
+ font-size: 11px;
6180
+ color: var(--text-muted);
6181
+ }
6182
+ .perm-diff {
6183
+ border: 1px solid var(--border);
6184
+ border-radius: 6px;
6185
+ overflow: hidden;
6186
+ font-family: var(--mono);
6187
+ font-size: 12px;
6188
+ }
6189
+ .perm-diff-row {
6190
+ display: flex;
6191
+ gap: 8px;
6192
+ padding: 2px 10px;
6193
+ white-space: pre-wrap;
6194
+ word-break: break-word;
6195
+ }
6196
+ .perm-diff-row.del {
6197
+ background: color-mix(in srgb, var(--danger) 12%, transparent);
6198
+ }
6199
+ .perm-diff-row.add {
6200
+ background: color-mix(in srgb, var(--success) 13%, transparent);
6201
+ }
6202
+ .perm-diff-sign {
6203
+ flex: none;
6204
+ width: 10px;
6205
+ color: var(--text-muted);
6206
+ }
6207
+ .msg-waiting-feedback {
6208
+ min-width: 0;
6209
+ flex: 1;
6210
+ border: 1px dashed var(--border);
6211
+ border-radius: 4px;
6212
+ padding: 4px 8px;
6213
+ font-family: var(--mono);
6214
+ font-size: 11px;
6215
+ background: none;
6216
+ color: var(--text-primary);
6217
+ }
6218
+ .msg-waiting-feedback:focus {
6219
+ outline: none;
6220
+ border-color: var(--accent);
6221
+ }
6222
+ .msg-waiting-footer:has(.msg-waiting-feedback) {
6223
+ flex-wrap: wrap;
6224
+ }
6225
+ .msg-waiting-footer:has(.msg-waiting-feedback) .msg-waiting-actions {
6226
+ flex-basis: 100%;
6227
+ }
6228
+ .waiting-key-hint-line kbd {
6229
+ font-family: var(--mono);
6230
+ font-size: 9px;
6231
+ border: 1px solid var(--border);
6232
+ border-bottom-width: 2px;
6233
+ border-radius: 3px;
6234
+ padding: 0 4px;
6235
+ background: var(--bg-elevated);
6236
+ }
6237
+ /* Inline ask row: theme variables only, so every color theme reads the same way */
6238
+ .msg-waiting-actions .msg-waiting-allow {
6239
+ background: var(--accent);
6240
+ border-color: var(--accent);
6241
+ color: white;
6242
+ }
6243
+ .msg-waiting-actions .msg-waiting-allow:hover {
6244
+ background: color-mix(in srgb, var(--accent) 82%, black);
6245
+ }
6246
+ .msg-waiting-actions .msg-waiting-deny {
6247
+ background: none;
6248
+ border-color: var(--border);
6249
+ color: var(--text-secondary);
6250
+ }
6251
+ .msg-waiting-actions .msg-waiting-deny:hover {
6252
+ background: var(--bg-elevated);
6253
+ color: var(--text-primary);
6254
+ }
6255
+ .msg-item.msg-waiting.msg-waiting-plan {
6256
+ background: none;
6257
+ animation: none;
6258
+ }
6259
+ .msg-waiting-body h1,
6260
+ .msg-waiting-body h2,
6261
+ .msg-waiting-body h3,
6262
+ .msg-waiting-body h4,
6263
+ .waiting-plan h1,
6264
+ .waiting-plan h2,
6265
+ .waiting-plan h3,
6266
+ .waiting-plan h4 {
6267
+ font-size: 1em;
6268
+ font-weight: 600;
6269
+ line-height: 1.35;
6270
+ }
6271
+ .msg-waiting-body h1,
6272
+ .waiting-plan h1 {
6273
+ font-size: 1.15em;
6274
+ }
6275
+ /* #endregion */
6276
+ .msg-item.msg-idle .msg-icon {
6277
+ width: 12px;
6278
+ height: 12px;
6279
+ }
6280
+ .teammate-name {
6281
+ font-weight: 600;
6282
+ font-size: 11px;
6283
+ }
6284
+ .idle-label,
6285
+ .protocol-label {
6286
+ font-size: 10px;
6287
+ color: var(--text-muted);
6288
+ font-style: italic;
6289
+ }
6290
+ .teammate-idle-detail {
6291
+ padding: 12px;
6292
+ text-align: center;
6293
+ color: var(--text-muted);
6294
+ }
6295
+ .msg-time {
6296
+ font-size: 10px;
6297
+ color: var(--text-muted);
6298
+ margin-top: 4px;
6299
+ }
6300
+ .msg-empty {
6301
+ text-align: center;
6302
+ color: var(--text-muted);
6303
+ padding: 40px 20px;
6304
+ font-size: 12px;
6305
+ }
6306
+
6307
+ .agent-log-back {
6308
+ border: none;
6309
+ background: none;
6310
+ cursor: pointer;
6311
+ color: var(--text-secondary);
6312
+ font-size: 16px;
6313
+ padding: 0 8px 0 0;
6314
+ line-height: 1;
6315
+ }
6316
+ .agent-log-back:hover {
6317
+ color: var(--text-primary);
6318
+ }
6319
+ .agent-log-title {
6320
+ display: flex;
6321
+ align-items: baseline;
6322
+ gap: 6px;
6323
+ }
6324
+ .agent-log-id {
6325
+ font-size: 11px;
6326
+ color: var(--text-tertiary);
6327
+ }
6328
+ .agent-log-model {
6329
+ font-family: var(--mono);
6330
+ font-size: 12px;
6331
+ font-weight: 600;
6332
+ color: var(--text-primary);
6333
+ }
6334
+ .msg-agent-log-btn {
6335
+ flex-shrink: 0;
6336
+ margin-left: 0;
6337
+ background: none;
6338
+ border: none;
6339
+ color: var(--text-muted);
6340
+ cursor: pointer;
6341
+ padding: 2px;
6342
+ opacity: 0;
6343
+ transition: opacity 0.15s;
6344
+ align-self: flex-start;
6345
+ }
6346
+ .msg-item:hover .msg-agent-log-btn {
6347
+ opacity: 1;
5980
6348
  }
5981
6349
  .msg-agent-log-btn:hover,
5982
6350
  .msg-item:hover .msg-agent-log-btn:hover {
@@ -6537,9 +6905,9 @@ body.show-resizing iframe {
6537
6905
  }
6538
6906
 
6539
6907
  .linked-doc-actions .linked-doc-remove:hover {
6540
- background: var(--danger-dim);
6541
- border-color: var(--danger);
6542
- color: var(--danger);
6908
+ background: var(--bg-elevated);
6909
+ border-color: var(--border);
6910
+ color: var(--text-primary);
6543
6911
  }
6544
6912
 
6545
6913
  /* A linked file the previewer can't render opens in the editor — the dashed
@@ -6999,8 +7367,8 @@ body.light .msg-assistant .msg-text {
6999
7367
 
7000
7368
  /* #region INTERACTIVE */
7001
7369
  .icon-btn.delete:hover {
7002
- background: color-mix(in srgb, var(--danger) 12%, transparent);
7003
- border-color: var(--danger);
7370
+ background: var(--bg-elevated);
7371
+ border-color: var(--border);
7004
7372
  }
7005
7373
 
7006
7374
  .column-header {
@@ -7476,6 +7844,162 @@ body.light .msg-assistant .msg-text {
7476
7844
  max-width: 440px;
7477
7845
  }
7478
7846
 
7847
+ /* #region CONFIRM_DIALOG */
7848
+ #confirm-modal {
7849
+ z-index: 10001;
7850
+ }
7851
+
7852
+ .confirm-dialog {
7853
+ padding: 0;
7854
+ max-width: 480px;
7855
+ overflow: hidden;
7856
+ }
7857
+
7858
+ .confirm-body {
7859
+ padding: 20px 20px 6px;
7860
+ display: grid;
7861
+ gap: 12px;
7862
+ }
7863
+
7864
+ .confirm-top {
7865
+ display: flex;
7866
+ gap: 12px;
7867
+ align-items: flex-start;
7868
+ }
7869
+
7870
+ .confirm-icon {
7871
+ flex: none;
7872
+ width: 30px;
7873
+ height: 30px;
7874
+ border-radius: 50%;
7875
+ display: grid;
7876
+ place-items: center;
7877
+ background: color-mix(in srgb, var(--accent) 14%, transparent);
7878
+ color: var(--accent);
7879
+ font-weight: 700;
7880
+ }
7881
+
7882
+ .confirm-title {
7883
+ margin: 0;
7884
+ font-size: 15px;
7885
+ color: var(--text-primary);
7886
+ }
7887
+
7888
+ .confirm-message {
7889
+ margin: 3px 0 0;
7890
+ font-size: 12.5px;
7891
+ color: var(--text-tertiary);
7892
+ }
7893
+
7894
+ .confirm-chip {
7895
+ font-family: var(--mono);
7896
+ font-size: 12px;
7897
+ color: var(--text-primary);
7898
+ background: var(--bg-elevated);
7899
+ border: 1px solid var(--border);
7900
+ border-radius: 6px;
7901
+ padding: 7px 10px;
7902
+ overflow: hidden;
7903
+ text-overflow: ellipsis;
7904
+ white-space: nowrap;
7905
+ }
7906
+
7907
+ .confirm-list {
7908
+ border: 1px solid var(--border);
7909
+ border-radius: 6px;
7910
+ font-size: 12px;
7911
+ }
7912
+
7913
+ .confirm-row {
7914
+ display: flex;
7915
+ gap: 8px;
7916
+ align-items: center;
7917
+ padding: 6px 10px;
7918
+ }
7919
+
7920
+ .confirm-row + .confirm-row {
7921
+ border-top: 1px solid var(--border);
7922
+ }
7923
+
7924
+ .confirm-row-label {
7925
+ flex: 1;
7926
+ min-width: 0;
7927
+ overflow: hidden;
7928
+ text-overflow: ellipsis;
7929
+ white-space: nowrap;
7930
+ color: var(--text-primary);
7931
+ }
7932
+
7933
+ .confirm-row-meta {
7934
+ font-family: var(--mono);
7935
+ font-size: 11px;
7936
+ color: var(--text-muted);
7937
+ white-space: nowrap;
7938
+ }
7939
+
7940
+ .confirm-step::before {
7941
+ content: '→';
7942
+ color: var(--accent);
7943
+ }
7944
+
7945
+ .confirm-dot {
7946
+ flex: none;
7947
+ width: 8px;
7948
+ height: 8px;
7949
+ border-radius: 50%;
7950
+ background: var(--text-muted);
7951
+ }
7952
+
7953
+ .confirm-dot.busy {
7954
+ background: var(--success);
7955
+ }
7956
+
7957
+ .confirm-dot.wait {
7958
+ background: var(--warning);
7959
+ }
7960
+
7961
+ .confirm-warn {
7962
+ font-size: 12px;
7963
+ color: var(--warning);
7964
+ }
7965
+
7966
+ .confirm-footer {
7967
+ justify-content: space-between;
7968
+ align-items: center;
7969
+ padding: 12px 20px 16px;
7970
+ }
7971
+
7972
+ .confirm-hint {
7973
+ display: flex;
7974
+ flex-wrap: nowrap;
7975
+ gap: 12px;
7976
+ white-space: nowrap;
7977
+ font-size: 11px;
7978
+ color: var(--text-muted);
7979
+ }
7980
+
7981
+ .confirm-hint kbd {
7982
+ font-family: var(--mono);
7983
+ font-size: 10px;
7984
+ border: 1px solid var(--border);
7985
+ border-bottom-width: 2px;
7986
+ border-radius: 4px;
7987
+ padding: 1px 5px;
7988
+ background: var(--bg-elevated);
7989
+ color: var(--text-secondary);
7990
+ }
7991
+
7992
+ .confirm-buttons {
7993
+ display: flex;
7994
+ gap: 8px;
7995
+ }
7996
+
7997
+ .confirm-buttons .btn {
7998
+ padding: 8px 16px;
7999
+ white-space: nowrap;
8000
+ }
8001
+ /* #endregion */
8002
+
7479
8003
  /* Reference card, not reading material: it stays out of the modal zoom, uses the app's
7480
8004
  small type, and scrolls its body (rule shared with #team-modal) instead of growing past
7481
8005
  the viewport cap. */
@@ -7811,15 +8335,14 @@ select.form-input option:checked {
7811
8335
  }
7812
8336
 
7813
8337
  .btn-danger {
7814
- background: var(--danger);
7815
- border-color: var(--danger);
7816
- color: white;
8338
+ background: color-mix(in srgb, var(--accent) 12%, transparent);
8339
+ border-color: color-mix(in srgb, var(--accent) 40%, transparent);
8340
+ color: var(--accent);
7817
8341
  }
7818
8342
 
7819
8343
  .btn-danger:hover {
7820
- background: color-mix(in srgb, var(--danger) 82%, black);
7821
- transform: translateY(-1px);
7822
- box-shadow: 0 4px 12px color-mix(in srgb, var(--danger) 45%, transparent);
8344
+ background: color-mix(in srgb, var(--accent) 22%, transparent);
8345
+ border-color: var(--accent);
7823
8346
  }
7824
8347
 
7825
8348
  .btn-secondary {
@@ -9010,8 +9533,8 @@ select.form-input option:checked {
9010
9533
  }
9011
9534
 
9012
9535
  .storage-item-actions button.danger:hover {
9013
- background: color-mix(in srgb, var(--danger) 15%, transparent);
9014
- color: var(--danger);
9536
+ background: var(--bg-hover);
9537
+ color: var(--text-primary);
9015
9538
  }
9016
9539
 
9017
9540
  .storage-group-header {
@@ -9137,6 +9660,30 @@ pre.mermaid {
9137
9660
  pre.mermaid svg {
9138
9661
  max-width: 100%;
9139
9662
  }
9663
+ /* Hides the diagram source while it loads; a failed diagram shows its error instead. */
9664
+ pre.mermaid:not(:has(svg), [data-mermaid-error]) {
9665
+ min-height: 40px;
9666
+ font-size: 0;
9667
+ }
9668
+ pre.mermaid:not(:has(svg), [data-mermaid-error])::before {
9669
+ content: 'Rendering diagram…';
9670
+ font-family: var(--mono);
9671
+ font-size: 12px;
9672
+ color: var(--text-muted);
9673
+ }
9674
+ pre.mermaid[data-mermaid-error] {
9675
+ padding: 8px 10px;
9676
+ border: 1px dashed var(--border);
9677
+ border-radius: 4px;
9678
+ font-size: 12px;
9679
+ text-align: left;
9680
+ white-space: pre-wrap;
9681
+ color: var(--text-secondary);
9682
+ }
9683
+ pre.mermaid[data-mermaid-error]::before {
9684
+ content: 'Diagram failed to render\A';
9685
+ color: var(--danger);
9686
+ }
9140
9687
  .modal.has-mermaid {
9141
9688
  width: 80vw;
9142
9689
  max-width: 80vw;
@@ -9567,6 +10114,28 @@ pre.mermaid svg {
9567
10114
  margin-left: 6px;
9568
10115
  }
9569
10116
 
10117
+ .session-group-sessions .session-group-sessions {
10118
+ padding-left: 6px;
10119
+ border-left: 1px solid var(--border);
10120
+ }
10121
+
10122
+ .session-item.sg-child {
10123
+ width: calc(100% - var(--sg-indent));
10124
+ margin-left: var(--sg-indent);
10125
+ }
10126
+
10127
+ .session-item.sg-depth-1 {
10128
+ --sg-indent: 14px;
10129
+ }
10130
+
10131
+ .session-item.sg-depth-2 {
10132
+ --sg-indent: 28px;
10133
+ }
10134
+
10135
+ .session-item.sg-depth-3 {
10136
+ --sg-indent: 42px;
10137
+ }
10138
+
9570
10139
  .session-group-sessions.collapsed,
9571
10140
  .sg-section-body.collapsed {
9572
10141
  display: none;
@@ -9617,6 +10186,23 @@ pre.mermaid svg {
9617
10186
  top: -5px;
9618
10187
  }
9619
10188
 
10189
+ /* A drop on the top edge of a child group's header goes to its parent group. */
10190
+ .session-group-header.sg-insert-parent {
10191
+ position: relative;
10192
+ }
10193
+
10194
+ .session-group-header.sg-insert-parent::after {
10195
+ content: '';
10196
+ position: absolute;
10197
+ top: -3px;
10198
+ left: -8px;
10199
+ right: 4px;
10200
+ height: 2px;
10201
+ border-radius: 1px;
10202
+ background: var(--accent);
10203
+ pointer-events: none;
10204
+ }
10205
+
9620
10206
  .session-item.sg-insert-after::after {
9621
10207
  bottom: -5px;
9622
10208
  }
@@ -9698,4 +10284,20 @@ pre.mermaid svg {
9698
10284
  letter-spacing: 0;
9699
10285
  white-space: nowrap;
9700
10286
  }
10287
+ .pane-menu-path {
10288
+ display: flex;
10289
+ }
10290
+ .pane-menu-dir {
10291
+ flex: 0 1 auto;
10292
+ min-width: 0;
10293
+ overflow: hidden;
10294
+ text-overflow: ellipsis;
10295
+ direction: rtl;
10296
+ text-align: left;
10297
+ }
10298
+ .pane-menu-name {
10299
+ flex: none;
10300
+ color: var(--text-primary);
10301
+ font-weight: 600;
10302
+ }
9701
10303
  /* #endregion */