@firstpick/pi-package-webui 0.1.1 → 0.1.3

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/styles.css CHANGED
@@ -1,5 +1,6 @@
1
1
  :root {
2
- color-scheme: dark;
2
+ --theme-color-scheme: dark;
3
+ color-scheme: var(--theme-color-scheme);
3
4
 
4
5
  /* Catppuccin Mocha core */
5
6
  --ctp-rosewater: #f5e0dc;
@@ -23,11 +24,18 @@
23
24
  --ctp-base: #1e1e2e;
24
25
  --ctp-mantle: #181825;
25
26
  --ctp-crust: #11111b;
27
+ --ctp-text-rgb: 205, 214, 244;
28
+ --ctp-subtext-rgb: 186, 194, 222;
29
+ --ctp-overlay-rgb: 108, 112, 134;
30
+ --ctp-surface-rgb: 49, 50, 68;
31
+ --ctp-base-rgb: 30, 30, 46;
32
+ --ctp-mantle-rgb: 24, 24, 37;
33
+ --ctp-crust-rgb: 17, 17, 27;
26
34
 
27
35
  --bg: var(--ctp-crust);
28
- --panel: rgba(30, 30, 46, 0.72);
29
- --panel-2: rgba(49, 50, 68, 0.78);
30
- --panel-3: rgba(24, 24, 37, 0.92);
36
+ --panel: rgba(var(--ctp-base-rgb), 0.72);
37
+ --panel-2: rgba(var(--ctp-surface-rgb), 0.78);
38
+ --panel-3: rgba(var(--ctp-mantle-rgb), 0.92);
31
39
  --text: var(--ctp-text);
32
40
  --muted: var(--ctp-subtext);
33
41
  --border: rgba(180, 190, 254, 0.22);
@@ -37,29 +45,40 @@
37
45
  --danger: var(--ctp-red);
38
46
  --warning: var(--ctp-yellow);
39
47
  --ok: var(--ctp-green);
40
- --shadow: rgba(17, 17, 27, 0.78);
48
+ --shadow: rgba(var(--ctp-crust-rgb), 0.78);
41
49
  --glow-mauve: rgba(203, 166, 247, 0.42);
42
50
  --glow-blue: rgba(137, 180, 250, 0.36);
43
51
  --glow-pink: rgba(245, 194, 231, 0.34);
44
52
  --glow-teal: rgba(148, 226, 213, 0.26);
45
- --panel-gradient: linear-gradient(145deg, rgba(49, 50, 68, 0.78), rgba(24, 24, 37, 0.86) 52%, rgba(17, 17, 27, 0.9));
53
+ --panel-gradient: linear-gradient(145deg, rgba(var(--ctp-surface-rgb), 0.78), rgba(var(--ctp-mantle-rgb), 0.86) 52%, rgba(var(--ctp-crust-rgb), 0.9));
46
54
  --neon-gradient: linear-gradient(120deg, var(--ctp-pink), var(--ctp-mauve) 32%, var(--ctp-blue) 66%, var(--ctp-teal));
55
+ --context-card-gradient: linear-gradient(100deg, rgba(166, 227, 161, 0.62) 0%, rgba(249, 226, 175, 0.66) 36%, rgba(137, 180, 250, 0.64) 62%, rgba(243, 139, 168, 0.78) 100%);
56
+ --context-active-color: var(--ctp-green);
57
+ --context-active-glow: rgba(166, 227, 161, 0.42);
58
+ --background-glow-pink: rgba(245, 194, 231, 0.34);
59
+ --background-glow-blue: rgba(137, 180, 250, 0.32);
60
+ --background-glow-teal: rgba(148, 226, 213, 0.20);
61
+ --button-primary-text: #11111b;
62
+ --visual-viewport-height: 100dvh;
63
+ --visual-viewport-offset-top: 0px;
64
+ --keyboard-inset-bottom: 0px;
47
65
 
48
66
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
49
67
  }
50
68
 
51
69
  * { box-sizing: border-box; }
52
70
  html, body { height: 100%; min-height: 100%; }
