@firstpick/pi-package-webui 0.1.2 → 0.1.4

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,13 +45,20 @@
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;
47
62
  --visual-viewport-height: 100dvh;
48
63
  --visual-viewport-offset-top: 0px;
49
64
  --keyboard-inset-bottom: 0px;
@@ -60,10 +75,10 @@ body {
60
75
  overflow: hidden;
61
76
  color: var(--text);
62
77
  background:
63
- radial-gradient(circle at 8% -8%, rgba(245, 194, 231, 0.34) 0, transparent 31rem),
64
- radial-gradient(circle at 82% 2%, rgba(137, 180, 250, 0.32) 0, transparent 34rem),
65
- radial-gradient(circle at 52% 112%, rgba(148, 226, 213, 0.20) 0, transparent 30rem),
66
- 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%);
67
82
  }
68
83
  body::before,
69
84
  body::after {
@@ -83,13 +98,13 @@ body::before {
83
98
  }
84
99
  body::after {
85
100
  opacity: 0.14;
86
- 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);
87
102
  mix-blend-mode: screen;
88
103
  }
89
104
 
90
105
  button, select, textarea, input {
91
106
  color: var(--text);
92
- 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));
93
108
  border: 1px solid var(--border);
94
109
  border-radius: 0.7rem;
95
110
  font: inherit;
@@ -112,14 +127,14 @@ button:hover {
112
127
  }
113
128
  button:active { transform: translateY(0); }
114
129
  button.primary {
115
- color: #11111b;
130
+ color: var(--button-primary-text);
116
131
  font-weight: 800;
117
132
  border-color: transparent;
118
133
  background: var(--neon-gradient);
119
134
  box-shadow: 0 0 1.4rem var(--glow-mauve), 0 0.7rem 1.8rem rgba(0, 0, 0, 0.35);
120
135
  }
121
136
  button.danger {
122
- color: #11111b;
137
+ color: var(--button-primary-text);
123
138
  font-weight: 800;
124
139
  background: linear-gradient(120deg, var(--ctp-red), var(--ctp-peach));
125
140
  border-color: rgba(243, 139, 168, 0.82);
@@ -136,7 +151,7 @@ select {
136
151
  padding: 0.5rem 2.15rem 0.5rem 0.7rem;
137
152
  min-width: 8rem;
138
153
  color: var(--ctp-text);
139
- color-scheme: dark;
154
+ color-scheme: var(--theme-color-scheme);
140
155
  accent-color: var(--ctp-mauve);
141
156
  border-color: rgba(180, 190, 254, 0.30);
142
157
  background-color: var(--ctp-base);
@@ -144,7 +159,7 @@ select {
144
159
  linear-gradient(45deg, transparent 50%, var(--ctp-teal) 50%),
145
160
  linear-gradient(135deg, var(--ctp-teal) 50%, transparent 50%),
146
161
  linear-gradient(135deg, rgba(245, 194, 231, 0.16), rgba(137, 180, 250, 0.10) 45%, rgba(148, 226, 213, 0.12)),
147
- 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));
148
163
  background-position:
149
164
  calc(100% - 1.05rem) 50%,
150
165
  calc(100% - 0.72rem) 50%,
@@ -156,7 +171,7 @@ select {
156
171
  100% 100%,
157
172
  100% 100%;
158
173
  background-repeat: no-repeat;
159
- 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);
160
175
  }
161
176
  select:hover {
162
177
  border-color: rgba(203, 166, 247, 0.58);
@@ -184,11 +199,11 @@ textarea {
184
199
  color: var(--ctp-text);
185
200
  caret-color: var(--ctp-pink);
186
201
  background:
187
- linear-gradient(180deg, rgba(17, 17, 27, 0.78), rgba(30, 30, 46, 0.8)),
188
- radial-gradient(circle at 0 0, rgba(203, 166, 247, 0.14), transparent 18rem);
189
- 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);
190
205
  }
191
- textarea::placeholder { color: rgba(186, 194, 222, 0.62); }
206
+ textarea::placeholder { color: rgba(var(--ctp-subtext-rgb), 0.62); }
192
207
  #promptInput {
193
208
  min-height: calc(1.5em + 1.8rem);
194
209
  max-height: min(38vh, 18rem);
@@ -206,9 +221,9 @@ textarea::placeholder { color: rgba(186, 194, 222, 0.62); }
206
221
  justify-content: space-between;
207
222
  padding: 1rem 1.25rem;
208
223
  border-bottom: 1px solid rgba(180, 190, 254, 0.22);
209
- 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));
210
225
  backdrop-filter: blur(18px) saturate(150%);
211
- 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);
212
227
  }
213
228
  .topbar::before {
214
229
  content: "";
@@ -231,7 +246,7 @@ textarea::placeholder { color: rgba(186, 194, 222, 0.62); }
231
246
  color: transparent;
232
247
  text-shadow: 0 0 1.6rem var(--glow-mauve);
233
248
  }
234
- .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); }
235
250
  .top-actions {
236
251
  display: flex;
237
252
  align-items: center;
@@ -281,7 +296,7 @@ body.side-panel-collapsed .side-panel {
281
296
  color: var(--ctp-teal);
282
297
  background:
283
298
  linear-gradient(120deg, rgba(148, 226, 213, 0.14), rgba(203, 166, 247, 0.10)),
284
- 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));
285
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);
286
301
  }
287
302
  .side-panel-expand-button::before,
@@ -312,7 +327,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
312
327
  height: 1.08rem;
313
328
  border: 1px solid rgba(180, 190, 254, 0.34);
314
329
  border-radius: 0.34rem;
315
- background: rgba(17, 17, 27, 0.50);
330
+ background: rgba(var(--ctp-crust-rgb), 0.50);
316
331
  box-shadow: inset 0 0 0 1px rgba(245, 194, 231, 0.04), 0 0 0.75rem rgba(148, 226, 213, 0.10);
317
332
  }
318
333
  .side-panel-button-icon::before {
@@ -383,7 +398,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
383
398
  margin: 0;
384
399
  padding: 0.9rem 0.95rem;
385
400
  border-bottom: 1px solid rgba(180, 190, 254, 0.16);
386
- 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));
387
402
  backdrop-filter: blur(14px) saturate(150%);
388
403
  }
389
404
  .side-panel-header strong {
@@ -424,7 +439,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
424
439
  color: var(--ctp-teal);
425
440
  background:
426
441
  linear-gradient(120deg, rgba(148, 226, 213, 0.12), rgba(203, 166, 247, 0.10)),
427
- 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));
428
443
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.055), 0 0 0.8rem rgba(148, 226, 213, 0.08);
429
444
  }
430
445
  .side-panel-toggle-button:hover,
@@ -454,15 +469,16 @@ body.side-panel-collapsed .terminal-tabs-shell {
454
469
  padding: 0.72rem;
455
470
  border: 1px solid rgba(180, 190, 254, 0.16);
456
471
  border-radius: 0.85rem;
457
- background: rgba(17, 17, 27, 0.46);
472
+ background: rgba(var(--ctp-crust-rgb), 0.46);
458
473
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.035), 0 0 1rem rgba(203, 166, 247, 0.06);
459
474
  }
460
475
  .control-field {
461
476
  display: grid;
462
477
  gap: 0.42rem;
463
478
  }
