.v4-reaction-picker{display:flex;gap:8px;justify-content:center;padding:10px 8px 14px;border-bottom:1px solid var(--line)}
.v4-reaction-picker button{width:43px;height:43px;border:0;border-radius:15px;background:var(--soft);font-size:22px;transition:.2s transform,.2s background}
.v4-reaction-picker button:active{transform:scale(.84);background:color-mix(in srgb,var(--primary) 18%,var(--soft))}
.v4-reactions{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px;padding-inline:2px}
.v4-reaction-chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:999px;padding:3px 7px;background:var(--surface);font-size:14px;color:var(--text)}
.v4-reaction-chip.mine{border-color:color-mix(in srgb,var(--primary) 60%,transparent);background:color-mix(in srgb,var(--primary) 13%,var(--surface))}
.v4-reaction-chip b{font-size:11px;font-weight:800}
.v4-receipt{margin-inline-end:3px;font-size:11px;letter-spacing:-2px;color:var(--muted)}
.v4-receipt.read{color:var(--primary)}
.v4-native-audio{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;overflow:hidden!important}
.v4-voice-shell{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:11px;direction:ltr;width:min(292px,72vw);min-width:228px;padding:5px 1px 3px;margin:2px 0}
.v4-voice-play{width:48px;height:48px;border:0;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,var(--primary),var(--primary-2));color:#fff;box-shadow:0 8px 22px color-mix(in srgb,var(--primary) 28%,transparent);transition:.16s transform,.16s filter}
.v4-voice-play:active{transform:scale(.9)}.v4-voice-play span{display:block;font-size:20px;line-height:1;transform:translateX(1px);font-weight:900}.v4-voice-play.error{background:#d64c5b}
.v4-voice-body{min-width:0;display:grid;gap:4px}
.v4-waveform,.v4-live-wave{display:flex;align-items:center;gap:2px;height:32px;min-width:0;cursor:pointer;touch-action:manipulation;direction:ltr}
.v4-waveform i,.v4-live-wave i{display:block;flex:1 1 0;min-width:2px;max-width:4px;min-height:4px;height:var(--h,20%);border-radius:999px;background:color-mix(in srgb,var(--muted) 68%,transparent);opacity:.68;transition:.12s height,.12s opacity,.12s background}
.v4-waveform i.played{background:var(--primary);opacity:1}
.v4-voice-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}
.v4-voice-time{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;direction:ltr;white-space:nowrap}
.v4-speed{border:0;border-radius:11px;background:color-mix(in srgb,var(--primary) 13%,var(--soft));padding:5px 8px;font-weight:900;color:var(--primary);font-size:11px;line-height:1;min-width:35px}
.message.mine .v4-waveform i.played{background:currentColor}.message.mine .v4-speed{background:rgba(255,255,255,.13);color:inherit}.message.mine .v4-voice-time{color:color-mix(in srgb,currentColor 70%,transparent)}
.v4-voice-recorder{display:flex;align-items:center;gap:9px;padding:9px 12px;margin:0 10px 6px;border-radius:18px;background:var(--surface);box-shadow:0 8px 30px rgba(0,0,0,.13);border:1px solid var(--line);z-index:8}
.v4-voice-recorder.hidden{display:none}
.v4-record-dot{width:10px;height:10px;border-radius:50%;background:#f04455;box-shadow:0 0 0 0 rgba(240,68,85,.5);animation:v4Pulse 1s infinite}
.v4-live-wave{height:30px;min-width:80px}.v4-live-wave i{width:2px;background:var(--primary)}
.v4-voice-recorder b{font-variant-numeric:tabular-nums;min-width:38px}
.v4-voice-recorder #v4VoiceHint{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}
.v4-voice-cancel,.v4-voice-send{border:0;border-radius:12px;padding:8px 10px;font-weight:800}
.v4-voice-cancel{background:rgba(240,68,85,.12);color:#e03b4c}.v4-voice-send{background:var(--primary);color:white}
@keyframes v4Pulse{70%{box-shadow:0 0 0 8px rgba(240,68,85,0)}}
.v4-e2ee-setting{margin-top:8px}.v4-e2ee-room{font-size:10px;font-weight:800;color:#0d9d7a;background:rgba(13,157,122,.12);padding:4px 7px;border-radius:999px;white-space:nowrap}
.v4-call-button{font-size:18px;font-weight:800}.v4-call-overlay{position:fixed;inset:0;z-index:1000;background:rgba(6,13,24,.86);backdrop-filter:blur(16px);display:grid;place-items:center;padding:20px}
.v4-call-overlay.hidden{display:none}.v4-call-card{position:relative;width:min(94vw,460px);min-height:520px;border-radius:30px;padding:28px 22px;background:linear-gradient(160deg,#15263d,#07111f);color:#fff;text-align:center;overflow:hidden;box-shadow:0 30px 90px rgba(0,0,0,.5)}
.v4-call-avatar{width:88px;height:88px;border-radius:30px;display:grid;place-items:center;margin:18px auto;background:linear-gradient(135deg,var(--primary),var(--primary-2));font-size:36px;font-weight:900;box-shadow:0 12px 45px rgba(18,143,208,.35)}
.v4-call-card h2{margin:8px 0}.v4-call-card p{opacity:.72}.v4-call-card video{background:#02050a;border-radius:22px;object-fit:cover}
#v4RemoteVideo{width:100%;height:240px;margin-top:18px}#v4LocalVideo{position:absolute;left:28px;bottom:105px;width:105px;height:145px;border:2px solid rgba(255,255,255,.28)}
.v4-call-actions{display:flex;justify-content:center;gap:18px;margin-top:24px}.v4-call-actions.hidden{display:none}.v4-call-actions button{border:0;border-radius:18px;padding:14px 22px;font-weight:900;background:rgba(255,255,255,.14);color:#fff}.v4-call-actions .accept{background:#16a36d}.v4-call-actions .reject{background:#e54858}.v4-call-actions .muted{background:#e2a22d}
.v4-admin-tools{display:grid;gap:12px;padding:14px;border-radius:20px;background:var(--surface);border:1px solid var(--line);margin-bottom:16px}.v4-admin-tools label{display:grid;gap:6px;font-size:12px;color:var(--muted)}
.v4-admin-tools input{width:100%;border:1px solid var(--line);background:var(--soft);color:var(--text);border-radius:13px;padding:11px}.v4-admin-actions{display:flex;flex-wrap:wrap;gap:8px}.v4-admin-actions button{border:0;border-radius:12px;padding:10px 12px;background:var(--primary);color:#fff;font-weight:800}
.v4-backup-list{display:grid;gap:7px}.v4-backup-list a{display:flex;justify-content:space-between;gap:10px;padding:9px 11px;border-radius:12px;background:var(--soft);color:var(--text);text-decoration:none}.v4-backup-list small{color:var(--muted)}
.v4-e2ee-copy{border-inline-start:3px solid #18a87a;padding-inline-start:9px}
@media(max-width:560px){.v4-voice-recorder #v4VoiceHint{display:none}.v4-call-card{min-height:500px}.v4-call-button{width:36px!important;min-width:36px!important}.v4-voice-shell{min-width:210px;width:min(278px,75vw);grid-template-columns:44px minmax(0,1fr)}.v4-voice-play{width:44px;height:44px}}

/* Hamrah v4.0.3 Voice Core ------------------------------------------------ */
.v4-native-audio,
audio.v4-native-audio,
.v4-has-voice>audio{display:none!important;visibility:hidden!important;width:0!important;height:0!important;min-width:0!important;min-height:0!important;max-width:0!important;max-height:0!important;position:absolute!important;inset:auto!important;opacity:0!important;pointer-events:none!important;overflow:hidden!important;appearance:none!important;-webkit-appearance:none!important}
.v4-has-voice{overflow:visible}
.v4-voice-shell{display:grid;grid-template-columns:50px minmax(0,1fr);align-items:center;gap:12px;direction:ltr;width:min(306px,74vw);min-width:238px;padding:8px 4px 5px;margin:1px 0;user-select:none;-webkit-user-select:none}
.v4-voice-play{position:relative;width:50px;height:50px;border:0;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,var(--primary),var(--primary-2));color:#fff;box-shadow:0 9px 24px color-mix(in srgb,var(--primary) 28%,transparent);transition:.16s transform,.16s filter,.16s opacity;overflow:hidden}
.v4-voice-play:active{transform:scale(.9)}
.v4-voice-play.playing{filter:saturate(1.12) brightness(1.04)}
.v4-play-glyph{display:block;font-size:20px;line-height:1;transform:translateX(1px);font-weight:950}
.v4-voice-play.playing .v4-play-glyph{font-size:17px;transform:none;letter-spacing:-3px}
.v4-voice-play.error{background:linear-gradient(145deg,#e15061,#b82d42)}
.v4-voice-loading{display:none;position:absolute;width:21px;height:21px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:v4VoiceSpin .7s linear infinite}
.v4-voice-play.loading .v4-play-glyph{opacity:0}.v4-voice-play.loading .v4-voice-loading{display:block}
@keyframes v4VoiceSpin{to{transform:rotate(360deg)}}
.v4-voice-body{min-width:0;display:grid;gap:5px;align-self:center}
.v4-waveform{display:flex;align-items:center;gap:2.5px;height:31px;min-width:0;cursor:pointer;touch-action:manipulation;direction:ltr;padding:1px 0}
.v4-waveform i{display:block;flex:1 1 0;min-width:2px;max-width:4px;min-height:4px;height:var(--h,20%);border-radius:999px;background:color-mix(in srgb,var(--muted) 63%,transparent);opacity:.62;transition:.1s opacity,.1s background,.1s transform;transform-origin:center}
.v4-waveform i.played{background:var(--primary);opacity:1}
.v4-waveform:active i{transform:scaleY(.92)}
.v4-voice-footer{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:7px;min-width:0;direction:ltr}
.v4-voice-time{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;direction:ltr;white-space:nowrap;min-width:28px}
.v4-voice-label{font-size:10px;color:color-mix(in srgb,var(--muted) 80%,transparent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;direction:rtl;text-align:left}
.v4-speed{border:0;border-radius:999px;background:color-mix(in srgb,var(--primary) 13%,var(--soft));padding:5px 8px;font-weight:950;color:var(--primary);font-size:11px;line-height:1;min-width:37px;transition:.15s transform,.15s background}
.v4-speed:active{transform:scale(.9)}.v4-speed.boosted{background:color-mix(in srgb,var(--primary) 22%,var(--soft))}
.message.mine .v4-waveform i.played{background:currentColor}.message.mine .v4-speed{background:rgba(255,255,255,.13);color:inherit}.message.mine .v4-speed.boosted{background:rgba(255,255,255,.23)}.message.mine .v4-voice-time,.message.mine .v4-voice-label{color:color-mix(in srgb,currentColor 70%,transparent)}

.v4-voice-recorder{position:relative;display:grid;grid-template-columns:42px auto minmax(92px,1fr) minmax(70px,auto) 30px 44px;align-items:center;gap:9px;padding:10px 11px;margin:0 10px 7px;border-radius:22px;background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:0 13px 38px rgba(0,0,0,.18);border:1px solid color-mix(in srgb,var(--primary) 18%,var(--line));z-index:18;overflow:hidden;animation:v4RecorderIn .22s ease-out}
.v4-voice-recorder::before{content:"";position:absolute;inset:0;background:linear-gradient(100deg,color-mix(in srgb,var(--primary) 8%,transparent),transparent 45%);pointer-events:none}
.v4-voice-recorder.hidden{display:none}.v4-voice-recorder.requesting{opacity:.74}
@keyframes v4RecorderIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
.v4-voice-cancel,.v4-voice-send{position:relative;border:0;border-radius:15px;width:42px;height:42px;display:grid;place-items:center;font-weight:900;z-index:1;transition:.15s transform,.15s filter}
.v4-voice-cancel:active,.v4-voice-send:active{transform:scale(.9)}
.v4-voice-cancel{background:rgba(240,68,85,.12);color:#ec4759}.v4-voice-cancel span{font-size:25px;line-height:1;margin-top:-2px}
.v4-voice-send{width:44px;height:44px;background:linear-gradient(145deg,var(--primary),var(--primary-2));color:white;box-shadow:0 8px 20px color-mix(in srgb,var(--primary) 24%,transparent)}.v4-voice-send span{font-size:20px;transform:rotate(180deg)}
.v4-record-status{position:relative;display:flex;align-items:center;gap:7px;direction:ltr;z-index:1}.v4-record-status b{font-variant-numeric:tabular-nums;min-width:34px;font-size:13px}
.v4-record-dot{width:9px;height:9px;border-radius:50%;background:#f04455;box-shadow:0 0 0 0 rgba(240,68,85,.52);animation:v4Pulse 1s infinite;flex:0 0 auto}
.v4-live-wave{position:relative;display:flex;align-items:center;gap:2px;height:34px;min-width:90px;direction:ltr;z-index:1;overflow:hidden}
.v4-live-wave i{display:block;flex:1 1 0;min-width:2px;max-width:3px;height:var(--live-h,8%);min-height:3px;border-radius:999px;background:linear-gradient(180deg,var(--primary),var(--primary-2));opacity:.82;transition:.08s height}
.v4-voice-hint{position:relative;font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;z-index:1;text-align:center}
.v4-voice-lock{position:relative;display:grid;place-items:center;width:28px;height:28px;border-radius:10px;background:var(--soft);font-size:13px;filter:grayscale(1);opacity:.58;z-index:1;transition:.16s transform,.16s opacity,.16s background}
.v4-voice-lock.active{filter:none;opacity:1;background:color-mix(in srgb,var(--primary) 16%,var(--soft));transform:translateY(-2px)}
@keyframes v4Pulse{70%{box-shadow:0 0 0 8px rgba(240,68,85,0)}}
@media(max-width:560px){.v4-voice-shell{min-width:218px;width:min(284px,77vw);grid-template-columns:46px minmax(0,1fr);gap:10px}.v4-voice-play{width:46px;height:46px}.v4-voice-recorder{grid-template-columns:40px auto minmax(76px,1fr) 28px 42px;gap:7px;padding:9px}.v4-voice-hint{display:none}.v4-voice-cancel{width:40px;height:40px}.v4-voice-send{width:42px;height:42px}}
