@ermis-network/ermis-chat-react 1.0.2 → 1.0.4

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/dist/index.css CHANGED
@@ -11,6 +11,10 @@
11
11
  --ermis-text-primary: #e5e7eb;
12
12
  --ermis-text-secondary: #9ca3af;
13
13
  --ermis-text-muted: #6b7280;
14
+ --ermis-color-danger: #ef4444;
15
+ --ermis-color-danger-hover: #dc2626;
16
+ --ermis-color-success: #22c55e;
17
+ --ermis-color-success-hover: #16a34a;
14
18
  --ermis-bubble-own-bg: var(--ermis-accent);
15
19
  --ermis-bubble-own-text: #ffffff;
16
20
  --ermis-bubble-other-bg: #1e1e2a;
@@ -44,6 +48,22 @@
44
48
  --ermis-radius-lg: 0.75rem;
45
49
  --ermis-radius-full: 9999px;
46
50
  --ermis-transition: 150ms ease;
51
+ --ermis-signal-success: #54D62C;
52
+ --ermis-signal-missed: #FF4842;
53
+ --ermis-signal-bg: rgba(255, 255, 255, 0.04);
54
+ --ermis-signal-own-success: #86EFAC;
55
+ --ermis-signal-own-missed: #FCA5A5;
56
+ --ermis-signal-own-bg: rgba(255, 255, 255, 0.12);
57
+ --ermis-signal-own-duration: rgba(255, 255, 255, 0.6);
58
+ --ermis-call-bg:
59
+ linear-gradient(
60
+ 135deg,
61
+ #0f0f1a 0%,
62
+ #1a1a2e 50%,
63
+ #16213e 100%);
64
+ --ermis-call-glass: rgba(255, 255, 255, 0.06);
65
+ --ermis-call-glass-border: rgba(255, 255, 255, 0.1);
66
+ --ermis-call-pulse: rgba(99, 102, 241, 0.4);
47
67
  color: var(--ermis-text-primary);
48
68
  font-family: var(--ermis-font-family);
49
69
  }
@@ -58,6 +78,10 @@
58
78
  --ermis-text-primary: #111827;
59
79
  --ermis-text-secondary: #6b7280;
60
80
  --ermis-text-muted: #9ca3af;
81
+ --ermis-color-danger: #ef4444;
82
+ --ermis-color-danger-hover: #dc2626;
83
+ --ermis-color-success: #10b981;
84
+ --ermis-color-success-hover: #059669;
61
85
  --ermis-bubble-own-bg: var(--ermis-accent);
62
86
  --ermis-bubble-own-text: #ffffff;
63
87
  --ermis-bubble-other-bg: #f3f4f6;
@@ -69,6 +93,22 @@
69
93
  --ermis-quote-own-border: rgba(255, 255, 255, 0.6);
70
94
  --ermis-quote-own-author: rgba(255, 255, 255, 0.95);
71
95
  --ermis-quote-own-text: rgba(255, 255, 255, 0.8);
96
+ --ermis-signal-success: #229A16;
97
+ --ermis-signal-missed: #B72136;
98
+ --ermis-signal-bg: rgba(0, 0, 0, 0.03);
99
+ --ermis-signal-own-success: #86EFAC;
100
+ --ermis-signal-own-missed: #FCA5A5;
101
+ --ermis-signal-own-bg: rgba(255, 255, 255, 0.12);
102
+ --ermis-signal-own-duration: rgba(255, 255, 255, 0.6);
103
+ --ermis-call-bg:
104
+ linear-gradient(
105
+ 135deg,
106
+ #f8f9fa 0%,
107
+ #e9ecef 50%,
108
+ #dee2e6 100%);
109
+ --ermis-call-glass: rgba(0, 0, 0, 0.04);
110
+ --ermis-call-glass-border: rgba(0, 0, 0, 0.08);
111
+ --ermis-call-pulse: rgba(99, 102, 241, 0.3);
72
112
  }
73
113
 
74
114
  /* src/styles/_base.css */
@@ -184,7 +224,7 @@
184
224
  }
185
225
  }