464
- .control-field label {
465
- color: rgba(205, 214, 244, 0.74);
479
+ .control-field label,
480
+ .control-field .control-label {
481
+ color: rgba(var(--ctp-text-rgb), 0.74);
466
482
  font-size: 0.72rem;
467
483
  font-weight: 900;
468
484
  letter-spacing: 0.12em;
@@ -473,6 +489,56 @@ body.side-panel-collapsed .terminal-tabs-shell {
473
489
  width: 100%;
474
490
  min-width: 0;
475
491
  }
492
+ .toggle-control {
493
+ display: grid;
494
+ grid-template-columns: auto minmax(0, 1fr);
495
+ gap: 0.65rem;
496
+ align-items: center;
497
+ min-height: 44px;
498
+ padding: 0.58rem 0.68rem;
499
+ cursor: pointer;
500
+ border: 1px solid rgba(180, 190, 254, 0.20);
501
+ border-radius: 0.72rem;
502
+ background: rgba(var(--ctp-crust-rgb), 0.58);
503
+ }
504
+ .control-field .toggle-control {
505
+ color: rgba(var(--ctp-text-rgb), 0.88);
506
+ font-size: inherit;
507
+ font-weight: inherit;
508
+ letter-spacing: normal;
509
+ text-transform: none;
510
+ }
511
+ .toggle-control input {
512
+ width: 1.15rem;
513
+ min-width: 1.15rem;
514
+ height: 1.15rem;
515
+ min-height: 1.15rem;
516
+ margin: 0;
517
+ cursor: pointer;
518
+ accent-color: var(--ctp-mauve);
519
+ box-shadow: none;
520
+ }
521
+ .toggle-control-label {
522
+ display: block;
523
+ color: var(--ctp-text);
524
+ font-size: 0.82rem;
525
+ font-weight: 900;
526
+ }
527
+ .toggle-control-hint {
528
+ display: block;
529
+ margin-top: 0.16rem;
530
+ color: rgba(var(--ctp-subtext-rgb), 0.70);
531
+ font-size: 0.72rem;
532
+ font-weight: 700;
533
+ }
534
+ .toggle-control:has(input:checked) {
535
+ border-color: rgba(148, 226, 213, 0.42);
536
+ box-shadow: 0 0 0.9rem rgba(148, 226, 213, 0.10);
537
+ }
538
+ .toggle-control:has(input:disabled) {
539
+ cursor: not-allowed;
540
+ opacity: 0.62;
541
+ }
476
542
  .network-status {
477
543
  display: grid;
478
544
  gap: 0.42rem;
@@ -480,11 +546,11 @@ body.side-panel-collapsed .terminal-tabs-shell {
480
546
  min-height: 5.6rem;
481
547
  padding: 0.68rem 0.72rem;
482
548
  overflow-wrap: anywhere;
483
- color: rgba(205, 214, 244, 0.88);
549
+ color: rgba(var(--ctp-text-rgb), 0.88);
484
550
  white-space: normal;
485
551
  border: 1px solid rgba(180, 190, 254, 0.16);
486
552
  border-radius: 0.72rem;
487
- background: rgba(17, 17, 27, 0.62);
553
+ background: rgba(var(--ctp-crust-rgb), 0.62);
488
554
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
489
555
  font-size: 0.78rem;
490
556
  font-weight: 800;
@@ -495,12 +561,13 @@ body.side-panel-collapsed .terminal-tabs-shell {
495
561
  border-color: rgba(249, 226, 175, 0.34);
496
562
  box-shadow: 0 0 0.9rem rgba(249, 226, 175, 0.10);
497
563
  }
498
- .network-status.opening {
564
+ .network-status.opening,
565
+ .network-status.closing {
499
566
  color: var(--ctp-teal);
500
567
  border-color: rgba(148, 226, 213, 0.34);
501
568
  }
502
569
  .network-status.closed {
503
- color: rgba(186, 194, 222, 0.72);
570
+ color: rgba(var(--ctp-subtext-rgb), 0.72);
504
571
  }
505
572
  .network-status-heading {
506
573
  color: var(--ctp-text);
@@ -509,7 +576,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
509
576
  }
510
577
  .network-status-detail,
511
578
  .network-status-empty {
512
- color: rgba(186, 194, 222, 0.68);
579
+ color: rgba(var(--ctp-subtext-rgb), 0.68);
513
580
  font-family: inherit;
514
581
  font-size: 0.72rem;
515
582
  font-weight: 700;
@@ -527,7 +594,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
527
594
  min-width: 0;
528
595
  }
529
596
  .network-status-url-label {
530
- color: rgba(186, 194, 222, 0.70);
597
+ color: rgba(var(--ctp-subtext-rgb), 0.70);
531
598
  font-size: 0.68rem;
532
599
  font-weight: 900;
533
600
  letter-spacing: 0.08em;
@@ -558,6 +625,8 @@ body.side-panel-collapsed .terminal-tabs-shell {
558
625
  }
559
626
 
560
627
  .terminal-tabs-shell {
628
+ position: relative;
629
+ z-index: 20;
561
630
  flex: 0 0 auto;
562
631
  display: flex;
563
632
  align-items: center;
@@ -566,9 +635,9 @@ body.side-panel-collapsed .terminal-tabs-shell {
566
635
  padding: 0.62rem 0.78rem;
567
636
  border-bottom: 1px solid rgba(180, 190, 254, 0.16);
568
637
  background:
569
- linear-gradient(90deg, rgba(17, 17, 27, 0.96), rgba(30, 30, 46, 0.82), rgba(24, 24, 37, 0.92)),
638
+ linear-gradient(90deg, rgba(var(--ctp-crust-rgb), 0.96), rgba(var(--ctp-base-rgb), 0.82), rgba(var(--ctp-mantle-rgb), 0.92)),
570
639
  radial-gradient(circle at 0% 0%, rgba(245, 194, 231, 0.12), transparent 18rem);
571
- box-shadow: inset 0 -1px 0 rgba(255,255,255,0.035), 0 0.45rem 1rem rgba(17, 17, 27, 0.20);
640
+ box-shadow: inset 0 -1px 0 rgba(255,255,255,0.035), 0 0.45rem 1rem rgba(var(--ctp-crust-rgb), 0.20);
572
641
  }
573
642
  .terminal-tabs-toggle-button { display: none; }
574
643
  .terminal-tabs {
@@ -580,6 +649,16 @@ body.side-panel-collapsed .terminal-tabs-shell {
580
649
  overflow-x: auto;
581
650
  scrollbar-width: thin;
582
651
  }
652
+ .terminal-tabs-shell:has(.terminal-tab-group:hover),
653
+ .terminal-tabs-shell:has(.terminal-tab-group:focus-within),
654
+ .terminal-tabs-shell:has(.terminal-tab-group.menu-open) {
655
+ z-index: 90;
656
+ }
657
+ .terminal-tabs:has(.terminal-tab-group:hover),
658
+ .terminal-tabs:has(.terminal-tab-group:focus-within),
659
+ .terminal-tabs:has(.terminal-tab-group.menu-open) {
660
+ overflow: visible;
661
+ }
583
662
  .terminal-tab {
584
663
  display: inline-flex;
585
664
  align-items: stretch;
@@ -588,20 +667,139 @@ body.side-panel-collapsed .terminal-tabs-shell {
588
667
  border: 1px solid rgba(180, 190, 254, 0.16);
589
668
  border-radius: 0.82rem;
590
669
  overflow: hidden;
591
- background: rgba(17, 17, 27, 0.54);
670
+ background: rgba(var(--ctp-crust-rgb), 0.54);
592
671
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.035);
593
672
  }
673
+ .terminal-tab-group {
674
+ position: relative;
675
+ z-index: 1;
676
+ overflow: visible;
677
+ isolation: isolate;
678
+ background: var(--ctp-crust);
679
+ }
680
+ .terminal-tab-group:hover,
681
+ .terminal-tab-group:focus-within {
682
+ z-index: 100;
683
+ }
684
+ .terminal-tab-group-button {
685
+ width: 100%;
686
+ }
687
+ .terminal-tab-group-count {
688
+ flex: 0 0 auto;
689
+ min-width: 1.35rem;
690
+ padding: 0.04rem 0.36rem;
691
+ border: 1px solid rgba(180, 190, 254, 0.18);
692
+ border-radius: 999px;
693
+ color: rgba(var(--ctp-subtext-rgb), 0.82);
694
+ background: rgba(var(--ctp-surface-rgb), 0.46);
695
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
696
+ font-size: 0.66rem;
697
+ font-weight: 800;
698
+ line-height: 1.15;
699
+ text-align: center;
700
+ }
701
+ .terminal-tab-group-menu {
702
+ position: absolute;
703
+ z-index: 100;
704
+ inset: 100% auto auto 0;
705
+ display: none;
706
+ flex-direction: column;
707
+ align-items: stretch;
708
+ gap: 0.38rem;
709
+ width: max-content;
710
+ padding-top: 0.38rem;
711
+ min-width: 100%;
712
+ max-width: min(18rem, calc(100vw - 2rem));
713
+ max-height: min(60vh, 24rem);
714
+ overflow: auto;
715
+ scrollbar-width: thin;
716
+ }
717
+ .terminal-tab-group:hover .terminal-tab-group-menu,
718
+ .terminal-tab-group:focus-within .terminal-tab-group-menu,
719
+ .terminal-tab-group.menu-open .terminal-tab-group-menu {
720
+ display: flex;
721
+ }
722
+ .terminal-tab-group-item {
723
+ display: inline-flex;
724
+ align-items: stretch;
725
+ width: min(16rem, calc(100vw - 2rem));
726
+ min-width: 9rem;
727
+ max-width: 16rem;
728
+ border: 1px solid rgba(180, 190, 254, 0.16);
729
+ border-radius: 0.82rem;
730
+ overflow: hidden;
731
+ background: var(--ctp-crust);
732
+ box-shadow: 0 0.75rem 1.6rem rgba(var(--ctp-crust-rgb), 0.34), inset 0 1px 0 rgba(255,255,255,0.045);
733
+ }
734
+ .terminal-tab-group-item.active {
735
+ border-color: rgba(148, 226, 213, 0.54);
736
+ background:
737
+ linear-gradient(120deg, rgba(148, 226, 213, 0.19), rgba(203, 166, 247, 0.13)),
738
+ var(--ctp-crust);
739
+ box-shadow: 0 0 1rem rgba(148, 226, 213, 0.20), inset 0 1px 0 rgba(255,255,255,0.05);
740
+ }
741
+ .terminal-tab-group-item.stopped {
742
+ opacity: 1;
743
+ border-color: rgba(243, 139, 168, 0.28);
744
+ }
745
+ .terminal-tab-group-item.activity-working {
746
+ border-color: rgba(249, 226, 175, 0.56);
747
+ }
748
+ .terminal-tab-group-item.activity-blocked {
749
+ border-color: rgba(250, 179, 135, 0.62);
750
+ }
751
+ .terminal-tab-group-item.activity-done {
752
+ border-color: rgba(166, 227, 161, 0.52);
753
+ }
754
+ .terminal-tab-group-add {
755
+ width: min(16rem, calc(100vw - 2rem));
756
+ min-height: 2.35rem;
757
+ padding: 0.38rem 0.72rem;
758
+ color: var(--ctp-pink);
759
+ white-space: nowrap;
760
+ border: 1px solid rgba(245, 194, 231, 0.30);
761
+ border-radius: 0.78rem;
762
+ background:
763
+ linear-gradient(120deg, rgba(245, 194, 231, 0.14), rgba(137, 180, 250, 0.10)),
764
+ var(--ctp-crust);
765
+ box-shadow: 0 0.75rem 1.6rem rgba(var(--ctp-crust-rgb), 0.30), inset 0 1px 0 rgba(255,255,255,0.045);
766
+ }
767
+ .terminal-tab-group-add:hover {
768
+ color: #11111b;
769
+ border-color: transparent;
770
+ background: linear-gradient(120deg, var(--ctp-pink), var(--ctp-blue));
771
+ }
594
772
  .terminal-tab.active {
595
773
  border-color: rgba(148, 226, 213, 0.54);
596
774
  background:
597
775
  linear-gradient(120deg, rgba(148, 226, 213, 0.17), rgba(203, 166, 247, 0.12)),
598
- rgba(17, 17, 27, 0.60);
776
+ rgba(var(--ctp-crust-rgb), 0.60);
599
777
  box-shadow: 0 0 1rem rgba(148, 226, 213, 0.18), inset 0 1px 0 rgba(255,255,255,0.05);
600
778
  }
779
+ .terminal-tab-group.active {
780
+ background:
781
+ linear-gradient(120deg, rgba(148, 226, 213, 0.17), rgba(203, 166, 247, 0.12)),
782
+ var(--ctp-crust);
783
+ }
601
784
  .terminal-tab.stopped {
602
785
  opacity: 0.72;
603
786
  border-color: rgba(243, 139, 168, 0.28);
604
787
  }
788
+ .terminal-tab-group.stopped {
789
+ opacity: 1;
790
+ }
791
+ .terminal-tab.activity-working {
792
+ border-color: rgba(249, 226, 175, 0.56);
793
+ box-shadow: 0 0 1rem rgba(249, 226, 175, 0.14), inset 0 1px 0 rgba(255,255,255,0.045);
794
+ }
795
+ .terminal-tab.activity-blocked {
796
+ border-color: rgba(250, 179, 135, 0.62);
797
+ box-shadow: 0 0 1rem rgba(250, 179, 135, 0.20), inset 0 1px 0 rgba(255,255,255,0.045);
798
+ }
799
+ .terminal-tab.activity-done {
800
+ border-color: rgba(166, 227, 161, 0.52);
801
+ box-shadow: 0 0 1rem rgba(166, 227, 161, 0.16), inset 0 1px 0 rgba(255,255,255,0.045);
802
+ }
605
803
  .terminal-tab-button,
606
804
  .terminal-tab-close,
607
805
  .terminal-new-tab-button {
@@ -620,6 +818,60 @@ body.side-panel-collapsed .terminal-tabs-shell {
620
818
  padding: 0.38rem 0.66rem;
621
819
  text-align: left;
622
820
  }
821
+ .terminal-tab-title-row {
822
+ display: flex;
823
+ align-items: center;
824
+ gap: 0.38rem;
825
+ min-width: 0;
826
+ }
827
+ .terminal-tab-activity-indicator {
828
+ flex: 0 0 0.58rem;
829
+ width: 0.58rem;
830
+ height: 0.58rem;
831
+ border-radius: 999px;
832
+ background: rgba(var(--ctp-subtext-rgb), 0.38);
833
+ box-shadow: 0 0 0 1px rgba(255,255,255,0.08), 0 0 0.45rem rgba(var(--ctp-subtext-rgb), 0.10);
834
+ }
835
+ .terminal-tab.activity-working .terminal-tab-activity-indicator {
836
+ background: var(--ctp-yellow);
837
+ box-shadow: 0 0 0 1px rgba(249, 226, 175, 0.34), 0 0 0.8rem rgba(249, 226, 175, 0.52);
838
+ animation: terminal-tab-working-pulse 1.15s ease-in-out infinite;
839
+ }
840
+ .terminal-tab.activity-blocked .terminal-tab-activity-indicator {
841
+ background: var(--ctp-peach);
842
+ box-shadow: 0 0 0 1px rgba(250, 179, 135, 0.38), 0 0 0.85rem rgba(250, 179, 135, 0.58);
843
+ animation: terminal-tab-working-pulse 1.35s ease-in-out infinite;
844
+ }
845
+ .terminal-tab.activity-done .terminal-tab-activity-indicator {
846
+ background: var(--ctp-green);
847
+ box-shadow: 0 0 0 1px rgba(166, 227, 161, 0.34), 0 0 0.8rem rgba(166, 227, 161, 0.48);
848
+ }
849
+ .terminal-tab.stopped .terminal-tab-activity-indicator {
850
+ background: var(--ctp-red);
851
+ box-shadow: 0 0 0 1px rgba(243, 139, 168, 0.28), 0 0 0.6rem rgba(243, 139, 168, 0.24);
852
+ }
853
+ .terminal-tab-group-item.activity-working .terminal-tab-activity-indicator {
854
+ background: var(--ctp-yellow);
855
+ box-shadow: 0 0 0 1px rgba(249, 226, 175, 0.34), 0 0 0.8rem rgba(249, 226, 175, 0.52);
856
+ animation: terminal-tab-working-pulse 1.15s ease-in-out infinite;
857
+ }
858
+ .terminal-tab-group-item.activity-blocked .terminal-tab-activity-indicator {
859
+ background: var(--ctp-peach);
860
+ box-shadow: 0 0 0 1px rgba(250, 179, 135, 0.38), 0 0 0.85rem rgba(250, 179, 135, 0.58);
861
+ animation: terminal-tab-working-pulse 1.35s ease-in-out infinite;
862
+ }
863
+ .terminal-tab-group-item.activity-done .terminal-tab-activity-indicator {
864
+ background: var(--ctp-green);
865
+ box-shadow: 0 0 0 1px rgba(166, 227, 161, 0.34), 0 0 0.8rem rgba(166, 227, 161, 0.48);
866
+ }
867
+ .terminal-tab-group-item.stopped .terminal-tab-activity-indicator {
868
+ background: var(--ctp-red);
869
+ box-shadow: 0 0 0 1px rgba(243, 139, 168, 0.28), 0 0 0.6rem rgba(243, 139, 168, 0.24);
870
+ }
871
+ @keyframes terminal-tab-working-pulse {
872
+ 0%, 100% { transform: scale(0.86); opacity: 0.68; }
873
+ 50% { transform: scale(1.08); opacity: 1; }
874
+ }
623
875
  .terminal-tab-button:hover,
624
876
  .terminal-tab-close:hover,
625
877
  .terminal-new-tab-button:hover {
@@ -633,23 +885,31 @@ body.side-panel-collapsed .terminal-tabs-shell {
633
885
  white-space: nowrap;
634
886
  }
635
887
  .terminal-tab-title {
888
+ flex: 1 1 auto;
636
889
  color: var(--ctp-text);
637
890
  font-size: 0.84rem;
638
891
  font-weight: 900;
639
892
  letter-spacing: 0.03em;
640
893
  }
641
894
  .terminal-tab-meta {
642
- color: rgba(186, 194, 222, 0.62);
895
+ color: rgba(var(--ctp-subtext-rgb), 0.62);
643
896
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
644
897
  font-size: 0.68rem;
645
898
  }
646
- .terminal-tab.active .terminal-tab-title {
899
+ .terminal-tab.active .terminal-tab-title,
900
+ .terminal-tab-group-item.active .terminal-tab-title {
647
901
  color: var(--ctp-teal);
648
902
  text-shadow: 0 0 0.8rem var(--glow-teal);
649
903
  }
904
+ .terminal-tab.activity-working .terminal-tab-meta,
905
+ .terminal-tab-group-item.activity-working .terminal-tab-meta { color: rgba(249, 226, 175, 0.82); }
906
+ .terminal-tab.activity-blocked .terminal-tab-meta,
907
+ .terminal-tab-group-item.activity-blocked .terminal-tab-meta { color: rgba(250, 179, 135, 0.88); }
908
+ .terminal-tab.activity-done .terminal-tab-meta,
909
+ .terminal-tab-group-item.activity-done .terminal-tab-meta { color: rgba(166, 227, 161, 0.82); }
650
910
  .terminal-tab-close {
651
911
  flex: 0 0 2.1rem;
652
- color: rgba(186, 194, 222, 0.72);
912
+ color: rgba(var(--ctp-subtext-rgb), 0.72);
653
913
  border-left: 1px solid rgba(180, 190, 254, 0.10);
654
914
  font-size: 1.2rem;
655
915
  line-height: 1;
@@ -666,7 +926,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
666
926
  border-radius: 0.78rem;
667
927
  background:
668
928
  linear-gradient(120deg, rgba(245, 194, 231, 0.12), rgba(137, 180, 250, 0.08)),
669
- rgba(17, 17, 27, 0.58);
929
+ rgba(var(--ctp-crust-rgb), 0.58);
670
930
  }
671
931
  .terminal-new-tab-button:hover {
672
932
  color: #11111b;
@@ -678,7 +938,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
678
938
  flex: 0 0 auto;
679
939
  border-bottom: 1px solid rgba(180, 190, 254, 0.16);
680
940
  padding: 0.72rem 0.95rem;
681
- color: rgba(205, 214, 244, 0.78);
941
+ color: rgba(var(--ctp-text-rgb), 0.78);
682
942
  background: linear-gradient(90deg, rgba(203, 166, 247, 0.10), rgba(137, 180, 250, 0.05), rgba(148, 226, 213, 0.08));
683
943
  }
684
944
  .statusbar {
@@ -687,14 +947,14 @@ body.side-panel-collapsed .terminal-tabs-shell {
687
947
  display: grid;
688
948
  gap: 0.58rem;
689
949
  padding: 0.78rem 0.95rem 0.82rem;
690
- color: rgba(205, 214, 244, 0.84);
950
+ color: rgba(var(--ctp-text-rgb), 0.84);
691
951
  border-top: 1px solid rgba(245, 194, 231, 0.18);
692
952
  border-bottom: 1px solid rgba(148, 226, 213, 0.22);
693
953
  background:
694
954
  radial-gradient(circle at 6% 0%, rgba(245, 194, 231, 0.13), transparent 15rem),
695
955
  radial-gradient(circle at 82% 50%, rgba(148, 226, 213, 0.10), transparent 18rem),
696
- linear-gradient(135deg, rgba(17, 17, 27, 0.94), rgba(30, 30, 46, 0.80) 48%, rgba(24, 24, 37, 0.92));
697
- box-shadow: inset 0 1px 0 rgba(255,255,255,0.04), 0 -0.45rem 1.2rem rgba(17, 17, 27, 0.28);
956
+ 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));
957
+ box-shadow: inset 0 1px 0 rgba(255,255,255,0.04), 0 -0.45rem 1.2rem rgba(var(--ctp-crust-rgb), 0.28);
698
958
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
699
959
  font-size: 0.76rem;
700
960
  line-height: 1.35;
@@ -723,7 +983,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
723
983
  display: grid;
724
984
  grid-template-columns: minmax(10rem, 1.9fr) minmax(5rem, 0.55fr) minmax(6.5rem, 0.6fr) minmax(7rem, 0.65fr) minmax(12rem, 1.2fr);
725
985
  gap: 0.5rem;
726
- color: rgba(186, 194, 222, 0.76);
986
+ color: rgba(var(--ctp-subtext-rgb), 0.76);
727
987
  }
728
988
  .footer-details-toggle { display: none; }
729
989
  .footer-metric,
@@ -731,7 +991,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
731
991
  min-width: 0;
732
992
  border: 1px solid rgba(180, 190, 254, 0.16);
733
993
  background:
734
- linear-gradient(180deg, rgba(49, 50, 68, 0.46), rgba(17, 17, 27, 0.34)),
994
+ linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.46), rgba(var(--ctp-crust-rgb), 0.34)),
735
995
  linear-gradient(90deg, rgba(203, 166, 247, 0.06), rgba(148, 226, 213, 0.03));
736
996
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.035), 0 0.45rem 1rem rgba(0, 0, 0, 0.10);
737
997
  }
@@ -759,7 +1019,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
759
1019
  }
760
1020
  .footer-metric-label,
761
1021
  .footer-meta-label {
762
- color: rgba(186, 194, 222, 0.62);
1022
+ color: rgba(var(--ctp-subtext-rgb), 0.62);
763
1023
  font-size: 0.64rem;
764
1024
  font-weight: 950;
765
1025
  letter-spacing: 0.12em;
@@ -769,7 +1029,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
769
1029
  .footer-meta-value {
770
1030
  min-width: 0;
771
1031
  overflow: hidden;
772
- color: rgba(205, 214, 244, 0.94);
1032
+ color: rgba(var(--ctp-text-rgb), 0.94);
773
1033
  font-weight: 800;
774
1034
  text-overflow: ellipsis;
775
1035
  white-space: nowrap;
@@ -803,6 +1063,37 @@ button.footer-meta {
803
1063
  color: var(--ctp-green);
804
1064
  }
805
1065
  .footer-context { display: none; }
1066
+ .footer-context-card {
1067
+ --context-usage: 0%;
1068
+ --context-active-color: var(--ctp-green);
1069
+ --context-active-glow: rgba(166, 227, 161, 0.42);
1070
+ position: relative;
1071
+ isolation: isolate;
1072
+ overflow: hidden;
1073
+ }
1074
+ .footer-context-card.has-context-usage {
1075
+ border-color: rgba(148, 226, 213, 0.30);
1076
+ }
1077
+ .footer-context-card.has-context-usage::before {
1078
+ content: "";
1079
+ position: absolute;
1080
+ inset: 0;
1081
+ z-index: 0;
1082
+ pointer-events: none;
1083
+ background: var(--context-card-gradient);
1084
+ clip-path: inset(0 calc(100% - var(--context-usage)) 0 0);
1085
+ }
1086
+ .footer-context-card > * {
1087
+ position: relative;
1088
+ z-index: 1;
1089
+ }
1090
+ .footer-context-card.has-context-usage .footer-metric-label,
1091
+ .footer-context-card.has-context-usage .footer-metric-value,
1092
+ .footer-context-card.has-context-usage .footer-meta-label,
1093
+ .footer-context-card.has-context-usage .footer-meta-value {
1094
+ color: var(--context-active-color);
1095
+ text-shadow: 0 0 0.65rem var(--context-active-glow);
1096
+ }
806
1097
  .footer-context .footer-meta-value {
807
1098
  color: var(--ctp-teal);
808
1099
  text-shadow: 0 0 0.6rem rgba(148, 226, 213, 0.22);
@@ -829,8 +1120,8 @@ button.footer-meta {
829
1120
  border-radius: 0.95rem;
830
1121
  background:
831
1122
  radial-gradient(circle at 8% 0%, rgba(148, 226, 213, 0.13), transparent 12rem),
832
- linear-gradient(145deg, rgba(17, 17, 27, 0.98), rgba(30, 30, 46, 0.96));
833
- box-shadow: 0 1.2rem 2.8rem rgba(17, 17, 27, 0.68), 0 0 1.4rem rgba(148, 226, 213, 0.14), inset 0 1px 0 rgba(255,255,255,0.055);
1123
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.98), rgba(var(--ctp-base-rgb), 0.96));
1124
+ 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);
834
1125
  }
835
1126
  .footer-model-picker-title {
836
1127
  color: var(--ctp-teal);
@@ -845,7 +1136,7 @@ button.footer-meta {
845
1136
  overflow-wrap: anywhere;
846
1137
  }
847
1138
  .footer-model-picker-source {
848
- color: rgba(186, 194, 222, 0.68);
1139
+ color: rgba(var(--ctp-subtext-rgb), 0.68);
849
1140
  font-size: 0.74rem;
850
1141
  }
851
1142
  .footer-model-picker-empty {
@@ -854,7 +1145,7 @@ button.footer-meta {
854
1145
  padding: 0.58rem 0.62rem;
855
1146
  border: 1px solid rgba(249, 226, 175, 0.18);
856
1147
  border-radius: 0.72rem;
857
- background: rgba(17, 17, 27, 0.48);
1148
+ background: rgba(var(--ctp-crust-rgb), 0.48);
858
1149
  }
859
1150
  .footer-model-picker-empty strong {
860
1151
  color: var(--ctp-yellow);
@@ -884,7 +1175,7 @@ button.footer-meta {
884
1175
  font-weight: 850;
885
1176
  }
886
1177
  .footer-model-option-name {
887
- color: rgba(186, 194, 222, 0.68);
1178
+ color: rgba(var(--ctp-subtext-rgb), 0.68);
888
1179
  font-size: 0.72rem;
889
1180
  }
890
1181
  .footer-branch .footer-meta-value {
@@ -914,8 +1205,8 @@ button.footer-meta {
914
1205
  background:
915
1206
  radial-gradient(circle at 10% 10%, rgba(166, 227, 161, 0.10), transparent 16rem),
916
1207
  radial-gradient(circle at 92% 0%, rgba(203, 166, 247, 0.14), transparent 18rem),
917
- linear-gradient(145deg, rgba(17, 17, 27, 0.94), rgba(30, 30, 46, 0.82));
918
- box-shadow: inset 0 1px 0 rgba(255,255,255,0.045), 0 -0.5rem 1.4rem rgba(17, 17, 27, 0.22);
1208
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.94), rgba(var(--ctp-base-rgb), 0.82));
1209
+ box-shadow: inset 0 1px 0 rgba(255,255,255,0.045), 0 -0.5rem 1.4rem rgba(var(--ctp-crust-rgb), 0.22);
919
1210
  }
920
1211
  .git-workflow-header {
921
1212
  display: flex;
@@ -953,8 +1244,8 @@ button.footer-meta {
953
1244
  padding: 0.38rem 0.72rem 0.38rem 1.62rem;
954
1245
  border: 1px solid rgba(180, 190, 254, 0.16);
955
1246
  border-radius: 999px;
956
- color: rgba(186, 194, 222, 0.76);
957
- background: rgba(17, 17, 27, 0.42);
1247
+ color: rgba(var(--ctp-subtext-rgb), 0.76);
1248
+ background: rgba(var(--ctp-crust-rgb), 0.42);
958
1249
  font-size: 0.76rem;
959
1250
  font-weight: 900;
960
1251
  letter-spacing: 0.08em;
@@ -968,7 +1259,7 @@ button.footer-meta {
968
1259
  width: 0.52rem;
969
1260
  height: 0.52rem;
970
1261
  border-radius: 999px;
971
- background: rgba(108, 112, 134, 0.72);
1262
+ background: rgba(var(--ctp-overlay-rgb), 0.72);
972
1263
  transform: translateY(-50%);
973
1264
  }
974
1265
  .git-workflow-step.active {
@@ -997,9 +1288,9 @@ button.footer-meta {
997
1288
  padding: 0.78rem;
998
1289
  border: 1px solid rgba(180, 190, 254, 0.16);
999
1290
  border-radius: 0.82rem;
1000
- color: rgba(205, 214, 244, 0.88);
1291
+ color: rgba(var(--ctp-text-rgb), 0.88);
1001
1292
  background:
1002
- linear-gradient(180deg, rgba(17, 17, 27, 0.76), rgba(17, 17, 27, 0.58)),
1293
+ linear-gradient(180deg, rgba(var(--ctp-crust-rgb), 0.76), rgba(var(--ctp-crust-rgb), 0.58)),
1003
1294
  radial-gradient(circle at 0 0, rgba(148, 226, 213, 0.08), transparent 14rem);
1004
1295
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
1005
1296
  font-size: 0.82rem;
@@ -1012,7 +1303,7 @@ button.footer-meta {
1012
1303
  }
1013
1304
  .widget-area:empty { display: none; }
1014
1305
  .widget {
1015
- background: rgba(17, 17, 27, 0.72);
1306
+ background: rgba(var(--ctp-crust-rgb), 0.72);
1016
1307
  border: 1px solid rgba(148, 226, 213, 0.24);
1017
1308
  border-radius: 0.8rem;
1018
1309
  padding: 0.7rem;
@@ -1020,6 +1311,120 @@ button.footer-meta {
1020
1311
  white-space: pre-wrap;
1021
1312
  box-shadow: inset 0 0 1.4rem rgba(148, 226, 213, 0.06), 0 0 1rem rgba(148, 226, 213, 0.08);
1022
1313
  }
1314
+ .release-npm-widget {
1315
+ display: grid;
1316
+ gap: 0.62rem;
1317
+ padding: 0.72rem;
1318
+ white-space: normal;
1319
+ border-color: rgba(245, 194, 231, 0.34);
1320
+ background:
1321
+ radial-gradient(circle at 4% 0%, rgba(245, 194, 231, 0.16), transparent 16rem),
1322
+ radial-gradient(circle at 96% 12%, rgba(148, 226, 213, 0.12), transparent 18rem),
1323
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.92), rgba(var(--ctp-base-rgb), 0.78));
1324
+ }
1325
+ .release-aur-widget {
1326
+ border-color: rgba(250, 179, 135, 0.34);
1327
+ background:
1328
+ radial-gradient(circle at 4% 0%, rgba(250, 179, 135, 0.14), transparent 16rem),
1329
+ radial-gradient(circle at 96% 12%, rgba(166, 227, 161, 0.12), transparent 18rem),
1330
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.92), rgba(var(--ctp-base-rgb), 0.78));
1331
+ }
1332
+ .release-aur-widget .release-npm-kicker { color: var(--ctp-peach); }
1333
+ .release-npm-header {
1334
+ display: grid;
1335
+ grid-template-columns: minmax(0, 1fr) auto auto;
1336
+ gap: 0.7rem;
1337
+ align-items: center;
1338
+ }
1339
+ .release-npm-title-wrap {
1340
+ display: grid;
1341
+ gap: 0.14rem;
1342
+ min-width: 0;
1343
+ }
1344
+ .release-npm-kicker {
1345
+ color: var(--ctp-pink);
1346
+ font-size: 0.68rem;
1347
+ font-weight: 950;
1348
+ letter-spacing: 0.16em;
1349
+ text-transform: uppercase;
1350
+ }
1351
+ .release-npm-title {
1352
+ min-width: 0;
1353
+ overflow: hidden;
1354
+ color: rgba(var(--ctp-text-rgb), 0.96);
1355
+ text-overflow: ellipsis;
1356
+ white-space: nowrap;
1357
+ }
1358
+ .release-npm-meta,
1359
+ .release-npm-actions {
1360
+ display: flex;
1361
+ flex-wrap: wrap;
1362
+ gap: 0.42rem;
1363
+ align-items: center;
1364
+ justify-content: flex-end;
1365
+ }
1366
+ .release-npm-pill {
1367
+ display: inline-flex;
1368
+ align-items: center;
1369
+ max-width: min(32rem, 50vw);
1370
+ min-height: 1.55rem;
1371
+ padding: 0.16rem 0.5rem;
1372
+ overflow: hidden;
1373
+ color: var(--ctp-yellow);
1374
+ border: 1px solid rgba(249, 226, 175, 0.22);
1375
+ border-radius: 999px;
1376
+ background: rgba(var(--ctp-crust-rgb), 0.48);
1377
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
1378
+ font-size: 0.72rem;
1379
+ font-weight: 800;
1380
+ text-overflow: ellipsis;
1381
+ white-space: nowrap;
1382
+ }
1383
+ .release-npm-pill.elapsed { color: var(--ctp-teal); }
1384
+ .release-npm-action {
1385
+ min-height: 2rem;
1386
+ padding: 0.38rem 0.62rem;
1387
+ border-radius: 0.62rem;
1388
+ font-size: 0.76rem;
1389
+ font-weight: 850;
1390
+ }
1391
+ .release-npm-terminal {
1392
+ max-height: min(34rem, 42vh);
1393
+ min-height: 5.25rem;
1394
+ overflow: auto;
1395
+ padding: 0.7rem;
1396
+ border: 1px solid rgba(180, 190, 254, 0.16);
1397
+ border-radius: 0.78rem;
1398
+ background:
1399
+ linear-gradient(180deg, rgba(var(--ctp-crust-rgb), 0.82), rgba(var(--ctp-mantle-rgb), 0.62)),
1400
+ radial-gradient(circle at 0 0, rgba(148, 226, 213, 0.07), transparent 15rem);
1401
+ box-shadow: inset 0 0 1.5rem rgba(var(--ctp-crust-rgb), 0.36);
1402
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
1403
+ font-size: 0.78rem;
1404
+ line-height: 1.42;
1405
+ overscroll-behavior: contain;
1406
+ }
1407
+ .release-npm-line {
1408
+ min-width: max-content;
1409
+ min-height: 1.42em;
1410
+ color: rgba(var(--ctp-text-rgb), 0.88);
1411
+ white-space: pre;
1412
+ }
1413
+ .release-npm-line.command { color: var(--ctp-sky); }
1414
+ .release-npm-line.target { color: var(--ctp-pink); font-weight: 850; }
1415
+ .release-npm-line.pass { color: var(--ctp-green); }
1416
+ .release-npm-line.fail { color: var(--ctp-red); }
1417
+ .release-npm-line.warn { color: var(--ctp-yellow); }
1418
+ .release-npm-line.info { color: rgba(var(--ctp-subtext-rgb), 0.80); }
1419
+ .release-npm-line.event { color: var(--ctp-mauve); }
1420
+ .release-npm-controls {
1421
+ color: rgba(var(--ctp-subtext-rgb), 0.72);
1422
+ font-size: 0.75rem;
1423
+ line-height: 1.35;
1424
+ }
1425
+ .release-npm-log-widget .release-npm-terminal {
1426
+ max-height: min(42rem, 52vh);
1427
+ }
1023
1428
  .todo-widget {
1024
1429
  display: grid;
1025
1430
  gap: 0.52rem;
@@ -1028,7 +1433,7 @@ button.footer-meta {
1028
1433
  border-color: rgba(137, 180, 250, 0.32);
1029
1434
  background:
1030
1435
  radial-gradient(circle at 4% 0%, rgba(137, 180, 250, 0.18), transparent 12rem),
1031
- linear-gradient(145deg, rgba(17, 17, 27, 0.88), rgba(30, 30, 46, 0.74));
1436
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.88), rgba(var(--ctp-base-rgb), 0.74));
1032
1437
  }
1033
1438
  .todo-widget-header {
1034
1439
  display: flex;
@@ -1050,7 +1455,7 @@ button.footer-meta {
1050
1455
  padding: 0.12rem 0.42rem;
1051
1456
  border: 1px solid rgba(137, 180, 250, 0.24);
1052
1457
  border-radius: 999px;
1053
- background: rgba(17, 17, 27, 0.48);
1458
+ background: rgba(var(--ctp-crust-rgb), 0.48);
1054
1459
  font-size: 0.72rem;
1055
1460
  font-weight: 850;
1056
1461
  }
@@ -1060,7 +1465,7 @@ button.footer-meta {
1060
1465
  height: 0.38rem;
1061
1466
  overflow: hidden;
1062
1467
  border-radius: 999px;
1063
- background: rgba(49, 50, 68, 0.78);
1468
+ background: rgba(var(--ctp-surface-rgb), 0.78);
1064
1469
  box-shadow: inset 0 0 0 1px rgba(180, 190, 254, 0.10);
1065
1470
  }
1066
1471
  .todo-widget-progress-fill {
@@ -1083,7 +1488,7 @@ button.footer-meta {
1083
1488
  align-items: start;
1084
1489
  gap: 0.48rem;
1085
1490
  min-width: 0;
1086
- color: rgba(205, 214, 244, 0.92);
1491
+ color: rgba(var(--ctp-text-rgb), 0.92);
1087
1492
  }
1088
1493
  .todo-widget-marker {
1089
1494
  display: inline-grid;
@@ -1097,7 +1502,7 @@ button.footer-meta {
1097
1502
  font-size: 0.74rem;
1098
1503
  font-weight: 950;
1099
1504
  line-height: 1;
1100
- background: rgba(49, 50, 68, 0.88);
1505
+ background: rgba(var(--ctp-surface-rgb), 0.88);
1101
1506
  }
1102
1507
  .todo-widget-item.done .todo-widget-marker {
1103
1508
  border-color: transparent;
@@ -1118,16 +1523,67 @@ button.footer-meta {
1118
1523
  line-height: 1.35;
1119
1524
  }
1120
1525
  .todo-widget-footer {
1121
- color: rgba(186, 194, 222, 0.64);
1526
+ color: rgba(var(--ctp-subtext-rgb), 0.64);
1122
1527
  font-size: 0.72rem;
1123
1528
  }
1124
1529
  .chat {
1530
+ position: relative;
1125
1531
  flex: 1 1 auto;
1126
1532
  min-height: 0;
1127
1533
  overflow: auto;
1128
1534
  padding: 1rem;
1129
1535
  scroll-behavior: smooth;
1130
1536
  }
1537
+ .sticky-user-prompt-button[hidden] { display: none; }
1538
+ .sticky-user-prompt-button {
1539
+ position: sticky;
1540
+ top: 0;
1541
+ z-index: 12;
1542
+ display: grid;
1543
+ grid-template-columns: auto minmax(0, 1fr) auto;
1544
+ align-items: center;
1545
+ gap: 0.62rem;
1546
+ width: 100%;
1547
+ min-height: 44px;
1548
+ margin: 0 0 0.75rem;
1549
+ padding: 0.52rem 0.72rem;
1550
+ overflow: hidden;
1551
+ text-align: left;
1552
+ border-color: rgba(137, 180, 250, 0.42);
1553
+ border-radius: 0.88rem;
1554
+ backdrop-filter: blur(14px) saturate(145%);
1555
+ background:
1556
+ linear-gradient(120deg, rgba(137, 180, 250, 0.18), rgba(203, 166, 247, 0.16), rgba(148, 226, 213, 0.14)),
1557
+ linear-gradient(180deg, rgba(var(--ctp-mantle-rgb), 0.96), rgba(var(--ctp-crust-rgb), 0.94));
1558
+ box-shadow: 0 0.75rem 1.65rem rgba(var(--ctp-crust-rgb), 0.36), 0 0 1rem rgba(137, 180, 250, 0.16);
1559
+ }
1560
+ .sticky-user-prompt-button:hover {
1561
+ border-color: rgba(148, 226, 213, 0.62);
1562
+ box-shadow: 0 0.85rem 1.8rem rgba(var(--ctp-crust-rgb), 0.4), 0 0 1.2rem rgba(148, 226, 213, 0.24);
1563
+ }
1564
+ .sticky-user-prompt-label {
1565
+ color: var(--ctp-blue);
1566
+ font-size: 0.7rem;
1567
+ font-weight: 900;
1568
+ letter-spacing: 0.1em;
1569
+ text-transform: uppercase;
1570
+ white-space: nowrap;
1571
+ }
1572
+ .sticky-user-prompt-text {
1573
+ min-width: 0;
1574
+ overflow: hidden;
1575
+ color: rgba(var(--ctp-text-rgb), 0.94);
1576
+ font-size: 0.82rem;
1577
+ font-weight: 700;
1578
+ text-overflow: ellipsis;
1579
+ white-space: nowrap;
1580
+ }
1581
+ .sticky-user-prompt-meta {
1582
+ color: var(--ctp-teal);
1583
+ font-size: 0.72rem;
1584
+ font-weight: 900;
1585
+ white-space: nowrap;
1586
+ }
1131
1587
  .jump-to-latest-button[hidden] { display: none; }
1132
1588
  .jump-to-latest-button {
1133
1589
  align-self: center;
@@ -1139,14 +1595,39 @@ button.footer-meta {
1139
1595
  border-color: transparent;
1140
1596
  box-shadow: 0 0 1.2rem var(--glow-teal), 0 0.7rem 1.6rem rgba(0, 0, 0, 0.28);
1141
1597
  }
1598
+ .feedback-tray[hidden] { display: none; }
1599
+ .feedback-tray {
1600
+ display: flex;
1601
+ align-items: center;
1602
+ justify-content: space-between;
1603
+ gap: 0.75rem;
1604
+ margin: 0 1rem 0.65rem;
1605
+ padding: 0.55rem 0.7rem;
1606
+ border: 1px solid rgba(203, 166, 247, 0.30);
1607
+ border-radius: 0.85rem;
1608
+ color: rgba(var(--ctp-text-rgb), 0.88);
1609
+ background: linear-gradient(145deg, rgba(203, 166, 247, 0.14), rgba(var(--ctp-mantle-rgb), 0.9));
1610
+ box-shadow: 0 0.85rem 1.8rem rgba(var(--ctp-crust-rgb), 0.32), 0 0 1rem rgba(203, 166, 247, 0.16);
1611
+ }
1612
+ .feedback-tray span {
1613
+ font-size: 0.78rem;
1614
+ font-weight: 800;
1615
+ letter-spacing: 0.03em;
1616
+ }
1617
+ .feedback-tray button {
1618
+ min-height: 44px;
1619
+ padding: 0.42rem 0.72rem;
1620
+ font-size: 0.78rem;
1621
+ font-weight: 900;
1622
+ }
1142
1623
  .message {
1143
1624
  position: relative;
1144
1625
  margin: 0 0 0.9rem;
1145
1626
  padding: 0.86rem;
1146
1627
  border: 1px solid rgba(180, 190, 254, 0.18);
1147
1628
  border-radius: 0.95rem;
1148
- background: linear-gradient(145deg, rgba(49, 50, 68, 0.66), rgba(24, 24, 37, 0.7));
1149
- box-shadow: 0 0.8rem 1.8rem rgba(17, 17, 27, 0.34), inset 0 1px 0 rgba(255,255,255,0.045);
1629
+ background: linear-gradient(145deg, rgba(var(--ctp-surface-rgb), 0.66), rgba(var(--ctp-mantle-rgb), 0.7));
1630
+ box-shadow: 0 0.8rem 1.8rem rgba(var(--ctp-crust-rgb), 0.34), inset 0 1px 0 rgba(255,255,255,0.045);
1150
1631
  }
1151
1632
  .message::before {
1152
1633
  content: "";
@@ -1160,17 +1641,34 @@ button.footer-meta {
1160
1641
  }
1161
1642
  .message.user {
1162
1643
  border-color: rgba(137, 180, 250, 0.34);
1163
- background: linear-gradient(145deg, rgba(137, 180, 250, 0.16), rgba(49, 50, 68, 0.58));
1644
+ background: linear-gradient(145deg, rgba(137, 180, 250, 0.16), rgba(var(--ctp-surface-rgb), 0.58));
1164
1645
  }
1165
1646
  .message.assistant {
1166
1647
  border-color: rgba(148, 226, 213, 0.30);
1167
- background: linear-gradient(145deg, rgba(148, 226, 213, 0.12), rgba(49, 50, 68, 0.58));
1648
+ background: linear-gradient(145deg, rgba(148, 226, 213, 0.12), rgba(var(--ctp-surface-rgb), 0.58));
1649
+ }
1650
+ .message.thinking,
1651
+ .message.toolCall,
1652
+ .message.assistantEvent {
1653
+ border-color: rgba(203, 166, 247, 0.26);
1654
+ background: linear-gradient(145deg, rgba(203, 166, 247, 0.10), rgba(var(--ctp-surface-rgb), 0.54));
1655
+ }
1656
+ .message.thinking .message-role,
1657
+ .message.toolCall .message-role,
1658
+ .message.assistantEvent .message-role {
1659
+ color: var(--ctp-mauve);
1660
+ text-shadow: 0 0 0.8rem rgba(203, 166, 247, 0.22);
1661
+ }
1662
+ .message.thinking.streaming.complete .message-role::after {
1663
+ content: " done";
1664
+ color: var(--ctp-green);
1665
+ text-shadow: 0 0 0.7rem var(--glow-teal);
1168
1666
  }
1169
1667
  .message.extension,
1170
1668
  .message.native,
1171
1669
  .message.notice {
1172
1670
  border-color: rgba(203, 166, 247, 0.30);
1173
- background: linear-gradient(145deg, rgba(203, 166, 247, 0.12), rgba(49, 50, 68, 0.58));
1671
+ background: linear-gradient(145deg, rgba(203, 166, 247, 0.12), rgba(var(--ctp-surface-rgb), 0.58));
1174
1672
  }
1175
1673
  .message.extension .message-role,
1176
1674
  .message.native .message-role,
@@ -1182,14 +1680,66 @@ button.footer-meta {
1182
1680
  border-color: rgba(249, 226, 175, 0.46);
1183
1681
  }
1184
1682
  .message.warn .message-role { color: var(--ctp-yellow); }
1185
- .message.toolResult, .message.bashExecution {
1683
+ .message.toolResult, .message.bashExecution, .message.compactionSummary {
1186
1684
  border-color: rgba(249, 226, 175, 0.30);
1187
- background: linear-gradient(145deg, rgba(249, 226, 175, 0.11), rgba(49, 50, 68, 0.58));
1685
+ background: linear-gradient(145deg, rgba(249, 226, 175, 0.11), rgba(var(--ctp-surface-rgb), 0.58));
1188
1686
  padding: 0;
1189
1687
  }
1190
1688
  .message.streaming {
1191
1689
  outline: 1px solid rgba(148, 226, 213, 0.72);
1192
- box-shadow: 0 0 1.7rem var(--glow-teal), 0 0.8rem 2rem rgba(17, 17, 27, 0.4);
1690
+ box-shadow: 0 0 1.7rem var(--glow-teal), 0 0.8rem 2rem rgba(var(--ctp-crust-rgb), 0.4);
1691
+ }
1692
+ .message.run-indicator-message {
1693
+ margin-bottom: 0.5rem;
1694
+ padding: 0.52rem 0.64rem;
1695
+ border-color: rgba(148, 226, 213, 0.46);
1696
+ border-radius: 0.72rem;
1697
+ background:
1698
+ linear-gradient(120deg, rgba(148, 226, 213, 0.13), rgba(137, 180, 250, 0.08), rgba(203, 166, 247, 0.08)),
1699
+ rgba(var(--ctp-mantle-rgb), 0.82);
1700
+ }
1701
+ .message.run-indicator-message.streaming {
1702
+ outline-color: rgba(148, 226, 213, 0.42);
1703
+ box-shadow: 0 0 0.85rem rgba(148, 226, 213, 0.20), 0 0.45rem 1.1rem rgba(var(--ctp-crust-rgb), 0.32);
1704
+ }
1705
+ .message.run-indicator-message::before {
1706
+ width: 2px;
1707
+ background: linear-gradient(180deg, var(--ctp-green), var(--ctp-teal), var(--ctp-blue));
1708
+ animation: run-indicator-bar-pulse 1.35s ease-in-out infinite;
1709
+ }
1710
+ .run-indicator-row {
1711
+ display: flex;
1712
+ align-items: center;
1713
+ gap: 0.42rem;
1714
+ flex-wrap: wrap;
1715
+ font-size: 0.82rem;
1716
+ }
1717
+ .run-indicator-pulse {
1718
+ flex: 0 0 auto;
1719
+ width: 0.5rem;
1720
+ height: 0.5rem;
1721
+ border-radius: 999px;
1722
+ background: var(--ctp-green);
1723
+ box-shadow: 0 0 0 1px rgba(166, 227, 161, 0.30), 0 0 0.55rem rgba(166, 227, 161, 0.45);
1724
+ animation: run-indicator-pulse 1.1s ease-in-out infinite;
1725
+ }
1726
+ .run-indicator-text {
1727
+ color: var(--ctp-teal);
1728
+ font-size: 0.8rem;
1729
+ font-weight: 900;
1730
+ letter-spacing: 0.025em;
1731
+ }
1732
+ .run-indicator-meta {
1733
+ color: rgba(var(--ctp-text-rgb), 0.72);
1734
+ font-size: 0.72rem;
1735
+ }
1736
+ @keyframes run-indicator-pulse {
1737
+ 0%, 100% { transform: scale(0.78); opacity: 0.62; }
1738
+ 50% { transform: scale(1.16); opacity: 1; }
1739
+ }
1740
+ @keyframes run-indicator-bar-pulse {
1741
+ 0%, 100% { opacity: 0.55; box-shadow: 0 0 0.75rem rgba(148, 226, 213, 0.35); }
1742
+ 50% { opacity: 1; box-shadow: 0 0 1.25rem rgba(166, 227, 161, 0.52); }
1193
1743
  }
1194
1744
  .message.error {
1195
1745
  border-color: rgba(243, 139, 168, 0.72);
@@ -1201,7 +1751,7 @@ button.footer-meta {
1201
1751
  justify-content: space-between;
1202
1752
  gap: 1rem;
1203
1753
  margin-bottom: 0.48rem;
1204
- color: rgba(186, 194, 222, 0.78);
1754
+ color: rgba(var(--ctp-subtext-rgb), 0.78);
1205
1755
  font-size: 0.78rem;
1206
1756
  }
1207
1757
  .message-collapse {
@@ -1230,11 +1780,13 @@ button.footer-meta {
1230
1780
  border-top: 1px solid rgba(249, 226, 175, 0.12);
1231
1781
  }
1232
1782
  .message.toolResult:not(.error) .message-collapse:not([open]) > summary.message-header,
1233
- .message.bashExecution .message-collapse:not([open]) > summary.message-header {
1234
- color: rgba(186, 194, 222, 0.72);
1783
+ .message.bashExecution .message-collapse:not([open]) > summary.message-header,
1784
+ .message.compactionSummary .message-collapse:not([open]) > summary.message-header {
1785
+ color: rgba(var(--ctp-subtext-rgb), 0.72);
1235
1786
  }
1236
1787
  .message.toolResult:not(.error) .message-collapse:not([open]) .message-role,
1237
- .message.bashExecution .message-collapse:not([open]) .message-role {
1788
+ .message.bashExecution .message-collapse:not([open]) .message-role,
1789
+ .message.compactionSummary .message-collapse:not([open]) .message-role {
1238
1790
  color: var(--ctp-yellow);
1239
1791
  text-shadow: 0 0 0.8rem rgba(249, 226, 175, 0.28);
1240
1792
  }
@@ -1245,6 +1797,52 @@ button.footer-meta {
1245
1797
  letter-spacing: 0.12em;
1246
1798
  text-shadow: 0 0 1rem var(--glow-teal);
1247
1799
  }
1800
+ .action-feedback-controls {
1801
+ position: absolute;
1802
+ top: calc(100% - 0.18rem);
1803
+ right: 0.55rem;
1804
+ z-index: 8;
1805
+ display: flex;
1806
+ justify-content: flex-end;
1807
+ gap: 0.35rem;
1808
+ opacity: 0;
1809
+ pointer-events: auto;
1810
+ transform: translateY(-0.12rem) scale(0.98);
1811
+ transition: opacity 140ms ease, transform 140ms ease;
1812
+ }
1813
+ .action-feedback-controls:hover,
1814
+ .action-feedback-controls:focus-within {
1815
+ opacity: 1;
1816
+ transform: translateY(0) scale(1);
1817
+ }
1818
+ .action-feedback-controls:not(:hover):not(:focus-within) .action-feedback-button {
1819
+ pointer-events: none;
1820
+ }
1821
+ .action-feedback-button {
1822
+ min-width: 44px;
1823
+ padding: 0.24rem 0.5rem;
1824
+ border-radius: 0.72rem;
1825
+ color: rgba(var(--ctp-text-rgb), 0.86);
1826
+ background: linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.86), rgba(var(--ctp-crust-rgb), 0.92));
1827
+ box-shadow: 0 0.45rem 1rem rgba(var(--ctp-crust-rgb), 0.34);
1828
+ }
1829
+ .action-feedback-button:hover,
1830
+ .action-feedback-button.active {
1831
+ border-color: rgba(148, 226, 213, 0.72);
1832
+ box-shadow: 0 0 0.9rem rgba(148, 226, 213, 0.20), 0 0.45rem 1rem rgba(var(--ctp-crust-rgb), 0.34);
1833
+ }
1834
+ .action-feedback-button.feedback-up.active {
1835
+ color: #11111b;
1836
+ background: linear-gradient(120deg, var(--ctp-green), var(--ctp-teal));
1837
+ }
1838
+ .action-feedback-button.feedback-down.active {
1839
+ color: #11111b;
1840
+ background: linear-gradient(120deg, var(--ctp-red), var(--ctp-peach));
1841
+ }
1842
+ .action-feedback-button.feedback-question.active {
1843
+ color: #11111b;
1844
+ background: linear-gradient(120deg, var(--ctp-yellow), var(--ctp-mauve));
1845
+ }
1248
1846
  .text-block, .code-block {
1249
1847
  margin: 0.35rem 0;
1250
1848
  white-space: pre-wrap;
@@ -1252,7 +1850,7 @@ button.footer-meta {
1252
1850
  }
1253
1851
  .code-block {
1254
1852
  overflow: auto;
1255
- background: rgba(17, 17, 27, 0.82);
1853
+ background: rgba(var(--ctp-crust-rgb), 0.82);
1256
1854
  border: 1px solid rgba(203, 166, 247, 0.20);
1257
1855
  border-radius: 0.75rem;
1258
1856
  padding: 0.72rem;
@@ -1263,7 +1861,7 @@ button.footer-meta {
1263
1861
  details {
1264
1862
  margin: 0.5rem 0;
1265
1863
  padding: 0.6rem;
1266
- background: rgba(17, 17, 27, 0.46);
1864
+ background: rgba(var(--ctp-crust-rgb), 0.46);
1267
1865
  border: 1px solid rgba(249, 226, 175, 0.15);
1268
1866
  border-radius: 0.72rem;
1269
1867
  }
@@ -1272,7 +1870,7 @@ summary { cursor: pointer; color: var(--warning); }
1272
1870
  border-color: rgba(203, 166, 247, 0.30);
1273
1871
  background:
1274
1872
  linear-gradient(120deg, rgba(203, 166, 247, 0.12), rgba(137, 180, 250, 0.08), rgba(148, 226, 213, 0.06)),
1275
- rgba(17, 17, 27, 0.55);
1873
+ rgba(var(--ctp-crust-rgb), 0.55);
1276
1874
  box-shadow: inset 0 0 1.1rem rgba(203, 166, 247, 0.06), 0 0 1rem rgba(203, 166, 247, 0.08);
1277
1875
  }
1278
1876
  .thinking-block > summary {
@@ -1295,7 +1893,7 @@ summary { cursor: pointer; color: var(--warning); }
1295
1893
  color: var(--ctp-green);
1296
1894
  }
1297
1895
  .thinking-text {
1298
- color: rgba(205, 214, 244, 0.82);
1896
+ color: rgba(var(--ctp-text-rgb), 0.82);
1299
1897
  margin-top: 0.55rem;
1300
1898
  font-style: italic;
1301
1899
  white-space: pre-wrap;
@@ -1308,7 +1906,7 @@ summary { cursor: pointer; color: var(--warning); }
1308
1906
  min-height: 0;
1309
1907
  border-top: 1px solid rgba(180, 190, 254, 0.18);
1310
1908
  padding: 0.9rem;
1311
- background: linear-gradient(180deg, rgba(17, 17, 27, 0.48), rgba(17, 17, 27, 0.82));
1909
+ background: linear-gradient(180deg, rgba(var(--ctp-crust-rgb), 0.48), rgba(var(--ctp-crust-rgb), 0.82));
1312
1910
  }
1313
1911
  .composer::before {
1314
1912
  content: "";
@@ -1325,7 +1923,7 @@ summary { cursor: pointer; color: var(--warning); }
1325
1923
  margin-top: 0.5rem;
1326
1924
  max-height: 15rem;
1327
1925
  overflow: auto;
1328
- background: rgba(17, 17, 27, 0.94);
1926
+ background: rgba(var(--ctp-crust-rgb), 0.94);
1329
1927
  border: 1px solid rgba(203, 166, 247, 0.34);
1330
1928
  border-radius: 0.85rem;
1331
1929
  box-shadow: 0 0.75rem 2rem var(--shadow), 0 0 1.4rem rgba(203, 166, 247, 0.18);
@@ -1344,7 +1942,10 @@ summary { cursor: pointer; color: var(--warning); }
1344
1942
  box-shadow: none;
1345
1943
  }
1346
1944
  .command-suggest-item + .command-suggest-item { border-top: 1px solid rgba(180, 190, 254, 0.08); }
1347
- .command-suggest-item:hover,
1945
+ .command-suggest-item:hover {
1946
+ box-shadow: none;
1947
+ transform: none;
1948
+ }
1348
1949
  .command-suggest-item.active {
1349
1950
  background: linear-gradient(90deg, rgba(203, 166, 247, 0.20), rgba(137, 180, 250, 0.10), rgba(148, 226, 213, 0.12));
1350
1951
  box-shadow: inset 3px 0 0 var(--ctp-teal), 0 0 1.2rem rgba(148, 226, 213, 0.10);
@@ -1356,6 +1957,18 @@ summary { cursor: pointer; color: var(--warning); }
1356
1957
  font-weight: 900;
1357
1958
  text-shadow: 0 0 0.8rem rgba(166, 227, 161, 0.34);
1358
1959
  }
1960
+ .path-suggest-name {
1961
+ color: var(--ctp-teal);
1962
+ min-width: 0;
1963
+ overflow: hidden;
1964
+ text-overflow: ellipsis;
1965
+ white-space: nowrap;
1966
+ text-shadow: 0 0 0.8rem rgba(148, 226, 213, 0.28);
1967
+ }
1968
+ .path-suggest-item.directory .path-suggest-name {
1969
+ color: var(--ctp-yellow);
1970
+ text-shadow: 0 0 0.8rem rgba(249, 226, 175, 0.26);
1971
+ }
1359
1972
  .command-suggest-desc {
1360
1973
  color: var(--text);
1361
1974
  overflow: hidden;
@@ -1363,7 +1976,7 @@ summary { cursor: pointer; color: var(--warning); }
1363
1976
  white-space: nowrap;
1364
1977
  }
1365
1978
  .command-suggest-source {
1366
- color: rgba(186, 194, 222, 0.68);
1979
+ color: rgba(var(--ctp-subtext-rgb), 0.68);
1367
1980
  font-size: 0.72rem;
1368
1981
  text-transform: uppercase;
1369
1982
  letter-spacing: 0.08em;
@@ -1385,7 +1998,7 @@ summary { cursor: pointer; color: var(--warning); }
1385
1998
  display: flex;
1386
1999
  align-items: center;
1387
2000
  gap: 0.45rem;
1388
- color: rgba(205, 214, 244, 0.74);
2001
+ color: rgba(var(--ctp-text-rgb), 0.74);
1389
2002
  font-size: 0.88rem;
1390
2003
  text-transform: uppercase;
1391
2004
  letter-spacing: 0.06em;
@@ -1393,16 +2006,31 @@ summary { cursor: pointer; color: var(--warning); }
1393
2006
  .spacer { flex: 1; }
1394
2007
  .composer-new-button,
1395
2008
  .composer-compact-button,
1396
- .composer-git-button {
2009
+ .composer-git-button,
2010
+ .composer-publish-menu {
1397
2011
  margin-right: 0.45rem;
1398
2012
  }
2013
+ .composer-publish-menu {
2014
+ position: relative;
2015
+ z-index: 1;
2016
+ display: inline-flex;
2017
+ align-items: stretch;
2018
+ overflow: visible;
2019
+ isolation: isolate;
2020
+ }
2021
+ .composer-publish-menu:hover,
2022
+ .composer-publish-menu:focus-within,
2023
+ .composer-publish-menu.open {
2024
+ z-index: 100;
2025
+ }
1399
2026
  .composer-compact-button,
1400
- .composer-git-button {
2027
+ .composer-git-button,
2028
+ .composer-publish-button {
1401
2029
  color: var(--ctp-teal);
1402
2030
  border-color: rgba(148, 226, 213, 0.36);
1403
2031
  background:
1404
2032
  linear-gradient(120deg, rgba(148, 226, 213, 0.13), rgba(203, 166, 247, 0.10)),
1405
- linear-gradient(180deg, rgba(49, 50, 68, 0.88), rgba(17, 17, 27, 0.88));
2033
+ linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.88), rgba(var(--ctp-crust-rgb), 0.88));
1406
2034
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.05), 0 0 0.85rem rgba(148, 226, 213, 0.08);
1407
2035
  }
1408
2036
  .composer-git-button {
@@ -1410,10 +2038,19 @@ summary { cursor: pointer; color: var(--warning); }
1410
2038
  border-color: rgba(166, 227, 161, 0.38);
1411
2039
  background:
1412
2040
  linear-gradient(120deg, rgba(166, 227, 161, 0.13), rgba(148, 226, 213, 0.10)),
1413
- linear-gradient(180deg, rgba(49, 50, 68, 0.88), rgba(17, 17, 27, 0.88));
2041
+ linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.88), rgba(var(--ctp-crust-rgb), 0.88));
2042
+ }
2043
+ .composer-publish-button {
2044
+ color: var(--ctp-peach);
2045
+ border-color: rgba(250, 179, 135, 0.38);
2046
+ background:
2047
+ linear-gradient(120deg, rgba(250, 179, 135, 0.13), rgba(245, 194, 231, 0.10)),
2048
+ linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.88), rgba(var(--ctp-crust-rgb), 0.88));
1414
2049
  }
1415
2050
  .composer-compact-button:hover,
1416
- .composer-git-button:hover {
2051
+ .composer-git-button:hover,
2052
+ .composer-publish-button:hover,
2053
+ .composer-publish-button.menu-open {
1417
2054
  color: #11111b;
1418
2055
  background: linear-gradient(120deg, var(--ctp-teal), var(--ctp-blue), var(--ctp-mauve));
1419
2056
  border-color: transparent;
@@ -1421,6 +2058,59 @@ summary { cursor: pointer; color: var(--warning); }
1421
2058
  .composer-git-button:hover {
1422
2059
  background: linear-gradient(120deg, var(--ctp-green), var(--ctp-teal), var(--ctp-blue));
1423
2060
  }
2061
+ .composer-publish-button:hover,
2062
+ .composer-publish-button.menu-open {
2063
+ background: linear-gradient(120deg, var(--ctp-peach), var(--ctp-yellow), var(--ctp-mauve));
2064
+ }
2065
+ .composer-publish-menu-panel {
2066
+ position: absolute;
2067
+ z-index: 100;
2068
+ inset: auto auto 100% 0;
2069
+ display: none;
2070
+ flex-direction: column;
2071
+ align-items: stretch;
2072
+ gap: 0.38rem;
2073
+ width: max-content;
2074
+ min-width: 100%;
2075
+ max-width: min(18rem, calc(100vw - 2rem));
2076
+ max-height: min(60vh, 24rem);
2077
+ padding-bottom: 0.38rem;
2078
+ overflow: auto;
2079
+ scrollbar-width: thin;
2080
+ }
2081
+ .composer-publish-menu:hover .composer-publish-menu-panel,
2082
+ .composer-publish-menu:focus-within .composer-publish-menu-panel,
2083
+ .composer-publish-menu.open .composer-publish-menu-panel {
2084
+ display: flex;
2085
+ }
2086
+ .composer-publish-menu.open .composer-publish-button {
2087
+ border-color: rgba(250, 179, 135, 0.58);
2088
+ }
2089
+ .composer-publish-menu-item {
2090
+ display: inline-flex;
2091
+ align-items: center;
2092
+ justify-content: center;
2093
+ width: min(13rem, calc(100vw - 2rem));
2094
+ min-width: 9rem;
2095
+ max-width: 13rem;
2096
+ margin: 0;
2097
+ color: var(--ctp-peach);
2098
+ border: 1px solid rgba(250, 179, 135, 0.30);
2099
+ border-radius: 0.78rem;
2100
+ background:
2101
+ linear-gradient(120deg, rgba(250, 179, 135, 0.12), rgba(249, 226, 175, 0.08)),
2102
+ var(--ctp-crust);
2103
+ text-align: center;
2104
+ white-space: nowrap;
2105
+ box-shadow: 0 0.75rem 1.6rem rgba(var(--ctp-crust-rgb), 0.30), inset 0 1px 0 rgba(255,255,255,0.045);
2106
+ }
2107
+ .composer-publish-menu-item:hover,
2108
+ .composer-publish-menu-item:focus-visible {
2109
+ color: #11111b;
2110
+ border-color: transparent;
2111
+ background: linear-gradient(120deg, var(--ctp-peach), var(--ctp-yellow));
2112
+ box-shadow: 0 0 1rem rgba(250, 179, 135, 0.20);
2113
+ }
1424
2114
  .composer-row button[data-tooltip]::before,
1425
2115
  .composer-row button[data-tooltip]::after {
1426
2116
  position: absolute;
@@ -1434,7 +2124,7 @@ summary { cursor: pointer; color: var(--warning); }
1434
2124
  bottom: calc(100% + 0.42rem);
1435
2125
  width: 0.72rem;
1436
2126
  height: 0.72rem;
1437
- background: rgba(17, 17, 27, 0.96);
2127
+ background: rgba(var(--ctp-crust-rgb), 0.96);
1438
2128
  border-right: 1px solid rgba(166, 227, 161, 0.28);
1439
2129
  border-bottom: 1px solid rgba(166, 227, 161, 0.28);
1440
2130
  transform: translate(-1.2rem, 0.24rem) rotate(45deg);
@@ -1455,8 +2145,8 @@ summary { cursor: pointer; color: var(--warning); }
1455
2145
  border-radius: 0.86rem;
1456
2146
  background:
1457
2147
  radial-gradient(circle at 8% 0%, rgba(166, 227, 161, 0.13), transparent 12rem),
1458
- linear-gradient(145deg, rgba(17, 17, 27, 0.98), rgba(30, 30, 46, 0.94));
1459
- 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);
2148
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.98), rgba(var(--ctp-base-rgb), 0.94));
2149
+ 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);
1460
2150
  font-size: 0.82rem;
1461
2151
  font-weight: 650;
1462
2152
  text-transform: none;
@@ -1485,21 +2175,38 @@ summary { cursor: pointer; color: var(--warning); }
1485
2175
  margin: 0;
1486
2176
  font-size: 0.9rem;
1487
2177
  }
1488
- .details dt { color: rgba(186, 194, 222, 0.66); }
2178
+ .details dt { color: rgba(var(--ctp-subtext-rgb), 0.66); }
1489
2179
  .details dd { margin: 0; overflow-wrap: anywhere; }
1490
2180
  .queue-box, .commands-box, .event-log {
1491
- background: rgba(17, 17, 27, 0.72);
2181
+ background: rgba(var(--ctp-crust-rgb), 0.72);
1492
2182
  border: 1px solid rgba(180, 190, 254, 0.18);
1493
2183
  border-radius: 0.82rem;
1494
2184
  padding: 0.72rem;
1495
2185
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.035);
1496
2186
  }
1497
2187
  .commands-box {
1498
- max-height: 13rem;
2188
+ max-height: min(32rem, 52vh);
1499
2189
  overflow: auto;
1500
2190
  font-size: 0.86rem;
1501
2191
  }
1502
- .command-item { margin-bottom: 0.5rem; }
2192
+ .command-item {
2193
+ display: block;
2194
+ width: 100%;
2195
+ min-height: auto;
2196
+ margin: 0 0 0.5rem;
2197
+ padding: 0.48rem 0.56rem;
2198
+ text-align: left;
2199
+ background: rgba(var(--ctp-surface-rgb), 0.18);
2200
+ border-color: rgba(180, 190, 254, 0.12);
2201
+ box-shadow: none;
2202
+ }
2203
+ .command-item:last-child { margin-bottom: 0; }
2204
+ .command-item:hover,
2205
+ .command-item:focus-visible {
2206
+ transform: none;
2207
+ background: linear-gradient(90deg, rgba(203, 166, 247, 0.16), rgba(137, 180, 250, 0.08));
2208
+ border-color: rgba(148, 226, 213, 0.45);
2209
+ }
1503
2210
  .command-item code {
1504
2211
  color: var(--ctp-green);
1505
2212
  text-shadow: 0 0 0.7rem rgba(166, 227, 161, 0.25);
@@ -1513,18 +2220,104 @@ summary { cursor: pointer; color: var(--warning); }
1513
2220
  .event { padding: 0.3rem 0; border-bottom: 1px solid rgba(180, 190, 254, 0.06); }
1514
2221
  .event.warn { color: var(--warning); }
1515
2222
  .event.error { color: var(--danger); }
1516
- .muted { color: rgba(186, 194, 222, 0.68); }
2223
+ .muted { color: rgba(var(--ctp-subtext-rgb), 0.68); }
1517
2224
 
1518
2225
  .extension-dialog {
1519
2226
  position: relative;
1520
2227
  width: min(42rem, calc(100vw - 2rem));
1521
2228
  border: 1px solid rgba(203, 166, 247, 0.35);
1522
2229
  border-radius: 1rem;
1523
- background: linear-gradient(145deg, rgba(30, 30, 46, 0.98), rgba(17, 17, 27, 0.98));
2230
+ background: linear-gradient(145deg, rgba(var(--ctp-base-rgb), 0.98), rgba(var(--ctp-crust-rgb), 0.98));
1524
2231
  color: var(--text);
1525
2232
  box-shadow: 0 2rem 5rem var(--shadow), 0 0 2rem var(--glow-mauve);
1526
2233
  }
1527
- .extension-dialog::backdrop { background: rgba(17, 17, 27, 0.78); backdrop-filter: blur(4px); }
2234
+ .extension-dialog::backdrop { background: rgba(var(--ctp-crust-rgb), 0.78); backdrop-filter: blur(4px); }
2235
+ #dialogMessage {
2236
+ white-space: pre-wrap;
2237
+ overflow-wrap: anywhere;
2238
+ line-height: 1.45;
2239
+ }
2240
+ .extension-dialog.guardrail-dialog {
2241
+ border-color: rgba(249, 226, 175, 0.62);
2242
+ box-shadow: 0 2rem 5rem var(--shadow), 0 0 2rem rgba(249, 226, 175, 0.24);
2243
+ }
2244
+ .extension-dialog.guardrail-dialog #dialogTitle {
2245
+ color: var(--ctp-yellow);
2246
+ text-shadow: 0 0 1rem rgba(249, 226, 175, 0.22);
2247
+ }
2248
+ .extension-dialog.guardrail-dialog #dialogMessage {
2249
+ margin: 0.6rem 0 0;
2250
+ padding: 0.78rem 0.85rem;
2251
+ border: 1px solid rgba(249, 226, 175, 0.24);
2252
+ border-radius: 0.78rem;
2253
+ background: rgba(var(--ctp-crust-rgb), 0.62);
2254
+ color: var(--ctp-text);
2255
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
2256
+ font-size: 0.88rem;
2257
+ }
2258
+ .extension-dialog.guardrail-dialog .dialog-options button.guardrail-safe-action {
2259
+ border-color: rgba(166, 227, 161, 0.58);
2260
+ box-shadow: 0 0 1rem rgba(166, 227, 161, 0.18);
2261
+ }
2262
+ .extension-dialog.guardrail-dialog .dialog-options button.guardrail-allow-action {
2263
+ border-color: rgba(249, 226, 175, 0.46);
2264
+ color: var(--ctp-yellow);
2265
+ }
2266
+ .extension-dialog.release-dialog {
2267
+ width: min(64rem, calc(100vw - 1.5rem));
2268
+ max-height: min(82vh, 54rem);
2269
+ }
2270
+ .extension-dialog.release-dialog form {
2271
+ display: grid;
2272
+ grid-template-rows: auto minmax(0, 1fr) auto auto;
2273
+ max-height: calc(min(82vh, 54rem) - 2rem);
2274
+ }
2275
+ .extension-dialog.release-dialog #dialogTitle {
2276
+ color: var(--ctp-green);
2277
+ text-shadow: 0 0 1rem rgba(166, 227, 161, 0.20);
2278
+ }
2279
+ .extension-dialog.release-dialog #dialogMessage {
2280
+ min-height: 14rem;
2281
+ max-height: min(56vh, 34rem);
2282
+ margin: 0.75rem 0 1rem;
2283
+ padding: 0.9rem 1rem;
2284
+ overflow: auto;
2285
+ border: 1px solid rgba(137, 180, 250, 0.25);
2286
+ border-radius: 0.85rem;
2287
+ background: rgba(var(--ctp-crust-rgb), 0.58);
2288
+ color: var(--text);
2289
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
2290
+ font-size: 0.88rem;
2291
+ line-height: 1.48;
2292
+ }
2293
+ .release-dialog-line {
2294
+ display: block;
2295
+ white-space: pre-wrap;
2296
+ overflow-wrap: anywhere;
2297
+ }
2298
+ .release-dialog-heading {
2299
+ margin-top: 0.55rem;
2300
+ color: var(--ctp-blue);
2301
+ font-weight: 800;
2302
+ }
2303
+ .release-dialog-heading:first-child { margin-top: 0; }
2304
+ .release-dialog-success { color: var(--ctp-green); }
2305
+ .release-dialog-warning { color: var(--ctp-yellow); }
2306
+ .release-dialog-danger { color: var(--ctp-red); }
2307
+ .release-dialog-muted { color: rgba(var(--ctp-subtext-rgb), 0.72); }
2308
+ .release-dialog-spacer { min-height: 0.55rem; }
2309
+ .extension-dialog.release-dialog .dialog-options {
2310
+ grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
2311
+ gap: 0.7rem;
2312
+ }
2313
+ .extension-dialog.release-dialog .dialog-options button {
2314
+ text-align: center;
2315
+ font-weight: 800;
2316
+ }
2317
+ .extension-dialog.release-dialog .dialog-options button.release-cancel-action {
2318
+ border-color: rgba(249, 226, 175, 0.38);
2319
+ color: var(--ctp-yellow);
2320
+ }
1528
2321
  .extension-dialog menu {
1529
2322
  display: flex;
1530
2323
  justify-content: flex-end;
@@ -1556,7 +2349,7 @@ summary { cursor: pointer; color: var(--warning); }
1556
2349
  overflow-wrap: anywhere;
1557
2350
  border: 1px solid rgba(166, 227, 161, 0.24);
1558
2351
  border-radius: 0.82rem;
1559
- background: rgba(17, 17, 27, 0.64);
2352
+ background: rgba(var(--ctp-crust-rgb), 0.64);
1560
2353
  color: var(--ctp-green);
1561
2354
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
1562
2355
  font-weight: 850;
@@ -1579,7 +2372,7 @@ summary { cursor: pointer; color: var(--warning); }
1579
2372
  padding: 0.5rem;
1580
2373
  border: 1px solid rgba(249, 226, 175, 0.14);
1581
2374
  border-radius: 0.82rem;
1582
- background: rgba(17, 17, 27, 0.34);
2375
+ background: rgba(var(--ctp-crust-rgb), 0.34);
1583
2376
  }
1584
2377
  .path-picker-fast-pick {
1585
2378
  display: grid;
@@ -1589,7 +2382,7 @@ summary { cursor: pointer; color: var(--warning); }
1589
2382
  width: 100%;
1590
2383
  border: 1px solid rgba(249, 226, 175, 0.22);
1591
2384
  border-radius: 0.72rem;
1592
- background: rgba(49, 50, 68, 0.36);
2385
+ background: rgba(var(--ctp-surface-rgb), 0.36);
1593
2386
  }
1594
2387
  .path-picker-fast-pick-button,
1595
2388
  .path-picker-fast-pick-remove {
@@ -1612,7 +2405,7 @@ summary { cursor: pointer; color: var(--warning); }
1612
2405
  min-width: 1.45rem;
1613
2406
  width: 1.45rem;
1614
2407
  padding: 0;
1615
- color: rgba(186, 194, 222, 0.72);
2408
+ color: rgba(var(--ctp-subtext-rgb), 0.72);
1616
2409
  border-left: 1px solid rgba(249, 226, 175, 0.14);
1617
2410
  font-size: 0.78rem;
1618
2411
  }
@@ -1649,16 +2442,16 @@ summary { cursor: pointer; color: var(--warning); }
1649
2442
  padding: 0.4rem;
1650
2443
  border: 1px solid rgba(180, 190, 254, 0.16);
1651
2444
  border-radius: 0.82rem;
1652
- background: rgba(17, 17, 27, 0.48);
2445
+ background: rgba(var(--ctp-crust-rgb), 0.48);
1653
2446
  }
1654
2447
  .path-picker-directory {
1655
2448
  justify-content: flex-start;
1656
2449
  width: 100%;
1657
2450
  padding: 0.58rem 0.72rem;
1658
- color: rgba(205, 214, 244, 0.94);
2451
+ color: rgba(var(--ctp-text-rgb), 0.94);
1659
2452
  text-align: left;
1660
2453
  border-color: rgba(180, 190, 254, 0.14);
1661
- background: rgba(49, 50, 68, 0.36);
2454
+ background: rgba(var(--ctp-surface-rgb), 0.36);
1662
2455
  }
1663
2456
  .path-picker-directory:hover,
1664
2457
  .path-picker-directory:focus-visible,
@@ -1669,7 +2462,7 @@ summary { cursor: pointer; color: var(--warning); }
1669
2462
  background: linear-gradient(120deg, var(--ctp-green), var(--ctp-teal), var(--ctp-blue));
1670
2463
  }
1671
2464
  .path-picker-directory.hidden-directory {
1672
- color: rgba(186, 194, 222, 0.68);
2465
+ color: rgba(var(--ctp-subtext-rgb), 0.68);
1673
2466
  }
1674
2467
  .path-picker-empty,
1675
2468
  .path-picker-error {
@@ -1680,10 +2473,10 @@ summary { cursor: pointer; color: var(--warning); }
1680
2473
  }
1681
2474
 
1682
2475
  ::-webkit-scrollbar { width: 0.75rem; height: 0.75rem; }
1683
- ::-webkit-scrollbar-track { background: rgba(17, 17, 27, 0.55); }
2476
+ ::-webkit-scrollbar-track { background: rgba(var(--ctp-crust-rgb), 0.55); }
1684
2477
  ::-webkit-scrollbar-thumb {
1685
2478
  background: linear-gradient(180deg, var(--ctp-mauve), var(--ctp-blue), var(--ctp-teal));
1686
- border: 2px solid rgba(17, 17, 27, 0.88);
2479
+ border: 2px solid rgba(var(--ctp-crust-rgb), 0.88);
1687
2480
  border-radius: 999px;
1688
2481
  }
1689
2482
  ::selection { color: #11111b; background: var(--ctp-pink); }
@@ -1758,7 +2551,7 @@ summary { cursor: pointer; color: var(--warning); }
1758
2551
  line-height: 1.1;
1759
2552
  background:
1760
2553
  linear-gradient(120deg, rgba(148, 226, 213, 0.12), rgba(203, 166, 247, 0.10)),
1761
- linear-gradient(180deg, rgba(49, 50, 68, 0.88), rgba(17, 17, 27, 0.88));
2554
+ linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.88), rgba(var(--ctp-crust-rgb), 0.88));
1762
2555
  }
1763
2556
  .side-panel-toggle-button,
1764
2557
  .side-panel-expand-button {
@@ -1788,14 +2581,47 @@ summary { cursor: pointer; color: var(--warning); }
1788
2581
  border-radius: 0.95rem;
1789
2582
  background:
1790
2583
  radial-gradient(circle at 8% 0%, rgba(148, 226, 213, 0.12), transparent 12rem),
1791
- linear-gradient(145deg, rgba(17, 17, 27, 0.98), rgba(30, 30, 46, 0.96));
1792
- box-shadow: 0 1.2rem 2.8rem rgba(17, 17, 27, 0.68), 0 0 1.4rem rgba(148, 226, 213, 0.14), inset 0 1px 0 rgba(255,255,255,0.055);
2584
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.98), rgba(var(--ctp-base-rgb), 0.96));
2585
+ 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);
1793
2586
  }
