@larose/pi-web 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +235 -0
  2. package/README.md +50 -0
  3. package/THIRD_PARTY_LICENSES.md +40 -0
  4. package/dist/client/home.js +1619 -0
  5. package/dist/client/session.js +3703 -0
  6. package/dist/server/api.js +485 -0
  7. package/dist/server/cli.js +51 -0
  8. package/dist/server/directory-browser.js +104 -0
  9. package/dist/server/errors.js +10 -0
  10. package/dist/server/event-buffer.js +40 -0
  11. package/dist/server/extension-ui.js +245 -0
  12. package/dist/server/git-workspaces.js +559 -0
  13. package/dist/server/runtime-registry.js +703 -0
  14. package/dist/server/server.js +190 -0
  15. package/dist/server/session-repository.js +374 -0
  16. package/package.json +46 -0
  17. package/public/home.html +139 -0
  18. package/public/session.html +144 -0
  19. package/public/styles.css +2463 -0
  20. package/screenshots/home.png +0 -0
  21. package/screenshots/session.png +0 -0
  22. package/src/client/display-title.ts +36 -0
  23. package/src/client/event-stream.ts +194 -0
  24. package/src/client/home.ts +1575 -0
  25. package/src/client/markdown.ts +98 -0
  26. package/src/client/message-queue.ts +67 -0
  27. package/src/client/path-combobox.ts +271 -0
  28. package/src/client/session.ts +2174 -0
  29. package/src/client/shared.ts +99 -0
  30. package/src/client/slash-completion.ts +184 -0
  31. package/src/client/transcript-activity.ts +188 -0
  32. package/src/client/usage-format.ts +156 -0
  33. package/src/client/workspace-browser.ts +36 -0
  34. package/src/server/api.ts +652 -0
  35. package/src/server/cli.ts +63 -0
  36. package/src/server/directory-browser.ts +137 -0
  37. package/src/server/errors.ts +11 -0
  38. package/src/server/event-buffer.ts +59 -0
  39. package/src/server/extension-ui.ts +359 -0
  40. package/src/server/git-workspaces.ts +750 -0
  41. package/src/server/runtime-registry.ts +943 -0
  42. package/src/server/server.ts +248 -0
  43. package/src/server/session-repository.ts +488 -0