186
226
  .ermis-modal-content {
187
- background-color: var(--ermis-bg-surface, #ffffff);
227
+ background-color: var(--ermis-bg-primary);
188
228
  border-radius: 12px;
189
229
  width: 90%;
190
230
  max-width: 480px;
@@ -194,11 +234,7 @@
194
234
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
195
235
  overflow: hidden;
196
236
  animation: ermis-modal-slide-up 0.2s cubic-bezier(0.16, 1, 0.3, 1);
197
- border: 1px solid var(--ermis-border-color, #eaeaea);
198
- }
199
- [data-theme=dark] .ermis-modal-content {
200
- background-color: var(--ermis-bg-surface, #1e1e1e);
201
- border: 1px solid var(--ermis-border-color, #333333);
237
+ border: 1px solid var(--ermis-border);
202
238
  }
203
239
  @keyframes ermis-modal-slide-up {
204
240
  from {
@@ -212,29 +248,23 @@
212
248
  }
213
249
  .ermis-modal-header {
214
250
  padding: 16px 20px;
215
- border-bottom: 1px solid var(--ermis-border-color, #eaeaea);
251
+ border-bottom: 1px solid var(--ermis-border);
216
252
  display: flex;
217
253
  align-items: center;
218
254
  justify-content: space-between;
219
255
  flex-shrink: 0;
220
256
  }
221
- [data-theme=dark] .ermis-modal-header {
222
- border-bottom: 1px solid var(--ermis-border-color, #333333);
223
- }
224
257
  .ermis-modal-header h3 {
225
258
  margin: 0;
226
259
  font-size: 16px;
227
260
  font-weight: 600;
228
- color: var(--ermis-text-primary, #000000);
229
- }
230
- [data-theme=dark] .ermis-modal-header h3 {
231
- color: var(--ermis-text-primary, #ffffff);
261
+ color: var(--ermis-text-primary);
232
262
  }
233
263
  .ermis-modal-close {
234
264
  background: transparent;
235
265
  border: none;
236
266
  cursor: pointer;
237
- color: var(--ermis-text-secondary, #666666);
267
+ color: var(--ermis-text-secondary);
238
268
  padding: 4px;
239
269
  border-radius: 4px;
240
270
  display: flex;
@@ -243,12 +273,8 @@
243
273
  transition: background-color 0.15s ease, color 0.15s ease;
244
274
  }
245
275
  .ermis-modal-close:hover {
246
- background-color: var(--ermis-bg-hover, #f0f0f0);
247
- color: var(--ermis-text-primary, #000000);
248
- }
249
- [data-theme=dark] .ermis-modal-close:hover {
250
- background-color: var(--ermis-bg-hover, #2a2a2a);
251
- color: var(--ermis-text-primary, #ffffff);
276
+ background-color: var(--ermis-bg-hover);
277
+ color: var(--ermis-text-primary);
252
278
  }
253
279
  .ermis-modal-body {
254
280
  padding: 20px;
@@ -259,16 +285,12 @@
259
285
  }
260
286
  .ermis-modal-footer {
261
287
  padding: 16px 20px;
262
- border-top: 1px solid var(--ermis-border-color, #eaeaea);
288
+ border-top: 1px solid var(--ermis-border);
263
289
  display: flex;
264
290
  justify-content: flex-end;
265
291
  gap: 12px;
266
292
  flex-shrink: 0;
267
- background-color: var(--ermis-bg-base, #f9f9f9);
268
- }
269
- [data-theme=dark] .ermis-modal-footer {
270
- border-top: 1px solid var(--ermis-border-color, #333333);
271
- background-color: var(--ermis-bg-base, #121212);
293
+ background-color: var(--ermis-bg-secondary);
272
294
  }
273
295
 
274
296
  /* src/styles/_panel.css */
@@ -278,7 +300,7 @@
278
300
  z-index: 30;
279
301
  display: flex;
280
302
  flex-direction: column;
281
- background: var(--ermis-bg-primary, #fff);
303
+ background: var(--ermis-bg-primary);
282
304
  transform: translateX(100%);
283
305
  transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
284
306
  will-change: transform;
@@ -464,14 +486,14 @@
464
486
  color: var(--ermis-text-muted);
465
487
  }
466
488
  .ermis-channel-list__item--pending {
467
- border-left: 3px solid var(--ermis-color-amber-500, #f59e0b);
468
- background-color: var(--ermis-color-amber-50, #fffbeb);
489
+ border-left: 3px solid var(--ermis-color-danger);
490
+ background-color: var(--ermis-bg-hover);
469
491
  }
470
492
  .ermis-channel-list__pending-badge {
471
493
  display: inline-flex;
472
494
  padding: 3px 6px;
473
- background-color: var(--ermis-color-amber-100, #fef3c7);
474
- color: var(--ermis-color-amber-700, #b45309);
495
+ background-color: var(--ermis-bg-hover);
496
+ color: var(--ermis-color-danger);
475
497
  border-radius: 6px;
476
498
  font-size: 0.6rem;
477
499
  font-weight: 600;
@@ -486,7 +508,7 @@
486
508
  padding: 16px 12px 6px 16px;
487
509
  background-color: transparent;
488
510
  cursor: pointer;
489
- color: var(--ermis-text-muted, #65676b);
511
+ color: var(--ermis-text-muted);
490
512
  font-size: 0.7rem;
491
513
  font-weight: 700;
492
514
  text-transform: uppercase;
@@ -495,13 +517,13 @@
495
517
  user-select: none;
496
518
  }
497
519
  .ermis-channel-list__accordion-header:hover {
498
- color: var(--ermis-accent, #005fff);
520
+ color: var(--ermis-accent);
499
521
  }
500
522
  .ermis-channel-list__accordion-header--static {
501
523
  cursor: default;
502
524
  }
503
525
  .ermis-channel-list__accordion-header--static:hover {
504
- color: var(--ermis-text-muted, #65676b);
526
+ color: var(--ermis-text-muted);
505
527
  }
506
528
  .ermis-channel-list__accordion-icon {
507
529
  transform: rotate(-90deg);
@@ -763,7 +785,7 @@
763
785
  padding: var(--ermis-spacing-xl);
764
786
  }
765
787
  .ermis-message-list__pending-card {
766
- background-color: var(--ermis-bg-elevated, #ffffff);
788
+ background-color: var(--ermis-bg-primary);
767
789
  border-radius: var(--ermis-radius-lg, 12px);
768
790
  padding: var(--ermis-spacing-xxl, 32px);
769
791
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
@@ -782,7 +804,7 @@
782
804
  font-family: var(--ermis-font-family, sans-serif);
783
805
  font-size: var(--ermis-font-size-md, 14px);
784
806
  font-weight: 500;
785
- color: var(--ermis-text-secondary, #666);
807
+ color: var(--ermis-text-secondary);
786
808
  margin-bottom: var(--ermis-spacing-xs, 4px);
787
809
  text-transform: uppercase;
788
810
  letter-spacing: 0.5px;
@@ -791,13 +813,13 @@
791
813
  font-family: var(--ermis-font-family, sans-serif);
792
814
  font-size: var(--ermis-font-size-xl, 20px);
793
815
  font-weight: 700;
794
- color: var(--ermis-text, #333);
816
+ color: var(--ermis-text-primary);
795
817
  margin-bottom: var(--ermis-spacing-sm, 8px);
796
818
  }
797
819
  .ermis-message-list__pending-overlay-subtitle {
798
820
  font-family: var(--ermis-font-family, sans-serif);
799
821
  font-size: var(--ermis-font-size-sm, 14px);
800
- color: var(--ermis-text-secondary, #666);
822
+ color: var(--ermis-text-secondary);
801
823
  margin-bottom: var(--ermis-spacing-xl, 24px);
802
824
  line-height: 1.5;
803
825
  }
@@ -819,12 +841,12 @@
819
841
  }
820
842
  .ermis-message-list__accept-btn {
821
843
  border: none;
822
- background-color: var(--ermis-accent, #005fff);
844
+ background-color: var(--ermis-accent);
823
845
  color: #fff;
824
846
  box-shadow: 0 4px 10px rgba(0, 95, 255, 0.2);
825
847
  }
826
848
  .ermis-message-list__accept-btn:hover {
827
- background-color: var(--ermis-accent-hover, #004ecc);
849
+ background-color: var(--ermis-accent-hover);
828
850
  transform: translateY(-2px);
829
851
  box-shadow: 0 6px 14px rgba(0, 95, 255, 0.3);
830
852
  }
@@ -832,14 +854,14 @@
832
854
  transform: translateY(0);
833
855
  }
834
856
  .ermis-message-list__reject-btn {
835
- border: 1px solid var(--ermis-danger-border, #fecaca);
836
- background-color: var(--ermis-danger-soft, #fef2f2);
837
- color: var(--ermis-danger, #ef4444);
857
+ border: 1px solid var(--ermis-color-danger);
858
+ background-color: var(--ermis-bg-hover);
859
+ color: var(--ermis-color-danger);
838
860
  }
839
861
  .ermis-message-list__reject-btn:hover {
840
- background-color: var(--ermis-danger, #ef4444);
862
+ background-color: var(--ermis-color-danger);
841
863
  color: #fff;
842
- border-color: var(--ermis-danger, #ef4444);
864
+ border-color: var(--ermis-color-danger);
843
865
  transform: translateY(-2px);
844
866
  box-shadow: 0 6px 14px rgba(239, 68, 68, 0.3);
845
867
  }
@@ -962,7 +984,7 @@
962
984
  opacity: 1;
963
985
  }
964
986
  .ermis-message-status-icon--failed {
965
- color: var(--ermis-color-error, #f44336);
987
+ color: var(--ermis-color-danger);
966
988
  }
967
989
  .ermis-message-bubble--own .ermis-message-list__item-time {
968
990
  color: rgba(255, 255, 255, 0.6);
@@ -1029,12 +1051,80 @@
1029
1051
  color: var(--ermis-text-muted);
1030
1052
  font-style: italic;
1031
1053
  }
1054
+ .ermis-signal-message {
1055
+ display: flex;
1056
+ align-items: center;
1057
+ gap: var(--ermis-spacing-sm);
1058
+ padding: var(--ermis-spacing-sm) var(--ermis-spacing-md);
1059
+ border-radius: var(--ermis-radius-md);
1060
+ background-color: var(--ermis-signal-bg);
1061
+ min-width: 180px;
1062
+ }
1063
+ .ermis-signal-message__icon {
1064
+ display: flex;
1065
+ align-items: center;
1066
+ justify-content: center;
1067
+ flex-shrink: 0;
1068
+ width: 32px;
1069
+ height: 32px;
1070
+ border-radius: var(--ermis-radius-full);
1071
+ }
1072
+ .ermis-signal-message__icon--success {
1073
+ background-color: rgba(84, 214, 44, 0.12);
1074
+ color: var(--ermis-signal-success);
1075
+ }
1076
+ .ermis-signal-message__icon--missed {
1077
+ background-color: rgba(255, 72, 66, 0.12);
1078
+ color: var(--ermis-signal-missed);
1079
+ }
1080
+ .ermis-signal-message__body {
1081
+ display: flex;
1082
+ flex-direction: column;
1083
+ gap: 1px;
1084
+ min-width: 0;
1085
+ }
1086
+ .ermis-signal-message__text {
1087
+ font-size: var(--ermis-font-size-sm);
1088
+ line-height: 1.4;
1089
+ word-break: break-word;
1090
+ }
1091
+ .ermis-signal-message__text--success {
1092
+ color: var(--ermis-signal-success);
1093
+ }
1094
+ .ermis-signal-message__text--missed {
1095
+ color: var(--ermis-signal-missed);
1096
+ }
1097
+ .ermis-signal-message__duration {
1098
+ font-size: var(--ermis-font-size-xs);
1099
+ color: var(--ermis-text-muted);
1100
+ line-height: 1.3;
1101
+ }
1032
1102
  .ermis-message-list__signal-text {
1033
1103
  font-size: var(--ermis-font-size-sm);
1034
1104
  color: inherit;
1035
1105
  line-height: 1.5;
1036
1106
  word-break: break-word;
1037
1107
  }
1108
+ .ermis-message-bubble--own .ermis-signal-message {
1109
+ background-color: var(--ermis-signal-own-bg);
1110
+ }
1111
+ .ermis-message-bubble--own .ermis-signal-message__icon--success {
1112
+ background-color: rgba(134, 239, 172, 0.2);
1113
+ color: var(--ermis-signal-own-success);
1114
+ }
1115
+ .ermis-message-bubble--own .ermis-signal-message__icon--missed {
1116
+ background-color: rgba(252, 165, 165, 0.2);
1117
+ color: var(--ermis-signal-own-missed);
1118
+ }
1119
+ .ermis-message-bubble--own .ermis-signal-message__text--success {
1120
+ color: var(--ermis-signal-own-success);
1121
+ }
1122
+ .ermis-message-bubble--own .ermis-signal-message__text--missed {
1123
+ color: var(--ermis-signal-own-missed);
1124
+ }
1125
+ .ermis-message-bubble--own .ermis-signal-message__duration {
1126
+ color: var(--ermis-signal-own-duration);
1127
+ }
1038
1128
  .ermis-message-list__item-content--has-attachments {
1039
1129
  width: 350px;
1040
1130
  }
@@ -1090,7 +1180,7 @@
1090
1180
  width: 100%;
1091
1181
  max-width: 300px;
1092
1182
  min-height: 120px;
1093
- background-color: var(--ermis-bg-hover, #2a2a4a);
1183
+ background-color: var(--ermis-bg-hover);
1094
1184
  }
1095
1185
  .ermis-attachment-blur-preview {
1096
1186
  position: absolute;
@@ -1113,9 +1203,9 @@
1113
1203
  background:
1114
1204
  linear-gradient(
1115
1205
  110deg,
1116
- var(--ermis-bg-hover, #2a2a4a) 30%,
1117
- var(--ermis-bg-active, #3a3a5a) 50%,
1118
- var(--ermis-bg-hover, #2a2a4a) 70%);
1206
+ var(--ermis-bg-hover) 30%,
1207
+ var(--ermis-bg-active) 50%,
1208
+ var(--ermis-bg-hover) 70%);
1119
1209
  background-size: 200% 100%;
1120
1210
  animation: ermis-shimmer 1.5s ease-in-out infinite;
1121
1211
  }
@@ -1295,16 +1385,27 @@
1295
1385
  width: 100%;
1296
1386
  padding-top: 2px;
1297
1387
  }
1388
+ @keyframes ermis-receipt-pop {
1389
+ 0% {
1390
+ opacity: 0;
1391
+ transform: scale(0.5) translateY(5px);
1392
+ }
1393
+ 100% {
1394
+ opacity: 1;
1395
+ transform: scale(1) translateY(0);
1396
+ }
1397
+ }
1298
1398
  .ermis-read-receipts__avatars {
1299
1399
  display: flex;
1300
1400
  flex-direction: row;
1301
1401
  align-items: center;
1302
1402
  cursor: default;
1303
1403
  position: relative;
1404
+ animation: ermis-receipt-pop 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
1304
1405
  }
1305
1406
  .ermis-read-receipts__avatar {
1306
1407
  flex-shrink: 0;
1307
- border: 1.5px solid var(--ermis-bg-primary, #1a1a2e);
1408
+ border: 1.5px solid var(--ermis-bg-primary);
1308
1409
  border-radius: 50%;
1309
1410
  box-sizing: content-box;
1310
1411
  }
@@ -1318,12 +1419,12 @@
1318
1419
  width: 16px;
1319
1420
  height: 16px;
1320
1421
  border-radius: 50%;
1321
- background-color: var(--ermis-bg-hover, #2a2a4a);
1322
- color: var(--ermis-text-muted, #888);
1422
+ background-color: var(--ermis-bg-hover);
1423
+ color: var(--ermis-text-muted);
1323
1424
  font-size: 0.5rem;
1324
1425
  font-weight: 700;
1325
1426
  margin-left: -4px;
1326
- border: 1.5px solid var(--ermis-bg-primary, #1a1a2e);
1427
+ border: 1.5px solid var(--ermis-bg-primary);
1327
1428
  box-sizing: content-box;
1328
1429
  flex-shrink: 0;
1329
1430
  }
@@ -1350,8 +1451,8 @@
1350
1451
  display: flex;
1351
1452
  flex-direction: column;
1352
1453
  gap: 8px;
1353
- background-color: var(--ermis-bg-secondary, #1e1e3a);
1354
- border: 1px solid var(--ermis-border, #333);
1454
+ background-color: var(--ermis-bg-secondary);
1455
+ border: 1px solid var(--ermis-border);
1355
1456
  border-radius: var(--ermis-radius-md, 8px);
1356
1457
  padding: var(--ermis-spacing-xs, 6px) var(--ermis-spacing-sm, 8px);
1357
1458
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
@@ -1372,14 +1473,14 @@
1372
1473
  }
1373
1474
  .ermis-read-receipts__tooltip-name {
1374
1475
  font-size: var(--ermis-font-size-xs, 0.75rem);
1375
- color: var(--ermis-text-primary, #e0e0e0);
1476
+ color: var(--ermis-text-primary);
1376
1477
  white-space: nowrap;
1377
1478
  overflow: hidden;
1378
1479
  text-overflow: ellipsis;
1379
1480
  }
1380
1481
  .ermis-read-receipts__tooltip-time {
1381
1482
  font-size: 0.625rem;
1382
- color: var(--ermis-text-muted, #888);
1483
+ color: var(--ermis-text-muted);
1383
1484
  white-space: nowrap;
1384
1485
  }
1385
1486
 
@@ -1675,7 +1776,7 @@
1675
1776
  justify-content: center;
1676
1777
  gap: var(--ermis-spacing-sm);
1677
1778
  padding: var(--ermis-spacing-md) var(--ermis-spacing-lg);
1678
- color: var(--ermis-text-secondary, #9ca3af);
1779
+ color: var(--ermis-text-secondary);
1679
1780
  font-size: var(--ermis-font-size-sm);
1680
1781
  font-weight: 500;
1681
1782
  user-select: none;
@@ -1686,14 +1787,14 @@
1686
1787
  }
1687
1788
  .ermis-message-input__keyword-banner {
1688
1789
  padding: var(--ermis-spacing-sm) var(--ermis-spacing-md);
1689
- background-color: var(--ermis-bg-danger-light, #fee2e2);
1790
+ background-color: var(--ermis-bg-hover);
1690
1791
  border-radius: var(--ermis-radius-md) var(--ermis-radius-md) 0 0;
1691
1792
  font-size: var(--ermis-font-size-sm, 13px);
1692
- color: var(--ermis-text-danger, #ef4444);
1793
+ color: var(--ermis-color-danger);
1693
1794
  display: flex;
1694
1795
  align-items: center;
1695
1796
  gap: var(--ermis-spacing-sm);
1696
- border-bottom: 1px solid var(--ermis-border-danger, #fca5a5);
1797
+ border-bottom: 1px solid var(--ermis-color-danger);
1697
1798
  }
1698
1799
  .ermis-message-input__permission-banner,
1699
1800
  .ermis-message-input__slow-mode-banner {
@@ -2136,19 +2237,30 @@
2136
2237
  padding: 0 16px;
2137
2238
  height: 24px;
2138
2239
  font-size: 12px;
2139
- color: var(--ermis-color-text-secondary, #8e8e93);
2240
+ color: var(--ermis-text-secondary);
2140
2241
  overflow: hidden;
2141
2242
  }
2142
2243
  .ermis-typing-indicator__dots {
2143
2244
  display: flex;
2144
2245
  align-items: center;
2145
2246
  gap: 3px;
2247
+ animation: ermis-typing-appear 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
2248
+ }
2249
+ @keyframes ermis-typing-appear {
2250
+ 0% {
2251
+ opacity: 0;
2252
+ transform: translateY(8px);
2253
+ }
2254
+ 100% {
2255
+ opacity: 1;
2256
+ transform: translateY(0);
2257
+ }
2146
2258
  }
2147
2259
  .ermis-typing-indicator__dot {
2148
2260
  width: 5px;
2149
2261
  height: 5px;
2150
2262
  border-radius: 50%;
2151
- background-color: var(--ermis-color-text-secondary, #8e8e93);
2263
+ background-color: var(--ermis-text-secondary);
2152
2264
  animation: ermis-typing-bounce 1.4s infinite ease-in-out both;
2153
2265
  }
2154
2266
  .ermis-typing-indicator__dot:nth-child(1) {
@@ -2175,6 +2287,7 @@
2175
2287
  white-space: nowrap;
2176
2288
  overflow: hidden;
2177
2289
  text-overflow: ellipsis;
2290
+ animation: ermis-typing-appear 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
2178
2291
  }
2179
2292
 
2180
2293
  /* src/styles/_message-reactions.css */
@@ -2361,7 +2474,7 @@
2361
2474
  background: transparent;
2362
2475
  border: none;
2363
2476
  cursor: pointer;
2364
- color: var(--ermis-text-tertiary);
2477
+ color: var(--ermis-text-muted);
2365
2478
  display: flex;
2366
2479
  align-items: center;
2367
2480
  justify-content: center;
@@ -2371,7 +2484,7 @@
2371
2484
  flex-shrink: 0;
2372
2485
  }
2373
2486
  .ermis-channel-info__cover-edit-btn:hover {
2374
- color: var(--ermis-color-primary, #005fff);
2487
+ color: var(--ermis-accent);
2375
2488
  background-color: var(--ermis-bg-hover);
2376
2489
  }
2377
2490
  .ermis-channel-info__description {
@@ -2419,13 +2532,13 @@
2419
2532
  transition: color 0.2s ease;
2420
2533
  }
2421
2534
  .ermis-channel-info__action-btn--danger {
2422
- color: var(--ermis-color-danger, #dc3545);
2535
+ color: var(--ermis-color-danger);
2423
2536
  }
2424
2537
  .ermis-channel-info__action-btn:hover {
2425
2538
  color: var(--ermis-text-primary);
2426
2539
  }
2427
2540
  .ermis-channel-info__action-btn--danger:hover {
2428
- color: var(--ermis-color-danger, #dc3545);
2541
+ color: var(--ermis-color-danger);
2429
2542
  opacity: 0.8;
2430
2543
  }
2431
2544
  .ermis-channel-info__action-btn:disabled {
@@ -2467,7 +2580,7 @@
2467
2580
  font-size: 12px;
2468
2581
  text-transform: uppercase;
2469
2582
  font-weight: 600;
2470
- color: var(--ermis-text-tertiary);
2583
+ color: var(--ermis-text-muted);
2471
2584
  letter-spacing: 0.5px;
2472
2585
  }
2473
2586
  .ermis-channel-info__members {
@@ -2514,16 +2627,16 @@
2514
2627
  width: fit-content;
2515
2628
  }
2516
2629
  .ermis-channel-info__member-role--owner {
2517
- color: var(--ermis-color-danger, #ff4d4f);
2630
+ color: var(--ermis-color-danger);
2518
2631
  }
2519
2632
  .ermis-channel-info__member-role--moder {
2520
- color: var(--ermis-color-primary, #005fff);
2633
+ color: var(--ermis-accent);
2521
2634
  }
2522
2635
  .ermis-channel-info__member-role--member {
2523
- color: var(--ermis-text-tertiary);
2636
+ color: var(--ermis-text-muted);
2524
2637
  }
2525
2638
  .ermis-channel-info__member-role--pending {
2526
- color: var(--ermis-color-warning, #faad14);
2639
+ color: var(--ermis-color-danger);
2527
2640
  }
2528
2641
  .ermis-channel-info__add-member-wrap {
2529
2642
  padding: 12px 16px;
@@ -2536,7 +2649,7 @@
2536
2649
  background: transparent;
2537
2650
  border: 1px dashed var(--ermis-border-base);
2538
2651
  border-radius: 8px;
2539
- color: var(--ermis-color-primary, #005fff);
2652
+ color: var(--ermis-accent);
2540
2653
  display: flex;
2541
2654
  align-items: center;
2542
2655
  justify-content: center;
@@ -2547,7 +2660,7 @@
2547
2660
  }
2548
2661
  .ermis-channel-info__add-member-btn:hover {
2549
2662
  background-color: var(--ermis-bg-hover);
2550
- border-color: var(--ermis-color-primary, #005fff);
2663
+ border-color: var(--ermis-accent);
2551
2664
  }
2552
2665
  .ermis-channel-info__media-section {
2553
2666
  flex: 1;
@@ -2574,7 +2687,7 @@
2574
2687
  border: none;
2575
2688
  border-bottom: 2px solid transparent;
2576
2689
  cursor: pointer;
2577
- color: var(--ermis-text-tertiary);
2690
+ color: var(--ermis-text-muted);
2578
2691
  font-size: 13px;
2579
2692
  font-weight: 500;
2580
2693
  transition: color 0.2s ease, border-color 0.2s ease;
@@ -2584,8 +2697,8 @@
2584
2697
  color: var(--ermis-text-secondary);
2585
2698
  }
2586
2699
  .ermis-channel-info__media-tab--active {
2587
- color: var(--ermis-color-primary, #005fff);
2588
- border-bottom-color: var(--ermis-color-primary, #005fff);
2700
+ color: var(--ermis-accent);
2701
+ border-bottom-color: var(--ermis-accent);
2589
2702
  }
2590
2703
  .ermis-channel-info__media-tab-label {
2591
2704
  font-size: 13px;
@@ -2604,7 +2717,7 @@
2604
2717
  padding: 0 5px;
2605
2718
  }
2606
2719
  .ermis-channel-info__media-tab--active .ermis-channel-info__media-tab-count {
2607
- background: var(--ermis-color-primary, #005fff);
2720
+ background: var(--ermis-accent);
2608
2721
  color: #fff;
2609
2722
  }
2610
2723
  .ermis-channel-info__media-content {
@@ -2715,7 +2828,7 @@
2715
2828
  display: flex;
2716
2829
  align-items: center;
2717
2830
  justify-content: center;
2718
- color: var(--ermis-text-tertiary);
2831
+ color: var(--ermis-text-muted);
2719
2832
  overflow: hidden;
2720
2833
  }
2721
2834
  .ermis-channel-info__link-preview-img {
@@ -2740,14 +2853,14 @@
2740
2853
  }
2741
2854
  .ermis-channel-info__link-domain {
2742
2855
  font-size: 12px;
2743
- color: var(--ermis-text-tertiary);
2856
+ color: var(--ermis-text-muted);
2744
2857
  white-space: nowrap;
2745
2858
  overflow: hidden;
2746
2859
  text-overflow: ellipsis;
2747
2860
  }
2748
2861
  .ermis-channel-info__link-date {
2749
2862
  font-size: 11px;
2750
- color: var(--ermis-text-tertiary);
2863
+ color: var(--ermis-text-muted);
2751
2864
  white-space: nowrap;
2752
2865
  flex-shrink: 0;
2753
2866
  }
@@ -2777,7 +2890,7 @@
2777
2890
  flex-direction: column;
2778
2891
  align-items: center;
2779
2892
  justify-content: center;
2780
- color: var(--ermis-text-tertiary);
2893
+ color: var(--ermis-text-muted);
2781
2894
  gap: 1px;
2782
2895
  }
2783
2896
  .ermis-channel-info__file-ext {
@@ -2785,7 +2898,7 @@
2785
2898
  font-weight: 700;
2786
2899
  text-transform: uppercase;
2787
2900
  letter-spacing: 0.3px;
2788
- color: var(--ermis-text-tertiary);
2901
+ color: var(--ermis-text-muted);
2789
2902
  line-height: 1;
2790
2903
  }
2791
2904
  .ermis-channel-info__file-info {
@@ -2808,16 +2921,16 @@
2808
2921
  align-items: center;
2809
2922
  gap: 4px;
2810
2923
  font-size: 12px;
2811
- color: var(--ermis-text-tertiary);
2924
+ color: var(--ermis-text-muted);
2812
2925
  }
2813
2926
  .ermis-channel-info__file-meta-dot {
2814
- color: var(--ermis-text-tertiary);
2927
+ color: var(--ermis-text-muted);
2815
2928
  }
2816
2929
  .ermis-channel-info__file-download {
2817
2930
  background: transparent;
2818
2931
  border: none;
2819
2932
  cursor: pointer;
2820
- color: var(--ermis-text-tertiary);
2933
+ color: var(--ermis-text-muted);
2821
2934
  padding: 6px;
2822
2935
  border-radius: 6px;
2823
2936
  display: flex;
@@ -2828,7 +2941,7 @@
2828
2941
  }
2829
2942
  .ermis-channel-info__file-download:hover {
2830
2943
  background-color: var(--ermis-bg-secondary);
2831
- color: var(--ermis-color-primary, #005fff);
2944
+ color: var(--ermis-accent);
2832
2945
  }
2833
2946
  .ermis-channel-info__media-empty {
2834
2947
  display: flex;
@@ -2837,7 +2950,7 @@
2837
2950
  justify-content: center;
2838
2951
  padding: 40px 16px;
2839
2952
  gap: 12px;
2840
- color: var(--ermis-text-tertiary);
2953
+ color: var(--ermis-text-muted);
2841
2954
  font-size: 13px;
2842
2955
  }
2843
2956
  .ermis-channel-info__media-empty-icon {
@@ -2848,7 +2961,7 @@
2848
2961
  display: flex;
2849
2962
  align-items: center;
2850
2963
  justify-content: center;
2851
- color: var(--ermis-text-tertiary);
2964
+ color: var(--ermis-text-muted);
2852
2965
  }
2853
2966
  .ermis-channel-info__media-loading {
2854
2967
  display: flex;
@@ -2860,7 +2973,7 @@
2860
2973
  width: 24px;
2861
2974
  height: 24px;
2862
2975
  border: 2px solid var(--ermis-border-base);
2863
- border-top-color: var(--ermis-color-primary, #005fff);
2976
+ border-top-color: var(--ermis-accent);
2864
2977
  border-radius: 50%;
2865
2978
  animation: ermis-spin 0.7s linear infinite;
2866
2979
  }
@@ -2905,7 +3018,7 @@
2905
3018
  background: transparent;
2906
3019
  border: none;
2907
3020
  cursor: pointer;
2908
- color: var(--ermis-color-primary, #005fff);
3021
+ color: var(--ermis-accent);
2909
3022
  font-size: 13px;
2910
3023
  font-weight: 500;
2911
3024
  padding: 4px 8px;
@@ -2947,7 +3060,7 @@
2947
3060
  font-family: inherit;
2948
3061
  }
2949
3062
  .ermis-channel-info__edit-input:focus {
2950
- border-color: var(--ermis-color-primary, #005fff);
3063
+ border-color: var(--ermis-accent);
2951
3064
  box-shadow: 0 0 0 2px rgba(0, 95, 255, 0.15);
2952
3065
  }
2953
3066
  .ermis-channel-info__edit-input:disabled {
@@ -2968,7 +3081,7 @@
2968
3081
  font-family: inherit;
2969
3082
  }
2970
3083
  .ermis-channel-info__edit-textarea:focus {
2971
- border-color: var(--ermis-color-primary, #005fff);
3084
+ border-color: var(--ermis-accent);
2972
3085
  box-shadow: 0 0 0 2px rgba(0, 95, 255, 0.15);
2973
3086
  }
2974
3087
  .ermis-channel-info__edit-textarea:disabled {
@@ -2988,8 +3101,8 @@
2988
3101
  flex-shrink: 0;
2989
3102
  }
2990
3103
  .ermis-channel-info__edit-toggle--on {
2991
- background: var(--ermis-color-primary, #005fff);
2992
- border-color: var(--ermis-color-primary, #005fff);
3104
+ background: var(--ermis-accent);
3105
+ border-color: var(--ermis-accent);
2993
3106
  }
2994
3107
  .ermis-channel-info__edit-toggle-thumb {
2995
3108
  position: absolute;
@@ -3017,7 +3130,7 @@
3017
3130
  background: rgba(220, 53, 69, 0.08);
3018
3131
  border: 1px solid rgba(220, 53, 69, 0.2);
3019
3132
  border-radius: 8px;
3020
- color: var(--ermis-color-danger, #dc3545);
3133
+ color: var(--ermis-color-danger);
3021
3134
  font-size: 13px;
3022
3135
  }
3023
3136
  .ermis-channel-info__edit-footer-buttons {
@@ -3054,7 +3167,7 @@
3054
3167
  color: var(--ermis-text-primary);
3055
3168
  }
3056
3169
  .ermis-channel-info__edit-btn--save {
3057
- background: var(--ermis-color-primary, #005fff);
3170
+ background: var(--ermis-accent);
3058
3171
  color: #fff;
3059
3172
  }
3060
3173
  .ermis-channel-info__edit-btn--save:hover:not(:disabled) {
@@ -3090,28 +3203,23 @@
3090
3203
  .ermis-modal-search svg {
3091
3204
  position: absolute;
3092
3205
  left: 12px;
3093
- color: var(--ermis-text-secondary, #666666);
3206
+ color: var(--ermis-text-secondary);
3094
3207
  pointer-events: none;
3095
3208
  }
3096
3209
  .ermis-modal-search input {
3097
3210
  width: 100%;
3098
3211
  padding: 10px 12px 10px 36px;
3099
3212
  border-radius: 8px;
3100
- border: 1px solid var(--ermis-border-color, #cccccc);
3101
- background-color: var(--ermis-bg-base, #f9f9f9);
3102
- color: var(--ermis-text-primary, #000000);
3213
+ border: 1px solid var(--ermis-border);
3214
+ background-color: var(--ermis-bg-secondary);
3215
+ color: var(--ermis-text-primary);
3103
3216
  font-size: 14px;
3104
3217
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
3105
3218
  outline: none;
3106
3219
  }
3107
- [data-theme=dark] .ermis-modal-search input {
3108
- background-color: var(--ermis-bg-base, #121212);
3109
- border: 1px solid var(--ermis-border-color, #444444);
3110
- color: var(--ermis-text-primary, #ffffff);
3111
- }
3112
3220
  .ermis-modal-search input:focus {
3113
- border-color: var(--ermis-primary-color, #005fff);
3114
- box-shadow: 0 0 0 2px rgba(0, 95, 255, 0.2);
3221
+ border-color: var(--ermis-accent);
3222
+ box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.2);
3115
3223
  }
3116
3224
  .ermis-modal-user-list {
3117
3225
  display: flex;
@@ -3128,16 +3236,13 @@
3128
3236
  background: transparent;
3129
3237
  }
3130
3238
  .ermis-modal-user-list::-webkit-scrollbar-thumb {
3131
- background-color: var(--ermis-border-color, #cccccc);
3239
+ background-color: var(--ermis-border);
3132
3240
  border-radius: 3px;
3133
3241
  }
3134
- [data-theme=dark] .ermis-modal-user-list::-webkit-scrollbar-thumb {
3135
- background-color: var(--ermis-border-color, #444444);
3136
- }
3137
3242
  .ermis-modal-loading,
3138
3243
  .ermis-modal-empty {
3139
3244
  text-align: center;
3140
- color: var(--ermis-text-secondary, #666666);
3245
+ color: var(--ermis-text-secondary);
3141
3246
  padding: 32px 0;
3142
3247
  font-size: 14px;
3143
3248
  }
@@ -3149,10 +3254,7 @@
3149
3254
  transition: background-color 0.15s ease;
3150
3255
  }
3151
3256
  .ermis-modal-user-item:hover {
3152
- background-color: var(--ermis-bg-hover, #f0f0f0);
3153
- }
3154
- [data-theme=dark] .ermis-modal-user-item:hover {
3155
- background-color: var(--ermis-bg-hover, #2a2a2a);
3257
+ background-color: var(--ermis-bg-hover);
3156
3258
  }
3157
3259
  .ermis-modal-user-info {
3158
3260
  margin-left: 12px;
@@ -3163,13 +3265,10 @@
3163
3265
  .ermis-modal-user-name {
3164
3266
  font-size: 14px;
3165
3267
  font-weight: 500;
3166
- color: var(--ermis-text-primary, #000000);
3167
- }
3168
- [data-theme=dark] .ermis-modal-user-name {
3169
- color: var(--ermis-text-primary, #ffffff);
3268
+ color: var(--ermis-text-primary);
3170
3269
  }
3171
3270
  .ermis-modal-add-btn {
3172
- background-color: var(--ermis-primary-color, #005fff);
3271
+ background-color: var(--ermis-accent);
3173
3272
  color: #ffffff;
3174
3273
  border: none;
3175
3274
  border-radius: 6px;
@@ -3180,7 +3279,7 @@
3180
3279
  transition: background-color 0.15s ease, opacity 0.15s ease;
3181
3280
  }
3182
3281
  .ermis-modal-add-btn:hover:not(:disabled) {
3183
- background-color: var(--ermis-primary-hover, #004ecc);
3282
+ background-color: var(--ermis-accent-hover);
3184
3283
  }
3185
3284
  .ermis-modal-add-btn:disabled {
3186
3285
  opacity: 0.6;
@@ -3198,12 +3297,12 @@
3198
3297
  align-items: center;
3199
3298
  gap: 8px;
3200
3299
  padding: 6px 12px;
3201
- background: var(--ermis-bg-secondary, #f5f5f5);
3300
+ background: var(--ermis-bg-secondary);
3202
3301
  border-radius: 20px;
3203
3302
  transition: background 0.15s;
3204
3303
  }
3205
3304
  .ermis-search-panel__input-wrap:focus-within {
3206
- background: var(--ermis-bg-hover, #ebebeb);
3305
+ background: var(--ermis-bg-hover);
3207
3306
  }
3208
3307
  .ermis-search-panel__input-icon {
3209
3308
  flex-shrink: 0;
@@ -3219,7 +3318,7 @@
3219
3318
  line-height: 1.4;
3220
3319
  }
3221
3320
  .ermis-search-panel__input::placeholder {
3222
- color: var(--ermis-text-tertiary, #999);
3321
+ color: var(--ermis-text-muted);
3223
3322
  }
3224
3323
  .ermis-search-panel__input-clear {
3225
3324
  display: flex;
@@ -3228,7 +3327,7 @@
3228
3327
  width: 20px;
3229
3328
  height: 20px;
3230
3329
  border: none;
3231
- background: var(--ermis-text-tertiary, #999);
3330
+ background: var(--ermis-text-muted);
3232
3331
  color: #fff;
3233
3332
  border-radius: 50%;
3234
3333
  cursor: pointer;
@@ -3251,7 +3350,7 @@
3251
3350
  justify-content: center;
3252
3351
  gap: 12px;
3253
3352
  padding: 48px 16px;
3254
- color: var(--ermis-text-tertiary, #999);
3353
+ color: var(--ermis-text-muted);
3255
3354
  text-align: center;
3256
3355
  font-size: 14px;
3257
3356
  }
@@ -3269,7 +3368,7 @@
3269
3368
  width: 24px;
3270
3369
  height: 24px;
3271
3370
  border: 2.5px solid var(--ermis-border, rgba(0, 0, 0, 0.08));
3272
- border-top-color: var(--ermis-color-primary, #005fff);
3371
+ border-top-color: var(--ermis-accent);
3273
3372
  border-radius: 50%;
3274
3373
  animation: ermis-spin 0.7s linear infinite;
3275
3374
  }
@@ -3288,7 +3387,7 @@
3288
3387
  align-items: center;
3289
3388
  justify-content: center;
3290
3389
  padding: 48px 16px;
3291
- color: var(--ermis-text-tertiary, #999);
3390
+ color: var(--ermis-text-muted);
3292
3391
  font-size: 14px;
3293
3392
  }
3294
3393
  .ermis-search-panel__result-item {
@@ -3333,7 +3432,7 @@
3333
3432
  }
3334
3433
  .ermis-search-panel__result-time {
3335
3434
  font-size: 11px;
3336
- color: var(--ermis-text-tertiary, #999);
3435
+ color: var(--ermis-text-muted);
3337
3436
  white-space: nowrap;
3338
3437
  flex-shrink: 0;
3339
3438
  }
@@ -3366,7 +3465,7 @@
3366
3465
  align-items: center;
3367
3466
  justify-content: center;
3368
3467
  padding: 24px 16px;
3369
- color: var(--ermis-text-tertiary, #999);
3468
+ color: var(--ermis-text-muted);
3370
3469
  font-size: 13px;
3371
3470
  text-align: center;
3372
3471
  }
@@ -3383,7 +3482,7 @@
3383
3482
  gap: var(--ermis-spacing-xs, 0.25rem);
3384
3483
  padding: var(--ermis-spacing-sm, 0.5rem);
3385
3484
  border-radius: var(--ermis-radius-md, 0.5rem);
3386
- background-color: var(--ermis-bg-secondary, #111118);
3485
+ background-color: var(--ermis-bg-secondary);
3387
3486
  border: 1px solid var(--ermis-border, rgba(255, 255, 255, 0.08));
3388
3487
  min-height: 40px;
3389
3488
  max-height: 120px;
@@ -3409,7 +3508,7 @@
3409
3508
  padding: 2px 8px 2px 2px;
3410
3509
  border-radius: var(--ermis-radius-full, 9999px);
3411
3510
  background-color: var(--ermis-bg-active, rgba(99, 102, 241, 0.12));
3412
- color: var(--ermis-text-primary, #e5e7eb);
3511
+ color: var(--ermis-text-primary);
3413
3512
  font-size: var(--ermis-font-size-xs, 0.75rem);
3414
3513
  font-weight: 500;
3415
3514
  line-height: 1;
@@ -3428,7 +3527,7 @@
3428
3527
  }
3429
3528
  }
3430
3529
  .ermis-user-picker__chip:hover {
3431
- background-color: var(--ermis-accent, #6366f1);
3530
+ background-color: var(--ermis-accent);
3432
3531
  color: #ffffff;
3433
3532
  }
3434
3533
  .ermis-user-picker__chip-name {
@@ -3459,7 +3558,7 @@
3459
3558
  align-items: center;
3460
3559
  justify-content: center;
3461
3560
  width: 100%;
3462
- color: var(--ermis-text-muted, #6b7280);
3561
+ color: var(--ermis-text-muted);
3463
3562
  font-size: var(--ermis-font-size-xs, 0.75rem);
3464
3563
  }
3465
3564
  .ermis-user-picker__search {
@@ -3470,7 +3569,7 @@
3470
3569
  .ermis-user-picker__search svg {
3471
3570
  position: absolute;
3472
3571
  left: 12px;
3473
- color: var(--ermis-text-muted, #6b7280);
3572
+ color: var(--ermis-text-muted);
3474
3573
  pointer-events: none;
3475
3574
  }
3476
3575
  .ermis-user-picker__search input {
@@ -3478,18 +3577,18 @@
3478
3577
  padding: 10px 12px 10px 38px;
3479
3578
  border-radius: var(--ermis-radius-md, 0.5rem);
3480
3579
  border: 1px solid var(--ermis-border, rgba(255, 255, 255, 0.08));
3481
- background-color: var(--ermis-bg-secondary, #111118);
3482
- color: var(--ermis-text-primary, #e5e7eb);
3580
+ background-color: var(--ermis-bg-secondary);
3581
+ color: var(--ermis-text-primary);
3483
3582
  font-size: var(--ermis-font-size-sm, 0.875rem);
3484
3583
  font-family: inherit;
3485
3584
  transition: border-color var(--ermis-transition, 150ms ease), box-shadow var(--ermis-transition, 150ms ease);
3486
3585
  outline: none;
3487
3586
  }
3488
3587
  .ermis-user-picker__search input::placeholder {
3489
- color: var(--ermis-text-muted, #6b7280);
3588
+ color: var(--ermis-text-muted);
3490
3589
  }
3491
3590
  .ermis-user-picker__search input:focus {
3492
- border-color: var(--ermis-accent, #6366f1);
3591
+ border-color: var(--ermis-accent);
3493
3592
  box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.2);
3494
3593
  }
3495
3594
  .ermis-user-picker__list {
@@ -3541,8 +3640,8 @@
3541
3640
  border-radius: var(--ermis-radius-sm, 0.375rem);
3542
3641
  }
3543
3642
  .ermis-user-picker__input--checked {
3544
- background-color: var(--ermis-accent, #6366f1);
3545
- border-color: var(--ermis-accent, #6366f1);
3643
+ background-color: var(--ermis-accent);
3644
+ border-color: var(--ermis-accent);
3546
3645
  }
3547
3646
  .ermis-user-picker__input--checked svg {
3548
3647
  color: #ffffff;
@@ -3557,14 +3656,14 @@
3557
3656
  .ermis-user-picker__name {
3558
3657
  font-size: var(--ermis-font-size-sm, 0.875rem);
3559
3658
  font-weight: 500;
3560
- color: var(--ermis-text-primary, #e5e7eb);
3659
+ color: var(--ermis-text-primary);
3561
3660
  white-space: nowrap;
3562
3661
  overflow: hidden;
3563
3662
  text-overflow: ellipsis;
3564
3663
  }
3565
3664
  .ermis-user-picker__detail {
3566
3665
  font-size: var(--ermis-font-size-xs, 0.75rem);
3567
- color: var(--ermis-text-muted, #6b7280);
3666
+ color: var(--ermis-text-muted);
3568
3667
  white-space: nowrap;
3569
3668
  overflow: hidden;
3570
3669
  text-overflow: ellipsis;
@@ -3575,7 +3674,7 @@
3575
3674
  align-items: center;
3576
3675
  justify-content: center;
3577
3676
  padding: 32px 0;
3578
- color: var(--ermis-text-muted, #6b7280);
3677
+ color: var(--ermis-text-muted);
3579
3678
  font-size: var(--ermis-font-size-sm, 0.875rem);
3580
3679
  }
3581
3680
  .ermis-user-picker__load-more {
@@ -3583,7 +3682,7 @@
3583
3682
  align-items: center;
3584
3683
  justify-content: center;
3585
3684
  padding: 12px 0;
3586
- color: var(--ermis-text-muted, #6b7280);
3685
+ color: var(--ermis-text-muted);
3587
3686
  font-size: var(--ermis-font-size-xs, 0.75rem);
3588
3687
  }
3589
3688
  .ermis-user-picker__spinner {
@@ -3591,7 +3690,7 @@
3591
3690
  width: 16px;
3592
3691
  height: 16px;
3593
3692
  border: 2px solid var(--ermis-border, rgba(255, 255, 255, 0.08));
3594
- border-top-color: var(--ermis-accent, #6366f1);
3693
+ border-top-color: var(--ermis-accent);
3595
3694
  border-radius: var(--ermis-radius-full, 9999px);
3596
3695
  animation: ermis-user-picker-spin 0.6s linear infinite;
3597
3696
  margin-right: var(--ermis-spacing-sm, 0.5rem);
@@ -3612,7 +3711,7 @@
3612
3711
  .ermis-create-channel__tabs {
3613
3712
  display: flex;
3614
3713
  gap: 8px;
3615
- background-color: var(--ermis-bg-secondary, #111118);
3714
+ background-color: var(--ermis-bg-secondary);
3616
3715
  padding: 4px;
3617
3716
  border-radius: var(--ermis-radius-md, 0.5rem);
3618
3717
  margin-bottom: var(--ermis-spacing-sm, 0.5rem);
@@ -3624,18 +3723,18 @@
3624
3723
  text-align: center;
3625
3724
  font-size: var(--ermis-font-size-sm, 0.875rem);
3626
3725
  font-weight: 500;
3627
- color: var(--ermis-text-muted, #6b7280);
3726
+ color: var(--ermis-text-muted);
3628
3727
  background: transparent;
3629
3728
  border: none;
3630
3729
  cursor: pointer;
3631
3730
  transition: all var(--ermis-transition, 150ms ease);
3632
3731
  }
3633
3732
  .ermis-create-channel__tab:hover {
3634
- color: var(--ermis-text-primary, #e5e7eb);
3733
+ color: var(--ermis-text-primary);
3635
3734
  }
3636
3735
  .ermis-create-channel__tab--active {
3637
3736
  background-color: var(--ermis-bg-active, rgba(99, 102, 241, 0.12));
3638
- color: var(--ermis-text-primary, #e5e7eb);
3737
+ color: var(--ermis-text-primary);
3639
3738
  }
3640
3739
  .ermis-create-channel__field {
3641
3740
  display: flex;
@@ -3645,7 +3744,7 @@
3645
3744
  .ermis-create-channel__label {
3646
3745
  font-size: var(--ermis-font-size-sm, 0.875rem);
3647
3746
  font-weight: 500;
3648
- color: var(--ermis-text-primary, #e5e7eb);
3747
+ color: var(--ermis-text-primary);
3649
3748
  }
3650
3749
  .ermis-create-channel__input,
3651
3750
  .ermis-create-channel__textarea {
@@ -3653,8 +3752,8 @@
3653
3752
  padding: 10px 12px;
3654
3753
  border-radius: var(--ermis-radius-md, 0.5rem);
3655
3754
  border: 1px solid var(--ermis-border, rgba(255, 255, 255, 0.08));
3656
- background-color: var(--ermis-bg-secondary, #111118);
3657
- color: var(--ermis-text-primary, #e5e7eb);
3755
+ background-color: var(--ermis-bg-secondary);
3756
+ color: var(--ermis-text-primary);
3658
3757
  font-size: var(--ermis-font-size-sm, 0.875rem);
3659
3758
  font-family: inherit;
3660
3759
  outline: none;
@@ -3662,7 +3761,7 @@
3662
3761
  }
3663
3762
  .ermis-create-channel__input:focus,
3664
3763
  .ermis-create-channel__textarea:focus {
3665
- border-color: var(--ermis-accent, #6366f1);
3764
+ border-color: var(--ermis-accent);
3666
3765
  }
3667
3766
  .ermis-create-channel__textarea {
3668
3767
  resize: vertical;
@@ -3677,7 +3776,7 @@
3677
3776
  position: relative;
3678
3777
  width: 44px;
3679
3778
  height: 24px;
3680
- background-color: var(--ermis-bg-secondary, #111118);
3779
+ background-color: var(--ermis-bg-secondary);
3681
3780
  border: 1px solid var(--ermis-border, rgba(255, 255, 255, 0.08));
3682
3781
  border-radius: 12px;
3683
3782
  cursor: pointer;
@@ -3685,8 +3784,8 @@
3685
3784
  padding: 0;
3686
3785
  }
3687
3786
  .ermis-create-channel__toggle--on {
3688
- background-color: var(--ermis-accent, #6366f1);
3689
- border-color: var(--ermis-accent, #6366f1);
3787
+ background-color: var(--ermis-accent);
3788
+ border-color: var(--ermis-accent);
3690
3789
  }
3691
3790
  .ermis-create-channel__toggle-thumb {
3692
3791
  position: absolute;
@@ -3707,7 +3806,7 @@
3707
3806
  .ermis-create-channel__users-title {
3708
3807
  font-size: var(--ermis-font-size-sm, 0.875rem);
3709
3808
  font-weight: 500;
3710
- color: var(--ermis-text-primary, #e5e7eb);
3809
+ color: var(--ermis-text-primary);
3711
3810
  margin-bottom: var(--ermis-spacing-xs, 0.25rem);
3712
3811
  }
3713
3812
  .ermis-create-channel__error {
@@ -3715,7 +3814,7 @@
3715
3814
  align-items: center;
3716
3815
  gap: var(--ermis-spacing-xs, 0.25rem);
3717
3816
  padding: var(--ermis-spacing-sm, 0.5rem);
3718
- color: var(--ermis-error, #ef4444);
3817
+ color: var(--ermis-color-danger);
3719
3818
  background-color: rgba(239, 68, 68, 0.1);
3720
3819
  border-radius: var(--ermis-radius-sm, 0.375rem);
3721
3820
  font-size: var(--ermis-font-size-sm, 0.875rem);
@@ -3740,18 +3839,634 @@
3740
3839
  }
3741
3840
  .ermis-create-channel__btn--cancel {
3742
3841
  background-color: transparent;
3743
- color: var(--ermis-text-primary, #e5e7eb);
3842
+ color: var(--ermis-text-primary);
3744
3843
  }
3745
3844
  .ermis-create-channel__btn--cancel:hover:not(:disabled) {
3746
3845
  background-color: var(--ermis-bg-hover, rgba(255, 255, 255, 0.04));
3747
3846
  }
3748
3847
  .ermis-create-channel__btn--create {
3749
- background-color: var(--ermis-accent, #6366f1);
3848
+ background-color: var(--ermis-accent);
3750
3849
  color: #fff;
3751
3850
  }
3752
3851
  .ermis-create-channel__btn--create:hover:not(:disabled) {
3753
3852
  opacity: 0.9;
3754
3853
  }
3755
3854
 
3855
+ /* src/styles/_call-ui.css */
3856
+ .ermis-call-ui {
3857
+ display: flex;
3858
+ flex-direction: column;
3859
+ align-items: center;
3860
+ width: 100%;
3861
+ }
3862
+ .ermis-call-ui--fullscreen {
3863
+ background: #000000;
3864
+ justify-content: center;
3865
+ height: 100%;
3866
+ }
3867
+ .ermis-call-ui--fullscreen .ermis-call-ui__video-container {
3868
+ aspect-ratio: auto;
3869
+ height: 100%;
3870
+ border-radius: 0;
3871
+ }
3872
+ .ermis-call-ui--fullscreen .ermis-call-ui__audio-container {
3873
+ flex: 1;
3874
+ border-radius: 0;
3875
+ justify-content: center;
3876
+ }
3877
+ .ermis-call-ui__audio--hidden {
3878
+ position: absolute;
3879
+ width: 0;
3880
+ height: 0;
3881
+ overflow: hidden;
3882
+ pointer-events: none;
3883
+ }
3884
+ .ermis-call-ui__ringing {
3885
+ text-align: center;
3886
+ padding: 2.5rem var(--ermis-spacing-lg) 2rem;
3887
+ display: flex;
3888
+ flex-direction: column;
3889
+ align-items: center;
3890
+ justify-content: center;
3891
+ background: var(--ermis-call-bg);
3892
+ border-radius: var(--ermis-radius-lg);
3893
+ min-height: 340px;
3894
+ width: 100%;
3895
+ }
3896
+ .ermis-call-ui__ringing-avatar {
3897
+ position: relative;
3898
+ display: flex;
3899
+ align-items: center;
3900
+ justify-content: center;
3901
+ margin-bottom: var(--ermis-spacing-lg);
3902
+ }
3903
+ .ermis-call-ui__ringing-avatar::before,
3904
+ .ermis-call-ui__ringing-avatar::after {
3905
+ content: "";
3906
+ position: absolute;
3907
+ border-radius: 50%;
3908
+ border: 2px solid var(--ermis-call-pulse);
3909
+ animation: ermis-call-pulse 2s ease-out infinite;
3910
+ }
3911
+ .ermis-call-ui__ringing-avatar::before {
3912
+ width: 110px;
3913
+ height: 110px;
3914
+ }
3915
+ .ermis-call-ui__ringing-avatar::after {
3916
+ width: 130px;
3917
+ height: 130px;
3918
+ animation-delay: 0.6s;
3919
+ }
3920
+ @keyframes ermis-call-pulse {
3921
+ 0% {
3922
+ transform: scale(0.85);
3923
+ opacity: 0.8;
3924
+ }
3925
+ 100% {
3926
+ transform: scale(1.4);
3927
+ opacity: 0;
3928
+ }
3929
+ }
3930
+ .ermis-call-ui__ringing-avatar-inner {
3931
+ position: relative;
3932
+ z-index: 2;
3933
+ animation: ermis-call-float 3s ease-in-out infinite;
3934
+ }
3935
+ @keyframes ermis-call-float {
3936
+ 0%, 100% {
3937
+ transform: translateY(0);
3938
+ }
3939
+ 50% {
3940
+ transform: translateY(-6px);
3941
+ }
3942
+ }
3943
+ .ermis-call-ui__ringing-name {
3944
+ margin: 0 0 var(--ermis-spacing-xs);
3945
+ font-size: 1.35rem;
3946
+ font-weight: 700;
3947
+ color: var(--ermis-text-primary);
3948
+ letter-spacing: -0.01em;
3949
+ }
3950
+ .ermis-call-ui__ringing-status {
3951
+ color: var(--ermis-text-secondary);
3952
+ margin: 0 0 var(--ermis-spacing-sm);
3953
+ font-size: var(--ermis-font-size-sm);
3954
+ font-weight: 400;
3955
+ }
3956
+ .ermis-call-ui__type-badge {
3957
+ display: inline-flex;
3958
+ align-items: center;
3959
+ gap: 6px;
3960
+ padding: 4px 14px;
3961
+ border-radius: var(--ermis-radius-full);
3962
+ background: var(--ermis-call-glass);
3963
+ border: 1px solid var(--ermis-call-glass-border);
3964
+ color: var(--ermis-text-secondary);
3965
+ font-size: var(--ermis-font-size-xs);
3966
+ font-weight: 500;
3967
+ text-transform: capitalize;
3968
+ margin-bottom: 1.5rem;
3969
+ }
3970
+ .ermis-call-ui__type-badge svg {
3971
+ width: 14px;
3972
+ height: 14px;
3973
+ opacity: 0.8;
3974
+ }
3975
+ .ermis-call-ui__ringing-actions {
3976
+ display: flex;
3977
+ justify-content: center;
3978
+ gap: 2.5rem;
3979
+ width: 100%;
3980
+ }
3981
+ .ermis-call-ui__ringing-action {
3982
+ display: flex;
3983
+ flex-direction: column;
3984
+ align-items: center;
3985
+ gap: var(--ermis-spacing-sm);
3986
+ }
3987
+ .ermis-call-ui__action-circle {
3988
+ width: 48px;
3989
+ height: 48px;
3990
+ border-radius: 50%;
3991
+ border: none;
3992
+ cursor: pointer;
3993
+ display: flex;
3994
+ align-items: center;
3995
+ justify-content: center;
3996
+ transition:
3997
+ transform var(--ermis-transition),
3998
+ box-shadow var(--ermis-transition),
3999
+ background-color var(--ermis-transition);
4000
+ color: #ffffff;
4001
+ }
4002
+ .ermis-call-ui__action-circle:hover {
4003
+ transform: scale(1.1);
4004
+ }
4005
+ .ermis-call-ui__action-circle:active {
4006
+ transform: scale(0.95);
4007
+ }
4008
+ .ermis-call-ui__action-circle--reject {
4009
+ background-color: var(--ermis-color-danger);
4010
+ box-shadow: 0 4px 20px rgba(239, 68, 68, 0.35);
4011
+ }
4012
+ .ermis-call-ui__action-circle--reject:hover {
4013
+ background-color: var(--ermis-color-danger-hover);
4014
+ box-shadow: 0 6px 28px rgba(239, 68, 68, 0.45);
4015
+ }
4016
+ .ermis-call-ui__action-circle--accept {
4017
+ background-color: var(--ermis-color-success);
4018
+ box-shadow: 0 4px 20px rgba(34, 197, 94, 0.35);
4019
+ }
4020
+ .ermis-call-ui__action-circle--accept:hover {
4021
+ background-color: var(--ermis-color-success-hover);
4022
+ box-shadow: 0 6px 28px rgba(34, 197, 94, 0.45);
4023
+ }
4024
+ .ermis-call-ui__action-circle svg {
4025
+ width: 20px;
4026
+ height: 20px;
4027
+ }
4028
+ .ermis-call-ui__action-label {
4029
+ font-size: var(--ermis-font-size-xs);
4030
+ color: var(--ermis-text-secondary);
4031
+ font-weight: 500;
4032
+ }
4033
+ .ermis-call-ui__active {
4034
+ display: flex;
4035
+ flex-direction: column;
4036
+ width: 100%;
4037
+ gap: 0;
4038
+ }
4039
+ .ermis-call-ui__video-container {
4040
+ position: relative;
4041
+ width: 100%;
4042
+ aspect-ratio: 16 / 9;
4043
+ background-color: #000000;
4044
+ border-radius: var(--ermis-radius-lg);
4045
+ overflow: hidden;
4046
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
4047
+ }
4048
+ .ermis-call-ui__video-remote {
4049
+ width: 100%;
4050
+ height: 100%;
4051
+ object-fit: cover;
4052
+ }
4053
+ .ermis-call-ui__video-local {
4054
+ position: absolute;
4055
+ bottom: 72px;
4056
+ right: 16px;
4057
+ width: 140px;
4058
+ aspect-ratio: 16 / 9;
4059
+ background-color: #1a1a2e;
4060
+ border-radius: var(--ermis-radius-md);
4061
+ overflow: hidden;
4062
+ border: 2px solid rgba(255, 255, 255, 0.25);
4063
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
4064
+ z-index: 10;
4065
+ transition: transform var(--ermis-transition), box-shadow var(--ermis-transition);
4066
+ }
4067
+ .ermis-call-ui__video-local:hover {
4068
+ border-color: rgba(255, 255, 255, 0.5);
4069
+ box-shadow: 0 6px 24px rgba(0, 0, 0, 0.5);
4070
+ }
4071
+ .ermis-call-ui__video-local-stream {
4072
+ width: 100%;
4073
+ height: 100%;
4074
+ object-fit: cover;
4075
+ transform: scaleX(-1);
4076
+ }
4077
+ .ermis-call-ui__remote-muted-badge {
4078
+ position: absolute;
4079
+ top: 16px;
4080
+ left: 16px;
4081
+ z-index: 15;
4082
+ display: flex;
4083
+ align-items: center;
4084
+ justify-content: center;
4085
+ width: 32px;
4086
+ height: 32px;
4087
+ border-radius: 50%;
4088
+ background: rgba(239, 68, 68, 0.85);
4089
+ color: #ffffff;
4090
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
4091
+ backdrop-filter: blur(8px);
4092
+ -webkit-backdrop-filter: blur(8px);
4093
+ }
4094
+ .ermis-call-ui__remote-muted-badge svg {
4095
+ width: 16px;
4096
+ height: 16px;
4097
+ }
4098
+ .ermis-call-ui__audio-avatar-wrapper {
4099
+ position: relative;
4100
+ display: inline-flex;
4101
+ }
4102
+ .ermis-call-ui__remote-muted-badge--audio {
4103
+ position: absolute;
4104
+ top: auto;
4105
+ left: auto;
4106
+ bottom: 2px;
4107
+ right: 2px;
4108
+ width: 28px;
4109
+ height: 28px;
4110
+ border: 2px solid var(--ermis-bg-secondary);
4111
+ }
4112
+ .ermis-call-ui__video-controls-overlay {
4113
+ position: absolute;
4114
+ bottom: 0;
4115
+ left: 0;
4116
+ right: 0;
4117
+ display: flex;
4118
+ justify-content: center;
4119
+ padding: var(--ermis-spacing-md) var(--ermis-spacing-lg);
4120
+ background: linear-gradient(transparent, rgba(0, 0, 0, 0.6));
4121
+ }
4122
+ .ermis-call-ui__audio-container {
4123
+ text-align: center;
4124
+ padding: 2.5rem var(--ermis-spacing-lg) 2rem;
4125
+ display: flex;
4126
+ flex-direction: column;
4127
+ align-items: center;
4128
+ background: var(--ermis-call-bg);
4129
+ border-radius: var(--ermis-radius-lg);
4130
+ position: relative;
4131
+ overflow: hidden;
4132
+ }
4133
+ .ermis-call-ui__audio-waves {
4134
+ display: flex;
4135
+ align-items: center;
4136
+ justify-content: center;
4137
+ gap: 3px;
4138
+ height: 40px;
4139
+ margin-bottom: var(--ermis-spacing-lg);
4140
+ margin-top: var(--ermis-spacing-sm);
4141
+ }
4142
+ .ermis-call-ui__audio-wave-bar {
4143
+ width: 3px;
4144
+ border-radius: var(--ermis-radius-full);
4145
+ background-color: var(--ermis-accent);
4146
+ opacity: 0.6;
4147
+ animation: ermis-call-wave 1.2s ease-in-out infinite;
4148
+ }
4149
+ .ermis-call-ui__audio-wave-bar:nth-child(1) {
4150
+ height: 12px;
4151
+ animation-delay: 0s;
4152
+ }
4153
+ .ermis-call-ui__audio-wave-bar:nth-child(2) {
4154
+ height: 20px;
4155
+ animation-delay: 0.1s;
4156
+ }
4157
+ .ermis-call-ui__audio-wave-bar:nth-child(3) {
4158
+ height: 32px;
4159
+ animation-delay: 0.2s;
4160
+ }
4161
+ .ermis-call-ui__audio-wave-bar:nth-child(4) {
4162
+ height: 24px;
4163
+ animation-delay: 0.3s;
4164
+ }
4165
+ .ermis-call-ui__audio-wave-bar:nth-child(5) {
4166
+ height: 36px;
4167
+ animation-delay: 0.15s;
4168
+ }
4169
+ .ermis-call-ui__audio-wave-bar:nth-child(6) {
4170
+ height: 28px;
4171
+ animation-delay: 0.25s;
4172
+ }
4173
+ .ermis-call-ui__audio-wave-bar:nth-child(7) {
4174
+ height: 18px;
4175
+ animation-delay: 0.35s;
4176
+ }
4177
+ .ermis-call-ui__audio-wave-bar:nth-child(8) {
4178
+ height: 30px;
4179
+ animation-delay: 0.05s;
4180
+ }
4181
+ .ermis-call-ui__audio-wave-bar:nth-child(9) {
4182
+ height: 14px;
4183
+ animation-delay: 0.4s;
4184
+ }
4185
+ @keyframes ermis-call-wave {
4186
+ 0%, 100% {
4187
+ transform: scaleY(0.4);
4188
+ }
4189
+ 50% {
4190
+ transform: scaleY(1);
4191
+ }
4192
+ }
4193
+ .ermis-call-ui__active-name {
4194
+ margin: var(--ermis-spacing-md) 0 var(--ermis-spacing-xs);
4195
+ font-size: 1.35rem;
4196
+ font-weight: 700;
4197
+ color: var(--ermis-text-primary);
4198
+ letter-spacing: -0.01em;
4199
+ }
4200
+ .ermis-call-ui__active-status {
4201
+ display: flex;
4202
+ align-items: center;
4203
+ gap: var(--ermis-spacing-sm);
4204
+ color: var(--ermis-text-secondary);
4205
+ font-size: var(--ermis-font-size-sm);
4206
+ margin-bottom: var(--ermis-spacing-sm);
4207
+ }
4208
+ .ermis-call-ui__active-status-dot {
4209
+ width: 8px;
4210
+ height: 8px;
4211
+ border-radius: 50%;
4212
+ background-color: var(--ermis-color-success);
4213
+ animation: ermis-call-status-blink 2s ease-in-out infinite;
4214
+ }
4215
+ @keyframes ermis-call-status-blink {
4216
+ 0%, 100% {
4217
+ opacity: 1;
4218
+ }
4219
+ 50% {
4220
+ opacity: 0.4;
4221
+ }
4222
+ }
4223
+ .ermis-call-ui__timer {
4224
+ font-variant-numeric: tabular-nums;
4225
+ font-weight: 500;
4226
+ color: var(--ermis-text-secondary);
4227
+ font-size: var(--ermis-font-size-sm);
4228
+ }
4229
+ .ermis-call-ui__controls {
4230
+ display: flex;
4231
+ justify-content: center;
4232
+ align-items: center;
4233
+ gap: var(--ermis-spacing-md);
4234
+ padding: var(--ermis-spacing-md) var(--ermis-spacing-lg);
4235
+ background: var(--ermis-call-glass);
4236
+ backdrop-filter: blur(16px);
4237
+ -webkit-backdrop-filter: blur(16px);
4238
+ border: 1px solid var(--ermis-call-glass-border);
4239
+ border-radius: var(--ermis-radius-full);
4240
+ margin-top: var(--ermis-spacing-lg);
4241
+ }
4242
+ .ermis-call-ui__video-controls-overlay .ermis-call-ui__controls {
4243
+ margin-top: 0;
4244
+ background: rgba(0, 0, 0, 0.4);
4245
+ backdrop-filter: blur(20px);
4246
+ -webkit-backdrop-filter: blur(20px);
4247
+ border-color: rgba(255, 255, 255, 0.08);
4248
+ }
4249
+ .ermis-call-ui__controls-separator {
4250
+ width: 1px;
4251
+ height: 20px;
4252
+ background: var(--ermis-call-glass-border);
4253
+ margin: 0 var(--ermis-spacing-xs);
4254
+ }
4255
+ .ermis-call-ui__control-btn {
4256
+ width: 34px;
4257
+ height: 34px;
4258
+ border-radius: 50%;
4259
+ border: none;
4260
+ background-color: var(--ermis-call-glass);
4261
+ color: var(--ermis-text-primary);
4262
+ cursor: pointer;
4263
+ display: flex;
4264
+ align-items: center;
4265
+ justify-content: center;
4266
+ transition: all var(--ermis-transition);
4267
+ position: relative;
4268
+ }
4269
+ .ermis-call-ui__control-btn svg {
4270
+ width: 16px;
4271
+ height: 16px;
4272
+ }
4273
+ .ermis-call-ui__control-btn:hover {
4274
+ background-color: var(--ermis-bg-hover);
4275
+ transform: scale(1.08);
4276
+ }
4277
+ .ermis-call-ui__control-btn:active {
4278
+ transform: scale(0.95);
4279
+ }
4280
+ .ermis-call-ui__control-btn::after {
4281
+ content: attr(data-tooltip);
4282
+ position: absolute;
4283
+ bottom: calc(100% + 8px);
4284
+ left: 50%;
4285
+ transform: translateX(-50%) translateY(4px);
4286
+ padding: 4px 10px;
4287
+ background: var(--ermis-bg-primary);
4288
+ color: var(--ermis-text-primary);
4289
+ font-size: var(--ermis-font-size-xs);
4290
+ border-radius: var(--ermis-radius-sm);
4291
+ white-space: nowrap;
4292
+ opacity: 0;
4293
+ visibility: hidden;
4294
+ transition: all var(--ermis-transition);
4295
+ pointer-events: none;
4296
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
4297
+ border: 1px solid var(--ermis-call-glass-border);
4298
+ }
4299
+ .ermis-call-ui__control-btn:hover::after {
4300
+ opacity: 1;
4301
+ visibility: visible;
4302
+ transform: translateX(-50%) translateY(0);
4303
+ }
4304
+ .ermis-call-ui__video-controls-overlay .ermis-call-ui__control-btn {
4305
+ color: #ffffff;
4306
+ }
4307
+ .ermis-call-ui__video-controls-overlay .ermis-call-ui__control-btn::after {
4308
+ background: rgba(0, 0, 0, 0.8);
4309
+ color: #ffffff;
4310
+ border-color: rgba(255, 255, 255, 0.1);
4311
+ }
4312
+ .ermis-call-ui__control-btn--muted {
4313
+ background-color: rgba(239, 68, 68, 0.15);
4314
+ color: var(--ermis-color-danger);
4315
+ }
4316
+ .ermis-call-ui__control-btn--muted:hover {
4317
+ background-color: rgba(239, 68, 68, 0.25);
4318
+ }
4319
+ .ermis-call-ui__video-controls-overlay .ermis-call-ui__control-btn--muted {
4320
+ background-color: rgba(239, 68, 68, 0.3);
4321
+ color: #ffffff;
4322
+ }
4323
+ .ermis-call-ui__control-btn--active {
4324
+ background-color: rgba(34, 197, 94, 0.15);
4325
+ color: var(--ermis-color-success);
4326
+ }
4327
+ .ermis-call-ui__control-btn--active:hover {
4328
+ background-color: rgba(34, 197, 94, 0.25);
4329
+ }
4330
+ .ermis-call-ui__video-controls-overlay .ermis-call-ui__control-btn--active {
4331
+ background-color: rgba(34, 197, 94, 0.3);
4332
+ color: #ffffff;
4333
+ }
4334
+ .ermis-call-ui__control-btn--danger {
4335
+ background-color: var(--ermis-color-danger);
4336
+ color: #ffffff;
4337
+ box-shadow: 0 2px 12px rgba(239, 68, 68, 0.3);
4338
+ }
4339
+ .ermis-call-ui__control-btn--danger:hover {
4340
+ background-color: var(--ermis-color-danger-hover);
4341
+ box-shadow: 0 4px 20px rgba(239, 68, 68, 0.4);
4342
+ }
4343
+ .ermis-call-ui__action-group {
4344
+ display: flex;
4345
+ flex-direction: column;
4346
+ align-items: center;
4347
+ position: relative;
4348
+ }
4349
+ .ermis-call-ui__device-select {
4350
+ position: absolute;
4351
+ bottom: calc(100% + 10px);
4352
+ width: 160px;
4353
+ left: 50%;
4354
+ transform: translateX(-50%);
4355
+ background: var(--ermis-bg-primary);
4356
+ color: var(--ermis-text-primary);
4357
+ border: 1px solid var(--ermis-call-glass-border);
4358
+ border-radius: var(--ermis-radius-md);
4359
+ padding: 6px 8px;
4360
+ font-size: var(--ermis-font-size-xs);
4361
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
4362
+ outline: none;
4363
+ cursor: pointer;
4364
+ opacity: 0;
4365
+ visibility: hidden;
4366
+ transition: all var(--ermis-transition);
4367
+ text-overflow: ellipsis;
4368
+ overflow: hidden;
4369
+ white-space: nowrap;
4370
+ }
4371
+ .ermis-call-ui__action-group:hover .ermis-call-ui__device-select {
4372
+ opacity: 1;
4373
+ visibility: visible;
4374
+ }
4375
+ .ermis-call-ui__device-select:focus {
4376
+ border-color: var(--ermis-accent);
4377
+ opacity: 1;
4378
+ visibility: visible;
4379
+ }
4380
+ .ermis-call-ui__video-controls-overlay .ermis-call-ui__device-select {
4381
+ background: rgba(0, 0, 0, 0.85);
4382
+ border-color: rgba(255, 255, 255, 0.1);
4383
+ color: #ffffff;
4384
+ }
4385
+ .ermis-call-ui__error {
4386
+ display: flex;
4387
+ flex-direction: column;
4388
+ align-items: center;
4389
+ justify-content: center;
4390
+ padding: 3rem var(--ermis-spacing-lg);
4391
+ text-align: center;
4392
+ background: var(--ermis-call-bg);
4393
+ border-radius: var(--ermis-radius-lg);
4394
+ min-height: 280px;
4395
+ width: 100%;
4396
+ }
4397
+ .ermis-call-ui__error-icon {
4398
+ animation: ermis-call-shake 0.6s ease-in-out;
4399
+ margin-bottom: var(--ermis-spacing-md);
4400
+ }
4401
+ @keyframes ermis-call-shake {
4402
+ 0%, 100% {
4403
+ transform: translateX(0);
4404
+ }
4405
+ 15% {
4406
+ transform: translateX(-8px);
4407
+ }
4408
+ 30% {
4409
+ transform: translateX(8px);
4410
+ }
4411
+ 45% {
4412
+ transform: translateX(-6px);
4413
+ }
4414
+ 60% {
4415
+ transform: translateX(6px);
4416
+ }
4417
+ 75% {
4418
+ transform: translateX(-3px);
4419
+ }
4420
+ 90% {
4421
+ transform: translateX(3px);
4422
+ }
4423
+ }
4424
+ .ermis-call-ui__error-text {
4425
+ margin: 0 0 var(--ermis-spacing-lg);
4426
+ color: var(--ermis-text-primary);
4427
+ font-weight: 500;
4428
+ font-size: 1.1rem;
4429
+ line-height: 1.5;
4430
+ max-width: 320px;
4431
+ }
4432
+ .ermis-call-ui__error-dismiss {
4433
+ display: flex;
4434
+ align-items: center;
4435
+ gap: var(--ermis-spacing-sm);
4436
+ padding: 12px 28px;
4437
+ border-radius: var(--ermis-radius-full);
4438
+ border: none;
4439
+ font-weight: 600;
4440
+ font-size: var(--ermis-font-size-base);
4441
+ cursor: pointer;
4442
+ transition: all var(--ermis-transition);
4443
+ background-color: var(--ermis-color-danger);
4444
+ color: #ffffff;
4445
+ box-shadow: 0 2px 12px rgba(239, 68, 68, 0.3);
4446
+ }
4447
+ .ermis-call-ui__error-dismiss:hover {
4448
+ background-color: var(--ermis-color-danger-hover);
4449
+ box-shadow: 0 4px 20px rgba(239, 68, 68, 0.4);
4450
+ transform: scale(1.02);
4451
+ }
4452
+ .ermis-call-ui__error-dismiss:active {
4453
+ transform: scale(0.98);
4454
+ }
4455
+ @media (prefers-reduced-motion: reduce) {
4456
+ .ermis-call-ui__ringing-avatar::before,
4457
+ .ermis-call-ui__ringing-avatar::after,
4458
+ .ermis-call-ui__ringing-avatar-inner,
4459
+ .ermis-call-ui__audio-wave-bar,
4460
+ .ermis-call-ui__active-status-dot,
4461
+ .ermis-call-ui__error-icon {
4462
+ animation: none;
4463
+ }
4464
+ .ermis-call-ui__action-circle:hover,
4465
+ .ermis-call-ui__control-btn:hover,
4466
+ .ermis-call-ui__error-dismiss:hover {
4467
+ transform: none;
4468
+ }
4469
+ }
4470
+
3756
4471
  /* src/styles/index.css */
3757
4472
  /*# sourceMappingURL=index.css.map */