1794
2587
  body.mobile-tabs-expanded .terminal-tabs { display: flex; }
2588
+ .terminal-tabs:has(.terminal-tab-group:hover),
2589
+ .terminal-tabs:has(.terminal-tab-group:focus-within),
2590
+ .terminal-tabs:has(.terminal-tab-group.menu-open) {
2591
+ overflow: auto;
2592
+ }
1795
2593
  .terminal-tab { min-width: min(11rem, 100%); max-width: 100%; flex: 1 1 9rem; }
2594
+ .terminal-tab-group {
2595
+ flex-wrap: wrap;
2596
+ }
2597
+ .terminal-tab-group:hover,
2598
+ .terminal-tab-group:focus-within,
2599
+ .terminal-tab-group.menu-open {
2600
+ flex-basis: 100%;
2601
+ }
2602
+ .terminal-tab-group-menu {
2603
+ position: static;
2604
+ flex-direction: column;
2605
+ flex-wrap: nowrap;
2606
+ width: 100%;
2607
+ max-width: none;
2608
+ max-height: none;
2609
+ min-width: 0;
2610
+ margin: 0.34rem;
2611
+ padding-top: 0;
2612
+ overflow: visible;
2613
+ }
2614
+ .terminal-tab-group-item,
2615
+ .terminal-tab-group-add {
2616
+ width: 100%;
2617
+ min-width: min(11rem, 100%);
2618
+ max-width: 100%;
2619
+ flex: 0 0 auto;
2620
+ }
1796
2621
  .terminal-tab-button,
