claude-code-kanban 7.6.1 → 7.8.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
@@ -2005,6 +2134,12 @@ body.booting .boot-splash {
2005
2134
  border-left-color: var(--success);
2006
2135
  }
2007
2136
 
2137
+ .task-card.dim,
2138
+ .task-card.dim:hover {
2139
+ opacity: 0.55;
2140
+ border-left-color: var(--border);
2141
+ }
2142
+
2008
2143
  .task-card.blocked {
2009
2144
  border-left-style: dashed;
2010
2145
  }
@@ -2080,6 +2215,21 @@ body.booting .boot-splash {
2080
2215
  white-space: nowrap;
2081
2216
  }
2082
2217
 
2218
+ .task-chip {
2219
+ color: var(--text-muted);
2220
+ text-transform: uppercase;
2221
+ letter-spacing: 0.04em;
2222
+ white-space: nowrap;
2223
+ }
2224
+
2225
+ .task-chip-warn {
2226
+ color: var(--warning);
2227
+ }
2228
+
2229
+ .task-chip-accent {
2230
+ color: var(--accent);
2231
+ }
2232
+
2083
2233
  .task-desc {
2084
2234
  font-size: 11.5px;
2085
2235
  font-weight: 400;
@@ -2113,6 +2263,29 @@ body.booting .boot-splash {
2113
2263
  .detail-panel.visible {
2114
2264
  display: flex;
2115
2265
  }
2266
+
2267
+ .detail-panel.expanded {
2268
+ top: 50%;
2269
+ left: 50%;
2270
+ right: auto;
2271
+ width: min(1200px, calc(100vw - 48px));
2272
+ height: auto;
2273
+ max-height: calc(100vh - 96px);
2274
+ transform: translate(-50%, -50%);
2275
+ border: 1px solid var(--border);
2276
+ border-radius: 10px;
2277
+ box-shadow: 0 12px 40px rgb(0 0 0 / 35%);
2278
+ z-index: 900;
2279
+ }
2280
+
2281
+ .detail-panel.expanded .panel-resize-handle {
2282
+ display: none;
2283
+ }
2284
+
2285
+ .detail-expand svg {
2286
+ width: 15px;
2287
+ height: 15px;
2288
+ }
2116
2289
  .detail-panel.resizing,
2117
2290
  .message-panel.resizing {
2118
2291
  transition: none;
@@ -3540,9 +3713,8 @@ code.ct .ct-has[aria-expanded='false'] .ct-name::after {
3540
3713
  }
3541
3714
 
3542
3715
  .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);
3716
+ color: var(--text-primary);
3717
+ background: var(--bg-elevated);
3546
3718
  }
3547
3719
 
3548
3720
  .terminal-manager-footer {
@@ -3871,8 +4043,8 @@ body.light .show-card.focused {
3871
4043
  }
3872
4044
 
3873
4045
  .show-btn.remove:hover:not(:disabled) {
3874
- color: var(--danger);
3875
- background: var(--danger-dim);
4046
+ color: var(--text-primary);
4047
+ background: var(--bg-elevated);
3876
4048
  }
3877
4049
 
3878
4050
  .show-ticks {
@@ -4086,19 +4258,6 @@ body.light .show-card.focused {
4086
4258
  background: color-mix(in srgb, var(--danger) 10%, transparent);
4087
4259
  }
4088
4260
 
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
4261
  .show-md pre.mermaid svg {
4103
4262
  max-width: 100%;
4104
4263
  height: auto;
@@ -4741,6 +4900,10 @@ body.show-resizing iframe {
4741
4900
  word-break: break-word;
4742
4901
  }
4743
4902
 
4903
+ .pane-doc-body:focus {
4904
+ outline: none;
4905
+ }
4906
+
4744
4907
  .pane-msg-meta {
4745
4908
  margin-bottom: 12px;
4746
4909
  font-size: 11px;
@@ -5197,7 +5360,7 @@ body.show-resizing iframe {
5197
5360
  }
5198
5361
  .pinned-item-unpin:hover {
5199
5362
  opacity: 1;
5200
- color: var(--danger);
5363
+ color: var(--text-primary);
5201
5364
  }
5202
5365
  .msg-pin-btn.pinned svg,
5203
5366
  #msg-detail-pin-btn.active svg,
@@ -5403,6 +5566,9 @@ body.show-resizing iframe {
5403
5566
  .rendered-md li {
5404
5567
  margin: 0.2em 0;
5405
5568
  }
5569
+ .rendered-md ul > li:has(> input[type='checkbox']) {
5570
+ list-style: none;
5571
+ }
5406
5572
  .rendered-md a {
5407
5573
  color: var(--accent);
5408
5574
  }
@@ -5449,6 +5615,10 @@ body.show-resizing iframe {
5449
5615
  margin: 0.8em 0;
5450
5616
  border-color: var(--border);
5451
5617
  }
5618
+ .rendered-md img {
5619
+ max-width: 100%;
5620
+ height: auto;
5621
+ }
5452
5622
  .msg-detail-pre {
5453
5623
  white-space: pre-wrap;
5454
5624
  word-break: break-all;
@@ -5626,24 +5796,11 @@ body.show-resizing iframe {
5626
5796
  .msg-waiting-discard:hover {
5627
5797
  /* biome-ignore lint/complexity/noImportantStyles: override parent hover opacity */
5628
5798
  opacity: 1 !important;
5629
- color: var(--danger);
5799
+ color: var(--text-primary);
5630
5800
  }
5631
5801
  .msg-waiting .msg-text {
5632
5802
  font-weight: 500;
5633
5803
  }
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
5804
  .msg-waiting-body {
5648
5805
  font-size: 12px;
5649
5806
  margin-top: 4px;
@@ -5673,8 +5830,9 @@ body.show-resizing iframe {
5673
5830
  margin-top: 0;
5674
5831
  }
5675
5832
  .msg-waiting-actions {
5676
- flex-shrink: 0;
5833
+ flex: 1;
5677
5834
  display: flex;
5835
+ justify-content: flex-end;
5678
5836
  gap: 6px;
5679
5837
  }
5680
5838
  .msg-waiting-actions button {
@@ -5728,25 +5886,20 @@ body.show-resizing iframe {
5728
5886
  cursor: pointer;
5729
5887
  transition: all 0.15s ease;
5730
5888
  }
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);
5889
+ .waiting-btn-allow {
5890
+ color: var(--accent);
5891
+ border-color: color-mix(in srgb, var(--accent) 40%, transparent);
5737
5892
  }
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);
5893
+ .waiting-btn-allow:hover:not(:disabled) {
5894
+ background: color-mix(in srgb, var(--accent) 12%, transparent);
5741
5895
  }
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);
5896
+ .waiting-btn-deny {
5897
+ color: var(--text-secondary);
5898
+ border-color: var(--border);
5746
5899
  }
5747
- .waiting-btn-deny:hover,
5748
- .msg-waiting-actions .msg-waiting-deny:hover {
5749
- background: color-mix(in srgb, var(--danger) 10%, transparent);
5900
+ .waiting-btn-deny:hover {
5901
+ background: var(--bg-elevated);
5902
+ color: var(--text-primary);
5750
5903
  }
5751
5904
  .waiting-btn-allow:disabled {
5752
5905
  opacity: 0.4;
@@ -5828,8 +5981,9 @@ body.show-resizing iframe {
5828
5981
  }
5829
5982
  .waiting-option {
5830
5983
  display: flex;
5831
- flex-direction: column;
5832
- gap: 2px;
5984
+ flex-direction: row;
5985
+ align-items: flex-start;
5986
+ gap: 10px;
5833
5987
  width: 100%;
5834
5988
  text-align: left;
5835
5989
  border: 1px solid var(--border);
@@ -5905,51 +6059,316 @@ body.show-resizing iframe {
5905
6059
  .waiting-option-input::placeholder {
5906
6060
  color: var(--text-secondary);
5907
6061
  }
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;
6062
+ /* #region ASK_PROMPTS */
6063
+ .waiting-option-text {
6064
+ display: flex;
6065
+ flex-direction: column;
6066
+ gap: 2px;
6067
+ min-width: 0;
6068
+ flex: 1;
5915
6069
  }
5916
- .idle-label,
5917
- .protocol-label {
6070
+ .waiting-option-key,
6071
+ .waiting-qtabs-hint kbd,
6072
+ .waiting-footer-hint kbd {
6073
+ font-family: var(--mono);
5918
6074
  font-size: 10px;
5919
- color: var(--text-muted);
5920
- font-style: italic;
6075
+ line-height: 1;
6076
+ border: 1px solid var(--border);
6077
+ border-bottom-width: 2px;
6078
+ border-radius: 4px;
6079
+ padding: 2px 5px;
6080
+ background: var(--bg-elevated);
6081
+ color: var(--text-secondary);
5921
6082
  }
5922
- .teammate-idle-detail {
5923
- padding: 12px;
5924
- text-align: center;
5925
- color: var(--text-muted);
6083
+ .waiting-option-key {
6084
+ flex: none;
6085
+ margin-top: 1px;
5926
6086
  }
5927
- .msg-time {
5928
- font-size: 10px;
5929
- color: var(--text-muted);
5930
- margin-top: 4px;
6087
+ .waiting-option.selected .waiting-option-key {
6088
+ border-color: var(--accent);
6089
+ color: var(--accent);
5931
6090
  }
5932
- .msg-empty {
5933
- text-align: center;
5934
- color: var(--text-muted);
5935
- padding: 40px 20px;
5936
- font-size: 12px;
6091
+ .waiting-qtabs {
6092
+ display: flex;
6093
+ align-items: center;
6094
+ gap: 4px;
6095
+ border-bottom: 1px solid var(--border);
5937
6096
  }
5938
-
5939
- .agent-log-back {
6097
+ .waiting-qtab {
6098
+ display: inline-flex;
6099
+ align-items: center;
6100
+ gap: 6px;
5940
6101
  border: none;
6102
+ border-bottom: 2px solid transparent;
5941
6103
  background: none;
5942
- cursor: pointer;
5943
6104
  color: var(--text-secondary);
5944
- font-size: 16px;
5945
- padding: 0 8px 0 0;
5946
- line-height: 1;
6105
+ font-family: var(--mono);
6106
+ font-size: 12px;
6107
+ padding: 6px 10px;
6108
+ margin-bottom: -1px;
6109
+ cursor: pointer;
5947
6110
  }
5948
- .agent-log-back:hover {
6111
+ .waiting-qtab:hover {
5949
6112
  color: var(--text-primary);
5950
6113
  }
5951
- .agent-log-title {
5952
- display: flex;
6114
+ .waiting-qtab.active {
6115
+ color: var(--text-primary);
6116
+ border-bottom-color: var(--accent);
6117
+ font-weight: 600;
6118
+ }
6119
+ .waiting-qtab-n {
6120
+ display: grid;
6121
+ place-items: center;
6122
+ width: 16px;
6123
+ height: 16px;
6124
+ border-radius: 50%;
6125
+ font-size: 10px;
6126
+ background: var(--bg-elevated);
6127
+ border: 1px solid var(--border);
6128
+ }
6129
+ .waiting-qtab.done .waiting-qtab-n {
6130
+ background: color-mix(in srgb, var(--success) 18%, transparent);
6131
+ border-color: color-mix(in srgb, var(--success) 45%, transparent);
6132
+ color: var(--success);
6133
+ }
6134
+ .waiting-qtab-check {
6135
+ color: var(--success);
6136
+ font-size: 11px;
6137
+ }
6138
+ .waiting-qtabs-hint,
6139
+ .waiting-footer-hint {
6140
+ margin-left: auto;
6141
+ font-size: 11px;
6142
+ color: var(--text-muted);
6143
+ display: inline-flex;
6144
+ gap: 4px;
6145
+ align-items: center;
6146
+ white-space: nowrap;
6147
+ }
6148
+ .waiting-review {
6149
+ border: 1px solid var(--border);
6150
+ border-radius: 6px;
6151
+ background: color-mix(in srgb, var(--bg-deep) 40%, transparent);
6152
+ }
6153
+ .waiting-review-row {
6154
+ display: flex;
6155
+ justify-content: space-between;
6156
+ gap: 16px;
6157
+ padding: 10px 14px;
6158
+ font-size: 12px;
6159
+ }
6160
+ .waiting-review-row + .waiting-review-row {
6161
+ border-top: 1px solid var(--border);
6162
+ }
6163
+ .waiting-review-q {
6164
+ color: var(--text-secondary);
6165
+ text-transform: uppercase;
6166
+ font-size: 10px;
6167
+ letter-spacing: 0.5px;
6168
+ padding-top: 2px;
6169
+ }
6170
+ .waiting-review-a {
6171
+ font-weight: 600;
6172
+ text-align: right;
6173
+ }
6174
+ .waiting-review-a.empty {
6175
+ font-weight: 400;
6176
+ color: var(--warning);
6177
+ }
6178
+ #msg-detail-waiting-footer .waiting-footer-hint {
6179
+ margin-right: auto;
6180
+ margin-left: 0;
6181
+ }
6182
+ .perm-card {
6183
+ display: grid;
6184
+ gap: 8px;
6185
+ margin-bottom: 12px;
6186
+ }
6187
+ .perm-head {
6188
+ display: flex;
6189
+ align-items: center;
6190
+ justify-content: space-between;
6191
+ }
6192
+ .perm-tool {
6193
+ font-family: var(--mono);
6194
+ font-size: 11px;
6195
+ font-weight: 600;
6196
+ padding: 2px 8px;
6197
+ border-radius: 10px;
6198
+ color: var(--warning);
6199
+ background: color-mix(in srgb, var(--warning) 16%, transparent);
6200
+ }
6201
+ .perm-wait {
6202
+ font-family: var(--mono);
6203
+ font-size: 11px;
6204
+ color: var(--text-muted);
6205
+ }
6206
+ .perm-label {
6207
+ font-size: 10px;
6208
+ letter-spacing: 0.3px;
6209
+ color: var(--text-muted);
6210
+ font-family: var(--mono);
6211
+ word-break: break-all;
6212
+ }
6213
+ .perm-code {
6214
+ margin: 0;
6215
+ padding: 10px 12px;
6216
+ border: 1px solid var(--border);
6217
+ border-radius: 6px;
6218
+ background: var(--bg-deep);
6219
+ font-family: var(--mono);
6220
+ font-size: 12.5px;
6221
+ white-space: pre-wrap;
6222
+ word-break: break-word;
6223
+ }
6224
+ .perm-note {
6225
+ font-size: 12px;
6226
+ color: var(--text-secondary);
6227
+ }
6228
+ .perm-cwd {
6229
+ font-family: var(--mono);
6230
+ font-size: 11px;
6231
+ color: var(--text-muted);
6232
+ }
6233
+ .perm-diff {
6234
+ border: 1px solid var(--border);
6235
+ border-radius: 6px;
6236
+ overflow: hidden;
6237
+ font-family: var(--mono);
6238
+ font-size: 12px;
6239
+ }
6240
+ .perm-diff-row {
6241
+ display: flex;
6242
+ gap: 8px;
6243
+ padding: 2px 10px;
6244
+ white-space: pre-wrap;
6245
+ word-break: break-word;
6246
+ }
6247
+ .perm-diff-row.del {
6248
+ background: color-mix(in srgb, var(--danger) 12%, transparent);
6249
+ }
6250
+ .perm-diff-row.add {
6251
+ background: color-mix(in srgb, var(--success) 13%, transparent);
6252
+ }
6253
+ .perm-diff-sign {
6254
+ flex: none;
6255
+ width: 10px;
6256
+ color: var(--text-muted);
6257
+ }
6258
+ .msg-waiting-feedback {
6259
+ min-width: 0;
6260
+ flex: 1;
6261
+ border: 1px dashed var(--border);
6262
+ border-radius: 4px;
6263
+ padding: 4px 8px;
6264
+ font-family: var(--mono);
6265
+ font-size: 11px;
6266
+ background: none;
6267
+ color: var(--text-primary);
6268
+ }
6269
+ .msg-waiting-feedback:focus {
6270
+ outline: none;
6271
+ border-color: var(--accent);
6272
+ }
6273
+ .msg-waiting-footer:has(.msg-waiting-feedback) {
6274
+ flex-wrap: wrap;
6275
+ }
6276
+ .msg-waiting-footer:has(.msg-waiting-feedback) .msg-waiting-actions {
6277
+ flex-basis: 100%;
6278
+ }
6279
+ .waiting-key-hint-line kbd {
6280
+ font-family: var(--mono);
6281
+ font-size: 9px;
6282
+ border: 1px solid var(--border);
6283
+ border-bottom-width: 2px;
6284
+ border-radius: 3px;
6285
+ padding: 0 4px;
6286
+ background: var(--bg-elevated);
6287
+ }
6288
+ /* Inline ask row: theme variables only, so every color theme reads the same way */
6289
+ .msg-waiting-actions .msg-waiting-allow {
6290
+ background: var(--accent);
6291
+ border-color: var(--accent);
6292
+ color: white;
6293
+ }
6294
+ .msg-waiting-actions .msg-waiting-allow:hover {
6295
+ background: color-mix(in srgb, var(--accent) 82%, black);
6296
+ }
6297
+ .msg-waiting-actions .msg-waiting-deny {
6298
+ background: none;
6299
+ border-color: var(--border);
6300
+ color: var(--text-secondary);
6301
+ }
6302
+ .msg-waiting-actions .msg-waiting-deny:hover {
6303
+ background: var(--bg-elevated);
6304
+ color: var(--text-primary);
6305
+ }
6306
+ .msg-item.msg-waiting.msg-waiting-plan {
6307
+ background: none;
6308
+ animation: none;
6309
+ }
6310
+ .msg-waiting-body h1,
6311
+ .msg-waiting-body h2,
6312
+ .msg-waiting-body h3,
6313
+ .msg-waiting-body h4,
6314
+ .waiting-plan h1,
6315
+ .waiting-plan h2,
6316
+ .waiting-plan h3,
6317
+ .waiting-plan h4 {
6318
+ font-size: 1em;
6319
+ font-weight: 600;
6320
+ line-height: 1.35;
6321
+ }
6322
+ .msg-waiting-body h1,
6323
+ .waiting-plan h1 {
6324
+ font-size: 1.15em;
6325
+ }
6326
+ /* #endregion */
6327
+ .msg-item.msg-idle .msg-icon {
6328
+ width: 12px;
6329
+ height: 12px;
6330
+ }
6331
+ .teammate-name {
6332
+ font-weight: 600;
6333
+ font-size: 11px;
6334
+ }
6335
+ .idle-label,
6336
+ .protocol-label {
6337
+ font-size: 10px;
6338
+ color: var(--text-muted);
6339
+ font-style: italic;
6340
+ }
6341
+ .teammate-idle-detail {
6342
+ padding: 12px;
6343
+ text-align: center;
6344
+ color: var(--text-muted);
6345
+ }
6346
+ .msg-time {
6347
+ font-size: 10px;
6348
+ color: var(--text-muted);
6349
+ margin-top: 4px;
6350
+ }
6351
+ .msg-empty {
6352
+ text-align: center;
6353
+ color: var(--text-muted);
6354
+ padding: 40px 20px;
6355
+ font-size: 12px;
6356
+ }
6357
+
6358
+ .agent-log-back {
6359
+ border: none;
6360
+ background: none;
6361
+ cursor: pointer;
6362
+ color: var(--text-secondary);
6363
+ font-size: 16px;
6364
+ padding: 0 8px 0 0;
6365
+ line-height: 1;
6366
+ }
6367
+ .agent-log-back:hover {
6368
+ color: var(--text-primary);
6369
+ }
6370
+ .agent-log-title {
6371
+ display: flex;
5953
6372
  align-items: baseline;
5954
6373
  gap: 6px;
5955
6374
  }
@@ -6537,9 +6956,9 @@ body.show-resizing iframe {
6537
6956
  }
6538
6957
 
6539
6958
  .linked-doc-actions .linked-doc-remove:hover {
6540
- background: var(--danger-dim);
6541
- border-color: var(--danger);
6542
- color: var(--danger);
6959
+ background: var(--bg-elevated);
6960
+ border-color: var(--border);
6961
+ color: var(--text-primary);
6543
6962
  }
6544
6963
 
6545
6964
  /* A linked file the previewer can't render opens in the editor — the dashed
@@ -6999,8 +7418,8 @@ body.light .msg-assistant .msg-text {
6999
7418
 
7000
7419
  /* #region INTERACTIVE */
7001
7420
  .icon-btn.delete:hover {
7002
- background: color-mix(in srgb, var(--danger) 12%, transparent);
7003
- border-color: var(--danger);
7421
+ background: var(--bg-elevated);
7422
+ border-color: var(--border);
7004
7423
  }
7005
7424
 
7006
7425
  .column-header {
@@ -7476,6 +7895,162 @@ body.light .msg-assistant .msg-text {
7476
7895
  max-width: 440px;
7477
7896
  }
7478
7897
 
7898
+ /* #region CONFIRM_DIALOG */
7899
+ #confirm-modal {
7900
+ z-index: 10001;
7901
+ }
7902
+
7903
+ .confirm-dialog {
7904
+ padding: 0;
7905
+ max-width: 560px;
7906
+ overflow: hidden;
7907
+ }
7908
+
7909
+ .confirm-body {
7910
+ padding: 20px 20px 6px;
7911
+ display: grid;
7912
+ gap: 12px;
7913
+ }
7914
+
7915
+ .confirm-top {
7916
+ display: flex;
7917
+ gap: 12px;
7918
+ align-items: flex-start;
7919
+ }
7920
+
7921
+ .confirm-icon {
7922
+ flex: none;
7923
+ width: 30px;
7924
+ height: 30px;
7925
+ border-radius: 50%;
7926
+ display: grid;
7927
+ place-items: center;
7928
+ background: color-mix(in srgb, var(--accent) 14%, transparent);
7929
+ color: var(--accent);
7930
+ font-weight: 700;
7931
+ }
7932
+
7933
+ .confirm-title {
7934
+ margin: 0;
7935
+ font-size: 15px;
7936
+ color: var(--text-primary);
7937
+ }
7938
+
7939
+ .confirm-message {
7940
+ margin: 3px 0 0;
7941
+ font-size: 12.5px;
7942
+ color: var(--text-tertiary);
7943
+ }
7944
+
7945
+ .confirm-chip {
7946
+ font-family: var(--mono);
7947
+ font-size: 12px;
7948
+ color: var(--text-primary);
7949
+ background: var(--bg-elevated);
7950
+ border: 1px solid var(--border);
7951
+ border-radius: 6px;
7952
+ padding: 7px 10px;
7953
+ overflow: hidden;
7954
+ text-overflow: ellipsis;
7955
+ white-space: nowrap;
7956
+ }
7957
+
7958
+ .confirm-list {
7959
+ border: 1px solid var(--border);
7960
+ border-radius: 6px;
7961
+ font-size: 12px;
7962
+ }
7963
+
7964
+ .confirm-row {
7965
+ display: flex;
7966
+ gap: 8px;
7967
+ align-items: center;
7968
+ padding: 6px 10px;
7969
+ }
7970
+
7971
+ .confirm-row + .confirm-row {
7972
+ border-top: 1px solid var(--border);
7973
+ }
7974
+
7975
+ .confirm-row-label {
7976
+ flex: 1;
7977
+ min-width: 0;
7978
+ overflow: hidden;
7979
+ text-overflow: ellipsis;
7980
+ white-space: nowrap;
7981
+ color: var(--text-primary);
7982
+ }
7983
+
7984
+ .confirm-row-meta {
7985
+ font-family: var(--mono);
7986
+ font-size: 11px;
7987
+ color: var(--text-muted);
7988
+ white-space: nowrap;
7989
+ }
7990
+
7991
+ .confirm-step::before {
7992
+ content: '→';
7993
+ color: var(--accent);
7994
+ }
7995
+
7996
+ .confirm-dot {
7997
+ flex: none;
7998
+ width: 8px;
7999
+ height: 8px;
8000
+ border-radius: 50%;
8001
+ background: var(--text-muted);
8002
+ }
8003
+
8004
+ .confirm-dot.busy {
8005
+ background: var(--success);
8006
+ }
8007
+
8008
+ .confirm-dot.wait {
8009
+ background: var(--warning);
8010
+ }
8011
+
8012
+ .confirm-warn {
8013
+ font-size: 12px;
8014
+ color: var(--warning);
8015
+ }
8016
+
8017
+ .confirm-footer {
8018
+ justify-content: space-between;
8019
+ align-items: center;
8020
+ padding: 12px 20px 16px;
8021
+ }
8022
+
8023
+ .confirm-hint {
8024
+ display: flex;
8025
+ flex-wrap: nowrap;
8026
+ gap: 12px;
8027
+ white-space: nowrap;
8028
+ font-size: 11px;
8029
+ color: var(--text-muted);
8030
+ }
8031
+
8032
+ .confirm-hint kbd {
8033
+ font-family: var(--mono);
8034
+ font-size: 10px;
8035
+ border: 1px solid var(--border);
8036
+ border-bottom-width: 2px;
8037
+ border-radius: 4px;
8038
+ padding: 1px 5px;
8039
+ background: var(--bg-elevated);
8040
+ color: var(--text-secondary);
8041
+ }
8042
+
8043
+ .confirm-buttons {
8044
+ display: flex;
8045
+ gap: 8px;
8046
+ }
8047
+
8048
+ .confirm-buttons .btn {
8049
+ padding: 8px 16px;
8050
+ white-space: nowrap;
8051
+ }
8052
+ /* #endregion */
8053
+
7479
8054
  /* Reference card, not reading material: it stays out of the modal zoom, uses the app's
7480
8055
  small type, and scrolls its body (rule shared with #team-modal) instead of growing past
7481
8056
  the viewport cap. */
@@ -7811,15 +8386,14 @@ select.form-input option:checked {
7811
8386
  }
7812
8387
 
7813
8388
  .btn-danger {
7814
- background: var(--danger);
7815
- border-color: var(--danger);
7816
- color: white;
8389
+ background: color-mix(in srgb, var(--accent) 12%, transparent);
8390
+ border-color: color-mix(in srgb, var(--accent) 40%, transparent);
8391
+ color: var(--accent);
7817
8392
  }
7818
8393
 
7819
8394
  .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);
8395
+ background: color-mix(in srgb, var(--accent) 22%, transparent);
8396
+ border-color: var(--accent);
7823
8397
  }
7824
8398
 
7825
8399
  .btn-secondary {
@@ -8334,6 +8908,57 @@ select.form-input option:checked {
8334
8908
  min-width: 0;
8335
8909
  }
8336
8910
 
8911
+ .ns-body select.form-input {
8912
+ appearance: none;
8913
+ padding-right: 30px;
8914
+ cursor: pointer;
8915
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238b8d95' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
8916
+ background-repeat: no-repeat;
8917
+ background-position: right 10px center;
8918
+ }
8919
+
8920
+ .ns-notched {
8921
+ flex: 1;
8922
+ min-width: 0;
8923
+ margin: 0;
8924
+ padding: 0;
8925
+ border: 1px solid var(--border);
8926
+ border-radius: 6px;
8927
+ background: var(--bg-elevated);
8928
+ transition:
8929
+ border-color 0.15s ease,
8930
+ box-shadow 0.15s ease;
8931
+ }
8932
+
8933
+ .ns-notched:focus-within {
8934
+ border-color: var(--accent);
8935
+ box-shadow: 0 0 0 3px var(--accent-dim);
8936
+ }
8937
+
8938
+ .ns-notched legend {
8939
+ margin: 0 8px 0 auto;
8940
+ padding: 0 4px;
8941
+ font-size: 11px;
8942
+ font-weight: 500;
8943
+ line-height: 13px;
8944
+ color: var(--text-secondary);
8945
+ }
8946
+
8947
+ .ns-notched:focus-within legend {
8948
+ color: var(--accent-text);
8949
+ }
8950
+
8951
+ /* The legend's lower half sits inside the box, so less top padding keeps the box as tall as a plain input. */
8952
+ .ns-body .ns-notched select.form-input,
8953
+ .ns-body .ns-notched select.form-input:focus {
8954
+ padding-top: 2px;
8955
+ font-size: 12px;
8956
+ background-position: right 10px top calc(50% - 3px);
8957
+ border: none;
8958
+ background-color: transparent;
8959
+ box-shadow: none;
8960
+ }
8961
+
8337
8962
  .ns-body .btn.ns-browse {
8338
8963
  flex: none;
8339
8964
  padding: 8px 12px;
@@ -9010,8 +9635,8 @@ select.form-input option:checked {
9010
9635
  }
9011
9636
 
9012
9637
  .storage-item-actions button.danger:hover {
9013
- background: color-mix(in srgb, var(--danger) 15%, transparent);
9014
- color: var(--danger);
9638
+ background: var(--bg-hover);
9639
+ color: var(--text-primary);
9015
9640
  }
9016
9641
 
9017
9642
  .storage-group-header {
@@ -9028,6 +9653,15 @@ select.form-input option:checked {
9028
9653
  padding-top: 0;
9029
9654
  }
9030
9655
 
9656
+ .storage-group-header.storage-group-row {
9657
+ padding: 6px 0;
9658
+ }
9659
+
9660
+ .storage-group-row .storage-item-actions {
9661
+ align-items: center;
9662
+ gap: 8px;
9663
+ }
9664
+
9031
9665
  .storage-empty {
9032
9666
  text-align: center;
9033
9667
  padding: 32px 0;
@@ -9137,6 +9771,30 @@ pre.mermaid {
9137
9771
  pre.mermaid svg {
9138
9772
  max-width: 100%;
9139
9773
  }
9774
+ /* Hides the diagram source while it loads; a failed diagram shows its error instead. */
9775
+ pre.mermaid:not(:has(svg), [data-mermaid-error]) {
9776
+ min-height: 40px;
9777
+ font-size: 0;
9778
+ }
9779
+ pre.mermaid:not(:has(svg), [data-mermaid-error])::before {
9780
+ content: 'Rendering diagram…';
9781
+ font-family: var(--mono);
9782
+ font-size: 12px;
9783
+ color: var(--text-muted);
9784
+ }
9785
+ pre.mermaid[data-mermaid-error] {
9786
+ padding: 8px 10px;
9787
+ border: 1px dashed var(--border);
9788
+ border-radius: 4px;
9789
+ font-size: 12px;
9790
+ text-align: left;
9791
+ white-space: pre-wrap;
9792
+ color: var(--text-secondary);
9793
+ }
9794
+ pre.mermaid[data-mermaid-error]::before {
9795
+ content: 'Diagram failed to render\A';
9796
+ color: var(--danger);
9797
+ }
9140
9798
  .modal.has-mermaid {
9141
9799
  width: 80vw;
9142
9800
  max-width: 80vw;
@@ -9145,19 +9803,16 @@ pre.mermaid svg {
9145
9803
  /* #endregion */
9146
9804
 
9147
9805
  /* #region ANIMATIONS */
9806
+ /* No `to` and fill backwards: the card ends on its own opacity (.completed, .dim), not on 1. */
9148
9807
  @keyframes fadeSlideIn {
9149
9808
  from {
9150
9809
  opacity: 0;
9151
9810
  transform: translateY(8px);
9152
9811
  }
9153
- to {
9154
- opacity: 1;
9155
- transform: translateY(0);
9156
- }
9157
9812
  }
9158
9813
 
9159
9814
  .column-tasks .task-card {
9160
- animation: fadeSlideIn 150ms ease-out both;
9815
+ animation: fadeSlideIn 150ms ease-out backwards;
9161
9816
  }
9162
9817
 
9163
9818
  .column-tasks .task-card:nth-child(1) {
@@ -9529,6 +10184,10 @@ pre.mermaid svg {
9529
10184
  outline-offset: -1px;
9530
10185
  }
9531
10186
 
10187
+ .session-group-header.sg-zen {
10188
+ color: var(--accent);
10189
+ }
10190
+
9532
10191
  .sg-sub-label {
9533
10192
  padding: 8px 10px 2px 8px;
9534
10193
  font-size: 10px;
@@ -9567,6 +10226,28 @@ pre.mermaid svg {
9567
10226
  margin-left: 6px;
9568
10227
  }
9569
10228
 
10229
+ .session-group-sessions .session-group-sessions {
10230
+ padding-left: 6px;
10231
+ border-left: 1px solid var(--border);
10232
+ }
10233
+
10234
+ .session-item.sg-child {
10235
+ width: calc(100% - var(--sg-indent));
10236
+ margin-left: var(--sg-indent);
10237
+ }
10238
+
10239
+ .session-item.sg-depth-1 {
10240
+ --sg-indent: 14px;
10241
+ }
10242
+
10243
+ .session-item.sg-depth-2 {
10244
+ --sg-indent: 28px;
10245
+ }
10246
+
10247
+ .session-item.sg-depth-3 {
10248
+ --sg-indent: 42px;
10249
+ }
10250
+
9570
10251
  .session-group-sessions.collapsed,
9571
10252
  .sg-section-body.collapsed {
9572
10253
  display: none;
@@ -9617,6 +10298,23 @@ pre.mermaid svg {
9617
10298
  top: -5px;
9618
10299
  }
9619
10300
 
10301
+ /* A drop on the top edge of a child group's header goes to its parent group. */
10302
+ .session-group-header.sg-insert-parent {
10303
+ position: relative;
10304
+ }
10305
+
10306
+ .session-group-header.sg-insert-parent::after {
10307
+ content: '';
10308
+ position: absolute;
10309
+ top: -3px;
10310
+ left: -8px;
10311
+ right: 4px;
10312
+ height: 2px;
10313
+ border-radius: 1px;
10314
+ background: var(--accent);
10315
+ pointer-events: none;
10316
+ }
10317
+
9620
10318
  .session-item.sg-insert-after::after {
9621
10319
  bottom: -5px;
9622
10320
  }
@@ -9698,4 +10396,20 @@ pre.mermaid svg {
9698
10396
  letter-spacing: 0;
9699
10397
  white-space: nowrap;
9700
10398
  }
10399
+ .pane-menu-path {
10400
+ display: flex;
10401
+ }
10402
+ .pane-menu-dir {
10403
+ flex: 0 1 auto;
10404
+ min-width: 0;
10405
+ overflow: hidden;
10406
+ text-overflow: ellipsis;
10407
+ direction: rtl;
10408
+ text-align: left;
10409
+ }
10410
+ .pane-menu-name {
10411
+ flex: none;
10412
+ color: var(--text-primary);
10413
+ font-weight: 600;
10414
+ }
9701
10415
  /* #endregion */