:root{--primary:#2563eb;--primary-dark:#1d4ed8;--primary-light:#3b82f6;--secondary:#64748b;--success:#22c55e;--warning:#f59e0b;--error:#ef4444;--bg:#0f172a;--bg-secondary:#1e293b;--bg-tertiary:#334155;--text:#f8fafc;--text-secondary:#94a3b8;--text-muted:#64748b;--border:#475569;--message-own:#1e40af;--message-other:#334155;--radius:12px;--radius-sm:8px;--shadow:0 4px 6px -1px rgba(0,0,0,0.3);--transition:0.2s ease;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px)}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;height:100%}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;height:100%;overflow:hidden;overscroll-behavior:none;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;-ms-touch-action:pan-x pan-y}html.ios-device,html.ios-device body{height:100dvh;overflow:hidden}a{color:var(--primary-light);text-decoration:none}a:hover{text-decoration:underline}.btn{display:inline-flex;align-items:center;justify-content:center;gap:0.5rem;padding:0.75rem 1.5rem;font-size:1rem;font-weight:500;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--transition),color var(--transition),transform var(--transition),opacity var(--transition);white-space:nowrap;-webkit-tap-highlight-color:transparent;touch-action:manipulation;user-select:none;-webkit-user-select:none}.btn-primary{background:var(--primary);color:white}.btn-primary:hover,.btn-primary:active{background:var(--primary-dark)}.btn-primary:active{transform:scale(0.97)}.btn-secondary{background:var(--bg-tertiary);color:var(--text)}.btn-secondary:hover,.btn-secondary:active{background:var(--border)}.btn-secondary:active{transform:scale(0.97)}.btn-danger{background:var(--error);color:white}.btn-danger:hover{background:#dc2626}.btn-icon{padding:0.5rem;background:transparent;border-radius:50%;min-width:44px;min-height:44px}.btn-icon:hover,.btn-icon:active{background:var(--bg-tertiary)}.btn-icon:active{transform:scale(0.92)}.btn:disabled{opacity:0.5;cursor:not-allowed}.form-group{margin-bottom:1rem}.form-label{display:block;margin-bottom:0.5rem;font-weight:500;color:var(--text-secondary)}.form-input{width:100%;padding:0.75rem 1rem;font-size:16px;color:var(--text);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);transition:border-color var(--transition);-webkit-appearance:none;appearance:none}.form-input:focus{outline:none;border-color:var(--primary)}.form-input::placeholder{color:var(--text-muted)}.password-wrapper{position:relative}.password-wrapper .form-input{padding-right:2.75rem}.toggle-password{position:absolute;right:0.25rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--text-muted);padding:0.5rem;display:flex;align-items:center;justify-content:center;min-width:40px;min-height:40px;-webkit-tap-highlight-color:transparent;border-radius:50%;transition:color var(--transition),background var(--transition)}.toggle-password:hover{color:var(--text)}.toggle-password:active{background:rgba(148,163,184,0.15)}.card{background:var(--bg-secondary);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow)}.auth-container{min-height:100%;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1.5rem;padding-top:calc(1.5rem+var(--safe-top));padding-bottom:calc(1.5rem+var(--safe-bottom));background:linear-gradient(135deg,var(--bg) 0%,var(--bg-secondary) 100%);overflow-y:auto;-webkit-overflow-scrolling:touch}body.auth-page{overflow:auto;overflow-x:hidden;height:auto;min-height:100%;min-height:100dvh}.auth-card{width:100%;max-width:380px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:2rem 1.5rem;box-shadow:0 25px 50px -12px rgba(0,0,0,0.25)}.auth-logo{text-align:center;margin-bottom:2rem}.auth-logo h1{font-size:2rem;font-weight:700;background:linear-gradient(135deg,var(--text) 0%,var(--primary-light) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:0.5rem;display:inline-flex;align-items:center;gap:0.5rem}.auth-logo-icon{width:2.25rem;height:2.25rem;max-width:2.25rem;max-height:2.25rem;object-fit:cover;border-radius:50%;-webkit-text-fill-color:initial;-webkit-background-clip:initial;background-clip:initial;background:none;flex-shrink:0}.auth-logo p{color:var(--text-muted);font-size:0.9375rem}.auth-form .form-group{margin-bottom:1.25rem}.auth-form .btn{width:100%;margin-top:0.5rem;padding:0.875rem 1.5rem;font-weight:600;white-space:normal;text-align:center}.auth-footer{text-align:center;margin-top:1.5rem;color:var(--text-muted);font-size:0.9375rem}.auth-footer a{font-weight:500}.auth-error{background:rgba(239,68,68,0.1);border:1px solid var(--error);color:var(--error);padding:0.875rem 1rem;border-radius:var(--radius-sm);margin-bottom:1.25rem;font-size:0.9375rem}.chat-container{display:flex;flex-direction:column;height:100%;max-height:100%;width:100%;overflow:hidden;padding-top:var(--safe-top);contain:layout style}html.ios-device .chat-container{height:100dvh;max-height:100dvh}.chat-header{display:flex;align-items:center;justify-content:space-between;padding:0.75rem 1rem;background:rgba(30,41,59,0.97);border-bottom:1px solid var(--border);flex-shrink:0;z-index:100;will-change:transform}.chat-header-info{flex:1;min-width:0}.chat-header-info h1{font-size:1.125rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-meta-line{display:flex;align-items:center;gap:0.75rem}.chat-header-info .room-code{font-size:0.75rem;color:var(--text-muted);font-family:monospace}.room-expiry{font-size:0.75rem;color:var(--warning);font-weight:500;padding:0.125rem 0.5rem;background:rgba(245,158,11,0.15);border-radius:4px}.room-expiry.warning{color:var(--warning);background:rgba(245,158,11,0.2)}.room-expiry.urgent{color:var(--error);background:rgba(239,68,68,0.2);animation:pulse-urgent 1s infinite}.room-expiry.expired{color:var(--error);background:rgba(239,68,68,0.3)}@keyframes pulse-urgent{0%,100%{opacity:1}50%{opacity:0.6}}.chat-header-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.toolbar-btn{display:flex;align-items:center;justify-content:center;width:38px;height:38px;min-width:38px;min-height:38px;background:transparent;border:none;border-radius:10px;color:var(--text-secondary);cursor:pointer;transition:background-color 0.2s ease,color 0.2s ease,transform 0.2s ease;-webkit-tap-highlight-color:transparent;position:relative;flex-shrink:0;box-sizing:border-box}.toolbar-btn svg{width:20px;height:20px;min-width:20px;min-height:20px;flex-shrink:0;pointer-events:none}.toolbar-btn:hover{background:rgba(148,163,184,0.15);color:var(--text)}.toolbar-btn:active{transform:scale(0.9);background:rgba(148,163,184,0.2)}.toolbar-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.kebab-btn{display:none}.kebab-menu{display:flex;align-items:center;gap:4px}.kebab-item{display:flex;align-items:center;justify-content:center;width:38px;height:38px;min-width:38px;min-height:38px;background:transparent;border:none;border-radius:10px;color:var(--text-secondary);cursor:pointer;transition:background-color 0.2s ease,color 0.2s ease,transform 0.2s ease;-webkit-tap-highlight-color:transparent;flex-shrink:0;box-sizing:border-box;font-size:0.9375rem;font-weight:500}.kebab-item svg{width:20px;height:20px;min-width:20px;min-height:20px;flex-shrink:0;pointer-events:none}.kebab-item span{display:none}.kebab-item:hover{background:rgba(148,163,184,0.15);color:var(--text)}.kebab-item:active{transform:scale(0.92);background:rgba(148,163,184,0.2)}.kebab-item-danger{color:#f87171}.kebab-item-danger:hover{background:rgba(248,113,113,0.15);color:#fca5a5}.kebab-item-warning{color:#fbbf24}.kebab-item-warning:hover{background:rgba(251,191,36,0.15);color:#fcd34d}.kebab-divider{width:1px;height:24px;background:linear-gradient(180deg,transparent 0%,var(--border) 20%,var(--border) 80%,transparent 100%);margin:0 4px;opacity:0.6}.connection-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-left:4px;transition:all 0.3s ease}.connection-dot.connected{background:#34d399;box-shadow:0 0 8px rgba(52,211,153,0.6)}.connection-dot.disconnected{background:#f87171;box-shadow:0 0 6px rgba(248,113,113,0.5);animation:pulse-status 1.5s ease-in-out infinite}.connection-dot.reconnecting{background:var(--warning);box-shadow:0 0 4px var(--warning);animation:pulse-status 1s ease-in-out infinite}@keyframes pulse-status{0%,100%{opacity:1;transform:scale(1)}50%{opacity:0.5;transform:scale(0.85)}}.chat-main{display:flex;flex:1 1 auto;min-height:0;overflow:hidden}.chat-sidebar{display:none;width:250px;background:var(--bg-secondary);border-right:1px solid var(--border);flex-shrink:0;flex-direction:column}@media (max-width:767px){.chat-sidebar{position:fixed;top:0;right:0;bottom:0;width:280px;max-width:85vw;z-index:200;transform:translateX(100%);transition:transform 0.3s cubic-bezier(0.4,0,0.2,1);box-shadow:-4px 0 20px rgba(0,0,0,0.3);border-right:none;border-left:1px solid var(--border);padding-top:var(--safe-top);padding-bottom:var(--safe-bottom)}.chat-sidebar.show{display:flex;transform:translateX(0)}}@media (min-width:768px){.chat-sidebar.show{display:flex}.chat-sidebar.hidden{display:none !important}}.chat-content{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.messages-container{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;padding:1rem;display:flex;flex-direction:column;gap:0.75rem;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.message{max-width:80%;padding:0.625rem 0.875rem;border-radius:18px;word-wrap:break-word;animation:messageAppear 0.2s ease-out;position:relative;box-shadow:0 1px 2px rgba(0,0,0,0.1)}.message.own{align-self:flex-end;background:linear-gradient(135deg,var(--primary) 0%,var(--message-own) 100%);border-bottom-right-radius:6px;margin-left:15%}.message.other{align-self:flex-start;background:var(--message-other);border-bottom-left-radius:6px;margin-right:15%}.message.system{align-self:center;background:rgba(100,116,139,0.1);color:var(--text-muted);font-size:0.8125rem;padding:0.5rem 1rem;border-radius:20px;max-width:90%;text-align:center}.message.pending,.message.sending{opacity:0.7}.message.retrying{opacity:0.7;border-left:3px solid var(--warning)}.message.failed{opacity:0.9;border-left:3px solid var(--error)}.message.sent{opacity:1}.message-footer{display:flex;align-items:center;justify-content:flex-end;gap:0.5rem;margin-top:0.25rem}.message-status{font-size:0.625rem;color:var(--text-muted);display:inline-flex;align-items:center;margin-left:4px}.message-status .tick{width:16px;height:16px;color:var(--text-muted)}.message-status .tick.double{width:20px}.message-status.ticks{color:var(--text-muted)}.message-status.ticks.delivered{color:var(--text-muted)}.message-status.ticks.read{color:#3b82f6}.message-status.ticks.read .tick{color:#3b82f6}.message-status.ticks.partial-read{color:#60a5fa}.message-status.ticks.partial-read .tick{color:#60a5fa}.message-status.sending{opacity:0.5}.message-status.sending .tick{color:var(--text-muted);animation:pulse-sending 1s infinite}@keyframes pulse-sending{0%,100%{opacity:0.5}50%{opacity:1}}.message-status.failed{color:var(--error);font-weight:bold;font-size:0.75rem}.message.retrying .message-status{color:var(--warning)}.message.failed .message-status{color:var(--error)}.message .sender{display:block;font-size:0.75rem;font-weight:600;color:var(--primary-light);margin-bottom:0.25rem}.message p{margin:0;white-space:pre-wrap;word-break:break-word}.message-link{color:#4fc3f7;text-decoration:underline;word-break:break-all}.message-link:hover{color:#81d4fa;text-decoration:underline}.message.own .message-link{color:#e3f2fd}.message.own .message-link:hover{color:#ffffff}.message .time{display:block;font-size:0.625rem;color:var(--text-muted);text-align:right;margin-top:0.25rem}@keyframes messageAppear{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-input-container{display:flex;align-items:flex-end;gap:0.75rem;padding:0.75rem 1rem;padding-bottom:calc(0.75rem+env(safe-area-inset-bottom,0px));background:var(--bg-secondary);border-top:1px solid var(--border);flex-shrink:0;z-index:50;-webkit-transform:translateZ(0);transform:translateZ(0)}.input-action-btn{min-width:44px;min-height:44px;padding:0;color:var(--text-muted);background:transparent;border-radius:50%;flex-shrink:0;transition:all 0.2s ease}.input-action-btn svg{pointer-events:none}.input-action-btn:hover,.input-action-btn:active{color:var(--text);background:var(--bg-tertiary)}.input-action-btn:active{transform:scale(0.92)}.input-action-btn.active{color:var(--primary);background:rgba(99,102,241,0.15)}.attachment-wrapper{position:relative}.attachment-menu{position:fixed;background:var(--bg-secondary);border:1px solid var(--border);border-radius:16px;padding:8px;display:flex;flex-direction:column;gap:4px;min-width:180px;box-shadow:0 8px 32px rgba(0,0,0,0.3),0 2px 8px rgba(0,0,0,0.2);opacity:0;visibility:hidden;transform:translateY(10px) scale(0.95);transform-origin:bottom left;transition:opacity 0.2s cubic-bezier(0.4,0,0.2,1),visibility 0.2s cubic-bezier(0.4,0,0.2,1),transform 0.2s cubic-bezier(0.4,0,0.2,1);z-index:1000}.attachment-menu.show{opacity:1;visibility:visible;transform:translateY(0) scale(1)}.attachment-option{display:flex;align-items:center;gap:12px;padding:12px 16px;background:transparent;border:none;border-radius:12px;color:var(--text);font-size:0.9375rem;font-weight:500;cursor:pointer;transition:all 0.15s ease;-webkit-tap-highlight-color:transparent;text-align:left;width:100%}.attachment-option svg{width:24px;height:24px;flex-shrink:0;color:var(--text-secondary);transition:color 0.15s ease}.attachment-option:hover{background:var(--bg-tertiary)}.attachment-option:hover svg{color:var(--primary)}.attachment-option:active{transform:scale(0.98);background:var(--bg)}.attachment-option span{flex:1}.attachment-menu::before{content:'';position:absolute;bottom:-6px;left:18px;width:12px;height:12px;background:var(--bg-secondary);border-right:1px solid var(--border);border-bottom:1px solid var(--border);transform:rotate(45deg)}.message-input-wrapper{flex:1;display:flex;align-items:flex-end;background:var(--bg);border:1px solid var(--border);border-radius:24px;padding:0.625rem 1rem;min-width:0;min-height:48px;transition:border-color 0.2s ease,box-shadow 0.2s ease}.message-input-wrapper:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,0.15)}#message-input{flex:1;background:transparent;border:none;color:var(--text);font-size:16px;resize:none;max-height:120px;min-height:24px;line-height:1.5;-webkit-appearance:none;appearance:none;min-width:0;width:100%;font-family:inherit}#message-input:focus{outline:none}#message-input::placeholder{color:var(--text-muted)}.send-btn{min-width:48px;min-height:48px;border-radius:50%;padding:0;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--primary);transition:all 0.2s ease;box-shadow:0 2px 8px rgba(37,99,235,0.3)}.send-btn:hover{background:var(--primary-dark);box-shadow:0 4px 12px rgba(37,99,235,0.4);transform:translateY(-1px)}.send-btn:active{transform:scale(0.92) translateY(0);box-shadow:0 1px 4px rgba(37,99,235,0.3)}.send-btn svg{margin-left:2px}.voice-recording-overlay{display:none;position:fixed;bottom:0;left:0;right:0;background:linear-gradient(to top,var(--bg-secondary) 0%,rgba(30,41,59,0.98) 100%);padding:1.5rem 1rem;padding-bottom:calc(1.5rem+env(safe-area-inset-bottom,0px));z-index:100;border-top:1px solid var(--border);animation:slideUp 0.2s ease}.voice-recording-overlay.show{display:block}@keyframes slideUp{from{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.voice-recording-content{display:flex;flex-direction:column;align-items:center;gap:1rem;max-width:300px;margin:0 auto}.voice-recording-indicator{position:relative;display:flex;align-items:center;justify-content:center;width:64px;height:64px;color:var(--error)}.voice-recording-pulse{position:absolute;width:100%;height:100%;background:var(--error);border-radius:50%;opacity:0.3;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,100%{transform:scale(1);opacity:0.3}50%{transform:scale(1.3);opacity:0.1}}.voice-recording-time{font-size:1.5rem;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}.voice-recording-actions{display:flex;gap:1.5rem;margin-top:0.5rem}.voice-action-btn{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center}.voice-action-btn:first-child{background:var(--bg-tertiary);color:var(--text-muted)}.voice-action-btn:first-child:hover{background:var(--error);color:white}.voice-action-btn.btn-primary{background:var(--success);box-shadow:0 2px 8px rgba(34,197,94,0.3)}.voice-action-btn.btn-primary:hover{background:#16a34a}.voice-message{display:flex;align-items:center;gap:0.75rem;padding:0.5rem 0.75rem;background:rgba(255,255,255,0.05);border-radius:var(--radius);min-width:200px;max-width:280px}.voice-message-play{width:40px;height:40px;border-radius:50%;background:var(--primary);color:white;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all 0.2s ease}.voice-message-play:hover{background:var(--primary-dark);transform:scale(1.05)}.voice-message-play.playing{background:var(--error)}.voice-message-info{flex:1;min-width:0}.voice-message-waveform{height:24px;display:flex;align-items:center;gap:2px;margin-bottom:4px}.voice-message-waveform span{width:3px;background:var(--primary-light);border-radius:2px;opacity:0.5}.voice-message-waveform.playing span{animation:waveform 0.5s ease-in-out infinite alternate}.voice-message-waveform span:nth-child(1){height:8px;animation-delay:0s}.voice-message-waveform span:nth-child(2){height:16px;animation-delay:0.1s}.voice-message-waveform span:nth-child(3){height:12px;animation-delay:0.2s}.voice-message-waveform span:nth-child(4){height:20px;animation-delay:0.3s}.voice-message-waveform span:nth-child(5){height:14px;animation-delay:0.4s}.voice-message-waveform span:nth-child(6){height:18px;animation-delay:0.5s}.voice-message-waveform span:nth-child(7){height:10px;animation-delay:0.6s}.voice-message-waveform span:nth-child(8){height:22px;animation-delay:0.7s}.voice-message-waveform span:nth-child(9){height:16px;animation-delay:0.8s}.voice-message-waveform span:nth-child(10){height:12px;animation-delay:0.9s}@keyframes waveform{from{opacity:0.3}to{opacity:1}}.voice-message-duration{font-size:0.75rem;color:var(--text-muted)}.file-message{display:flex;align-items:center;gap:0.75rem;padding:0.5rem;background:rgba(255,255,255,0.05);border-radius:var(--radius);min-width:200px}.file-icon{font-size:1.75rem;line-height:1;flex-shrink:0}.file-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:0.125rem}.file-name{font-size:0.875rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size{font-size:0.75rem;color:var(--text-muted)}.save-file-btn{min-width:60px;min-height:36px;padding:0.5rem 1rem;font-size:0.8125rem;font-weight:500;background:rgba(255,255,255,0.15);border:none;border-radius:var(--radius-sm);color:inherit;cursor:pointer;transition:background 0.2s,transform 0.1s;-webkit-tap-highlight-color:transparent;display:inline-flex;align-items:center;justify-content:center}.save-file-btn:hover{background:rgba(255,255,255,0.25)}.save-file-btn:active{transform:scale(0.95)}@media (max-width:767px){.save-file-btn{min-width:64px;min-height:40px;padding:0.5rem 1rem;font-size:0.875rem}}@media (hover:none) and (pointer:coarse){.save-file-btn{min-height:44px;padding:0.625rem 1.25rem}}.image-message{position:relative;max-width:300px;border-radius:var(--radius);overflow:hidden}.chat-image{display:block;width:100%;max-height:300px;object-fit:cover;cursor:pointer;border-radius:var(--radius);transition:transform 0.2s ease}.chat-image:hover{transform:scale(1.02)}.chat-image:active{transform:scale(0.98)}.image-caption,.video-caption,.audio-caption{margin-top:0.25rem;font-size:0.75rem;color:var(--text-muted)}.video-message{position:relative;max-width:320px;border-radius:var(--radius);overflow:hidden}.chat-video{display:block;width:100%;max-height:240px;background:#000;border-radius:var(--radius)}.audio-message{min-width:250px;max-width:320px}.chat-audio{width:100%;height:40px;border-radius:var(--radius-sm)}.audio-info{font-size:0.75rem;color:var(--text-muted);margin-top:0.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.media-actions{display:flex;justify-content:flex-end;margin-top:0.5rem;gap:0.5rem}.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:199;opacity:0;transition:opacity 0.3s ease}.sidebar-backdrop.show{display:block;opacity:1}.participants-header{padding:1rem;border-bottom:1px solid var(--border)}.participants-header h2{font-size:0.875rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:0.05em}.participants-list{flex:1;overflow-y:auto;padding:0.5rem}.participant{display:flex;align-items:center;gap:0.75rem;padding:0.75rem;border-radius:var(--radius-sm)}.participant:hover{background:var(--bg-tertiary)}.participant .status-dot{width:8px;height:8px;background:var(--text-muted);border-radius:50%;transition:background-color 0.3s ease}.participant.online .status-dot{background:var(--success)}.participant.offline .status-dot{background:var(--text-muted)}.participant .name{flex:1;font-weight:500}.participant .you{font-size:0.75rem;color:var(--text-muted)}.participant.self{background:rgba(37,99,235,0.1)}.participant .participant-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:0.125rem}.participant .poke-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;transition:all 0.2s ease;flex-shrink:0;opacity:0.6}.participant .poke-btn:hover{background:var(--primary);color:white;opacity:1;transform:scale(1.05)}.participant .poke-btn:active{transform:scale(0.95)}.participant .poke-btn:disabled{opacity:0.3;cursor:not-allowed;transform:none}.participant .poke-btn.poking{animation:poke-pulse 0.5s ease-in-out infinite}@keyframes poke-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.1)}}.participant .poke-btn.poked{background:var(--success);color:white;opacity:1}.participant .poke-btn.poked svg{animation:poke-ring 0.5s ease-out}@keyframes poke-ring{0%{transform:rotate(0deg)}25%{transform:rotate(-15deg)}50%{transform:rotate(15deg)}75%{transform:rotate(-10deg)}100%{transform:rotate(0deg)}}.participant.offline .poke-btn{opacity:0.8;color:var(--warning)}.participant.offline .poke-btn:hover{background:var(--warning);color:white;opacity:1}.rooms-container{min-height:100%;min-height:100dvh;display:flex;flex-direction:column;padding:1rem;padding-top:calc(1rem+var(--safe-top));padding-bottom:calc(1rem+var(--safe-bottom));padding-left:calc(1rem+var(--safe-left));padding-right:calc(1rem+var(--safe-right));overflow-y:auto;-webkit-overflow-scrolling:touch}.rooms-header{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem}.rooms-header-top{display:flex;align-items:center;justify-content:space-between;gap:0.5rem;min-width:0}.rooms-header h1{font-size:1.75rem;font-weight:700;background:linear-gradient(135deg,var(--text) 0%,var(--primary-light) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.rooms-header-icons{display:flex;align-items:center;gap:0.375rem;flex-shrink:0}.rooms-actions{display:flex;gap:0.5rem;flex-wrap:wrap}.rooms-actions .btn-primary,.rooms-actions .btn-secondary{flex:1;min-width:0;padding:0.875rem 1rem;font-weight:600;white-space:normal;text-align:center}.rooms-list{display:flex;flex-direction:column;gap:0.75rem;flex:1}.room-card{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;background:var(--bg-secondary);border:1px solid transparent;border-radius:var(--radius);cursor:pointer;transition:all var(--transition)}.room-card:hover{transform:translateY(-2px);border-color:var(--border);box-shadow:var(--shadow)}.room-card:active{transform:translateY(0)}.room-avatar{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:white;font-weight:600;font-size:1.125rem}.room-info{flex:1;min-width:0}.room-name{font-weight:600;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:0.25rem}.room-meta{display:flex;align-items:center;gap:0.75rem;font-size:0.75rem;color:var(--text-muted)}.room-meta-item{display:flex;align-items:center;gap:0.25rem}.room-meta-item svg{width:14px;height:14px;opacity:0.7}.room-card-badge{padding:0.25rem 0.5rem;font-size:0.625rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;border-radius:4px;background:rgba(245,158,11,0.15);color:var(--warning)}.room-card-badge.password{background:rgba(139,92,246,0.15);color:#a78bfa}.room-arrow{color:var(--text-muted);transition:transform var(--transition)}.room-card:hover .room-arrow{transform:translateX(4px);color:var(--primary-light)}.empty-state{text-align:center;padding:4rem 1.5rem;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-secondary)}.empty-state h2{font-size:1.25rem;font-weight:600;margin-bottom:0.5rem;color:var(--text)}.empty-state p{color:var(--text-muted);max-width:280px}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.7);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:1rem;padding-top:calc(1rem+var(--safe-top));padding-bottom:calc(1rem+var(--safe-bottom));z-index:1000;opacity:0;visibility:hidden;transition:all var(--transition)}.modal-overlay.show{opacity:1;visibility:visible}.modal{width:100%;max-width:400px;max-height:calc(100vh - 2rem - var(--safe-top) - var(--safe-bottom));max-height:calc(100dvh - 2rem - var(--safe-top) - var(--safe-bottom));overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;transform:translateY(20px) scale(0.95);transition:transform var(--transition);box-shadow:0 25px 50px -12px rgba(0,0,0,0.4)}.modal-overlay.show .modal{transform:translateY(0) scale(1)}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.modal-header h2{font-size:1.25rem;font-weight:600}.modal-close{background:none;border:none;color:var(--text-muted);font-size:1.5rem;cursor:pointer;padding:0.25rem;border-radius:50%;width:36px;height:36px;min-width:36px;min-height:36px;display:flex;-webkit-tap-highlight-color:transparent;align-items:center;justify-content:center;transition:all var(--transition)}.modal-close:hover{background:var(--bg-tertiary);color:var(--text)}.modal-footer{display:flex;flex-wrap:wrap;gap:0.75rem;margin-top:1.5rem}.modal-footer .btn{flex:1;min-width:0;min-height:44px;white-space:normal;text-align:center}#notifications{position:fixed;top:calc(1rem+var(--safe-top));left:1rem;right:1rem;z-index:2000;display:flex;flex-direction:column;align-items:center;gap:0.5rem;pointer-events:none}.notification{padding:0.875rem 1.25rem;background:var(--bg-secondary);border-radius:var(--radius);box-shadow:0 10px 25px -5px rgba(0,0,0,0.3);animation:slideDown 0.3s ease;max-width:400px;width:100%;pointer-events:auto;border:1px solid var(--border);font-weight:500}.notification.success{border-color:var(--success);background:linear-gradient(135deg,rgba(34,197,94,0.15) 0%,var(--bg-secondary) 100%)}.notification.error{border-color:var(--error);background:linear-gradient(135deg,rgba(239,68,68,0.15) 0%,var(--bg-secondary) 100%)}.notification.warning{border-color:var(--warning);background:linear-gradient(135deg,rgba(245,158,11,0.15) 0%,var(--bg-secondary) 100%)}.notification.info{border-color:var(--primary);background:linear-gradient(135deg,rgba(37,99,235,0.15) 0%,var(--bg-secondary) 100%)}.notification.fade-out{animation:fadeOut 0.3s ease forwards}@keyframes slideDown{from{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fadeOut{to{transform:translateY(-20px);opacity:0}}.notification-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:0.75rem 1rem;background:linear-gradient(135deg,rgba(37,99,235,0.2) 0%,rgba(59,130,246,0.1) 100%);border-bottom:1px solid var(--primary);animation:slideDown 0.3s ease;flex-wrap:wrap}.notification-banner-content{display:flex;align-items:center;gap:0.75rem;flex:1;min-width:0}.notification-banner-icon{font-size:1.25rem;flex-shrink:0}.notification-banner-text{font-size:0.875rem;color:var(--text)}.notification-banner-actions{display:flex;gap:0.5rem;flex-shrink:0}.btn-small{padding:0.375rem 0.75rem;font-size:0.75rem}@media (max-width:480px){.notification-banner{flex-direction:column;align-items:stretch;gap:0.75rem}.notification-banner-actions{justify-content:flex-end}}.spinner{width:24px;height:24px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin 0.8s linear infinite;margin:0 auto}@keyframes spin{to{transform:rotate(360deg)}}.hidden{display:none !important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}#install-btn{display:none;position:fixed;bottom:calc(1rem+var(--safe-bottom));right:1rem;z-index:100}.install-banner{display:flex;align-items:center;gap:0.75rem;background:linear-gradient(135deg,rgba(37,99,235,0.12),rgba(37,99,235,0.06));border:1px solid rgba(37,99,235,0.25);border-radius:var(--radius);padding:0.75rem 1rem;margin-top:1rem;max-width:380px;width:100%;box-sizing:border-box;animation:installSlideUp 0.4s ease-out}@keyframes installSlideUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.install-banner-icon{flex-shrink:0;color:var(--primary);display:flex;align-items:center}.install-banner-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:0.125rem}.install-banner-text strong{font-size:0.8125rem;color:var(--text);line-height:1.2}.install-banner-text span{font-size:0.6875rem;color:var(--text-muted);line-height:1.2}.install-banner .btn-sm{flex-shrink:0;padding:0.375rem 0.875rem;font-size:0.75rem;min-height:32px}.install-banner-close{flex-shrink:0;background:none;border:none;color:var(--text-muted);font-size:1.25rem;cursor:pointer;padding:0.25rem;line-height:1;opacity:0.6;transition:opacity var(--transition)}.install-banner-close:hover{opacity:1}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.media-viewer{display:none;position:fixed;inset:0;z-index:1000}.media-viewer.show{display:flex;align-items:center;justify-content:center}.media-viewer-backdrop{position:absolute;inset:0;background:rgba(0,0,0,0.95);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.media-viewer-close{position:absolute;top:calc(1rem+var(--safe-top));right:calc(1rem+var(--safe-right));z-index:1001;background:rgba(255,255,255,0.1);border:none;border-radius:50%;padding:0.75rem;cursor:pointer;color:white;transition:background 0.2s;min-width:48px;min-height:48px;display:flex;align-items:center;justify-content:center}.media-viewer-close:hover{background:rgba(255,255,255,0.2)}.media-viewer-content{position:relative;z-index:1001;max-width:95vw;max-height:95vh;display:flex;align-items:center;justify-content:center}.media-viewer-image{max-width:95vw;max-height:90vh;object-fit:contain;border-radius:var(--radius);box-shadow:0 25px 50px -12px rgba(0,0,0,0.5)}.media-viewer-video{max-width:95vw;max-height:90vh;border-radius:var(--radius);background:#000}@media (min-width:768px){.chat-sidebar{display:flex}.chat-sidebar.hidden{display:none}.message{max-width:60%}.rooms-container{max-width:600px;margin:0 auto;padding:2rem 1.5rem}.rooms-header{flex-direction:row;align-items:center;justify-content:space-between}.rooms-header-top{flex:none}.rooms-actions{flex:none;width:auto}.rooms-actions .btn-primary,.rooms-actions .btn-secondary{flex:none;min-width:120px}.room-card{padding:1.25rem 1.5rem}.room-avatar{width:52px;height:52px;font-size:1.25rem}.auth-card{padding:2rem}}@media (min-width:1024px){.chat-sidebar{width:300px}.message{max-width:50%}.rooms-container{max-width:700px}}@media (max-width:767px){.btn,.emoji,.room-card,.participant{-webkit-user-select:none;user-select:none}.kebab-btn{display:flex}.kebab-menu{display:none;position:fixed;flex-direction:column;background:var(--bg-secondary);border:1px solid var(--border);border-radius:14px;padding:6px;min-width:220px;box-shadow:0 8px 32px rgba(0,0,0,0.35),0 2px 8px rgba(0,0,0,0.2);z-index:1000;gap:2px}.kebab-menu.show{display:flex}.kebab-item{width:100%;min-width:unset;min-height:44px;height:auto;padding:10px 16px;gap:12px;border-radius:10px;justify-content:flex-start;color:var(--text)}.kebab-item span{display:inline}.kebab-item:active{background:rgba(148,163,184,0.15)}.kebab-item-danger{color:#f87171}.kebab-item-warning{color:#fbbf24}.kebab-divider{width:100%;height:1px;margin:4px 0;background:var(--border);opacity:0.5}.chat-header{padding:0.5rem 0.5rem;gap:0.5rem}.chat-header-info{flex:1;min-width:0;overflow:hidden}.chat-header-info h1{font-size:1rem}.toolbar-btn{width:36px;height:36px;min-width:36px;min-height:36px}.rooms-header{gap:0.75rem;margin-bottom:1rem}.rooms-header h1{font-size:1.5rem}.rooms-header-icons .btn-icon{min-width:40px;min-height:40px;width:40px;height:40px;padding:0.375rem}.rooms-header-icons .btn-icon svg{width:20px;height:20px}.rooms-header-icons{gap:0}.rooms-actions .btn-primary,.rooms-actions .btn-secondary{padding:0.75rem 1rem;font-size:0.9375rem}.room-card{min-height:68px;padding:0.875rem 1rem;gap:0.75rem}.room-avatar{width:44px;height:44px;font-size:1rem}.room-name{font-size:0.9375rem}.room-meta{font-size:0.6875rem;gap:0.5rem}.modal{max-width:none;margin:0.5rem;padding:1.25rem;border-radius:var(--radius-sm)}.modal-header{margin-bottom:1rem}.modal-header h2{font-size:1.125rem}.modal-footer{margin-top:1rem;gap:0.5rem}.message-input-container{padding:0.5rem 0.75rem;padding-bottom:calc(0.5rem+var(--safe-bottom));gap:0.5rem}.message-input-wrapper{padding:0.5rem 0.875rem;min-height:44px;border-radius:22px}.input-action-btn{min-width:40px;min-height:40px}.send-btn{min-width:44px;min-height:44px}.attachment-menu{min-width:200px;padding:6px}.attachment-option{padding:14px 16px;gap:14px;font-size:1rem;border-radius:10px}.attachment-option svg{width:26px;height:26px}.message{max-width:85%;padding:0.5rem 0.75rem;margin-left:10%;margin-right:10%}.message.own{margin-left:10%;margin-right:0}.message.other{margin-left:0;margin-right:10%}.image-message{max-width:240px}.video-message{max-width:280px}.chat-image{max-height:200px}.chat-video{max-height:180px}.audio-message{min-width:200px;max-width:260px}.file-message{min-width:180px}.media-viewer-close{top:calc(0.5rem+var(--safe-top));right:0.5rem}}@media (max-width:400px){.chat-header{padding:0.375rem 0.375rem;gap:0.25rem}.chat-header-info h1{font-size:0.875rem}.chat-header-info .room-meta-line{font-size:0.65rem}.toolbar-btn{width:34px;height:34px;min-width:34px;min-height:34px}#back-btn{min-width:34px;min-height:34px;width:34px;height:34px;padding:0.25rem}#back-btn svg{width:20px;height:20px}.rooms-header-icons .btn-icon{min-width:36px;min-height:36px;width:36px;height:36px;padding:0.25rem}.rooms-header-icons .btn-icon svg{width:18px;height:18px}.rooms-header h1{font-size:1.25rem}.rooms-actions .btn-primary,.rooms-actions .btn-secondary{padding:0.625rem 0.75rem;font-size:0.875rem}}@media (max-height:500px) and (orientation:landscape){.chat-header{padding:0.25rem 0.5rem}.toolbar-btn{width:32px;height:32px;min-width:32px;min-height:32px}.message-input-container{padding:0.25rem 0.5rem;padding-bottom:calc(0.25rem+var(--safe-bottom))}.messages-container{padding:0.5rem;gap:0.5rem}.emoji-picker-container{max-height:100px}}@media (hover:none) and (pointer:coarse){.btn:hover{background:inherit}.btn-primary:hover{background:var(--primary)}.btn-secondary:hover{background:var(--bg-tertiary)}.room-card:hover{transform:none}.chat-image:hover{transform:none}.toolbar-btn:hover{background:transparent;color:var(--text-secondary)}.toolbar-btn:hover svg{transform:none}.toolbar-btn:active{background:rgba(148,163,184,0.2);transform:scale(0.92)}.kebab-item:hover{background:transparent}.kebab-item:active{background:rgba(148,163,184,0.15)}.kebab-item-danger:hover{background:transparent;color:#f87171}.kebab-item-danger:active{background:rgba(248,113,113,0.2)}.kebab-item-warning:hover{background:transparent;color:#fbbf24}.kebab-item-warning:active{background:rgba(251,191,36,0.2)}#message-input{font-size:16px !important;-webkit-appearance:none;appearance:none}.attachment-option:hover{background:transparent}.attachment-option:hover svg{color:var(--text-secondary)}.attachment-option:active{background:var(--bg-tertiary);transform:scale(0.98)}.attachment-option:active svg{color:var(--primary)}.settings-section-header:hover{background:transparent}.settings-section-header:active{background:rgba(148,163,184,0.12)}.settings-section:hover{border-color:var(--border)}}.participant .key-fingerprint{display:block;font-size:0.625rem;font-family:monospace;color:var(--text-muted);letter-spacing:0.05em;cursor:pointer;padding:0.125rem 0.25rem;border-radius:4px;transition:all 0.2s ease;margin-left:auto}.participant .key-fingerprint:hover{background:var(--bg-tertiary);color:var(--text-secondary)}.key-verification-modal{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:1rem;opacity:0;visibility:hidden;transition:all 0.3s ease}.key-verification-modal.show{opacity:1;visibility:visible}.key-verification-backdrop{position:absolute;inset:0;background:rgba(0,0,0,0.8);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.key-verification-content{position:relative;z-index:1;background:var(--bg-secondary);border-radius:var(--radius);padding:1.5rem;max-width:400px;width:100%;transform:translateY(20px);transition:transform 0.3s ease;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5)}.key-verification-modal.show .key-verification-content{transform:translateY(0)}.key-verification-content h3{font-size:1.25rem;font-weight:600;margin-bottom:0.5rem;color:var(--text)}.key-instruction{font-size:0.875rem;color:var(--text-secondary);margin-bottom:1.25rem;line-height:1.5}.key-fingerprint-full{font-family:monospace;font-size:0.9rem;letter-spacing:0.1em;text-align:center;padding:1rem;background:var(--bg);border-radius:var(--radius-sm);color:var(--success);border:1px solid var(--border);word-break:break-all;line-height:1.8}.key-actions{display:flex;gap:0.75rem;margin-top:1.25rem}.key-actions button{flex:1;padding:0.75rem 1rem;font-size:0.875rem;font-weight:500;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:all 0.2s ease}.btn-copy-fingerprint{background:var(--primary);color:white}.btn-copy-fingerprint:hover{background:var(--primary-dark)}.btn-close-verification{background:var(--bg-tertiary);color:var(--text)}.btn-close-verification:hover{background:var(--border)}.message.decryption-failed{opacity:0.7;border-left:3px solid var(--warning)}.message.decryption-failed p{color:var(--text-muted);font-style:italic}@media (max-width:767px){.participant .key-fingerprint{font-size:0.5rem;padding:0.1rem 0.2rem}.key-fingerprint-full{font-size:0.75rem;padding:0.75rem}.key-verification-content{padding:1rem}.key-actions{flex-direction:column}}#refresh-btn.spinning svg{animation:spin-refresh 1s linear infinite}@keyframes spin-refresh{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.message.queued{opacity:0.6;border-left:3px solid var(--secondary)}.message.queued .message-status{color:var(--secondary)}.message.queued::before{content:'';position:absolute;top:50%;left:-20px;transform:translateY(-50%);width:12px;height:12px;background:var(--secondary);border-radius:50%;animation:pulse-queue 2s ease-in-out infinite}@keyframes pulse-queue{0%,100%{opacity:0.3}50%{opacity:0.8}}.screenshot-alert{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--error);color:white;padding:1.5rem 2rem;border-radius:var(--radius);font-weight:600;font-size:1.125rem;z-index:9999;text-align:center;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5);animation:screenshot-alert-in 0.3s ease-out}.screenshot-alert .screenshot-user{display:block;font-size:0.875rem;font-weight:normal;opacity:0.9;margin-top:0.5rem}@keyframes screenshot-alert-in{from{opacity:0;transform:translate(-50%,-50%) scale(0.8)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.blur-content .messages-container,.blur-content .participants-list{filter:blur(8px);transition:filter 0.3s ease;pointer-events:none;user-select:none}.screenshot-warning-overlay{position:fixed;inset:0;background:rgba(15,23,42,0.95);z-index:9998;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.screenshot-warning-overlay .warning-icon{font-size:4rem;margin-bottom:1rem}.screenshot-warning-overlay h2{font-size:1.5rem;margin-bottom:0.5rem;color:var(--warning)}.screenshot-warning-overlay p{color:var(--text-secondary);max-width:400px}.message.screenshot-notice{background:linear-gradient(135deg,rgba(239,68,68,0.2),rgba(239,68,68,0.1));border:1px solid var(--error);text-align:center;padding:0.75rem;margin:0.5rem 0}.message.screenshot-notice p{color:var(--error);font-weight:500}.btn-warning{background:var(--warning);color:#000}.btn-warning:hover,.btn-warning:active{background:#d97706}.participant .call-participant-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--success);cursor:pointer;transition:all 0.2s ease;flex-shrink:0;opacity:0.6}.participant .call-participant-btn:hover{background:var(--success);color:white;opacity:1;transform:scale(1.05)}.participant .call-participant-btn:active{transform:scale(0.95)}.call-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(15,23,42,0.95);z-index:200;align-items:center;justify-content:center;animation:fadeIn 0.2s ease}.call-overlay.active{display:flex}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.call-content{display:flex;flex-direction:column;align-items:center;gap:1.5rem;text-align:center;padding:2rem}.call-avatar{position:relative;display:flex;align-items:center;justify-content:center;width:80px;height:80px;color:var(--primary-light)}.call-pulse{position:absolute;width:100%;height:100%;background:var(--primary);border-radius:50%;opacity:0.2;animation:callPulse 2s ease-in-out infinite}@keyframes callPulse{0%,100%{transform:scale(1);opacity:0.2}50%{transform:scale(1.4);opacity:0.05}}.incoming-call-overlay .call-avatar{color:var(--success)}.incoming-pulse{position:relative}.incoming-pulse::before{content:'';position:absolute;width:100%;height:100%;background:var(--success);border-radius:50%;opacity:0.2;animation:callPulse 1.5s ease-in-out infinite}.call-info{display:flex;flex-direction:column;gap:0.5rem}.call-name{font-size:1.5rem;font-weight:600;color:var(--text)}.call-status{font-size:0.9rem;color:var(--text-secondary)}.call-duration{font-size:1.8rem;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}.call-actions{display:flex;gap:1.5rem;margin-top:1rem}.call-action-btn{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border:none;border-radius:50%;cursor:pointer;transition:all 0.2s ease;color:white}.call-action-btn:active{transform:scale(0.95)}.call-end{background:var(--error)}.call-end:hover{background:#dc2626}.call-decline{background:var(--error)}.call-decline:hover{background:#dc2626}.call-accept{background:var(--success)}.call-accept:hover{background:#16a34a}.call-mute{background:var(--bg-tertiary)}.call-mute:hover{background:var(--secondary)}.call-mute.muted{background:var(--warning);color:#000}.call-mute.muted .mute-off-icon{display:none}.call-mute.muted .mute-on-icon{display:block !important}.call-mute:not(.muted) .mute-on-icon{display:none !important}.call-indicator{display:flex;align-items:center;gap:0.5rem;padding:0.4rem 0.75rem;background:var(--success);color:white;font-size:0.8rem;font-weight:500;cursor:pointer;z-index:50}.call-indicator-dot{width:8px;height:8px;background:white;border-radius:50%;animation:callDotPulse 1s ease-in-out infinite}@keyframes callDotPulse{0%,100%{opacity:1}50%{opacity:0.4}}.call-indicator-btn{margin-left:auto;padding:0.15rem 0.5rem;border:1px solid rgba(255,255,255,0.5);border-radius:var(--radius-sm);background:transparent;color:white;font-size:0.75rem;cursor:pointer;transition:background 0.2s}.call-indicator-btn:hover{background:rgba(255,255,255,0.2)}.modal-overlay,.chat-sidebar,.voice-recording-overlay,.media-viewer{will-change:opacity}.modal-overlay.show .modal{will-change:transform}@media (max-width:767px){.modal-overlay{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important}.modal-overlay .modal{transform:none}.modal-overlay.show .modal{transform:none}}.settings-modal{padding:1.5rem}.settings-accordion{display:flex;flex-direction:column;gap:0.5rem}.settings-section{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;transition:border-color 0.2s ease}.settings-section:hover{border-color:var(--text-muted)}.settings-section.open{border-color:var(--primary)}.settings-section-header{display:flex;align-items:center;gap:0.75rem;width:100%;padding:0.875rem 1rem;background:transparent;border:none;color:var(--text);cursor:pointer;font-size:0.9375rem;font-weight:500;text-align:left;-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:background-color 0.15s ease;min-height:52px}.settings-section-header:hover{background:rgba(148,163,184,0.08)}.settings-section-header:active{background:rgba(148,163,184,0.12)}.settings-section-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;background:var(--bg-tertiary);border-radius:8px;color:var(--text-secondary);transition:color 0.2s ease,background 0.2s ease}.settings-section.open .settings-section-icon{background:rgba(37,99,235,0.15);color:var(--primary-light)}.settings-section-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.settings-section-value{font-size:0.8125rem;color:var(--text-muted);flex-shrink:0}.settings-chevron{flex-shrink:0;color:var(--text-muted);transition:transform 0.25s cubic-bezier(0.4,0,0.2,1)}.settings-section.open .settings-chevron{transform:rotate(180deg)}.settings-section-body{max-height:0;overflow:hidden;transition:max-height 0.3s cubic-bezier(0.4,0,0.2,1),padding 0.3s cubic-bezier(0.4,0,0.2,1);padding:0 0.875rem}.settings-section.open .settings-section-body{max-height:500px;padding:0 0.875rem 0.875rem}.settings-option-row{display:flex;align-items:center;justify-content:space-between;gap:0.75rem;padding:0.75rem;background:var(--bg-tertiary);border-radius:var(--radius-sm)}.settings-option-info{min-width:0;flex:1}.settings-option-label{font-size:0.875rem;color:var(--text);margin-bottom:0.25rem}.settings-option-desc{font-size:0.75rem;color:var(--text-muted);line-height:1.4}.settings-toggle{position:relative;display:inline-block;width:48px;height:26px;flex-shrink:0}.settings-toggle input{opacity:0;width:0;height:0}.settings-toggle-track{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:var(--border);border-radius:13px;transition:background 0.3s}.settings-toggle-dot{position:absolute;height:20px;width:20px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:transform 0.3s;pointer-events:none}.settings-section-body .form-group{margin-bottom:0.875rem}.settings-section-body .form-group:last-of-type{margin-bottom:0.75rem}@media (max-width:767px){.settings-modal{padding:1rem;margin:0.375rem}.settings-modal .modal-header{margin-bottom:0.75rem}.settings-modal .modal-footer{margin-top:0.75rem}.settings-accordion{gap:0.375rem}.settings-section-header{padding:0.75rem 0.75rem;gap:0.625rem;min-height:48px;font-size:0.875rem}.settings-section-icon{width:30px;height:30px}.settings-section-icon svg{width:16px;height:16px}.settings-section-body{padding:0 0.75rem}.settings-section.open .settings-section-body{padding:0 0.75rem 0.75rem}.settings-option-row{gap:0.5rem;padding:0.625rem}.settings-option-label{font-size:0.8125rem}.settings-option-desc{font-size:0.6875rem}.settings-section-body .form-input{max-width:100%}.settings-section-body .form-group{margin-bottom:0.75rem}}@media (max-width:360px){.settings-modal{padding:0.75rem;margin:0.25rem}.settings-section-header{padding:0.625rem 0.625rem;gap:0.5rem;font-size:0.8125rem}.settings-section-icon{width:28px;height:28px}.settings-section-body{padding:0 0.625rem}.settings-section.open .settings-section-body{padding:0 0.625rem 0.625rem}.settings-option-row{flex-direction:column;align-items:stretch;gap:0.5rem}.settings-toggle{align-self:flex-start}}#settings-btn svg,#logout-btn svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,0.3))}#settings-btn:active svg,#logout-btn:active svg{transform:scale(0.9)}@media (max-width:360px){.modal{padding:1rem;margin:0.375rem}.modal-header h2{font-size:1rem}.modal-footer .btn{padding:0.625rem 0.75rem;font-size:0.875rem}.auth-card{padding:1.5rem 1.25rem}.auth-logo h1{font-size:1.625rem}.auth-logo-icon{width:1.875rem;height:1.875rem}}html.ios-device .rooms-container{min-height:100dvh;max-height:100dvh;box-sizing:border-box;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;padding-top:max(3.5rem,calc(1.25rem+env(safe-area-inset-top,0px)));padding-bottom:calc(1.25rem+env(safe-area-inset-bottom,0px))}html.ios-device .rooms-header{margin-bottom:1rem}html.ios-device .rooms-header-top{min-height:44px;padding-top:max(0px,calc(env(safe-area-inset-top,0px) * 0.15))}html.ios-device .chat-container{box-sizing:border-box;overflow:hidden}html.ios-device .chat-header{padding-top:max(0.5rem,calc(0.25rem+env(safe-area-inset-top,0px) * 0.35))}@media (max-width:767px){html.ios-device .kebab-menu{max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 60px);overflow-y:auto;-webkit-overflow-scrolling:touch}}html.ios-device .message-input-container{padding-bottom:calc(0.625rem+env(safe-area-inset-bottom,0px))}html.ios-device .modal{max-height:calc(100dvh - 2rem - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}html.ios-device .modal-overlay{padding-top:calc(1rem+env(safe-area-inset-top,0px));padding-bottom:calc(1rem+env(safe-area-inset-bottom,0px))}@media (max-width:767px){html.ios-device .chat-sidebar{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);height:100dvh}}html.ios-device .auth-container{min-height:100dvh;padding-top:calc(1.5rem+env(safe-area-inset-top,0px));padding-bottom:calc(1.5rem+env(safe-area-inset-bottom,0px))}html.ios-device body.auth-page{min-height:100dvh}html.ios-device #notifications{top:calc(1rem+env(safe-area-inset-top,0px))}html.ios-device .media-viewer-image{max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 2rem)}html.ios-device .media-viewer-video{max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 2rem)}html.ios-device .voice-recording-overlay{padding-bottom:calc(2rem+env(safe-area-inset-bottom,0px))}html.ios-device #install-btn{bottom:calc(1.5rem+env(safe-area-inset-bottom,0px))}html.ios-device .settings-modal{max-height:calc(100dvh - 1.5rem - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}@media (max-width:375px){html.ios-device .rooms-header-icons .btn-icon{min-width:36px;min-height:36px;width:36px;height:36px;padding:0.25rem}html.ios-device .rooms-header-icons .btn-icon svg{width:18px;height:18px}html.ios-device .rooms-header h1{font-size:1.25rem}}@media (display-mode:standalone){html.ios-device .rooms-container{padding-top:max(3.75rem,calc(1.5rem+env(safe-area-inset-top,0px)))}html.ios-device .chat-container{padding-top:max(2.5rem,env(safe-area-inset-top,0px))}}