claude-maestro 0.1.19 → 0.1.21
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/out/main/index.js +1119 -274
- package/out/preload/index.js +7 -0
- package/out/renderer/assets/{index-9AHdXE8U.js → index-BDJGybQo.js} +2 -2
- package/out/renderer/assets/{index-CVWvgy2Y.js → index-BDxfkk76.js} +2 -2
- package/out/renderer/assets/{index-C0rsWi9C.js → index-BNIPHMhg.js} +2 -2
- package/out/renderer/assets/{index-JMVyecfQ.js → index-BPiKmKfX.js} +5 -5
- package/out/renderer/assets/{index-C479DZmL.js → index-Bf87-cF0.js} +5 -5
- package/out/renderer/assets/{index-CNNAMsV1.js → index-Bm6BMufC.js} +2 -2
- package/out/renderer/assets/{index-LW-gCnC-.js → index-Bw6wDwNB.js} +2 -2
- package/out/renderer/assets/{index-1Z03T0zz.js → index-C2wfbMG1.js} +2 -2
- package/out/renderer/assets/{index-DI2ly48w.js → index-C3_9l5Zo.js} +2 -2
- package/out/renderer/assets/{index-Dhxn3JIv.js → index-CIAp39oC.js} +2 -2
- package/out/renderer/assets/{index-Dgaj6c_K.css → index-CTyPr1hG.css} +1384 -104
- package/out/renderer/assets/{index-B59uuZRU.js → index-CYo0nynQ.js} +4 -4
- package/out/renderer/assets/{index-D9GPva9-.js → index-CZmL3oq-.js} +5 -5
- package/out/renderer/assets/{index-Bg4ondS2.js → index-CdG7xnB7.js} +2 -2
- package/out/renderer/assets/{index-CoyUYEik.js → index-Cfvyl_8T.js} +3 -3
- package/out/renderer/assets/{index-DJwKAmOm.js → index-Ck4WZgFA.js} +2 -2
- package/out/renderer/assets/{index-jAA5WJm3.js → index-D9lxbtli.js} +5 -5
- package/out/renderer/assets/{index-CZP8wVw-.js → index-DD6EoqPp.js} +2 -2
- package/out/renderer/assets/{index-CWk6CwGd.js → index-DGNONcNh.js} +3 -3
- package/out/renderer/assets/{index-BkOzhsuz.js → index-DroXAl3A.js} +1 -1
- package/out/renderer/assets/{index-CuHjzw7d.js → index-DzjUOrFM.js} +5 -5
- package/out/renderer/assets/{index-CTxGDYbk.js → index-Uh6FxvAQ.js} +6157 -3651
- package/out/renderer/assets/{index-Cq5xQaOf.js → index-iIulTEbp.js} +5 -5
- package/out/renderer/assets/{index-CXeHg_Qc.js → index-kJ0KF5bI.js} +2 -2
- package/out/renderer/index.html +2 -2
- package/package.json +2 -1
|
@@ -1,15 +1,143 @@
|
|
|
1
|
+
/* ===== Design-system scales (additive, theme-independent) =====
|
|
2
|
+
* Spacing / radius / elevation / motion + focus ring + z-index. Colours live in
|
|
3
|
+
* the per-theme :root blocks below; accent tints derive from --accent via
|
|
4
|
+
* color-mix so they track the active theme AND a custom accent automatically. */
|
|
5
|
+
:root {
|
|
6
|
+
/* spacing — 4px base + a 2px step for this dense tool */
|
|
7
|
+
--space-half: 2px;
|
|
8
|
+
--space-xs: 4px;
|
|
9
|
+
--space-sm: 6px;
|
|
10
|
+
--space-md: 8px;
|
|
11
|
+
--space-lg: 12px;
|
|
12
|
+
--space-xl: 16px;
|
|
13
|
+
--space-2xl: 20px;
|
|
14
|
+
--space-3xl: 24px;
|
|
15
|
+
|
|
16
|
+
/* radius */
|
|
17
|
+
--r-sm: 5px;
|
|
18
|
+
--r-md: 8px;
|
|
19
|
+
--r-lg: 12px;
|
|
20
|
+
--r-pill: 999px;
|
|
21
|
+
|
|
22
|
+
/* elevation — tuned for dark surfaces */
|
|
23
|
+
--shadow-1: 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
24
|
+
--shadow-2: 0 4px 12px rgba(0, 0, 0, 0.35);
|
|
25
|
+
--shadow-3: 0 12px 32px rgba(0, 0, 0, 0.45);
|
|
26
|
+
--shadow-4: 0 24px 64px rgba(0, 0, 0, 0.55);
|
|
27
|
+
|
|
28
|
+
/* motion */
|
|
29
|
+
--ease-out: cubic-bezier(0.2, 0.7, 0.3, 1);
|
|
30
|
+
--dur-fast: 0.12s;
|
|
31
|
+
--dur-base: 0.16s;
|
|
32
|
+
|
|
33
|
+
/* hairline divider + accent tints (derived so custom accents work too) */
|
|
34
|
+
--border-soft: rgba(255, 255, 255, 0.06);
|
|
35
|
+
--accent-soft: color-mix(in srgb, var(--accent) 14%, transparent);
|
|
36
|
+
--accent-border: color-mix(in srgb, var(--accent) 45%, transparent);
|
|
37
|
+
|
|
38
|
+
/* keyboard focus ring — bg gap + accent halo */
|
|
39
|
+
--ring: 0 0 0 2px var(--bg), 0 0 0 4px var(--accent);
|
|
40
|
+
|
|
41
|
+
/* z-index scale */
|
|
42
|
+
--z-rail: 50;
|
|
43
|
+
--z-dropdown: 150;
|
|
44
|
+
--z-modal: 200;
|
|
45
|
+
--z-toast: 500;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Theme colour tokens — dark (default) */
|
|
1
49
|
:root {
|
|
2
50
|
--bg: #16171a;
|
|
3
51
|
--panel: #1d1e23;
|
|
4
52
|
--panel-2: #222329;
|
|
53
|
+
--panel-3: #2b2c33;
|
|
5
54
|
--border: #2a2c33;
|
|
6
|
-
--text: #
|
|
55
|
+
--text: #e3e4e8;
|
|
56
|
+
--text-2: #b3b5bd;
|
|
7
57
|
--dim: #8b8d94;
|
|
8
58
|
--accent: #d97757;
|
|
59
|
+
/* readable text on a solid --accent fill (overridden per-theme + by a custom accent) */
|
|
60
|
+
--accent-fg: #ffffff;
|
|
9
61
|
--attention: #e2b93d;
|
|
10
62
|
--working: #58a6ff;
|
|
11
63
|
--error: #e5484d;
|
|
12
64
|
--green: #4cc38a;
|
|
65
|
+
/* gamification palette */
|
|
66
|
+
--xp: #58a6ff;
|
|
67
|
+
--level-up: #ffd54a;
|
|
68
|
+
--badge: #d97757;
|
|
69
|
+
--celebrate-1: #ff6b6b;
|
|
70
|
+
--celebrate-2: #4cc38a;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* Neon theme — cyan/violet on near-black, soft glows. */
|
|
74
|
+
.app.theme-neon {
|
|
75
|
+
--bg: #0c0e14;
|
|
76
|
+
--panel: #12151f;
|
|
77
|
+
--panel-2: #171b28;
|
|
78
|
+
--panel-3: #1e2434;
|
|
79
|
+
--border: #243049;
|
|
80
|
+
--text: #e6f1ff;
|
|
81
|
+
--text-2: #aeb9d4;
|
|
82
|
+
--dim: #7e8ba8;
|
|
83
|
+
--accent: #22d3ee;
|
|
84
|
+
--accent-fg: #06121a;
|
|
85
|
+
--attention: #fbbf24;
|
|
86
|
+
--working: #a78bfa;
|
|
87
|
+
--error: #fb7185;
|
|
88
|
+
--green: #34d399;
|
|
89
|
+
--xp: #22d3ee;
|
|
90
|
+
--level-up: #fde047;
|
|
91
|
+
--badge: #a78bfa;
|
|
92
|
+
--celebrate-1: #22d3ee;
|
|
93
|
+
--celebrate-2: #a78bfa;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* Synthwave theme — magenta/indigo, sunset accents. */
|
|
97
|
+
.app.theme-synthwave {
|
|
98
|
+
--bg: #190f2e;
|
|
99
|
+
--panel: #21163f;
|
|
100
|
+
--panel-2: #2b1d52;
|
|
101
|
+
--panel-3: #33215f;
|
|
102
|
+
--border: #3d2a6b;
|
|
103
|
+
--text: #ffe9f6;
|
|
104
|
+
--text-2: #c7a9e0;
|
|
105
|
+
--dim: #a98fc8;
|
|
106
|
+
--accent: #ff2e88;
|
|
107
|
+
--accent-fg: #ffffff;
|
|
108
|
+
--attention: #ffd23f;
|
|
109
|
+
--working: #00e5ff;
|
|
110
|
+
--error: #ff5d73;
|
|
111
|
+
--green: #4ade80;
|
|
112
|
+
--xp: #ff2e88;
|
|
113
|
+
--level-up: #ffd23f;
|
|
114
|
+
--badge: #00e5ff;
|
|
115
|
+
--celebrate-1: #ff2e88;
|
|
116
|
+
--celebrate-2: #00e5ff;
|
|
117
|
+
}
|
|
118
|
+
.app.theme-synthwave .btn.primary {
|
|
119
|
+
background: linear-gradient(135deg, var(--accent), #b14bff);
|
|
120
|
+
border-color: transparent;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* Reduce-motion: kill all animations/transitions app-wide. */
|
|
124
|
+
.app.reduce-motion *,
|
|
125
|
+
.app.reduce-motion *::before,
|
|
126
|
+
.app.reduce-motion *::after {
|
|
127
|
+
animation: none !important;
|
|
128
|
+
transition: none !important;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* Honour the OS "reduce motion" preference even when the in-app toggle is off. */
|
|
132
|
+
@media (prefers-reduced-motion: reduce) {
|
|
133
|
+
*,
|
|
134
|
+
*::before,
|
|
135
|
+
*::after {
|
|
136
|
+
animation-duration: 0.001ms !important;
|
|
137
|
+
animation-iteration-count: 1 !important;
|
|
138
|
+
transition-duration: 0.001ms !important;
|
|
139
|
+
scroll-behavior: auto !important;
|
|
140
|
+
}
|
|
13
141
|
}
|
|
14
142
|
|
|
15
143
|
* {
|
|
@@ -60,35 +188,97 @@ body {
|
|
|
60
188
|
--bg: rgba(22, 23, 26, 0.82);
|
|
61
189
|
--panel: rgba(29, 30, 35, 0.82);
|
|
62
190
|
--panel-2: rgba(34, 35, 41, 0.82);
|
|
191
|
+
--panel-3: rgba(43, 44, 51, 0.86);
|
|
63
192
|
}
|
|
64
193
|
|
|
65
194
|
.app.loading {
|
|
66
195
|
align-items: center;
|
|
67
196
|
justify-content: center;
|
|
197
|
+
gap: 10px;
|
|
68
198
|
color: var(--dim);
|
|
69
199
|
}
|
|
70
200
|
|
|
201
|
+
/* Indeterminate spinner (reuses the spin keyframe; respects reduce-motion). */
|
|
202
|
+
.spinner {
|
|
203
|
+
display: inline-block;
|
|
204
|
+
border-radius: 50%;
|
|
205
|
+
border: 2px solid var(--border);
|
|
206
|
+
border-top-color: var(--accent);
|
|
207
|
+
animation: spin 0.8s linear infinite;
|
|
208
|
+
}
|
|
209
|
+
|
|
71
210
|
.btn {
|
|
211
|
+
display: inline-flex;
|
|
212
|
+
align-items: center;
|
|
213
|
+
justify-content: center;
|
|
214
|
+
gap: 6px;
|
|
72
215
|
background: var(--panel-2);
|
|
73
216
|
color: var(--text);
|
|
74
217
|
border: 1px solid var(--border);
|
|
75
|
-
border-radius:
|
|
218
|
+
border-radius: var(--r-sm);
|
|
76
219
|
padding: 4px 10px;
|
|
77
220
|
cursor: pointer;
|
|
78
|
-
font-size:
|
|
221
|
+
font-size: var(--text-base);
|
|
222
|
+
font-family: inherit;
|
|
223
|
+
transition:
|
|
224
|
+
background var(--dur-fast) var(--ease-out),
|
|
225
|
+
border-color var(--dur-fast) var(--ease-out),
|
|
226
|
+
color var(--dur-fast) var(--ease-out),
|
|
227
|
+
transform var(--dur-fast) var(--ease-out),
|
|
228
|
+
filter var(--dur-fast) var(--ease-out);
|
|
79
229
|
}
|
|
80
230
|
|
|
81
231
|
.btn:hover {
|
|
82
232
|
border-color: var(--dim);
|
|
83
233
|
}
|
|
84
234
|
|
|
235
|
+
.btn:focus-visible {
|
|
236
|
+
outline: none;
|
|
237
|
+
box-shadow: var(--ring);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.btn:active:not(:disabled) {
|
|
241
|
+
transform: translateY(0.5px);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.btn:disabled {
|
|
245
|
+
opacity: 0.5;
|
|
246
|
+
cursor: default;
|
|
247
|
+
}
|
|
248
|
+
|
|
85
249
|
.btn.primary {
|
|
86
250
|
background: var(--accent);
|
|
87
251
|
border-color: var(--accent);
|
|
252
|
+
color: var(--accent-fg);
|
|
253
|
+
font-weight: 600;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.btn.primary:hover:not(:disabled),
|
|
257
|
+
.btn.danger:hover:not(:disabled) {
|
|
258
|
+
filter: brightness(1.08);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.btn.secondary {
|
|
262
|
+
background: var(--panel);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.btn.outline {
|
|
266
|
+
background: transparent;
|
|
267
|
+
border-color: var(--dim);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.btn.danger {
|
|
271
|
+
background: var(--error);
|
|
272
|
+
border-color: var(--error);
|
|
88
273
|
color: #fff;
|
|
89
274
|
font-weight: 600;
|
|
90
275
|
}
|
|
91
276
|
|
|
277
|
+
.btn.btn-sm {
|
|
278
|
+
padding: 2px 8px;
|
|
279
|
+
font-size: var(--text-sm);
|
|
280
|
+
}
|
|
281
|
+
|
|
92
282
|
.btn.ghost {
|
|
93
283
|
background: transparent;
|
|
94
284
|
border: none;
|
|
@@ -98,12 +288,35 @@ body {
|
|
|
98
288
|
|
|
99
289
|
.btn.ghost:hover {
|
|
100
290
|
color: var(--text);
|
|
291
|
+
background: var(--border-soft);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.btn.ghost:disabled,
|
|
295
|
+
.btn.ghost:disabled:hover {
|
|
296
|
+
background: transparent;
|
|
297
|
+
color: var(--dim);
|
|
101
298
|
}
|
|
102
299
|
|
|
103
300
|
.btn.ghost.on {
|
|
104
301
|
color: var(--accent);
|
|
105
302
|
}
|
|
106
303
|
|
|
304
|
+
/* Consistent keyboard focus ring across interactive surfaces. */
|
|
305
|
+
.tab:focus-visible,
|
|
306
|
+
.session-entry:focus-visible,
|
|
307
|
+
.tab-model:focus-visible,
|
|
308
|
+
.context-menu button:focus-visible,
|
|
309
|
+
.tab-add-item:focus-visible,
|
|
310
|
+
.palette-item:focus-visible,
|
|
311
|
+
.statusbar-attention:focus-visible,
|
|
312
|
+
.statusbar-te:focus-visible,
|
|
313
|
+
.merge-badge:focus-visible,
|
|
314
|
+
.rename-input:focus-visible,
|
|
315
|
+
.palette-input:focus-visible {
|
|
316
|
+
outline: none;
|
|
317
|
+
box-shadow: var(--ring);
|
|
318
|
+
}
|
|
319
|
+
|
|
107
320
|
.row {
|
|
108
321
|
display: flex;
|
|
109
322
|
gap: 8px;
|
|
@@ -112,8 +325,8 @@ body {
|
|
|
112
325
|
/* ---------- sidebar ---------- */
|
|
113
326
|
|
|
114
327
|
.sidebar {
|
|
115
|
-
width:
|
|
116
|
-
min-width:
|
|
328
|
+
width: 248px;
|
|
329
|
+
min-width: 248px;
|
|
117
330
|
background: var(--panel);
|
|
118
331
|
border-right: 1px solid var(--border);
|
|
119
332
|
display: flex;
|
|
@@ -124,11 +337,9 @@ body {
|
|
|
124
337
|
display: flex;
|
|
125
338
|
justify-content: space-between;
|
|
126
339
|
align-items: center;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
gap: 4px 8px;
|
|
131
|
-
padding: 10px 12px 6px;
|
|
340
|
+
flex-wrap: nowrap;
|
|
341
|
+
gap: 8px;
|
|
342
|
+
padding: 10px 10px 6px 12px;
|
|
132
343
|
font-size: 11px;
|
|
133
344
|
font-weight: 600;
|
|
134
345
|
letter-spacing: 0.08em;
|
|
@@ -136,15 +347,26 @@ body {
|
|
|
136
347
|
color: var(--dim);
|
|
137
348
|
}
|
|
138
349
|
|
|
139
|
-
|
|
350
|
+
.sidebar-header > span:first-child {
|
|
351
|
+
flex: 1;
|
|
352
|
+
min-width: 0;
|
|
353
|
+
overflow: hidden;
|
|
354
|
+
text-overflow: ellipsis;
|
|
355
|
+
}
|
|
356
|
+
|
|
140
357
|
.sidebar-header .row {
|
|
141
|
-
flex
|
|
358
|
+
flex: none;
|
|
359
|
+
flex-wrap: nowrap;
|
|
142
360
|
justify-content: flex-end;
|
|
143
361
|
gap: 2px;
|
|
144
362
|
}
|
|
145
363
|
|
|
146
|
-
|
|
147
|
-
|
|
364
|
+
/* Square icon buttons in the header — uniform hit targets with a hover affordance. */
|
|
365
|
+
.sidebar-header .row .btn.ghost.icon-btn {
|
|
366
|
+
width: 24px;
|
|
367
|
+
height: 24px;
|
|
368
|
+
padding: 0;
|
|
369
|
+
border-radius: var(--r-sm);
|
|
148
370
|
}
|
|
149
371
|
|
|
150
372
|
.sidebar-list {
|
|
@@ -159,6 +381,7 @@ body {
|
|
|
159
381
|
padding: 7px 8px 7px 10px;
|
|
160
382
|
border-left: 3px solid transparent;
|
|
161
383
|
cursor: pointer;
|
|
384
|
+
transition: background var(--dur-fast) var(--ease-out);
|
|
162
385
|
}
|
|
163
386
|
|
|
164
387
|
.session-entry:hover {
|
|
@@ -166,16 +389,20 @@ body {
|
|
|
166
389
|
}
|
|
167
390
|
|
|
168
391
|
.session-entry.active {
|
|
169
|
-
background: var(--
|
|
392
|
+
background: var(--accent-soft);
|
|
170
393
|
border-left-color: var(--accent);
|
|
171
394
|
}
|
|
172
395
|
|
|
173
396
|
.session-entry .close {
|
|
174
|
-
|
|
397
|
+
opacity: 0;
|
|
398
|
+
pointer-events: none;
|
|
399
|
+
transition: opacity var(--dur-fast) var(--ease-out);
|
|
175
400
|
}
|
|
176
401
|
|
|
177
|
-
.session-entry:hover .close
|
|
178
|
-
|
|
402
|
+
.session-entry:hover .close,
|
|
403
|
+
.session-entry:focus-within .close {
|
|
404
|
+
opacity: 1;
|
|
405
|
+
pointer-events: auto;
|
|
179
406
|
}
|
|
180
407
|
|
|
181
408
|
.session-meta {
|
|
@@ -205,7 +432,7 @@ body {
|
|
|
205
432
|
.rename-input {
|
|
206
433
|
background: var(--bg);
|
|
207
434
|
border: 1px solid var(--accent);
|
|
208
|
-
border-radius:
|
|
435
|
+
border-radius: var(--r-sm);
|
|
209
436
|
color: var(--text);
|
|
210
437
|
font-size: 13px;
|
|
211
438
|
padding: 1px 4px;
|
|
@@ -214,28 +441,27 @@ body {
|
|
|
214
441
|
|
|
215
442
|
.glyph {
|
|
216
443
|
width: 14px;
|
|
217
|
-
|
|
218
|
-
|
|
444
|
+
height: 14px;
|
|
445
|
+
display: inline-flex;
|
|
446
|
+
align-items: center;
|
|
447
|
+
justify-content: center;
|
|
448
|
+
flex: none;
|
|
219
449
|
}
|
|
220
450
|
|
|
221
451
|
.glyph.status-working {
|
|
222
452
|
color: var(--working);
|
|
223
453
|
animation: spin 1.2s linear infinite;
|
|
224
|
-
display: inline-block;
|
|
225
454
|
}
|
|
226
455
|
|
|
227
456
|
/* Blocked on the user — the only nagging signal: amber, breathing pulse. */
|
|
228
457
|
.glyph.status-needs-attention {
|
|
229
458
|
color: var(--attention);
|
|
230
|
-
display: inline-block;
|
|
231
459
|
animation: pulse 1.4s ease-in-out infinite;
|
|
232
460
|
}
|
|
233
461
|
|
|
234
462
|
/* Finished a turn — your turn now: green check that pops in once, then rests. */
|
|
235
463
|
.glyph.status-done {
|
|
236
464
|
color: var(--green);
|
|
237
|
-
font-weight: 700;
|
|
238
|
-
display: inline-block;
|
|
239
465
|
animation: done-pop 0.5s ease-out;
|
|
240
466
|
}
|
|
241
467
|
|
|
@@ -286,9 +512,10 @@ body {
|
|
|
286
512
|
.watchdog-badge {
|
|
287
513
|
flex: none;
|
|
288
514
|
width: 14px;
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
515
|
+
height: 14px;
|
|
516
|
+
display: inline-flex;
|
|
517
|
+
align-items: center;
|
|
518
|
+
justify-content: center;
|
|
292
519
|
cursor: help;
|
|
293
520
|
animation: pulse 1.5s ease-in-out infinite;
|
|
294
521
|
}
|
|
@@ -353,6 +580,65 @@ body {
|
|
|
353
580
|
color: var(--attention);
|
|
354
581
|
}
|
|
355
582
|
|
|
583
|
+
/* Spend-budget progress bars, shown below the collapsed usage bar when set. */
|
|
584
|
+
.usage-budgets {
|
|
585
|
+
display: flex;
|
|
586
|
+
flex-direction: column;
|
|
587
|
+
gap: 8px;
|
|
588
|
+
padding: 0 12px 10px;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
.usage-limit {
|
|
592
|
+
display: flex;
|
|
593
|
+
flex-direction: column;
|
|
594
|
+
gap: 3px;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
.usage-limit-head {
|
|
598
|
+
display: flex;
|
|
599
|
+
justify-content: space-between;
|
|
600
|
+
gap: 8px;
|
|
601
|
+
font-size: 11px;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
.usage-limit-label {
|
|
605
|
+
color: var(--dim);
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
.usage-limit-value {
|
|
609
|
+
font-variant-numeric: tabular-nums;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
.usage-limit-track {
|
|
613
|
+
height: 5px;
|
|
614
|
+
border-radius: 3px;
|
|
615
|
+
background: var(--panel-2);
|
|
616
|
+
overflow: hidden;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
.usage-limit-fill {
|
|
620
|
+
height: 100%;
|
|
621
|
+
border-radius: 3px;
|
|
622
|
+
transition: width 0.3s ease;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
.usage-limit-fill.neutral {
|
|
626
|
+
background: var(--working);
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
.usage-limit-fill.amber {
|
|
630
|
+
background: var(--attention);
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
.usage-limit-fill.red {
|
|
634
|
+
background: var(--error);
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
.usage-limit-warn {
|
|
638
|
+
font-size: 11px;
|
|
639
|
+
color: var(--attention);
|
|
640
|
+
}
|
|
641
|
+
|
|
356
642
|
.usage-window {
|
|
357
643
|
display: flex;
|
|
358
644
|
flex-direction: column;
|
|
@@ -373,15 +659,16 @@ body {
|
|
|
373
659
|
max-width: calc(100vw - 24px);
|
|
374
660
|
max-height: 70vh;
|
|
375
661
|
overflow-y: auto;
|
|
376
|
-
background: var(--panel-
|
|
662
|
+
background: var(--panel-3);
|
|
377
663
|
border: 1px solid var(--border);
|
|
378
|
-
border-radius:
|
|
664
|
+
border-radius: var(--r-md);
|
|
379
665
|
padding: 12px 14px;
|
|
380
|
-
box-shadow:
|
|
666
|
+
box-shadow: var(--shadow-3);
|
|
381
667
|
display: flex;
|
|
382
668
|
flex-direction: column;
|
|
383
669
|
gap: 8px;
|
|
384
670
|
font-size: 12px;
|
|
671
|
+
animation: popover-in var(--dur-fast) var(--ease-out);
|
|
385
672
|
}
|
|
386
673
|
|
|
387
674
|
.usage-summary {
|
|
@@ -613,6 +900,11 @@ body {
|
|
|
613
900
|
background: rgba(217, 119, 87, 0.16);
|
|
614
901
|
}
|
|
615
902
|
|
|
903
|
+
.tree-row.file.selected {
|
|
904
|
+
background: rgba(217, 119, 87, 0.28);
|
|
905
|
+
box-shadow: inset 2px 0 0 var(--accent);
|
|
906
|
+
}
|
|
907
|
+
|
|
616
908
|
.flash-dot {
|
|
617
909
|
font-size: 10px;
|
|
618
910
|
color: var(--attention);
|
|
@@ -1093,15 +1385,16 @@ body {
|
|
|
1093
1385
|
|
|
1094
1386
|
.context-menu {
|
|
1095
1387
|
position: fixed;
|
|
1096
|
-
z-index:
|
|
1097
|
-
background: var(--panel-
|
|
1388
|
+
z-index: var(--z-dropdown);
|
|
1389
|
+
background: var(--panel-3);
|
|
1098
1390
|
border: 1px solid var(--border);
|
|
1099
|
-
border-radius:
|
|
1391
|
+
border-radius: var(--r-md);
|
|
1100
1392
|
padding: 4px;
|
|
1101
|
-
box-shadow:
|
|
1393
|
+
box-shadow: var(--shadow-2);
|
|
1102
1394
|
display: flex;
|
|
1103
1395
|
flex-direction: column;
|
|
1104
1396
|
min-width: 170px;
|
|
1397
|
+
animation: popover-in var(--dur-fast) var(--ease-out);
|
|
1105
1398
|
}
|
|
1106
1399
|
|
|
1107
1400
|
.context-menu button {
|
|
@@ -1116,8 +1409,8 @@ body {
|
|
|
1116
1409
|
}
|
|
1117
1410
|
|
|
1118
1411
|
.context-menu button:hover {
|
|
1119
|
-
background: var(--accent);
|
|
1120
|
-
color:
|
|
1412
|
+
background: var(--accent-soft);
|
|
1413
|
+
color: var(--text);
|
|
1121
1414
|
}
|
|
1122
1415
|
|
|
1123
1416
|
/* ---------- main area ---------- */
|
|
@@ -1168,29 +1461,51 @@ body {
|
|
|
1168
1461
|
cursor: pointer;
|
|
1169
1462
|
color: var(--dim);
|
|
1170
1463
|
white-space: nowrap;
|
|
1464
|
+
position: relative;
|
|
1465
|
+
transition:
|
|
1466
|
+
background var(--dur-fast) var(--ease-out),
|
|
1467
|
+
color var(--dur-fast) var(--ease-out);
|
|
1171
1468
|
}
|
|
1172
1469
|
|
|
1173
1470
|
.tab:hover {
|
|
1174
1471
|
color: var(--text);
|
|
1175
1472
|
}
|
|
1176
1473
|
|
|
1474
|
+
.tab:hover:not(.active) {
|
|
1475
|
+
background: var(--panel-2);
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1177
1478
|
.tab.active {
|
|
1178
1479
|
background: var(--bg);
|
|
1179
1480
|
color: var(--text);
|
|
1180
1481
|
}
|
|
1181
1482
|
|
|
1483
|
+
.tab.active::after {
|
|
1484
|
+
content: '';
|
|
1485
|
+
position: absolute;
|
|
1486
|
+
left: 0;
|
|
1487
|
+
right: 0;
|
|
1488
|
+
bottom: -1px;
|
|
1489
|
+
height: 2px;
|
|
1490
|
+
background: var(--accent);
|
|
1491
|
+
}
|
|
1492
|
+
|
|
1182
1493
|
.tab-icon {
|
|
1183
1494
|
font-size: 11px;
|
|
1184
1495
|
color: var(--accent);
|
|
1185
1496
|
}
|
|
1186
1497
|
|
|
1187
1498
|
.tab .close {
|
|
1188
|
-
|
|
1499
|
+
opacity: 0;
|
|
1500
|
+
pointer-events: none;
|
|
1189
1501
|
font-size: 10px;
|
|
1502
|
+
transition: opacity var(--dur-fast) var(--ease-out);
|
|
1190
1503
|
}
|
|
1191
1504
|
|
|
1192
|
-
.tab:hover .close
|
|
1193
|
-
|
|
1505
|
+
.tab:hover .close,
|
|
1506
|
+
.tab:focus-within .close {
|
|
1507
|
+
opacity: 1;
|
|
1508
|
+
pointer-events: auto;
|
|
1194
1509
|
}
|
|
1195
1510
|
|
|
1196
1511
|
.tab-kind {
|
|
@@ -1210,19 +1525,19 @@ body {
|
|
|
1210
1525
|
|
|
1211
1526
|
/* Per-claude-tab model switcher */
|
|
1212
1527
|
.tab-model {
|
|
1213
|
-
background: var(--
|
|
1528
|
+
background: var(--panel-2);
|
|
1214
1529
|
border: 1px solid var(--border);
|
|
1215
|
-
border-radius:
|
|
1216
|
-
color: var(--
|
|
1217
|
-
font-size:
|
|
1218
|
-
|
|
1219
|
-
|
|
1530
|
+
border-radius: var(--r-sm);
|
|
1531
|
+
color: var(--text-2);
|
|
1532
|
+
font-size: 11px;
|
|
1533
|
+
height: 22px;
|
|
1534
|
+
padding: 0 6px;
|
|
1220
1535
|
cursor: pointer;
|
|
1221
1536
|
}
|
|
1222
1537
|
|
|
1223
1538
|
.tab-model:hover {
|
|
1224
1539
|
color: var(--text);
|
|
1225
|
-
border-color: var(--accent);
|
|
1540
|
+
border-color: var(--accent-border);
|
|
1226
1541
|
}
|
|
1227
1542
|
|
|
1228
1543
|
/* Add-terminal dropdown */
|
|
@@ -1247,13 +1562,14 @@ body {
|
|
|
1247
1562
|
|
|
1248
1563
|
.tab-add-menu {
|
|
1249
1564
|
position: fixed;
|
|
1250
|
-
z-index:
|
|
1565
|
+
z-index: var(--z-dropdown);
|
|
1251
1566
|
min-width: 150px;
|
|
1252
|
-
background: var(--panel-
|
|
1567
|
+
background: var(--panel-3);
|
|
1253
1568
|
border: 1px solid var(--border);
|
|
1254
|
-
border-radius:
|
|
1569
|
+
border-radius: var(--r-md);
|
|
1255
1570
|
padding: 4px;
|
|
1256
|
-
box-shadow:
|
|
1571
|
+
box-shadow: var(--shadow-2);
|
|
1572
|
+
animation: popover-in var(--dur-fast) var(--ease-out);
|
|
1257
1573
|
}
|
|
1258
1574
|
|
|
1259
1575
|
.tab-add-item {
|
|
@@ -1264,7 +1580,7 @@ body {
|
|
|
1264
1580
|
padding: 6px 10px;
|
|
1265
1581
|
background: none;
|
|
1266
1582
|
border: none;
|
|
1267
|
-
border-radius:
|
|
1583
|
+
border-radius: var(--r-sm);
|
|
1268
1584
|
color: var(--text);
|
|
1269
1585
|
text-align: left;
|
|
1270
1586
|
cursor: pointer;
|
|
@@ -1272,7 +1588,7 @@ body {
|
|
|
1272
1588
|
}
|
|
1273
1589
|
|
|
1274
1590
|
.tab-add-item:hover {
|
|
1275
|
-
background: var(--accent);
|
|
1591
|
+
background: var(--accent-soft);
|
|
1276
1592
|
}
|
|
1277
1593
|
|
|
1278
1594
|
.session-termcount {
|
|
@@ -1319,11 +1635,15 @@ body {
|
|
|
1319
1635
|
/* ---------- worktree (parallel task) sessions ---------- */
|
|
1320
1636
|
|
|
1321
1637
|
.session-entry .fork {
|
|
1322
|
-
|
|
1638
|
+
opacity: 0;
|
|
1639
|
+
pointer-events: none;
|
|
1640
|
+
transition: opacity var(--dur-fast) var(--ease-out);
|
|
1323
1641
|
}
|
|
1324
1642
|
|
|
1325
|
-
.session-entry:hover .fork
|
|
1326
|
-
|
|
1643
|
+
.session-entry:hover .fork,
|
|
1644
|
+
.session-entry:focus-within .fork {
|
|
1645
|
+
opacity: 1;
|
|
1646
|
+
pointer-events: auto;
|
|
1327
1647
|
}
|
|
1328
1648
|
|
|
1329
1649
|
/* Indent worktree tasks under their parent, with a connector tick. */
|
|
@@ -1354,14 +1674,16 @@ body {
|
|
|
1354
1674
|
max-width: 150px;
|
|
1355
1675
|
}
|
|
1356
1676
|
|
|
1357
|
-
.merge-btn
|
|
1677
|
+
.merge-btn,
|
|
1678
|
+
.review-btn {
|
|
1358
1679
|
font-size: 11px;
|
|
1359
1680
|
padding: 1px 7px;
|
|
1360
1681
|
border: 1px solid var(--border);
|
|
1361
1682
|
border-radius: 4px;
|
|
1362
1683
|
}
|
|
1363
1684
|
|
|
1364
|
-
.merge-btn:hover
|
|
1685
|
+
.merge-btn:hover,
|
|
1686
|
+
.review-btn:hover {
|
|
1365
1687
|
border-color: var(--accent);
|
|
1366
1688
|
color: var(--accent);
|
|
1367
1689
|
}
|
|
@@ -1419,14 +1741,18 @@ body {
|
|
|
1419
1741
|
/* ---------- prompt queue ---------- */
|
|
1420
1742
|
|
|
1421
1743
|
.session-entry .queue-btn {
|
|
1422
|
-
|
|
1744
|
+
opacity: 0;
|
|
1745
|
+
pointer-events: none;
|
|
1423
1746
|
position: relative;
|
|
1747
|
+
transition: opacity var(--dur-fast) var(--ease-out);
|
|
1424
1748
|
}
|
|
1425
1749
|
|
|
1426
1750
|
/* With queued prompts, the button (and its count badge) is always visible. */
|
|
1427
1751
|
.session-entry:hover .queue-btn,
|
|
1752
|
+
.session-entry:focus-within .queue-btn,
|
|
1428
1753
|
.session-entry .queue-btn.has-items {
|
|
1429
|
-
|
|
1754
|
+
opacity: 1;
|
|
1755
|
+
pointer-events: auto;
|
|
1430
1756
|
}
|
|
1431
1757
|
|
|
1432
1758
|
.queue-badge {
|
|
@@ -1457,14 +1783,15 @@ body {
|
|
|
1457
1783
|
position: fixed;
|
|
1458
1784
|
width: 340px;
|
|
1459
1785
|
max-width: calc(100vw - 24px);
|
|
1460
|
-
background: var(--panel);
|
|
1786
|
+
background: var(--panel-3);
|
|
1461
1787
|
border: 1px solid var(--border);
|
|
1462
|
-
border-radius:
|
|
1788
|
+
border-radius: var(--r-md);
|
|
1463
1789
|
padding: 10px 12px;
|
|
1464
1790
|
display: flex;
|
|
1465
1791
|
flex-direction: column;
|
|
1466
1792
|
gap: 8px;
|
|
1467
|
-
box-shadow:
|
|
1793
|
+
box-shadow: var(--shadow-3);
|
|
1794
|
+
animation: popover-in var(--dur-fast) var(--ease-out);
|
|
1468
1795
|
}
|
|
1469
1796
|
|
|
1470
1797
|
.queue-popover-title {
|
|
@@ -1565,17 +1892,20 @@ body {
|
|
|
1565
1892
|
.modal-overlay {
|
|
1566
1893
|
position: fixed;
|
|
1567
1894
|
inset: 0;
|
|
1568
|
-
z-index:
|
|
1569
|
-
background: rgba(
|
|
1895
|
+
z-index: var(--z-modal);
|
|
1896
|
+
background: rgba(10, 11, 14, 0.55);
|
|
1897
|
+
backdrop-filter: blur(6px) saturate(120%);
|
|
1898
|
+
-webkit-backdrop-filter: blur(6px) saturate(120%);
|
|
1570
1899
|
display: flex;
|
|
1571
1900
|
align-items: center;
|
|
1572
1901
|
justify-content: center;
|
|
1902
|
+
animation: overlay-in var(--dur-base) var(--ease-out);
|
|
1573
1903
|
}
|
|
1574
1904
|
|
|
1575
1905
|
.modal {
|
|
1576
|
-
background: var(--panel);
|
|
1906
|
+
background: var(--panel-3);
|
|
1577
1907
|
border: 1px solid var(--border);
|
|
1578
|
-
border-radius:
|
|
1908
|
+
border-radius: var(--r-lg);
|
|
1579
1909
|
padding: 18px 20px;
|
|
1580
1910
|
width: 420px;
|
|
1581
1911
|
max-width: 90vw;
|
|
@@ -1584,7 +1914,8 @@ body {
|
|
|
1584
1914
|
display: flex;
|
|
1585
1915
|
flex-direction: column;
|
|
1586
1916
|
gap: 12px;
|
|
1587
|
-
box-shadow:
|
|
1917
|
+
box-shadow: var(--shadow-4);
|
|
1918
|
+
animation: modal-in var(--dur-base) var(--ease-out);
|
|
1588
1919
|
}
|
|
1589
1920
|
|
|
1590
1921
|
.modal-wide {
|
|
@@ -1628,18 +1959,22 @@ body {
|
|
|
1628
1959
|
.field textarea {
|
|
1629
1960
|
background: var(--bg);
|
|
1630
1961
|
border: 1px solid var(--border);
|
|
1631
|
-
border-radius:
|
|
1962
|
+
border-radius: var(--r-sm);
|
|
1632
1963
|
color: var(--text);
|
|
1633
1964
|
font-size: 13px;
|
|
1634
1965
|
padding: 5px 8px;
|
|
1635
1966
|
outline: none;
|
|
1636
1967
|
font-family: inherit;
|
|
1968
|
+
transition:
|
|
1969
|
+
border-color var(--dur-fast) var(--ease-out),
|
|
1970
|
+
box-shadow var(--dur-fast) var(--ease-out);
|
|
1637
1971
|
}
|
|
1638
1972
|
|
|
1639
1973
|
.field input:focus,
|
|
1640
1974
|
.field select:focus,
|
|
1641
1975
|
.field textarea:focus {
|
|
1642
1976
|
border-color: var(--accent);
|
|
1977
|
+
box-shadow: var(--ring);
|
|
1643
1978
|
}
|
|
1644
1979
|
|
|
1645
1980
|
.field-hint {
|
|
@@ -1670,6 +2005,15 @@ body {
|
|
|
1670
2005
|
cursor: pointer;
|
|
1671
2006
|
}
|
|
1672
2007
|
|
|
2008
|
+
.check-row.disabled {
|
|
2009
|
+
opacity: 0.5;
|
|
2010
|
+
cursor: default;
|
|
2011
|
+
}
|
|
2012
|
+
|
|
2013
|
+
.check-row.disabled input[type='checkbox'] {
|
|
2014
|
+
cursor: default;
|
|
2015
|
+
}
|
|
2016
|
+
|
|
1673
2017
|
.check-row > span {
|
|
1674
2018
|
display: flex;
|
|
1675
2019
|
flex-direction: column;
|
|
@@ -1716,6 +2060,63 @@ body {
|
|
|
1716
2060
|
font-size: 12px;
|
|
1717
2061
|
}
|
|
1718
2062
|
|
|
2063
|
+
/* resume picker — list of prior conversations */
|
|
2064
|
+
.conv-list {
|
|
2065
|
+
display: flex;
|
|
2066
|
+
flex-direction: column;
|
|
2067
|
+
gap: 4px;
|
|
2068
|
+
max-height: 260px;
|
|
2069
|
+
overflow-y: auto;
|
|
2070
|
+
}
|
|
2071
|
+
|
|
2072
|
+
.conv-item {
|
|
2073
|
+
display: flex;
|
|
2074
|
+
flex-direction: column;
|
|
2075
|
+
gap: 2px;
|
|
2076
|
+
align-items: flex-start;
|
|
2077
|
+
text-align: left;
|
|
2078
|
+
background: var(--bg);
|
|
2079
|
+
border: 1px solid var(--border);
|
|
2080
|
+
border-radius: 4px;
|
|
2081
|
+
color: var(--text);
|
|
2082
|
+
padding: 6px 9px;
|
|
2083
|
+
cursor: pointer;
|
|
2084
|
+
font: inherit;
|
|
2085
|
+
width: 100%;
|
|
2086
|
+
}
|
|
2087
|
+
|
|
2088
|
+
.conv-item:hover {
|
|
2089
|
+
border-color: var(--accent);
|
|
2090
|
+
}
|
|
2091
|
+
|
|
2092
|
+
.conv-item.sel {
|
|
2093
|
+
border-color: var(--accent);
|
|
2094
|
+
background: var(--panel-2);
|
|
2095
|
+
}
|
|
2096
|
+
|
|
2097
|
+
.conv-preview {
|
|
2098
|
+
font-size: 13px;
|
|
2099
|
+
overflow: hidden;
|
|
2100
|
+
text-overflow: ellipsis;
|
|
2101
|
+
white-space: nowrap;
|
|
2102
|
+
width: 100%;
|
|
2103
|
+
}
|
|
2104
|
+
|
|
2105
|
+
.conv-meta {
|
|
2106
|
+
font-size: 11px;
|
|
2107
|
+
color: var(--dim);
|
|
2108
|
+
}
|
|
2109
|
+
|
|
2110
|
+
.conv-fresh {
|
|
2111
|
+
margin-bottom: 2px;
|
|
2112
|
+
}
|
|
2113
|
+
|
|
2114
|
+
.conv-empty {
|
|
2115
|
+
font-size: 12px;
|
|
2116
|
+
color: var(--dim);
|
|
2117
|
+
padding: 8px 2px;
|
|
2118
|
+
}
|
|
2119
|
+
|
|
1719
2120
|
.bg-preview {
|
|
1720
2121
|
height: 140px;
|
|
1721
2122
|
border: 1px solid var(--border);
|
|
@@ -1744,11 +2145,43 @@ body {
|
|
|
1744
2145
|
.modal-error {
|
|
1745
2146
|
background: rgba(229, 72, 77, 0.15);
|
|
1746
2147
|
color: var(--error);
|
|
1747
|
-
border-radius:
|
|
2148
|
+
border-radius: var(--r-sm);
|
|
1748
2149
|
padding: 6px 10px;
|
|
1749
2150
|
font-size: 12px;
|
|
1750
2151
|
}
|
|
1751
2152
|
|
|
2153
|
+
/* Entrance animations (auto-disabled by .reduce-motion and prefers-reduced-motion). */
|
|
2154
|
+
@keyframes overlay-in {
|
|
2155
|
+
from {
|
|
2156
|
+
opacity: 0;
|
|
2157
|
+
}
|
|
2158
|
+
to {
|
|
2159
|
+
opacity: 1;
|
|
2160
|
+
}
|
|
2161
|
+
}
|
|
2162
|
+
|
|
2163
|
+
@keyframes modal-in {
|
|
2164
|
+
from {
|
|
2165
|
+
opacity: 0;
|
|
2166
|
+
transform: translateY(6px) scale(0.985);
|
|
2167
|
+
}
|
|
2168
|
+
to {
|
|
2169
|
+
opacity: 1;
|
|
2170
|
+
transform: none;
|
|
2171
|
+
}
|
|
2172
|
+
}
|
|
2173
|
+
|
|
2174
|
+
@keyframes popover-in {
|
|
2175
|
+
from {
|
|
2176
|
+
opacity: 0;
|
|
2177
|
+
transform: translateY(4px);
|
|
2178
|
+
}
|
|
2179
|
+
to {
|
|
2180
|
+
opacity: 1;
|
|
2181
|
+
transform: none;
|
|
2182
|
+
}
|
|
2183
|
+
}
|
|
2184
|
+
|
|
1752
2185
|
/* ---------- broadcast-prompt dialog ---------- */
|
|
1753
2186
|
|
|
1754
2187
|
.broadcast-list-header {
|
|
@@ -1811,10 +2244,120 @@ body {
|
|
|
1811
2244
|
padding-left: 8px;
|
|
1812
2245
|
}
|
|
1813
2246
|
|
|
1814
|
-
/* ----------
|
|
2247
|
+
/* ---------- repo status overview dialog ---------- */
|
|
1815
2248
|
|
|
1816
|
-
.
|
|
1817
|
-
|
|
2249
|
+
.repo-overview-header {
|
|
2250
|
+
display: flex;
|
|
2251
|
+
align-items: center;
|
|
2252
|
+
justify-content: space-between;
|
|
2253
|
+
}
|
|
2254
|
+
|
|
2255
|
+
.repo-overview-header-actions {
|
|
2256
|
+
display: flex;
|
|
2257
|
+
align-items: center;
|
|
2258
|
+
gap: 10px;
|
|
2259
|
+
}
|
|
2260
|
+
|
|
2261
|
+
.repo-overview-header-actions .btn {
|
|
2262
|
+
font-size: 11px;
|
|
2263
|
+
padding: 1px 8px;
|
|
2264
|
+
text-transform: none;
|
|
2265
|
+
letter-spacing: normal;
|
|
2266
|
+
}
|
|
2267
|
+
|
|
2268
|
+
.repo-overview-loading {
|
|
2269
|
+
font-size: 11px;
|
|
2270
|
+
color: var(--dim);
|
|
2271
|
+
}
|
|
2272
|
+
|
|
2273
|
+
.repo-overview-list {
|
|
2274
|
+
border: 1px solid var(--border);
|
|
2275
|
+
border-radius: 4px;
|
|
2276
|
+
background: var(--bg);
|
|
2277
|
+
max-height: 60vh;
|
|
2278
|
+
overflow-y: auto;
|
|
2279
|
+
}
|
|
2280
|
+
|
|
2281
|
+
.repo-overview-empty {
|
|
2282
|
+
padding: 12px;
|
|
2283
|
+
font-size: 12px;
|
|
2284
|
+
color: var(--dim);
|
|
2285
|
+
}
|
|
2286
|
+
|
|
2287
|
+
.repo-overview-row {
|
|
2288
|
+
display: flex;
|
|
2289
|
+
align-items: center;
|
|
2290
|
+
gap: 10px;
|
|
2291
|
+
padding: 7px 10px;
|
|
2292
|
+
font-size: 13px;
|
|
2293
|
+
cursor: pointer;
|
|
2294
|
+
border-left: 2px solid transparent;
|
|
2295
|
+
}
|
|
2296
|
+
|
|
2297
|
+
.repo-overview-row:hover {
|
|
2298
|
+
background: var(--panel-2);
|
|
2299
|
+
}
|
|
2300
|
+
|
|
2301
|
+
.repo-overview-row.flagged {
|
|
2302
|
+
border-left-color: var(--attention);
|
|
2303
|
+
}
|
|
2304
|
+
|
|
2305
|
+
.repo-overview-main {
|
|
2306
|
+
display: flex;
|
|
2307
|
+
flex-direction: column;
|
|
2308
|
+
min-width: 0;
|
|
2309
|
+
flex: 1;
|
|
2310
|
+
}
|
|
2311
|
+
|
|
2312
|
+
.repo-overview-name {
|
|
2313
|
+
overflow: hidden;
|
|
2314
|
+
text-overflow: ellipsis;
|
|
2315
|
+
white-space: nowrap;
|
|
2316
|
+
}
|
|
2317
|
+
|
|
2318
|
+
.repo-overview-sub {
|
|
2319
|
+
font-size: 11px;
|
|
2320
|
+
color: var(--dim);
|
|
2321
|
+
font-family: 'Cascadia Mono', Consolas, monospace;
|
|
2322
|
+
overflow: hidden;
|
|
2323
|
+
text-overflow: ellipsis;
|
|
2324
|
+
white-space: nowrap;
|
|
2325
|
+
}
|
|
2326
|
+
|
|
2327
|
+
.repo-overview-chips {
|
|
2328
|
+
padding: 0;
|
|
2329
|
+
flex: 0 0 auto;
|
|
2330
|
+
justify-content: flex-end;
|
|
2331
|
+
}
|
|
2332
|
+
|
|
2333
|
+
.repo-overview-note {
|
|
2334
|
+
font-size: 11px;
|
|
2335
|
+
color: var(--dim);
|
|
2336
|
+
white-space: nowrap;
|
|
2337
|
+
}
|
|
2338
|
+
|
|
2339
|
+
.repo-overview-note.error {
|
|
2340
|
+
color: var(--error);
|
|
2341
|
+
}
|
|
2342
|
+
|
|
2343
|
+
.repo-overview-subhead {
|
|
2344
|
+
font-size: 11px;
|
|
2345
|
+
text-transform: uppercase;
|
|
2346
|
+
letter-spacing: 0.5px;
|
|
2347
|
+
color: var(--dim);
|
|
2348
|
+
padding: 8px 10px 4px;
|
|
2349
|
+
border-top: 1px solid var(--border);
|
|
2350
|
+
margin-top: 4px;
|
|
2351
|
+
}
|
|
2352
|
+
|
|
2353
|
+
.repo-overview-row.non-repo .repo-overview-name {
|
|
2354
|
+
color: var(--dim);
|
|
2355
|
+
}
|
|
2356
|
+
|
|
2357
|
+
/* ---------- global search palette ---------- */
|
|
2358
|
+
|
|
2359
|
+
.gs-overlay {
|
|
2360
|
+
position: fixed;
|
|
1818
2361
|
inset: 0;
|
|
1819
2362
|
z-index: 200;
|
|
1820
2363
|
background: rgba(0, 0, 0, 0.45);
|
|
@@ -1825,15 +2368,16 @@ body {
|
|
|
1825
2368
|
}
|
|
1826
2369
|
|
|
1827
2370
|
.gs-palette {
|
|
1828
|
-
background: var(--panel);
|
|
2371
|
+
background: var(--panel-3);
|
|
1829
2372
|
border: 1px solid var(--border);
|
|
1830
|
-
border-radius:
|
|
2373
|
+
border-radius: var(--r-lg);
|
|
1831
2374
|
width: 640px;
|
|
1832
2375
|
max-width: 90vw;
|
|
1833
|
-
box-shadow:
|
|
2376
|
+
box-shadow: var(--shadow-4);
|
|
1834
2377
|
display: flex;
|
|
1835
2378
|
flex-direction: column;
|
|
1836
2379
|
overflow: hidden;
|
|
2380
|
+
animation: modal-in var(--dur-base) var(--ease-out);
|
|
1837
2381
|
}
|
|
1838
2382
|
|
|
1839
2383
|
.gs-input-row {
|
|
@@ -1949,30 +2493,81 @@ body {
|
|
|
1949
2493
|
color: var(--dim);
|
|
1950
2494
|
}
|
|
1951
2495
|
|
|
2496
|
+
/* ---------- conversation history recall (Ctrl+Shift+H) ---------- */
|
|
2497
|
+
|
|
2498
|
+
.hr-row {
|
|
2499
|
+
padding: 6px 12px;
|
|
2500
|
+
cursor: pointer;
|
|
2501
|
+
border-left: 2px solid transparent;
|
|
2502
|
+
}
|
|
2503
|
+
|
|
2504
|
+
.hr-row.sel {
|
|
2505
|
+
background: var(--panel-2);
|
|
2506
|
+
border-left-color: var(--accent);
|
|
2507
|
+
}
|
|
2508
|
+
|
|
2509
|
+
.hr-head {
|
|
2510
|
+
display: flex;
|
|
2511
|
+
align-items: center;
|
|
2512
|
+
gap: 8px;
|
|
2513
|
+
margin-bottom: 2px;
|
|
2514
|
+
}
|
|
2515
|
+
|
|
2516
|
+
.hr-repo {
|
|
2517
|
+
font-size: 12px;
|
|
2518
|
+
font-weight: 600;
|
|
2519
|
+
color: var(--text);
|
|
2520
|
+
}
|
|
2521
|
+
|
|
2522
|
+
.hr-ago {
|
|
2523
|
+
font-size: 11px;
|
|
2524
|
+
color: var(--dim);
|
|
2525
|
+
}
|
|
2526
|
+
|
|
2527
|
+
.hr-count {
|
|
2528
|
+
margin-left: auto;
|
|
2529
|
+
font-size: 10px;
|
|
2530
|
+
color: var(--dim);
|
|
2531
|
+
border: 1px solid var(--border);
|
|
2532
|
+
border-radius: 3px;
|
|
2533
|
+
padding: 0 4px;
|
|
2534
|
+
white-space: nowrap;
|
|
2535
|
+
}
|
|
2536
|
+
|
|
2537
|
+
.hr-row .gs-snippet {
|
|
2538
|
+
display: block;
|
|
2539
|
+
font-family: 'Cascadia Mono', Consolas, monospace;
|
|
2540
|
+
font-size: 12px;
|
|
2541
|
+
}
|
|
2542
|
+
|
|
1952
2543
|
/* ---------- command palette (Ctrl+K) ---------- */
|
|
1953
2544
|
|
|
1954
2545
|
.palette-overlay {
|
|
1955
2546
|
position: fixed;
|
|
1956
2547
|
inset: 0;
|
|
1957
2548
|
z-index: 300;
|
|
1958
|
-
background: rgba(
|
|
2549
|
+
background: rgba(10, 11, 14, 0.5);
|
|
2550
|
+
backdrop-filter: blur(6px) saturate(120%);
|
|
2551
|
+
-webkit-backdrop-filter: blur(6px) saturate(120%);
|
|
1959
2552
|
display: flex;
|
|
1960
2553
|
align-items: flex-start;
|
|
1961
2554
|
justify-content: center;
|
|
1962
2555
|
padding-top: 12vh;
|
|
2556
|
+
animation: overlay-in var(--dur-base) var(--ease-out);
|
|
1963
2557
|
}
|
|
1964
2558
|
|
|
1965
2559
|
.palette {
|
|
1966
|
-
background: var(--panel);
|
|
2560
|
+
background: var(--panel-3);
|
|
1967
2561
|
border: 1px solid var(--border);
|
|
1968
|
-
border-radius:
|
|
2562
|
+
border-radius: var(--r-lg);
|
|
1969
2563
|
width: 560px;
|
|
1970
2564
|
max-width: 90vw;
|
|
1971
2565
|
max-height: 60vh;
|
|
1972
2566
|
display: flex;
|
|
1973
2567
|
flex-direction: column;
|
|
1974
2568
|
overflow: hidden;
|
|
1975
|
-
box-shadow:
|
|
2569
|
+
box-shadow: var(--shadow-4);
|
|
2570
|
+
animation: modal-in var(--dur-base) var(--ease-out);
|
|
1976
2571
|
}
|
|
1977
2572
|
|
|
1978
2573
|
.palette-input {
|
|
@@ -2015,11 +2610,14 @@ body {
|
|
|
2015
2610
|
text-overflow: ellipsis;
|
|
2016
2611
|
}
|
|
2017
2612
|
|
|
2018
|
-
.palette-item.sel,
|
|
2019
2613
|
.palette-item:hover {
|
|
2020
2614
|
background: var(--panel-2);
|
|
2021
2615
|
}
|
|
2022
2616
|
|
|
2617
|
+
.palette-item.sel {
|
|
2618
|
+
background: var(--accent-soft);
|
|
2619
|
+
}
|
|
2620
|
+
|
|
2023
2621
|
.palette-sub {
|
|
2024
2622
|
color: var(--dim);
|
|
2025
2623
|
font-size: 11px;
|
|
@@ -2191,6 +2789,132 @@ body {
|
|
|
2191
2789
|
min-height: 0;
|
|
2192
2790
|
}
|
|
2193
2791
|
|
|
2792
|
+
/* ---------- handoff notes strip ---------- */
|
|
2793
|
+
|
|
2794
|
+
.handoff-strip {
|
|
2795
|
+
flex: none;
|
|
2796
|
+
border-bottom: 1px solid var(--border);
|
|
2797
|
+
background: var(--panel);
|
|
2798
|
+
}
|
|
2799
|
+
|
|
2800
|
+
.handoff-icon {
|
|
2801
|
+
opacity: 0.8;
|
|
2802
|
+
}
|
|
2803
|
+
|
|
2804
|
+
/* Empty + collapsed: a minimal, unobtrusive "Add note" affordance. */
|
|
2805
|
+
.handoff-strip.collapsed.empty {
|
|
2806
|
+
border-bottom: none;
|
|
2807
|
+
background: transparent;
|
|
2808
|
+
}
|
|
2809
|
+
|
|
2810
|
+
.handoff-add {
|
|
2811
|
+
background: transparent;
|
|
2812
|
+
border: none;
|
|
2813
|
+
color: var(--dim);
|
|
2814
|
+
cursor: pointer;
|
|
2815
|
+
font-size: 12px;
|
|
2816
|
+
padding: 3px 10px;
|
|
2817
|
+
}
|
|
2818
|
+
|
|
2819
|
+
.handoff-add:hover {
|
|
2820
|
+
color: var(--text);
|
|
2821
|
+
}
|
|
2822
|
+
|
|
2823
|
+
/* Non-empty + collapsed: a compact read-only preview, click to edit. */
|
|
2824
|
+
.handoff-strip.collapsed:not(.empty) {
|
|
2825
|
+
display: flex;
|
|
2826
|
+
align-items: flex-start;
|
|
2827
|
+
gap: 8px;
|
|
2828
|
+
padding: 5px 10px;
|
|
2829
|
+
cursor: pointer;
|
|
2830
|
+
}
|
|
2831
|
+
|
|
2832
|
+
.handoff-strip.collapsed:not(.empty):hover {
|
|
2833
|
+
background: var(--panel-2);
|
|
2834
|
+
}
|
|
2835
|
+
|
|
2836
|
+
.handoff-preview {
|
|
2837
|
+
flex: 1;
|
|
2838
|
+
min-width: 0;
|
|
2839
|
+
max-height: 3.4em;
|
|
2840
|
+
overflow: hidden;
|
|
2841
|
+
position: relative;
|
|
2842
|
+
color: var(--dim);
|
|
2843
|
+
font-size: 12px;
|
|
2844
|
+
}
|
|
2845
|
+
|
|
2846
|
+
/* Fade the clipped bottom edge so the preview reads as truncated. */
|
|
2847
|
+
.handoff-preview::after {
|
|
2848
|
+
content: '';
|
|
2849
|
+
position: absolute;
|
|
2850
|
+
inset: auto 0 0 0;
|
|
2851
|
+
height: 1.1em;
|
|
2852
|
+
background: linear-gradient(transparent, var(--panel));
|
|
2853
|
+
pointer-events: none;
|
|
2854
|
+
}
|
|
2855
|
+
|
|
2856
|
+
.handoff-strip.collapsed:not(.empty):hover .handoff-preview::after {
|
|
2857
|
+
background: linear-gradient(transparent, var(--panel-2));
|
|
2858
|
+
}
|
|
2859
|
+
|
|
2860
|
+
.handoff-preview .md {
|
|
2861
|
+
font-size: 12px;
|
|
2862
|
+
}
|
|
2863
|
+
|
|
2864
|
+
.handoff-preview .md > :first-child {
|
|
2865
|
+
margin-top: 0;
|
|
2866
|
+
}
|
|
2867
|
+
|
|
2868
|
+
/* Expanded: an inline editable scratchpad. */
|
|
2869
|
+
.handoff-strip.expanded {
|
|
2870
|
+
display: flex;
|
|
2871
|
+
flex-direction: column;
|
|
2872
|
+
padding: 6px 10px 8px;
|
|
2873
|
+
gap: 6px;
|
|
2874
|
+
}
|
|
2875
|
+
|
|
2876
|
+
.handoff-head {
|
|
2877
|
+
display: flex;
|
|
2878
|
+
align-items: center;
|
|
2879
|
+
gap: 10px;
|
|
2880
|
+
}
|
|
2881
|
+
|
|
2882
|
+
.handoff-label {
|
|
2883
|
+
font-size: 12px;
|
|
2884
|
+
font-weight: 600;
|
|
2885
|
+
color: var(--text);
|
|
2886
|
+
}
|
|
2887
|
+
|
|
2888
|
+
.handoff-hint {
|
|
2889
|
+
flex: 1;
|
|
2890
|
+
font-size: 11px;
|
|
2891
|
+
color: var(--dim);
|
|
2892
|
+
}
|
|
2893
|
+
|
|
2894
|
+
.handoff-collapse {
|
|
2895
|
+
padding: 2px 10px;
|
|
2896
|
+
font-size: 12px;
|
|
2897
|
+
}
|
|
2898
|
+
|
|
2899
|
+
.handoff-input {
|
|
2900
|
+
background: var(--bg);
|
|
2901
|
+
border: 1px solid var(--border);
|
|
2902
|
+
border-radius: 4px;
|
|
2903
|
+
color: var(--text);
|
|
2904
|
+
font-family: inherit;
|
|
2905
|
+
font-size: 13px;
|
|
2906
|
+
line-height: 1.5;
|
|
2907
|
+
min-height: 84px;
|
|
2908
|
+
max-height: 240px;
|
|
2909
|
+
padding: 6px 8px;
|
|
2910
|
+
outline: none;
|
|
2911
|
+
resize: vertical;
|
|
2912
|
+
}
|
|
2913
|
+
|
|
2914
|
+
.handoff-input:focus {
|
|
2915
|
+
border-color: var(--accent);
|
|
2916
|
+
}
|
|
2917
|
+
|
|
2194
2918
|
/* ---------- terminal ---------- */
|
|
2195
2919
|
|
|
2196
2920
|
.term-wrap {
|
|
@@ -2374,6 +3098,87 @@ body {
|
|
|
2374
3098
|
color: var(--dim);
|
|
2375
3099
|
}
|
|
2376
3100
|
|
|
3101
|
+
/* ---------- branch-review diff (changed-file list + combined diff) ---------- */
|
|
3102
|
+
|
|
3103
|
+
.branch-diff-layout {
|
|
3104
|
+
flex: 1;
|
|
3105
|
+
min-height: 0;
|
|
3106
|
+
display: flex;
|
|
3107
|
+
}
|
|
3108
|
+
|
|
3109
|
+
.branch-diff-files {
|
|
3110
|
+
flex: none;
|
|
3111
|
+
width: 240px;
|
|
3112
|
+
overflow-y: auto;
|
|
3113
|
+
border-right: 1px solid var(--border);
|
|
3114
|
+
background: var(--bg);
|
|
3115
|
+
}
|
|
3116
|
+
|
|
3117
|
+
.branch-diff-files-head {
|
|
3118
|
+
padding: 6px 10px;
|
|
3119
|
+
font-size: 11px;
|
|
3120
|
+
color: var(--dim);
|
|
3121
|
+
border-bottom: 1px solid var(--border);
|
|
3122
|
+
position: sticky;
|
|
3123
|
+
top: 0;
|
|
3124
|
+
background: var(--bg);
|
|
3125
|
+
}
|
|
3126
|
+
|
|
3127
|
+
.branch-diff-file {
|
|
3128
|
+
display: flex;
|
|
3129
|
+
align-items: center;
|
|
3130
|
+
gap: 7px;
|
|
3131
|
+
width: 100%;
|
|
3132
|
+
padding: 3px 10px;
|
|
3133
|
+
border: none;
|
|
3134
|
+
background: none;
|
|
3135
|
+
color: var(--text);
|
|
3136
|
+
font-size: 12px;
|
|
3137
|
+
text-align: left;
|
|
3138
|
+
cursor: pointer;
|
|
3139
|
+
}
|
|
3140
|
+
|
|
3141
|
+
.branch-diff-file:hover {
|
|
3142
|
+
background: var(--panel-2);
|
|
3143
|
+
}
|
|
3144
|
+
|
|
3145
|
+
.branch-diff-status {
|
|
3146
|
+
flex: none;
|
|
3147
|
+
width: 14px;
|
|
3148
|
+
text-align: center;
|
|
3149
|
+
font-family: 'Cascadia Mono', Consolas, monospace;
|
|
3150
|
+
font-weight: 700;
|
|
3151
|
+
font-size: 11px;
|
|
3152
|
+
}
|
|
3153
|
+
|
|
3154
|
+
.branch-diff-status.added {
|
|
3155
|
+
color: var(--green);
|
|
3156
|
+
}
|
|
3157
|
+
|
|
3158
|
+
.branch-diff-status.removed {
|
|
3159
|
+
color: var(--error);
|
|
3160
|
+
}
|
|
3161
|
+
|
|
3162
|
+
.branch-diff-status.modified {
|
|
3163
|
+
color: var(--working);
|
|
3164
|
+
}
|
|
3165
|
+
|
|
3166
|
+
.branch-diff-status.renamed {
|
|
3167
|
+
color: var(--accent);
|
|
3168
|
+
}
|
|
3169
|
+
|
|
3170
|
+
.branch-diff-name {
|
|
3171
|
+
overflow: hidden;
|
|
3172
|
+
text-overflow: ellipsis;
|
|
3173
|
+
white-space: nowrap;
|
|
3174
|
+
font-family: 'Cascadia Mono', Consolas, monospace;
|
|
3175
|
+
}
|
|
3176
|
+
|
|
3177
|
+
.branch-diff-layout .viewer-editor {
|
|
3178
|
+
flex: 1;
|
|
3179
|
+
min-width: 0;
|
|
3180
|
+
}
|
|
3181
|
+
|
|
2377
3182
|
.viewer-image {
|
|
2378
3183
|
flex: 1;
|
|
2379
3184
|
display: flex;
|
|
@@ -2536,8 +3341,9 @@ body {
|
|
|
2536
3341
|
.statusbar {
|
|
2537
3342
|
display: flex;
|
|
2538
3343
|
align-items: center;
|
|
2539
|
-
gap:
|
|
2540
|
-
padding:
|
|
3344
|
+
gap: 10px;
|
|
3345
|
+
padding: 5px 12px;
|
|
3346
|
+
min-height: 28px;
|
|
2541
3347
|
border-top: 1px solid var(--border);
|
|
2542
3348
|
background: var(--panel);
|
|
2543
3349
|
font-size: 11px;
|
|
@@ -2545,8 +3351,12 @@ body {
|
|
|
2545
3351
|
}
|
|
2546
3352
|
|
|
2547
3353
|
.status-pill {
|
|
2548
|
-
|
|
2549
|
-
|
|
3354
|
+
flex: none;
|
|
3355
|
+
display: inline-flex;
|
|
3356
|
+
align-items: center;
|
|
3357
|
+
gap: 5px;
|
|
3358
|
+
padding: 1px 8px 1px 6px;
|
|
3359
|
+
border-radius: var(--r-lg);
|
|
2550
3360
|
font-weight: 600;
|
|
2551
3361
|
}
|
|
2552
3362
|
|
|
@@ -2577,15 +3387,21 @@ body {
|
|
|
2577
3387
|
}
|
|
2578
3388
|
|
|
2579
3389
|
.statusbar-folder {
|
|
3390
|
+
flex: 0 1 auto;
|
|
3391
|
+
min-width: 40px;
|
|
2580
3392
|
overflow: hidden;
|
|
2581
3393
|
text-overflow: ellipsis;
|
|
2582
3394
|
white-space: nowrap;
|
|
2583
3395
|
}
|
|
2584
3396
|
|
|
2585
3397
|
.statusbar-attention {
|
|
3398
|
+
flex: none;
|
|
3399
|
+
display: inline-flex;
|
|
3400
|
+
align-items: center;
|
|
3401
|
+
gap: 4px;
|
|
2586
3402
|
border: none;
|
|
2587
3403
|
padding: 1px 8px;
|
|
2588
|
-
border-radius:
|
|
3404
|
+
border-radius: var(--r-lg);
|
|
2589
3405
|
font-size: 11px;
|
|
2590
3406
|
font-weight: 600;
|
|
2591
3407
|
cursor: pointer;
|
|
@@ -2598,6 +3414,7 @@ body {
|
|
|
2598
3414
|
}
|
|
2599
3415
|
|
|
2600
3416
|
.statusbar-age {
|
|
3417
|
+
flex: none;
|
|
2601
3418
|
margin-left: auto;
|
|
2602
3419
|
}
|
|
2603
3420
|
|
|
@@ -2814,6 +3631,23 @@ body {
|
|
|
2814
3631
|
text-decoration: underline;
|
|
2815
3632
|
}
|
|
2816
3633
|
|
|
3634
|
+
.sentinel-finding-actions {
|
|
3635
|
+
display: flex;
|
|
3636
|
+
align-items: center;
|
|
3637
|
+
gap: 6px;
|
|
3638
|
+
margin-top: 6px;
|
|
3639
|
+
}
|
|
3640
|
+
|
|
3641
|
+
.btn.ghost.sentinel-fix-btn {
|
|
3642
|
+
font-size: 10px;
|
|
3643
|
+
padding: 2px 6px;
|
|
3644
|
+
}
|
|
3645
|
+
|
|
3646
|
+
.sentinel-fix-ack {
|
|
3647
|
+
font-size: 10px;
|
|
3648
|
+
color: var(--accent);
|
|
3649
|
+
}
|
|
3650
|
+
|
|
2817
3651
|
/* sentinel dialog */
|
|
2818
3652
|
.sentinel-prompt {
|
|
2819
3653
|
resize: vertical;
|
|
@@ -3143,31 +3977,86 @@ body {
|
|
|
3143
3977
|
|
|
3144
3978
|
/* ---------- app notice (brief auto-dismissing confirmation) ---------- */
|
|
3145
3979
|
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
|
|
3980
|
+
/* ---------- toasts (leveled, stacked bottom-right) ---------- */
|
|
3981
|
+
|
|
3982
|
+
.toasts {
|
|
3983
|
+
position: fixed;
|
|
3984
|
+
right: 16px;
|
|
3985
|
+
bottom: 16px;
|
|
3986
|
+
z-index: var(--z-toast);
|
|
3987
|
+
display: flex;
|
|
3988
|
+
flex-direction: column;
|
|
3989
|
+
gap: 8px;
|
|
3990
|
+
max-width: 360px;
|
|
3991
|
+
pointer-events: none;
|
|
3992
|
+
}
|
|
3993
|
+
|
|
3994
|
+
.toast {
|
|
3995
|
+
display: flex;
|
|
3996
|
+
align-items: flex-start;
|
|
3997
|
+
gap: 10px;
|
|
3998
|
+
background: var(--panel-3);
|
|
3999
|
+
border: 1px solid var(--border);
|
|
4000
|
+
border-left: 3px solid var(--dim);
|
|
4001
|
+
border-radius: var(--r-md);
|
|
4002
|
+
padding: 10px 12px;
|
|
4003
|
+
box-shadow: var(--shadow-3);
|
|
4004
|
+
font-size: 12px;
|
|
4005
|
+
color: var(--text);
|
|
4006
|
+
pointer-events: auto;
|
|
4007
|
+
animation: toast-in var(--dur-base) var(--ease-out);
|
|
4008
|
+
}
|
|
4009
|
+
|
|
4010
|
+
.toast .toast-icon {
|
|
4011
|
+
flex: none;
|
|
4012
|
+
margin-top: 1px;
|
|
4013
|
+
}
|
|
4014
|
+
|
|
4015
|
+
.toast.success {
|
|
4016
|
+
border-left-color: var(--green);
|
|
4017
|
+
}
|
|
4018
|
+
.toast.success .toast-icon {
|
|
4019
|
+
color: var(--green);
|
|
4020
|
+
}
|
|
4021
|
+
.toast.info {
|
|
4022
|
+
border-left-color: var(--working);
|
|
4023
|
+
}
|
|
4024
|
+
.toast.info .toast-icon {
|
|
4025
|
+
color: var(--working);
|
|
4026
|
+
}
|
|
4027
|
+
.toast.warn {
|
|
4028
|
+
border-left-color: var(--attention);
|
|
4029
|
+
}
|
|
4030
|
+
.toast.warn .toast-icon {
|
|
4031
|
+
color: var(--attention);
|
|
4032
|
+
}
|
|
4033
|
+
.toast.error {
|
|
4034
|
+
border-left-color: var(--error);
|
|
4035
|
+
}
|
|
4036
|
+
.toast.error .toast-icon {
|
|
4037
|
+
color: var(--error);
|
|
4038
|
+
}
|
|
4039
|
+
|
|
4040
|
+
.toast-text {
|
|
4041
|
+
flex: 1;
|
|
4042
|
+
line-height: 1.4;
|
|
4043
|
+
padding-top: 1px;
|
|
4044
|
+
}
|
|
4045
|
+
|
|
4046
|
+
.toast .toast-close {
|
|
4047
|
+
flex: none;
|
|
4048
|
+
margin: -2px -4px 0 0;
|
|
4049
|
+
color: var(--dim);
|
|
3161
4050
|
}
|
|
3162
4051
|
|
|
3163
|
-
@keyframes
|
|
4052
|
+
@keyframes toast-in {
|
|
3164
4053
|
from {
|
|
3165
4054
|
opacity: 0;
|
|
3166
|
-
transform:
|
|
4055
|
+
transform: translateY(8px);
|
|
3167
4056
|
}
|
|
3168
4057
|
to {
|
|
3169
4058
|
opacity: 1;
|
|
3170
|
-
transform:
|
|
4059
|
+
transform: none;
|
|
3171
4060
|
}
|
|
3172
4061
|
}
|
|
3173
4062
|
|
|
@@ -4792,10 +5681,23 @@ body {
|
|
|
4792
5681
|
display: flex;
|
|
4793
5682
|
align-items: center;
|
|
4794
5683
|
gap: 10px;
|
|
5684
|
+
flex: 0 1 auto;
|
|
5685
|
+
overflow: hidden;
|
|
4795
5686
|
white-space: nowrap;
|
|
4796
5687
|
}
|
|
4797
5688
|
|
|
5689
|
+
.statusbar-tokens > span {
|
|
5690
|
+
display: inline-flex;
|
|
5691
|
+
align-items: center;
|
|
5692
|
+
gap: 4px;
|
|
5693
|
+
overflow: hidden;
|
|
5694
|
+
text-overflow: ellipsis;
|
|
5695
|
+
}
|
|
5696
|
+
|
|
4798
5697
|
.statusbar-te {
|
|
5698
|
+
display: inline-flex;
|
|
5699
|
+
align-items: center;
|
|
5700
|
+
gap: 4px;
|
|
4799
5701
|
background: none;
|
|
4800
5702
|
border: none;
|
|
4801
5703
|
font: inherit;
|
|
@@ -4807,6 +5709,384 @@ body {
|
|
|
4807
5709
|
.statusbar-te.pending {
|
|
4808
5710
|
color: var(--attention);
|
|
4809
5711
|
}
|
|
5712
|
+
|
|
5713
|
+
/* ===================== gamification ===================== */
|
|
5714
|
+
|
|
5715
|
+
/* --- XP progress bar primitive (also used in the Arcade) --- */
|
|
5716
|
+
.xp-bar {
|
|
5717
|
+
flex: 1;
|
|
5718
|
+
height: 7px;
|
|
5719
|
+
border-radius: 4px;
|
|
5720
|
+
background: var(--border);
|
|
5721
|
+
overflow: hidden;
|
|
5722
|
+
}
|
|
5723
|
+
.xp-bar.lg {
|
|
5724
|
+
height: 10px;
|
|
5725
|
+
}
|
|
5726
|
+
.xp-bar-fill {
|
|
5727
|
+
height: 100%;
|
|
5728
|
+
border-radius: 4px;
|
|
5729
|
+
background: linear-gradient(90deg, var(--xp), var(--accent));
|
|
5730
|
+
transition: width 0.5s ease;
|
|
5731
|
+
}
|
|
5732
|
+
|
|
5733
|
+
/* --- sidebar XP HUD --- */
|
|
5734
|
+
.xp-hud {
|
|
5735
|
+
display: flex;
|
|
5736
|
+
align-items: center;
|
|
5737
|
+
gap: 8px;
|
|
5738
|
+
padding: 6px 10px;
|
|
5739
|
+
border-bottom: 1px solid var(--border);
|
|
5740
|
+
cursor: pointer;
|
|
5741
|
+
font-size: 11px;
|
|
5742
|
+
}
|
|
5743
|
+
.xp-hud:hover {
|
|
5744
|
+
background: var(--panel-2);
|
|
5745
|
+
}
|
|
5746
|
+
.xp-level {
|
|
5747
|
+
font-weight: 700;
|
|
5748
|
+
color: var(--level-up);
|
|
5749
|
+
white-space: nowrap;
|
|
5750
|
+
}
|
|
5751
|
+
.xp-streak {
|
|
5752
|
+
color: var(--attention);
|
|
5753
|
+
font-weight: 600;
|
|
5754
|
+
white-space: nowrap;
|
|
5755
|
+
}
|
|
5756
|
+
|
|
5757
|
+
/* --- celebration toast + confetti --- */
|
|
5758
|
+
.celebration {
|
|
5759
|
+
position: fixed;
|
|
5760
|
+
inset: 0;
|
|
5761
|
+
z-index: 600;
|
|
5762
|
+
pointer-events: none;
|
|
5763
|
+
overflow: hidden;
|
|
5764
|
+
}
|
|
5765
|
+
.celebration-card {
|
|
5766
|
+
position: absolute;
|
|
5767
|
+
left: 50%;
|
|
5768
|
+
bottom: 64px;
|
|
5769
|
+
transform: translateX(-50%);
|
|
5770
|
+
display: flex;
|
|
5771
|
+
align-items: center;
|
|
5772
|
+
gap: 12px;
|
|
5773
|
+
padding: 12px 18px;
|
|
5774
|
+
border-radius: 12px;
|
|
5775
|
+
background: var(--panel);
|
|
5776
|
+
border: 1px solid var(--accent);
|
|
5777
|
+
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.55);
|
|
5778
|
+
animation: celebrate-pop 0.4s cubic-bezier(0.2, 1.4, 0.4, 1);
|
|
5779
|
+
}
|
|
5780
|
+
.celebration.kind-level-up .celebration-card {
|
|
5781
|
+
border-color: var(--level-up);
|
|
5782
|
+
box-shadow: 0 0 32px rgba(255, 213, 74, 0.35), 0 12px 40px rgba(0, 0, 0, 0.55);
|
|
5783
|
+
animation: celebrate-pop 0.4s cubic-bezier(0.2, 1.4, 0.4, 1), level-up-glow 1.4s ease-in-out 0.4s 2;
|
|
5784
|
+
}
|
|
5785
|
+
.celebration-icon {
|
|
5786
|
+
font-size: 26px;
|
|
5787
|
+
line-height: 1;
|
|
5788
|
+
}
|
|
5789
|
+
.celebration-title {
|
|
5790
|
+
font-weight: 700;
|
|
5791
|
+
font-size: 14px;
|
|
5792
|
+
}
|
|
5793
|
+
.celebration-sub {
|
|
5794
|
+
font-size: 12px;
|
|
5795
|
+
color: var(--dim);
|
|
5796
|
+
}
|
|
5797
|
+
.celebration-xp {
|
|
5798
|
+
margin-left: 6px;
|
|
5799
|
+
font-weight: 700;
|
|
5800
|
+
color: var(--level-up);
|
|
5801
|
+
}
|
|
5802
|
+
|
|
5803
|
+
.confetti {
|
|
5804
|
+
position: absolute;
|
|
5805
|
+
inset: 0;
|
|
5806
|
+
}
|
|
5807
|
+
.confetti-bit {
|
|
5808
|
+
position: absolute;
|
|
5809
|
+
top: -12px;
|
|
5810
|
+
width: 8px;
|
|
5811
|
+
height: 12px;
|
|
5812
|
+
border-radius: 1px;
|
|
5813
|
+
background: var(--celebrate-1);
|
|
5814
|
+
animation: confetti-fall 1.7s ease-in forwards;
|
|
5815
|
+
}
|
|
5816
|
+
.confetti-bit.hue-0 { background: var(--celebrate-1); }
|
|
5817
|
+
.confetti-bit.hue-1 { background: var(--celebrate-2); }
|
|
5818
|
+
.confetti-bit.hue-2 { background: var(--level-up); }
|
|
5819
|
+
.confetti-bit.hue-3 { background: var(--accent); }
|
|
5820
|
+
.confetti-bit.hue-4 { background: var(--working); }
|
|
5821
|
+
.confetti-bit.hue-5 { background: var(--green); }
|
|
5822
|
+
|
|
5823
|
+
@keyframes confetti-fall {
|
|
5824
|
+
0% {
|
|
5825
|
+
transform: translate(0, 0) rotate(0deg);
|
|
5826
|
+
opacity: 1;
|
|
5827
|
+
}
|
|
5828
|
+
100% {
|
|
5829
|
+
transform: translate(calc(var(--dx) * 140px), calc(var(--dy) * 460px))
|
|
5830
|
+
rotate(calc(var(--rot) * 3));
|
|
5831
|
+
opacity: 0;
|
|
5832
|
+
}
|
|
5833
|
+
}
|
|
5834
|
+
@keyframes celebrate-pop {
|
|
5835
|
+
0% {
|
|
5836
|
+
transform: translateX(-50%) scale(0.7);
|
|
5837
|
+
opacity: 0;
|
|
5838
|
+
}
|
|
5839
|
+
100% {
|
|
5840
|
+
transform: translateX(-50%) scale(1);
|
|
5841
|
+
opacity: 1;
|
|
5842
|
+
}
|
|
5843
|
+
}
|
|
5844
|
+
@keyframes level-up-glow {
|
|
5845
|
+
0%, 100% {
|
|
5846
|
+
box-shadow: 0 0 18px rgba(255, 213, 74, 0.3), 0 12px 40px rgba(0, 0, 0, 0.55);
|
|
5847
|
+
}
|
|
5848
|
+
50% {
|
|
5849
|
+
box-shadow: 0 0 38px rgba(255, 213, 74, 0.6), 0 12px 40px rgba(0, 0, 0, 0.55);
|
|
5850
|
+
}
|
|
5851
|
+
}
|
|
5852
|
+
@keyframes badge-pop {
|
|
5853
|
+
0% { transform: scale(0.6); opacity: 0; }
|
|
5854
|
+
60% { transform: scale(1.15); }
|
|
5855
|
+
100% { transform: scale(1); opacity: 1; }
|
|
5856
|
+
}
|
|
5857
|
+
|
|
5858
|
+
/* --- Arcade pane --- */
|
|
5859
|
+
.arcade-pane {
|
|
5860
|
+
flex: 1;
|
|
5861
|
+
min-height: 0;
|
|
5862
|
+
overflow-y: auto;
|
|
5863
|
+
padding: 18px 22px;
|
|
5864
|
+
}
|
|
5865
|
+
.arcade-empty {
|
|
5866
|
+
color: var(--dim);
|
|
5867
|
+
padding: 40px;
|
|
5868
|
+
text-align: center;
|
|
5869
|
+
}
|
|
5870
|
+
.arcade-header {
|
|
5871
|
+
display: flex;
|
|
5872
|
+
align-items: baseline;
|
|
5873
|
+
gap: 12px;
|
|
5874
|
+
margin-bottom: 16px;
|
|
5875
|
+
}
|
|
5876
|
+
.arcade-header h2 {
|
|
5877
|
+
margin: 0;
|
|
5878
|
+
font-size: 20px;
|
|
5879
|
+
}
|
|
5880
|
+
.arcade-sub,
|
|
5881
|
+
.arcade-dim {
|
|
5882
|
+
color: var(--dim);
|
|
5883
|
+
font-size: 12px;
|
|
5884
|
+
}
|
|
5885
|
+
.arcade-dim.small {
|
|
5886
|
+
font-size: 11px;
|
|
5887
|
+
}
|
|
5888
|
+
.arcade-grid {
|
|
5889
|
+
display: grid;
|
|
5890
|
+
grid-template-columns: 2fr 1fr;
|
|
5891
|
+
gap: 14px;
|
|
5892
|
+
margin-bottom: 14px;
|
|
5893
|
+
}
|
|
5894
|
+
.arcade-card {
|
|
5895
|
+
background: var(--panel);
|
|
5896
|
+
border: 1px solid var(--border);
|
|
5897
|
+
border-radius: 12px;
|
|
5898
|
+
padding: 16px;
|
|
5899
|
+
margin-bottom: 14px;
|
|
5900
|
+
}
|
|
5901
|
+
.arcade-card-head {
|
|
5902
|
+
display: flex;
|
|
5903
|
+
align-items: baseline;
|
|
5904
|
+
justify-content: space-between;
|
|
5905
|
+
margin-bottom: 12px;
|
|
5906
|
+
}
|
|
5907
|
+
.arcade-card-head h3,
|
|
5908
|
+
.arcade-section h3 {
|
|
5909
|
+
margin: 0;
|
|
5910
|
+
font-size: 14px;
|
|
5911
|
+
}
|
|
5912
|
+
.arcade-hero {
|
|
5913
|
+
display: flex;
|
|
5914
|
+
align-items: center;
|
|
5915
|
+
gap: 18px;
|
|
5916
|
+
margin-bottom: 0;
|
|
5917
|
+
}
|
|
5918
|
+
.arcade-level-badge {
|
|
5919
|
+
flex: none;
|
|
5920
|
+
width: 64px;
|
|
5921
|
+
height: 64px;
|
|
5922
|
+
border-radius: 50%;
|
|
5923
|
+
display: flex;
|
|
5924
|
+
align-items: center;
|
|
5925
|
+
justify-content: center;
|
|
5926
|
+
font-weight: 800;
|
|
5927
|
+
font-size: 16px;
|
|
5928
|
+
color: #1a1208;
|
|
5929
|
+
background: radial-gradient(circle at 35% 30%, #ffe9a8, var(--level-up));
|
|
5930
|
+
box-shadow: 0 0 22px rgba(255, 213, 74, 0.35);
|
|
5931
|
+
}
|
|
5932
|
+
.arcade-hero-main {
|
|
5933
|
+
flex: 1;
|
|
5934
|
+
display: flex;
|
|
5935
|
+
flex-direction: column;
|
|
5936
|
+
gap: 6px;
|
|
5937
|
+
}
|
|
5938
|
+
.arcade-xp-row {
|
|
5939
|
+
display: flex;
|
|
5940
|
+
justify-content: space-between;
|
|
5941
|
+
font-size: 13px;
|
|
5942
|
+
font-weight: 600;
|
|
5943
|
+
}
|
|
5944
|
+
.arcade-streak {
|
|
5945
|
+
display: flex;
|
|
5946
|
+
align-items: center;
|
|
5947
|
+
gap: 14px;
|
|
5948
|
+
margin-bottom: 0;
|
|
5949
|
+
}
|
|
5950
|
+
.arcade-streak-flame {
|
|
5951
|
+
font-size: 38px;
|
|
5952
|
+
}
|
|
5953
|
+
.arcade-streak-num {
|
|
5954
|
+
font-size: 26px;
|
|
5955
|
+
font-weight: 800;
|
|
5956
|
+
color: var(--attention);
|
|
5957
|
+
}
|
|
5958
|
+
.arcade-quests {
|
|
5959
|
+
display: flex;
|
|
5960
|
+
flex-direction: column;
|
|
5961
|
+
gap: 12px;
|
|
5962
|
+
}
|
|
5963
|
+
.quest-row .quest-top {
|
|
5964
|
+
display: flex;
|
|
5965
|
+
justify-content: space-between;
|
|
5966
|
+
margin-bottom: 5px;
|
|
5967
|
+
font-size: 13px;
|
|
5968
|
+
}
|
|
5969
|
+
.quest-row.done .quest-title {
|
|
5970
|
+
color: var(--dim);
|
|
5971
|
+
text-decoration: line-through;
|
|
5972
|
+
}
|
|
5973
|
+
.quest-reward {
|
|
5974
|
+
font-weight: 700;
|
|
5975
|
+
color: var(--level-up);
|
|
5976
|
+
}
|
|
5977
|
+
.quest-row.done .quest-reward {
|
|
5978
|
+
color: var(--green);
|
|
5979
|
+
}
|
|
5980
|
+
.arcade-ach-group {
|
|
5981
|
+
margin-bottom: 14px;
|
|
5982
|
+
}
|
|
5983
|
+
.arcade-ach-cat {
|
|
5984
|
+
font-size: 11px;
|
|
5985
|
+
text-transform: uppercase;
|
|
5986
|
+
letter-spacing: 0.05em;
|
|
5987
|
+
color: var(--dim);
|
|
5988
|
+
margin-bottom: 8px;
|
|
5989
|
+
}
|
|
5990
|
+
.arcade-ach-grid {
|
|
5991
|
+
display: grid;
|
|
5992
|
+
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
|
|
5993
|
+
gap: 8px;
|
|
5994
|
+
}
|
|
5995
|
+
.achievement {
|
|
5996
|
+
display: flex;
|
|
5997
|
+
align-items: center;
|
|
5998
|
+
gap: 8px;
|
|
5999
|
+
padding: 8px 10px;
|
|
6000
|
+
border-radius: 8px;
|
|
6001
|
+
border: 1px solid var(--border);
|
|
6002
|
+
background: var(--panel-2);
|
|
6003
|
+
font-size: 12px;
|
|
6004
|
+
}
|
|
6005
|
+
.achievement.unlocked {
|
|
6006
|
+
border-color: var(--badge);
|
|
6007
|
+
animation: badge-pop 0.4s ease-out;
|
|
6008
|
+
}
|
|
6009
|
+
.achievement.locked {
|
|
6010
|
+
opacity: 0.45;
|
|
6011
|
+
filter: grayscale(0.6);
|
|
6012
|
+
}
|
|
6013
|
+
.achievement-icon {
|
|
6014
|
+
font-size: 17px;
|
|
6015
|
+
}
|
|
6016
|
+
.achievement-title {
|
|
6017
|
+
overflow: hidden;
|
|
6018
|
+
text-overflow: ellipsis;
|
|
6019
|
+
white-space: nowrap;
|
|
6020
|
+
}
|
|
6021
|
+
.arcade-stats {
|
|
6022
|
+
display: grid;
|
|
6023
|
+
grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
|
|
6024
|
+
gap: 12px;
|
|
6025
|
+
}
|
|
6026
|
+
.arcade-stat {
|
|
6027
|
+
background: var(--panel-2);
|
|
6028
|
+
border: 1px solid var(--border);
|
|
6029
|
+
border-radius: 8px;
|
|
6030
|
+
padding: 12px;
|
|
6031
|
+
text-align: center;
|
|
6032
|
+
}
|
|
6033
|
+
.arcade-stat-num {
|
|
6034
|
+
font-size: 22px;
|
|
6035
|
+
font-weight: 800;
|
|
6036
|
+
color: var(--accent);
|
|
6037
|
+
}
|
|
6038
|
+
|
|
6039
|
+
/* --- Settings → Appearance tab --- */
|
|
6040
|
+
.appearance-tab {
|
|
6041
|
+
display: flex;
|
|
6042
|
+
flex-direction: column;
|
|
6043
|
+
gap: 22px;
|
|
6044
|
+
padding: 16px 4px;
|
|
6045
|
+
}
|
|
6046
|
+
.appearance-section h3 {
|
|
6047
|
+
margin: 0 0 10px;
|
|
6048
|
+
font-size: 13px;
|
|
6049
|
+
}
|
|
6050
|
+
.appearance-themes {
|
|
6051
|
+
display: flex;
|
|
6052
|
+
gap: 10px;
|
|
6053
|
+
}
|
|
6054
|
+
.theme-swatch {
|
|
6055
|
+
flex: 1;
|
|
6056
|
+
height: 56px;
|
|
6057
|
+
border-radius: 10px;
|
|
6058
|
+
border: 2px solid var(--border);
|
|
6059
|
+
cursor: pointer;
|
|
6060
|
+
display: flex;
|
|
6061
|
+
align-items: flex-end;
|
|
6062
|
+
padding: 8px;
|
|
6063
|
+
color: #fff;
|
|
6064
|
+
font-size: 12px;
|
|
6065
|
+
font-weight: 600;
|
|
6066
|
+
}
|
|
6067
|
+
.theme-swatch.sel {
|
|
6068
|
+
border-color: var(--text);
|
|
6069
|
+
}
|
|
6070
|
+
.theme-swatch.theme-dark {
|
|
6071
|
+
background: linear-gradient(135deg, #16171a, #2a2c33);
|
|
6072
|
+
}
|
|
6073
|
+
.theme-swatch.theme-neon {
|
|
6074
|
+
background: linear-gradient(135deg, #0c0e14, #22d3ee);
|
|
6075
|
+
}
|
|
6076
|
+
.theme-swatch.theme-synthwave {
|
|
6077
|
+
background: linear-gradient(135deg, #190f2e, #ff2e88);
|
|
6078
|
+
}
|
|
6079
|
+
.swatch-default {
|
|
6080
|
+
background: conic-gradient(#d97757, #22d3ee, #a855f7, #22c55e, #ff2e88, #d97757);
|
|
6081
|
+
}
|
|
6082
|
+
.appearance-toggle {
|
|
6083
|
+
display: flex;
|
|
6084
|
+
align-items: center;
|
|
6085
|
+
gap: 8px;
|
|
6086
|
+
font-size: 13px;
|
|
6087
|
+
margin-bottom: 8px;
|
|
6088
|
+
cursor: pointer;
|
|
6089
|
+
}
|
|
4810
6090
|
/**
|
|
4811
6091
|
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
|
|
4812
6092
|
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
|