1797
2622
  .terminal-tab-close,
1798
- .terminal-new-tab-button { min-height: 44px; }
2623
+ .terminal-new-tab-button,
2624
+ .terminal-tab-group-add { min-height: 44px; }
1799
2625
  .terminal-tab-button { padding: 0.32rem 0.52rem; }
1800
2626
  .terminal-tab-title { font-size: 0.78rem; }
1801
2627
  .terminal-tab-meta { display: none; }
@@ -1815,7 +2641,24 @@ summary { cursor: pointer; color: var(--warning); }
1815
2641
  overflow: auto;
1816
2642
  padding: 0.36rem 0.55rem;
1817
2643
  }
1818
- .widget-area .widget:not(.todo-widget) { display: none; }
2644
+ .widget-area .widget:not(.todo-widget):not(.release-npm-widget) { display: none; }
2645
+ .release-npm-widget {
2646
+ gap: 0.45rem;
2647
+ padding: 0.55rem;
2648
+ }
2649
+ .release-npm-header {
2650
+ grid-template-columns: minmax(0, 1fr);
2651
+ align-items: stretch;
2652
+ }
2653
+ .release-npm-meta,
2654
+ .release-npm-actions { justify-content: flex-start; }
2655
+ .release-npm-terminal {
2656
+ max-height: min(28dvh, 16rem);
2657
+ min-height: 4rem;
2658
+ padding: 0.52rem;
2659
+ font-size: 0.72rem;
2660
+ }
2661
+ .release-npm-pill { max-width: 100%; }
1819
2662
  .todo-widget {
1820
2663
  gap: 0.38rem;
1821
2664
  margin: 0.2rem 0;
@@ -1841,6 +2684,14 @@ summary { cursor: pointer; color: var(--warning); }
1841
2684
  padding: 0.62rem 0.58rem;
1842
2685
  scroll-padding-bottom: calc(12rem + var(--keyboard-inset-bottom, 0px));
1843
2686
  }