71
+ html { overflow-x: hidden; }
53
72
  body {
54
73
  margin: 0;
55
74
  min-height: 0;
56
75
  overflow: hidden;
57
76
  color: var(--text);
58
77
  background:
59
- radial-gradient(circle at 8% -8%, rgba(245, 194, 231, 0.34) 0, transparent 31rem),
60
- radial-gradient(circle at 82% 2%, rgba(137, 180, 250, 0.32) 0, transparent 34rem),
61
- radial-gradient(circle at 52% 112%, rgba(148, 226, 213, 0.20) 0, transparent 30rem),
62
- linear-gradient(135deg, #11111b 0%, #181825 45%, #1e1e2e 100%);
78
+ radial-gradient(circle at 8% -8%, var(--background-glow-pink) 0, transparent 31rem),
79
+ radial-gradient(circle at 82% 2%, var(--background-glow-blue) 0, transparent 34rem),
80
+ radial-gradient(circle at 52% 112%, var(--background-glow-teal) 0, transparent 30rem),
81
+ linear-gradient(135deg, var(--ctp-crust) 0%, var(--ctp-mantle) 45%, var(--ctp-base) 100%);
63
82
  }
64
83
  body::before,
65
84
  body::after {
@@ -79,21 +98,22 @@ body::before {
79
98
  }
80
99
  body::after {
81
100
  opacity: 0.14;
82
- background: repeating-linear-gradient(to bottom, transparent 0 4px, rgba(205, 214, 244, 0.36) 5px, transparent 6px);
101
+ background: repeating-linear-gradient(to bottom, transparent 0 4px, rgba(var(--ctp-text-rgb), 0.36) 5px, transparent 6px);
83
102
  mix-blend-mode: screen;
84
103
  }
85
104
 
86
105
  button, select, textarea, input {
87
106
  color: var(--text);
88
- background: linear-gradient(180deg, rgba(49, 50, 68, 0.9), rgba(24, 24, 37, 0.88));
107
+ background: linear-gradient(180deg, var(--panel-2), var(--panel-3));
89
108
  border: 1px solid var(--border);
90
109
  border-radius: 0.7rem;
91
110
  font: inherit;
92
111
  outline: none;
93
112
  }
94
- button, select, input { min-height: 2.35rem; }
113
+ button, select, input { min-height: 44px; }
95
114
  button {
96
115
  position: relative;
116
+ min-width: 44px;
97
117
  padding: 0.56rem 0.86rem;
98
118
  cursor: pointer;
99
119
  color: var(--ctp-text);
@@ -107,14 +127,14 @@ button:hover {
107
127
  }
108
128
  button:active { transform: translateY(0); }
109
129
  button.primary {
110
- color: #11111b;
130
+ color: var(--button-primary-text);
111
131
  font-weight: 800;
112
132
  border-color: transparent;
113
133
  background: var(--neon-gradient);
114
134
  box-shadow: 0 0 1.4rem var(--glow-mauve), 0 0.7rem 1.8rem rgba(0, 0, 0, 0.35);
115
135
  }
116
136
  button.danger {
117
- color: #11111b;
137
+ color: var(--button-primary-text);
118
138
  font-weight: 800;
119
139
  background: linear-gradient(120deg, var(--ctp-red), var(--ctp-peach));
120
140
  border-color: rgba(243, 139, 168, 0.82);
@@ -131,7 +151,7 @@ select {
131
151
  padding: 0.5rem 2.15rem 0.5rem 0.7rem;
132
152
  min-width: 8rem;
133
153
  color: var(--ctp-text);
134
- color-scheme: dark;
154
+ color-scheme: var(--theme-color-scheme);
135
155
  accent-color: var(--ctp-mauve);
136
156
  border-color: rgba(180, 190, 254, 0.30);
137
157
  background-color: var(--ctp-base);
@@ -139,7 +159,7 @@ select {
139
159
  linear-gradient(45deg, transparent 50%, var(--ctp-teal) 50%),
140
160
  linear-gradient(135deg, var(--ctp-teal) 50%, transparent 50%),
141
161
  linear-gradient(135deg, rgba(245, 194, 231, 0.16), rgba(137, 180, 250, 0.10) 45%, rgba(148, 226, 213, 0.12)),
142
- linear-gradient(180deg, rgba(49, 50, 68, 0.98), rgba(24, 24, 37, 0.96));
162
+ linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.98), rgba(var(--ctp-mantle-rgb), 0.96));
143
163
  background-position:
144
164
  calc(100% - 1.05rem) 50%,
145
165
  calc(100% - 0.72rem) 50%,
@@ -151,7 +171,7 @@ select {
151
171
  100% 100%,
152
172
  100% 100%;
153
173
  background-repeat: no-repeat;
154
- box-shadow: inset 0 1px 0 rgba(255,255,255,0.045), 0 0.55rem 1.3rem rgba(17, 17, 27, 0.22);
174
+ box-shadow: inset 0 1px 0 rgba(255,255,255,0.045), 0 0.55rem 1.3rem rgba(var(--ctp-crust-rgb), 0.22);
155
175
  }
156
176
  select:hover {
157
177
  border-color: rgba(203, 166, 247, 0.58);
@@ -179,11 +199,17 @@ textarea {
179
199
  color: var(--ctp-text);
180
200
  caret-color: var(--ctp-pink);
181
201
  background:
182
- linear-gradient(180deg, rgba(17, 17, 27, 0.78), rgba(30, 30, 46, 0.8)),
183
- radial-gradient(circle at 0 0, rgba(203, 166, 247, 0.14), transparent 18rem);
184
- box-shadow: inset 0 0 0 1px rgba(245, 194, 231, 0.04), inset 0 0 2rem rgba(17, 17, 27, 0.42);
202
+ linear-gradient(180deg, var(--panel-3), var(--panel)),
203
+ radial-gradient(circle at 0 0, var(--glow-mauve), transparent 18rem);
204
+ box-shadow: inset 0 0 0 1px rgba(245, 194, 231, 0.04), inset 0 0 2rem rgba(var(--ctp-crust-rgb), 0.42);
205
+ }
206
+ textarea::placeholder { color: rgba(var(--ctp-subtext-rgb), 0.62); }
207
+ #promptInput {
208
+ min-height: calc(1.5em + 1.8rem);
209
+ max-height: min(38vh, 18rem);
210
+ resize: none;
211
+ overflow-y: hidden;
185
212
  }
186
- textarea::placeholder { color: rgba(186, 194, 222, 0.62); }
187
213
 
188
214
  .topbar {
189
215
  position: sticky;
@@ -195,9 +221,9 @@ textarea::placeholder { color: rgba(186, 194, 222, 0.62); }
195
221
  justify-content: space-between;
196
222
  padding: 1rem 1.25rem;
197
223
  border-bottom: 1px solid rgba(180, 190, 254, 0.22);
198
- background: linear-gradient(90deg, rgba(17, 17, 27, 0.9), rgba(30, 30, 46, 0.7), rgba(24, 24, 37, 0.88));
224
+ background: linear-gradient(90deg, rgba(var(--ctp-crust-rgb), 0.9), rgba(var(--ctp-base-rgb), 0.7), rgba(var(--ctp-mantle-rgb), 0.88));
199
225
  backdrop-filter: blur(18px) saturate(150%);
200
- box-shadow: 0 0.75rem 2.5rem rgba(17, 17, 27, 0.56), 0 0 2rem rgba(203, 166, 247, 0.10);
226
+ box-shadow: 0 0.75rem 2.5rem rgba(var(--ctp-crust-rgb), 0.56), 0 0 2rem rgba(203, 166, 247, 0.10);
201
227
  }
202
228
  .topbar::before {
203
229
  content: "";
@@ -220,7 +246,7 @@ textarea::placeholder { color: rgba(186, 194, 222, 0.62); }
220
246
  color: transparent;
221
247
  text-shadow: 0 0 1.6rem var(--glow-mauve);
222
248
  }
223
- .topbar p { margin: 0.25rem 0 0; color: rgba(205, 214, 244, 0.72); }
249
+ .topbar p { margin: 0.25rem 0 0; color: rgba(var(--ctp-text-rgb), 0.72); }
224
250
  .top-actions {
225
251
  display: flex;
226
252
  align-items: center;
@@ -238,7 +264,7 @@ textarea::placeholder { color: rgba(186, 194, 222, 0.62); }
238
264
  padding: 1rem;
239
265
  width: 100%;
240
266
  height: 100vh;
241
- height: 100dvh;
267
+ height: var(--visual-viewport-height, 100dvh);
242
268
  min-height: 0;
243
269
  overflow: hidden;
244
270
  transition: grid-template-columns 180ms ease;
@@ -249,6 +275,9 @@ body.side-panel-collapsed .layout {
249
275
  body.side-panel-collapsed .side-panel {
250
276
  display: none;
251
277
  }
278
+ .side-panel-backdrop {
279
+ display: none;
280
+ }
252
281
  .side-panel-expand-button {
253
282
  position: fixed;
254
283
  top: 1rem;
@@ -267,7 +296,7 @@ body.side-panel-collapsed .side-panel {
267
296
  color: var(--ctp-teal);
268
297
  background:
269
298
  linear-gradient(120deg, rgba(148, 226, 213, 0.14), rgba(203, 166, 247, 0.10)),
270
- linear-gradient(145deg, rgba(30, 30, 46, 0.94), rgba(17, 17, 27, 0.96));
299
+ linear-gradient(145deg, rgba(var(--ctp-base-rgb), 0.94), rgba(var(--ctp-crust-rgb), 0.96));
271
300
  box-shadow: 0 0 1.15rem rgba(148, 226, 213, 0.22), 0 0.8rem 2rem rgba(0, 0, 0, 0.34), inset 0 1px 0 rgba(255,255,255,0.06);
272
301
  }
273
302
  .side-panel-expand-button::before,
@@ -298,7 +327,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
298
327
  height: 1.08rem;
299
328
  border: 1px solid rgba(180, 190, 254, 0.34);
300
329
  border-radius: 0.34rem;
301
- background: rgba(17, 17, 27, 0.50);
330
+ background: rgba(var(--ctp-crust-rgb), 0.50);
302
331
  box-shadow: inset 0 0 0 1px rgba(245, 194, 231, 0.04), 0 0 0.75rem rgba(148, 226, 213, 0.10);
303
332
  }
304
333
  .side-panel-button-icon::before {
@@ -369,7 +398,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
369
398
  margin: 0;
370
399
  padding: 0.9rem 0.95rem;
371
400
  border-bottom: 1px solid rgba(180, 190, 254, 0.16);
372
- background: linear-gradient(90deg, rgba(17, 17, 27, 0.96), rgba(30, 30, 46, 0.82));
401
+ background: linear-gradient(90deg, rgba(var(--ctp-crust-rgb), 0.96), rgba(var(--ctp-base-rgb), 0.82));
373
402
  backdrop-filter: blur(14px) saturate(150%);
374
403
  }
375
404
  .side-panel-header strong {
@@ -410,7 +439,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
410
439
  color: var(--ctp-teal);
411
440
  background:
412
441
  linear-gradient(120deg, rgba(148, 226, 213, 0.12), rgba(203, 166, 247, 0.10)),
413
- linear-gradient(145deg, rgba(49, 50, 68, 0.78), rgba(17, 17, 27, 0.86));
442
+ linear-gradient(145deg, rgba(var(--ctp-surface-rgb), 0.78), rgba(var(--ctp-crust-rgb), 0.86));
414
443
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.055), 0 0 0.8rem rgba(148, 226, 213, 0.08);
415
444
  }
416
445
  .side-panel-toggle-button:hover,
@@ -440,7 +469,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
440
469
  padding: 0.72rem;
441
470
  border: 1px solid rgba(180, 190, 254, 0.16);
442
471
  border-radius: 0.85rem;
443
- background: rgba(17, 17, 27, 0.46);
472
+ background: rgba(var(--ctp-crust-rgb), 0.46);
444
473
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.035), 0 0 1rem rgba(203, 166, 247, 0.06);
445
474
  }
446
475
  .control-field {
@@ -448,7 +477,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
448
477
  gap: 0.42rem;
449
478
  }
450
479
  .control-field label {
451
- color: rgba(205, 214, 244, 0.74);
480
+ color: rgba(var(--ctp-text-rgb), 0.74);
452
481
  font-size: 0.72rem;
453
482
  font-weight: 900;
454
483
  letter-spacing: 0.12em;
@@ -460,30 +489,76 @@ body.side-panel-collapsed .terminal-tabs-shell {
460
489
  min-width: 0;
461
490
  }
462
491
  .network-status {
492
+ display: grid;
493
+ gap: 0.42rem;
463
494
  min-width: 0;
464
- padding: 0.58rem 0.68rem;
465
- overflow: hidden;
466
- color: rgba(205, 214, 244, 0.88);
467
- text-overflow: ellipsis;
468
- white-space: nowrap;
495
+ min-height: 5.6rem;
496
+ padding: 0.68rem 0.72rem;
497
+ overflow-wrap: anywhere;
498
+ color: rgba(var(--ctp-text-rgb), 0.88);
499
+ white-space: normal;
469
500
  border: 1px solid rgba(180, 190, 254, 0.16);
470
501
  border-radius: 0.72rem;
471
- background: rgba(17, 17, 27, 0.62);
502
+ background: rgba(var(--ctp-crust-rgb), 0.62);
472
503
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
473
504
  font-size: 0.78rem;
474
505
  font-weight: 800;
506
+ line-height: 1.35;
475
507
  }
476
508
  .network-status.open {
477
509
  color: var(--ctp-yellow);
478
510
  border-color: rgba(249, 226, 175, 0.34);
479
511
  box-shadow: 0 0 0.9rem rgba(249, 226, 175, 0.10);
480
512
  }
481
- .network-status.opening {
513
+ .network-status.opening,
514
+ .network-status.closing {
482
515
  color: var(--ctp-teal);
483
516
  border-color: rgba(148, 226, 213, 0.34);
484
517
  }
485
518
  .network-status.closed {
486
- color: rgba(186, 194, 222, 0.72);
519
+ color: rgba(var(--ctp-subtext-rgb), 0.72);
520
+ }
521
+ .network-status-heading {
522
+ color: var(--ctp-text);
523
+ font-size: 0.82rem;
524
+ letter-spacing: 0.02em;
525
+ }
526
+ .network-status-detail,
527
+ .network-status-empty {
528
+ color: rgba(var(--ctp-subtext-rgb), 0.68);
529
+ font-family: inherit;
530
+ font-size: 0.72rem;
531
+ font-weight: 700;
532
+ }
533
+ .network-url-list {
534
+ display: grid;
535
+ gap: 0.28rem;
536
+ min-width: 0;
537
+ }
538
+ .network-status-url-row {
539
+ display: grid;
540
+ grid-template-columns: 3.15rem minmax(0, 1fr);
541
+ gap: 0.38rem;
542
+ align-items: start;
543
+ min-width: 0;
544
+ }
545
+ .network-status-url-label {
546
+ color: rgba(var(--ctp-subtext-rgb), 0.70);
547
+ font-size: 0.68rem;
548
+ font-weight: 900;
549
+ letter-spacing: 0.08em;
550
+ text-transform: uppercase;
551
+ }
552
+ .network-status-url {
553
+ min-width: 0;
554
+ color: inherit;
555
+ text-decoration: none;
556
+ overflow-wrap: anywhere;
557
+ }
558
+ .network-status-url:hover,
559
+ .network-status-url:focus-visible {
560
+ color: var(--ctp-teal);
561
+ text-decoration: underline;
487
562
  }
488
563
  #openNetworkButton {
489
564
  color: var(--ctp-yellow);
@@ -499,6 +574,8 @@ body.side-panel-collapsed .terminal-tabs-shell {
499
574
  }
500
575
 
501
576
  .terminal-tabs-shell {
577
+ position: relative;
578
+ z-index: 20;
502
579
  flex: 0 0 auto;
503
580
  display: flex;
504
581
  align-items: center;
@@ -507,10 +584,11 @@ body.side-panel-collapsed .terminal-tabs-shell {
507
584
  padding: 0.62rem 0.78rem;
508
585
  border-bottom: 1px solid rgba(180, 190, 254, 0.16);
509
586
  background:
510
- linear-gradient(90deg, rgba(17, 17, 27, 0.96), rgba(30, 30, 46, 0.82), rgba(24, 24, 37, 0.92)),
587
+ linear-gradient(90deg, rgba(var(--ctp-crust-rgb), 0.96), rgba(var(--ctp-base-rgb), 0.82), rgba(var(--ctp-mantle-rgb), 0.92)),
511
588
  radial-gradient(circle at 0% 0%, rgba(245, 194, 231, 0.12), transparent 18rem);
512
- box-shadow: inset 0 -1px 0 rgba(255,255,255,0.035), 0 0.45rem 1rem rgba(17, 17, 27, 0.20);
589
+ box-shadow: inset 0 -1px 0 rgba(255,255,255,0.035), 0 0.45rem 1rem rgba(var(--ctp-crust-rgb), 0.20);
513
590
  }
591
+ .terminal-tabs-toggle-button { display: none; }
514
592
  .terminal-tabs {
515
593
  display: flex;
516
594
  align-items: center;
@@ -520,6 +598,16 @@ body.side-panel-collapsed .terminal-tabs-shell {
520
598
  overflow-x: auto;
521
599
  scrollbar-width: thin;
522
600
  }
601
+ .terminal-tabs-shell:has(.terminal-tab-group:hover),
602
+ .terminal-tabs-shell:has(.terminal-tab-group:focus-within),
603
+ .terminal-tabs-shell:has(.terminal-tab-group.menu-open) {
604
+ z-index: 90;
605
+ }
606
+ .terminal-tabs:has(.terminal-tab-group:hover),
607
+ .terminal-tabs:has(.terminal-tab-group:focus-within),
608
+ .terminal-tabs:has(.terminal-tab-group.menu-open) {
609
+ overflow: visible;
610
+ }
523
611
  .terminal-tab {
524
612
  display: inline-flex;
525
613
  align-items: stretch;
@@ -528,20 +616,139 @@ body.side-panel-collapsed .terminal-tabs-shell {
528
616
  border: 1px solid rgba(180, 190, 254, 0.16);
529
617
  border-radius: 0.82rem;
530
618
  overflow: hidden;
531
- background: rgba(17, 17, 27, 0.54);
619
+ background: rgba(var(--ctp-crust-rgb), 0.54);
532
620
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.035);
533
621
  }
622
+ .terminal-tab-group {
623
+ position: relative;
624
+ z-index: 1;
625
+ overflow: visible;
626
+ isolation: isolate;
627
+ background: var(--ctp-crust);
628
+ }
629
+ .terminal-tab-group:hover,
630
+ .terminal-tab-group:focus-within {
631
+ z-index: 100;
632
+ }
633
+ .terminal-tab-group-button {
634
+ width: 100%;
635
+ }
636
+ .terminal-tab-group-count {
637
+ flex: 0 0 auto;
638
+ min-width: 1.35rem;
639
+ padding: 0.04rem 0.36rem;
640
+ border: 1px solid rgba(180, 190, 254, 0.18);
641
+ border-radius: 999px;
642
+ color: rgba(var(--ctp-subtext-rgb), 0.82);
643
+ background: rgba(var(--ctp-surface-rgb), 0.46);
644
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
645
+ font-size: 0.66rem;
646
+ font-weight: 800;
647
+ line-height: 1.15;
648
+ text-align: center;
649
+ }
650
+ .terminal-tab-group-menu {
651
+ position: absolute;
652
+ z-index: 100;
653
+ inset: 100% auto auto 0;
654
+ display: none;
655
+ flex-direction: column;
656
+ align-items: stretch;
657
+ gap: 0.38rem;
658
+ width: max-content;
659
+ padding-top: 0.38rem;
660
+ min-width: 100%;
661
+ max-width: min(18rem, calc(100vw - 2rem));
662
+ max-height: min(60vh, 24rem);
663
+ overflow: auto;
664
+ scrollbar-width: thin;
665
+ }
666
+ .terminal-tab-group:hover .terminal-tab-group-menu,
667
+ .terminal-tab-group:focus-within .terminal-tab-group-menu,
668
+ .terminal-tab-group.menu-open .terminal-tab-group-menu {
669
+ display: flex;
670
+ }
671
+ .terminal-tab-group-item {
672
+ display: inline-flex;
673
+ align-items: stretch;
674
+ width: min(16rem, calc(100vw - 2rem));
675
+ min-width: 9rem;
676
+ max-width: 16rem;
677
+ border: 1px solid rgba(180, 190, 254, 0.16);
678
+ border-radius: 0.82rem;
679
+ overflow: hidden;
680
+ background: var(--ctp-crust);
681
+ box-shadow: 0 0.75rem 1.6rem rgba(var(--ctp-crust-rgb), 0.34), inset 0 1px 0 rgba(255,255,255,0.045);
682
+ }
683
+ .terminal-tab-group-item.active {
684
+ border-color: rgba(148, 226, 213, 0.54);
685
+ background:
686
+ linear-gradient(120deg, rgba(148, 226, 213, 0.19), rgba(203, 166, 247, 0.13)),
687
+ var(--ctp-crust);
688
+ box-shadow: 0 0 1rem rgba(148, 226, 213, 0.20), inset 0 1px 0 rgba(255,255,255,0.05);
689
+ }
690
+ .terminal-tab-group-item.stopped {
691
+ opacity: 1;
692
+ border-color: rgba(243, 139, 168, 0.28);
693
+ }
694
+ .terminal-tab-group-item.activity-working {
695
+ border-color: rgba(249, 226, 175, 0.56);
696
+ }
697
+ .terminal-tab-group-item.activity-blocked {
698
+ border-color: rgba(250, 179, 135, 0.62);
699
+ }
700
+ .terminal-tab-group-item.activity-done {
701
+ border-color: rgba(166, 227, 161, 0.52);
702
+ }
703
+ .terminal-tab-group-add {
704
+ width: min(16rem, calc(100vw - 2rem));
705
+ min-height: 2.35rem;
706
+ padding: 0.38rem 0.72rem;
707
+ color: var(--ctp-pink);
708
+ white-space: nowrap;
709
+ border: 1px solid rgba(245, 194, 231, 0.30);
710
+ border-radius: 0.78rem;
711
+ background:
712
+ linear-gradient(120deg, rgba(245, 194, 231, 0.14), rgba(137, 180, 250, 0.10)),
713
+ var(--ctp-crust);
714
+ box-shadow: 0 0.75rem 1.6rem rgba(var(--ctp-crust-rgb), 0.30), inset 0 1px 0 rgba(255,255,255,0.045);
715
+ }
716
+ .terminal-tab-group-add:hover {
717
+ color: #11111b;
718
+ border-color: transparent;
719
+ background: linear-gradient(120deg, var(--ctp-pink), var(--ctp-blue));
720
+ }
534
721
  .terminal-tab.active {
535
722
  border-color: rgba(148, 226, 213, 0.54);
536
723
  background:
537
724
  linear-gradient(120deg, rgba(148, 226, 213, 0.17), rgba(203, 166, 247, 0.12)),
538
- rgba(17, 17, 27, 0.60);
725
+ rgba(var(--ctp-crust-rgb), 0.60);
539
726
  box-shadow: 0 0 1rem rgba(148, 226, 213, 0.18), inset 0 1px 0 rgba(255,255,255,0.05);
540
727
  }
728
+ .terminal-tab-group.active {
729
+ background:
730
+ linear-gradient(120deg, rgba(148, 226, 213, 0.17), rgba(203, 166, 247, 0.12)),
731
+ var(--ctp-crust);
732
+ }
541
733
  .terminal-tab.stopped {
542
734
  opacity: 0.72;
543
735
  border-color: rgba(243, 139, 168, 0.28);
544
736
  }
737
+ .terminal-tab-group.stopped {
738
+ opacity: 1;
739
+ }
740
+ .terminal-tab.activity-working {
741
+ border-color: rgba(249, 226, 175, 0.56);
742
+ box-shadow: 0 0 1rem rgba(249, 226, 175, 0.14), inset 0 1px 0 rgba(255,255,255,0.045);
743
+ }
744
+ .terminal-tab.activity-blocked {
745
+ border-color: rgba(250, 179, 135, 0.62);
746
+ box-shadow: 0 0 1rem rgba(250, 179, 135, 0.20), inset 0 1px 0 rgba(255,255,255,0.045);
747
+ }
748
+ .terminal-tab.activity-done {
749
+ border-color: rgba(166, 227, 161, 0.52);
750
+ box-shadow: 0 0 1rem rgba(166, 227, 161, 0.16), inset 0 1px 0 rgba(255,255,255,0.045);
751
+ }
545
752
  .terminal-tab-button,
546
753
  .terminal-tab-close,
547
754
  .terminal-new-tab-button {
@@ -560,6 +767,60 @@ body.side-panel-collapsed .terminal-tabs-shell {
560
767
  padding: 0.38rem 0.66rem;
561
768
  text-align: left;
562
769
  }
770
+ .terminal-tab-title-row {
771
+ display: flex;
772
+ align-items: center;
773
+ gap: 0.38rem;
774
+ min-width: 0;
775
+ }
776
+ .terminal-tab-activity-indicator {
777
+ flex: 0 0 0.58rem;
778
+ width: 0.58rem;
779
+ height: 0.58rem;
780
+ border-radius: 999px;
781
+ background: rgba(var(--ctp-subtext-rgb), 0.38);
782
+ box-shadow: 0 0 0 1px rgba(255,255,255,0.08), 0 0 0.45rem rgba(var(--ctp-subtext-rgb), 0.10);
783
+ }
784
+ .terminal-tab.activity-working .terminal-tab-activity-indicator {
785
+ background: var(--ctp-yellow);
786
+ box-shadow: 0 0 0 1px rgba(249, 226, 175, 0.34), 0 0 0.8rem rgba(249, 226, 175, 0.52);
787
+ animation: terminal-tab-working-pulse 1.15s ease-in-out infinite;
788
+ }
789
+ .terminal-tab.activity-blocked .terminal-tab-activity-indicator {
790
+ background: var(--ctp-peach);
791
+ box-shadow: 0 0 0 1px rgba(250, 179, 135, 0.38), 0 0 0.85rem rgba(250, 179, 135, 0.58);
792
+ animation: terminal-tab-working-pulse 1.35s ease-in-out infinite;
793
+ }
794
+ .terminal-tab.activity-done .terminal-tab-activity-indicator {
795
+ background: var(--ctp-green);
796
+ box-shadow: 0 0 0 1px rgba(166, 227, 161, 0.34), 0 0 0.8rem rgba(166, 227, 161, 0.48);
797
+ }
798
+ .terminal-tab.stopped .terminal-tab-activity-indicator {
799
+ background: var(--ctp-red);
800
+ box-shadow: 0 0 0 1px rgba(243, 139, 168, 0.28), 0 0 0.6rem rgba(243, 139, 168, 0.24);
801
+ }
802
+ .terminal-tab-group-item.activity-working .terminal-tab-activity-indicator {
803
+ background: var(--ctp-yellow);
804
+ box-shadow: 0 0 0 1px rgba(249, 226, 175, 0.34), 0 0 0.8rem rgba(249, 226, 175, 0.52);
805
+ animation: terminal-tab-working-pulse 1.15s ease-in-out infinite;
806
+ }
807
+ .terminal-tab-group-item.activity-blocked .terminal-tab-activity-indicator {
808
+ background: var(--ctp-peach);
809
+ box-shadow: 0 0 0 1px rgba(250, 179, 135, 0.38), 0 0 0.85rem rgba(250, 179, 135, 0.58);
810
+ animation: terminal-tab-working-pulse 1.35s ease-in-out infinite;
811
+ }
812
+ .terminal-tab-group-item.activity-done .terminal-tab-activity-indicator {
813
+ background: var(--ctp-green);
814
+ box-shadow: 0 0 0 1px rgba(166, 227, 161, 0.34), 0 0 0.8rem rgba(166, 227, 161, 0.48);
815
+ }
816
+ .terminal-tab-group-item.stopped .terminal-tab-activity-indicator {
817
+ background: var(--ctp-red);
818
+ box-shadow: 0 0 0 1px rgba(243, 139, 168, 0.28), 0 0 0.6rem rgba(243, 139, 168, 0.24);
819
+ }
820
+ @keyframes terminal-tab-working-pulse {
821
+ 0%, 100% { transform: scale(0.86); opacity: 0.68; }
822
+ 50% { transform: scale(1.08); opacity: 1; }
823
+ }
563
824
  .terminal-tab-button:hover,
564
825
  .terminal-tab-close:hover,
565
826
  .terminal-new-tab-button:hover {
@@ -573,23 +834,31 @@ body.side-panel-collapsed .terminal-tabs-shell {
573
834
  white-space: nowrap;
574
835
  }
575
836
  .terminal-tab-title {
837
+ flex: 1 1 auto;
576
838
  color: var(--ctp-text);
577
839
  font-size: 0.84rem;
578
840
  font-weight: 900;
579
841
  letter-spacing: 0.03em;
580
842
  }
581
843
  .terminal-tab-meta {
582
- color: rgba(186, 194, 222, 0.62);
844
+ color: rgba(var(--ctp-subtext-rgb), 0.62);
583
845
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
584
846
  font-size: 0.68rem;
585
847
  }
586
- .terminal-tab.active .terminal-tab-title {
848
+ .terminal-tab.active .terminal-tab-title,
849
+ .terminal-tab-group-item.active .terminal-tab-title {
587
850
  color: var(--ctp-teal);
588
851
  text-shadow: 0 0 0.8rem var(--glow-teal);
589
852
  }
853
+ .terminal-tab.activity-working .terminal-tab-meta,
854
+ .terminal-tab-group-item.activity-working .terminal-tab-meta { color: rgba(249, 226, 175, 0.82); }
855
+ .terminal-tab.activity-blocked .terminal-tab-meta,
856
+ .terminal-tab-group-item.activity-blocked .terminal-tab-meta { color: rgba(250, 179, 135, 0.88); }
857
+ .terminal-tab.activity-done .terminal-tab-meta,
858
+ .terminal-tab-group-item.activity-done .terminal-tab-meta { color: rgba(166, 227, 161, 0.82); }
590
859
  .terminal-tab-close {
591
860
  flex: 0 0 2.1rem;
592
- color: rgba(186, 194, 222, 0.72);
861
+ color: rgba(var(--ctp-subtext-rgb), 0.72);
593
862
  border-left: 1px solid rgba(180, 190, 254, 0.10);
594
863
  font-size: 1.2rem;
595
864
  line-height: 1;
@@ -606,7 +875,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
606
875
  border-radius: 0.78rem;
607
876
  background:
608
877
  linear-gradient(120deg, rgba(245, 194, 231, 0.12), rgba(137, 180, 250, 0.08)),
609
- rgba(17, 17, 27, 0.58);
878
+ rgba(var(--ctp-crust-rgb), 0.58);
610
879
  }
611
880
  .terminal-new-tab-button:hover {
612
881
  color: #11111b;
@@ -618,7 +887,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
618
887
  flex: 0 0 auto;
619
888
  border-bottom: 1px solid rgba(180, 190, 254, 0.16);
620
889
  padding: 0.72rem 0.95rem;
621
- color: rgba(205, 214, 244, 0.78);
890
+ color: rgba(var(--ctp-text-rgb), 0.78);
622
891
  background: linear-gradient(90deg, rgba(203, 166, 247, 0.10), rgba(137, 180, 250, 0.05), rgba(148, 226, 213, 0.08));
623
892
  }
624
893
  .statusbar {
@@ -627,14 +896,14 @@ body.side-panel-collapsed .terminal-tabs-shell {
627
896
  display: grid;
628
897
  gap: 0.58rem;
629
898
  padding: 0.78rem 0.95rem 0.82rem;
630
- color: rgba(205, 214, 244, 0.84);
899
+ color: rgba(var(--ctp-text-rgb), 0.84);
631
900
  border-top: 1px solid rgba(245, 194, 231, 0.18);
632
901
  border-bottom: 1px solid rgba(148, 226, 213, 0.22);
633
902
  background:
634
903
  radial-gradient(circle at 6% 0%, rgba(245, 194, 231, 0.13), transparent 15rem),
635
904
  radial-gradient(circle at 82% 50%, rgba(148, 226, 213, 0.10), transparent 18rem),
636
- linear-gradient(135deg, rgba(17, 17, 27, 0.94), rgba(30, 30, 46, 0.80) 48%, rgba(24, 24, 37, 0.92));
637
- box-shadow: inset 0 1px 0 rgba(255,255,255,0.04), 0 -0.45rem 1.2rem rgba(17, 17, 27, 0.28);
905
+ linear-gradient(135deg, rgba(var(--ctp-crust-rgb), 0.94), rgba(var(--ctp-base-rgb), 0.80) 48%, rgba(var(--ctp-mantle-rgb), 0.92));
906
+ box-shadow: inset 0 1px 0 rgba(255,255,255,0.04), 0 -0.45rem 1.2rem rgba(var(--ctp-crust-rgb), 0.28);
638
907
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
639
908
  font-size: 0.76rem;
640
909
  line-height: 1.35;
@@ -663,14 +932,15 @@ body.side-panel-collapsed .terminal-tabs-shell {
663
932
  display: grid;
664
933
  grid-template-columns: minmax(10rem, 1.9fr) minmax(5rem, 0.55fr) minmax(6.5rem, 0.6fr) minmax(7rem, 0.65fr) minmax(12rem, 1.2fr);
665
934
  gap: 0.5rem;
666
- color: rgba(186, 194, 222, 0.76);
935
+ color: rgba(var(--ctp-subtext-rgb), 0.76);
667
936
  }
937
+ .footer-details-toggle { display: none; }
668
938
  .footer-metric,
669
939
  .footer-meta {
670
940
  min-width: 0;
671
941
  border: 1px solid rgba(180, 190, 254, 0.16);
672
942
  background:
673
- linear-gradient(180deg, rgba(49, 50, 68, 0.46), rgba(17, 17, 27, 0.34)),
943
+ linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.46), rgba(var(--ctp-crust-rgb), 0.34)),
674
944
  linear-gradient(90deg, rgba(203, 166, 247, 0.06), rgba(148, 226, 213, 0.03));
675
945
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.035), 0 0.45rem 1rem rgba(0, 0, 0, 0.10);
676
946
  }
@@ -698,7 +968,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
698
968
  }
699
969
  .footer-metric-label,
700
970
  .footer-meta-label {
701
- color: rgba(186, 194, 222, 0.62);
971
+ color: rgba(var(--ctp-subtext-rgb), 0.62);
702
972
  font-size: 0.64rem;
703
973
  font-weight: 950;
704
974
  letter-spacing: 0.12em;
@@ -708,7 +978,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
708
978
  .footer-meta-value {
709
979
  min-width: 0;
710
980
  overflow: hidden;
711
- color: rgba(205, 214, 244, 0.94);
981
+ color: rgba(var(--ctp-text-rgb), 0.94);
712
982
  font-weight: 800;
713
983
  text-overflow: ellipsis;
714
984
  white-space: nowrap;
@@ -741,10 +1011,122 @@ button.footer-meta {
741
1011
  .footer-workspace.footer-meta-action .footer-meta-value {
742
1012
  color: var(--ctp-green);
743
1013
  }
1014
+ .footer-context { display: none; }
1015
+ .footer-context-card {
1016
+ --context-usage: 0%;
1017
+ --context-active-color: var(--ctp-green);
1018
+ --context-active-glow: rgba(166, 227, 161, 0.42);
1019
+ position: relative;
1020
+ isolation: isolate;
1021
+ overflow: hidden;
1022
+ }
1023
+ .footer-context-card.has-context-usage {
1024
+ border-color: rgba(148, 226, 213, 0.30);
1025
+ }
1026
+ .footer-context-card.has-context-usage::before {
1027
+ content: "";
1028
+ position: absolute;
1029
+ inset: 0;
1030
+ z-index: 0;
1031
+ pointer-events: none;
1032
+ background: var(--context-card-gradient);
1033
+ clip-path: inset(0 calc(100% - var(--context-usage)) 0 0);
1034
+ }
1035
+ .footer-context-card > * {
1036
+ position: relative;
1037
+ z-index: 1;
1038
+ }
1039
+ .footer-context-card.has-context-usage .footer-metric-label,
1040
+ .footer-context-card.has-context-usage .footer-metric-value,
1041
+ .footer-context-card.has-context-usage .footer-meta-label,
1042
+ .footer-context-card.has-context-usage .footer-meta-value {
1043
+ color: var(--context-active-color);
1044
+ text-shadow: 0 0 0.65rem var(--context-active-glow);
1045
+ }
1046
+ .footer-context .footer-meta-value {
1047
+ color: var(--ctp-teal);
1048
+ text-shadow: 0 0 0.6rem rgba(148, 226, 213, 0.22);
1049
+ }
744
1050
  .footer-model .footer-meta-value {
745
1051
  color: var(--ctp-teal);
746
1052
  text-shadow: 0 0 0.6rem rgba(148, 226, 213, 0.22);
747
1053
  }
1054
+ .footer-model.footer-meta-action {
1055
+ border-color: rgba(148, 226, 213, 0.24);
1056
+ }
1057
+ .footer-model-picker {
1058
+ position: absolute;
1059
+ right: 0.95rem;
1060
+ bottom: calc(100% + 0.5rem);
1061
+ z-index: 40;
1062
+ display: grid;
1063
+ gap: 0.42rem;
1064
+ width: min(34rem, calc(100vw - 2rem));
1065
+ max-height: min(50dvh, 28rem);
1066
+ overflow: auto;
1067
+ padding: 0.72rem;
1068
+ border: 1px solid rgba(148, 226, 213, 0.30);
1069
+ border-radius: 0.95rem;
1070
+ background:
1071
+ radial-gradient(circle at 8% 0%, rgba(148, 226, 213, 0.13), transparent 12rem),
1072
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.98), rgba(var(--ctp-base-rgb), 0.96));
1073
+ box-shadow: 0 1.2rem 2.8rem rgba(var(--ctp-crust-rgb), 0.68), 0 0 1.4rem rgba(148, 226, 213, 0.14), inset 0 1px 0 rgba(255,255,255,0.055);
1074
+ }
1075
+ .footer-model-picker-title {
1076
+ color: var(--ctp-teal);
1077
+ font-size: 0.72rem;
1078
+ font-weight: 950;
1079
+ letter-spacing: 0.14em;
1080
+ text-transform: uppercase;
1081
+ }
1082
+ .footer-model-picker-source,
1083
+ .footer-model-picker-empty {
1084
+ line-height: 1.4;
1085
+ overflow-wrap: anywhere;
1086
+ }
1087
+ .footer-model-picker-source {
1088
+ color: rgba(var(--ctp-subtext-rgb), 0.68);
1089
+ font-size: 0.74rem;
1090
+ }
1091
+ .footer-model-picker-empty {
1092
+ display: grid;
1093
+ gap: 0.32rem;
1094
+ padding: 0.58rem 0.62rem;
1095
+ border: 1px solid rgba(249, 226, 175, 0.18);
1096
+ border-radius: 0.72rem;
1097
+ background: rgba(var(--ctp-crust-rgb), 0.48);
1098
+ }
1099
+ .footer-model-picker-empty strong {
1100
+ color: var(--ctp-yellow);
1101
+ }
1102
+ .footer-model-option {
1103
+ display: grid;
1104
+ grid-template-columns: minmax(0, 1fr);
1105
+ gap: 0.12rem;
1106
+ width: 100%;
1107
+ min-height: 44px;
1108
+ padding: 0.5rem 0.64rem;
1109
+ text-align: left;
1110
+ }
1111
+ .footer-model-option.active {
1112
+ border-color: rgba(166, 227, 161, 0.46);
1113
+ box-shadow: inset 3px 0 0 var(--ctp-green), 0 0 1rem rgba(166, 227, 161, 0.14);
1114
+ }
1115
+ .footer-model-option-main,
1116
+ .footer-model-option-name {
1117
+ min-width: 0;
1118
+ overflow: hidden;
1119
+ text-overflow: ellipsis;
1120
+ white-space: nowrap;
1121
+ }
1122
+ .footer-model-option-main {
1123
+ color: var(--ctp-text);
1124
+ font-weight: 850;
1125
+ }
1126
+ .footer-model-option-name {
1127
+ color: rgba(var(--ctp-subtext-rgb), 0.68);
1128
+ font-size: 0.72rem;
1129
+ }
748
1130
  .footer-branch .footer-meta-value {
749
1131
  color: var(--ctp-pink);
750
1132
  text-shadow: 0 0 0.55rem rgba(245, 194, 231, 0.18);
@@ -772,8 +1154,8 @@ button.footer-meta {
772
1154
  background:
773
1155
  radial-gradient(circle at 10% 10%, rgba(166, 227, 161, 0.10), transparent 16rem),
774
1156
  radial-gradient(circle at 92% 0%, rgba(203, 166, 247, 0.14), transparent 18rem),
775
- linear-gradient(145deg, rgba(17, 17, 27, 0.94), rgba(30, 30, 46, 0.82));
776
- box-shadow: inset 0 1px 0 rgba(255,255,255,0.045), 0 -0.5rem 1.4rem rgba(17, 17, 27, 0.22);
1157
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.94), rgba(var(--ctp-base-rgb), 0.82));
1158
+ box-shadow: inset 0 1px 0 rgba(255,255,255,0.045), 0 -0.5rem 1.4rem rgba(var(--ctp-crust-rgb), 0.22);
777
1159
  }
778
1160
  .git-workflow-header {
779
1161
  display: flex;
@@ -811,8 +1193,8 @@ button.footer-meta {
811
1193
  padding: 0.38rem 0.72rem 0.38rem 1.62rem;
812
1194
  border: 1px solid rgba(180, 190, 254, 0.16);
813
1195
  border-radius: 999px;
814
- color: rgba(186, 194, 222, 0.76);
815
- background: rgba(17, 17, 27, 0.42);
1196
+ color: rgba(var(--ctp-subtext-rgb), 0.76);
1197
+ background: rgba(var(--ctp-crust-rgb), 0.42);
816
1198
  font-size: 0.76rem;
817
1199
  font-weight: 900;
818
1200
  letter-spacing: 0.08em;
@@ -826,7 +1208,7 @@ button.footer-meta {
826
1208
  width: 0.52rem;
827
1209
  height: 0.52rem;
828
1210
  border-radius: 999px;
829
- background: rgba(108, 112, 134, 0.72);
1211
+ background: rgba(var(--ctp-overlay-rgb), 0.72);
830
1212
  transform: translateY(-50%);
831
1213
  }
832
1214
  .git-workflow-step.active {
@@ -855,9 +1237,9 @@ button.footer-meta {
855
1237
  padding: 0.78rem;
856
1238
  border: 1px solid rgba(180, 190, 254, 0.16);
857
1239
  border-radius: 0.82rem;
858
- color: rgba(205, 214, 244, 0.88);
1240
+ color: rgba(var(--ctp-text-rgb), 0.88);
859
1241
  background:
860
- linear-gradient(180deg, rgba(17, 17, 27, 0.76), rgba(17, 17, 27, 0.58)),
1242
+ linear-gradient(180deg, rgba(var(--ctp-crust-rgb), 0.76), rgba(var(--ctp-crust-rgb), 0.58)),
861
1243
  radial-gradient(circle at 0 0, rgba(148, 226, 213, 0.08), transparent 14rem);
862
1244
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
863
1245
  font-size: 0.82rem;
@@ -870,7 +1252,7 @@ button.footer-meta {
870
1252
  }
871
1253
  .widget-area:empty { display: none; }
872
1254
  .widget {
873
- background: rgba(17, 17, 27, 0.72);
1255
+ background: rgba(var(--ctp-crust-rgb), 0.72);
874
1256
  border: 1px solid rgba(148, 226, 213, 0.24);
875
1257
  border-radius: 0.8rem;
876
1258
  padding: 0.7rem;
@@ -878,21 +1260,209 @@ button.footer-meta {
878
1260
  white-space: pre-wrap;
879
1261
  box-shadow: inset 0 0 1.4rem rgba(148, 226, 213, 0.06), 0 0 1rem rgba(148, 226, 213, 0.08);
880
1262
  }
1263
+ .todo-widget {
1264
+ display: grid;
1265
+ gap: 0.52rem;
1266
+ padding: 0.68rem 0.76rem;
1267
+ white-space: normal;
1268
+ border-color: rgba(137, 180, 250, 0.32);
1269
+ background:
1270
+ radial-gradient(circle at 4% 0%, rgba(137, 180, 250, 0.18), transparent 12rem),
1271
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.88), rgba(var(--ctp-base-rgb), 0.74));
1272
+ }
1273
+ .todo-widget-header {
1274
+ display: flex;
1275
+ align-items: center;
1276
+ gap: 0.48rem;
1277
+ min-width: 0;
1278
+ }
1279
+ .todo-widget-title {
1280
+ color: var(--ctp-blue);
1281
+ font-weight: 950;
1282
+ letter-spacing: 0.08em;
1283
+ text-transform: uppercase;
1284
+ }
1285
+ .todo-widget-count,
1286
+ .todo-widget-meta {
1287
+ display: inline-flex;
1288
+ align-items: center;
1289
+ min-height: 1.35rem;
1290
+ padding: 0.12rem 0.42rem;
1291
+ border: 1px solid rgba(137, 180, 250, 0.24);
1292
+ border-radius: 999px;
1293
+ background: rgba(var(--ctp-crust-rgb), 0.48);
1294
+ font-size: 0.72rem;
1295
+ font-weight: 850;
1296
+ }
1297
+ .todo-widget-count { color: var(--ctp-green); }
1298
+ .todo-widget-meta { color: var(--ctp-yellow); }
1299
+ .todo-widget-progress {
1300
+ height: 0.38rem;
1301
+ overflow: hidden;
1302
+ border-radius: 999px;
1303
+ background: rgba(var(--ctp-surface-rgb), 0.78);
1304
+ box-shadow: inset 0 0 0 1px rgba(180, 190, 254, 0.10);
1305
+ }
1306
+ .todo-widget-progress-fill {
1307
+ display: block;
1308
+ height: 100%;
1309
+ border-radius: inherit;
1310
+ background: linear-gradient(90deg, var(--ctp-blue), var(--ctp-teal), var(--ctp-green));
1311
+ box-shadow: 0 0 0.85rem rgba(148, 226, 213, 0.42);
1312
+ }
1313
+ .todo-widget-list {
1314
+ display: grid;
1315
+ gap: 0.34rem;
1316
+ margin: 0;
1317
+ padding: 0;
1318
+ list-style: none;
1319
+ }
1320
+ .todo-widget-item {
1321
+ display: grid;
1322
+ grid-template-columns: 1.35rem minmax(0, 1fr);
1323
+ align-items: start;
1324
+ gap: 0.48rem;
1325
+ min-width: 0;
1326
+ color: rgba(var(--ctp-text-rgb), 0.92);
1327
+ }
1328
+ .todo-widget-marker {
1329
+ display: inline-grid;
1330
+ place-items: center;
1331
+ width: 1.12rem;
1332
+ height: 1.12rem;
1333
+ margin-top: 0.06rem;
1334
+ border: 1px solid rgba(180, 190, 254, 0.32);
1335
+ border-radius: 0.34rem;
1336
+ color: #11111b;
1337
+ font-size: 0.74rem;
1338
+ font-weight: 950;
1339
+ line-height: 1;
1340
+ background: rgba(var(--ctp-surface-rgb), 0.88);
1341
+ }
1342
+ .todo-widget-item.done .todo-widget-marker {
1343
+ border-color: transparent;
1344
+ background: linear-gradient(135deg, var(--ctp-green), var(--ctp-teal));
1345
+ }
1346
+ .todo-widget-item.partial .todo-widget-marker {
1347
+ border-color: transparent;
1348
+ background: linear-gradient(135deg, var(--ctp-yellow), var(--ctp-peach));
1349
+ }
1350
+ .todo-widget-item.done .todo-widget-text {
1351
+ color: rgba(166, 227, 161, 0.72);
1352
+ text-decoration: line-through;
1353
+ }
1354
+ .todo-widget-item.partial .todo-widget-text { color: var(--ctp-yellow); }
1355
+ .todo-widget-text {
1356
+ min-width: 0;
1357
+ overflow-wrap: anywhere;
1358
+ line-height: 1.35;
1359
+ }
1360
+ .todo-widget-footer {
1361
+ color: rgba(var(--ctp-subtext-rgb), 0.64);
1362
+ font-size: 0.72rem;
1363
+ }
881
1364
  .chat {
1365
+ position: relative;
882
1366
  flex: 1 1 auto;
883
1367
  min-height: 0;
884
1368
  overflow: auto;
885
1369
  padding: 1rem;
886
1370
  scroll-behavior: smooth;
887
1371
  }
1372
+ .sticky-user-prompt-button[hidden] { display: none; }
1373
+ .sticky-user-prompt-button {
1374
+ position: sticky;
1375
+ top: 0;
1376
+ z-index: 12;
1377
+ display: grid;
1378
+ grid-template-columns: auto minmax(0, 1fr) auto;
1379
+ align-items: center;
1380
+ gap: 0.62rem;
1381
+ width: 100%;
1382
+ min-height: 44px;
1383
+ margin: 0 0 0.75rem;
1384
+ padding: 0.52rem 0.72rem;
1385
+ overflow: hidden;
1386
+ text-align: left;
1387
+ border-color: rgba(137, 180, 250, 0.42);
1388
+ border-radius: 0.88rem;
1389
+ backdrop-filter: blur(14px) saturate(145%);
1390
+ background:
1391
+ linear-gradient(120deg, rgba(137, 180, 250, 0.18), rgba(203, 166, 247, 0.16), rgba(148, 226, 213, 0.14)),
1392
+ linear-gradient(180deg, rgba(var(--ctp-mantle-rgb), 0.96), rgba(var(--ctp-crust-rgb), 0.94));
1393
+ box-shadow: 0 0.75rem 1.65rem rgba(var(--ctp-crust-rgb), 0.36), 0 0 1rem rgba(137, 180, 250, 0.16);
1394
+ }
1395
+ .sticky-user-prompt-button:hover {
1396
+ border-color: rgba(148, 226, 213, 0.62);
1397
+ box-shadow: 0 0.85rem 1.8rem rgba(var(--ctp-crust-rgb), 0.4), 0 0 1.2rem rgba(148, 226, 213, 0.24);
1398
+ }
1399
+ .sticky-user-prompt-label {
1400
+ color: var(--ctp-blue);
1401
+ font-size: 0.7rem;
1402
+ font-weight: 900;
1403
+ letter-spacing: 0.1em;
1404
+ text-transform: uppercase;
1405
+ white-space: nowrap;
1406
+ }
1407
+ .sticky-user-prompt-text {
1408
+ min-width: 0;
1409
+ overflow: hidden;
1410
+ color: rgba(var(--ctp-text-rgb), 0.94);
1411
+ font-size: 0.82rem;
1412
+ font-weight: 700;
1413
+ text-overflow: ellipsis;
1414
+ white-space: nowrap;
1415
+ }
1416
+ .sticky-user-prompt-meta {
1417
+ color: var(--ctp-teal);
1418
+ font-size: 0.72rem;
1419
+ font-weight: 900;
1420
+ white-space: nowrap;
1421
+ }
1422
+ .jump-to-latest-button[hidden] { display: none; }
1423
+ .jump-to-latest-button {
1424
+ align-self: center;
1425
+ z-index: 3;
1426
+ margin: 0.45rem 0;
1427
+ color: #11111b;
1428
+ font-weight: 900;
1429
+ background: linear-gradient(120deg, var(--ctp-teal), var(--ctp-blue), var(--ctp-mauve));
1430
+ border-color: transparent;
1431
+ box-shadow: 0 0 1.2rem var(--glow-teal), 0 0.7rem 1.6rem rgba(0, 0, 0, 0.28);
1432
+ }
1433
+ .feedback-tray[hidden] { display: none; }
1434
+ .feedback-tray {
1435
+ display: flex;
1436
+ align-items: center;
1437
+ justify-content: space-between;
1438
+ gap: 0.75rem;
1439
+ margin: 0 1rem 0.65rem;
1440
+ padding: 0.55rem 0.7rem;
1441
+ border: 1px solid rgba(203, 166, 247, 0.30);
1442
+ border-radius: 0.85rem;
1443
+ color: rgba(var(--ctp-text-rgb), 0.88);
1444
+ background: linear-gradient(145deg, rgba(203, 166, 247, 0.14), rgba(var(--ctp-mantle-rgb), 0.9));
1445
+ box-shadow: 0 0.85rem 1.8rem rgba(var(--ctp-crust-rgb), 0.32), 0 0 1rem rgba(203, 166, 247, 0.16);
1446
+ }
1447
+ .feedback-tray span {
1448
+ font-size: 0.78rem;
1449
+ font-weight: 800;
1450
+ letter-spacing: 0.03em;
1451
+ }
1452
+ .feedback-tray button {
1453
+ min-height: 44px;
1454
+ padding: 0.42rem 0.72rem;
1455
+ font-size: 0.78rem;
1456
+ font-weight: 900;
1457
+ }
888
1458
  .message {
889
1459
  position: relative;
890
1460
  margin: 0 0 0.9rem;
891
1461
  padding: 0.86rem;
892
1462
  border: 1px solid rgba(180, 190, 254, 0.18);
893
1463
  border-radius: 0.95rem;
894
- background: linear-gradient(145deg, rgba(49, 50, 68, 0.66), rgba(24, 24, 37, 0.7));
895
- box-shadow: 0 0.8rem 1.8rem rgba(17, 17, 27, 0.34), inset 0 1px 0 rgba(255,255,255,0.045);
1464
+ background: linear-gradient(145deg, rgba(var(--ctp-surface-rgb), 0.66), rgba(var(--ctp-mantle-rgb), 0.7));
1465
+ box-shadow: 0 0.8rem 1.8rem rgba(var(--ctp-crust-rgb), 0.34), inset 0 1px 0 rgba(255,255,255,0.045);
896
1466
  }
897
1467
  .message::before {
898
1468
  content: "";
@@ -906,20 +1476,105 @@ button.footer-meta {
906
1476
  }
907
1477
  .message.user {
908
1478
  border-color: rgba(137, 180, 250, 0.34);
909
- background: linear-gradient(145deg, rgba(137, 180, 250, 0.16), rgba(49, 50, 68, 0.58));
1479
+ background: linear-gradient(145deg, rgba(137, 180, 250, 0.16), rgba(var(--ctp-surface-rgb), 0.58));
910
1480
  }
911
1481
  .message.assistant {
912
1482
  border-color: rgba(148, 226, 213, 0.30);
913
- background: linear-gradient(145deg, rgba(148, 226, 213, 0.12), rgba(49, 50, 68, 0.58));
1483
+ background: linear-gradient(145deg, rgba(148, 226, 213, 0.12), rgba(var(--ctp-surface-rgb), 0.58));
1484
+ }
1485
+ .message.thinking,
1486
+ .message.toolCall,
1487
+ .message.assistantEvent {
1488
+ border-color: rgba(203, 166, 247, 0.26);
1489
+ background: linear-gradient(145deg, rgba(203, 166, 247, 0.10), rgba(var(--ctp-surface-rgb), 0.54));
914
1490
  }
915
- .message.toolResult, .message.bashExecution {
1491
+ .message.thinking .message-role,
1492
+ .message.toolCall .message-role,
1493
+ .message.assistantEvent .message-role {
1494
+ color: var(--ctp-mauve);
1495
+ text-shadow: 0 0 0.8rem rgba(203, 166, 247, 0.22);
1496
+ }
1497
+ .message.thinking.streaming.complete .message-role::after {
1498
+ content: " done";
1499
+ color: var(--ctp-green);
1500
+ text-shadow: 0 0 0.7rem var(--glow-teal);
1501
+ }
1502
+ .message.extension,
1503
+ .message.native,
1504
+ .message.notice {
1505
+ border-color: rgba(203, 166, 247, 0.30);
1506
+ background: linear-gradient(145deg, rgba(203, 166, 247, 0.12), rgba(var(--ctp-surface-rgb), 0.58));
1507
+ }
1508
+ .message.extension .message-role,
1509
+ .message.native .message-role,
1510
+ .message.notice .message-role {
1511
+ color: var(--ctp-mauve);
1512
+ text-shadow: 0 0 0.8rem rgba(203, 166, 247, 0.22);
1513
+ }
1514
+ .message.warn {
1515
+ border-color: rgba(249, 226, 175, 0.46);
1516
+ }
1517
+ .message.warn .message-role { color: var(--ctp-yellow); }
1518
+ .message.toolResult, .message.bashExecution, .message.compactionSummary {
916
1519
  border-color: rgba(249, 226, 175, 0.30);
917
- background: linear-gradient(145deg, rgba(249, 226, 175, 0.11), rgba(49, 50, 68, 0.58));
1520
+ background: linear-gradient(145deg, rgba(249, 226, 175, 0.11), rgba(var(--ctp-surface-rgb), 0.58));
918
1521
  padding: 0;
919
1522
  }
920
1523
  .message.streaming {
921
1524
  outline: 1px solid rgba(148, 226, 213, 0.72);
922
- box-shadow: 0 0 1.7rem var(--glow-teal), 0 0.8rem 2rem rgba(17, 17, 27, 0.4);
1525
+ box-shadow: 0 0 1.7rem var(--glow-teal), 0 0.8rem 2rem rgba(var(--ctp-crust-rgb), 0.4);
1526
+ }
1527
+ .message.run-indicator-message {
1528
+ margin-bottom: 0.5rem;
1529
+ padding: 0.52rem 0.64rem;
1530
+ border-color: rgba(148, 226, 213, 0.46);
1531
+ border-radius: 0.72rem;
1532
+ background:
1533
+ linear-gradient(120deg, rgba(148, 226, 213, 0.13), rgba(137, 180, 250, 0.08), rgba(203, 166, 247, 0.08)),
1534
+ rgba(var(--ctp-mantle-rgb), 0.82);
1535
+ }
1536
+ .message.run-indicator-message.streaming {
1537
+ outline-color: rgba(148, 226, 213, 0.42);
1538
+ box-shadow: 0 0 0.85rem rgba(148, 226, 213, 0.20), 0 0.45rem 1.1rem rgba(var(--ctp-crust-rgb), 0.32);
1539
+ }
1540
+ .message.run-indicator-message::before {
1541
+ width: 2px;
1542
+ background: linear-gradient(180deg, var(--ctp-green), var(--ctp-teal), var(--ctp-blue));
1543
+ animation: run-indicator-bar-pulse 1.35s ease-in-out infinite;
1544
+ }
1545
+ .run-indicator-row {
1546
+ display: flex;
1547
+ align-items: center;
1548
+ gap: 0.42rem;
1549
+ flex-wrap: wrap;
1550
+ font-size: 0.82rem;
1551
+ }
1552
+ .run-indicator-pulse {
1553
+ flex: 0 0 auto;
1554
+ width: 0.5rem;
1555
+ height: 0.5rem;
1556
+ border-radius: 999px;
1557
+ background: var(--ctp-green);
1558
+ box-shadow: 0 0 0 1px rgba(166, 227, 161, 0.30), 0 0 0.55rem rgba(166, 227, 161, 0.45);
1559
+ animation: run-indicator-pulse 1.1s ease-in-out infinite;
1560
+ }
1561
+ .run-indicator-text {
1562
+ color: var(--ctp-teal);
1563
+ font-size: 0.8rem;
1564
+ font-weight: 900;
1565
+ letter-spacing: 0.025em;
1566
+ }
1567
+ .run-indicator-meta {
1568
+ color: rgba(var(--ctp-text-rgb), 0.72);
1569
+ font-size: 0.72rem;
1570
+ }
1571
+ @keyframes run-indicator-pulse {
1572
+ 0%, 100% { transform: scale(0.78); opacity: 0.62; }
1573
+ 50% { transform: scale(1.16); opacity: 1; }
1574
+ }
1575
+ @keyframes run-indicator-bar-pulse {
1576
+ 0%, 100% { opacity: 0.55; box-shadow: 0 0 0.75rem rgba(148, 226, 213, 0.35); }
1577
+ 50% { opacity: 1; box-shadow: 0 0 1.25rem rgba(166, 227, 161, 0.52); }
923
1578
  }
924
1579
  .message.error {
925
1580
  border-color: rgba(243, 139, 168, 0.72);
@@ -931,7 +1586,7 @@ button.footer-meta {
931
1586
  justify-content: space-between;
932
1587
  gap: 1rem;
933
1588
  margin-bottom: 0.48rem;
934
- color: rgba(186, 194, 222, 0.78);
1589
+ color: rgba(var(--ctp-subtext-rgb), 0.78);
935
1590
  font-size: 0.78rem;
936
1591
  }
937
1592
  .message-collapse {
@@ -960,11 +1615,13 @@ button.footer-meta {
960
1615
  border-top: 1px solid rgba(249, 226, 175, 0.12);
961
1616
  }
962
1617
  .message.toolResult:not(.error) .message-collapse:not([open]) > summary.message-header,
963
- .message.bashExecution .message-collapse:not([open]) > summary.message-header {
964
- color: rgba(186, 194, 222, 0.72);
1618
+ .message.bashExecution .message-collapse:not([open]) > summary.message-header,
1619
+ .message.compactionSummary .message-collapse:not([open]) > summary.message-header {
1620
+ color: rgba(var(--ctp-subtext-rgb), 0.72);
965
1621
  }
966
1622
  .message.toolResult:not(.error) .message-collapse:not([open]) .message-role,
967
- .message.bashExecution .message-collapse:not([open]) .message-role {
1623
+ .message.bashExecution .message-collapse:not([open]) .message-role,
1624
+ .message.compactionSummary .message-collapse:not([open]) .message-role {
968
1625
  color: var(--ctp-yellow);
969
1626
  text-shadow: 0 0 0.8rem rgba(249, 226, 175, 0.28);
970
1627
  }
@@ -975,6 +1632,52 @@ button.footer-meta {
975
1632
  letter-spacing: 0.12em;
976
1633
  text-shadow: 0 0 1rem var(--glow-teal);
977
1634
  }
1635
+ .action-feedback-controls {
1636
+ position: absolute;
1637
+ top: calc(100% - 0.18rem);
1638
+ right: 0.55rem;
1639
+ z-index: 8;
1640
+ display: flex;
1641
+ justify-content: flex-end;
1642
+ gap: 0.35rem;
1643
+ opacity: 0;
1644
+ pointer-events: auto;
1645
+ transform: translateY(-0.12rem) scale(0.98);
1646
+ transition: opacity 140ms ease, transform 140ms ease;
1647
+ }
1648
+ .action-feedback-controls:hover,
1649
+ .action-feedback-controls:focus-within {
1650
+ opacity: 1;
1651
+ transform: translateY(0) scale(1);
1652
+ }
1653
+ .action-feedback-controls:not(:hover):not(:focus-within) .action-feedback-button {
1654
+ pointer-events: none;
1655
+ }
1656
+ .action-feedback-button {
1657
+ min-width: 44px;
1658
+ padding: 0.24rem 0.5rem;
1659
+ border-radius: 0.72rem;
1660
+ color: rgba(var(--ctp-text-rgb), 0.86);
1661
+ background: linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.86), rgba(var(--ctp-crust-rgb), 0.92));
1662
+ box-shadow: 0 0.45rem 1rem rgba(var(--ctp-crust-rgb), 0.34);
1663
+ }
1664
+ .action-feedback-button:hover,
1665
+ .action-feedback-button.active {
1666
+ border-color: rgba(148, 226, 213, 0.72);
1667
+ box-shadow: 0 0 0.9rem rgba(148, 226, 213, 0.20), 0 0.45rem 1rem rgba(var(--ctp-crust-rgb), 0.34);
1668
+ }
1669
+ .action-feedback-button.feedback-up.active {
1670
+ color: #11111b;
1671
+ background: linear-gradient(120deg, var(--ctp-green), var(--ctp-teal));
1672
+ }
1673
+ .action-feedback-button.feedback-down.active {
1674
+ color: #11111b;
1675
+ background: linear-gradient(120deg, var(--ctp-red), var(--ctp-peach));
1676
+ }
1677
+ .action-feedback-button.feedback-question.active {
1678
+ color: #11111b;
1679
+ background: linear-gradient(120deg, var(--ctp-yellow), var(--ctp-mauve));
1680
+ }
978
1681
  .text-block, .code-block {
979
1682
  margin: 0.35rem 0;
980
1683
  white-space: pre-wrap;
@@ -982,7 +1685,7 @@ button.footer-meta {
982
1685
  }
983
1686
  .code-block {
984
1687
  overflow: auto;
985
- background: rgba(17, 17, 27, 0.82);
1688
+ background: rgba(var(--ctp-crust-rgb), 0.82);
986
1689
  border: 1px solid rgba(203, 166, 247, 0.20);
987
1690
  border-radius: 0.75rem;
988
1691
  padding: 0.72rem;
@@ -993,7 +1696,7 @@ button.footer-meta {
993
1696
  details {
994
1697
  margin: 0.5rem 0;
995
1698
  padding: 0.6rem;
996
- background: rgba(17, 17, 27, 0.46);
1699
+ background: rgba(var(--ctp-crust-rgb), 0.46);
997
1700
  border: 1px solid rgba(249, 226, 175, 0.15);
998
1701
  border-radius: 0.72rem;
999
1702
  }
@@ -1002,7 +1705,7 @@ summary { cursor: pointer; color: var(--warning); }
1002
1705
  border-color: rgba(203, 166, 247, 0.30);
1003
1706
  background:
1004
1707
  linear-gradient(120deg, rgba(203, 166, 247, 0.12), rgba(137, 180, 250, 0.08), rgba(148, 226, 213, 0.06)),
1005
- rgba(17, 17, 27, 0.55);
1708
+ rgba(var(--ctp-crust-rgb), 0.55);
1006
1709
  box-shadow: inset 0 0 1.1rem rgba(203, 166, 247, 0.06), 0 0 1rem rgba(203, 166, 247, 0.08);
1007
1710
  }
1008
1711
  .thinking-block > summary {
@@ -1025,7 +1728,7 @@ summary { cursor: pointer; color: var(--warning); }
1025
1728
  color: var(--ctp-green);
1026
1729
  }
1027
1730
  .thinking-text {
1028
- color: rgba(205, 214, 244, 0.82);
1731
+ color: rgba(var(--ctp-text-rgb), 0.82);
1029
1732
  margin-top: 0.55rem;
1030
1733
  font-style: italic;
1031
1734
  white-space: pre-wrap;
@@ -1038,7 +1741,7 @@ summary { cursor: pointer; color: var(--warning); }
1038
1741
  min-height: 0;
1039
1742
  border-top: 1px solid rgba(180, 190, 254, 0.18);
1040
1743
  padding: 0.9rem;
1041
- background: linear-gradient(180deg, rgba(17, 17, 27, 0.48), rgba(17, 17, 27, 0.82));
1744
+ background: linear-gradient(180deg, rgba(var(--ctp-crust-rgb), 0.48), rgba(var(--ctp-crust-rgb), 0.82));
1042
1745
  }
1043
1746
  .composer::before {
1044
1747
  content: "";
@@ -1055,7 +1758,7 @@ summary { cursor: pointer; color: var(--warning); }
1055
1758
  margin-top: 0.5rem;
1056
1759
  max-height: 15rem;
1057
1760
  overflow: auto;
1058
- background: rgba(17, 17, 27, 0.94);
1761
+ background: rgba(var(--ctp-crust-rgb), 0.94);
1059
1762
  border: 1px solid rgba(203, 166, 247, 0.34);
1060
1763
  border-radius: 0.85rem;
1061
1764
  box-shadow: 0 0.75rem 2rem var(--shadow), 0 0 1.4rem rgba(203, 166, 247, 0.18);
@@ -1086,6 +1789,18 @@ summary { cursor: pointer; color: var(--warning); }
1086
1789
  font-weight: 900;
1087
1790
  text-shadow: 0 0 0.8rem rgba(166, 227, 161, 0.34);
1088
1791
  }
1792
+ .path-suggest-name {
1793
+ color: var(--ctp-teal);
1794
+ min-width: 0;
1795
+ overflow: hidden;
1796
+ text-overflow: ellipsis;
1797
+ white-space: nowrap;
1798
+ text-shadow: 0 0 0.8rem rgba(148, 226, 213, 0.28);
1799
+ }
1800
+ .path-suggest-item.directory .path-suggest-name {
1801
+ color: var(--ctp-yellow);
1802
+ text-shadow: 0 0 0.8rem rgba(249, 226, 175, 0.26);
1803
+ }
1089
1804
  .command-suggest-desc {
1090
1805
  color: var(--text);
1091
1806
  overflow: hidden;
@@ -1093,7 +1808,7 @@ summary { cursor: pointer; color: var(--warning); }
1093
1808
  white-space: nowrap;
1094
1809
  }
1095
1810
  .command-suggest-source {
1096
- color: rgba(186, 194, 222, 0.68);
1811
+ color: rgba(var(--ctp-subtext-rgb), 0.68);
1097
1812
  font-size: 0.72rem;
1098
1813
  text-transform: uppercase;
1099
1814
  letter-spacing: 0.08em;
@@ -1109,11 +1824,13 @@ summary { cursor: pointer; color: var(--warning); }
1109
1824
  margin-top: 0.7rem;
1110
1825
  flex-wrap: wrap;
1111
1826
  }
1827
+ .composer-actions-button { display: none; }
1828
+ .composer-actions-panel { display: contents; }
1112
1829
  .composer-row label {
1113
1830
  display: flex;
1114
1831
  align-items: center;
1115
1832
  gap: 0.45rem;
1116
- color: rgba(205, 214, 244, 0.74);
1833
+ color: rgba(var(--ctp-text-rgb), 0.74);
1117
1834
  font-size: 0.88rem;
1118
1835
  text-transform: uppercase;
1119
1836
  letter-spacing: 0.06em;
@@ -1130,7 +1847,7 @@ summary { cursor: pointer; color: var(--warning); }
1130
1847
  border-color: rgba(148, 226, 213, 0.36);
1131
1848
  background:
1132
1849
  linear-gradient(120deg, rgba(148, 226, 213, 0.13), rgba(203, 166, 247, 0.10)),
1133
- linear-gradient(180deg, rgba(49, 50, 68, 0.88), rgba(17, 17, 27, 0.88));
1850
+ linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.88), rgba(var(--ctp-crust-rgb), 0.88));
1134
1851
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.05), 0 0 0.85rem rgba(148, 226, 213, 0.08);
1135
1852
  }
1136
1853
  .composer-git-button {
@@ -1138,7 +1855,7 @@ summary { cursor: pointer; color: var(--warning); }
1138
1855
  border-color: rgba(166, 227, 161, 0.38);
1139
1856
  background:
1140
1857
  linear-gradient(120deg, rgba(166, 227, 161, 0.13), rgba(148, 226, 213, 0.10)),
1141
- linear-gradient(180deg, rgba(49, 50, 68, 0.88), rgba(17, 17, 27, 0.88));
1858
+ linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.88), rgba(var(--ctp-crust-rgb), 0.88));
1142
1859
  }
1143
1860
  .composer-compact-button:hover,
1144
1861
  .composer-git-button:hover {
@@ -1149,26 +1866,26 @@ summary { cursor: pointer; color: var(--warning); }
1149
1866
  .composer-git-button:hover {
1150
1867
  background: linear-gradient(120deg, var(--ctp-green), var(--ctp-teal), var(--ctp-blue));
1151
1868
  }
1152
- .composer-git-button[data-tooltip]::before,
1153
- .composer-git-button[data-tooltip]::after {
1869
+ .composer-row button[data-tooltip]::before,
1870
+ .composer-row button[data-tooltip]::after {
1154
1871
  position: absolute;
1155
1872
  right: 0;
1156
1873
  pointer-events: none;
1157
1874
  opacity: 0;
1158
1875
  transition: opacity 140ms ease, transform 140ms ease;
1159
1876
  }
1160
- .composer-git-button[data-tooltip]::before {
1877
+ .composer-row button[data-tooltip]::before {
1161
1878
  content: "";
1162
1879
  bottom: calc(100% + 0.42rem);
1163
1880
  width: 0.72rem;
1164
1881
  height: 0.72rem;
1165
- background: rgba(17, 17, 27, 0.96);
1882
+ background: rgba(var(--ctp-crust-rgb), 0.96);
1166
1883
  border-right: 1px solid rgba(166, 227, 161, 0.28);
1167
1884
  border-bottom: 1px solid rgba(166, 227, 161, 0.28);
1168
1885
  transform: translate(-1.2rem, 0.24rem) rotate(45deg);
1169
1886
  z-index: 29;
1170
1887
  }
1171
- .composer-git-button[data-tooltip]::after {
1888
+ .composer-row button[data-tooltip]::after {
1172
1889
  content: attr(data-tooltip);
1173
1890
  bottom: calc(100% + 0.72rem);
1174
1891
  z-index: 30;
@@ -1183,23 +1900,26 @@ summary { cursor: pointer; color: var(--warning); }
1183
1900
  border-radius: 0.86rem;
1184
1901
  background:
1185
1902
  radial-gradient(circle at 8% 0%, rgba(166, 227, 161, 0.13), transparent 12rem),
1186
- linear-gradient(145deg, rgba(17, 17, 27, 0.98), rgba(30, 30, 46, 0.94));
1187
- box-shadow: 0 1rem 2.4rem rgba(17, 17, 27, 0.58), 0 0 1.2rem rgba(166, 227, 161, 0.16), inset 0 1px 0 rgba(255,255,255,0.055);
1903
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.98), rgba(var(--ctp-base-rgb), 0.94));
1904
+ box-shadow: 0 1rem 2.4rem rgba(var(--ctp-crust-rgb), 0.58), 0 0 1.2rem rgba(166, 227, 161, 0.16), inset 0 1px 0 rgba(255,255,255,0.055);
1188
1905
  font-size: 0.82rem;
1189
1906
  font-weight: 650;
1190
1907
  text-transform: none;
1191
1908
  letter-spacing: 0;
1192
1909
  transform: translateY(0.24rem);
1193
1910
  }
1194
- .composer-git-button[data-tooltip]:hover::before,
1195
- .composer-git-button[data-tooltip]:hover::after,
1196
- .composer-git-button[data-tooltip]:focus-visible::before,
1197
- .composer-git-button[data-tooltip]:focus-visible::after {
1911
+ .composer-row button[data-tooltip]:hover::before,
1912
+ .composer-row button[data-tooltip]:hover::after,
1913
+ .composer-row button[data-tooltip]:focus-visible::before,
1914
+ .composer-row button[data-tooltip]:focus-visible::after,
1915
+ .composer-row button[data-tooltip].tooltip-open::before,
1916
+ .composer-row button[data-tooltip].tooltip-open::after {
1198
1917
  opacity: 1;
1199
1918
  transform: translateY(0);
1200
1919
  }
1201
- .composer-git-button[data-tooltip]:hover::before,
1202
- .composer-git-button[data-tooltip]:focus-visible::before {
1920
+ .composer-row button[data-tooltip]:hover::before,
1921
+ .composer-row button[data-tooltip]:focus-visible::before,
1922
+ .composer-row button[data-tooltip].tooltip-open::before {
1203
1923
  transform: translate(-1.2rem, 0) rotate(45deg);
1204
1924
  }
1205
1925
 
@@ -1210,21 +1930,38 @@ summary { cursor: pointer; color: var(--warning); }
1210
1930
  margin: 0;
1211
1931
  font-size: 0.9rem;
1212
1932
  }
1213
- .details dt { color: rgba(186, 194, 222, 0.66); }
1933
+ .details dt { color: rgba(var(--ctp-subtext-rgb), 0.66); }
1214
1934
  .details dd { margin: 0; overflow-wrap: anywhere; }
1215
1935
  .queue-box, .commands-box, .event-log {
1216
- background: rgba(17, 17, 27, 0.72);
1936
+ background: rgba(var(--ctp-crust-rgb), 0.72);
1217
1937
  border: 1px solid rgba(180, 190, 254, 0.18);
1218
1938
  border-radius: 0.82rem;
1219
1939
  padding: 0.72rem;
1220
1940
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.035);
1221
1941
  }
1222
1942
  .commands-box {
1223
- max-height: 13rem;
1943
+ max-height: min(32rem, 52vh);
1224
1944
  overflow: auto;
1225
1945
  font-size: 0.86rem;
1226
1946
  }
1227
- .command-item { margin-bottom: 0.5rem; }
1947
+ .command-item {
1948
+ display: block;
1949
+ width: 100%;
1950
+ min-height: auto;
1951
+ margin: 0 0 0.5rem;
1952
+ padding: 0.48rem 0.56rem;
1953
+ text-align: left;
1954
+ background: rgba(var(--ctp-surface-rgb), 0.18);
1955
+ border-color: rgba(180, 190, 254, 0.12);
1956
+ box-shadow: none;
1957
+ }
1958
+ .command-item:last-child { margin-bottom: 0; }
1959
+ .command-item:hover,
1960
+ .command-item:focus-visible {
1961
+ transform: none;
1962
+ background: linear-gradient(90deg, rgba(203, 166, 247, 0.16), rgba(137, 180, 250, 0.08));
1963
+ border-color: rgba(148, 226, 213, 0.45);
1964
+ }
1228
1965
  .command-item code {
1229
1966
  color: var(--ctp-green);
1230
1967
  text-shadow: 0 0 0.7rem rgba(166, 227, 161, 0.25);
@@ -1238,18 +1975,49 @@ summary { cursor: pointer; color: var(--warning); }
1238
1975
  .event { padding: 0.3rem 0; border-bottom: 1px solid rgba(180, 190, 254, 0.06); }
1239
1976
  .event.warn { color: var(--warning); }
1240
1977
  .event.error { color: var(--danger); }
1241
- .muted { color: rgba(186, 194, 222, 0.68); }
1978
+ .muted { color: rgba(var(--ctp-subtext-rgb), 0.68); }
1242
1979
 
1243
1980
  .extension-dialog {
1244
1981
  position: relative;
1245
1982
  width: min(42rem, calc(100vw - 2rem));
1246
1983
  border: 1px solid rgba(203, 166, 247, 0.35);
1247
1984
  border-radius: 1rem;
1248
- background: linear-gradient(145deg, rgba(30, 30, 46, 0.98), rgba(17, 17, 27, 0.98));
1985
+ background: linear-gradient(145deg, rgba(var(--ctp-base-rgb), 0.98), rgba(var(--ctp-crust-rgb), 0.98));
1249
1986
  color: var(--text);
1250
1987
  box-shadow: 0 2rem 5rem var(--shadow), 0 0 2rem var(--glow-mauve);
1251
1988
  }
1252
- .extension-dialog::backdrop { background: rgba(17, 17, 27, 0.78); backdrop-filter: blur(4px); }
1989
+ .extension-dialog::backdrop { background: rgba(var(--ctp-crust-rgb), 0.78); backdrop-filter: blur(4px); }
1990
+ #dialogMessage {
1991
+ white-space: pre-wrap;
1992
+ overflow-wrap: anywhere;
1993
+ line-height: 1.45;
1994
+ }
1995
+ .extension-dialog.guardrail-dialog {
1996
+ border-color: rgba(249, 226, 175, 0.62);
1997
+ box-shadow: 0 2rem 5rem var(--shadow), 0 0 2rem rgba(249, 226, 175, 0.24);
1998
+ }
1999
+ .extension-dialog.guardrail-dialog #dialogTitle {
2000
+ color: var(--ctp-yellow);
2001
+ text-shadow: 0 0 1rem rgba(249, 226, 175, 0.22);
2002
+ }
2003
+ .extension-dialog.guardrail-dialog #dialogMessage {
2004
+ margin: 0.6rem 0 0;
2005
+ padding: 0.78rem 0.85rem;
2006
+ border: 1px solid rgba(249, 226, 175, 0.24);
2007
+ border-radius: 0.78rem;
2008
+ background: rgba(var(--ctp-crust-rgb), 0.62);
2009
+ color: var(--ctp-text);
2010
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
2011
+ font-size: 0.88rem;
2012
+ }
2013
+ .extension-dialog.guardrail-dialog .dialog-options button.guardrail-safe-action {
2014
+ border-color: rgba(166, 227, 161, 0.58);
2015
+ box-shadow: 0 0 1rem rgba(166, 227, 161, 0.18);
2016
+ }
2017
+ .extension-dialog.guardrail-dialog .dialog-options button.guardrail-allow-action {
2018
+ border-color: rgba(249, 226, 175, 0.46);
2019
+ color: var(--ctp-yellow);
2020
+ }
1253
2021
  .extension-dialog menu {
1254
2022
  display: flex;
1255
2023
  justify-content: flex-end;
@@ -1281,7 +2049,7 @@ summary { cursor: pointer; color: var(--warning); }
1281
2049
  overflow-wrap: anywhere;
1282
2050
  border: 1px solid rgba(166, 227, 161, 0.24);
1283
2051
  border-radius: 0.82rem;
1284
- background: rgba(17, 17, 27, 0.64);
2052
+ background: rgba(var(--ctp-crust-rgb), 0.64);
1285
2053
  color: var(--ctp-green);
1286
2054
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
1287
2055
  font-weight: 850;
@@ -1304,7 +2072,7 @@ summary { cursor: pointer; color: var(--warning); }
1304
2072
  padding: 0.5rem;
1305
2073
  border: 1px solid rgba(249, 226, 175, 0.14);
1306
2074
  border-radius: 0.82rem;
1307
- background: rgba(17, 17, 27, 0.34);
2075
+ background: rgba(var(--ctp-crust-rgb), 0.34);
1308
2076
  }
1309
2077
  .path-picker-fast-pick {
1310
2078
  display: grid;
@@ -1314,7 +2082,7 @@ summary { cursor: pointer; color: var(--warning); }
1314
2082
  width: 100%;
1315
2083
  border: 1px solid rgba(249, 226, 175, 0.22);
1316
2084
  border-radius: 0.72rem;
1317
- background: rgba(49, 50, 68, 0.36);
2085
+ background: rgba(var(--ctp-surface-rgb), 0.36);
1318
2086
  }
1319
2087
  .path-picker-fast-pick-button,
1320
2088
  .path-picker-fast-pick-remove {
@@ -1337,7 +2105,7 @@ summary { cursor: pointer; color: var(--warning); }
1337
2105
  min-width: 1.45rem;
1338
2106
  width: 1.45rem;
1339
2107
  padding: 0;
1340
- color: rgba(186, 194, 222, 0.72);
2108
+ color: rgba(var(--ctp-subtext-rgb), 0.72);
1341
2109
  border-left: 1px solid rgba(249, 226, 175, 0.14);
1342
2110
  font-size: 0.78rem;
1343
2111
  }
@@ -1374,16 +2142,16 @@ summary { cursor: pointer; color: var(--warning); }
1374
2142
  padding: 0.4rem;
1375
2143
  border: 1px solid rgba(180, 190, 254, 0.16);
1376
2144
  border-radius: 0.82rem;
1377
- background: rgba(17, 17, 27, 0.48);
2145
+ background: rgba(var(--ctp-crust-rgb), 0.48);
1378
2146
  }
1379
2147
  .path-picker-directory {
1380
2148
  justify-content: flex-start;
1381
2149
  width: 100%;
1382
2150
  padding: 0.58rem 0.72rem;
1383
- color: rgba(205, 214, 244, 0.94);
2151
+ color: rgba(var(--ctp-text-rgb), 0.94);
1384
2152
  text-align: left;
1385
2153
  border-color: rgba(180, 190, 254, 0.14);
1386
- background: rgba(49, 50, 68, 0.36);
2154
+ background: rgba(var(--ctp-surface-rgb), 0.36);
1387
2155
  }
1388
2156
  .path-picker-directory:hover,
1389
2157
  .path-picker-directory:focus-visible,
@@ -1394,7 +2162,7 @@ summary { cursor: pointer; color: var(--warning); }
1394
2162
  background: linear-gradient(120deg, var(--ctp-green), var(--ctp-teal), var(--ctp-blue));
1395
2163
  }
1396
2164
  .path-picker-directory.hidden-directory {
1397
- color: rgba(186, 194, 222, 0.68);
2165
+ color: rgba(var(--ctp-subtext-rgb), 0.68);
1398
2166
  }
1399
2167
  .path-picker-empty,
1400
2168
  .path-picker-error {
@@ -1405,14 +2173,29 @@ summary { cursor: pointer; color: var(--warning); }
1405
2173
  }
1406
2174
 
1407
2175
  ::-webkit-scrollbar { width: 0.75rem; height: 0.75rem; }
1408
- ::-webkit-scrollbar-track { background: rgba(17, 17, 27, 0.55); }
2176
+ ::-webkit-scrollbar-track { background: rgba(var(--ctp-crust-rgb), 0.55); }
1409
2177
  ::-webkit-scrollbar-thumb {
1410
2178
  background: linear-gradient(180deg, var(--ctp-mauve), var(--ctp-blue), var(--ctp-teal));
1411
- border: 2px solid rgba(17, 17, 27, 0.88);
2179
+ border: 2px solid rgba(var(--ctp-crust-rgb), 0.88);
1412
2180
  border-radius: 999px;
1413
2181
  }
1414
2182
  ::selection { color: #11111b; background: var(--ctp-pink); }
1415
2183
 
2184
+ @media (prefers-reduced-motion: reduce) {
2185
+ *, *::before, *::after {
2186
+ scroll-behavior: auto !important;
2187
+ transition-duration: 1ms !important;
2188
+ animation-duration: 1ms !important;
2189
+ animation-iteration-count: 1 !important;
2190
+ }
2191
+ }
2192
+
2193
+ @media (hover: none) and (pointer: coarse) {
2194
+ button:hover {
2195
+ transform: none;
2196
+ }
2197
+ }
2198
+
1416
2199
  @media (max-width: 1050px) {
1417
2200
  body { overflow: auto; }
1418
2201
  .layout,
@@ -1424,16 +2207,456 @@ summary { cursor: pointer; color: var(--warning); }
1424
2207
  .footer-model { grid-column: 1 / -1; }
1425
2208
  }
1426
2209
 
1427
- @media (max-width: 720px) {
1428
- .layout { padding: 0.65rem; }
1429
- .terminal-tabs-shell { align-items: stretch; flex-direction: column; }
1430
- body.side-panel-collapsed .terminal-tabs-shell { padding-right: 4.2rem; }
1431
- .terminal-new-tab-button { width: 100%; }
2210
+ @media (max-width: 720px), (max-device-width: 720px), (pointer: coarse) and (hover: none) {
2211
+ body { overflow: hidden; }
2212
+ .layout,
2213
+ body.side-panel-collapsed .layout {
2214
+ gap: 0;
2215
+ height: 100vh;
2216
+ height: var(--visual-viewport-height, 100dvh);
2217
+ min-height: 0;
2218
+ padding: 0;
2219
+ overflow: hidden;
2220
+ }
2221
+ .chat-panel,
2222
+ body.side-panel-collapsed .chat-panel {
2223
+ height: 100vh;
2224
+ height: var(--visual-viewport-height, 100dvh);
2225
+ min-height: 0;
2226
+ border-radius: 0;
2227
+ }
2228
+ .terminal-tabs-shell {
2229
+ position: relative;
2230
+ align-items: center;
2231
+ flex-direction: row;
2232
+ gap: 0.28rem;
2233
+ min-height: calc(28px + env(safe-area-inset-top));
2234
+ padding: calc(0.12rem + env(safe-area-inset-top)) 0.42rem 0.12rem;
2235
+ overflow: visible;
2236
+ }
2237
+ body.side-panel-collapsed .terminal-tabs-shell { padding-right: 2.75rem; }
2238
+ .terminal-tabs-toggle-button {
2239
+ display: block;
2240
+ width: min(14rem, calc(100vw - 4rem));
2241
+ min-height: 28px;
2242
+ padding: 0.16rem 0.58rem;
2243
+ overflow: hidden;
2244
+ color: var(--ctp-teal);
2245
+ text-align: left;
2246
+ text-overflow: ellipsis;
2247
+ white-space: nowrap;
2248
+ border-radius: 0.58rem;
2249
+ border-color: rgba(148, 226, 213, 0.34);
2250
+ font-size: 0.74rem;
2251
+ line-height: 1.1;
2252
+ background:
2253
+ linear-gradient(120deg, rgba(148, 226, 213, 0.12), rgba(203, 166, 247, 0.10)),
2254
+ linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.88), rgba(var(--ctp-crust-rgb), 0.88));
2255
+ }
2256
+ .side-panel-toggle-button,
2257
+ .side-panel-expand-button {
2258
+ width: 36px;
2259
+ min-width: 36px;
2260
+ height: 32px;
2261
+ min-height: 32px;
2262
+ border-radius: 0.58rem;
2263
+ }
2264
+ .side-panel-expand-button {
2265
+ top: calc(0.12rem + env(safe-area-inset-top));
2266
+ right: 0.42rem;
2267
+ }
2268
+ .terminal-tabs {
2269
+ position: absolute;
2270
+ left: 0.55rem;
2271
+ right: 0.55rem;
2272
+ top: calc(100% + 0.35rem);
2273
+ z-index: 16;
2274
+ display: none;
2275
+ flex-wrap: wrap;
2276
+ gap: 0.34rem;
2277
+ max-height: min(42dvh, 20rem);
2278
+ overflow: auto;
2279
+ padding: 0.55rem;
2280
+ border: 1px solid rgba(148, 226, 213, 0.26);
2281
+ border-radius: 0.95rem;
2282
+ background:
2283
+ radial-gradient(circle at 8% 0%, rgba(148, 226, 213, 0.12), transparent 12rem),
2284
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.98), rgba(var(--ctp-base-rgb), 0.96));
2285
+ box-shadow: 0 1.2rem 2.8rem rgba(var(--ctp-crust-rgb), 0.68), 0 0 1.4rem rgba(148, 226, 213, 0.14), inset 0 1px 0 rgba(255,255,255,0.055);
2286
+ }
2287
+ body.mobile-tabs-expanded .terminal-tabs { display: flex; }
2288
+ .terminal-tabs:has(.terminal-tab-group:hover),
2289
+ .terminal-tabs:has(.terminal-tab-group:focus-within),
2290
+ .terminal-tabs:has(.terminal-tab-group.menu-open) {
2291
+ overflow: auto;
2292
+ }
2293
+ .terminal-tab { min-width: min(11rem, 100%); max-width: 100%; flex: 1 1 9rem; }
2294
+ .terminal-tab-group {
2295
+ flex-wrap: wrap;
2296
+ }
2297
+ .terminal-tab-group:hover,
2298
+ .terminal-tab-group:focus-within,
2299
+ .terminal-tab-group.menu-open {
2300
+ flex-basis: 100%;
2301
+ }
2302
+ .terminal-tab-group-menu {
2303
+ position: static;
2304
+ flex-direction: column;
2305
+ flex-wrap: nowrap;
2306
+ width: 100%;
2307
+ max-width: none;
2308
+ max-height: none;
2309
+ min-width: 0;
2310
+ margin: 0.34rem;
2311
+ padding-top: 0;
2312
+ overflow: visible;
2313
+ }
2314
+ .terminal-tab-group-item,
2315
+ .terminal-tab-group-add {
2316
+ width: 100%;
2317
+ min-width: min(11rem, 100%);
2318
+ max-width: 100%;
2319
+ flex: 0 0 auto;
2320
+ }
2321
+ .terminal-tab-button,
2322
+ .terminal-tab-close,
2323
+ .terminal-new-tab-button,
2324
+ .terminal-tab-group-add { min-height: 44px; }
2325
+ .terminal-tab-button { padding: 0.32rem 0.52rem; }
2326
+ .terminal-tab-title { font-size: 0.78rem; }
2327
+ .terminal-tab-meta { display: none; }
2328
+ .terminal-tab-close {
2329
+ flex-basis: 44px;
2330
+ min-width: 44px;
2331
+ font-size: 1rem;
2332
+ }
2333
+ .terminal-new-tab-button {
2334
+ width: auto;
2335
+ padding: 0.36rem 0.58rem;
2336
+ white-space: nowrap;
2337
+ }
2338
+ .widget-area {
2339
+ display: block;
2340
+ max-height: 34dvh;
2341
+ overflow: auto;
2342
+ padding: 0.36rem 0.55rem;
2343
+ }
2344
+ .widget-area .widget:not(.todo-widget) { display: none; }
2345
+ .todo-widget {
2346
+ gap: 0.38rem;
2347
+ margin: 0.2rem 0;
2348
+ padding: 0.52rem 0.58rem;
2349
+ border-radius: 0.72rem;
2350
+ }
2351
+ .todo-widget-header { gap: 0.34rem; }
2352
+ .todo-widget-title { font-size: 0.7rem; }
2353
+ .todo-widget-count,
2354
+ .todo-widget-meta { font-size: 0.66rem; }
2355
+ .todo-widget-list { gap: 0.26rem; }
2356
+ .todo-widget-item {
2357
+ grid-template-columns: 1.12rem minmax(0, 1fr);
2358
+ gap: 0.36rem;
2359
+ font-size: 0.78rem;
2360
+ }
2361
+ .todo-widget-marker {
2362
+ width: 0.96rem;
2363
+ height: 0.96rem;
2364
+ font-size: 0.66rem;
2365
+ }
2366
+ .chat {
2367
+ padding: 0.62rem 0.58rem;
2368
+ scroll-padding-bottom: calc(12rem + var(--keyboard-inset-bottom, 0px));
2369
+ }
2370
+ .sticky-user-prompt-button {
2371
+ grid-template-columns: minmax(0, 1fr) auto;
2372
+ margin: 0 0 0.5rem;
2373
+ padding: 0.48rem 0.58rem;
2374
+ gap: 0.48rem;
2375
+ }
2376
+ .sticky-user-prompt-label { display: none; }
2377
+ .sticky-user-prompt-text { font-size: 0.78rem; }
2378
+ .jump-to-latest-button {
2379
+ min-height: 44px;
2380
+ margin: 0.35rem auto;
2381
+ padding: 0.55rem 0.92rem;
2382
+ font-size: 0.86rem;
2383
+ }
2384
+ .message {
2385
+ margin-bottom: 0.62rem;
2386
+ padding: 0.68rem 0.7rem;
2387
+ border-radius: 0.82rem;
2388
+ }
2389
+ .message-header {
2390
+ gap: 0.5rem;
2391
+ margin-bottom: 0.38rem;
2392
+ font-size: 0.72rem;
2393
+ }
2394
+ .message-role { letter-spacing: 0.08em; }
2395
+ .feedback-tray {
2396
+ align-items: stretch;
2397
+ flex-direction: column;
2398
+ margin: 0 0.58rem 0.52rem;
2399
+ }
2400
+ .feedback-tray button { width: 100%; }
2401
+ .action-feedback-controls {
2402
+ top: calc(100% - 0.12rem);
2403
+ right: 0.34rem;
2404
+ gap: 0.28rem;
2405
+ }
2406
+ .code-block {
2407
+ padding: 0.58rem;
2408
+ font-size: 0.78rem;
2409
+ }
2410
+ details { padding: 0.5rem; }
2411
+ .statusbar {
2412
+ max-height: none;
2413
+ overflow: visible;
2414
+ padding: 0.42rem 0.55rem;
2415
+ font-size: 0.68rem;
2416
+ }
2417
+ body.footer-details-expanded .statusbar {
2418
+ max-height: min(42dvh, 20rem);
2419
+ overflow: auto;
2420
+ overscroll-behavior: contain;
2421
+ }
2422
+ body.footer-model-picker-open .statusbar {
2423
+ z-index: 12;
2424
+ overflow: visible;
2425
+ }
2426
+ body.footer-model-picker-open .footer-line { z-index: 1; }
2427
+ .footer-model-picker {
2428
+ position: fixed;
2429
+ left: max(0.55rem, env(safe-area-inset-left));
2430
+ right: max(0.55rem, env(safe-area-inset-right));
2431
+ bottom: var(--footer-model-picker-bottom, calc(8.5rem + env(safe-area-inset-bottom)));
2432
+ width: auto;
2433
+ max-height: min(52dvh, 24rem);
2434
+ z-index: 60;
2435
+ }
2436
+ .footer-line-main {
2437
+ display: none;
2438
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2439
+ gap: 0.35rem;
2440
+ margin-bottom: 0.35rem;
2441
+ }
2442
+ body.footer-details-expanded .footer-line-main { display: grid; }
2443
+ body.footer-details-expanded .footer-line-main .footer-metric { display: inline-grid; }
2444
+ .footer-line-meta {
2445
+ display: grid;
2446
+ grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr) auto;
2447
+ gap: 0.35rem;
2448
+ align-items: stretch;
2449
+ }
2450
+ .footer-line-meta .footer-meta { display: none; }
2451
+ .footer-workspace,
2452
+ .footer-context { display: grid !important; }
2453
+ .footer-workspace { order: 1; }
2454
+ .footer-context { order: 2; }
2455
+ .footer-details-toggle { order: 3; }
2456
+ .footer-branch { order: 4; }
2457
+ .footer-changes { order: 5; }
2458
+ .footer-runtime { order: 6; }
2459
+ .footer-model { order: 7; }
2460
+ body.footer-details-expanded .footer-line-meta {
2461
+ grid-template-columns: 1fr;
2462
+ }
2463
+ body.footer-details-expanded .footer-line-meta .footer-meta { display: grid; }
2464
+ .footer-metric { width: 100%; padding: 0.35rem 0.45rem; }
2465
+ .footer-details-toggle {
2466
+ display: block;
2467
+ min-height: 44px;
2468
+ padding: 0.35rem 0.62rem;
2469
+ color: var(--ctp-yellow);
2470
+ border-color: rgba(249, 226, 175, 0.34);
2471
+ font-size: 0.72rem;
2472
+ font-weight: 900;
2473
+ }
2474
+ .composer {
2475
+ position: sticky;
2476
+ bottom: 0;
2477
+ padding: 0.55rem 0.55rem calc(0.55rem + env(safe-area-inset-bottom));
2478
+ background: linear-gradient(180deg, rgba(var(--ctp-crust-rgb), 0.92), rgba(var(--ctp-crust-rgb), 0.98));
2479
+ box-shadow: 0 -0.85rem 1.8rem rgba(var(--ctp-crust-rgb), 0.56), inset 0 1px 0 rgba(255,255,255,0.04);
2480
+ }
2481
+ #promptInput {
2482
+ min-height: calc(1.45em + 1.5rem);
2483
+ max-height: min(28dvh, 12rem);
2484
+ padding: 0.75rem;
2485
+ resize: none;
2486
+ font-size: 1rem;
2487
+ line-height: 1.45;
2488
+ }
2489
+ .composer-row {
2490
+ display: grid;
2491
+ grid-template-columns: repeat(6, minmax(0, 1fr));
2492
+ gap: 0.42rem;
2493
+ align-items: stretch;
2494
+ margin-top: 0.55rem;
2495
+ }
2496
+ .composer-actions-button {
2497
+ display: block;
2498
+ grid-column: span 2;
2499
+ color: var(--ctp-yellow);
2500
+ border-color: rgba(249, 226, 175, 0.34);
2501
+ background:
2502
+ linear-gradient(120deg, rgba(249, 226, 175, 0.12), rgba(203, 166, 247, 0.10)),
2503
+ linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.88), rgba(var(--ctp-crust-rgb), 0.88));
2504
+ }
2505
+ body.mobile-keyboard-open .terminal-tabs-shell,
2506
+ body.mobile-keyboard-open .widget-area,
2507
+ body.mobile-keyboard-open .statusbar,
2508
+ body.mobile-keyboard-open .side-panel-expand-button {
2509
+ display: none;
2510
+ }
2511
+ body.mobile-keyboard-open .chat {
2512
+ padding-top: 0.42rem;
2513
+ scroll-padding-bottom: calc(7.5rem + var(--keyboard-inset-bottom, 0px));
2514
+ }
2515
+ body.mobile-keyboard-open .composer {
2516
+ padding: 0.42rem 0.5rem calc(0.42rem + env(safe-area-inset-bottom));
2517
+ }
2518
+ body.mobile-keyboard-open #promptInput {
2519
+ min-height: calc(1.45em + 1.5rem);
2520
+ max-height: min(24dvh, 9rem);
2521
+ }
2522
+ body.mobile-keyboard-open .composer-row {
2523
+ grid-template-columns: 1fr;
2524
+ margin-top: 0.35rem;
2525
+ }
2526
+ body.mobile-keyboard-open .composer-actions-button,
2527
+ body.mobile-keyboard-open #steerButton,
2528
+ body.mobile-keyboard-open #followUpButton,
2529
+ body.mobile-keyboard-open .composer-actions-panel {
2530
+ display: none !important;
2531
+ }
2532
+ body.mobile-keyboard-open .composer-row button.primary {
2533
+ grid-column: 1 / -1;
2534
+ min-height: 44px;
2535
+ }
2536
+ .composer-actions-panel {
2537
+ position: absolute;
2538
+ left: 0.55rem;
2539
+ right: 0.55rem;
2540
+ bottom: calc(100% + 0.42rem);
2541
+ z-index: 8;
2542
+ display: none;
2543
+ grid-template-columns: repeat(3, minmax(0, 1fr));
2544
+ gap: 0.45rem;
2545
+ max-height: min(42dvh, 22rem);
2546
+ overflow: auto;
2547
+ padding: 0.68rem;
2548
+ border: 1px solid rgba(249, 226, 175, 0.24);
2549
+ border-radius: 0.95rem;
2550
+ background:
2551
+ radial-gradient(circle at 8% 0%, rgba(249, 226, 175, 0.12), transparent 12rem),
2552
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.98), rgba(var(--ctp-base-rgb), 0.96));
2553
+ box-shadow: 0 1.2rem 2.8rem rgba(var(--ctp-crust-rgb), 0.68), 0 0 1.4rem rgba(249, 226, 175, 0.14), inset 0 1px 0 rgba(255,255,255,0.055);
2554
+ }
2555
+ body.composer-actions-open .composer-actions-panel { display: grid; }
2556
+ .composer-actions-panel label {
2557
+ grid-column: 1 / -1;
2558
+ justify-content: space-between;
2559
+ gap: 0.55rem;
2560
+ min-height: 44px;
2561
+ font-size: 0.68rem;
2562
+ letter-spacing: 0.05em;
2563
+ }
2564
+ .composer-actions-panel label select { flex: 1 1 auto; min-width: 0; }
2565
+ .spacer { display: none; }
2566
+ .composer-row button {
2567
+ width: 100%;
2568
+ min-height: 44px;
2569
+ margin-right: 0;
2570
+ padding: 0.48rem 0.5rem;
2571
+ font-size: 0.82rem;
2572
+ }
2573
+ .composer-row button.primary {
2574
+ grid-column: 1 / -1;
2575
+ min-height: 48px;
2576
+ font-size: 0.92rem;
2577
+ }
2578
+ body:not(.pi-run-active):not(.mobile-keyboard-open) .composer-row button.primary { grid-column: span 4; }
2579
+ .composer-row > #followUpButton,
2580
+ .composer-row > #steerButton,
2581
+ .composer-actions-button { grid-column: span 2; }
2582
+ .composer-actions-panel > #followUpButton,
2583
+ .composer-actions-panel > #steerButton,
2584
+ #newSessionButton,
2585
+ #compactButton,
2586
+ #gitWorkflowButton { grid-column: span 1; }
2587
+ .command-suggest {
2588
+ max-height: 35dvh;
2589
+ font-size: 0.86rem;
2590
+ }
2591
+ .command-suggest-item {
2592
+ grid-template-columns: 1fr;
2593
+ gap: 0.25rem;
2594
+ padding: 0.6rem 0.68rem;
2595
+ }
2596
+ .side-panel-backdrop {
2597
+ position: fixed;
2598
+ inset: 0;
2599
+ z-index: 18;
2600
+ display: block;
2601
+ width: 100%;
2602
+ min-height: 100%;
2603
+ padding: 0;
2604
+ border: 0;
2605
+ border-radius: 0;
2606
+ background: rgba(var(--ctp-crust-rgb), 0.62);
2607
+ box-shadow: none;
2608
+ backdrop-filter: blur(4px);
2609
+ }
2610
+ .side-panel-backdrop[hidden],
2611
+ body.side-panel-collapsed .side-panel-backdrop { display: none; }
2612
+ .side-panel-backdrop:hover,
2613
+ .side-panel-backdrop:active {
2614
+ transform: none;
2615
+ border-color: transparent;
2616
+ box-shadow: none;
2617
+ }
2618
+ .side-panel {
2619
+ position: fixed;
2620
+ z-index: 19;
2621
+ top: calc(0.5rem + env(safe-area-inset-top));
2622
+ right: 0.5rem;
2623
+ bottom: calc(0.5rem + env(safe-area-inset-bottom));
2624
+ left: 0.5rem;
2625
+ display: grid;
2626
+ max-height: none;
2627
+ border-radius: 0.95rem;
2628
+ }
2629
+ .side-panel-body { overscroll-behavior: contain; }
2630
+ .extension-dialog {
2631
+ position: fixed;
2632
+ inset: auto 0 0 0;
2633
+ width: 100vw;
2634
+ max-width: none;
2635
+ max-height: calc(var(--visual-viewport-height, 100dvh) - 1rem - env(safe-area-inset-top));
2636
+ margin: 0;
2637
+ overflow: auto;
2638
+ border-radius: 1rem 1rem 0 0;
2639
+ }
2640
+ .extension-dialog menu {
2641
+ position: sticky;
2642
+ bottom: 0;
2643
+ flex-wrap: wrap;
2644
+ padding-bottom: env(safe-area-inset-bottom);
2645
+ background: linear-gradient(180deg, transparent, rgba(var(--ctp-crust-rgb), 0.96) 35%);
2646
+ }
2647
+ .extension-dialog menu button { flex: 1 1 9rem; }
2648
+ .composer-row button[data-tooltip]:not(.tooltip-open)::before,
2649
+ .composer-row button[data-tooltip]:not(.tooltip-open)::after { display: none; }
2650
+ .composer-row button[data-tooltip].tooltip-open::before,
2651
+ .composer-row button[data-tooltip].tooltip-open::after { display: block; }
2652
+ .git-workflow-actions button,
2653
+ #gitWorkflowCancelButton { min-height: 44px; }
1432
2654
  .path-picker-current-row { grid-template-columns: 1fr; }
1433
2655
  .path-picker-add-fast-pick { width: 100%; }
1434
- .statusbar { padding: 0.68rem; }
1435
- .footer-line-main,
1436
- .footer-line-meta { grid-template-columns: 1fr; }
1437
- .footer-metric { width: 100%; }
1438
- .command-suggest-item { grid-template-columns: 1fr; gap: 0.25rem; }
2656
+ .path-picker-fast-pick { grid-template-columns: minmax(0, 1fr) 44px; }
2657
+ .path-picker-fast-pick-remove {
2658
+ width: 44px;
2659
+ min-width: 44px;
2660
+ }
2661
+ .path-picker-list { max-height: min(18rem, 42dvh); }
1439
2662
  }