koishi-plugin-chat-patch 0.8.2

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,1372 @@
1
+ .message-quote {
2
+ margin: 8px 0;
3
+ padding: 8px 12px;
4
+ background-color: rgba(190, 190, 190, .1);
5
+ border-left: 4px solid rgba(151, 152, 152, .45);
6
+ border-radius: 6px;
7
+ font-size: .9em;
8
+ position: relative;
9
+ }
10
+
11
+ .quote-indicator {
12
+ font-size: .75em;
13
+ color: #007bff;
14
+ font-weight: 600;
15
+ margin-bottom: 4px;
16
+ text-transform: uppercase;
17
+ }
18
+
19
+ .quote-header {
20
+ display: flex;
21
+ align-items: center;
22
+ margin-bottom: 4px;
23
+ gap: 6px;
24
+ }
25
+
26
+ .quote-avatar {
27
+ width: 20px;
28
+ height: 20px;
29
+ border-radius: 50%;
30
+ overflow: hidden;
31
+ flex-shrink: 0;
32
+ }
33
+
34
+ .quote-avatar img {
35
+ width: 100%;
36
+ height: 100%;
37
+ object-fit: cover;
38
+ }
39
+
40
+ .quote-avatar .avatar-placeholder {
41
+ width: 100%;
42
+ height: 100%;
43
+ display: flex;
44
+ align-items: center;
45
+ justify-content: center;
46
+ background-color: #6c757d;
47
+ color: white;
48
+ font-size: 10px;
49
+ font-weight: bold;
50
+ }
51
+
52
+ .quote-username {
53
+ font-weight: 600;
54
+ color: #007bff;
55
+ font-size: .85em;
56
+ }
57
+
58
+ .quote-time {
59
+ color: #6c757d;
60
+ font-size: .75em;
61
+ margin-left: auto;
62
+ }
63
+
64
+ .quote-content {
65
+ color: #7276b7;
66
+ line-height: 1.3;
67
+ word-wrap: break-word;
68
+ }
69
+
70
+ .quote-content .message-image {
71
+ max-width: 200px;
72
+ max-height: 100px;
73
+ }
74
+
75
+ .quote-content .message-image-container {
76
+ margin: 2px 0;
77
+ }
78
+
79
+ @media (prefers-color-scheme: dark) {
80
+ .message-quote {
81
+ background-color: rgba(255, 255, 255, .078);
82
+ border-left-color: #0d6efd;
83
+ }
84
+
85
+ .quote-content {
86
+ color: #adb5bd;
87
+ }
88
+
89
+ .quote-username {
90
+ color: #0d6efd;
91
+ }
92
+ }
93
+
94
+ .chat-container {
95
+ display: flex;
96
+ height: 100vh;
97
+ background: transparent;
98
+ margin-left: 0%;
99
+ width: 100%;
100
+ overflow: hidden;
101
+ color: inherit;
102
+ position: relative;
103
+ }
104
+
105
+ .bot-list,
106
+ .channel-list,
107
+ .message-area {
108
+ display: flex;
109
+ flex-direction: column;
110
+ background: transparent;
111
+ border-right: 1px solid rgba(128, 128, 128, .2);
112
+ }
113
+
114
+ .bot-list {
115
+ width: 250px;
116
+ min-width: 250px;
117
+ max-width: 250px;
118
+ flex-shrink: 0;
119
+ }
120
+
121
+ .channel-list {
122
+ width: 300px;
123
+ min-width: 300px;
124
+ max-width: 300px;
125
+ flex-shrink: 0;
126
+ }
127
+
128
+ .message-area {
129
+ flex: 1;
130
+ border-right: none;
131
+ }
132
+
133
+ .panel-header {
134
+ padding: 16px;
135
+ border-bottom: 1px solid rgba(128, 128, 128, .2);
136
+ background: transparent;
137
+ display: flex;
138
+ align-items: center;
139
+ justify-content: space-between;
140
+ }
141
+
142
+ .panel-header h3 {
143
+ margin: 0;
144
+ font-size: 16px;
145
+ font-weight: 600;
146
+ color: currentColor;
147
+ }
148
+
149
+ .back-button {
150
+ display: none;
151
+ background: none;
152
+ border: none;
153
+ color: currentColor;
154
+ font-size: 18px;
155
+ cursor: pointer;
156
+ padding: 4px 8px;
157
+ border-radius: 4px;
158
+ transition: background-color .2s;
159
+ }
160
+
161
+ .back-button:hover {
162
+ background: rgba(128, 128, 128, .1);
163
+ }
164
+
165
+ .bot-items,
166
+ .channel-items {
167
+ flex: 1;
168
+ overflow-y: auto;
169
+ max-height: calc(100vh - 60px);
170
+ }
171
+
172
+ .bot-item,
173
+ .channel-item {
174
+ display: flex;
175
+ align-items: center;
176
+ padding: 12px 16px;
177
+ cursor: pointer;
178
+ border-bottom: 1px solid rgba(128, 128, 128, .1);
179
+ transition: background-color .2s;
180
+ }
181
+
182
+ .bot-item:hover,
183
+ .channel-item:hover {
184
+ background: rgba(128, 128, 128, .1);
185
+ }
186
+
187
+ .bot-item.active,
188
+ .channel-item.active {
189
+ background: rgba(33, 150, 243, .1);
190
+ border-right: 3px solid #2196f3;
191
+ }
192
+
193
+ .bot-avatar {
194
+ width: 40px;
195
+ height: 40px;
196
+ margin-right: 12px;
197
+ border-radius: 50%;
198
+ overflow: hidden;
199
+ display: flex;
200
+ align-items: center;
201
+ justify-content: center;
202
+ background: #e0e0e0;
203
+ }
204
+
205
+ .bot-avatar img {
206
+ width: 100%;
207
+ height: 100%;
208
+ object-fit: cover;
209
+ }
210
+
211
+ .avatar-placeholder {
212
+ font-size: 16px;
213
+ font-weight: bold;
214
+ color: currentColor;
215
+ opacity: .7;
216
+ }
217
+
218
+ .bot-info {
219
+ flex: 1;
220
+ }
221
+
222
+ .bot-name {
223
+ font-weight: 500;
224
+ color: currentColor;
225
+ margin-bottom: 2px;
226
+ }
227
+
228
+ .bot-platform {
229
+ font-size: 12px;
230
+ color: currentColor;
231
+ opacity: .7;
232
+ }
233
+
234
+ .bot-status {
235
+ width: 8px;
236
+ height: 8px;
237
+ border-radius: 50%;
238
+ margin-left: 8px;
239
+ }
240
+
241
+ .bot-status.online {
242
+ background: #4caf50;
243
+ }
244
+
245
+ .bot-status.offline {
246
+ background: #f44336;
247
+ }
248
+
249
+ .channel-info {
250
+ flex: 1;
251
+ }
252
+
253
+ .channel-name {
254
+ font-weight: 500;
255
+ color: currentColor;
256
+ margin-bottom: 2px;
257
+ }
258
+
259
+ .channel-type {
260
+ font-size: 12px;
261
+ color: currentColor;
262
+ opacity: .7;
263
+ }
264
+
265
+ .channel-message-count {
266
+ background: #2196f3;
267
+ color: white;
268
+ font-size: 12px;
269
+ padding: 2px 6px;
270
+ border-radius: 10px;
271
+ min-width: 18px;
272
+ text-align: center;
273
+ position: relative;
274
+ transition: all .2s ease;
275
+ }
276
+
277
+ .channel-message-count.draggable-bubble {
278
+ cursor: grab;
279
+ user-select: none;
280
+ -webkit-user-select: none;
281
+ -moz-user-select: none;
282
+ -ms-user-select: none;
283
+ }
284
+
285
+ .channel-message-count.draggable-bubble:hover {
286
+ background: #1976d2;
287
+ transform: scale(1.1);
288
+ box-shadow: 0 2px 8px rgba(33, 150, 243, .3);
289
+ }
290
+
291
+ .channel-message-count.draggable-bubble:active,
292
+ .channel-message-count.draggable-bubble.dragging {
293
+ cursor: grabbing;
294
+ background: #1565c0;
295
+ box-shadow: 0 4px 12px rgba(33, 150, 243, .4);
296
+ }
297
+
298
+ .dragging-clone {
299
+ position: fixed;
300
+ z-index: 1000;
301
+ pointer-events: none;
302
+ transition: none;
303
+ box-sizing: border-box;
304
+ display: flex;
305
+ align-items: center;
306
+ justify-content: center;
307
+ background: #2196f3;
308
+ color: white;
309
+ font-size: 12px;
310
+ padding: 2px 6px;
311
+ border-radius: 10px;
312
+ min-width: 18px;
313
+ text-align: center;
314
+ box-shadow: 0 4px 12px rgba(33, 150, 243, .4);
315
+ }
316
+
317
+ .dragging-clone.will-delete {
318
+ background: #f44336 !important;
319
+ animation: shake .3s ease-in-out infinite;
320
+ }
321
+
322
+ @keyframes pulseThreshold {
323
+
324
+ 0%,
325
+ 100% {
326
+ opacity: .4;
327
+ transform: scale(.9);
328
+ border-color: rgba(244, 67, 54, .6);
329
+ box-shadow: 0 0 15px rgba(244, 67, 54, .2);
330
+ }
331
+
332
+ 50% {
333
+ opacity: .8;
334
+ transform: scale(1.1);
335
+ border-color: rgba(244, 67, 54, 1);
336
+ box-shadow: 0 0 25px rgba(244, 67, 54, .4);
337
+ }
338
+ }
339
+
340
+ .message-content {
341
+ display: flex;
342
+ flex-direction: column;
343
+ height: calc(100vh - 60px);
344
+ overflow: hidden;
345
+ position: relative;
346
+ }
347
+
348
+ .message-history {
349
+ flex: 1;
350
+ overflow-y: auto;
351
+ padding: 16px 16px 8px 16px;
352
+ max-height: calc(100vh - 200px);
353
+ }
354
+
355
+ .message-item {
356
+ display: flex;
357
+ margin-bottom: 16px;
358
+ padding: 8px;
359
+ border-radius: 8px;
360
+ transition: background-color .3s ease;
361
+ }
362
+
363
+ .message-item:hover {
364
+ background-color: rgba(128, 128, 128, .1);
365
+ }
366
+
367
+ .message-item.new-message {
368
+ background-color: rgba(76, 175, 80, .2);
369
+ animation: highlight 2s ease-out;
370
+ }
371
+
372
+ .message-item.bot-message {
373
+ flex-direction: row-reverse;
374
+ justify-content: flex-start;
375
+ }
376
+
377
+ .message-item.bot-message .message-avatar {
378
+ margin-right: 0;
379
+ margin-left: 12px;
380
+ }
381
+
382
+ .message-item.bot-message .message-content-wrapper {
383
+ display: flex;
384
+ flex-direction: column;
385
+ align-items: flex-end;
386
+ }
387
+
388
+ .message-item.bot-message .message-header {
389
+ display: flex;
390
+ align-items: center;
391
+ justify-content: flex-end;
392
+ margin-bottom: 4px;
393
+ }
394
+
395
+ .message-item.bot-message .message-username {
396
+ margin-right: 0;
397
+ margin-left: 8px;
398
+ order: 2;
399
+ }
400
+
401
+ .message-item.bot-message .message-time {
402
+ order: 1;
403
+ }
404
+
405
+ .message-item.bot-message .message-text {
406
+ background-color: rgba(33, 150, 243, .1);
407
+ padding: 8px 12px;
408
+ border-radius: 12px;
409
+ border-bottom-right-radius: 4px;
410
+ display: inline-block;
411
+ max-width: 80%;
412
+ text-align: left;
413
+ }
414
+
415
+ @keyframes highlight {
416
+ 0% {
417
+ background-color: rgba(76, 175, 80, .3);
418
+ }
419
+
420
+ 100% {
421
+ background-color: transparent;
422
+ }
423
+ }
424
+
425
+ .message-avatar {
426
+ width: 32px;
427
+ height: 32px;
428
+ margin-right: 12px;
429
+ border-radius: 50%;
430
+ overflow: hidden;
431
+ display: flex;
432
+ align-items: center;
433
+ justify-content: center;
434
+ background: #e0e0e0;
435
+ flex-shrink: 0;
436
+ }
437
+
438
+ .message-avatar img {
439
+ width: 100%;
440
+ height: 100%;
441
+ object-fit: cover;
442
+ }
443
+
444
+ .message-avatar .avatar-placeholder {
445
+ font-size: 12px;
446
+ font-weight: bold;
447
+ color: currentColor;
448
+ opacity: .7;
449
+ }
450
+
451
+ .message-content-wrapper {
452
+ flex: 1;
453
+ }
454
+
455
+ .message-header {
456
+ display: flex;
457
+ align-items: center;
458
+ margin-bottom: 4px;
459
+ }
460
+
461
+ .message-username {
462
+ font-weight: 500;
463
+ color: currentColor;
464
+ margin-right: 8px;
465
+ }
466
+
467
+ .message-time {
468
+ font-size: 12px;
469
+ color: currentColor;
470
+ opacity: .5;
471
+ }
472
+
473
+ .message-text {
474
+ color: currentColor;
475
+ line-height: 1.4;
476
+ word-wrap: break-word;
477
+ word-break: break-word;
478
+ white-space: pre-wrap;
479
+ max-width: 100%;
480
+ overflow-wrap: break-word;
481
+ }
482
+
483
+ .message-item:not(.bot-message) .message-text {
484
+ background-color: rgba(128, 128, 128, .1);
485
+ padding: 8px 12px;
486
+ border-radius: 12px;
487
+ border-bottom-left-radius: 4px;
488
+ display: inline-block;
489
+ max-width: 80%;
490
+ }
491
+
492
+ .message-input {
493
+ display: flex;
494
+ flex-direction: column;
495
+ padding: 12px 16px 16px 16px;
496
+ border-top: 1px solid rgba(128, 128, 128, .2);
497
+ background: transparent;
498
+ flex-shrink: 0;
499
+ position: sticky;
500
+ bottom: 0;
501
+ margin-top: -10px;
502
+ }
503
+
504
+ .input-row {
505
+ display: flex;
506
+ gap: 8px;
507
+ align-items: center;
508
+ }
509
+
510
+ .floating-scroll-button {
511
+ position: absolute;
512
+ right: 24px;
513
+ bottom: 18%;
514
+ width: 48px;
515
+ height: 48px;
516
+ background: #2196f3;
517
+ border-radius: 50%;
518
+ display: flex;
519
+ align-items: center;
520
+ justify-content: center;
521
+ cursor: pointer;
522
+ box-shadow: 0 4px 12px rgba(33, 150, 243, .3);
523
+ color: white;
524
+ transition: all .3s ease;
525
+ z-index: 100;
526
+ border: 2px solid rgba(255, 255, 255, .2);
527
+ }
528
+
529
+ .floating-scroll-button:hover {
530
+ background: #1976d2;
531
+ transform: scale(1.1);
532
+ box-shadow: 0 6px 16px rgba(33, 150, 243, .4);
533
+ }
534
+
535
+ .floating-scroll-button:active {
536
+ transform: scale(.95);
537
+ }
538
+
539
+ .input-row input {
540
+ flex: 1;
541
+ min-width: 0;
542
+ padding: 8px 12px;
543
+ border: 1px solid rgba(128, 128, 128, .3);
544
+ border-radius: 4px;
545
+ outline: none;
546
+ background: transparent;
547
+ color: currentColor;
548
+ }
549
+
550
+ .input-row input:focus {
551
+ border-color: #2196f3;
552
+ box-shadow: 0 0 0 2px rgba(33, 150, 243, .2);
553
+ }
554
+
555
+ .input-row button {
556
+ padding: 8px 16px;
557
+ background: #2196f3;
558
+ color: white;
559
+ border: none;
560
+ border-radius: 4px;
561
+ cursor: pointer;
562
+ transition: background-color .2s;
563
+ }
564
+
565
+ .input-row button:hover:not(:disabled) {
566
+ background: #1976d2;
567
+ }
568
+
569
+ .input-row button:disabled {
570
+ background: rgba(128, 128, 128, .3);
571
+ cursor: not-allowed;
572
+ }
573
+
574
+ .input-row button.is-sending {
575
+ background: #ffc107 !important;
576
+ color: #333 !important;
577
+ cursor: default !important;
578
+ }
579
+
580
+ .empty-state {
581
+ display: flex;
582
+ align-items: center;
583
+ justify-content: center;
584
+ height: 100%;
585
+ color: currentColor;
586
+ opacity: .5;
587
+ font-size: 14px;
588
+ }
589
+
590
+ .message-image-container {
591
+ margin: 8px 0;
592
+ max-width: 100%;
593
+ display: block;
594
+ }
595
+
596
+ .message-image {
597
+ border-radius: 8px;
598
+ object-fit: contain;
599
+ display: block;
600
+ cursor: pointer;
601
+ transition: transform .2s ease;
602
+ }
603
+
604
+ .message-image:hover {
605
+ transform: scale(1.02);
606
+ }
607
+
608
+ .message-image-loading {
609
+ display: inline-block;
610
+ padding: 8px 12px;
611
+ background: rgba(128, 128, 128, .1);
612
+ border-radius: 4px;
613
+ color: currentColor;
614
+ opacity: .7;
615
+ font-size: 12px;
616
+ }
617
+
618
+ .message-image-error {
619
+ display: inline-block;
620
+ padding: 8px 12px;
621
+ background: rgba(244, 67, 54, .1);
622
+ border: 1px solid rgba(244, 67, 54, .3);
623
+ border-radius: 4px;
624
+ color: #f44336;
625
+ font-size: 12px;
626
+ max-width: 300px;
627
+ word-break: break-word;
628
+ }
629
+
630
+ .message-text-content {
631
+ display: inline;
632
+ }
633
+
634
+ .message-at {
635
+ background: rgba(33, 150, 243, .1);
636
+ color: #2196f3;
637
+ padding: 2px 4px;
638
+ border-radius: 3px;
639
+ font-weight: 500;
640
+ cursor: pointer;
641
+ }
642
+
643
+ .message-unknown {
644
+ background: rgba(255, 152, 0, .1);
645
+ color: #ff9800;
646
+ padding: 2px 4px;
647
+ border-radius: 3px;
648
+ font-style: italic;
649
+ cursor: help;
650
+ }
651
+
652
+ .input-row input {
653
+ flex: 1;
654
+ min-width: 0;
655
+ padding: 8px 12px;
656
+ border: 1px solid rgba(128, 128, 128, .3);
657
+ border-radius: 4px;
658
+ outline: none;
659
+ background: transparent;
660
+ color: currentColor;
661
+ }
662
+
663
+ .input-row input:focus {
664
+ border-color: #2196f3;
665
+ box-shadow: 0 0 0 2px rgba(33, 150, 243, .2);
666
+ }
667
+
668
+ .input-row input::placeholder {
669
+ color: currentColor;
670
+ opacity: .5;
671
+ }
672
+
673
+ .input-row button {
674
+ padding: 8px 16px;
675
+ background: #2196f3;
676
+ color: white;
677
+ border: none;
678
+ border-radius: 4px;
679
+ cursor: pointer;
680
+ transition: background-color .2s;
681
+ flex-shrink: 0;
682
+ white-space: nowrap;
683
+ }
684
+
685
+ .input-row button:hover:not(:disabled) {
686
+ background: #1976d2;
687
+ }
688
+
689
+ .input-row button:disabled {
690
+ background: rgba(128, 128, 128, .3);
691
+ cursor: not-allowed;
692
+ }
693
+
694
+ .input-row button.is-sending {
695
+ background: #ffc107 !important;
696
+ color: #333 !important;
697
+ cursor: default !important;
698
+ }
699
+
700
+ .message-input .input-row button.is-sending {
701
+ background: #ffc107 !important;
702
+ color: #333 !important;
703
+ cursor: default !important;
704
+ border-color: #ffc107 !important;
705
+ }
706
+
707
+ .empty-state {
708
+ display: flex;
709
+ align-items: center;
710
+ justify-content: center;
711
+ height: 100%;
712
+ color: currentColor;
713
+ opacity: .5;
714
+ font-size: 14px;
715
+ }
716
+
717
+ .empty-state {
718
+ display: flex;
719
+ align-items: center;
720
+ justify-content: center;
721
+ height: 100%;
722
+ color: currentColor;
723
+ opacity: .5;
724
+ font-size: 14px;
725
+ }
726
+
727
+ .message-text-content {
728
+ display: inline;
729
+ }
730
+
731
+ .message-image-container {
732
+ display: block;
733
+ margin: 4px 0;
734
+ }
735
+
736
+ .message-image {
737
+ border-radius: 8px;
738
+ margin: 4px 0;
739
+ display: block;
740
+ cursor: pointer;
741
+ transition: transform .2s ease;
742
+ object-fit: contain;
743
+ background: rgba(128, 128, 128, .1);
744
+ }
745
+
746
+ .message-image:hover {
747
+ transform: scale(1.02);
748
+ }
749
+
750
+ .message-image-loading {
751
+ height: 60px;
752
+ width: 200px;
753
+ border-radius: 8px;
754
+ margin: 4px 0;
755
+ display: flex;
756
+ align-items: center;
757
+ justify-content: center;
758
+ background: rgba(128, 128, 128, .1);
759
+ color: currentColor;
760
+ opacity: .7;
761
+ font-size: 14px;
762
+ border: 1px dashed rgba(128, 128, 128, .3);
763
+ }
764
+
765
+ .message-image-error {
766
+ min-height: 60px;
767
+ width: 200px;
768
+ border-radius: 8px;
769
+ margin: 4px 0;
770
+ display: flex;
771
+ flex-direction: column;
772
+ align-items: center;
773
+ justify-content: center;
774
+ background: rgba(128, 128, 128, .1);
775
+ color: currentColor;
776
+ opacity: .7;
777
+ font-size: 14px;
778
+ border: 1px dashed rgba(128, 128, 128, .3);
779
+ padding: 8px;
780
+ text-align: center;
781
+ }
782
+
783
+ .message-at {
784
+ background: rgba(33, 150, 243, .1);
785
+ color: #2196f3;
786
+ padding: 2px 6px;
787
+ border-radius: 4px;
788
+ font-weight: 500;
789
+ cursor: pointer;
790
+ display: inline-block;
791
+ margin: 0 2px;
792
+ }
793
+
794
+ .message-at:hover {
795
+ background: rgba(33, 150, 243, .2);
796
+ }
797
+
798
+ .message-unknown {
799
+ background: rgba(255, 152, 0, .1);
800
+ color: #ff9800;
801
+ padding: 2px 6px;
802
+ border-radius: 4px;
803
+ font-size: 12px;
804
+ display: inline-block;
805
+ margin: 0 2px;
806
+ cursor: help;
807
+ }
808
+
809
+ @keyframes pulse {
810
+
811
+ 0%,
812
+ 100% {
813
+ transform: translate(-50%, -50%) scale(1);
814
+ }
815
+
816
+ 50% {
817
+ transform: translate(-50%, -50%) scale(1.1);
818
+ }
819
+ }
820
+
821
+ .channel-message-count.will-delete {
822
+ background: #f44336 !important;
823
+ animation: shake .3s ease-in-out infinite;
824
+ }
825
+
826
+ @keyframes shake {
827
+
828
+ 0%,
829
+ 100% {
830
+ transform: translateX(0);
831
+ }
832
+
833
+ 25% {
834
+ transform: translateX(-2px);
835
+ }
836
+
837
+ 75% {
838
+ transform: translateX(2px);
839
+ }
840
+ }
841
+
842
+ body.dragging-bubble-global {
843
+ user-select: none;
844
+ -webkit-user-select: none;
845
+ -moz-user-select: none;
846
+ -ms-user-select: none;
847
+ cursor: grabbing;
848
+ }
849
+
850
+ .drag-threshold-circle {
851
+ position: fixed;
852
+ pointer-events: none;
853
+ border: 3px dashed rgba(244, 67, 54, .8);
854
+ border-radius: 50%;
855
+ z-index: 999;
856
+ background: rgba(244, 67, 54, .1);
857
+ box-shadow: 0 0 20px rgba(244, 67, 54, .3);
858
+ animation: pulseThreshold 1.5s ease-in-out infinite;
859
+ }
860
+
861
+ .context-menu {
862
+ position: fixed;
863
+ background: rgba(255, 255, 255, .65);
864
+ border: 1px solid rgba(0, 0, 0, .1);
865
+ border-radius: 8px;
866
+ box-shadow: 0 8px 32px rgba(0, 0, 0, .15);
867
+ z-index: 10000;
868
+ min-width: 180px;
869
+ backdrop-filter: blur(16px);
870
+ -webkit-backdrop-filter: blur(16px);
871
+ overflow: hidden;
872
+ }
873
+
874
+ .context-menu-item {
875
+ padding: 12px 16px;
876
+ cursor: pointer;
877
+ color: #333;
878
+ font-size: 14px;
879
+ font-weight: 500;
880
+ transition: all .2s ease;
881
+ border-bottom: 1px solid rgba(0, 0, 0, .08);
882
+ position: relative;
883
+ }
884
+
885
+ .context-menu-item:last-child {
886
+ border-bottom: none;
887
+ }
888
+
889
+ .context-menu-item:hover {
890
+ background: rgba(33, 150, 243, .1);
891
+ color: #1976d2;
892
+ transform: translateX(2px);
893
+ }
894
+
895
+ .context-menu-item.danger {
896
+ color: #d32f2f;
897
+ }
898
+
899
+ .context-menu-item.danger:hover {
900
+ background: rgba(244, 67, 54, .1);
901
+ color: #c62828;
902
+ }
903
+
904
+ .bot-item.pinned,
905
+ .channel-item.pinned {
906
+ background: rgba(255, 193, 7, .1);
907
+ border-left: 3px solid #ffc107;
908
+ }
909
+
910
+ .bot-item.pinned::before,
911
+ .channel-item.pinned::before {
912
+ content: "📌";
913
+ position: absolute;
914
+ left: 4px;
915
+ top: 50%;
916
+ transform: translateY(-50%);
917
+ font-size: 12px;
918
+ opacity: .7;
919
+ }
920
+
921
+ .bot-item.pinned {
922
+ position: relative;
923
+ padding-left: 24px;
924
+ }
925
+
926
+ .channel-item.pinned {
927
+ position: relative;
928
+ padding-left: 24px;
929
+ }
930
+
931
+ @media (prefers-color-scheme: dark) {
932
+ .context-menu {
933
+ background: rgba(255, 255, 255, .15);
934
+ border-color: rgba(255, 255, 255, .2);
935
+ box-shadow: 0 8px 32px rgba(0, 0, 0, .4);
936
+ }
937
+
938
+ .context-menu-item {
939
+ color: #fff;
940
+ border-bottom-color: rgba(255, 255, 255, .1);
941
+ }
942
+
943
+ .context-menu-item:hover {
944
+ background: rgba(33, 150, 243, .2);
945
+ color: #64b5f6;
946
+ }
947
+
948
+ .context-menu-item.danger {
949
+ color: #ff8a80;
950
+ }
951
+
952
+ .context-menu-item.danger:hover {
953
+ background: rgba(244, 67, 54, .2);
954
+ color: #ffab91;
955
+ }
956
+
957
+ .bot-item.pinned,
958
+ .channel-item.pinned {
959
+ background: rgba(255, 193, 7, .15);
960
+ }
961
+ }
962
+
963
+ .message-share-card {
964
+ display: inline-block;
965
+ width: 75px;
966
+ margin: 8px 0;
967
+ border: 1px solid rgba(128, 128, 128, .2);
968
+ border-radius: 12px;
969
+ background: rgba(255, 255, 255, .05);
970
+ transition: all .3s ease;
971
+ cursor: pointer;
972
+ backdrop-filter: blur(8px);
973
+ -webkit-backdrop-filter: blur(8px);
974
+ }
975
+
976
+ .message-share-card:hover {
977
+ transform: translateY(-2px);
978
+ box-shadow: 0 8px 24px rgba(0, 0, 0, .15);
979
+ border-color: rgba(33, 150, 243, .3);
980
+ }
981
+
982
+ .share-card-preview {
983
+ width: 100%;
984
+ position: relative;
985
+ display: flex;
986
+ align-items: center;
987
+ justify-content: center;
988
+ padding: 4px;
989
+ border-radius: 12px 12px 0 0;
990
+ }
991
+
992
+ .share-card-image {
993
+ max-width: calc(100% - 8px);
994
+ width: auto;
995
+ height: auto;
996
+ object-fit: contain;
997
+ transition: transform .3s ease;
998
+ display: block;
999
+ border-radius: 4px;
1000
+ }
1001
+
1002
+ .message-share-card:hover .share-card-image {
1003
+ transform: scale(1.05);
1004
+ }
1005
+
1006
+ .share-card-content {
1007
+ padding: 8px;
1008
+ }
1009
+
1010
+ .share-card-header {
1011
+ display: flex;
1012
+ align-items: center;
1013
+ margin-bottom: 12px;
1014
+ gap: 12px;
1015
+ }
1016
+
1017
+ .share-card-icon {
1018
+ width: 32px;
1019
+ height: 32px;
1020
+ border-radius: 8px;
1021
+ object-fit: cover;
1022
+ flex-shrink: 0;
1023
+ }
1024
+
1025
+ .share-card-app-info {
1026
+ flex: 1;
1027
+ min-width: 0;
1028
+ }
1029
+
1030
+ .share-card-app-name {
1031
+ font-size: 12px;
1032
+ color: currentColor;
1033
+ opacity: .7;
1034
+ margin-bottom: 2px;
1035
+ font-weight: 500;
1036
+ }
1037
+
1038
+ .share-card-title {
1039
+ font-size: 10px;
1040
+ font-weight: 600;
1041
+ color: currentColor;
1042
+ line-height: 1.2;
1043
+ word-wrap: break-word;
1044
+ display: -webkit-box;
1045
+ -webkit-box-orient: vertical;
1046
+ overflow: hidden;
1047
+ }
1048
+
1049
+ .share-card-desc {
1050
+ font-size: 14px;
1051
+ color: currentColor;
1052
+ opacity: .8;
1053
+ line-height: 1.4;
1054
+ margin-bottom: 12px;
1055
+ display: -webkit-box;
1056
+ -webkit-box-orient: vertical;
1057
+ overflow: hidden;
1058
+ word-wrap: break-word;
1059
+ }
1060
+
1061
+ .share-card-link-hint {
1062
+ font-size: 12px;
1063
+ color: #2196f3;
1064
+ font-weight: 500;
1065
+ display: flex;
1066
+ align-items: center;
1067
+ gap: 4px;
1068
+ }
1069
+
1070
+ .share-card-link-hint::after {
1071
+ content: "→";
1072
+ transition: transform .2s ease;
1073
+ }
1074
+
1075
+ .message-share-card:hover .share-card-link-hint::after {
1076
+ transform: translateX(2px);
1077
+ }
1078
+
1079
+ .message-json-error,
1080
+ .message-json-raw {
1081
+ display: inline-block;
1082
+ margin: 8px 0;
1083
+ max-width: 400px;
1084
+ }
1085
+
1086
+ .json-error-text {
1087
+ color: #f44336;
1088
+ font-size: 14px;
1089
+ font-weight: 500;
1090
+ }
1091
+
1092
+ .json-label {
1093
+ color: currentColor;
1094
+ opacity: .7;
1095
+ font-size: 12px;
1096
+ font-weight: 500;
1097
+ margin-bottom: 8px;
1098
+ }
1099
+
1100
+ .json-raw-data {
1101
+ margin-top: 8px;
1102
+ }
1103
+
1104
+ .json-raw-data summary {
1105
+ cursor: pointer;
1106
+ font-size: 12px;
1107
+ color: #2196f3;
1108
+ font-weight: 500;
1109
+ padding: 4px 8px;
1110
+ border-radius: 4px;
1111
+ background: rgba(33, 150, 243, .1);
1112
+ display: inline-block;
1113
+ transition: background-color .2s ease;
1114
+ }
1115
+
1116
+ .json-raw-data summary:hover {
1117
+ background: rgba(33, 150, 243, .2);
1118
+ }
1119
+
1120
+ .json-raw-content {
1121
+ margin-top: 8px;
1122
+ padding: 12px;
1123
+ background: rgba(128, 128, 128, .1);
1124
+ border-radius: 8px;
1125
+ font-family: "Courier New", monospace;
1126
+ font-size: 12px;
1127
+ color: currentColor;
1128
+ opacity: .8;
1129
+ white-space: pre-wrap;
1130
+ word-wrap: break-word;
1131
+ max-height: 200px;
1132
+ overflow-y: auto;
1133
+ border: 1px solid rgba(128, 128, 128, .2);
1134
+ }
1135
+
1136
+ @media (prefers-color-scheme: dark) {
1137
+ .message-share-card {
1138
+ background: rgba(255, 255, 255, .08);
1139
+ border-color: rgba(255, 255, 255, .15);
1140
+ }
1141
+
1142
+ .message-share-card:hover {
1143
+ border-color: rgba(33, 150, 243, .5);
1144
+ box-shadow: 0 8px 24px rgba(0, 0, 0, .3);
1145
+ }
1146
+
1147
+ .json-raw-content {
1148
+ background: rgba(255, 255, 255, .05);
1149
+ border-color: rgba(255, 255, 255, .1);
1150
+ }
1151
+ }
1152
+
1153
+ @media (max-width: 768px) {
1154
+ .chat-container {
1155
+ position: relative;
1156
+ }
1157
+
1158
+ .bot-list,
1159
+ .channel-list,
1160
+ .message-area {
1161
+ position: absolute;
1162
+ top: 0;
1163
+ left: 0;
1164
+ width: 100%;
1165
+ height: 100%;
1166
+ transition: transform .3s ease;
1167
+ z-index: 1;
1168
+ }
1169
+
1170
+ .bot-list {
1171
+ transform: translateX(0);
1172
+ z-index: 3;
1173
+ }
1174
+
1175
+ .channel-list {
1176
+ transform: translateX(100%);
1177
+ z-index: 2;
1178
+ }
1179
+
1180
+ .message-area {
1181
+ transform: translateX(200%);
1182
+ z-index: 1;
1183
+ }
1184
+
1185
+ .chat-container.show-channels .bot-list {
1186
+ transform: translateX(-100%);
1187
+ }
1188
+
1189
+ .chat-container.show-channels .channel-list {
1190
+ transform: translateX(0);
1191
+ z-index: 3;
1192
+ }
1193
+
1194
+ .chat-container.show-channels .message-area {
1195
+ transform: translateX(100%);
1196
+ }
1197
+
1198
+ .chat-container.show-messages .bot-list {
1199
+ transform: translateX(-200%);
1200
+ }
1201
+
1202
+ .chat-container.show-messages .channel-list {
1203
+ transform: translateX(-100%);
1204
+ }
1205
+
1206
+ .chat-container.show-messages .message-area {
1207
+ transform: translateX(0);
1208
+ z-index: 3;
1209
+ }
1210
+
1211
+ .back-button {
1212
+ display: none !important;
1213
+ }
1214
+
1215
+ .panel-header {
1216
+ flex-direction: row-reverse;
1217
+ position: sticky;
1218
+ top: 0;
1219
+ z-index: 5;
1220
+ background: inherit;
1221
+ }
1222
+
1223
+ .panel-header h3 {
1224
+ text-align: right;
1225
+ }
1226
+
1227
+ .floating-scroll-button {
1228
+ right: 16px;
1229
+ bottom: 70px;
1230
+ width: 40px;
1231
+ height: 40px;
1232
+ }
1233
+
1234
+ .message-input {
1235
+ padding: 8px 12px 12px 12px;
1236
+ position: fixed;
1237
+ bottom: 0;
1238
+ left: 0;
1239
+ right: 0;
1240
+ background: inherit;
1241
+ border-top: 1px solid rgba(128, 128, 128, .2);
1242
+ z-index: 10;
1243
+ }
1244
+
1245
+ .input-row input {
1246
+ font-size: 16px;
1247
+ padding: 10px 12px;
1248
+ }
1249
+
1250
+ .input-row button {
1251
+ padding: 10px 16px;
1252
+ font-size: 16px;
1253
+ }
1254
+
1255
+ .message-history {
1256
+ padding: 12px;
1257
+ max-height: calc(100vh - 140px);
1258
+ padding-bottom: 80px;
1259
+ }
1260
+
1261
+ .message-item {
1262
+ margin-bottom: 12px;
1263
+ padding: 6px;
1264
+ }
1265
+
1266
+ .message-avatar {
1267
+ width: 28px;
1268
+ height: 28px;
1269
+ margin-right: 8px;
1270
+ }
1271
+
1272
+ .message-item.bot-message .message-avatar {
1273
+ margin-left: 8px;
1274
+ }
1275
+
1276
+ .message-image {
1277
+ max-width: 280px;
1278
+ max-height: 160px;
1279
+ }
1280
+
1281
+ .quote-content .message-image {
1282
+ max-width: 150px;
1283
+ max-height: 80px;
1284
+ }
1285
+
1286
+ .context-menu {
1287
+ min-width: 160px;
1288
+ backdrop-filter: blur(12px);
1289
+ -webkit-backdrop-filter: blur(12px);
1290
+ }
1291
+
1292
+ .context-menu-item {
1293
+ padding: 14px 16px;
1294
+ font-size: 16px;
1295
+ }
1296
+
1297
+ .bot-item,
1298
+ .channel-item {
1299
+ padding: 14px 16px;
1300
+ }
1301
+
1302
+ .bot-avatar {
1303
+ width: 36px;
1304
+ height: 36px;
1305
+ margin-right: 10px;
1306
+ }
1307
+
1308
+ .bot-name,
1309
+ .channel-name {
1310
+ font-size: 15px;
1311
+ }
1312
+
1313
+ .bot-platform,
1314
+ .channel-type {
1315
+ font-size: 13px;
1316
+ }
1317
+ }
1318
+
1319
+ @media (min-width: 769px) and (max-width: 1024px) {
1320
+ .bot-list {
1321
+ width: 220px;
1322
+ min-width: 220px;
1323
+ max-width: 220px;
1324
+ }
1325
+
1326
+ .channel-list {
1327
+ width: 280px;
1328
+ min-width: 280px;
1329
+ max-width: 280px;
1330
+ }
1331
+
1332
+ .message-image {
1333
+ max-width: 350px;
1334
+ max-height: 180px;
1335
+ }
1336
+ }
1337
+
1338
+ .chat-container.swiping {
1339
+ overflow: hidden;
1340
+ }
1341
+
1342
+ .bot-list.swiping,
1343
+ .channel-list.swiping,
1344
+ .message-area.swiping {
1345
+ transition: none !important;
1346
+ }
1347
+
1348
+ .swipe-indicator {
1349
+ position: fixed;
1350
+ top: 50%;
1351
+ left: 20px;
1352
+ transform: translateY(-50%);
1353
+ background: rgba(33, 150, 243, .8);
1354
+ color: white;
1355
+ padding: 8px 12px;
1356
+ border-radius: 20px;
1357
+ font-size: 14px;
1358
+ z-index: 1000;
1359
+ opacity: 0;
1360
+ transition: opacity .2s ease;
1361
+ pointer-events: none;
1362
+ backdrop-filter: blur(8px);
1363
+ -webkit-backdrop-filter: blur(8px);
1364
+ }
1365
+
1366
+ .swipe-indicator.show {
1367
+ opacity: 1;
1368
+ }
1369
+
1370
+ .message-area .message-content {
1371
+ padding-bottom: 80px;
1372
+ }