2687
+ .sticky-user-prompt-button {
2688
+ grid-template-columns: minmax(0, 1fr) auto;
2689
+ margin: 0 0 0.5rem;
2690
+ padding: 0.48rem 0.58rem;
2691
+ gap: 0.48rem;
2692
+ }
2693
+ .sticky-user-prompt-label { display: none; }
2694
+ .sticky-user-prompt-text { font-size: 0.78rem; }
1844
2695
  .jump-to-latest-button {
1845
2696
  min-height: 44px;
1846
2697
  margin: 0.35rem auto;
@@ -1858,6 +2709,17 @@ summary { cursor: pointer; color: var(--warning); }
1858
2709
  font-size: 0.72rem;
1859
2710
  }
1860
2711
  .message-role { letter-spacing: 0.08em; }
2712
+ .feedback-tray {
2713
+ align-items: stretch;
2714
+ flex-direction: column;
2715
+ margin: 0 0.58rem 0.52rem;
2716
+ }
2717
+ .feedback-tray button { width: 100%; }
2718
+ .action-feedback-controls {
2719
+ top: calc(100% - 0.12rem);
2720
+ right: 0.34rem;
2721
+ gap: 0.28rem;
2722
+ }
1861
2723
  .code-block {
1862
2724
  padding: 0.58rem;
1863
2725
  font-size: 0.78rem;
@@ -1930,8 +2792,8 @@ summary { cursor: pointer; color: var(--warning); }
1930
2792
  position: sticky;
1931
2793
  bottom: 0;
1932
2794
  padding: 0.55rem 0.55rem calc(0.55rem + env(safe-area-inset-bottom));
1933
- background: linear-gradient(180deg, rgba(17, 17, 27, 0.92), rgba(17, 17, 27, 0.98));
1934
- box-shadow: 0 -0.85rem 1.8rem rgba(17, 17, 27, 0.56), inset 0 1px 0 rgba(255,255,255,0.04);
2795
+ background: linear-gradient(180deg, rgba(var(--ctp-crust-rgb), 0.92), rgba(var(--ctp-crust-rgb), 0.98));
2796
+ box-shadow: 0 -0.85rem 1.8rem rgba(var(--ctp-crust-rgb), 0.56), inset 0 1px 0 rgba(255,255,255,0.04);
1935
2797
  }
