claude-remote-cli 2.2.1 → 2.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.
package/public/style.css DELETED
@@ -1,1246 +0,0 @@
1
- /* ===== CSS Variables ===== */
2
- :root {
3
- --bg: #1a1a1a;
4
- --surface: #2b2b2b;
5
- --accent: #d97757;
6
- --text: #ececec;
7
- --text-muted: #9b9b9b;
8
- --border: #3d3d3d;
9
- --sidebar-width: 240px;
10
- --toolbar-height: auto;
11
- }
12
-
13
- /* ===== Reset & Base ===== */
14
- [hidden] {
15
- display: none !important;
16
- }
17
-
18
- *, *::before, *::after {
19
- box-sizing: border-box;
20
- margin: 0;
21
- padding: 0;
22
- }
23
-
24
- html, body {
25
- height: 100%;
26
- overflow: hidden;
27
- background: var(--bg);
28
- color: var(--text);
29
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
30
- font-size: 15px;
31
- }
32
-
33
- /* ===== PIN Gate ===== */
34
- #pin-gate {
35
- display: flex;
36
- align-items: center;
37
- justify-content: center;
38
- height: 100vh;
39
- background: var(--bg);
40
- padding: 1rem;
41
- }
42
-
43
- .pin-container {
44
- display: flex;
45
- flex-direction: column;
46
- align-items: center;
47
- gap: 1rem;
48
- width: 100%;
49
- max-width: 320px;
50
- text-align: center;
51
- }
52
-
53
- .pin-container h1 {
54
- font-size: 1.5rem;
55
- color: var(--text);
56
- }
57
-
58
- .pin-container p {
59
- color: var(--text-muted);
60
- font-size: 0.95rem;
61
- }
62
-
63
- #pin-input {
64
- width: 100%;
65
- padding: 14px 16px;
66
- background: var(--surface);
67
- border: 1px solid var(--border);
68
- border-radius: 8px;
69
- color: var(--text);
70
- font-size: 1.2rem;
71
- text-align: center;
72
- outline: none;
73
- -webkit-appearance: none;
74
- }
75
-
76
- #pin-input:focus {
77
- border-color: var(--accent);
78
- }
79
-
80
- #pin-submit {
81
- width: 100%;
82
- padding: 14px;
83
- background: var(--accent);
84
- color: #fff;
85
- border: none;
86
- border-radius: 8px;
87
- font-size: 1rem;
88
- font-weight: 600;
89
- cursor: pointer;
90
- touch-action: manipulation;
91
- }
92
-
93
- #pin-submit:active {
94
- opacity: 0.8;
95
- }
96
-
97
- .error {
98
- color: var(--accent);
99
- font-size: 0.9rem;
100
- }
101
-
102
- /* ===== Main App Layout ===== */
103
- #main-app {
104
- display: flex;
105
- flex-direction: row;
106
- width: 100%;
107
- height: 100vh;
108
- height: 100dvh;
109
- overflow: hidden;
110
- }
111
-
112
- #sidebar-overlay {
113
- display: none;
114
- }
115
-
116
- /* ===== Sidebar ===== */
117
- #sidebar {
118
- display: flex;
119
- flex-direction: column;
120
- width: var(--sidebar-width);
121
- min-width: var(--sidebar-width);
122
- background: var(--surface);
123
- border-right: 1px solid var(--border);
124
- overflow: hidden;
125
- transition: transform 0.25s ease;
126
- z-index: 100;
127
- }
128
-
129
- .sidebar-header {
130
- display: flex;
131
- align-items: center;
132
- justify-content: space-between;
133
- padding: 12px 10px;
134
- border-bottom: 1px solid var(--border);
135
- flex-shrink: 0;
136
- }
137
-
138
- .sidebar-label {
139
- font-size: 0.85rem;
140
- font-weight: 600;
141
- color: var(--text-muted);
142
- text-transform: uppercase;
143
- letter-spacing: 0.05em;
144
- }
145
-
146
- .icon-btn {
147
- background: none;
148
- border: none;
149
- color: var(--text);
150
- font-size: 1.2rem;
151
- cursor: pointer;
152
- padding: 4px 6px;
153
- border-radius: 4px;
154
- touch-action: manipulation;
155
- display: none; /* shown on mobile */
156
- }
157
-
158
- .icon-btn:active {
159
- background: var(--border);
160
- }
161
-
162
- .sidebar-filters {
163
- display: flex;
164
- flex-direction: column;
165
- gap: 4px;
166
- padding: 6px 8px;
167
- flex-shrink: 0;
168
- }
169
-
170
- .sidebar-filters select {
171
- padding: 6px 8px;
172
- background: var(--bg);
173
- border: 1px solid var(--border);
174
- border-radius: 6px;
175
- color: var(--text);
176
- font-size: 0.75rem;
177
- outline: none;
178
- -webkit-appearance: none;
179
- appearance: none;
180
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23aaa' fill='none' stroke-width='1.5'/%3E%3C/svg%3E");
181
- background-repeat: no-repeat;
182
- background-position: right 8px center;
183
- cursor: pointer;
184
- }
185
-
186
- .sidebar-filters select:focus {
187
- border-color: var(--accent);
188
- }
189
-
190
- .sidebar-filters input {
191
- padding: 6px 8px;
192
- background: var(--bg);
193
- border: 1px solid var(--border);
194
- border-radius: 6px;
195
- color: var(--text);
196
- font-size: 0.75rem;
197
- outline: none;
198
- -webkit-appearance: none;
199
- }
200
-
201
- .sidebar-filters input:focus {
202
- border-color: var(--accent);
203
- }
204
-
205
- /* Sidebar Tabs */
206
- .sidebar-tabs {
207
- display: flex;
208
- gap: 0;
209
- padding: 0 8px;
210
- border-bottom: 1px solid var(--border);
211
- }
212
-
213
- .sidebar-tab {
214
- flex: 1;
215
- background: none;
216
- border: none;
217
- border-bottom: 2px solid transparent;
218
- color: var(--text-muted);
219
- font-size: 0.7rem;
220
- padding: 6px 4px;
221
- cursor: pointer;
222
- transition: color 0.15s, border-color 0.15s;
223
- text-align: center;
224
- }
225
-
226
- .sidebar-tab:hover {
227
- color: var(--text);
228
- }
229
-
230
- .sidebar-tab.active {
231
- color: var(--accent);
232
- border-bottom-color: var(--accent);
233
- }
234
-
235
- #session-list {
236
- list-style: none;
237
- flex: 1;
238
- overflow-y: auto;
239
- padding: 8px 0;
240
- }
241
-
242
- #session-list li {
243
- display: flex;
244
- align-items: flex-start;
245
- justify-content: space-between;
246
- gap: 4px;
247
- padding: 8px 10px;
248
- cursor: pointer;
249
- border-radius: 6px;
250
- margin: 2px 6px;
251
- font-size: 0.8rem;
252
- color: var(--text-muted);
253
- touch-action: manipulation;
254
- transition: background 0.15s, border-color 0.15s;
255
- }
256
-
257
- /* Active session (filled) */
258
- #session-list li.active-session {
259
- background: var(--bg);
260
- }
261
-
262
- #session-list li.active-session:hover {
263
- background: var(--border);
264
- }
265
-
266
- #session-list li.active-session.active {
267
- background: var(--accent);
268
- color: #fff;
269
- }
270
-
271
- #session-list li.active-session.active .session-sub {
272
- color: rgba(255, 255, 255, 0.7);
273
- }
274
-
275
- #session-list li.active-session.active .session-time {
276
- color: rgba(255, 255, 255, 0.5);
277
- }
278
-
279
- /* Inactive worktree (outline) */
280
- #session-list li.inactive-worktree {
281
- background: transparent;
282
- border: 1px solid var(--border);
283
- color: var(--text-muted);
284
- opacity: 0.7;
285
- }
286
-
287
- #session-list li.inactive-worktree:hover {
288
- opacity: 1;
289
- border-color: var(--accent);
290
- }
291
-
292
- .session-info {
293
- display: flex;
294
- flex-direction: row;
295
- flex-wrap: wrap;
296
- gap: 2px;
297
- min-width: 0;
298
- flex: 1;
299
- align-items: center;
300
- }
301
-
302
- .session-name {
303
- min-width: 0;
304
- overflow: hidden;
305
- text-overflow: ellipsis;
306
- white-space: nowrap;
307
- font-weight: 500;
308
- color: var(--text);
309
- }
310
-
311
- .status-dot {
312
- display: inline-block;
313
- width: 8px;
314
- height: 8px;
315
- border-radius: 50%;
316
- flex-shrink: 0;
317
- margin-right: 8px;
318
- margin-top: 2px;
319
- }
320
-
321
- .status-dot--running {
322
- background: #4ade80;
323
- }
324
-
325
- .status-dot--idle {
326
- background: #60a5fa;
327
- }
328
-
329
- .status-dot--attention {
330
- background: #f59e0b;
331
- box-shadow: 0 0 6px 2px rgba(245, 158, 11, 0.5);
332
- animation: attention-glow 2s ease-in-out infinite;
333
- }
334
-
335
- @keyframes attention-glow {
336
- 0%, 100% { box-shadow: 0 0 4px 1px rgba(245, 158, 11, 0.3); }
337
- 50% { box-shadow: 0 0 8px 3px rgba(245, 158, 11, 0.6); }
338
- }
339
-
340
- .status-dot--inactive {
341
- background: #6b7280;
342
- }
343
-
344
- .session-sub {
345
- font-size: 0.7rem;
346
- color: var(--text-muted);
347
- overflow: hidden;
348
- text-overflow: ellipsis;
349
- white-space: nowrap;
350
- }
351
-
352
- .session-time {
353
- font-size: 0.65rem;
354
- color: var(--text-muted);
355
- opacity: 0.6;
356
- overflow: hidden;
357
- text-overflow: ellipsis;
358
- white-space: nowrap;
359
- }
360
-
361
- .session-sub, .session-time {
362
- width: 100%;
363
- padding-left: 16px; /* aligns with name text: status-dot 8px + margin-right 8px */
364
- }
365
-
366
- .session-actions {
367
- display: flex;
368
- align-items: center;
369
- gap: 2px;
370
- flex-shrink: 0;
371
- }
372
-
373
- /* Divider between active and inactive */
374
- .session-divider {
375
- font-size: 0.65rem;
376
- font-weight: 600;
377
- color: var(--text-muted);
378
- text-transform: uppercase;
379
- letter-spacing: 0.05em;
380
- padding: 8px 12px 4px;
381
- opacity: 0.6;
382
- }
383
-
384
- .session-kill {
385
- background: none;
386
- border: none;
387
- color: var(--text-muted);
388
- font-size: 1.1rem;
389
- cursor: pointer;
390
- padding: 2px 6px;
391
- border-radius: 4px;
392
- touch-action: manipulation;
393
- flex-shrink: 0;
394
- }
395
-
396
- .session-kill:hover,
397
- .session-kill:active {
398
- color: var(--accent);
399
- background: rgba(217, 119, 87, 0.15);
400
- }
401
-
402
- .session-rename-btn {
403
- background: none;
404
- border: none;
405
- color: var(--text-muted);
406
- font-size: 0.75rem;
407
- cursor: pointer;
408
- padding: 2px 4px;
409
- border-radius: 4px;
410
- touch-action: manipulation;
411
- flex-shrink: 0;
412
- }
413
-
414
- .session-rename-btn:hover {
415
- color: var(--accent);
416
- }
417
-
418
- .session-rename-input {
419
- background: var(--bg);
420
- border: 1px solid var(--accent);
421
- border-radius: 4px;
422
- color: var(--text);
423
- font-size: 0.8rem;
424
- padding: 2px 6px;
425
- outline: none;
426
- width: 100%;
427
- font-weight: 500;
428
- }
429
-
430
- #new-session-btn {
431
- margin: 8px;
432
- padding: 10px 12px;
433
- background: none;
434
- border: 1px solid var(--border);
435
- border-radius: 6px;
436
- color: var(--text);
437
- font-size: 0.875rem;
438
- cursor: pointer;
439
- touch-action: manipulation;
440
- text-align: center;
441
- flex-shrink: 0;
442
- }
443
-
444
- #new-session-btn:active {
445
- background: var(--border);
446
- }
447
-
448
- #settings-btn {
449
- margin: 0 8px 8px;
450
- padding: 10px 12px;
451
- background: none;
452
- border: 1px solid var(--border);
453
- border-radius: 6px;
454
- color: var(--text-muted);
455
- font-size: 0.8rem;
456
- cursor: pointer;
457
- touch-action: manipulation;
458
- text-align: center;
459
- flex-shrink: 0;
460
- }
461
-
462
- #settings-btn:active {
463
- background: var(--border);
464
- }
465
-
466
- /* ===== Terminal Area ===== */
467
- #terminal-area {
468
- flex: 1;
469
- display: flex;
470
- flex-direction: column;
471
- min-width: 0;
472
- overflow: hidden;
473
- position: relative;
474
- }
475
-
476
- #mobile-header {
477
- display: none; /* shown on mobile */
478
- }
479
-
480
- #terminal-container {
481
- flex: 1;
482
- overflow: hidden;
483
- background: #000;
484
- }
485
-
486
- #terminal-container .xterm {
487
- height: 100%;
488
- }
489
-
490
- #no-session-msg {
491
- position: absolute;
492
- top: 50%;
493
- left: 50%;
494
- transform: translate(-50%, -50%);
495
- color: var(--text-muted);
496
- font-size: 0.95rem;
497
- text-align: center;
498
- pointer-events: none;
499
- }
500
-
501
- #mobile-input {
502
- position: absolute;
503
- left: 0;
504
- top: 0;
505
- width: 1px;
506
- height: 1px;
507
- opacity: 0;
508
- font-size: 16px; /* prevents iOS zoom on focus */
509
- z-index: -1;
510
- border: 0;
511
- padding: 0;
512
- margin: 0;
513
- outline: none;
514
- color: transparent;
515
- caret-color: transparent;
516
- background: transparent;
517
- }
518
-
519
- /* ===== Terminal Scrollbar ===== */
520
- #terminal-scrollbar {
521
- display: none;
522
- position: absolute;
523
- top: 0;
524
- right: 2px;
525
- bottom: 0;
526
- width: 6px;
527
- z-index: 10;
528
- pointer-events: auto;
529
- }
530
-
531
- #terminal-scrollbar-thumb {
532
- position: absolute;
533
- right: 0;
534
- width: 6px;
535
- min-height: 20px;
536
- background: var(--border);
537
- border-radius: 3px;
538
- opacity: 0.7;
539
- touch-action: none;
540
- }
541
-
542
- /* ===== Touch Toolbar ===== */
543
- #toolbar {
544
- display: none;
545
- flex-shrink: 0;
546
- background: var(--surface);
547
- border-top: 1px solid var(--border);
548
- padding: 6px 4px;
549
- padding-bottom: calc(6px + env(safe-area-inset-bottom, 0px));
550
- }
551
-
552
- .toolbar-grid {
553
- display: grid;
554
- grid-template-columns: repeat(6, 1fr);
555
- grid-template-rows: auto auto;
556
- gap: 4px;
557
- max-width: 500px;
558
- margin: 0 auto;
559
- }
560
-
561
- .tb-btn {
562
- padding: 14px 4px;
563
- background: var(--bg);
564
- border: 1px solid var(--border);
565
- border-radius: 6px;
566
- color: var(--text);
567
- font-size: 0.85rem;
568
- font-family: monospace;
569
- cursor: pointer;
570
- touch-action: manipulation;
571
- -webkit-tap-highlight-color: transparent;
572
- text-align: center;
573
- white-space: nowrap;
574
- min-height: 44px;
575
- }
576
-
577
- .tb-btn:active {
578
- background: var(--accent);
579
- border-color: var(--accent);
580
- color: #fff;
581
- }
582
-
583
- .tb-btn.tb-arrow {
584
- font-size: 1.1rem;
585
- }
586
-
587
- /* ===== Dialog ===== */
588
- dialog#new-session-dialog {
589
- background: var(--surface);
590
- border: 1px solid var(--border);
591
- border-radius: 12px;
592
- color: var(--text);
593
- padding: 1.5rem;
594
- width: 90%;
595
- max-width: 400px;
596
- max-height: 80vh;
597
- overflow-y: auto;
598
- margin: auto;
599
- }
600
-
601
- dialog#new-session-dialog::backdrop {
602
- background: rgba(0, 0, 0, 0.7);
603
- }
604
-
605
- dialog#new-session-dialog h2 {
606
- font-size: 1.1rem;
607
- margin-bottom: 1rem;
608
- }
609
-
610
- .dialog-field {
611
- display: flex;
612
- flex-direction: column;
613
- gap: 4px;
614
- margin-bottom: 12px;
615
- }
616
-
617
- .dialog-field label,
618
- .dialog-field-label {
619
- font-size: 0.8rem;
620
- font-weight: 600;
621
- color: var(--text-muted);
622
- text-transform: uppercase;
623
- letter-spacing: 0.05em;
624
- }
625
-
626
- .dialog-field select {
627
- padding: 10px 12px;
628
- background: var(--bg);
629
- border: 1px solid var(--border);
630
- border-radius: 6px;
631
- color: var(--text);
632
- font-size: 0.875rem;
633
- outline: none;
634
- -webkit-appearance: none;
635
- appearance: none;
636
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23aaa' fill='none' stroke-width='1.5'/%3E%3C/svg%3E");
637
- background-repeat: no-repeat;
638
- background-position: right 12px center;
639
- cursor: pointer;
640
- }
641
-
642
- .dialog-field select:focus {
643
- border-color: var(--accent);
644
- }
645
-
646
- .dialog-field select:disabled {
647
- opacity: 0.5;
648
- cursor: not-allowed;
649
- }
650
-
651
- /* ===== Branch Input ===== */
652
- .branch-input-wrapper {
653
- position: relative;
654
- }
655
-
656
- .branch-input-wrapper input {
657
- width: 100%;
658
- padding: 10px 12px;
659
- background: var(--bg);
660
- border: 1px solid var(--border);
661
- border-radius: 6px;
662
- color: var(--text);
663
- font-size: 0.875rem;
664
- outline: none;
665
- -webkit-appearance: none;
666
- }
667
-
668
- .branch-input-wrapper input:focus {
669
- border-color: var(--accent);
670
- }
671
-
672
- .branch-dropdown {
673
- position: absolute;
674
- top: 100%;
675
- left: 0;
676
- right: 0;
677
- max-height: 200px;
678
- overflow-y: auto;
679
- background: var(--bg);
680
- border: 1px solid var(--border);
681
- border-top: none;
682
- border-radius: 0 0 6px 6px;
683
- list-style: none;
684
- z-index: 10;
685
- margin: 0;
686
- padding: 0;
687
- }
688
-
689
- .branch-dropdown li {
690
- padding: 8px 12px;
691
- font-size: 0.85rem;
692
- color: var(--text);
693
- cursor: pointer;
694
- }
695
-
696
- .branch-dropdown li:hover,
697
- .branch-dropdown li.highlighted {
698
- background: var(--surface);
699
- color: var(--accent);
700
- }
701
-
702
- .branch-dropdown li.branch-create-new {
703
- color: var(--accent);
704
- font-style: italic;
705
- }
706
-
707
- .repo-group-label {
708
- font-size: 0.75rem;
709
- font-weight: 600;
710
- color: var(--text-muted);
711
- text-transform: uppercase;
712
- letter-spacing: 0.05em;
713
- padding: 6px 4px 2px;
714
- }
715
-
716
- .repo-item {
717
- padding: 10px 12px;
718
- background: var(--bg);
719
- border: 1px solid var(--border);
720
- border-radius: 6px;
721
- color: var(--text);
722
- cursor: pointer;
723
- font-size: 0.875rem;
724
- touch-action: manipulation;
725
- text-align: left;
726
- width: 100%;
727
- }
728
-
729
- .repo-item:active,
730
- .repo-item.selected {
731
- border-color: var(--accent);
732
- color: var(--accent);
733
- }
734
-
735
- .dialog-separator {
736
- border: none;
737
- border-top: 1px solid var(--border);
738
- margin: 0.75rem 0;
739
- }
740
-
741
- .dialog-custom-path {
742
- display: flex;
743
- flex-direction: column;
744
- gap: 6px;
745
- margin-bottom: 1rem;
746
- }
747
-
748
- .dialog-custom-path label {
749
- font-size: 0.85rem;
750
- color: var(--text-muted);
751
- }
752
-
753
- .dialog-custom-path input {
754
- padding: 10px 12px;
755
- background: var(--bg);
756
- border: 1px solid var(--border);
757
- border-radius: 6px;
758
- color: var(--text);
759
- font-size: 0.9rem;
760
- outline: none;
761
- -webkit-appearance: none;
762
- }
763
-
764
- .dialog-custom-path input:focus {
765
- border-color: var(--accent);
766
- }
767
-
768
- .dialog-option {
769
- display: flex;
770
- flex-direction: column;
771
- gap: 2px;
772
- margin-bottom: 1rem;
773
- }
774
-
775
- .dialog-option label {
776
- display: flex;
777
- align-items: center;
778
- gap: 8px;
779
- font-size: 0.875rem;
780
- color: var(--text);
781
- cursor: pointer;
782
- }
783
-
784
- .dialog-option input[type="checkbox"] {
785
- width: 16px;
786
- height: 16px;
787
- accent-color: var(--accent);
788
- cursor: pointer;
789
- }
790
-
791
- .dialog-option-hint {
792
- font-size: 0.75rem;
793
- color: var(--text-muted);
794
- padding-left: 24px;
795
- }
796
-
797
- .dialog-actions {
798
- display: flex;
799
- gap: 8px;
800
- justify-content: flex-end;
801
- }
802
-
803
- .dialog-actions button {
804
- padding: 10px 18px;
805
- border-radius: 6px;
806
- border: 1px solid var(--border);
807
- background: var(--bg);
808
- color: var(--text);
809
- font-size: 0.9rem;
810
- cursor: pointer;
811
- touch-action: manipulation;
812
- }
813
-
814
- .dialog-actions button:active {
815
- background: var(--border);
816
- }
817
-
818
- /* ===== Settings Dialog ===== */
819
- dialog#settings-dialog {
820
- background: var(--surface);
821
- border: 1px solid var(--border);
822
- border-radius: 12px;
823
- color: var(--text);
824
- padding: 1.5rem;
825
- width: 90%;
826
- max-width: 500px;
827
- max-height: 80vh;
828
- overflow-y: auto;
829
- margin: auto;
830
- }
831
-
832
- dialog#settings-dialog::backdrop {
833
- background: rgba(0, 0, 0, 0.7);
834
- }
835
-
836
- dialog#settings-dialog h2 {
837
- font-size: 1.1rem;
838
- margin-bottom: 1rem;
839
- }
840
-
841
- .settings-label {
842
- display: block;
843
- font-size: 0.85rem;
844
- font-weight: 600;
845
- color: var(--text-muted);
846
- text-transform: uppercase;
847
- letter-spacing: 0.05em;
848
- margin-bottom: 8px;
849
- }
850
-
851
- .settings-hint {
852
- font-size: 0.8rem;
853
- color: var(--text-muted);
854
- margin-bottom: 8px;
855
- }
856
-
857
- #settings-roots-list {
858
- display: flex;
859
- flex-direction: column;
860
- gap: 4px;
861
- margin-bottom: 8px;
862
- }
863
-
864
- .settings-repo-item {
865
- display: flex;
866
- align-items: center;
867
- justify-content: space-between;
868
- gap: 8px;
869
- padding: 8px 10px;
870
- background: var(--bg);
871
- border: 1px solid var(--border);
872
- border-radius: 6px;
873
- font-size: 0.8rem;
874
- }
875
-
876
- .settings-repo-item .repo-path {
877
- flex: 1;
878
- min-width: 0;
879
- overflow: hidden;
880
- text-overflow: ellipsis;
881
- white-space: nowrap;
882
- color: var(--text-muted);
883
- font-family: monospace;
884
- }
885
-
886
- .settings-repo-item .remove-repo {
887
- background: none;
888
- border: none;
889
- color: var(--text-muted);
890
- font-size: 1rem;
891
- cursor: pointer;
892
- padding: 2px 6px;
893
- border-radius: 4px;
894
- flex-shrink: 0;
895
- }
896
-
897
- .settings-repo-item .remove-repo:hover,
898
- .settings-repo-item .remove-repo:active {
899
- color: var(--accent);
900
- }
901
-
902
- .settings-add-repo {
903
- display: flex;
904
- gap: 6px;
905
- }
906
-
907
- .settings-add-repo input {
908
- flex: 1;
909
- padding: 8px 10px;
910
- background: var(--bg);
911
- border: 1px solid var(--border);
912
- border-radius: 6px;
913
- color: var(--text);
914
- font-size: 0.85rem;
915
- font-family: monospace;
916
- outline: none;
917
- -webkit-appearance: none;
918
- }
919
-
920
- .settings-add-repo input:focus {
921
- border-color: var(--accent);
922
- }
923
-
924
- .settings-add-repo button {
925
- padding: 8px 14px;
926
- font-size: 0.85rem;
927
- flex-shrink: 0;
928
- }
929
-
930
- .settings-section {
931
- margin-bottom: 1rem;
932
- }
933
-
934
- .btn-accent {
935
- background: var(--accent) !important;
936
- border-color: var(--accent) !important;
937
- color: #fff !important;
938
- }
939
-
940
- .btn-accent:active {
941
- opacity: 0.85;
942
- }
943
-
944
- /* ===== Context Menu ===== */
945
- .context-menu {
946
- position: fixed;
947
- z-index: 200;
948
- background: var(--surface);
949
- border: 1px solid var(--border);
950
- border-radius: 8px;
951
- padding: 4px;
952
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
953
- min-width: 160px;
954
- }
955
-
956
- .context-menu-item {
957
- display: block;
958
- width: 100%;
959
- padding: 10px 14px;
960
- background: none;
961
- border: none;
962
- border-radius: 6px;
963
- color: var(--text);
964
- font-size: 0.85rem;
965
- text-align: left;
966
- cursor: pointer;
967
- touch-action: manipulation;
968
- }
969
-
970
- .context-menu-item:hover,
971
- .context-menu-item:active {
972
- background: var(--bg);
973
- color: var(--accent);
974
- }
975
-
976
- .context-menu-item.ctx-danger:hover,
977
- .context-menu-item.ctx-danger:active {
978
- color: #c0392b;
979
- }
980
-
981
- /* ===== Delete Worktree Dialog ===== */
982
- dialog#delete-worktree-dialog {
983
- background: var(--surface);
984
- border: 1px solid var(--border);
985
- border-radius: 12px;
986
- color: var(--text);
987
- padding: 1.5rem;
988
- width: 90%;
989
- max-width: 400px;
990
- margin: auto;
991
- }
992
-
993
- dialog#delete-worktree-dialog::backdrop {
994
- background: rgba(0, 0, 0, 0.7);
995
- }
996
-
997
- dialog#delete-worktree-dialog h2 {
998
- font-size: 1.1rem;
999
- margin-bottom: 0.75rem;
1000
- }
1001
-
1002
- .delete-wt-warning {
1003
- font-size: 0.85rem;
1004
- color: var(--text-muted);
1005
- margin-bottom: 0.75rem;
1006
- line-height: 1.4;
1007
- }
1008
-
1009
- .delete-wt-name {
1010
- font-size: 0.85rem;
1011
- font-family: monospace;
1012
- color: var(--accent);
1013
- padding: 8px 10px;
1014
- background: var(--bg);
1015
- border-radius: 6px;
1016
- margin-bottom: 1rem;
1017
- word-break: break-all;
1018
- }
1019
-
1020
- .btn-danger {
1021
- background: #c0392b !important;
1022
- border-color: #c0392b !important;
1023
- color: #fff !important;
1024
- }
1025
-
1026
- .btn-danger:active {
1027
- opacity: 0.85;
1028
- }
1029
-
1030
- /* ===== Update Toast ===== */
1031
-
1032
- #update-toast {
1033
- position: fixed;
1034
- bottom: 0;
1035
- left: 0;
1036
- right: 0;
1037
- z-index: 150;
1038
- display: flex;
1039
- justify-content: center;
1040
- padding: 12px 12px calc(12px + env(safe-area-inset-bottom));
1041
- pointer-events: none;
1042
- animation: toast-slide-up 0.25s ease-out;
1043
- }
1044
-
1045
- @keyframes toast-slide-up {
1046
- from {
1047
- transform: translateY(100%);
1048
- opacity: 0;
1049
- }
1050
- to {
1051
- transform: translateY(0);
1052
- opacity: 1;
1053
- }
1054
- }
1055
-
1056
- #update-toast-content {
1057
- display: flex;
1058
- flex-direction: row;
1059
- align-items: center;
1060
- gap: 12px;
1061
- background: var(--surface);
1062
- border: 1px solid var(--border);
1063
- border-radius: 10px;
1064
- padding: 12px 16px;
1065
- max-width: 500px;
1066
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
1067
- pointer-events: auto;
1068
- }
1069
-
1070
- #update-toast-text {
1071
- flex: 1;
1072
- font-size: 0.85rem;
1073
- color: var(--text);
1074
- }
1075
-
1076
- #update-toast-actions {
1077
- display: flex;
1078
- gap: 8px;
1079
- flex-shrink: 0;
1080
- }
1081
-
1082
- #update-toast-btn {
1083
- padding: 8px 14px;
1084
- border-radius: 6px;
1085
- font-size: 0.8rem;
1086
- border: none;
1087
- white-space: nowrap;
1088
- }
1089
-
1090
- #update-toast-btn:disabled {
1091
- opacity: 0.6;
1092
- cursor: not-allowed;
1093
- }
1094
-
1095
- #update-toast-dismiss {
1096
- background: none;
1097
- border: none;
1098
- color: var(--text-muted);
1099
- font-size: 1.2rem;
1100
- padding: 4px 6px;
1101
- cursor: pointer;
1102
- }
1103
-
1104
- #update-toast-dismiss:hover {
1105
- color: var(--text);
1106
- }
1107
-
1108
- /* ===== Mobile Responsive ===== */
1109
- @media (max-width: 600px) {
1110
- #mobile-header {
1111
- display: flex;
1112
- align-items: center;
1113
- gap: 8px;
1114
- padding: 8px 10px;
1115
- background: var(--surface);
1116
- border-bottom: 1px solid var(--border);
1117
- flex-shrink: 0;
1118
- }
1119
-
1120
- #mobile-header .icon-btn {
1121
- display: block;
1122
- font-size: 1.4rem;
1123
- padding: 4px 8px;
1124
- }
1125
-
1126
- .mobile-title {
1127
- font-size: 0.85rem;
1128
- font-weight: 600;
1129
- color: var(--text-muted);
1130
- }
1131
-
1132
- #sidebar {
1133
- position: fixed;
1134
- top: 0;
1135
- left: 0;
1136
- height: 100%;
1137
- transform: translateX(-100%);
1138
- box-shadow: 2px 0 12px rgba(0, 0, 0, 0.5);
1139
- }
1140
-
1141
- #sidebar.open {
1142
- transform: translateX(0);
1143
- }
1144
-
1145
- /* Overlay when sidebar is open */
1146
- #sidebar-overlay {
1147
- display: none;
1148
- position: fixed;
1149
- inset: 0;
1150
- background: rgba(0, 0, 0, 0.5);
1151
- z-index: 99;
1152
- }
1153
-
1154
- #sidebar-overlay.visible {
1155
- display: block;
1156
- }
1157
-
1158
- #terminal-area {
1159
- width: 100%;
1160
- }
1161
-
1162
- .tb-btn {
1163
- padding: 14px 2px;
1164
- font-size: min(0.8rem, 3.5vw);
1165
- min-height: 44px;
1166
- }
1167
-
1168
- .tb-btn.tb-arrow {
1169
- font-size: min(1.1rem, 4.5vw);
1170
- }
1171
-
1172
- #toolbar {
1173
- display: block;
1174
- }
1175
-
1176
- #terminal-scrollbar {
1177
- display: block;
1178
- width: 24px;
1179
- right: 0;
1180
- }
1181
-
1182
- #terminal-scrollbar-thumb {
1183
- width: 24px;
1184
- min-height: 44px;
1185
- border-radius: 12px;
1186
- background: var(--text-muted);
1187
- opacity: 0.5;
1188
- }
1189
- }
1190
-
1191
- /* ===== Scrollbar ===== */
1192
- ::-webkit-scrollbar {
1193
- width: 4px;
1194
- }
1195
-
1196
- ::-webkit-scrollbar-track {
1197
- background: transparent;
1198
- }
1199
-
1200
- ::-webkit-scrollbar-thumb {
1201
- background: var(--border);
1202
- border-radius: 4px;
1203
- }
1204
-
1205
- /* ===== Image Paste Toast ===== */
1206
- #image-toast {
1207
- position: fixed;
1208
- bottom: 60px;
1209
- left: 50%;
1210
- transform: translateX(-50%);
1211
- z-index: 1000;
1212
- background: #2d2d2d;
1213
- border: 1px solid #555;
1214
- border-radius: 8px;
1215
- padding: 8px 14px;
1216
- color: #d4d4d4;
1217
- font-size: 13px;
1218
- max-width: 90vw;
1219
- box-shadow: 0 4px 12px rgba(0,0,0,0.4);
1220
- }
1221
-
1222
- #image-toast-content {
1223
- display: flex;
1224
- align-items: center;
1225
- gap: 10px;
1226
- }
1227
-
1228
- #image-toast-actions {
1229
- display: flex;
1230
- gap: 6px;
1231
- align-items: center;
1232
- }
1233
-
1234
- #image-toast-dismiss {
1235
- background: none;
1236
- border: none;
1237
- color: #999;
1238
- cursor: pointer;
1239
- font-size: 16px;
1240
- padding: 2px 6px;
1241
- }
1242
-
1243
- #terminal-container.drag-over {
1244
- outline: 2px dashed #007acc;
1245
- outline-offset: -2px;
1246
- }