pi-sdk-web 0.1.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.
@@ -0,0 +1,925 @@
1
+ :root {
2
+ --bg: #18181e;
3
+ --text: #d4d4d4;
4
+ --dim: #666666;
5
+ --muted: #808080;
6
+ --accent: #8abeb7;
7
+ --user-bg: #343541;
8
+ --tool-pending-bg: #282832;
9
+ --tool-success-bg: #283228;
10
+ --tool-error-bg: #3c2828;
11
+ --error: #cc6666;
12
+ --border: #666666;
13
+ --thinking: #808080;
14
+ --bash-mode: #b5bd68;
15
+ --warning: #ffff00;
16
+ --custom-bg: #2d2838;
17
+ --custom-label: #9575cd;
18
+ --md-heading: #f0c674;
19
+ --md-link: #81a2be;
20
+ --code-bg: #1e1e24;
21
+ --modal-bg: #1e1e24;
22
+ --accent-soft: rgba(138, 190, 183, 0.3);
23
+ --warning-soft: rgba(255, 255, 0, 0.3);
24
+ --accent-hover: rgba(138, 190, 183, 0.1);
25
+ --accent-selected: rgba(138, 190, 183, 0.2);
26
+ --accent-contrast: #18181e;
27
+ --code-inline-bg: rgba(128, 128, 128, 0.15);
28
+ --table-head-bg: rgba(128, 128, 128, 0.1);
29
+ }
30
+
31
+ /* Bright theme (colors aligned with Pi's light theme) */
32
+ body.theme-bright {
33
+ --bg: #f5f5f5;
34
+ --text: #1f2328;
35
+ --dim: #767676;
36
+ --muted: #6c6c6c;
37
+ --accent: #5a8080;
38
+ --user-bg: #e8e8e8;
39
+ --tool-pending-bg: #e8e8f0;
40
+ --tool-success-bg: #e8f0e8;
41
+ --tool-error-bg: #f0e8e8;
42
+ --error: #aa5555;
43
+ --border: #b0b0b0;
44
+ --thinking: #6c6c6c;
45
+ --bash-mode: #588458;
46
+ --warning: #9a7326;
47
+ --custom-bg: #ede7f6;
48
+ --custom-label: #7e57c2;
49
+ --md-heading: #9a7326;
50
+ --md-link: #547da7;
51
+ --code-bg: #eef0f2;
52
+ --modal-bg: #ffffff;
53
+ --accent-soft: rgba(90, 128, 128, 0.25);
54
+ --warning-soft: rgba(154, 115, 38, 0.25);
55
+ --accent-hover: rgba(90, 128, 128, 0.12);
56
+ --accent-selected: rgba(90, 128, 128, 0.2);
57
+ --accent-contrast: #ffffff;
58
+ --code-inline-bg: rgba(0, 0, 0, 0.06);
59
+ --table-head-bg: rgba(0, 0, 0, 0.05);
60
+ }
61
+
62
+ * {
63
+ box-sizing: border-box;
64
+ margin: 0;
65
+ padding: 0;
66
+ }
67
+
68
+ html, body {
69
+ height: 100%;
70
+ }
71
+
72
+ body {
73
+ background: var(--bg);
74
+ color: var(--text);
75
+ font-family: system-ui, -apple-system, sans-serif;
76
+ font-size: 14px;
77
+ }
78
+
79
+ #app {
80
+ display: flex;
81
+ flex-direction: column;
82
+ height: 100vh;
83
+ max-width: 1200px;
84
+ margin: 0 auto;
85
+ }
86
+
87
+ #main {
88
+ display: flex;
89
+ flex: 1;
90
+ min-height: 0;
91
+ }
92
+
93
+ #header {
94
+ display: flex;
95
+ align-items: center;
96
+ padding: 8px 12px;
97
+ gap: 10px;
98
+ border-bottom: 1px solid var(--border);
99
+ }
100
+
101
+ #title {
102
+ font-weight: bold;
103
+ color: var(--accent);
104
+ font-size: 16px;
105
+ }
106
+
107
+ #version {
108
+ color: var(--dim);
109
+ font-size: 12px;
110
+ }
111
+
112
+ #theme-switch {
113
+ font-size: 12px;
114
+ margin-left: 4px;
115
+ user-select: none;
116
+ }
117
+
118
+ .theme-option {
119
+ cursor: pointer;
120
+ color: var(--dim);
121
+ }
122
+
123
+ .theme-option.active {
124
+ color: var(--accent);
125
+ font-weight: 600;
126
+ text-decoration: underline;
127
+ }
128
+
129
+ .theme-sep {
130
+ color: var(--dim);
131
+ margin: 0 4px;
132
+ }
133
+
134
+ #conn-status {
135
+ font-size: 12px;
136
+ padding: 2px 8px;
137
+ border-radius: 4px;
138
+ margin-left: auto;
139
+ }
140
+
141
+ #loaded-resources {
142
+ margin-bottom: 8px;
143
+ }
144
+
145
+ .resources-block {
146
+ border: 1px solid var(--border);
147
+ border-radius: 6px;
148
+ padding: 6px 10px;
149
+ cursor: pointer;
150
+ user-select: none;
151
+ font-size: 12px;
152
+ }
153
+
154
+ .resources-header {
155
+ color: var(--dim);
156
+ }
157
+
158
+ .resources-body {
159
+ margin-top: 6px;
160
+ color: var(--muted);
161
+ }
162
+
163
+ .resources-section {
164
+ margin: 4px 0;
165
+ }
166
+
167
+ .resources-section-title {
168
+ color: var(--accent);
169
+ font-weight: 600;
170
+ margin-bottom: 2px;
171
+ }
172
+
173
+ .resources-list {
174
+ list-style: none;
175
+ margin: 0;
176
+ padding: 0;
177
+ }
178
+
179
+ .resources-item {
180
+ color: var(--muted);
181
+ font-size: 11px;
182
+ padding: 1px 0;
183
+ white-space: nowrap;
184
+ overflow: hidden;
185
+ text-overflow: ellipsis;
186
+ }
187
+
188
+ #conn-status.connected {
189
+ color: var(--accent);
190
+ background: var(--accent-hover);
191
+ }
192
+
193
+ #conn-status.disconnected {
194
+ color: var(--error);
195
+ background: rgba(204,102,102,0.1);
196
+ }
197
+
198
+ #scroll-view {
199
+ flex: 1;
200
+ overflow-y: auto;
201
+ padding: 8px;
202
+ min-width: 0;
203
+ }
204
+
205
+ #sidebar {
206
+ width: 200px;
207
+ flex-shrink: 0;
208
+ border-left: 1px solid var(--border);
209
+ padding: 8px;
210
+ overflow-y: auto;
211
+ }
212
+
213
+ #content {
214
+ display: flex;
215
+ flex-direction: column;
216
+ gap: 4px;
217
+ }
218
+
219
+ .message {
220
+ padding: 8px 0;
221
+ }
222
+
223
+ .message.user {
224
+ background: var(--user-bg);
225
+ padding: 6px 12px;
226
+ border-radius: 6px;
227
+ }
228
+
229
+ .message.assistant {
230
+ padding: 2px 0;
231
+ }
232
+
233
+ .message .role {
234
+ font-size: 11px;
235
+ color: var(--dim);
236
+ margin-bottom: 2px;
237
+ }
238
+
239
+ .tool-block {
240
+ background: var(--tool-pending-bg);
241
+ margin: 4px 0;
242
+ font-size: 13px;
243
+ cursor: pointer;
244
+ user-select: none;
245
+ }
246
+
247
+ .tool-block.success {
248
+ background: var(--tool-success-bg);
249
+ }
250
+
251
+ .tool-block.error {
252
+ background: var(--tool-error-bg);
253
+ }
254
+
255
+ .tool-border {
256
+ height: 1px;
257
+ background: var(--border);
258
+ opacity: 0.5;
259
+ }
260
+
261
+ .tool-content {
262
+ padding: 6px 12px;
263
+ }
264
+
265
+ .tool-block .tool-title {
266
+ font-weight: bold;
267
+ color: var(--text);
268
+ }
269
+
270
+ .tool-block[data-tool-name="bash"] .tool-title {
271
+ color: var(--bash-mode, #b5bd68);
272
+ }
273
+
274
+ .tool-block .tool-args {
275
+ color: var(--muted);
276
+ margin-top: 4px;
277
+ white-space: pre-wrap;
278
+ font-family: monospace;
279
+ font-size: 12px;
280
+ }
281
+
282
+ .tool-block .tool-output {
283
+ color: var(--muted);
284
+ margin-top: 4px;
285
+ white-space: pre-wrap;
286
+ font-family: monospace;
287
+ font-size: 12px;
288
+ }
289
+
290
+ .tool-block .tool-meta {
291
+ margin-top: 4px;
292
+ color: var(--dim);
293
+ font-size: 11px;
294
+ display: flex;
295
+ flex-direction: column;
296
+ gap: 2px;
297
+ }
298
+
299
+ .tool-block .tool-duration {
300
+ color: var(--dim);
301
+ }
302
+
303
+ .tool-block .tool-truncated {
304
+ color: var(--warning, #ffff00);
305
+ }
306
+
307
+ .special-block {
308
+ background: var(--custom-bg);
309
+ margin: 4px 0;
310
+ padding: 6px 12px;
311
+ border-radius: 6px;
312
+ cursor: pointer;
313
+ user-select: none;
314
+ }
315
+
316
+ .special-block .special-label {
317
+ color: var(--custom-label);
318
+ font-weight: bold;
319
+ font-size: 12px;
320
+ margin-bottom: 4px;
321
+ }
322
+
323
+ .special-block .special-body {
324
+ color: var(--text);
325
+ font-size: 13px;
326
+ }
327
+
328
+ .special-block .special-body > *:first-child {
329
+ margin-top: 0;
330
+ }
331
+
332
+ .special-block .special-body > *:last-child {
333
+ margin-bottom: 0;
334
+ }
335
+
336
+ .thinking {
337
+ color: var(--thinking);
338
+ font-style: italic;
339
+ }
340
+
341
+ /* Markdown content inside messages */
342
+ .body-text, .message.user .body {
343
+ line-height: 1.6;
344
+ }
345
+
346
+ .body-text > *:first-child,
347
+ .message.user .body > *:first-child {
348
+ margin-top: 0;
349
+ }
350
+
351
+ .body-text > *:last-child,
352
+ .message.user .body > *:last-child {
353
+ margin-bottom: 0;
354
+ }
355
+
356
+ .body-text h1,
357
+ .body-text h2,
358
+ .body-text h3,
359
+ .body-text h4,
360
+ .body-text h5,
361
+ .body-text h6,
362
+ .message.user .body h1,
363
+ .message.user .body h2,
364
+ .message.user .body h3,
365
+ .message.user .body h4,
366
+ .message.user .body h5,
367
+ .message.user .body h6 {
368
+ color: var(--md-heading);
369
+ margin: 0.8em 0 0.4em;
370
+ font-weight: 600;
371
+ }
372
+
373
+ .body-text h1,
374
+ .message.user .body h1 {
375
+ font-size: 1.4em;
376
+ }
377
+
378
+ .body-text h2,
379
+ .message.user .body h2 {
380
+ font-size: 1.25em;
381
+ }
382
+
383
+ .body-text h3,
384
+ .message.user .body h3 {
385
+ font-size: 1.1em;
386
+ }
387
+
388
+ .body-text p,
389
+ .message.user .body p {
390
+ margin: 0.4em 0;
391
+ }
392
+
393
+ .body-text ul,
394
+ .body-text ol,
395
+ .message.user .body ul,
396
+ .message.user .body ol {
397
+ margin: 0.4em 0;
398
+ padding-left: 1.6em;
399
+ }
400
+
401
+ .body-text li,
402
+ .message.user .body li {
403
+ margin: 0.2em 0;
404
+ }
405
+
406
+ .body-text code,
407
+ .message.user .body code {
408
+ background: var(--code-inline-bg);
409
+ color: var(--accent);
410
+ padding: 0.1em 0.35em;
411
+ border-radius: 3px;
412
+ font-family: monospace;
413
+ font-size: 0.9em;
414
+ }
415
+
416
+ .body-text pre,
417
+ .message.user .body pre {
418
+ background: var(--code-bg);
419
+ border: 1px solid var(--border);
420
+ border-radius: 6px;
421
+ padding: 10px 12px;
422
+ overflow-x: auto;
423
+ margin: 0.6em 0;
424
+ }
425
+
426
+ .body-text pre code,
427
+ .message.user .body pre code {
428
+ background: transparent;
429
+ color: var(--bash-mode);
430
+ padding: 0;
431
+ font-size: 0.9em;
432
+ line-height: 1.5;
433
+ white-space: pre;
434
+ }
435
+
436
+ .body-text blockquote,
437
+ .message.user .body blockquote {
438
+ border-left: 3px solid var(--muted);
439
+ color: var(--muted);
440
+ margin: 0.6em 0;
441
+ padding: 0.1em 1em;
442
+ }
443
+
444
+ .body-text a,
445
+ .message.user .body a {
446
+ color: var(--md-link);
447
+ text-decoration: none;
448
+ }
449
+
450
+ .body-text a:hover,
451
+ .message.user .body a:hover {
452
+ text-decoration: underline;
453
+ }
454
+
455
+ .body-text hr,
456
+ .message.user .body hr {
457
+ border: none;
458
+ border-top: 1px solid var(--muted);
459
+ margin: 1em 0;
460
+ }
461
+
462
+ .body-text table,
463
+ .message.user .body table {
464
+ border-collapse: collapse;
465
+ margin: 0.6em 0;
466
+ font-size: 0.95em;
467
+ }
468
+
469
+ .body-text th,
470
+ .body-text td,
471
+ .message.user .body th,
472
+ .message.user .body td {
473
+ border: 1px solid var(--border);
474
+ padding: 4px 10px;
475
+ }
476
+
477
+ .body-text th,
478
+ .message.user .body th {
479
+ background: var(--table-head-bg);
480
+ font-weight: 600;
481
+ }
482
+
483
+ #pending {
484
+ display: none;
485
+ padding: 4px 12px;
486
+ border-top: 1px solid var(--border);
487
+ color: var(--dim);
488
+ font-size: 13px;
489
+ }
490
+
491
+ .pending-line {
492
+ margin: 2px 0;
493
+ }
494
+
495
+ #status {
496
+ display: none;
497
+ padding: 4px 12px;
498
+ border-top: 1px solid var(--border);
499
+ }
500
+
501
+ /* Persistent extension widgets (setWidget, e.g. magic-context todos) */
502
+ #widgets {
503
+ display: none;
504
+ padding: 4px 12px;
505
+ border-top: 1px solid var(--border);
506
+ font-size: 12px;
507
+ }
508
+
509
+ .widget-block {
510
+ margin: 2px 0;
511
+ }
512
+
513
+ .widget-title {
514
+ color: var(--accent);
515
+ font-weight: 600;
516
+ margin-bottom: 2px;
517
+ }
518
+
519
+ .widget-body {
520
+ color: var(--muted);
521
+ white-space: pre-wrap;
522
+ font-family: monospace;
523
+ font-size: 12px;
524
+ line-height: 1.4;
525
+ }
526
+
527
+ .status-indicator {
528
+ display: flex;
529
+ align-items: center;
530
+ gap: 8px;
531
+ color: var(--muted);
532
+ font-size: 13px;
533
+ }
534
+
535
+ .status-indicator .spinner {
536
+ width: 12px;
537
+ height: 12px;
538
+ border: 2px solid var(--accent-soft);
539
+ border-top-color: var(--accent);
540
+ border-radius: 50%;
541
+ animation: spin 0.8s linear infinite;
542
+ flex-shrink: 0;
543
+ }
544
+
545
+ @keyframes spin {
546
+ to { transform: rotate(360deg); }
547
+ }
548
+
549
+ .status-indicator.retry .spinner {
550
+ border-color: var(--warning-soft);
551
+ border-top-color: var(--warning);
552
+ }
553
+
554
+ .status-indicator.compaction .spinner {
555
+ border-color: var(--accent-soft);
556
+ border-top-color: var(--accent);
557
+ }
558
+
559
+ .status-indicator.branch .spinner {
560
+ border-color: var(--accent-soft);
561
+ border-top-color: var(--accent);
562
+ }
563
+
564
+ #footer {
565
+ border-top: 1px solid var(--border);
566
+ padding: 8px 12px;
567
+ }
568
+
569
+ #footer-line {
570
+ color: var(--dim);
571
+ font-size: 12px;
572
+ margin-bottom: 4px;
573
+ }
574
+
575
+ #footer-stats {
576
+ display: flex;
577
+ justify-content: space-between;
578
+ align-items: baseline;
579
+ gap: 8px;
580
+ color: var(--dim);
581
+ font-size: 12px;
582
+ margin-bottom: 4px;
583
+ }
584
+
585
+ .stats-left {
586
+ overflow: hidden;
587
+ text-overflow: ellipsis;
588
+ white-space: nowrap;
589
+ }
590
+
591
+ .stats-right {
592
+ white-space: nowrap;
593
+ flex-shrink: 0;
594
+ }
595
+
596
+ .clickable {
597
+ cursor: pointer;
598
+ color: var(--accent);
599
+ }
600
+
601
+ .clickable:hover {
602
+ text-decoration: underline;
603
+ }
604
+
605
+ .command-unsupported {
606
+ color: var(--warning);
607
+ font-size: 10px;
608
+ margin-left: auto;
609
+ white-space: nowrap;
610
+ }
611
+
612
+ #modal-overlay {
613
+ position: fixed;
614
+ inset: 0;
615
+ background: rgba(0, 0, 0, 0.6);
616
+ display: flex;
617
+ align-items: center;
618
+ justify-content: center;
619
+ z-index: 100;
620
+ }
621
+
622
+ #modal {
623
+ background: var(--code-bg);
624
+ border: 1px solid var(--border);
625
+ border-radius: 8px;
626
+ width: 480px;
627
+ max-width: 90vw;
628
+ max-height: 70vh;
629
+ display: flex;
630
+ flex-direction: column;
631
+ padding: 12px;
632
+ }
633
+
634
+ #modal-title {
635
+ color: var(--accent);
636
+ font-weight: 600;
637
+ font-size: 15px;
638
+ margin-bottom: 8px;
639
+ }
640
+
641
+ #modal-search {
642
+ background: transparent;
643
+ border: 1px solid var(--border);
644
+ color: var(--text);
645
+ border-radius: 6px;
646
+ padding: 6px 10px;
647
+ font-size: 13px;
648
+ margin-bottom: 8px;
649
+ outline: none;
650
+ }
651
+
652
+ #modal-search:focus {
653
+ border-color: var(--accent);
654
+ }
655
+
656
+ #modal-list {
657
+ flex: 1;
658
+ overflow-y: auto;
659
+ min-height: 100px;
660
+ }
661
+
662
+ .modal-item {
663
+ padding: 6px 10px;
664
+ cursor: pointer;
665
+ border-radius: 4px;
666
+ font-size: 13px;
667
+ }
668
+
669
+ .modal-item:hover {
670
+ background: var(--accent-hover);
671
+ }
672
+
673
+ .modal-item .modal-item-name {
674
+ color: var(--text);
675
+ }
676
+
677
+ .modal-item .modal-item-desc {
678
+ color: var(--muted);
679
+ font-size: 11px;
680
+ margin-left: 8px;
681
+ }
682
+
683
+ .modal-item.selected {
684
+ background: var(--accent-selected);
685
+ }
686
+
687
+ .modal-item.selected .modal-item-name {
688
+ color: var(--accent);
689
+ }
690
+
691
+ #modal-close {
692
+ margin-top: 8px;
693
+ color: var(--dim);
694
+ font-size: 12px;
695
+ cursor: pointer;
696
+ text-align: center;
697
+ padding: 4px;
698
+ }
699
+
700
+ #modal-close:hover {
701
+ color: var(--text);
702
+ }
703
+
704
+ .modal-message {
705
+ color: var(--text);
706
+ font-size: 13px;
707
+ margin-bottom: 10px;
708
+ white-space: pre-wrap;
709
+ line-height: 1.5;
710
+ }
711
+
712
+ /* Markdown-rendered modal content (e.g. /ctx-status command output) */
713
+ .modal-message.body-text {
714
+ white-space: normal;
715
+ }
716
+
717
+ .modal-message.body-text h1,
718
+ .modal-message.body-text h2,
719
+ .modal-message.body-text h3,
720
+ .modal-message.body-text h4,
721
+ .modal-message.body-text h5,
722
+ .modal-message.body-text h6 {
723
+ color: var(--md-heading);
724
+ margin: 0.8em 0 0.4em;
725
+ font-weight: 600;
726
+ }
727
+
728
+ .modal-message.body-text pre {
729
+ background: var(--code-bg);
730
+ border: 1px solid var(--border);
731
+ border-radius: 6px;
732
+ padding: 10px 12px;
733
+ overflow-x: auto;
734
+ margin: 0.6em 0;
735
+ }
736
+
737
+ .modal-message.body-text code {
738
+ background: var(--code-inline-bg);
739
+ color: var(--accent);
740
+ padding: 0.1em 0.35em;
741
+ border-radius: 3px;
742
+ font-family: monospace;
743
+ font-size: 0.9em;
744
+ }
745
+
746
+ .modal-message.body-text ul,
747
+ .modal-message.body-text ol {
748
+ margin: 0.4em 0;
749
+ padding-left: 1.6em;
750
+ }
751
+
752
+ .modal-actions {
753
+ display: flex;
754
+ gap: 8px;
755
+ justify-content: flex-end;
756
+ margin-top: 10px;
757
+ }
758
+
759
+ .modal-btn {
760
+ background: transparent;
761
+ border: 1px solid var(--accent);
762
+ color: var(--accent);
763
+ border-radius: 6px;
764
+ padding: 6px 16px;
765
+ font-size: 13px;
766
+ cursor: pointer;
767
+ transition: background 0.15s, color 0.15s;
768
+ }
769
+
770
+ .modal-btn:hover {
771
+ background: var(--accent);
772
+ color: var(--accent-contrast);
773
+ }
774
+
775
+ .modal-btn.cancel-btn {
776
+ border-color: var(--error);
777
+ color: var(--error);
778
+ }
779
+
780
+ .modal-btn.cancel-btn:hover {
781
+ background: var(--error);
782
+ color: var(--accent-contrast);
783
+ }
784
+
785
+ .modal-input {
786
+ width: 100%;
787
+ background: transparent;
788
+ border: 1px solid var(--border);
789
+ color: var(--text);
790
+ border-radius: 6px;
791
+ padding: 6px 10px;
792
+ font-size: 13px;
793
+ outline: none;
794
+ }
795
+
796
+ .modal-input:focus {
797
+ border-color: var(--accent);
798
+ }
799
+
800
+ .modal-editor {
801
+ width: 100%;
802
+ background: transparent;
803
+ border: 1px solid var(--border);
804
+ color: var(--text);
805
+ border-radius: 6px;
806
+ padding: 8px 10px;
807
+ font-size: 13px;
808
+ font-family: monospace;
809
+ outline: none;
810
+ resize: vertical;
811
+ }
812
+
813
+ .modal-editor:focus {
814
+ border-color: var(--accent);
815
+ }
816
+
817
+ #command-menu {
818
+ display: none;
819
+ margin-bottom: 4px;
820
+ border: 1px solid var(--border);
821
+ border-radius: 6px;
822
+ background: var(--code-bg);
823
+ max-height: 160px;
824
+ overflow-y: auto;
825
+ }
826
+
827
+ .command-item {
828
+ padding: 4px 8px;
829
+ cursor: pointer;
830
+ display: flex;
831
+ gap: 8px;
832
+ align-items: baseline;
833
+ font-size: 12px;
834
+ }
835
+
836
+ .command-item:hover {
837
+ background: var(--accent-hover);
838
+ }
839
+
840
+ .command-item.selected {
841
+ background: var(--accent-selected);
842
+ }
843
+
844
+ .command-item.selected .command-name {
845
+ color: var(--accent);
846
+ }
847
+
848
+ .command-name {
849
+ color: var(--accent);
850
+ font-weight: 600;
851
+ white-space: nowrap;
852
+ }
853
+
854
+ .command-desc {
855
+ color: var(--muted);
856
+ overflow: hidden;
857
+ text-overflow: ellipsis;
858
+ white-space: nowrap;
859
+ }
860
+
861
+ .input-row {
862
+ display: flex;
863
+ gap: 8px;
864
+ align-items: stretch;
865
+ }
866
+
867
+ #input {
868
+ flex: 1;
869
+ background: transparent;
870
+ border: 1px solid var(--border);
871
+ color: var(--text);
872
+ font-family: inherit;
873
+ font-size: 14px;
874
+ padding: 8px;
875
+ border-radius: 6px;
876
+ resize: vertical;
877
+ min-height: 40px;
878
+ outline: none;
879
+ }
880
+
881
+ #input:focus {
882
+ border-color: var(--accent);
883
+ }
884
+
885
+ #send-btn {
886
+ background: transparent;
887
+ border: 1px solid var(--accent);
888
+ color: var(--accent);
889
+ border-radius: 6px;
890
+ padding: 0 16px;
891
+ font-size: 14px;
892
+ cursor: pointer;
893
+ white-space: nowrap;
894
+ transition: background 0.15s, color 0.15s;
895
+ }
896
+
897
+ #send-btn:hover {
898
+ background: var(--accent);
899
+ color: var(--accent-contrast);
900
+ }
901
+
902
+ #send-btn:active {
903
+ opacity: 0.8;
904
+ }
905
+
906
+ #abort-btn {
907
+ background: transparent;
908
+ border: 1px solid var(--error);
909
+ color: var(--error);
910
+ border-radius: 6px;
911
+ padding: 0 16px;
912
+ font-size: 14px;
913
+ cursor: pointer;
914
+ white-space: nowrap;
915
+ transition: background 0.15s, color 0.15s;
916
+ }
917
+
918
+ #abort-btn:hover {
919
+ background: var(--error);
920
+ color: var(--accent-contrast);
921
+ }
922
+
923
+ #abort-btn:active {
924
+ opacity: 0.8;
925
+ }