1936
2798
  #promptInput {
1937
2799
  min-height: calc(1.45em + 1.5rem);
@@ -1955,7 +2817,7 @@ summary { cursor: pointer; color: var(--warning); }
1955
2817
  border-color: rgba(249, 226, 175, 0.34);
1956
2818
  background:
1957
2819
  linear-gradient(120deg, rgba(249, 226, 175, 0.12), rgba(203, 166, 247, 0.10)),
1958
- linear-gradient(180deg, rgba(49, 50, 68, 0.88), rgba(17, 17, 27, 0.88));
2820
+ linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.88), rgba(var(--ctp-crust-rgb), 0.88));
1959
2821
  }
1960
2822
  body.mobile-keyboard-open .terminal-tabs-shell,
1961
2823
  body.mobile-keyboard-open .widget-area,
@@ -2004,8 +2866,8 @@ summary { cursor: pointer; color: var(--warning); }
2004
2866
  border-radius: 0.95rem;
2005
2867
  background:
2006
2868
  radial-gradient(circle at 8% 0%, rgba(249, 226, 175, 0.12), transparent 12rem),
2007
- linear-gradient(145deg, rgba(17, 17, 27, 0.98), rgba(30, 30, 46, 0.96));
2008
- box-shadow: 0 1.2rem 2.8rem rgba(17, 17, 27, 0.68), 0 0 1.4rem rgba(249, 226, 175, 0.14), inset 0 1px 0 rgba(255,255,255,0.055);
2869
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.98), rgba(var(--ctp-base-rgb), 0.96));
2870
+ 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);
2009
2871
  }
