*{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0e1621;--panel: #17212b;--panel-hover: #202b36;--panel-active: #2b5278;--field: #242f3d;--border: #101921;--text: #ffffff;--text-secondary: #7f91a4;--text-tertiary: #5d7285;--accent: #3390ec;--accent-hover: #2f86dd;--bubble-in: #182533;--bubble-out: #2b5278;--link: #6ab3f3;--green: #4dcd5e;--danger: #ec3942;--shadow: 0 4px 16px rgba(0, 0, 0, .4)}html,body,#root{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.45;overflow:hidden;-webkit-font-smoothing:antialiased}.boot-screen{height:100%;display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:600;color:var(--text-secondary)}.app{display:flex;height:100%}.auth-page{height:100%;display:flex;align-items:center;justify-content:center;background:radial-gradient(1200px 800px at 20% 10%,#16283c 0%,var(--bg) 60%)}.auth-card{width:400px;max-width:calc(100vw - 32px);background:var(--panel);border-radius:16px;padding:44px 40px 28px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:14px;align-items:center}.auth-logo{width:120px;height:120px;border-radius:50%;background:linear-gradient(180deg,#3ca7ee,#2a83dc);display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px #2a83dc59}.auth-title{font-size:30px;font-weight:600;margin-top:6px}.auth-sub{color:var(--text-secondary);margin-bottom:10px}.field{width:100%}.field input{width:100%;background:var(--field);border:2px solid transparent;border-radius:10px;color:var(--text);padding:14px 16px;font-size:15px;outline:none;transition:border-color .15s}.field input:focus{border-color:var(--accent)}.auth-error{color:#ff8a8a;background:#ec39421f;border-radius:8px;padding:8px 12px;width:100%;font-size:14px;text-align:center}.btn-primary{width:100%;background:var(--accent);color:#fff;border:none;border-radius:10px;padding:14px;font-size:15px;font-weight:600;cursor:pointer;transition:background .15s}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-primary:disabled{opacity:.5;cursor:default}.btn-secondary{background:var(--field);color:var(--accent);border:none;border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;cursor:pointer}.btn-secondary:hover{background:var(--panel-hover)}.auth-switch{background:none;border:none;color:var(--text-secondary);font-size:14px;cursor:pointer;padding:4px}.auth-switch:hover{color:var(--accent)}.sidebar{width:420px;min-width:300px;max-width:420px;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;position:relative}.sidebar-header{display:flex;align-items:center;gap:10px;padding:8px 10px}.search-box{flex:1;display:flex;align-items:center;gap:8px;background:var(--field);border-radius:22px;padding:0 14px;height:42px;color:var(--text-tertiary)}.search-box input{flex:1;background:none;border:none;outline:none;color:var(--text);font-size:15px}.search-box input::placeholder{color:var(--text-tertiary)}.icon-btn{background:none;border:none;color:var(--text-secondary);width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}.icon-btn:hover:not(:disabled){background:var(--panel-hover);color:var(--text)}.icon-btn:disabled{opacity:.4;cursor:default}.chat-list{flex:1;overflow-y:auto;padding:0 8px 8px}.chat-list-empty{text-align:center;color:var(--text-tertiary);padding:40px 20px;white-space:pre-line;font-size:14px}.chat-row{display:flex;gap:10px;padding:8px 10px;border-radius:10px;cursor:pointer;align-items:center}.chat-row:hover{background:var(--panel-hover)}.chat-row.active{background:var(--panel-active)}.chat-row.active .chat-row-preview,.chat-row.active .chat-row-time{color:#fffc}.avatar{width:54px;height:54px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:19px;color:#fff;flex-shrink:0;letter-spacing:.5px;text-shadow:0 1px 2px rgba(0,0,0,.2)}.avatar-sm,.avatar-header{width:42px;height:42px;font-size:16px}.avatar-lg{width:72px;height:72px;font-size:26px}.chat-row-body{flex:1;min-width:0}.chat-row-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.chat-row-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-row-time{font-size:12px;color:var(--text-tertiary);flex-shrink:0}.chat-row-bottom{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:2px}.chat-row-preview{color:var(--text-secondary);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-row-preview.typing{color:var(--green)}.unread-badge{background:var(--accent);color:#fff;font-size:12px;font-weight:600;border-radius:12px;min-width:22px;height:22px;padding:0 7px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.fab{position:absolute;right:20px;bottom:20px;width:54px;height:54px;border-radius:50%;border:none;background:var(--accent);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #00000073;transition:background .15s,transform .1s}.fab:hover{background:var(--accent-hover)}.fab:active{transform:scale(.94)}.chat-area{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--bg)}.chat-area.empty{display:flex}.empty-state{margin:auto;text-align:center;color:var(--text-secondary)}.empty-logo{margin-bottom:20px;opacity:.9}.empty-state h2{font-weight:500;margin-bottom:8px}.chat-header{height:56px;background:var(--panel);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 10px 0 14px;flex-shrink:0}.chat-header-info{display:flex;align-items:center;gap:10px;cursor:pointer;min-width:0;border-radius:8px;padding:4px 8px 4px 0}.chat-header-info:hover{background:#ffffff0a}.chat-header-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-header-sub{font-size:13px;color:var(--text-secondary)}.chat-header-sub.typing{color:var(--green)}.chat-header-actions{display:flex;gap:2px;align-items:center}.back-btn{display:none}.message-list{flex:1;overflow-y:auto;padding:12px 8%;display:flex;flex-direction:column;gap:2px}.day-separator{align-self:center;background:#00000040;color:var(--text-secondary);font-size:13px;font-weight:500;border-radius:13px;padding:3px 10px;margin:12px 0 8px}.chat-beginning{text-align:center;color:var(--text-tertiary);font-size:13px;padding:16px 0 8px}.history-loading{text-align:center;color:var(--text-tertiary);font-size:13px;padding:8px}.msg-row{display:flex;margin-top:6px}.msg-row.grouped{margin-top:1px}.msg-row.mine{justify-content:flex-end}.msg-row.theirs{justify-content:flex-start}.bubble{position:relative;max-width:min(480px,82%);border-radius:12px;padding:6px 9px 7px;font-size:15px;word-wrap:break-word}.msg-row.theirs .bubble{background:var(--bubble-in)}.msg-row:not(.grouped) .bubble{border-radius:12px}.msg-row:not(.grouped).theirs .bubble{border-bottom-left-radius:4px}.msg-row:not(.grouped).mine .bubble{border-bottom-right-radius:4px}.msg-row.mine .bubble{background:var(--bubble-out)}.bubble-sender{font-weight:600;color:var(--link);font-size:14px;margin-bottom:2px}.bubble-text a{color:var(--link)}.bubble-caption{padding:4px 2px 2px;font-size:14px}.bubble-media{padding:3px}.bubble-image{display:block;max-width:100%;max-height:420px;width:auto;border-radius:10px;cursor:zoom-in;object-fit:cover;background:#0003;min-width:160px;min-height:80px}.bubble-video{display:block;max-width:100%;max-height:420px;border-radius:10px;background:#000}.bubble.media .bubble-meta{position:absolute;right:10px;bottom:9px;background:#00000080;border-radius:12px;padding:1px 8px;color:#fff;display:flex;align-items:center;gap:4px;font-size:12px}.bubble-meta{float:right;margin:10px -3px -4px 10px;color:#ffffff8c;font-size:12px;display:inline-flex;align-items:center;gap:4px;-webkit-user-select:none;user-select:none}.bubble-media .bubble-meta{float:none;margin:0}.ticks{color:#fff9}.ticks.read{color:#62b0f5}.system-msg{align-self:center;text-align:center;background:#00000040;color:var(--text-secondary);border-radius:13px;padding:3px 12px;font-size:13px;margin:8px 0}.doc-bubble{display:flex;align-items:center;gap:10px;padding:4px 2px;min-width:220px;color:var(--text);text-decoration:none}.doc-bubble:hover .doc-name{color:var(--link)}.doc-icon{width:44px;height:44px;border-radius:50%;background:#ffffff1f;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}.doc-meta{display:flex;flex-direction:column;min-width:0}.doc-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}.doc-size{font-size:13px;color:#ffffff8c}.doc-download{margin-left:auto;color:#fff9}.voice-bubble{display:flex;align-items:center;gap:10px;min-width:220px;padding:4px 2px}.voice-play{width:40px;height:40px;border-radius:50%;border:none;background:#ffffff1f;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0}.voice-play:hover{background:#ffffff38}.waveform{display:flex;align-items:center;gap:2px;height:28px;flex:1}.waveform span{width:2.5px;border-radius:2px;background:#ffffff73;min-height:4px}.waveform span.played{background:#fff}.voice-duration{font-size:13px;color:#fff9;flex-shrink:0}.composer{background:var(--panel);border-top:1px solid var(--border);display:flex;align-items:flex-end;gap:6px;padding:9px 12px;flex-shrink:0}.composer-input{flex:1;display:flex;align-items:flex-end;background:var(--field);border-radius:18px;padding:0 6px 0 16px;min-height:48px;transition:border-radius .15s}.composer-input:focus-within{border-radius:14px}.composer-input textarea{flex:1;background:none;border:none;outline:none;color:var(--text);font:inherit;resize:none;max-height:160px;padding:14px 0;line-height:1.4}.composer-input textarea::placeholder{color:var(--text-tertiary)}.emoji-btn{margin-bottom:2px}.send-btn{color:var(--accent)}.send-btn:hover:not(:disabled){background:#3390ec1f;color:var(--accent)}.recording-bar{flex:1;display:flex;align-items:center;gap:14px;min-height:48px;padding:0 8px}.recording-cancel{background:none;border:none;color:var(--danger);cursor:pointer}.recording-dot{width:10px;height:10px;border-radius:50%;background:var(--danger);animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.25}}.recording-time{color:var(--text-secondary);font-size:14px;white-space:nowrap}.waveform-static{flex:1;display:flex;align-items:center;gap:2.5px;overflow:hidden;justify-content:center}.waveform-static span{width:2.5px;border-radius:2px;background:var(--accent);opacity:.7;animation:pulse 1.2s infinite}.recording-send{background:none;border:none;color:var(--accent);cursor:pointer}.menu-anchor{position:relative}.dropdown{position:absolute;top:calc(100% + 4px);right:0;background:#232e3c;border-radius:10px;box-shadow:var(--shadow);padding:6px;min-width:170px;z-index:30}.dropdown button{display:block;width:100%;text-align:left;background:none;border:none;color:var(--text);font:inherit;padding:9px 12px;border-radius:7px;cursor:pointer;white-space:nowrap}.dropdown button:hover{background:var(--panel-active)}.attach-menu{bottom:calc(100% + 6px);top:auto}.modal-overlay{position:fixed;inset:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--panel);border-radius:14px;width:440px;max-width:calc(100vw - 32px);max-height:80vh;overflow-y:auto;padding:18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px}.modal-tabs{display:flex;gap:6px;background:var(--field);border-radius:10px;padding:4px}.modal-tabs button{flex:1;background:none;border:none;color:var(--text-secondary);font:inherit;font-weight:600;padding:9px;border-radius:8px;cursor:pointer}.modal-tabs button.active{background:var(--accent);color:#fff}.modal-input,.modal-search input{width:100%;background:var(--field);border:2px solid transparent;border-radius:10px;color:var(--text);padding:12px 14px;font-size:15px;outline:none}.modal-input:focus,.modal-search input:focus{border-color:var(--accent)}.modal-list{display:flex;flex-direction:column;gap:2px;min-height:80px;max-height:320px;overflow-y:auto}.modal-empty{color:var(--text-tertiary);text-align:center;padding:24px;font-size:14px}.user-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:10px;cursor:pointer}.user-row:hover{background:var(--panel-hover)}.user-row-body{flex:1;min-width:0}.user-row-name{font-weight:500}.user-row-username{font-size:13px;color:var(--text-secondary)}.bot-tag{background:var(--accent);color:#fff;font-size:10px;font-weight:700;border-radius:4px;padding:1px 5px;margin-left:4px;vertical-align:2px}.checkbox{width:22px;height:22px;border:2px solid var(--text-secondary);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;flex-shrink:0}.selected-users{display:flex;flex-wrap:wrap;gap:6px}.selected-chip{background:var(--field);border-radius:14px;padding:5px 12px;font-size:13px;cursor:pointer;color:var(--accent)}.kick-btn{background:none;border:1px solid rgba(236,57,66,.5);color:var(--danger);border-radius:7px;padding:5px 12px;font-size:13px;cursor:pointer}.kick-btn:hover{background:#ec394226}.chat-info-head{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0 4px}.chat-info-head h3{margin-top:8px}.chat-info-head p{color:var(--text-secondary);font-size:14px}.chat-info-members{display:flex;flex-direction:column;gap:2px;max-height:300px;overflow-y:auto}.lightbox{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:200}.lightbox img{max-width:92vw;max-height:90vh;border-radius:6px}.lightbox-close{position:absolute;top:16px;right:20px;background:none;border:none;cursor:pointer;opacity:.8}.lightbox-close:hover{opacity:1}.lightbox-download{position:absolute;bottom:24px;left:50%;transform:translate(-50%);background:#ffffff26;border:none;color:#fff;border-radius:18px;padding:10px 22px;font-size:14px;font-weight:600;cursor:pointer;text-decoration:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.lightbox-download:hover{background:#ffffff40}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:#ffffff29;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#ffffff47}@media(max-width:900px){.sidebar{width:100%;max-width:none}.chat-area{display:none}.chat-area.open{display:flex;position:fixed;inset:0;z-index:50}.back-btn{display:flex}.message-list{padding:12px 4%}.bubble{max-width:88%}}.inline-keyboard{display:flex;flex-direction:column;gap:4px;margin-top:6px;padding-top:6px;border-top:1px solid rgba(255,255,255,.12)}.ik-row{display:flex;gap:4px}.ik-btn{flex:1;background:#ffffff14;border:none;border-radius:8px;color:var(--link);font:inherit;font-size:14px;font-weight:500;padding:8px 10px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .12s}.ik-btn:hover:not(:disabled){background:#ffffff29}.ik-btn.pressed{color:var(--green);background:#4dcd5e14}.call-ring-overlay{position:fixed;inset:0;z-index:300;background:#0e1621eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center}.call-ring-card{display:flex;flex-direction:column;align-items:center;gap:10px;animation:ring-in .25s ease-out}@keyframes ring-in{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.call-ring-name{font-size:24px;font-weight:600;margin-top:10px}.call-ring-sub{color:var(--text-secondary)}.call-ring-actions{display:flex;gap:40px;margin-top:24px}.call-btn{width:64px;height:64px;border-radius:50%;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 6px 18px #00000073;animation:ring-pulse 1.6s infinite}.call-btn.accept{background:#2ecc71}.call-btn.decline{background:#e74c3c}.call-btn:disabled{opacity:.5;cursor:default}@keyframes ring-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}.call-overlay{position:fixed;inset:0;z-index:310;background:#0b131c;display:flex;flex-direction:column}.call-stage{flex:1;position:relative;overflow:hidden}.call-remote-video{width:100%;height:100%;object-fit:contain;background:#000}.call-stage.audio-only .call-remote-video{display:none}.call-audio-avatar{position:absolute;top:50%;left:50%;transform:translate(-50%,-60%);width:110px;height:110px;font-size:40px;box-shadow:0 10px 40px #00000080}.call-local-video{position:absolute;right:16px;top:16px;width:180px;border-radius:12px;background:#000;box-shadow:var(--shadow)}.call-stage.audio-only .call-local-video{display:none}.call-status{display:flex;align-items:center;justify-content:center;gap:12px;padding:14px;color:var(--text-secondary)}.call-peer{color:var(--text);font-weight:600;font-size:17px}.call-err{color:#ffb59a;font-size:13px}.call-controls{display:flex;justify-content:center;gap:18px;padding:10px 0 28px}.call-ctl{width:54px;height:54px;border-radius:50%;border:none;background:#ffffff1f;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.call-ctl:hover{background:#ffffff38}.call-ctl.off{background:#ffffff59}.call-ctl.hangup{background:#e74c3c}.call-ctl.hangup:hover{background:#d62c1a}