@@ -0,0 +1,2463 @@
1
+ :root {
2
+ color-scheme: light;
3
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
4
+ font-synthesis: none;
5
+
6
+ --bg: #f7f7f7;
7
+ --panel: #ffffff;
8
+ --panel-subtle: #f2f2f2;
9
+ --border: #e5e5e5;
10
+ --border-strong: #c7c7c7;
11
+ --text: #2f2f2f;
12
+ --muted: #6b6b6b;
13
+ --action: #4a4a4a;
14
+ --action-hover: #2f2f2f;
15
+ --accent: #2563eb;
16
+ --accent-hover: #1d4ed8;
17
+ --accent-soft: rgb(37 99 235 / 7%);
18
+ --link: var(--accent);
19
+ --focus-ring: rgb(37 99 235 / 75%);
20
+ --danger: #b42318;
21
+ --danger-soft: #fef3f2;
22
+ --success: #067647;
23
+ --success-soft: #ecfdf3;
24
+ --user-message-bg: #eff6ff;
25
+ --user-message-border: #bfdbfe;
26
+ --on-action: #ffffff;
27
+ --mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
28
+ --shadow-subtle: 0 1px 2px rgb(47 47 47 / 5%);
29
+ --shadow: 0 1px 2px rgb(47 47 47 / 6%), 0 8px 28px rgb(47 47 47 / 8%);
30
+
31
+ color: var(--text);
32
+ background: var(--bg);
33
+ }
34
+
35
+ * {
36
+ box-sizing: border-box;
37
+ }
38
+
39
+ [hidden] {
40
+ display: none !important;
41
+ }
42
+
43
+ body {
44
+ min-width: 20rem;
45
+ min-height: 100vh;
46
+ margin: 0;
47
+ background: var(--bg);
48
+ }
49
+
50
+ button,
51
+ input,
52
+ textarea {
53
+ font: inherit;
54
+ }
55
+
56
+ button,
57
+ input,
58
+ textarea {
59
+ border: 1px solid var(--border-strong);
60
+ border-radius: 0.6rem;
61
+ background: var(--panel);
62
+ color: var(--text);
63
+ }
64
+
65
+ button {
66
+ padding: 0.62rem 0.9rem;
67
+ cursor: pointer;
68
+ border-color: var(--action);
69
+ background: var(--action);
70
+ color: var(--on-action);
71
+ font-weight: 700;
72
+ }
73
+
74
+ button:hover:not(:disabled) {
75
+ border-color: var(--action-hover);
76
+ background: var(--action-hover);
77
+ }
78
+
79
+ button:disabled,
80
+ input:disabled,
81
+ textarea:disabled {
82
+ cursor: not-allowed;
83
+ opacity: 0.48;
84
+ }
85
+
86
+ button.secondary,
87
+ .back-button {
88
+ border-color: var(--border-strong);
89
+ background: var(--panel);
90
+ color: var(--muted);
91
+ }
92
+
93
+ button.secondary:hover:not(:disabled),
94
+ .back-button:hover:not(:disabled) {
95
+ border-color: var(--border-strong);
96
+ background: var(--panel-subtle);
97
+ color: var(--text);
98
+ }
99
+
100
+ input,
101
+ textarea {
102
+ width: 100%;
103
+ padding: 0.75rem 0.85rem;
104
+ outline: none;
105
+ }
106
+
107
+ input:focus,
108
+ textarea:focus,
109
+ button:focus-visible,
110
+ a:focus-visible {
111
+ border-color: var(--accent);
112
+ box-shadow: 0 0 0 2px var(--focus-ring);
113
+ outline: none;
114
+ }
115
+
116
+ textarea {
117
+ resize: vertical;
118
+ line-height: 1.5;
119
+ }
120
+
121
+ .app-shell {
122
+ min-height: 100vh;
123
+ }
124
+
125
+ .home-screen {
126
+ display: flex;
127
+ min-height: 100vh;
128
+ padding: clamp(2rem, 7vw, 5rem) 1.25rem;
129
+ }
130
+
131
+ .home-container {
132
+ display: flex;
133
+ width: min(52rem, 100%);
134
+ margin: 0 auto;
135
+ flex-direction: column;
136
+ }
137
+
138
+ .home-header {
139
+ margin-bottom: 1.75rem;
140
+ }
141
+
142
+ .home-header h1 {
143
+ margin: 0;
144
+ font-size: clamp(1.9rem, 5vw, 2.6rem);
145
+ letter-spacing: -0.04em;
146
+ }
147
+
148
+ .new-session {
149
+ margin-top: 1rem;
150
+ padding: clamp(1rem, 3vw, 1.35rem);
151
+ border: 1px solid var(--border);
152
+ border-radius: 0.9rem;
153
+ background: var(--panel);
154
+ box-shadow: var(--shadow-subtle);
155
+ }
156
+
157
+ .new-session-header {
158
+ display: flex;
159
+ align-items: baseline;
160
+ justify-content: space-between;
161
+ gap: 1rem;
162
+ margin-bottom: 1rem;
163
+ }
164
+
165
+ .new-session-heading {
166
+ margin: 0;
167
+ font-size: 1.25rem;
168
+ }
169
+
170
+ .workspace-controls,
171
+ .repository-fields {
172
+ display: grid;
173
+ min-width: 0;
174
+ gap: 0.65rem;
175
+ }
176
+
177
+ .workspace-kind {
178
+ min-width: 0;
179
+ margin: 0;
180
+ padding: 0;
181
+ border: 0;
182
+ }
183
+
184
+ .workspace-kind legend,
185
+ .workspace-control > label,
186
+ .new-worktree-mode label {
187
+ margin-bottom: 0.3rem;
188
+ font-size: 0.72rem;
189
+ font-weight: 700;
190
+ }
191
+
192
+ .choice-buttons {
193
+ display: inline-grid;
194
+ grid-template-columns: repeat(2, minmax(0, 1fr));
195
+ overflow: hidden;
196
+ border: 1px solid var(--border-strong);
197
+ border-radius: 0.5rem;
198
+ }
199
+
200
+ .choice-buttons input {
201
+ position: absolute;
202
+ width: 1px;
203
+ height: 1px;
204
+ opacity: 0;
205
+ }
206
+
207
+ .choice-buttons label {
208
+ padding: 0.55rem 0.8rem;
209
+ color: var(--muted);
210
+ cursor: pointer;
211
+ font-size: 0.75rem;
212
+ font-weight: 700;
213
+ text-align: center;
214
+ }
215
+
216
+ .choice-buttons label + input + label {
217
+ border-left: 1px solid var(--border-strong);
218
+ }
219
+
220
+ .choice-buttons input:checked + label {
221
+ background: var(--panel-subtle);
222
+ color: var(--text);
223
+ }
224
+
225
+ .choice-buttons input:focus-visible + label {
226
+ position: relative;
227
+ box-shadow: inset 0 0 0 2px var(--accent);
228
+ }
229
+
230
+ .workspace-control {
231
+ display: grid;
232
+ min-width: 0;
233
+ align-content: start;
234
+ }
235
+
236
+ .workspace-control select,
237
+ .workspace-control input {
238
+ width: 100%;
239
+ min-width: 0;
240
+ height: 2.5rem;
241
+ padding: 0 0.7rem;
242
+ border: 1px solid var(--border-strong);
243
+ border-radius: 0.45rem;
244
+ outline: none;
245
+ background: var(--panel);
246
+ color: var(--text);
247
+ font-family: var(--mono);
248
+ font-size: 0.75rem;
249
+ }
250
+
251
+ .workspace-control select {
252
+ padding-right: 2rem;
253
+ font-family: inherit;
254
+ font-size: 0.78rem;
255
+ }
256
+
257
+ .workspace-control select:focus,
258
+ .workspace-control input:focus {
259
+ position: relative;
260
+ z-index: 2;
261
+ border-color: var(--accent);
262
+ box-shadow: 0 0 0 3px var(--focus-ring);
263
+ }
264
+
265
+ .workspace-control input[aria-busy="true"] {
266
+ border-color: var(--accent);
267
+ cursor: progress;
268
+ }
269
+
270
+ .workspace-control-feedback {
271
+ min-height: 1rem;
272
+ margin: 0.22rem 0 0;
273
+ overflow: hidden;
274
+ color: var(--muted);
275
+ font-family: var(--mono);
276
+ font-size: 0.66rem;
277
+ line-height: 1.35;
278
+ text-overflow: ellipsis;
279
+ white-space: nowrap;
280
+ }
281
+
282
+ .workspace-control-feedback.error {
283
+ color: var(--danger);
284
+ font-family: inherit;
285
+ white-space: normal;
286
+ }
287
+
288
+ .path-combobox {
289
+ position: relative;
290
+ display: grid;
291
+ min-width: 0;
292
+ grid-template-columns: minmax(0, 1fr) 2.5rem;
293
+ }
294
+
295
+ .path-combobox input {
296
+ border-radius: 0.45rem 0 0 0.45rem;
297
+ }
298
+
299
+ button.path-combobox-toggle {
300
+ width: 2.5rem;
301
+ height: 2.5rem;
302
+ padding: 0;
303
+ border-color: var(--border-strong);
304
+ border-left: 0;
305
+ border-radius: 0 0.45rem 0.45rem 0;
306
+ background: var(--panel);
307
+ color: var(--muted);
308
+ font-size: 1rem;
309
+ }
310
+
311
+ button.path-combobox-toggle:hover:not(:disabled) {
312
+ border-color: var(--border-strong);
313
+ background: var(--panel-subtle);
314
+ color: var(--text);
315
+ }
316
+
317
+ .path-combobox-list {
318
+ position: absolute;
319
+ z-index: 20;
320
+ top: calc(100% + 0.3rem);
321
+ right: 0;
322
+ left: 0;
323
+ max-height: 16rem;
324
+ margin: 0;
325
+ padding: 0.3rem;
326
+ overflow-y: auto;
327
+ border: 1px solid var(--border-strong);
328
+ border-radius: 0.55rem;
329
+ background: var(--panel);
330
+ box-shadow: var(--shadow);
331
+ list-style: none;
332
+ }
333
+
334
+ .path-combobox-heading {
335
+ padding: 0.35rem 0.45rem 0.2rem;
336
+ color: var(--muted);
337
+ font-size: 0.62rem;
338
+ font-weight: 700;
339
+ letter-spacing: 0.08em;
340
+ text-transform: uppercase;
341
+ }
342
+
343
+ .path-combobox-option {
344
+ display: grid;
345
+ min-width: 0;
346
+ gap: 0.08rem;
347
+ padding: 0.45rem;
348
+ border-radius: 0.35rem;
349
+ cursor: pointer;
350
+ }
351
+
352
+ .path-combobox-option[aria-selected="true"],
353
+ .path-combobox-option:hover {
354
+ background: var(--accent-soft);
355
+ }
356
+
357
+ .path-combobox-option strong,
358
+ .path-combobox-option span {
359
+ overflow: hidden;
360
+ text-overflow: ellipsis;
361
+ white-space: nowrap;
362
+ }
363
+
364
+ .path-combobox-option strong {
365
+ font-family: var(--mono);
366
+ font-size: 0.72rem;
367
+ }
368
+
369
+ .path-combobox-option span,
370
+ .path-combobox-empty {
371
+ color: var(--muted);
372
+ font-family: var(--mono);
373
+ font-size: 0.64rem;
374
+ }
375
+
376
+ .path-combobox-empty {
377
+ padding: 0.7rem 0.45rem;
378
+ }
379
+
380
+ .checkout-control {
381
+ display: flex;
382
+ min-width: 0;
383
+ align-items: center;
384
+ gap: 0.7rem;
385
+ }
386
+
387
+ .checkout-control select {
388
+ flex: 1 1 auto;
389
+ }
390
+
391
+ .quiet-action {
392
+ color: var(--muted);
393
+ font-size: 0.7rem;
394
+ font-weight: 700;
395
+ }
396
+
397
+ button.quiet-action {
398
+ padding: 0;
399
+ border-color: transparent;
400
+ background: transparent;
401
+ }
402
+
403
+ button.quiet-action:hover:not(:disabled) {
404
+ border-color: transparent;
405
+ background: transparent;
406
+ color: var(--text);
407
+ text-decoration: underline;
408
+ }
409
+
410
+ .checkout-control .quiet-action {
411
+ flex: 0 0 auto;
412
+ white-space: nowrap;
413
+ }
414
+
415
+ .worktree-availability {
416
+ min-width: 0;
417
+ margin: -0.75rem 0 0;
418
+ color: var(--muted);
419
+ font-size: 0.66rem;
420
+ line-height: 1.4;
421
+ }
422
+
423
+ .new-worktree-mode {
424
+ display: grid;
425
+ gap: 0.5rem;
426
+ margin-top: 0.15rem;
427
+ padding-top: 0.7rem;
428
+ border-top: 1px solid var(--border);
429
+ }
430
+
431
+ .new-worktree-mode > header {
432
+ display: flex;
433
+ align-items: baseline;
434
+ justify-content: space-between;
435
+ gap: 0.75rem;
436
+ }
437
+
438
+ .new-worktree-mode h3 {
439
+ margin: 0;
440
+ font-size: 0.78rem;
441
+ }
442
+
443
+ .new-worktree-mode input {
444
+ min-width: 0;
445
+ padding: 0.6rem 0.7rem;
446
+ font-family: var(--mono);
447
+ font-size: 0.75rem;
448
+ }
449
+
450
+ .repository-worktree-editor {
451
+ display: grid;
452
+ gap: 0.5rem;
453
+ margin: 0 0 0.8rem 0.7rem;
454
+ padding: 0.75rem;
455
+ border: 1px solid var(--border);
456
+ border-radius: 0.65rem;
457
+ background: var(--panel);
458
+ }
459
+
460
+ .repository-worktree-editor > header {
461
+ display: flex;
462
+ align-items: baseline;
463
+ justify-content: space-between;
464
+ gap: 0.75rem;
465
+ }
466
+
467
+ .repository-worktree-editor h4 {
468
+ margin: 0;
469
+ font-size: 0.82rem;
470
+ }
471
+
472
+ .repository-worktree-editor label {
473
+ font-size: 0.72rem;
474
+ font-weight: 700;
475
+ }
476
+
477
+ .repository-worktree-editor input {
478
+ padding: 0.6rem 0.7rem;
479
+ font-family: var(--mono);
480
+ font-size: 0.75rem;
481
+ }
482
+
483
+ .repository-worktree-editor > button[type="submit"] {
484
+ justify-self: end;
485
+ }
486
+
487
+ .worktree-target {
488
+ margin: 0;
489
+ color: var(--muted);
490
+ font-size: 0.66rem;
491
+ line-height: 1.4;
492
+ }
493
+
494
+ .worktree-target span {
495
+ font-family: var(--mono);
496
+ overflow-wrap: anywhere;
497
+ }
498
+
499
+ .new-session-actions {
500
+ display: flex;
501
+ justify-content: flex-end;
502
+ margin-top: 0.55rem;
503
+ }
504
+
505
+ .session-create-submit {
506
+ padding: 0.5rem 0.75rem;
507
+ font-size: 0.82rem;
508
+ }
509
+
510
+ .session-list-heading {
511
+ display: flex;
512
+ align-items: baseline;
513
+ justify-content: space-between;
514
+ gap: 1rem;
515
+ margin: 2.25rem 0 0.8rem;
516
+ }
517
+
518
+ .session-list-heading h2 {
519
+ margin: 0;
520
+ font-size: 1.25rem;
521
+ }
522
+
523
+ .latest-sessions .session-list-heading {
524
+ margin-top: 0;
525
+ }
526
+
527
+ .latest-sessions > .new-session {
528
+ margin: 0 0 0.8rem;
529
+ }
530
+
531
+ .new-session-toggle {
532
+ flex: 0 0 auto;
533
+ padding: 0.5rem 0.75rem;
534
+ font-size: 0.8rem;
535
+ }
536
+
537
+ .app-notifications {
538
+ position: fixed;
539
+ z-index: 100;
540
+ top: 0;
541
+ left: 0;
542
+ display: grid;
543
+ width: 100%;
544
+ padding-top: env(safe-area-inset-top);
545
+ box-shadow: var(--shadow);
546
+ }
547
+
548
+ .app-notification {
549
+ display: grid;
550
+ width: 100%;
551
+ min-height: 2.75rem;
552
+ grid-template-columns: 1.75rem minmax(0, 1fr) 1.75rem;
553
+ align-items: center;
554
+ gap: 0.75rem;
555
+ padding: 0.6rem 1.25rem;
556
+ border-bottom: 1px solid var(--border-strong);
557
+ background: var(--panel);
558
+ }
559
+
560
+ .app-notification[data-tone="success"] {
561
+ border-color: var(--success);
562
+ background: var(--success-soft);
563
+ color: var(--success);
564
+ }
565
+
566
+ .app-notification[data-tone="error"] {
567
+ border-color: var(--danger);
568
+ background: var(--danger-soft);
569
+ }
570
+
571
+ .app-notification-message {
572
+ min-width: 0;
573
+ margin: 0;
574
+ overflow-wrap: anywhere;
575
+ font-size: 0.78rem;
576
+ font-weight: 600;
577
+ grid-column: 2;
578
+ text-align: center;
579
+ }
580
+
581
+ .app-notification[data-tone="error"] .app-notification-message {
582
+ color: var(--danger);
583
+ }
584
+
585
+ button.app-notification-dismiss {
586
+ width: 1.75rem;
587
+ height: 1.75rem;
588
+ padding: 0;
589
+ flex: 0 0 auto;
590
+ border-color: transparent;
591
+ background: transparent;
592
+ color: var(--muted);
593
+ font-size: 1.15rem;
594
+ line-height: 1;
595
+ grid-column: 3;
596
+ }
597
+
598
+ button.app-notification-dismiss:hover:not(:disabled) {
599
+ border-color: var(--border);
600
+ background: var(--panel-subtle);
601
+ color: var(--text);
602
+ }
603
+
604
+ .latest-session-list {
605
+ display: grid;
606
+ grid-template-columns: minmax(0, 1fr);
607
+ }
608
+
609
+ .latest-session-card {
610
+ display: grid;
611
+ min-width: 0;
612
+ grid-template-columns: minmax(0, 1fr) auto;
613
+ overflow: hidden;
614
+ border: 1px solid var(--border);
615
+ border-bottom-width: 0;
616
+ background: var(--panel);
617
+ }
618
+
619
+ .latest-session-card:first-child {
620
+ border-radius: 0.65rem 0.65rem 0 0;
621
+ }
622
+
623
+ .latest-session-card:last-child {
624
+ border-bottom-width: 1px;
625
+ border-radius: 0 0 0.65rem 0.65rem;
626
+ }
627
+
628
+ .latest-session-card:only-child {
629
+ border-bottom-width: 1px;
630
+ border-radius: 0.65rem;
631
+ }
632
+
633
+ .latest-session-card:hover,
634
+ .latest-session-card:focus-within {
635
+ position: relative;
636
+ border-color: var(--border-strong);
637
+ }
638
+
639
+ .latest-session-button {
640
+ display: grid;
641
+ min-width: 0;
642
+ grid-template-columns: auto minmax(0, 1fr);
643
+ align-items: start;
644
+ gap: 0.6rem;
645
+ padding: 0.65rem 0.75rem;
646
+ border: 0;
647
+ border-radius: 0;
648
+ background: var(--panel);
649
+ color: var(--text);
650
+ text-decoration: none;
651
+ }
652
+
653
+ .latest-session-button:hover,
654
+ .latest-session-button:focus-visible {
655
+ background: var(--panel-subtle);
656
+ }
657
+
658
+ .latest-session-button:focus-visible,
659
+ .latest-session-card > .session-delete:focus-visible {
660
+ box-shadow: inset 0 0 0 2px var(--focus-ring);
661
+ }
662
+
663
+ .latest-session-button .latest-session-location {
664
+ font-family: var(--mono);
665
+ }
666
+
667
+ .latest-empty {
668
+ grid-column: 1 / -1;
669
+ }
670
+
671
+ .all-sessions {
672
+ margin-top: 2.5rem;
673
+ }
674
+
675
+ .all-sessions .session-list-heading {
676
+ margin-top: 0;
677
+ }
678
+
679
+ .home-footer {
680
+ margin-top: auto;
681
+ padding-top: 3rem;
682
+ color: var(--muted);
683
+ font-size: 0.75rem;
684
+ text-align: center;
685
+ }
686
+
687
+ .home-footer p {
688
+ margin: 0;
689
+ }
690
+
691
+ .home-footer a {
692
+ color: var(--link);
693
+ font-weight: 650;
694
+ text-underline-offset: 0.15em;
695
+ }
696
+
697
+ .home-footer a:hover {
698
+ color: var(--accent-hover);
699
+ }
700
+
701
+ .session-list {
702
+ display: grid;
703
+ gap: 1.3rem;
704
+ }
705
+
706
+ .session-group-header {
707
+ display: flex;
708
+ min-width: 0;
709
+ align-items: baseline;
710
+ justify-content: flex-start;
711
+ gap: 0.4rem;
712
+ margin-bottom: 0.5rem;
713
+ }
714
+
715
+ .session-group-identity {
716
+ display: flex;
717
+ min-width: 0;
718
+ align-items: baseline;
719
+ gap: 0.55rem;
720
+ }
721
+
722
+ .session-group-header h3 {
723
+ overflow: hidden;
724
+ margin: 0;
725
+ color: var(--muted);
726
+ font-family: var(--mono);
727
+ font-size: 1rem;
728
+ font-weight: 500;
729
+ text-overflow: ellipsis;
730
+ white-space: nowrap;
731
+ }
732
+
733
+ .session-group-header h3 strong {
734
+ color: var(--text);
735
+ font-weight: 750;
736
+ }
737
+
738
+ .worktree-list,
739
+ .standalone-sessions {
740
+ padding-left: 0.7rem;
741
+ border-left: 2px solid var(--border);
742
+ }
743
+
744
+ .worktree-list {
745
+ display: grid;
746
+ gap: 0.8rem;
747
+ }
748
+
749
+ .worktree-group {
750
+ min-width: 0;
751
+ }
752
+
753
+ .worktree-header {
754
+ display: flex;
755
+ min-width: 0;
756
+ align-items: center;
757
+ justify-content: space-between;
758
+ gap: 1rem;
759
+ margin-bottom: 0.35rem;
760
+ }
761
+
762
+ .worktree-heading-context {
763
+ display: flex;
764
+ min-width: 0;
765
+ align-items: baseline;
766
+ gap: 0.4rem;
767
+ }
768
+
769
+ .worktree-identity {
770
+ display: grid;
771
+ min-width: 0;
772
+ grid-template-columns: auto minmax(0, 1fr);
773
+ align-items: baseline;
774
+ gap: 0.08rem 0.5rem;
775
+ }
776
+
777
+ button.contextual-session-create,
778
+ button.repository-worktree-start,
779
+ button.worktree-delete {
780
+ flex: 0 0 auto;
781
+ padding: 0.2rem 0;
782
+ border-color: transparent;
783
+ background: transparent;
784
+ font-size: 0.66rem;
785
+ white-space: nowrap;
786
+ }
787
+
788
+ button.contextual-session-create,
789
+ button.repository-worktree-start {
790
+ color: var(--muted);
791
+ }
792
+
793
+ button.contextual-session-create:hover:not(:disabled),
794
+ button.repository-worktree-start:hover:not(:disabled) {
795
+ border-color: transparent;
796
+ background: transparent;
797
+ color: var(--text);
798
+ text-decoration: underline;
799
+ }
800
+
801
+ button.worktree-delete {
802
+ color: var(--muted);
803
+ }
804
+
805
+ button.worktree-delete:hover:not(:disabled) {
806
+ border-color: transparent;
807
+ background: transparent;
808
+ color: var(--text);
809
+ text-decoration: underline;
810
+ }
811
+
812
+ .worktree-sessions,
813
+ .standalone-sessions {
814
+ min-width: 0;
815
+ }
816
+
817
+ .worktree-sessions {
818
+ display: grid;
819
+ gap: 0.65rem;
820
+ }
821
+
822
+ .relative-cwd-group {
823
+ min-width: 0;
824
+ }
825
+
826
+ .relative-cwd-heading {
827
+ overflow: hidden;
828
+ margin: 0 0 0.25rem;
829
+ padding-left: 0.2rem;
830
+ color: var(--muted);
831
+ font-family: var(--mono);
832
+ font-size: 0.64rem;
833
+ font-weight: 600;
834
+ text-overflow: ellipsis;
835
+ white-space: nowrap;
836
+ }
837
+
838
+ .worktree-header .relative-cwd-heading {
839
+ margin: 0;
840
+ padding-left: 0;
841
+ }
842
+
843
+ .worktree-empty {
844
+ margin: 0;
845
+ padding: 0.65rem 0.8rem;
846
+ border: 1px dashed var(--border);
847
+ border-radius: 0.55rem;
848
+ color: var(--muted);
849
+ font-size: 0.68rem;
850
+ }
851
+
852
+ .session-card {
853
+ display: grid;
854
+ grid-template-columns: minmax(0, 1fr) auto;
855
+ overflow: hidden;
856
+ border: 1px solid var(--border);
857
+ border-bottom-width: 0;
858
+ background: var(--panel);
859
+ }
860
+
861
+ .session-card:first-of-type {
862
+ border-radius: 0.75rem 0.75rem 0 0;
863
+ }
864
+
865
+ .session-card:last-child {
866
+ border-bottom-width: 1px;
867
+ border-radius: 0 0 0.75rem 0.75rem;
868
+ }
869
+
870
+ .session-card:only-of-type {
871
+ border-bottom-width: 1px;
872
+ border-radius: 0.75rem;
873
+ }
874
+
875
+ .session-card:hover,
876
+ .session-card:focus-within {
877
+ position: relative;
878
+ border-color: var(--border-strong);
879
+ }
880
+
881
+ .session-button {
882
+ display: grid;
883
+ min-width: 0;
884
+ grid-template-columns: auto minmax(0, 1fr) auto;
885
+ align-items: start;
886
+ gap: 0.65rem;
887
+ padding: 0.7rem 0.85rem;
888
+ background: var(--panel);
889
+ color: var(--text);
890
+ text-align: left;
891
+ text-decoration: none;
892
+ }
893
+
894
+ .session-button:hover,
895
+ .session-button:focus-visible {
896
+ background: var(--panel-subtle);
897
+ }
898
+
899
+ .session-button::after {
900
+ content: "›";
901
+ align-self: center;
902
+ color: var(--muted);
903
+ font-size: 1.25rem;
904
+ }
905
+
906
+ .session-delete.destructive {
907
+ min-width: 4.75rem;
908
+ padding: 0.55rem 0.7rem;
909
+ border: 0;
910
+ border-left: 1px solid var(--border);
911
+ border-radius: 0;
912
+ background: var(--panel);
913
+ color: var(--muted);
914
+ font-size: 0.72rem;
915
+ }
916
+
917
+ .session-delete.destructive:hover:not(:disabled) {
918
+ border-color: var(--border-strong);
919
+ background: var(--panel-subtle);
920
+ color: var(--text);
921
+ }
922
+
923
+ .running-dot {
924
+ width: 0.48rem;
925
+ height: 0.48rem;
926
+ align-self: center;
927
+ border-radius: 50%;
928
+ background: var(--border-strong);
929
+ }
930
+
931
+ .running-dot.active {
932
+ background: var(--accent);
933
+ box-shadow: 0 0 0 0.22rem var(--accent-soft);
934
+ }
935
+
936
+ .session-copy {
937
+ min-width: 0;
938
+ }
939
+
940
+ .session-copy strong,
941
+ .session-copy span {
942
+ display: block;
943
+ overflow: hidden;
944
+ text-overflow: ellipsis;
945
+ white-space: nowrap;
946
+ }
947
+
948
+ .session-copy strong {
949
+ font-size: 0.86rem;
950
+ font-weight: 680;
951
+ }
952
+
953
+ .session-copy span {
954
+ margin-top: 0.16rem;
955
+ color: var(--muted);
956
+ font-size: 0.7rem;
957
+ }
958
+
959
+ .empty-list {
960
+ margin: 0;
961
+ padding: 2.5rem 1rem;
962
+ border: 1px dashed var(--border-strong);
963
+ border-radius: 0.75rem;
964
+ color: var(--muted);
965
+ text-align: center;
966
+ }
967
+
968
+ .workspace {
969
+ display: grid;
970
+ width: 100%;
971
+ height: 100vh;
972
+ min-width: 0;
973
+ min-height: 0;
974
+ grid-template-areas:
975
+ "context transcript"
976
+ "context composer";
977
+ grid-template-columns: clamp(15rem, 22vw, 20rem) minmax(0, 1fr);
978
+ grid-template-rows: minmax(0, 1fr) auto;
979
+ background: var(--bg);
980
+ }
981
+
982
+ .session-identity {
983
+ display: grid;
984
+ gap: 0.55rem;
985
+ margin-bottom: 1rem;
986
+ padding-bottom: 1rem;
987
+ border-bottom: 1px solid var(--border);
988
+ }
989
+
990
+ .session-identity-meta {
991
+ display: flex;
992
+ min-width: 0;
993
+ align-items: center;
994
+ justify-content: space-between;
995
+ gap: 0.5rem;
996
+ }
997
+
998
+ .session-navigation,
999
+ .session-header-actions {
1000
+ display: flex;
1001
+ min-width: 0;
1002
+ align-items: center;
1003
+ }
1004
+
1005
+ .session-header-actions {
1006
+ justify-content: flex-end;
1007
+ gap: 0.65rem;
1008
+ }
1009
+
1010
+ .back-button,
1011
+ .create-session {
1012
+ display: inline-flex;
1013
+ align-items: center;
1014
+ gap: 0.2rem;
1015
+ padding: 0.2rem 0;
1016
+ border-color: transparent;
1017
+ background: transparent;
1018
+ color: var(--muted);
1019
+ font-size: 0.72rem;
1020
+ font-weight: 700;
1021
+ line-height: 1.15;
1022
+ text-decoration: none;
1023
+ white-space: nowrap;
1024
+ }
1025
+
1026
+ .back-button:hover,
1027
+ .create-session:hover {
1028
+ border-color: transparent;
1029
+ background: transparent;
1030
+ color: var(--text);
1031
+ text-decoration: underline;
1032
+ }
1033
+
1034
+ .session-title-row {
1035
+ display: grid;
1036
+ min-width: 0;
1037
+ gap: 0.15rem;
1038
+ }
1039
+
1040
+ .session-title-row h1 {
1041
+ width: 100%;
1042
+ min-width: 0;
1043
+ margin: 0;
1044
+ font-size: 0.95rem;
1045
+ line-height: 1.3;
1046
+ }
1047
+
1048
+ .session-title-button {
1049
+ display: block;
1050
+ width: 100%;
1051
+ min-width: 0;
1052
+ padding: 0.1rem 0.2rem;
1053
+ border-color: transparent;
1054
+ border-radius: 0.3rem;
1055
+ background: transparent;
1056
+ color: inherit;
1057
+ font: inherit;
1058
+ font-weight: 700;
1059
+ line-height: inherit;
1060
+ overflow-wrap: anywhere;
1061
+ text-align: left;
1062
+ white-space: normal;
1063
+ }
1064
+
1065
+ .session-title-button:hover:not(:disabled) {
1066
+ border-color: var(--border);
1067
+ background: var(--panel-subtle);
1068
+ color: var(--text);
1069
+ }
1070
+
1071
+ .connection-status {
1072
+ display: inline-flex;
1073
+ align-items: center;
1074
+ gap: 0.3rem;
1075
+ flex: none;
1076
+ color: var(--muted);
1077
+ font-family: var(--mono);
1078
+ font-size: 0.62rem;
1079
+ }
1080
+
1081
+ .connection-status::before {
1082
+ width: 0.38rem;
1083
+ height: 0.38rem;
1084
+ border-radius: 50%;
1085
+ background: currentColor;
1086
+ content: "";
1087
+ flex: none;
1088
+ }
1089
+
1090
+ .connection-status[data-state="online"] {
1091
+ color: var(--success);
1092
+ }
1093
+
1094
+ .connection-status[data-state="error"] {
1095
+ color: var(--danger);
1096
+ }
1097
+
1098
+ .session-title-row > .connection-status {
1099
+ margin-left: 0.2rem;
1100
+ }
1101
+
1102
+ .session-context {
1103
+ display: flex;
1104
+ min-width: 0;
1105
+ min-height: 0;
1106
+ padding: 1rem 0.85rem;
1107
+ overflow: hidden;
1108
+ border-right: 1px solid var(--border);
1109
+ background: var(--panel-subtle);
1110
+ flex-direction: column;
1111
+ grid-area: context;
1112
+ }
1113
+
1114
+ .session-context h2 {
1115
+ margin: 0 0 1rem;
1116
+ color: var(--muted);
1117
+ font-family: var(--mono);
1118
+ font-size: 0.65rem;
1119
+ letter-spacing: 0.08em;
1120
+ text-transform: uppercase;
1121
+ }
1122
+
1123
+ .session-context-toggle {
1124
+ display: none;
1125
+ }
1126
+
1127
+ .session-context-content {
1128
+ display: flex;
1129
+ min-width: 0;
1130
+ min-height: 0;
1131
+ flex: 1;
1132
+ flex-direction: column;
1133
+ }
1134
+
1135
+ .session-context-content > dl {
1136
+ display: grid;
1137
+ margin: 0;
1138
+ gap: 0.75rem;
1139
+ }
1140
+
1141
+ .session-context-content > dl > div {
1142
+ min-width: 0;
1143
+ }
1144
+
1145
+ .session-context-content > dl > div > dt {
1146
+ margin-bottom: 0.25rem;
1147
+ color: var(--muted);
1148
+ font-size: 0.65rem;
1149
+ font-weight: 700;
1150
+ }
1151
+
1152
+ .session-context-content > dl > div > dd {
1153
+ overflow: hidden;
1154
+ margin: 0;
1155
+ color: var(--text);
1156
+ font-family: var(--mono);
1157
+ font-size: 0.68rem;
1158
+ line-height: 1.4;
1159
+ text-overflow: ellipsis;
1160
+ white-space: nowrap;
1161
+ }
1162
+
1163
+ .session-context .session-workspace {
1164
+ display: grid;
1165
+ overflow: visible;
1166
+ gap: 0.45rem;
1167
+ white-space: normal;
1168
+ }
1169
+
1170
+ .session-workspace-state {
1171
+ color: var(--muted);
1172
+ font-size: 0.63rem;
1173
+ }
1174
+
1175
+ .session-workspace-row {
1176
+ display: grid;
1177
+ min-width: 0;
1178
+ gap: 0.04rem;
1179
+ }
1180
+
1181
+ .session-workspace-label {
1182
+ color: var(--muted);
1183
+ font-size: 0.61rem;
1184
+ font-weight: 700;
1185
+ }
1186
+
1187
+ .session-workspace-path {
1188
+ min-width: 0;
1189
+ overflow-wrap: anywhere;
1190
+ color: var(--text);
1191
+ font-size: 0.68rem;
1192
+ white-space: normal;
1193
+ }
1194
+
1195
+ .session-status-item .extension-statuses {
1196
+ display: grid;
1197
+ overflow: visible;
1198
+ align-items: initial;
1199
+ gap: 0.18rem;
1200
+ white-space: normal;
1201
+ }
1202
+
1203
+ .session-context .extension-status {
1204
+ color: var(--text);
1205
+ }
1206
+
1207
+ .session-context-content [data-session-tokens] {
1208
+ font-variant-numeric: tabular-nums;
1209
+ }
1210
+
1211
+ .session-token-line {
1212
+ display: block;
1213
+ overflow: hidden;
1214
+ text-overflow: ellipsis;
1215
+ white-space: nowrap;
1216
+ }
1217
+
1218
+ .session-token-line.is-empty {
1219
+ color: var(--muted);
1220
+ }
1221
+
1222
+ .session-context-content > dl > .session-context-usage-item > dd {
1223
+ overflow: visible;
1224
+ white-space: normal;
1225
+ }
1226
+
1227
+ .session-context-usage-visual {
1228
+ display: grid;
1229
+ gap: 0.28rem;
1230
+ font-variant-numeric: tabular-nums;
1231
+ }
1232
+
1233
+ .session-context-usage-summary {
1234
+ display: flex;
1235
+ min-width: 0;
1236
+ align-items: baseline;
1237
+ justify-content: space-between;
1238
+ flex-wrap: wrap;
1239
+ gap: 0.15rem 0.55rem;
1240
+ }
1241
+
1242
+ .session-context-percentage {
1243
+ color: var(--text);
1244
+ font-size: inherit;
1245
+ font-weight: 400;
1246
+ letter-spacing: 0;
1247
+ line-height: inherit;
1248
+ }
1249
+
1250
+ .session-context-capacity {
1251
+ color: var(--muted);
1252
+ font-size: 0.63rem;
1253
+ }
1254
+
1255
+ .session-context-meter {
1256
+ display: block;
1257
+ height: 0.25rem;
1258
+ overflow: hidden;
1259
+ border-radius: 999px;
1260
+ background: var(--border);
1261
+ }
1262
+
1263
+ .session-context-meter-fill {
1264
+ display: block;
1265
+ height: 100%;
1266
+ border-radius: inherit;
1267
+ background: var(--muted);
1268
+ }
1269
+
1270
+ .session-context-auto {
1271
+ width: max-content;
1272
+ color: var(--muted);
1273
+ font-size: 0.6rem;
1274
+ line-height: 1.25;
1275
+ }
1276
+
1277
+ [data-session-context-usage][data-state="loading"] .session-context-percentage,
1278
+ [data-session-context-usage][data-state="unknown"] .session-context-percentage,
1279
+ [data-session-context-usage][data-state="unavailable"] .session-context-percentage {
1280
+ color: var(--muted);
1281
+ font-size: 0.68rem;
1282
+ font-weight: 500;
1283
+ letter-spacing: 0;
1284
+ line-height: 1.4;
1285
+ }
1286
+
1287
+ .session-context-content > .extension-widgets {
1288
+ min-height: 0;
1289
+ max-height: none;
1290
+ margin: 1.25rem 0 0;
1291
+ overflow-y: auto;
1292
+ flex: 1;
1293
+ flex-flow: column nowrap;
1294
+ }
1295
+
1296
+ .transcript {
1297
+ --transcript-block-padding: 1.5rem;
1298
+
1299
+ min-height: 0;
1300
+ grid-area: transcript;
1301
+ overflow-y: auto;
1302
+ padding: var(--transcript-block-padding) max(1rem, calc((100% - 54rem) / 2));
1303
+ scroll-padding-block-start: var(--transcript-block-padding);
1304
+ }
1305
+
1306
+ .transcript.has-submitted-turn-anchor::after {
1307
+ display: block;
1308
+ block-size: var(--submitted-turn-runway, calc(100% - var(--transcript-block-padding)));
1309
+ overflow-anchor: none;
1310
+ pointer-events: none;
1311
+ content: "";
1312
+ }
1313
+
1314
+ .empty-state {
1315
+ display: grid;
1316
+ min-height: 100%;
1317
+ place-content: center;
1318
+ gap: 0.4rem;
1319
+ color: var(--muted);
1320
+ text-align: center;
1321
+ }
1322
+
1323
+ .empty-state strong {
1324
+ color: var(--muted);
1325
+ }
1326
+
1327
+ .message {
1328
+ margin: 0 0 1rem;
1329
+ border: 1px solid var(--border);
1330
+ border-radius: 0.75rem;
1331
+ background: var(--panel);
1332
+ box-shadow: var(--shadow-subtle);
1333
+ }
1334
+
1335
+ .message > header,
1336
+ .message > summary {
1337
+ padding: 0.55rem 0.8rem;
1338
+ color: var(--muted);
1339
+ font-family: var(--mono);
1340
+ font-size: 0.68rem;
1341
+ text-transform: uppercase;
1342
+ }
1343
+
1344
+ .message > header,
1345
+ .message[open] > summary {
1346
+ border-bottom: 1px solid var(--border);
1347
+ }
1348
+
1349
+ .message > summary {
1350
+ cursor: pointer;
1351
+ }
1352
+
1353
+ .message.user {
1354
+ width: fit-content;
1355
+ max-width: min(42rem, 82%);
1356
+ margin-left: auto;
1357
+ border-color: var(--user-message-border);
1358
+ border-radius: 1.15rem;
1359
+ background: var(--user-message-bg);
1360
+ box-shadow: none;
1361
+ }
1362
+
1363
+ .message.user > header,
1364
+ .message.assistant:not(.error) > header {
1365
+ position: absolute;
1366
+ width: 1px;
1367
+ height: 1px;
1368
+ padding: 0;
1369
+ overflow: hidden;
1370
+ clip: rect(0, 0, 0, 0);
1371
+ white-space: nowrap;
1372
+ border: 0;
1373
+ }
1374
+
1375
+ .message.user > .message-content {
1376
+ padding: 0.7rem 1rem;
1377
+ }
1378
+
1379
+ .message.user.pending[data-state="pending"] {
1380
+ border-color: var(--user-message-border);
1381
+ background: var(--user-message-bg);
1382
+ }
1383
+
1384
+ .message.user.pending[data-state="pending"] > header {
1385
+ position: static;
1386
+ display: flex;
1387
+ width: auto;
1388
+ height: auto;
1389
+ align-items: center;
1390
+ justify-content: space-between;
1391
+ gap: 0.6rem;
1392
+ padding: 0.3rem 0.45rem 0 1rem;
1393
+ overflow: visible;
1394
+ clip: auto;
1395
+ border: 0;
1396
+ color: var(--muted);
1397
+ font-size: 0.6rem;
1398
+ font-weight: 700;
1399
+ letter-spacing: 0.06em;
1400
+ white-space: normal;
1401
+ }
1402
+
1403
+ .pending-message-remove {
1404
+ width: 1.75rem;
1405
+ height: 1.75rem;
1406
+ padding: 0;
1407
+ border-color: transparent;
1408
+ background: transparent;
1409
+ color: var(--muted);
1410
+ font-size: 1rem;
1411
+ line-height: 1;
1412
+ }
1413
+
1414
+ .pending-message-remove:hover:not(:disabled) {
1415
+ border-color: var(--border);
1416
+ background: var(--panel);
1417
+ color: var(--text);
1418
+ }
1419
+
1420
+ .message.user.pending[data-state="pending"] > .message-content {
1421
+ padding-top: 0.3rem;
1422
+ }
1423
+
1424
+ .message.assistant:not(.error) {
1425
+ border: 0;
1426
+ border-radius: 0;
1427
+ background: transparent;
1428
+ box-shadow: none;
1429
+ }
1430
+
1431
+ .message.assistant:not(.error) > .message-content {
1432
+ padding: 0;
1433
+ }
1434
+
1435
+ .message.toolResult,
1436
+ .message.live-tool {
1437
+ background: var(--panel-subtle);
1438
+ }
1439
+
1440
+ .message.error {
1441
+ border-color: var(--danger);
1442
+ background: var(--danger-soft);
1443
+ }
1444
+
1445
+ .message-content {
1446
+ padding: 0.85rem;
1447
+ }
1448
+
1449
+ .message-text,
1450
+ .message pre {
1451
+ margin: 0;
1452
+ overflow-wrap: anywhere;
1453
+ color: var(--text);
1454
+ font-family: var(--mono);
1455
+ font-size: 0.82rem;
1456
+ line-height: 1.55;
1457
+ white-space: pre-wrap;
1458
+ }
1459
+
1460
+ .message-content > * + * {
1461
+ margin-top: 0.65rem;
1462
+ }
1463
+
1464
+ .markdown-content {
1465
+ min-width: 0;
1466
+ overflow-wrap: anywhere;
1467
+ color: var(--text);
1468
+ font-family: inherit;
1469
+ font-size: 0.9rem;
1470
+ line-height: 1.65;
1471
+ white-space: normal;
1472
+ }
1473
+
1474
+ .markdown-content > :first-child {
1475
+ margin-top: 0;
1476
+ }
1477
+
1478
+ .markdown-content > :last-child {
1479
+ margin-bottom: 0;
1480
+ }
1481
+
1482
+ .markdown-content p,
1483
+ .markdown-content ul,
1484
+ .markdown-content ol,
1485
+ .markdown-content blockquote,
1486
+ .markdown-content pre,
1487
+ .markdown-content table,
1488
+ .markdown-content hr {
1489
+ margin-block: 0.8rem;
1490
+ }
1491
+
1492
+ .markdown-content h1,
1493
+ .markdown-content h2,
1494
+ .markdown-content h3,
1495
+ .markdown-content h4,
1496
+ .markdown-content h5,
1497
+ .markdown-content h6 {
1498
+ margin: 1.35em 0 0.5em;
1499
+ line-height: 1.25;
1500
+ overflow-wrap: anywhere;
1501
+ }
1502
+
1503
+ .markdown-content h1 {
1504
+ font-size: clamp(1.35rem, 3vw, 1.65rem);
1505
+ }
1506
+
1507
+ .markdown-content h2 {
1508
+ padding-bottom: 0.25rem;
1509
+ border-bottom: 1px solid var(--border);
1510
+ font-size: clamp(1.15rem, 2.5vw, 1.35rem);
1511
+ }
1512
+
1513
+ .markdown-content h3 {
1514
+ font-size: 1.08rem;
1515
+ }
1516
+
1517
+ .markdown-content h4,
1518
+ .markdown-content h5,
1519
+ .markdown-content h6 {
1520
+ font-size: 0.95rem;
1521
+ }
1522
+
1523
+ .markdown-content ul,
1524
+ .markdown-content ol {
1525
+ padding-left: 1.5rem;
1526
+ }
1527
+
1528
+ .markdown-content li + li {
1529
+ margin-top: 0.25rem;
1530
+ }
1531
+
1532
+ .markdown-content li > p {
1533
+ margin-block: 0.35rem;
1534
+ }
1535
+
1536
+ .markdown-content .contains-task-list,
1537
+ .markdown-content .task-list-item {
1538
+ list-style: none;
1539
+ }
1540
+
1541
+ .markdown-content .contains-task-list {
1542
+ padding-left: 0.25rem;
1543
+ }
1544
+
1545
+ .markdown-content input[type="checkbox"] {
1546
+ width: 0.9rem;
1547
+ height: 0.9rem;
1548
+ margin: 0 0.45rem 0 0;
1549
+ accent-color: var(--accent);
1550
+ vertical-align: -0.08rem;
1551
+ }
1552
+
1553
+ .markdown-content blockquote {
1554
+ padding: 0.15rem 0 0.15rem 0.9rem;
1555
+ border-left: 0.22rem solid var(--border-strong);
1556
+ color: var(--muted);
1557
+ }
1558
+
1559
+ .markdown-content blockquote > :first-child {
1560
+ margin-top: 0;
1561
+ }
1562
+
1563
+ .markdown-content blockquote > :last-child {
1564
+ margin-bottom: 0;
1565
+ }
1566
+
1567
+ .markdown-content code,
1568
+ .markdown-content pre {
1569
+ font-family: var(--mono);
1570
+ font-size: 0.8rem;
1571
+ }
1572
+
1573
+ .markdown-content :not(pre) > code {
1574
+ padding: 0.12rem 0.3rem;
1575
+ border: 1px solid var(--border);
1576
+ border-radius: 0.3rem;
1577
+ background: var(--panel-subtle);
1578
+ overflow-wrap: anywhere;
1579
+ }
1580
+
1581
+ .markdown-content pre,
1582
+ .markdown-content .markdown-fallback {
1583
+ max-width: 100%;
1584
+ padding: 0.8rem;
1585
+ overflow-x: auto;
1586
+ border: 1px solid var(--border);
1587
+ border-radius: 0.55rem;
1588
+ background: var(--panel-subtle);
1589
+ line-height: 1.5;
1590
+ overflow-wrap: normal;
1591
+ white-space: pre;
1592
+ }
1593
+
1594
+ .markdown-content pre code {
1595
+ padding: 0;
1596
+ border: 0;
1597
+ background: transparent;
1598
+ white-space: inherit;
1599
+ }
1600
+
1601
+ .markdown-content hr {
1602
+ border: 0;
1603
+ border-top: 1px solid var(--border-strong);
1604
+ }
1605
+
1606
+ .markdown-content table {
1607
+ display: block;
1608
+ width: max-content;
1609
+ max-width: 100%;
1610
+ overflow-x: auto;
1611
+ border-collapse: collapse;
1612
+ font-size: 0.82rem;
1613
+ }
1614
+
1615
+ .markdown-content th,
1616
+ .markdown-content td {
1617
+ min-width: 7rem;
1618
+ padding: 0.4rem 0.55rem;
1619
+ border: 1px solid var(--border);
1620
+ text-align: left;
1621
+ vertical-align: top;
1622
+ }
1623
+
1624
+ .markdown-content th {
1625
+ background: var(--panel-subtle);
1626
+ font-weight: 700;
1627
+ }
1628
+
1629
+ .markdown-content a {
1630
+ color: var(--link);
1631
+ text-decoration-thickness: 0.08em;
1632
+ text-underline-offset: 0.15em;
1633
+ }
1634
+
1635
+ .markdown-content a:hover {
1636
+ color: var(--accent-hover);
1637
+ }
1638
+
1639
+ .markdown-content a:focus-visible {
1640
+ border-radius: 0.2rem;
1641
+ outline: 2px solid var(--accent);
1642
+ outline-offset: 2px;
1643
+ box-shadow: none;
1644
+ }
1645
+
1646
+ .markdown-content .markdown-image {
1647
+ display: block;
1648
+ max-width: 100%;
1649
+ height: auto;
1650
+ margin-block: 0.8rem;
1651
+ border: 1px solid var(--border);
1652
+ border-radius: 0.5rem;
1653
+ }
1654
+
1655
+ .markdown-content .markdown-external-image {
1656
+ display: inline-flex;
1657
+ max-width: 100%;
1658
+ align-items: center;
1659
+ padding: 0.25rem 0.5rem;
1660
+ border: 1px solid var(--border-strong);
1661
+ border-radius: 0.4rem;
1662
+ background: var(--panel-subtle);
1663
+ font-family: var(--mono);
1664
+ font-size: 0.76rem;
1665
+ overflow-wrap: anywhere;
1666
+ }
1667
+
1668
+ .markdown-content .markdown-unsafe-link,
1669
+ .markdown-content .markdown-image-unavailable {
1670
+ color: var(--muted);
1671
+ text-decoration: underline dotted;
1672
+ text-underline-offset: 0.15em;
1673
+ }
1674
+
1675
+ .message details {
1676
+ padding: 0.55rem 0.65rem;
1677
+ border: 1px solid var(--border);
1678
+ border-radius: 0.5rem;
1679
+ color: var(--muted);
1680
+ background: var(--panel);
1681
+ }
1682
+
1683
+ .message details > summary {
1684
+ cursor: pointer;
1685
+ font-family: var(--mono);
1686
+ font-size: 0.75rem;
1687
+ }
1688
+
1689
+ .message summary:focus-visible {
1690
+ border-radius: 0.3rem;
1691
+ box-shadow: 0 0 0 3px var(--focus-ring);
1692
+ outline: none;
1693
+ }
1694
+
1695
+ .message details pre {
1696
+ margin-top: 0.55rem;
1697
+ color: var(--muted);
1698
+ font-size: 0.75rem;
1699
+ }
1700
+
1701
+ .assistant-activity {
1702
+ margin: 0 0 1rem;
1703
+ overflow: hidden;
1704
+ border: 1px solid var(--border);
1705
+ border-radius: 0.75rem;
1706
+ background: var(--panel-subtle);
1707
+ box-shadow: var(--shadow-subtle);
1708
+ }
1709
+
1710
+ .assistant-activity[data-state="running"] {
1711
+ border-color: var(--border-strong);
1712
+ background: var(--panel-subtle);
1713
+ }
1714
+
1715
+ .assistant-activity > summary {
1716
+ display: grid;
1717
+ min-height: 3.25rem;
1718
+ grid-template-columns: auto minmax(0, 1fr) auto;
1719
+ align-items: center;
1720
+ gap: 0.7rem;
1721
+ padding: 0.65rem 0.8rem;
1722
+ cursor: pointer;
1723
+ list-style: none;
1724
+ }
1725
+
1726
+ .assistant-activity > summary::-webkit-details-marker {
1727
+ display: none;
1728
+ }
1729
+
1730
+ .assistant-activity > summary::after {
1731
+ content: "›";
1732
+ color: var(--muted);
1733
+ font-size: 1.15rem;
1734
+ line-height: 1;
1735
+ transform: rotate(0deg);
1736
+ transition: transform 140ms ease;
1737
+ }
1738
+
1739
+ .assistant-activity[open] > summary::after {
1740
+ transform: rotate(90deg);
1741
+ }
1742
+
1743
+ .assistant-activity > summary:focus-visible,
1744
+ .assistant-activity-item > summary:focus-visible {
1745
+ border-radius: 0.3rem;
1746
+ box-shadow: inset 0 0 0 2px var(--focus-ring);
1747
+ outline: none;
1748
+ }
1749
+
1750
+ .assistant-activity-status {
1751
+ position: relative;
1752
+ width: 0.9rem;
1753
+ height: 0.9rem;
1754
+ border: 1.5px solid var(--border-strong);
1755
+ border-radius: 50%;
1756
+ color: var(--accent);
1757
+ }
1758
+
1759
+ .assistant-activity[data-state="running"] .assistant-activity-status {
1760
+ border-color: var(--border-strong);
1761
+ border-top-color: var(--accent);
1762
+ animation: assistant-activity-spin 800ms linear infinite;
1763
+ }
1764
+
1765
+ .assistant-activity[data-state="complete"] .assistant-activity-status,
1766
+ .assistant-activity[data-state="aborted"] .assistant-activity-status {
1767
+ border-color: transparent;
1768
+ }
1769
+
1770
+ .assistant-activity[data-state="complete"] .assistant-activity-status::after,
1771
+ .assistant-activity[data-state="aborted"] .assistant-activity-status::after {
1772
+ position: absolute;
1773
+ inset: -0.32rem;
1774
+ font-size: 0.9rem;
1775
+ font-weight: 800;
1776
+ line-height: 1;
1777
+ text-align: center;
1778
+ }
1779
+
1780
+ .assistant-activity[data-state="complete"] .assistant-activity-status::after {
1781
+ content: "✓";
1782
+ }
1783
+
1784
+ .assistant-activity[data-state="aborted"] .assistant-activity-status::after {
1785
+ content: "■";
1786
+ color: var(--muted);
1787
+ font-size: 0.65rem;
1788
+ }
1789
+
1790
+ .assistant-activity-summary-copy {
1791
+ display: block;
1792
+ min-width: 0;
1793
+ }
1794
+
1795
+ .assistant-activity-title,
1796
+ .assistant-activity-action {
1797
+ display: block;
1798
+ overflow: hidden;
1799
+ text-overflow: ellipsis;
1800
+ white-space: nowrap;
1801
+ }
1802
+
1803
+ .assistant-activity-title {
1804
+ color: var(--text);
1805
+ font-family: var(--mono);
1806
+ font-size: 0.78rem;
1807
+ line-height: 1.4;
1808
+ }
1809
+
1810
+ .assistant-activity-action {
1811
+ margin-top: 0.12rem;
1812
+ color: var(--muted);
1813
+ font-family: var(--mono);
1814
+ font-size: 0.66rem;
1815
+ line-height: 1.35;
1816
+ }
1817
+
1818
+ .assistant-activity-content:not(:empty) {
1819
+ padding: 0.3rem 0.8rem 0.7rem 2.4rem;
1820
+ border-top: 1px solid var(--border);
1821
+ }
1822
+
1823
+ .assistant-activity-item {
1824
+ color: var(--muted);
1825
+ }
1826
+
1827
+ .assistant-activity-item + .assistant-activity-item {
1828
+ border-top: 1px solid var(--border);
1829
+ }
1830
+
1831
+ .assistant-activity-item > summary {
1832
+ padding: 0.55rem 0.15rem;
1833
+ cursor: pointer;
1834
+ font-family: var(--mono);
1835
+ font-size: 0.72rem;
1836
+ line-height: 1.4;
1837
+ }
1838
+
1839
+ .assistant-activity-item-content {
1840
+ padding: 0 0.15rem 0.65rem;
1841
+ }
1842
+
1843
+ .assistant-activity-item-content .message-text,
1844
+ .assistant-activity-item-content pre {
1845
+ margin: 0;
1846
+ overflow-wrap: anywhere;
1847
+ color: var(--muted);
1848
+ font-family: var(--mono);
1849
+ font-size: 0.72rem;
1850
+ line-height: 1.5;
1851
+ white-space: pre-wrap;
1852
+ }
1853
+
1854
+ .assistant-activity-item-content > * + * {
1855
+ margin-top: 0.55rem;
1856
+ }
1857
+
1858
+ @keyframes assistant-activity-spin {
1859
+ to {
1860
+ transform: rotate(360deg);
1861
+ }
1862
+ }
1863
+
1864
+ .extension-widgets {
1865
+ display: flex;
1866
+ max-height: 12rem;
1867
+ margin-bottom: 0.6rem;
1868
+ overflow: auto;
1869
+ flex-wrap: wrap;
1870
+ gap: 0.5rem;
1871
+ }
1872
+
1873
+ .extension-widgets[data-extension-widgets-below] {
1874
+ margin-top: 0.6rem;
1875
+ margin-bottom: 0;
1876
+ }
1877
+
1878
+ .extension-statuses {
1879
+ display: inline-flex;
1880
+ min-width: 0;
1881
+ align-items: baseline;
1882
+ flex-wrap: wrap;
1883
+ gap: 0.3rem;
1884
+ color: var(--muted);
1885
+ }
1886
+
1887
+ .extension-status {
1888
+ overflow-wrap: anywhere;
1889
+ color: var(--muted);
1890
+ font-family: var(--mono);
1891
+ font-size: inherit;
1892
+ }
1893
+
1894
+ .extension-status::before {
1895
+ content: "·";
1896
+ margin-right: 0.3rem;
1897
+ color: var(--muted);
1898
+ }
1899
+
1900
+ .extension-widget {
1901
+ min-width: min(24rem, 100%);
1902
+ padding: 0.6rem 0.75rem;
1903
+ border: 1px solid var(--border-strong);
1904
+ border-radius: 0.65rem;
1905
+ background: var(--panel);
1906
+ }
1907
+
1908
+ .extension-widget-content {
1909
+ margin: 0;
1910
+ overflow-wrap: anywhere;
1911
+ color: var(--text);
1912
+ font-family: var(--mono);
1913
+ font-size: 0.74rem;
1914
+ line-height: 1.45;
1915
+ white-space: pre-wrap;
1916
+ }
1917
+
1918
+ .extension-prompt {
1919
+ margin-bottom: 0.6rem;
1920
+ }
1921
+
1922
+ .extension-prompt-panel {
1923
+ width: 100%;
1924
+ max-height: min(28rem, 45vh);
1925
+ overflow: auto;
1926
+ border: 1px solid var(--border-strong);
1927
+ border-radius: 0.7rem;
1928
+ background: var(--panel);
1929
+ }
1930
+
1931
+ .extension-prompt-panel > header,
1932
+ .extension-prompt-body {
1933
+ padding: 0.5rem 0.65rem;
1934
+ }
1935
+
1936
+ .extension-prompt-panel > header {
1937
+ display: flex;
1938
+ align-items: center;
1939
+ justify-content: space-between;
1940
+ gap: 0.5rem;
1941
+ cursor: pointer;
1942
+ border-bottom: 1px solid var(--border);
1943
+ }
1944
+
1945
+ .extension-prompt-panel h2 {
1946
+ min-width: 0;
1947
+ margin: 0;
1948
+ overflow-wrap: anywhere;
1949
+ flex: 1 1 auto;
1950
+ font-size: 0.88rem;
1951
+ }
1952
+
1953
+ .extension-prompt-title-toggle,
1954
+ .extension-prompt-title-toggle:hover:not(:disabled) {
1955
+ width: 100%;
1956
+ padding: 0;
1957
+ border-color: transparent;
1958
+ border-radius: 0.25rem;
1959
+ background: transparent;
1960
+ color: var(--text);
1961
+ font-size: inherit;
1962
+ line-height: inherit;
1963
+ text-align: left;
1964
+ }
1965
+
1966
+ .extension-prompt-header-actions {
1967
+ display: flex;
1968
+ align-items: center;
1969
+ gap: 0.3rem;
1970
+ flex: none;
1971
+ }
1972
+
1973
+ .extension-prompt-header-actions button {
1974
+ height: 1.65rem;
1975
+ padding: 0 0.5rem;
1976
+ border-radius: 0.4rem;
1977
+ font-size: 0.7rem;
1978
+ line-height: 1;
1979
+ }
1980
+
1981
+ .extension-prompt-panel.is-collapsed > header {
1982
+ border-bottom: 0;
1983
+ }
1984
+
1985
+ .extension-prompt-panel.is-collapsed .extension-prompt-body,
1986
+ .extension-prompt-panel.is-collapsed .extension-prompt-actions {
1987
+ display: none;
1988
+ }
1989
+
1990
+ .extension-prompt-body {
1991
+ display: grid;
1992
+ gap: 0.4rem;
1993
+ }
1994
+
1995
+ .extension-prompt-choices {
1996
+ display: grid;
1997
+ gap: 0.3rem;
1998
+ }
1999
+
2000
+ .extension-prompt-choices button {
2001
+ width: 100%;
2002
+ padding: 0.42rem 0.65rem;
2003
+ line-height: 1.25;
2004
+ text-align: left;
2005
+ }
2006
+
2007
+ .extension-prompt-field {
2008
+ width: 100%;
2009
+ max-height: 12rem;
2010
+ }
2011
+
2012
+ .extension-prompt-actions {
2013
+ display: flex;
2014
+ justify-content: flex-end;
2015
+ padding: 0.4rem 0.65rem;
2016
+ flex-wrap: wrap;
2017
+ gap: 0.35rem;
2018
+ border-top: 1px solid var(--border);
2019
+ }
2020
+
2021
+ .extension-prompt-actions:empty {
2022
+ display: none;
2023
+ }
2024
+
2025
+ .composer {
2026
+ padding: 0.55rem 0.75rem 0.65rem;
2027
+ background: transparent;
2028
+ grid-area: composer;
2029
+ }
2030
+
2031
+ .composer-inner {
2032
+ width: min(54rem, 100%);
2033
+ margin: 0 auto;
2034
+ }
2035
+
2036
+ .slash-completion {
2037
+ max-height: 15rem;
2038
+ margin-bottom: 0.4rem;
2039
+ overflow: hidden;
2040
+ border: 1px solid var(--border-strong);
2041
+ border-radius: 0.65rem;
2042
+ background: var(--panel);
2043
+ box-shadow: var(--shadow);
2044
+ }
2045
+
2046
+ .slash-completion-option {
2047
+ display: grid;
2048
+ grid-template-columns: minmax(8rem, auto) minmax(0, 1fr);
2049
+ width: 100%;
2050
+ padding: 0.5rem 0.7rem;
2051
+ gap: 0.8rem;
2052
+ border: 0;
2053
+ border-radius: 0;
2054
+ background: transparent;
2055
+ color: var(--text);
2056
+ font-weight: 400;
2057
+ line-height: 1.25;
2058
+ text-align: left;
2059
+ }
2060
+
2061
+ .slash-completion-option + .slash-completion-option {
2062
+ border-top: 1px solid var(--border);
2063
+ }
2064
+
2065
+ .slash-completion-option:hover,
2066
+ .slash-completion-option[aria-selected="true"] {
2067
+ background: var(--accent-soft);
2068
+ color: var(--text);
2069
+ }
2070
+
2071
+ .slash-completion-name {
2072
+ overflow: hidden;
2073
+ color: var(--accent-hover);
2074
+ font-family: var(--mono);
2075
+ font-weight: 700;
2076
+ text-overflow: ellipsis;
2077
+ white-space: nowrap;
2078
+ }
2079
+
2080
+ .slash-completion-description {
2081
+ overflow: hidden;
2082
+ color: var(--muted);
2083
+ text-overflow: ellipsis;
2084
+ white-space: nowrap;
2085
+ }
2086
+
2087
+ .composer-input-row {
2088
+ display: flex;
2089
+ align-items: flex-end;
2090
+ gap: 0.45rem;
2091
+ }
2092
+
2093
+ .composer textarea {
2094
+ min-width: 0;
2095
+ min-height: 2.35rem;
2096
+ max-height: min(12rem, 30vh);
2097
+ padding: 0.45rem 0.7rem;
2098
+ overflow-y: hidden;
2099
+ border-color: var(--border);
2100
+ flex: 1;
2101
+ line-height: 1.35;
2102
+ resize: none;
2103
+ }
2104
+
2105
+ .composer textarea:focus {
2106
+ border-color: var(--accent);
2107
+ box-shadow: none;
2108
+ }
2109
+
2110
+ .composer-actions {
2111
+ display: flex;
2112
+ align-items: center;
2113
+ justify-content: flex-end;
2114
+ gap: 0.45rem;
2115
+ }
2116
+
2117
+ .composer-actions button {
2118
+ height: 2.35rem;
2119
+ flex: none;
2120
+ padding: 0 0.65rem;
2121
+ border-radius: 0.5rem;
2122
+ font-size: 0.78rem;
2123
+ }
2124
+
2125
+ .sr-only {
2126
+ position: absolute;
2127
+ width: 1px;
2128
+ height: 1px;
2129
+ padding: 0;
2130
+ overflow: hidden;
2131
+ clip: rect(0, 0, 0, 0);
2132
+ white-space: nowrap;
2133
+ border: 0;
2134
+ }
2135
+
2136
+ @media (max-width: 56rem) {
2137
+ .workspace {
2138
+ grid-template-areas:
2139
+ "context"
2140
+ "transcript"
2141
+ "composer";
2142
+ grid-template-columns: minmax(0, 1fr);
2143
+ grid-template-rows: auto minmax(0, 1fr) auto;
2144
+ }
2145
+
2146
+ .session-context {
2147
+ padding: 0.4rem max(0.75rem, calc((100% - 54rem) / 2));
2148
+ overflow: visible;
2149
+ border-right: 0;
2150
+ border-bottom: 1px solid var(--border);
2151
+ background: var(--panel);
2152
+ }
2153
+
2154
+ .session-identity {
2155
+ grid-template-areas: "nav title actions";
2156
+ grid-template-columns: auto minmax(0, 1fr) auto;
2157
+ align-items: center;
2158
+ gap: 0.65rem;
2159
+ margin-bottom: 0.2rem;
2160
+ padding-bottom: 0.4rem;
2161
+ }
2162
+
2163
+ .session-identity-meta {
2164
+ display: contents;
2165
+ }
2166
+
2167
+ .session-navigation {
2168
+ grid-area: nav;
2169
+ }
2170
+
2171
+ .session-header-actions {
2172
+ grid-area: actions;
2173
+ }
2174
+
2175
+ .session-title-row {
2176
+ grid-area: title;
2177
+ }
2178
+
2179
+ .session-title-row h1 {
2180
+ font-size: 0.82rem;
2181
+ }
2182
+
2183
+ .session-context h2 {
2184
+ display: none;
2185
+ }
2186
+
2187
+ .session-context-toggle {
2188
+ display: flex;
2189
+ width: 100%;
2190
+ min-height: 2rem;
2191
+ align-items: center;
2192
+ justify-content: space-between;
2193
+ padding: 0.25rem 0.35rem;
2194
+ border-color: transparent;
2195
+ background: transparent;
2196
+ color: var(--muted);
2197
+ font-family: var(--mono);
2198
+ font-size: 0.65rem;
2199
+ letter-spacing: 0.04em;
2200
+ text-transform: uppercase;
2201
+ }
2202
+
2203
+ .session-context-toggle:hover:not(:disabled) {
2204
+ border-color: var(--border);
2205
+ }
2206
+
2207
+ .session-context-toggle::after {
2208
+ content: "›";
2209
+ color: var(--muted);
2210
+ font-size: 1.15rem;
2211
+ line-height: 1;
2212
+ transform: rotate(0deg);
2213
+ transition: transform 140ms ease;
2214
+ }
2215
+
2216
+ .session-context-toggle[aria-expanded="true"]::after {
2217
+ transform: rotate(90deg);
2218
+ }
2219
+
2220
+ .session-context-content {
2221
+ padding-top: 0.4rem;
2222
+ flex: none;
2223
+ }
2224
+
2225
+ .session-context.is-collapsed .session-context-content {
2226
+ display: none;
2227
+ }
2228
+
2229
+ .session-context-content > dl {
2230
+ grid-template-columns: repeat(3, minmax(0, 1fr));
2231
+ align-items: start;
2232
+ gap: 0.6rem 0.75rem;
2233
+ }
2234
+
2235
+ .session-context-content > dl > .session-workspace-item,
2236
+ .session-context-content > dl > .session-status-item,
2237
+ .session-context-content > dl > .session-context-usage-item {
2238
+ grid-column: 1 / -1;
2239
+ }
2240
+
2241
+ .session-context-content > dl > div > dt {
2242
+ margin-bottom: 0.08rem;
2243
+ font-size: 0.56rem;
2244
+ }
2245
+
2246
+ .session-context-content > dl > div > dd {
2247
+ font-size: 0.61rem;
2248
+ line-height: 1.25;
2249
+ }
2250
+
2251
+ .session-context-content > .extension-widgets {
2252
+ max-height: 7rem;
2253
+ margin-top: 0.5rem;
2254
+ flex: none;
2255
+ }
2256
+ }
2257
+
2258
+ @media (prefers-reduced-motion: reduce) {
2259
+ .assistant-activity > summary::after,
2260
+ .session-context-toggle::after {
2261
+ transition: none;
2262
+ }
2263
+
2264
+ .assistant-activity[data-state="running"] .assistant-activity-status {
2265
+ animation: none;
2266
+ box-shadow: inset 0 0 0 2px var(--panel);
2267
+ background: var(--accent);
2268
+ }
2269
+ }
2270
+
2271
+ @media (max-width: 38rem) {
2272
+ .app-notification {
2273
+ padding-inline: 0.65rem;
2274
+ }
2275
+
2276
+ .home-screen {
2277
+ padding-top: 2rem;
2278
+ }
2279
+
2280
+ .choice-buttons {
2281
+ width: 100%;
2282
+ }
2283
+
2284
+ .checkout-control {
2285
+ align-items: flex-start;
2286
+ flex-wrap: wrap;
2287
+ }
2288
+
2289
+ .checkout-control select {
2290
+ flex-basis: 100%;
2291
+ }
2292
+
2293
+ .new-worktree-mode {
2294
+ padding: 0.65rem 0 0;
2295
+ }
2296
+
2297
+ .repository-worktree-editor {
2298
+ margin-left: 0.45rem;
2299
+ }
2300
+
2301
+ .new-session-actions {
2302
+ align-items: stretch;
2303
+ flex-direction: column-reverse;
2304
+ }
2305
+
2306
+ .session-create-submit {
2307
+ width: 100%;
2308
+ }
2309
+
2310
+ .new-session-toggle {
2311
+ padding-inline: 0.6rem;
2312
+ font-size: 0.75rem;
2313
+ }
2314
+
2315
+ .session-list-heading {
2316
+ gap: 0.5rem;
2317
+ }
2318
+
2319
+ .session-group-header {
2320
+ align-items: flex-start;
2321
+ flex-wrap: wrap;
2322
+ gap: 0.25rem 0.4rem;
2323
+ }
2324
+
2325
+ .session-group-identity {
2326
+ align-items: flex-start;
2327
+ }
2328
+
2329
+ .session-group-header h3 {
2330
+ white-space: normal;
2331
+ overflow-wrap: anywhere;
2332
+ }
2333
+
2334
+ .worktree-list,
2335
+ .standalone-sessions {
2336
+ padding-left: 0.45rem;
2337
+ }
2338
+
2339
+ .worktree-header {
2340
+ align-items: flex-start;
2341
+ flex-wrap: wrap;
2342
+ gap: 0.25rem 0.5rem;
2343
+ }
2344
+
2345
+ .worktree-heading-context {
2346
+ flex: 1 1 100%;
2347
+ align-items: flex-start;
2348
+ flex-wrap: wrap;
2349
+ gap: 0.25rem 0.4rem;
2350
+ }
2351
+
2352
+ .worktree-header > .worktree-delete {
2353
+ margin-left: auto;
2354
+ }
2355
+
2356
+ .session-button {
2357
+ gap: 0.5rem;
2358
+ padding: 0.65rem 0.7rem;
2359
+ }
2360
+
2361
+ .session-delete.destructive {
2362
+ min-width: 4.2rem;
2363
+ padding-inline: 0.5rem;
2364
+ }
2365
+
2366
+ .session-identity {
2367
+ gap: 0.45rem;
2368
+ }
2369
+
2370
+ .back-button,
2371
+ .create-session {
2372
+ min-width: 2.75rem;
2373
+ min-height: 2.75rem;
2374
+ justify-content: center;
2375
+ padding: 0;
2376
+ border: 1px solid var(--border-strong);
2377
+ border-radius: 0.6rem;
2378
+ background: var(--panel);
2379
+ font-size: 1rem;
2380
+ line-height: 1;
2381
+ }
2382
+
2383
+ .back-button:hover,
2384
+ .create-session:hover {
2385
+ border-color: var(--border-strong);
2386
+ background: var(--panel-subtle);
2387
+ text-decoration: none;
2388
+ }
2389
+
2390
+ .back-button span,
2391
+ .create-session-label {
2392
+ display: none;
2393
+ }
2394
+
2395
+ .transcript {
2396
+ --transcript-block-padding: 1rem;
2397
+
2398
+ padding: var(--transcript-block-padding) 0.75rem;
2399
+ }
2400
+
2401
+ .message.user.pending[data-state="pending"] {
2402
+ max-width: 90%;
2403
+ }
2404
+
2405
+ .markdown-content {
2406
+ font-size: 0.86rem;
2407
+ }
2408
+
2409
+ .markdown-content th,
2410
+ .markdown-content td {
2411
+ min-width: 6rem;
2412
+ }
2413
+
2414
+ .pending-message-remove {
2415
+ width: 2.25rem;
2416
+ height: 2.25rem;
2417
+ }
2418
+
2419
+ .assistant-activity > summary {
2420
+ gap: 0.55rem;
2421
+ padding-inline: 0.65rem;
2422
+ }
2423
+
2424
+ .assistant-activity-content:not(:empty) {
2425
+ padding-right: 0.65rem;
2426
+ padding-left: 2.1rem;
2427
+ }
2428
+
2429
+ .composer {
2430
+ padding: 0.5rem;
2431
+ }
2432
+
2433
+ .composer-input-row {
2434
+ align-items: stretch;
2435
+ flex-direction: column;
2436
+ }
2437
+
2438
+ .composer textarea {
2439
+ width: 100%;
2440
+ flex: none;
2441
+ }
2442
+
2443
+ .composer-actions {
2444
+ width: 100%;
2445
+ }
2446
+
2447
+ .slash-completion-option {
2448
+ display: block;
2449
+ }
2450
+
2451
+ .slash-completion-description {
2452
+ display: block;
2453
+ margin-top: 0.15rem;
2454
+ }
2455
+
2456
+ .session-context-content > dl {
2457
+ grid-template-columns: minmax(0, 1fr);
2458
+ }
2459
+
2460
+ .session-context-content > dl > .session-context-usage-item {
2461
+ grid-column: auto;
2462
+ }
2463
+ }