2010
2872
  body.composer-actions-open .composer-actions-panel { display: grid; }
2011
2873
  .composer-actions-panel label {
@@ -2038,7 +2900,38 @@ summary { cursor: pointer; color: var(--warning); }
2038
2900
  .composer-actions-panel > #steerButton,
2039
2901
  #newSessionButton,
2040
2902
  #compactButton,
2041
- #gitWorkflowButton { grid-column: span 1; }
2903
+ #gitWorkflowButton,
2904
+ .composer-actions-panel > .composer-publish-menu { grid-column: span 1; }
2905
+ .composer-actions-panel > .composer-publish-menu {
2906
+ width: 100%;
2907
+ margin-right: 0;
2908
+ }
2909
+ .composer-actions-panel > .composer-publish-menu.open {
2910
+ display: grid;
2911
+ grid-column: 1 / -1;
2912
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2913
+ gap: 0.42rem;
2914
+ }
2915
+ .composer-actions-panel > .composer-publish-menu.open .composer-publish-button,
2916
+ .composer-actions-panel > .composer-publish-menu .composer-publish-menu-panel {
2917
+ grid-column: 1 / -1;
2918
+ }
2919
+ .composer-actions-panel > .composer-publish-menu .composer-publish-menu-panel {
2920
+ position: static;
2921
+ flex-direction: column;
2922
+ width: 100%;
2923
+ min-width: 0;
2924
+ max-width: 100%;
2925
+ max-height: none;
2926
+ margin-left: 0;
2927
+ padding-bottom: 0;
2928
+ overflow: visible;
2929
+ }
2930
+ .composer-actions-panel > .composer-publish-menu .composer-publish-menu-item {
2931
+ width: 100%;
2932
+ max-width: 100%;
2933
+ flex: 1 1 0;
2934
+ }
2042
2935
  .command-suggest {
2043
2936
  max-height: 35dvh;
2044
2937
  font-size: 0.86rem;
@@ -2058,7 +2951,7 @@ summary { cursor: pointer; color: var(--warning); }
2058
2951
  padding: 0;
2059
2952
  border: 0;
2060
2953
  border-radius: 0;
2061
- background: rgba(17, 17, 27, 0.62);
2954
+ background: rgba(var(--ctp-crust-rgb), 0.62);
2062
2955
  box-shadow: none;
2063
2956
  backdrop-filter: blur(4px);
2064
2957
  }
@@ -2092,12 +2985,19 @@ summary { cursor: pointer; color: var(--warning); }
2092
2985
  overflow: auto;
2093
2986
  border-radius: 1rem 1rem 0 0;
2094
2987
  }
2988
+ .extension-dialog.release-dialog form {
2989
+ max-height: calc(var(--visual-viewport-height, 100dvh) - 2rem - env(safe-area-inset-top));
2990
+ }
2991
+ .extension-dialog.release-dialog #dialogMessage {
2992
+ min-height: 10rem;
2993
+ max-height: 48dvh;
2994
+ }
2095
2995
  .extension-dialog menu {
2096
2996
  position: sticky;
2097
2997
  bottom: 0;
2098
2998
  flex-wrap: wrap;
2099
2999
  padding-bottom: env(safe-area-inset-bottom);
2100
- background: linear-gradient(180deg, transparent, rgba(17, 17, 27, 0.96) 35%);
3000
+ background: linear-gradient(180deg, transparent, rgba(var(--ctp-crust-rgb), 0.96) 35%);
2101
3001
  }
2102
3002
  .extension-dialog menu button { flex: 1 1 9rem; }
2103
3003
  .composer-row button[data-tooltip]:not(.tooltip-open)::before,