@ai-matrx/messaging 0.0.0 → 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,745 @@
1
+ /**
2
+ * STRUCTURAL CSS — layout, spacing, interaction states, motion (C26).
3
+ *
4
+ * This ships WITH the components: a package that withholds its stylesheet
5
+ * withholds a working product. Colors are read exclusively from the token
6
+ * contract in `tokens.css`; there is not one hardcoded color below.
7
+ *
8
+ * The iOS/macOS bar (R6) is mostly in here: `dvh` not `vh`, safe-area insets,
9
+ * 44px touch targets, 16px composer text (anything smaller zooms iOS Safari),
10
+ * spring-ish easing, and reduced-motion honored.
11
+ */
12
+
13
+ .mx-msg {
14
+ --mx-msg-list-width: 340px;
15
+ font-family: var(--mx-msg-font);
16
+ font-size: var(--mx-msg-font-size);
17
+ color: var(--mx-msg-text);
18
+ background: var(--mx-msg-bg);
19
+ display: flex;
20
+ /* dvh, never vh: iOS Safari's vh includes the collapsing toolbar, so a
21
+ 100vh layout puts the composer under the browser chrome. */
22
+ height: 100dvh;
23
+ max-height: 100dvh;
24
+ overflow: hidden;
25
+ box-sizing: border-box;
26
+ }
27
+
28
+ .mx-msg *,
29
+ .mx-msg *::before,
30
+ .mx-msg *::after {
31
+ box-sizing: border-box;
32
+ }
33
+
34
+ /* ---------- Inbox shell ---------- */
35
+
36
+ .mx-msg__list {
37
+ width: var(--mx-msg-list-width);
38
+ flex: 0 0 var(--mx-msg-list-width);
39
+ border-right: 1px solid var(--mx-msg-border);
40
+ display: flex;
41
+ flex-direction: column;
42
+ min-height: 0;
43
+ background: var(--mx-msg-bg-subtle);
44
+ }
45
+
46
+ .mx-msg__thread {
47
+ flex: 1 1 auto;
48
+ display: flex;
49
+ flex-direction: column;
50
+ min-width: 0;
51
+ min-height: 0;
52
+ }
53
+
54
+ .mx-msg__header {
55
+ display: flex;
56
+ align-items: center;
57
+ gap: 10px;
58
+ padding: 10px 14px;
59
+ padding-top: max(10px, env(safe-area-inset-top));
60
+ border-bottom: 1px solid var(--mx-msg-border);
61
+ background: var(--mx-msg-bg);
62
+ min-height: 56px;
63
+ flex: 0 0 auto;
64
+ }
65
+
66
+ .mx-msg__header-title {
67
+ font-weight: 600;
68
+ font-size: var(--mx-msg-font-size);
69
+ line-height: 1.2;
70
+ overflow: hidden;
71
+ text-overflow: ellipsis;
72
+ white-space: nowrap;
73
+ }
74
+
75
+ .mx-msg__header-subtitle {
76
+ font-size: var(--mx-msg-font-size-sm);
77
+ color: var(--mx-msg-text-muted);
78
+ line-height: 1.3;
79
+ }
80
+
81
+ .mx-msg__header-actions {
82
+ margin-left: auto;
83
+ display: flex;
84
+ align-items: center;
85
+ gap: 4px;
86
+ }
87
+
88
+ .mx-msg__scroll {
89
+ flex: 1 1 auto;
90
+ overflow-y: auto;
91
+ overscroll-behavior: contain;
92
+ -webkit-overflow-scrolling: touch;
93
+ min-height: 0;
94
+ }
95
+
96
+ /* ---------- Conversation rows ---------- */
97
+
98
+ .mx-msg__rows {
99
+ list-style: none;
100
+ margin: 0;
101
+ padding: 4px 0;
102
+ }
103
+
104
+ .mx-msg__row {
105
+ display: flex;
106
+ gap: 10px;
107
+ align-items: center;
108
+ width: 100%;
109
+ padding: 9px 12px;
110
+ min-height: var(--mx-msg-touch-target);
111
+ border: 0;
112
+ background: transparent;
113
+ color: inherit;
114
+ font: inherit;
115
+ text-align: left;
116
+ cursor: pointer;
117
+ transition: background var(--mx-msg-motion-fast) var(--mx-msg-ease);
118
+ }
119
+
120
+ .mx-msg__row:hover {
121
+ background: var(--mx-msg-bg-hover);
122
+ }
123
+
124
+ .mx-msg__row[aria-current="true"] {
125
+ background: var(--mx-msg-accent-subtle);
126
+ }
127
+
128
+ .mx-msg__row-body {
129
+ min-width: 0;
130
+ flex: 1 1 auto;
131
+ }
132
+
133
+ .mx-msg__row-top {
134
+ display: flex;
135
+ align-items: baseline;
136
+ gap: 8px;
137
+ }
138
+
139
+ .mx-msg__row-name {
140
+ font-weight: 600;
141
+ overflow: hidden;
142
+ text-overflow: ellipsis;
143
+ white-space: nowrap;
144
+ flex: 1 1 auto;
145
+ }
146
+
147
+ .mx-msg__row-time {
148
+ font-size: 12px;
149
+ color: var(--mx-msg-text-faint);
150
+ flex: 0 0 auto;
151
+ }
152
+
153
+ .mx-msg__row-preview {
154
+ display: flex;
155
+ align-items: center;
156
+ gap: 8px;
157
+ font-size: var(--mx-msg-font-size-sm);
158
+ color: var(--mx-msg-text-muted);
159
+ }
160
+
161
+ .mx-msg__row-preview span {
162
+ overflow: hidden;
163
+ text-overflow: ellipsis;
164
+ white-space: nowrap;
165
+ flex: 1 1 auto;
166
+ }
167
+
168
+ .mx-msg__badge {
169
+ flex: 0 0 auto;
170
+ min-width: 20px;
171
+ height: 20px;
172
+ padding: 0 6px;
173
+ border-radius: 10px;
174
+ background: var(--mx-msg-accent);
175
+ color: var(--mx-msg-text-on-accent);
176
+ font-size: 12px;
177
+ font-weight: 600;
178
+ line-height: 20px;
179
+ text-align: center;
180
+ }
181
+
182
+ /* ---------- Avatar ---------- */
183
+
184
+ .mx-msg__avatar {
185
+ flex: 0 0 auto;
186
+ width: 38px;
187
+ height: 38px;
188
+ border-radius: 50%;
189
+ display: grid;
190
+ place-items: center;
191
+ font-size: 13px;
192
+ font-weight: 600;
193
+ color: var(--mx-msg-text-on-accent);
194
+ object-fit: cover;
195
+ overflow: hidden;
196
+ position: relative;
197
+ }
198
+
199
+ .mx-msg__avatar--sm {
200
+ width: 26px;
201
+ height: 26px;
202
+ font-size: 11px;
203
+ }
204
+
205
+ .mx-msg__avatar-img {
206
+ width: 100%;
207
+ height: 100%;
208
+ object-fit: cover;
209
+ display: block;
210
+ }
211
+
212
+ .mx-msg__presence {
213
+ position: absolute;
214
+ right: -1px;
215
+ bottom: -1px;
216
+ width: 11px;
217
+ height: 11px;
218
+ border-radius: 50%;
219
+ background: var(--mx-msg-success);
220
+ border: 2px solid var(--mx-msg-bg-subtle);
221
+ }
222
+
223
+ /* ---------- Bubbles ---------- */
224
+
225
+ .mx-msg__messages {
226
+ display: flex;
227
+ flex-direction: column;
228
+ gap: 2px;
229
+ padding: 14px 16px 8px;
230
+ }
231
+
232
+ .mx-msg__day {
233
+ align-self: center;
234
+ margin: 14px 0 8px;
235
+ padding: 3px 10px;
236
+ border-radius: 999px;
237
+ background: var(--mx-msg-bg-subtle);
238
+ color: var(--mx-msg-text-faint);
239
+ font-size: 12px;
240
+ font-weight: 500;
241
+ }
242
+
243
+ .mx-msg__group {
244
+ display: flex;
245
+ gap: 8px;
246
+ margin-top: 10px;
247
+ align-items: flex-end;
248
+ }
249
+
250
+ .mx-msg__group--mine {
251
+ flex-direction: row-reverse;
252
+ }
253
+
254
+ .mx-msg__group-body {
255
+ display: flex;
256
+ flex-direction: column;
257
+ gap: 2px;
258
+ min-width: 0;
259
+ max-width: min(68ch, 76%);
260
+ }
261
+
262
+ .mx-msg__group--mine .mx-msg__group-body {
263
+ align-items: flex-end;
264
+ }
265
+
266
+ .mx-msg__author {
267
+ font-size: 12px;
268
+ font-weight: 600;
269
+ color: var(--mx-msg-text-muted);
270
+ padding: 0 8px 2px;
271
+ display: flex;
272
+ align-items: center;
273
+ gap: 5px;
274
+ }
275
+
276
+ .mx-msg__agent-tag {
277
+ display: inline-flex;
278
+ align-items: center;
279
+ gap: 3px;
280
+ padding: 0 5px;
281
+ border-radius: 5px;
282
+ background: var(--mx-msg-accent-subtle);
283
+ color: var(--mx-msg-accent);
284
+ font-size: 10px;
285
+ font-weight: 700;
286
+ letter-spacing: 0.03em;
287
+ text-transform: uppercase;
288
+ }
289
+
290
+ .mx-msg__bubble {
291
+ padding: 8px 12px;
292
+ border-radius: var(--mx-msg-bubble-radius);
293
+ background: var(--mx-msg-bubble-theirs-bg);
294
+ color: var(--mx-msg-bubble-theirs-text);
295
+ line-height: 1.42;
296
+ word-break: break-word;
297
+ overflow-wrap: anywhere;
298
+ white-space: pre-wrap;
299
+ position: relative;
300
+ animation: mx-msg-pop var(--mx-msg-motion) var(--mx-msg-ease);
301
+ }
302
+
303
+ .mx-msg__bubble--mine {
304
+ background: var(--mx-msg-bubble-mine-bg);
305
+ color: var(--mx-msg-bubble-mine-text);
306
+ }
307
+
308
+ /* The iMessage tail: the corner nearest the avatar tightens on the last bubble
309
+ of a burst, which is what makes a group read as one utterance. */
310
+ .mx-msg__bubble--tail {
311
+ border-bottom-left-radius: var(--mx-msg-bubble-radius-tight);
312
+ }
313
+
314
+ .mx-msg__bubble--mine.mx-msg__bubble--tail {
315
+ border-bottom-left-radius: var(--mx-msg-bubble-radius);
316
+ border-bottom-right-radius: var(--mx-msg-bubble-radius-tight);
317
+ }
318
+
319
+ .mx-msg__bubble--pending {
320
+ opacity: 0.62;
321
+ }
322
+
323
+ .mx-msg__bubble--failed {
324
+ background: transparent;
325
+ color: var(--mx-msg-text);
326
+ border: 1px dashed var(--mx-msg-danger);
327
+ }
328
+
329
+ .mx-msg__bubble--deleted {
330
+ background: transparent;
331
+ border: 1px solid var(--mx-msg-border);
332
+ color: var(--mx-msg-text-faint);
333
+ font-style: italic;
334
+ }
335
+
336
+ .mx-msg__meta {
337
+ display: flex;
338
+ align-items: center;
339
+ gap: 4px;
340
+ padding: 2px 8px 0;
341
+ font-size: 11px;
342
+ color: var(--mx-msg-text-faint);
343
+ }
344
+
345
+ .mx-msg__meta--failed {
346
+ color: var(--mx-msg-danger);
347
+ }
348
+
349
+ .mx-msg__reply-quote {
350
+ display: block;
351
+ border-left: 2px solid currentColor;
352
+ opacity: 0.72;
353
+ padding-left: 8px;
354
+ margin-bottom: 4px;
355
+ font-size: var(--mx-msg-font-size-sm);
356
+ overflow: hidden;
357
+ text-overflow: ellipsis;
358
+ white-space: nowrap;
359
+ }
360
+
361
+ /* ---------- Reference cards + action chips ---------- */
362
+
363
+ .mx-msg__reference {
364
+ display: inline-flex;
365
+ align-items: center;
366
+ gap: 6px;
367
+ margin: 3px 3px 0 0;
368
+ padding: 5px 10px;
369
+ min-height: 32px;
370
+ border-radius: var(--mx-msg-radius-sm);
371
+ border: 1px solid var(--mx-msg-border-strong);
372
+ background: var(--mx-msg-bg-raised);
373
+ color: var(--mx-msg-text);
374
+ font: inherit;
375
+ font-size: var(--mx-msg-font-size-sm);
376
+ cursor: pointer;
377
+ text-align: left;
378
+ transition:
379
+ background var(--mx-msg-motion-fast) var(--mx-msg-ease),
380
+ transform var(--mx-msg-motion-fast) var(--mx-msg-ease);
381
+ }
382
+
383
+ .mx-msg__reference:hover {
384
+ background: var(--mx-msg-bg-hover);
385
+ }
386
+
387
+ .mx-msg__reference:active {
388
+ transform: scale(0.98);
389
+ }
390
+
391
+ /* An unopenable reference is HONEST: it is not a button, and it says why. */
392
+ .mx-msg__reference--inert {
393
+ cursor: default;
394
+ color: var(--mx-msg-text-muted);
395
+ }
396
+
397
+ .mx-msg__reference-type {
398
+ color: var(--mx-msg-text-faint);
399
+ font-size: 11px;
400
+ text-transform: uppercase;
401
+ letter-spacing: 0.03em;
402
+ }
403
+
404
+ .mx-msg__chips {
405
+ display: flex;
406
+ flex-wrap: wrap;
407
+ gap: 6px;
408
+ margin-top: 6px;
409
+ }
410
+
411
+ .mx-msg__chip {
412
+ min-height: 32px;
413
+ padding: 6px 12px;
414
+ border-radius: 999px;
415
+ border: 1px solid var(--mx-msg-border-strong);
416
+ background: var(--mx-msg-bg-raised);
417
+ color: var(--mx-msg-text);
418
+ font: inherit;
419
+ font-size: var(--mx-msg-font-size-sm);
420
+ font-weight: 500;
421
+ cursor: pointer;
422
+ transition: background var(--mx-msg-motion-fast) var(--mx-msg-ease);
423
+ }
424
+
425
+ .mx-msg__chip--primary {
426
+ background: var(--mx-msg-accent);
427
+ border-color: var(--mx-msg-accent);
428
+ color: var(--mx-msg-text-on-accent);
429
+ }
430
+
431
+ .mx-msg__chip--danger {
432
+ border-color: var(--mx-msg-danger);
433
+ color: var(--mx-msg-danger);
434
+ }
435
+
436
+ .mx-msg__chip:disabled {
437
+ cursor: default;
438
+ opacity: 0.7;
439
+ }
440
+
441
+ .mx-msg__receipt {
442
+ display: inline-flex;
443
+ align-items: center;
444
+ gap: 5px;
445
+ margin-top: 6px;
446
+ font-size: var(--mx-msg-font-size-sm);
447
+ color: var(--mx-msg-text-muted);
448
+ }
449
+
450
+ /* ---------- Composer ---------- */
451
+
452
+ .mx-msg__composer {
453
+ flex: 0 0 auto;
454
+ border-top: 1px solid var(--mx-msg-border);
455
+ background: var(--mx-msg-bg);
456
+ padding: 8px 12px;
457
+ padding-bottom: max(8px, env(safe-area-inset-bottom));
458
+ display: flex;
459
+ flex-direction: column;
460
+ gap: 6px;
461
+ }
462
+
463
+ .mx-msg__composer-row {
464
+ display: flex;
465
+ align-items: flex-end;
466
+ gap: 8px;
467
+ }
468
+
469
+ .mx-msg__input {
470
+ flex: 1 1 auto;
471
+ resize: none;
472
+ border: 1px solid var(--mx-msg-border-strong);
473
+ border-radius: var(--mx-msg-bubble-radius);
474
+ background: var(--mx-msg-bg-raised);
475
+ color: var(--mx-msg-text);
476
+ padding: 10px 12px;
477
+ /* 16px MINIMUM: iOS Safari zooms the viewport on focus below this, and the
478
+ zoom does not undo itself. This is a functional rule, not a taste one. */
479
+ font-size: max(16px, var(--mx-msg-font-size));
480
+ font-family: inherit;
481
+ line-height: 1.4;
482
+ max-height: 40dvh;
483
+ overflow-y: auto;
484
+ }
485
+
486
+ .mx-msg__input:focus-visible,
487
+ .mx-msg__button:focus-visible,
488
+ .mx-msg__row:focus-visible,
489
+ .mx-msg__chip:focus-visible,
490
+ .mx-msg__reference:focus-visible {
491
+ outline: 2px solid var(--mx-msg-focus-ring);
492
+ outline-offset: 2px;
493
+ }
494
+
495
+ .mx-msg__button {
496
+ flex: 0 0 auto;
497
+ min-width: var(--mx-msg-touch-target);
498
+ min-height: var(--mx-msg-touch-target);
499
+ display: grid;
500
+ place-items: center;
501
+ border-radius: 50%;
502
+ border: 0;
503
+ background: var(--mx-msg-accent);
504
+ color: var(--mx-msg-text-on-accent);
505
+ font-size: 18px;
506
+ cursor: pointer;
507
+ transition:
508
+ background var(--mx-msg-motion-fast) var(--mx-msg-ease),
509
+ transform var(--mx-msg-motion-fast) var(--mx-msg-ease);
510
+ }
511
+
512
+ .mx-msg__button:hover:not(:disabled) {
513
+ background: var(--mx-msg-accent-hover);
514
+ }
515
+
516
+ .mx-msg__button:active:not(:disabled) {
517
+ transform: scale(0.94);
518
+ }
519
+
520
+ .mx-msg__button:disabled {
521
+ opacity: 0.4;
522
+ cursor: default;
523
+ }
524
+
525
+ .mx-msg__button--ghost {
526
+ background: transparent;
527
+ color: var(--mx-msg-text-muted);
528
+ }
529
+
530
+ .mx-msg__button--ghost:hover:not(:disabled) {
531
+ background: var(--mx-msg-bg-hover);
532
+ color: var(--mx-msg-text);
533
+ }
534
+
535
+ .mx-msg__reply-bar,
536
+ .mx-msg__attachment-bar {
537
+ display: flex;
538
+ align-items: center;
539
+ gap: 8px;
540
+ font-size: var(--mx-msg-font-size-sm);
541
+ color: var(--mx-msg-text-muted);
542
+ padding: 4px 6px;
543
+ border-radius: var(--mx-msg-radius-sm);
544
+ background: var(--mx-msg-bg-subtle);
545
+ }
546
+
547
+ .mx-msg__reply-bar span {
548
+ overflow: hidden;
549
+ text-overflow: ellipsis;
550
+ white-space: nowrap;
551
+ }
552
+
553
+ /* ---------- Typing, status, empty ---------- */
554
+
555
+ .mx-msg__typing {
556
+ display: flex;
557
+ align-items: center;
558
+ gap: 6px;
559
+ padding: 2px 18px 6px;
560
+ font-size: var(--mx-msg-font-size-sm);
561
+ color: var(--mx-msg-text-muted);
562
+ min-height: 22px;
563
+ }
564
+
565
+ .mx-msg__dots {
566
+ display: inline-flex;
567
+ gap: 3px;
568
+ }
569
+
570
+ .mx-msg__dots i {
571
+ width: 5px;
572
+ height: 5px;
573
+ border-radius: 50%;
574
+ background: currentColor;
575
+ animation: mx-msg-bounce 1.2s infinite var(--mx-msg-ease);
576
+ }
577
+
578
+ .mx-msg__dots i:nth-child(2) {
579
+ animation-delay: 0.15s;
580
+ }
581
+
582
+ .mx-msg__dots i:nth-child(3) {
583
+ animation-delay: 0.3s;
584
+ }
585
+
586
+ /* A degraded connection SAYS SO. A silently stale thread is the failure this
587
+ banner exists to make impossible. */
588
+ .mx-msg__status {
589
+ padding: 6px 14px;
590
+ font-size: var(--mx-msg-font-size-sm);
591
+ text-align: center;
592
+ background: var(--mx-msg-bg-subtle);
593
+ color: var(--mx-msg-warning);
594
+ border-bottom: 1px solid var(--mx-msg-border);
595
+ }
596
+
597
+ .mx-msg__empty {
598
+ flex: 1 1 auto;
599
+ display: grid;
600
+ place-items: center;
601
+ padding: 32px;
602
+ text-align: center;
603
+ color: var(--mx-msg-text-muted);
604
+ gap: 6px;
605
+ }
606
+
607
+ .mx-msg__empty h3 {
608
+ margin: 0;
609
+ font-size: var(--mx-msg-font-size);
610
+ color: var(--mx-msg-text);
611
+ }
612
+
613
+ .mx-msg__empty p {
614
+ margin: 0;
615
+ font-size: var(--mx-msg-font-size-sm);
616
+ max-width: 34ch;
617
+ }
618
+
619
+ /* Real skeletons, never the word "Loading…". */
620
+ .mx-msg__skeleton {
621
+ border-radius: var(--mx-msg-radius-sm);
622
+ background: linear-gradient(
623
+ 90deg,
624
+ var(--mx-msg-bg-subtle) 25%,
625
+ var(--mx-msg-bg-hover) 37%,
626
+ var(--mx-msg-bg-subtle) 63%
627
+ );
628
+ background-size: 400% 100%;
629
+ animation: mx-msg-shimmer 1.4s ease infinite;
630
+ }
631
+
632
+ .mx-msg__skeleton-row {
633
+ display: flex;
634
+ gap: 10px;
635
+ align-items: center;
636
+ padding: 9px 12px;
637
+ min-height: var(--mx-msg-touch-target);
638
+ }
639
+
640
+ .mx-msg__ai-bar {
641
+ display: flex;
642
+ gap: 6px;
643
+ flex-wrap: wrap;
644
+ padding: 8px 14px;
645
+ border-bottom: 1px solid var(--mx-msg-border);
646
+ background: var(--mx-msg-bg-subtle);
647
+ }
648
+
649
+ .mx-msg__ai-output {
650
+ margin: 0;
651
+ padding: 10px 14px;
652
+ border-bottom: 1px solid var(--mx-msg-border);
653
+ background: var(--mx-msg-accent-subtle);
654
+ font-size: var(--mx-msg-font-size-sm);
655
+ white-space: pre-wrap;
656
+ max-height: 30dvh;
657
+ overflow-y: auto;
658
+ }
659
+
660
+ /* ---------- Search + new-conversation ---------- */
661
+
662
+ .mx-msg__search {
663
+ padding: 8px 12px;
664
+ border-bottom: 1px solid var(--mx-msg-border);
665
+ display: flex;
666
+ align-items: center;
667
+ gap: 8px;
668
+ }
669
+
670
+ .mx-msg__search input {
671
+ flex: 1 1 auto;
672
+ border: 1px solid var(--mx-msg-border-strong);
673
+ border-radius: 999px;
674
+ background: var(--mx-msg-bg-raised);
675
+ color: var(--mx-msg-text);
676
+ padding: 7px 12px;
677
+ font-size: max(16px, var(--mx-msg-font-size-sm));
678
+ font-family: inherit;
679
+ min-height: 36px;
680
+ }
681
+
682
+ /* ---------- Motion + responsive ---------- */
683
+
684
+ @keyframes mx-msg-pop {
685
+ from {
686
+ opacity: 0;
687
+ transform: translateY(4px) scale(0.99);
688
+ }
689
+ to {
690
+ opacity: 1;
691
+ transform: none;
692
+ }
693
+ }
694
+
695
+ @keyframes mx-msg-bounce {
696
+ 0%,
697
+ 60%,
698
+ 100% {
699
+ transform: translateY(0);
700
+ opacity: 0.5;
701
+ }
702
+ 30% {
703
+ transform: translateY(-3px);
704
+ opacity: 1;
705
+ }
706
+ }
707
+
708
+ @keyframes mx-msg-shimmer {
709
+ from {
710
+ background-position: 100% 50%;
711
+ }
712
+ to {
713
+ background-position: 0 50%;
714
+ }
715
+ }
716
+
717
+ @media (prefers-reduced-motion: reduce) {
718
+ .mx-msg *,
719
+ .mx-msg *::before,
720
+ .mx-msg *::after {
721
+ animation-duration: 0.01ms !important;
722
+ animation-iteration-count: 1 !important;
723
+ transition-duration: 0.01ms !important;
724
+ }
725
+ }
726
+
727
+ /* On a phone the two panes become ONE pane that swaps — a 340px sidebar beside
728
+ a thread on a 390px screen is the layout every chat app gets wrong once. */
729
+ @media (max-width: 768px) {
730
+ .mx-msg__list,
731
+ .mx-msg__thread {
732
+ width: 100%;
733
+ flex: 1 1 auto;
734
+ border-right: 0;
735
+ }
736
+
737
+ .mx-msg[data-pane="thread"] .mx-msg__list,
738
+ .mx-msg[data-pane="list"] .mx-msg__thread {
739
+ display: none;
740
+ }
741
+
742
+ .mx-msg__group-body {
743
+ max-width: 84%;
744
+ }
745
+ }