:root{--bg-app: #0e1621;--bg-sidebar: #17212b;--bg-chat: #0e1621;--bg-chat-pattern: #101a24;--bg-input: #242f3d;--bg-hover: #202b36;--bg-active: #2b3945;--bubble-mine: #2b5278;--bubble-theirs: #182533;--text: #f5f5f5;--text-secondary: #7d8b99;--text-time: #6ba3d0;--accent: #3390ec;--accent-hover: #2b7fd4;--online: #4fae4e;--danger: #e53935;--border: rgba(255, 255, 255, .06);--radius: 12px;--radius-bubble: 10px;--shadow: 0 1px 2px rgba(0, 0, 0, .2);--msg-gap-same: .1rem;--msg-gap-new-sender: .55rem;scrollbar-width:thin;scrollbar-color:rgba(109,139,165,.42) transparent}*{box-sizing:border-box;margin:0;padding:0}*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:#6d8ba552;border-radius:999px;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:#6d8ba585;background-clip:padding-box}*::-webkit-scrollbar-thumb:active{background:#6ab7ff8c;background-clip:padding-box}*::-webkit-scrollbar-corner{background:transparent}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;background:var(--bg-app);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased}button{font-family:inherit}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;min-height:100vh;color:var(--text-secondary)}.loading-logo{animation:logo-pulse 2.2s ease-in-out infinite;border-radius:50%}.loading-name{font-size:1.25rem;font-weight:600;color:var(--text);letter-spacing:-.02em}@keyframes logo-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(.97)}}.dolphy-logo{display:block;flex-shrink:0;object-fit:contain;border-radius:50%}.dolphy-brand{display:flex;align-items:center;gap:.5rem}.dolphy-brand-name,.brand-name{font-size:1.15rem;font-weight:600;letter-spacing:-.02em}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1.5rem;background:radial-gradient(ellipse at top,#1a2a3a 0%,var(--bg-app) 60%)}.auth-card{width:100%;max-width:380px;padding:2rem 1.75rem}.auth-brand{text-align:center;margin-bottom:2rem}.auth-logo{margin:0 auto .75rem}.auth-brand h1,.brand-name{font-size:1.75rem;font-weight:600;letter-spacing:-.02em}.subtitle{color:var(--text-secondary);font-size:.95rem;margin-top:.35rem}.auth-hint,.unlock-hint{margin:-.75rem 0 1rem;font-size:.82rem;line-height:1.45;color:var(--text-secondary)}.unlock-overlay{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1.5rem;background:radial-gradient(ellipse at top,#1a2a3a 0%,var(--bg-app) 60%)}.unlock-card{width:100%;max-width:400px;padding:2rem 1.75rem}.unlock-card form{display:flex;flex-direction:column;gap:.85rem}.unlock-card label{display:flex;flex-direction:column;gap:.4rem;font-size:.8rem;color:var(--text-secondary)}.unlock-card input{padding:.7rem .85rem;border:none;border-radius:var(--radius);background:var(--bg-input);color:var(--text);font-size:1rem}.unlock-logout{margin-top:1rem;width:100%;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:.9rem}.unlock-logout:hover{color:var(--text)}.auth-card form{display:flex;flex-direction:column;gap:.85rem}.auth-card label{display:flex;flex-direction:column;gap:.4rem;font-size:.8rem;color:var(--text-secondary)}.auth-card input{padding:.7rem .85rem;border:none;border-radius:var(--radius);background:var(--bg-input);color:var(--text);font-size:1rem}.auth-card input:focus{outline:2px solid var(--accent);outline-offset:0}.btn-primary-full{padding:.75rem;background:var(--accent);color:#fff;border:none;border-radius:var(--radius);font-size:1rem;font-weight:500;cursor:pointer;margin-top:.5rem;transition:background .15s}.btn-primary-full:hover:not(:disabled){background:var(--accent-hover)}.btn-primary-full:disabled{opacity:.55;cursor:not-allowed}.btn-secondary-full{padding:.75rem;background:transparent;color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius);font-size:.95rem;font-weight:500;cursor:pointer;width:100%;transition:background .15s,color .15s}.btn-secondary-full:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.btn-secondary-full:disabled{opacity:.55;cursor:not-allowed}.auth-link{margin-top:1.5rem;text-align:center;font-size:.9rem;color:var(--text-secondary)}.auth-link a{color:var(--accent);text-decoration:none}.auth-link a:hover{text-decoration:underline}.error{background:#e539351f;color:#ff8a80;padding:.65rem .85rem;border-radius:var(--radius);margin-bottom:.5rem;font-size:.9rem}.app-layout{position:relative;display:flex;height:100vh;overflow:hidden}.account-switcher{display:flex;flex-direction:column;gap:.15rem;padding:.5rem .5rem .75rem;border-bottom:1px solid var(--border)}.account-switcher-item{display:flex;align-items:center;gap:.65rem;width:100%;padding:.55rem .65rem;border:none;border-radius:10px;background:transparent;color:var(--text);cursor:pointer;text-align:left;font-size:.92rem}.account-switcher-item:hover{background:var(--bg-hover)}.account-switcher-item.active .account-switcher-avatar-wrap{border-color:var(--accent)}.account-switcher-avatar-wrap{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:2px solid transparent;box-sizing:border-box}.account-switcher-avatar.user-avatar-wrap{width:36px;height:36px}.account-switcher-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-switcher-badge{flex-shrink:0;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--accent);color:#fff;font-size:.72rem;font-weight:600;line-height:22px;text-align:center}.account-switcher-add{color:var(--accent)}.account-switcher-add-icon{width:36px;height:36px;border-radius:50%;background:#3390ec26;display:flex;align-items:center;justify-content:center;font-size:1.35rem;line-height:1;flex-shrink:0}.sidebar{width:340px;min-width:280px;background:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column}.sidebar-top{display:flex;align-items:center;gap:.65rem;padding:.5rem .75rem;flex-shrink:0}.sidebar-avatar-btn{width:40px;height:40px;padding:0;border:none;border-radius:50%;background:transparent;cursor:pointer;flex-shrink:0;overflow:hidden;transition:opacity .15s,transform .1s}.sidebar-avatar-btn .user-avatar-wrap{width:40px;height:40px}.sidebar-avatar-btn:hover{opacity:.9}.sidebar-avatar-btn:active{transform:scale(.96)}.sidebar-search{flex:1;min-width:0;padding:.55rem .85rem;border:none;border-radius:20px;background:var(--bg-input);color:var(--text);font-size:.9rem}.sidebar-search:focus{outline:none;box-shadow:0 0 0 2px #3390ec59}.sidebar-search::placeholder{color:var(--text-secondary)}.sidebar-content{flex:1;overflow-y:auto}.sidebar-hint{padding:1.25rem 1rem;text-align:center;color:var(--text-secondary);font-size:.85rem}.drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#00000073;animation:fade-in .2s ease}.profile-drawer{width:min(300px,85vw);height:100%;background:var(--bg-sidebar);display:flex;flex-direction:column;box-shadow:4px 0 24px #00000059;animation:slide-in .22s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-in{0%{transform:translate(-100%)}to{transform:translate(0)}}.drawer-header{display:flex;justify-content:flex-end;padding:.75rem .75rem 0}.drawer-close{width:36px;height:36px;border:none;border-radius:50%;background:transparent;color:var(--text-secondary);font-size:1rem;cursor:pointer}.drawer-close:hover{background:var(--bg-hover);color:var(--text)}.drawer-profile{display:flex;align-items:center;gap:.85rem;width:100%;padding:.25rem 1.25rem 1rem;border:none;border-bottom:1px solid var(--border);background:transparent;color:inherit;text-align:left;cursor:pointer}.drawer-profile:hover{background:var(--bg-hover)}.drawer-avatar.user-avatar-wrap{width:56px;height:56px;font-size:1.35rem}.drawer-avatar .user-avatar{background:linear-gradient(135deg,#3390ec,#2b5278)}.drawer-avatar .user-avatar-letter{color:#fff}.drawer-profile-info{display:flex;flex-direction:column;gap:.15rem;min-width:0}.drawer-profile-info strong{font-size:1.05rem}.drawer-profile-info span{font-size:.85rem;color:var(--text-secondary)}.drawer-menu{flex:1;padding:.5rem 0}.drawer-item{display:flex;align-items:center;gap:.85rem;width:100%;padding:.75rem 1.25rem;border:none;background:transparent;color:var(--text);font-size:.95rem;cursor:pointer;text-align:left}.drawer-item:hover{background:var(--bg-hover)}.drawer-item-icon{width:28px;text-align:center;color:var(--text-secondary);font-size:1.1rem}.drawer-item-danger,.drawer-item-danger .drawer-item-icon{color:#ff8a80}.drawer-item-badge{margin-left:auto;min-width:1.25rem;height:1.25rem;padding:0 .35rem;border-radius:999px;background:var(--accent);color:#fff;font-size:.72rem;font-weight:600;line-height:1.25rem;text-align:center}.drawer-footer{display:flex;align-items:center;gap:.5rem;padding:1rem 1.25rem;border-top:1px solid var(--border);color:var(--text-secondary);font-size:.85rem}.drawer-notifications-title{padding:.35rem .65rem .15rem;font-size:.78rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary)}.drawer-push-row+.drawer-push-row{margin-top:.15rem}.drawer-push-loading{padding:.65rem;font-size:.85rem;color:var(--text-secondary)}.drawer-telegram-connect{display:block;width:calc(100% - 1.3rem);margin:0 .65rem .35rem;padding:.55rem .75rem;border:none;border-radius:10px;background:#2a7fff24;color:var(--accent);font-size:.88rem;font-weight:600;cursor:pointer;text-align:center}.drawer-telegram-connect:hover:not(:disabled){background:#2a7fff38}.drawer-telegram-connect:disabled{opacity:.55;cursor:default}.drawer-push-error-block{margin:.35rem .65rem .5rem;font-size:.78rem;line-height:1.35;color:#ff8a80}.drawer-push-retry{display:block;margin-top:.35rem;padding:0;border:none;background:none;color:var(--accent);font-size:inherit;font-weight:600;cursor:pointer}.drawer-push-settings{padding:.35rem .75rem .65rem;border-bottom:1px solid var(--border)}.drawer-push-header{display:flex;align-items:flex-start;gap:.65rem;padding:.55rem .65rem;border-radius:10px}.drawer-push-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}.drawer-push-text strong{font-size:.92rem;font-weight:600}.drawer-push-hint,.drawer-push-error{font-size:.78rem;line-height:1.35}.drawer-push-hint{color:var(--text-secondary)}.drawer-push-error{color:#ff8a80}.drawer-push-toggle{flex-shrink:0;width:46px;height:28px;border:none;border-radius:999px;background:var(--bg-input);padding:3px;cursor:pointer;transition:background .15s}.drawer-push-toggle.on{background:var(--accent)}.drawer-push-toggle:disabled{opacity:.55;cursor:default}.drawer-push-toggle-knob{display:block;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .15s}.drawer-push-toggle.on .drawer-push-toggle-knob{transform:translate(18px)}.chat-list{list-style:none}.chat-list-item{display:flex;align-items:center;gap:.75rem;padding:.65rem 1rem;cursor:pointer;transition:background .12s}.chat-list-item:hover{background:var(--bg-hover)}.chat-list-item.active{background:var(--bg-active)}.chat-list-item.unread .chat-item-name{font-weight:600}.chat-item-body{flex:1;min-width:0}.chat-item-top,.chat-item-bottom{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.chat-item-bottom{margin-top:.15rem}.chat-item-name{font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-item-time{font-size:.72rem;color:var(--text-secondary);flex-shrink:0}.chat-list-item.unread .chat-item-time{color:var(--accent)}.chat-item-presence{font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-list-empty{padding:2rem 1.5rem;text-align:center;color:var(--text-secondary)}.chat-list-empty p{font-size:.95rem;margin-bottom:.35rem}.chat-list-empty span{font-size:.82rem}.unread-badge{background:var(--accent);color:#fff;font-size:.7rem;font-weight:600;min-width:1.2rem;height:1.2rem;padding:0 .35rem;border-radius:999px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.user-avatar-wrap{position:relative;flex-shrink:0;display:inline-flex}.user-avatar{width:100%;height:100%;border-radius:50%;background:linear-gradient(135deg,#3a4f63,#2b3945);display:flex;align-items:center;justify-content:center;overflow:hidden}.user-avatar-img{width:100%;height:100%;object-fit:cover;display:block}.user-avatar-letter{font-weight:600;color:#a8c6e0;line-height:1}.user-avatar-wrap.avatar-sm{width:36px;height:36px;font-size:.9rem}.user-avatar-wrap.avatar-md{width:48px;height:48px;font-size:1.1rem}.user-avatar-wrap.avatar-lg{width:72px;height:72px;font-size:1.5rem}.user-avatar-wrap.avatar-xl{width:112px;height:112px;font-size:2.5rem}.chat-item-avatar.user-avatar-wrap,.chat-header-avatar.user-avatar-wrap{width:48px;height:48px}.chat-header-avatar.user-avatar-wrap{width:42px;height:42px;font-size:1rem}.chat-item-avatar.saved-avatar,.chat-header-avatar.saved-avatar{position:relative;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:1.1rem}.chat-header-avatar.saved-avatar{width:42px;height:42px;font-size:1rem}.avatar-online-dot{position:absolute;bottom:0;right:0;z-index:2;width:12px;height:12px;border-radius:50%;background:var(--online);border:2px solid var(--bg-sidebar);box-sizing:border-box;pointer-events:none}.chat-header-avatar .avatar-online-dot,.chat-item-avatar .avatar-online-dot{border-color:var(--bg-sidebar)}.user-avatar-wrap.avatar-xl .avatar-online-dot{width:16px;height:16px;border-width:3px;border-color:var(--bg-chat)}.user-presence{display:inline-flex;align-items:center;gap:.3rem;font-size:.8rem}.user-presence.online{color:var(--online)}.user-presence.offline{color:var(--text-secondary)}.presence-dot{width:7px;height:7px;border-radius:50%;background:var(--online)}.chat-header-presence,.profile-presence,.search-presence{font-size:.8rem}.search-results{list-style:none;padding:0 .25rem}.search-item{display:flex;align-items:center;gap:.5rem;padding:.35rem 0;border-bottom:1px solid var(--border)}.search-item-main{flex:1;display:flex;align-items:center;gap:.65rem;padding:.5rem .25rem;border:none;background:transparent;color:inherit;cursor:pointer;text-align:left;border-radius:8px;min-width:0}.search-item-main:hover{background:var(--bg-hover)}.search-item-info{display:flex;flex-direction:column;gap:.1rem;min-width:0}.search-item-info strong{font-size:.92rem}.search-item-info>span{font-size:.78rem;color:var(--text-secondary)}.search-write-btn{padding:.4rem .7rem;border:none;border-radius:8px;background:var(--accent);color:#fff;font-size:.78rem;font-weight:500;cursor:pointer;flex-shrink:0}.search-write-btn:hover{background:var(--accent-hover)}.chat-area{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;background:var(--bg-chat);min-width:0;overflow:hidden}.empty-chat{flex:1;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 20% 30%,rgba(51,144,236,.04) 0%,transparent 50%),radial-gradient(circle at 80% 70%,rgba(43,82,120,.06) 0%,transparent 50%),var(--bg-chat-pattern)}.empty-chat-inner{text-align:center;color:var(--text-secondary)}.empty-logo{margin:0 auto .75rem;opacity:.9}.empty-chat-inner h2{color:var(--text);font-size:1.5rem;font-weight:600;margin-bottom:.35rem}.empty-chat-inner p{font-size:.95rem}.chat-window{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.chat-header{display:flex;align-items:center;gap:.35rem;padding:.6rem 1rem;background:var(--bg-sidebar);border-bottom:1px solid var(--border);flex-shrink:0}.chat-back-btn{display:none;flex-shrink:0;width:40px;height:40px;margin-left:-.35rem;border:none;border-radius:50%;background:transparent;color:var(--accent);cursor:pointer;align-items:center;justify-content:center}.chat-back-btn:hover{background:var(--bg-hover)}.chat-header-user{display:flex;align-items:center;gap:.75rem;min-width:0;flex:1}.chat-header-info strong{display:block;font-size:.95rem;font-weight:600}.chat-header-name-btn{display:block;padding:0;border:none;background:none;color:var(--text);font:inherit;font-size:.95rem;font-weight:600;cursor:pointer;text-align:left}.chat-header-name-btn:hover{color:var(--accent)}.saved-avatar{background:linear-gradient(135deg,#f5a623,#e8912d);color:#fff;font-size:1.1rem}.saved-hint{color:var(--text-muted);font-size:.8rem}.mention-link{display:inline;padding:0;border:none;background:none;color:var(--accent);font:inherit;cursor:pointer;text-decoration:none}.mention-link:hover{text-decoration:underline}.chat-list-item.saved .chat-item-name{font-weight:600}.messages{--messages-padding-x: 1.1rem;flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:.75rem var(--messages-padding-x) 1rem;background:radial-gradient(circle at 10% 20%,rgba(51,144,236,.03) 0%,transparent 40%),radial-gradient(circle at 90% 80%,rgba(43,82,120,.04) 0%,transparent 40%),var(--bg-chat-pattern)}.messages-inner{min-height:100%;display:flex;flex-direction:column;justify-content:flex-end}.messages-focus-target button,.messages-focus-target .mention-link{cursor:pointer}.message-focus-wrap{position:relative;width:100%;align-self:stretch}.message-focus-wrap:before{content:"";position:absolute;top:0;bottom:0;left:calc(-1 * var(--messages-padding-x));right:calc(-1 * var(--messages-padding-x));background:#3390ec29;opacity:0;pointer-events:none;z-index:0}.message-focus-wrap.is-flashing:before{animation:message-focus-flash 2.4s ease-out forwards}@keyframes message-focus-flash{0%{opacity:0}10%{opacity:1}30%{opacity:1}to{opacity:0}}.message-focus-wrap .message-row{position:relative;z-index:1}.message-row{display:flex;align-items:flex-end;gap:.45rem;max-width:88%;align-self:flex-start;overflow:visible}.message-focus-wrap:not(:first-child):not(.group-start):not(.group-single){margin-top:var(--msg-gap-same)}.message-focus-wrap.group-start:not(:first-child),.message-focus-wrap.group-single:not(:first-child){margin-top:var(--msg-gap-new-sender)}.message-avatar-slot{width:36px;min-height:36px;flex-shrink:0;display:flex;align-items:flex-end;justify-content:center}.message-avatar-btn{padding:0;border:none;background:none;cursor:pointer;border-radius:50%;line-height:0}.message-avatar-btn:disabled{cursor:default}.message-avatar-btn:not(:disabled):hover{opacity:.85}.message-bubble{position:relative;display:inline-block;vertical-align:bottom;padding:.38rem .65rem .38rem .7rem;border-radius:12px;max-width:100%;min-width:0;overflow:visible}.message-row.mine .message-bubble{--bubble-bg: var(--bubble-mine);background:var(--bubble-bg)}.message-row.theirs .message-bubble{--bubble-bg: var(--bubble-theirs);background:var(--bubble-bg)}.message-row.group-single .message-bubble,.message-row.group-start:not(.group-end) .message-bubble{border-radius:12px 12px 12px 6px}.message-row.group-middle .message-bubble{border-radius:6px 12px 12px 6px}.message-row.group-end:not(.group-single) .message-bubble{border-radius:6px 12px 12px 0}.message-row.group-end .message-bubble,.message-row.group-single .message-bubble{border-bottom-left-radius:0}.bubble-tail{position:absolute;left:-9px;bottom:0;width:9px;height:20px;pointer-events:none;z-index:0;flex-shrink:0}.message-text-wrap{display:inline-grid;grid-template-columns:minmax(0,max-content);max-width:100%}.message-text{grid-column:1;grid-row:1;font-size:.95rem;line-height:1.35;word-break:break-word;white-space:pre-wrap;user-select:text;-webkit-user-select:text;cursor:text}.message-text-wrap .message-text:after{content:"";display:inline-block;width:var(--msg-meta-width, 3.4rem);height:0;vertical-align:bottom}.message-row.failed .message-text{color:#ff8a80;font-style:italic}.message-text-wrap .message-footer{grid-column:1;grid-row:1;justify-self:end;align-self:end;float:none;clear:none;margin:0}.message-footer{display:inline-flex;align-items:flex-end;gap:.2rem;flex-shrink:0;line-height:1;-webkit-user-select:none;user-select:none}.message-row.mine .message-text-wrap{--msg-meta-width: 3.75rem}.message-row.has-attachment .message-footer,.message-bubble>.message-footer{float:right;clear:right;margin-left:.45rem;align-items:center}.message-footer .time{font-size:.68rem;color:var(--text-time);opacity:.85;white-space:nowrap}.message-row.theirs .message-footer .time{color:var(--text-secondary)}.msg-status{display:inline-flex;align-items:center;line-height:1;flex-shrink:0}.msg-status.pending{color:var(--text-time);opacity:.75}.msg-status-clock,.msg-status-icon{display:block}.msg-status.sent{color:var(--text-secondary);opacity:.85}.msg-status.sent .msg-status-icon{width:14px;height:10px}.msg-status.read{color:#6ab7ff}.msg-status.read .msg-status-icon-double{width:20px;height:10px}.message-row.has-attachment .message-bubble{padding:.35rem;min-width:180px}.message-row.has-photo .message-bubble{display:block;padding:0;min-width:160px}.message-row.has-photo .message-footer{position:absolute;right:.35rem;bottom:.3rem;z-index:2;float:none;clear:none;margin:0;padding:.12rem .38rem;border-radius:8px;background:#0000007a;top:auto;transform:none}.message-row.has-photo.mine .message-footer .time{color:#ffffffeb}.message-row.has-photo.mine .msg-status.sent{color:#ffffffd9}.message-row.has-photo.mine .msg-status.read{color:#6ab7ff}.message-row.has-photo.theirs .message-footer .time{color:#ffffffe0}.photo-attachment{display:block;min-width:160px;max-width:280px;line-height:0}.photo-attachment-btn{display:block;padding:0;border:none;background:none;cursor:pointer;border-radius:8px;overflow:hidden;line-height:0}.photo-attachment-img{display:block;width:100%;max-width:280px;max-height:280px;border-radius:inherit;object-fit:cover}.message-row.has-photo .photo-attachment-btn,.message-row.has-photo .attachment-placeholder,.message-row.has-photo .attachment-retry{border-radius:0}.message-row.has-photo.group-single .photo-attachment-btn,.message-row.has-photo.group-single .attachment-placeholder,.message-row.has-photo.group-single .attachment-retry{border-radius:12px 12px 0 0}.message-row.has-photo.group-start:not(.group-end) .photo-attachment-btn,.message-row.has-photo.group-start:not(.group-end) .attachment-placeholder,.message-row.has-photo.group-start:not(.group-end) .attachment-retry{border-radius:12px 12px 0 0}.message-row.has-photo.group-middle .photo-attachment-btn,.message-row.has-photo.group-middle .attachment-placeholder,.message-row.has-photo.group-middle .attachment-retry{border-radius:6px 12px 0 0}.message-row.has-photo.group-end:not(.group-single) .photo-attachment-btn,.message-row.has-photo.group-end:not(.group-single) .attachment-placeholder,.message-row.has-photo.group-end:not(.group-single) .attachment-retry{border-radius:6px 12px 0 0}.attachment-placeholder,.attachment-retry{display:flex;align-items:center;justify-content:center;width:100%;min-height:120px;min-width:160px;color:var(--text-secondary);font-size:.85rem;background:#00000026;border-radius:8px;border:none;cursor:pointer}.message-row.has-photo .attachment-placeholder,.message-row.has-photo .attachment-retry{min-height:160px}.document-attachment{display:flex;align-items:center;gap:.65rem;padding:.35rem .5rem;min-width:200px}.document-icon{display:flex;align-items:center;justify-content:center;color:var(--text-secondary);flex-shrink:0}.document-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}.document-name{font-size:.9rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.document-size{font-size:.75rem;color:var(--text-secondary)}.document-download-btn{width:36px;height:36px;border:none;border-radius:50%;background:#ffffff1a;color:var(--text);font-size:1.1rem;cursor:pointer;flex-shrink:0}.document-download-btn:hover:not(:disabled){background:#ffffff2e}.message-row.has-voice .message-bubble{min-width:240px;padding:.45rem .65rem .38rem .7rem}.voice-attachment{min-width:220px;max-width:300px}.voice-attachment-player{display:flex;align-items:flex-start;gap:.55rem}.voice-play-btn{width:42px;height:42px;margin-top:.05rem;border:none;border-radius:50%;background:#ffffff24;color:var(--text);cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:background .15s ease}.voice-play-btn:hover{background:#ffffff38}.voice-play-btn.is-playing{background:var(--accent);color:#fff}.voice-play-icon{width:0;height:0;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:11px solid currentColor;margin-left:2px}.voice-pause-icon{display:flex;align-items:center;gap:4px}.voice-pause-icon span{width:3px;height:14px;border-radius:1px;background:currentColor}.voice-player-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:.2rem}.voice-wave-wrap{height:30px;display:flex;align-items:center;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none}.voice-wave-track{position:relative;width:100%;height:100%}.voice-wave-bars{display:flex;align-items:center;gap:2px;height:100%;width:100%}.voice-wave-progress-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.voice-wave-bar{flex:1;min-width:2px;max-width:3px;border-radius:2px;align-self:center}.voice-wave-bars--bg .voice-wave-bar{background:#ffffff47}.message-row.mine .voice-wave-bars--bg .voice-wave-bar{background:#ffffff4d}.message-row.theirs .voice-wave-bars--bg .voice-wave-bar{background:#ffffff38}.voice-wave-bars--fg .voice-wave-bar{background:#fffffff2}.message-row.theirs .voice-wave-bars--fg .voice-wave-bar{background:#6ab7ff}.voice-time-row{display:flex;align-items:center;gap:.2rem;font-size:.68rem;line-height:1;font-variant-numeric:tabular-nums;color:var(--text-time);padding-left:.05rem}.voice-time-current{color:var(--text-time)}.voice-time-sep,.voice-time-total{color:var(--text-secondary);opacity:.85}.voice-mic-btn,.voice-recording-mic{width:42px;height:42px;border:none;border-radius:50%;background:var(--accent);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;touch-action:none;-webkit-user-select:none;user-select:none}.voice-mic-btn:disabled{opacity:.45;cursor:not-allowed}.voice-recording-mic.active{background:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 28%,transparent)}.voice-recording-mic.active.cancel-zone{background:var(--danger);box-shadow:0 0 0 4px #e5393540}.compose-bar.is-recording{align-items:center}.voice-recording-bar{display:flex;align-items:center;gap:.65rem;min-height:42px;padding:0 .25rem;flex:1;min-width:0}.voice-recording-bar.cancel-zone .voice-recording-hint{color:var(--danger)}.voice-recording-dot{width:10px;height:10px;border-radius:50%;background:var(--accent);flex-shrink:0;animation:voice-pulse 1.2s ease-in-out infinite}.voice-recording-bar.cancel-zone .voice-recording-dot{background:var(--danger)}@keyframes voice-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.92)}}.voice-recording-time{font-size:.95rem;font-weight:600;font-variant-numeric:tabular-nums;min-width:2.5rem}.voice-recording-hint{flex:1;font-size:.82rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.image-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#000000d9;display:flex;align-items:center;justify-content:center;padding:1rem}.image-lightbox-close{position:absolute;top:1rem;right:1rem;width:40px;height:40px;border:none;border-radius:50%;background:#ffffff26;color:#fff;font-size:1.1rem;cursor:pointer}.image-lightbox-img{max-width:95vw;max-height:90vh;object-fit:contain;border-radius:8px}.compose-attach-wrap{position:relative;flex-shrink:0}.attach-btn{width:42px;height:42px;border:none;border-radius:50%;background:transparent;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center}.attach-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.attach-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20}.attach-menu{position:absolute;bottom:calc(100% + 8px);left:0;z-index:21;background:var(--bg-sidebar);border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 24px #00000059;overflow:hidden;min-width:160px}.attach-menu-item{display:flex;align-items:center;gap:.65rem;width:100%;padding:.75rem 1rem;border:none;background:transparent;color:var(--text);font-size:.95rem;cursor:pointer;text-align:left}.attach-menu-item:hover:not(:disabled){background:var(--bg-hover)}.attach-menu-icon{display:flex;align-items:center;justify-content:center;width:1.25rem;color:var(--text-secondary);flex-shrink:0}.compose-error{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem 1rem;background:#e5393526;color:#ff8a80;font-size:.85rem;border-top:1px solid rgba(229,57,53,.3)}.compose-error button{border:none;background:none;color:inherit;cursor:pointer;padding:.25rem}.compose-bar{display:flex;align-items:flex-end;gap:.5rem;padding:.6rem 1rem;background:var(--bg-sidebar);border-top:1px solid var(--border);flex-shrink:0}.compose-bar textarea{flex:1;min-height:42px;max-height:160px;padding:.65rem 1rem;border:none;border-radius:20px;background:var(--bg-input);color:var(--text);font-size:.95rem;font-family:inherit;line-height:1.35;resize:none;overflow-y:auto}.compose-bar textarea:focus{outline:none}.compose-bar textarea::placeholder{color:var(--text-secondary)}.send-btn{width:42px;height:42px;border:none;border-radius:50%;background:var(--accent);color:#fff;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s,transform .1s}.send-btn:hover:not(:disabled){background:var(--accent-hover)}.send-btn:active:not(:disabled){transform:scale(.95)}.send-btn:disabled{opacity:.4;cursor:not-allowed}.profile-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:#00000073;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:profile-fade-in .2s ease-out}@keyframes profile-fade-in{0%{opacity:0}to{opacity:1}}@keyframes profile-pop-in{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.profile-modal{width:100%;max-width:380px;max-height:min(82vh,620px);display:flex;flex-direction:column;border-radius:16px;overflow:hidden;border:1px solid var(--border);box-shadow:0 16px 48px #00000073;animation:profile-pop-in .22s ease-out}.profile-modal .user-avatar-wrap.avatar-xl{width:88px;height:88px;font-size:2rem}.profile-modal .profile-hero-avatar-wrap{margin-bottom:.75rem}.profile-view{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:radial-gradient(circle at 50% 0%,rgba(51,144,236,.1) 0%,transparent 50%),var(--bg-sidebar)}.profile-scroll-body{flex:1;min-height:0;overflow-y:auto}.profile-header-bar{display:flex;align-items:center;gap:.75rem;padding:.6rem .85rem;background:#00000026;border-bottom:1px solid var(--border);flex-shrink:0}.profile-back-btn{width:36px;height:36px;border:none;border-radius:50%;background:transparent;color:var(--accent);font-size:1.25rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.profile-back-btn:hover{background:var(--bg-hover)}.profile-header-title{flex:1;font-weight:600;font-size:.95rem}.profile-edit-btn{border:none;background:transparent;color:var(--accent);font-size:.9rem;font-weight:500;cursor:pointer;padding:.35rem .5rem;border-radius:8px}.profile-edit-btn:hover{background:var(--bg-hover)}.profile-hero{flex-shrink:0;text-align:center;padding:1.25rem 1.25rem 1rem}.profile-hero-avatar-wrap{position:relative;display:inline-block;margin-bottom:1rem}.profile-avatar-edit{position:absolute;bottom:4px;right:4px;z-index:3;width:36px;height:36px;border-radius:50%;border:2px solid var(--bg-chat);background:var(--accent);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;line-height:0;box-shadow:var(--shadow)}.profile-avatar-edit svg{display:block;flex-shrink:0}.profile-avatar-edit:hover:not(:disabled){background:var(--accent-hover)}.profile-avatar-edit:disabled{opacity:.6;cursor:wait}.profile-hero-name{font-size:1.3rem;font-weight:700;margin-bottom:.15rem}.profile-hero-username{color:var(--text-secondary);font-size:.95rem;margin-bottom:.35rem}.profile-presence{justify-content:center}.profile-section{margin:0 1rem .75rem;padding:.85rem 1rem;background:var(--bg-input);border-radius:var(--radius);border:1px solid var(--border)}.profile-section-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--accent);margin-bottom:.5rem;font-weight:600}.profile-bio-text{font-size:.95rem;line-height:1.5;white-space:pre-wrap;word-break:break-word}.profile-info-list{margin:0 1rem .75rem;background:var(--bg-input);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden}.profile-info-row{display:flex;flex-direction:column;gap:.2rem;padding:.85rem 1.1rem;border-bottom:1px solid var(--border)}.profile-info-row:last-child{border-bottom:none}.profile-info-label{font-size:.78rem;color:var(--accent);font-weight:500}.profile-info-value{font-size:.95rem;color:var(--text);word-break:break-word}.profile-actions{flex-shrink:0;display:flex;flex-direction:column;gap:.5rem;padding:.75rem 1rem 1.25rem;border-top:1px solid var(--border);background:var(--bg-sidebar)}.profile-friend-actions{display:flex;flex-direction:column;gap:.5rem}.profile-danger-btn{color:#ff8a80}.profile-danger-btn:hover:not(:disabled){color:#ffab91}.profile-edit-panel{margin:0 1rem 1.25rem;padding:.85rem;background:var(--bg-input);border-radius:var(--radius);border:1px solid var(--border)}.profile-edit-tabs{display:flex;gap:.35rem;margin-bottom:1rem;background:var(--bg-input);padding:.25rem;border-radius:10px}.profile-edit-tabs button{flex:1;border:none;background:transparent;color:var(--text-secondary);padding:.5rem;border-radius:8px;font-size:.88rem;font-weight:500;cursor:pointer}.profile-edit-tabs button.active{background:var(--bg-active);color:var(--text)}.profile-form{display:flex;flex-direction:column;gap:.85rem}.profile-field{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;color:var(--text-secondary)}.profile-field input,.profile-field textarea{padding:.65rem .75rem;border:1px solid var(--border);border-radius:10px;background:var(--bg-input);color:var(--text);font-size:.95rem;font-family:inherit;resize:vertical}.profile-field input:focus,.profile-field textarea:focus{outline:2px solid var(--accent);outline-offset:0}.profile-username-input{display:flex;align-items:center;gap:.25rem;padding:0 .75rem;border:1px solid var(--border);border-radius:10px;background:var(--bg-input);color:var(--text-secondary)}.profile-username-input input{flex:1;border:none;background:transparent;padding:.65rem 0;outline:none}.profile-form-error{color:var(--danger);font-size:.85rem;margin-bottom:.25rem}.profile-form-success{color:var(--online);font-size:.85rem;margin-bottom:.25rem}.friends-view{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-sidebar)}.friends-tabs{display:flex;gap:.35rem;margin:0 1rem .75rem;padding:.25rem;background:var(--bg-input);border-radius:10px}.friends-tabs button{flex:1;display:flex;align-items:center;justify-content:center;gap:.4rem;padding:.5rem;border:none;border-radius:8px;background:transparent;color:var(--text-secondary);font-size:.88rem;cursor:pointer}.friends-tabs button.active{background:var(--bg-hover);color:var(--text)}.friends-tab-count{font-size:.75rem;color:var(--text-secondary)}.friends-tab-badge{min-width:1.1rem;height:1.1rem;padding:0 .3rem;border-radius:999px;background:var(--accent);color:#fff;font-size:.68rem;font-weight:600;line-height:1.1rem}.friends-content{flex:1;min-height:0;overflow-y:auto}.friends-empty{padding:2rem 1.25rem;text-align:center;color:var(--text-secondary);font-size:.9rem;line-height:1.5}.friends-error{margin:0 1rem .5rem;color:var(--danger);font-size:.85rem}.friends-list{list-style:none;margin:0;padding:0}.friends-list-item{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-bottom:1px solid var(--border)}.friends-list-item:hover{background:var(--bg-hover)}.friends-list-user{flex:1;min-width:0;display:flex;align-items:center;gap:.75rem;padding:.25rem 0;border:none;background:transparent;color:inherit;text-align:left;cursor:pointer}.friends-list-info{min-width:0;display:flex;flex-direction:column;gap:.1rem}.friends-list-info strong{font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.friends-list-info>span{font-size:.8rem;color:var(--text-secondary)}.friends-list-presence{font-size:.75rem}.friends-remove-btn{flex-shrink:0;width:2rem;height:2rem;border:none;border-radius:50%;background:transparent;color:var(--text-secondary);cursor:pointer}.friends-remove-btn:hover:not(:disabled){background:#ff8a8026;color:#ff8a80}.friends-request-item{flex-wrap:wrap}.friends-request-actions{display:flex;gap:.35rem;width:100%;padding-left:calc(36px + .75rem)}.friends-accept-btn,.friends-reject-btn{flex:1;padding:.45rem .65rem;border:none;border-radius:8px;font-size:.82rem;cursor:pointer}.friends-accept-btn{background:var(--accent);color:#fff}.friends-accept-btn:hover:not(:disabled){background:var(--accent-hover)}.friends-reject-btn{background:var(--bg-input);color:var(--text-secondary)}.friends-reject-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.msg-menu-backdrop,.msg-dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60}.msg-context-menu{position:fixed;z-index:61;min-width:220px;background:var(--bg-sidebar);border:1px solid var(--border);border-radius:14px;box-shadow:0 12px 40px #00000073;overflow:hidden}.msg-reactions-bar{display:flex;align-items:center;gap:.15rem;padding:.45rem .5rem;border-bottom:1px solid var(--border);flex-wrap:wrap}.msg-reaction-btn{width:34px;height:34px;border:none;border-radius:50%;background:transparent;font-size:1.15rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,transform .1s}.msg-reaction-btn:hover{background:var(--bg-hover);transform:scale(1.08)}.msg-reaction-more{width:30px;height:30px;border:none;border-radius:50%;background:var(--bg-input);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;margin-left:.1rem}.msg-menu-list{padding:.35rem 0}.msg-menu-item{display:flex;align-items:center;gap:.75rem;width:100%;padding:.62rem 1rem;border:none;background:transparent;color:var(--text);font-size:.92rem;cursor:pointer;text-align:left}.msg-menu-item svg{color:var(--text-secondary);flex-shrink:0}.msg-menu-item:hover{background:var(--bg-hover)}.msg-menu-item.danger{color:var(--danger)}.msg-menu-item.danger svg{color:var(--danger)}.msg-dialog{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:62;width:min(360px,calc(100vw - 2rem));background:var(--bg-sidebar);border:1px solid var(--border);border-radius:14px;padding:1.1rem 1.15rem;box-shadow:0 16px 48px #00000080}.msg-dialog-title{font-size:1rem;font-weight:600;margin-bottom:1rem}.msg-dialog-actions{display:flex;flex-direction:column;gap:.45rem}.msg-dialog-btn{width:100%;padding:.65rem 1rem;border:none;border-radius:10px;background:var(--bg-input);color:var(--text);font-size:.92rem;cursor:pointer}.msg-dialog-btn:hover{background:var(--bg-hover)}.msg-dialog-btn.danger{background:#e539352e;color:#ff8a80}.msg-dialog-btn.danger:hover{background:#e5393547}.msg-dialog-btn.ghost{background:transparent;color:var(--text-secondary)}.forward-picker{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:62;width:min(400px,calc(100vw - 2rem));max-height:min(520px,80vh);background:var(--bg-sidebar);border:1px solid var(--border);border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 16px 48px #00000080}.forward-picker-header{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1rem .5rem}.forward-picker-header h3{font-size:1rem;font-weight:600}.forward-picker-close{border:none;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:1rem;padding:.25rem}.forward-picker-search{margin:0 .85rem .65rem;padding:.55rem .85rem;border:none;border-radius:10px;background:var(--bg-input);color:var(--text);font-size:.9rem}.forward-picker-search:focus{outline:none}.forward-picker-list{overflow-y:auto;padding:.25rem .5rem .65rem}.forward-picker-item{display:flex;align-items:center;gap:.75rem;width:100%;padding:.6rem .55rem;border:none;border-radius:10px;background:transparent;color:var(--text);cursor:pointer;text-align:left}.forward-picker-item:hover{background:var(--bg-hover)}.forward-picker-avatar{flex-shrink:0}.forward-picker-name{font-size:.95rem}.forward-picker-current-label{color:var(--text-secondary);font-size:.85rem}.forward-picker-empty{padding:1.5rem 1rem;text-align:center;color:var(--text-secondary);font-size:.9rem}.reply-bar{display:flex;align-items:stretch;gap:.65rem;padding:.55rem 1rem;background:var(--bg-sidebar);border-top:1px solid var(--border)}.reply-bar-accent{width:3px;border-radius:2px;background:var(--accent);flex-shrink:0}.reply-bar-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}.reply-bar-name{font-size:.82rem;font-weight:600;color:var(--accent)}.reply-bar-text{font-size:.85rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-bar-close{border:none;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:.95rem;padding:.2rem;align-self:center}.selection-bar{display:flex;align-items:center;gap:.75rem;padding:.55rem 1rem;background:var(--bg-sidebar);border-top:1px solid var(--border)}.selection-bar-cancel{border:none;background:transparent;color:var(--accent);font-size:.9rem;cursor:pointer}.selection-bar-count{flex:1;font-size:.9rem;color:var(--text-secondary)}.selection-bar-actions{display:flex;gap:.35rem}.selection-bar-btn{width:38px;height:38px;border:none;border-radius:50%;background:var(--bg-input);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center}.selection-bar-btn:hover{background:var(--bg-hover);color:var(--text)}.selection-bar-btn.danger{color:var(--danger)}.pinned-message-bar{display:flex;align-items:center;gap:.5rem;padding:.45rem .75rem;background:#3390ec1a;border-bottom:1px solid rgba(51,144,236,.2);flex-shrink:0}.pinned-message-body{flex:1;min-width:0;border:none;background:transparent;text-align:left;cursor:pointer;padding:.15rem 0}.pinned-message-label{display:block;font-size:.75rem;font-weight:600;color:var(--accent);margin-bottom:.1rem}.pinned-message-text{display:block;font-size:.85rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pinned-message-unpin{border:none;background:transparent;color:var(--text-secondary);cursor:pointer;padding:.25rem}.message-bubble-wrap{position:relative;display:inline-block;max-width:100%}.message-bubble-wrap.has-reactions{margin-bottom:.55rem}.message-reply-quote{display:flex;flex-direction:column;gap:.1rem;width:100%;margin-bottom:.35rem;padding:.3rem .55rem;border:none;border-left:3px solid var(--accent);border-radius:6px;background:#00000026;cursor:pointer;text-align:left}.message-row.theirs .message-reply-quote{border-left-color:#ffffff59}.message-reply-quote-name{font-size:.75rem;font-weight:600;color:var(--accent)}.message-reply-quote-text{font-size:.8rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.message-forward-header{display:flex;align-items:center;gap:.35rem;width:100%;margin-bottom:.3rem;padding:0;border:none;background:transparent;cursor:pointer;text-align:left}.message-forward-header:hover .message-forward-name{text-decoration:underline}.message-forward-label{font-size:.72rem;font-weight:500;color:var(--accent);white-space:nowrap}.message-forward-name{font-size:.72rem;font-weight:600;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.message-forward-avatar.user-avatar-wrap{width:16px;height:16px;flex-shrink:0}.message-forward-avatar .user-avatar{width:16px;height:16px;font-size:.55rem}.message-forward-avatar-placeholder{width:16px;height:16px;border-radius:50%;background:var(--bg-input);flex-shrink:0}.message-reactions{position:absolute;left:0;bottom:0;transform:translateY(55%);display:flex;flex-wrap:wrap;gap:.2rem;z-index:2;max-width:calc(100% - .5rem)}.message-reaction-chip{display:inline-flex;align-items:center;gap:.2rem;padding:.12rem .4rem;border:1px solid var(--border);border-radius:999px;background:var(--bg-sidebar);font-size:.82rem;cursor:pointer;box-shadow:var(--shadow)}.message-reaction-chip.mine{border-color:#3390ec73;background:#3390ec1f}.message-reaction-count{font-size:.72rem;color:var(--text-secondary)}.message-row.selectable{cursor:pointer}.message-row.selected .message-bubble{outline:2px solid rgba(51,144,236,.55);outline-offset:2px}.message-select-check{width:20px;height:20px;border-radius:50%;border:2px solid var(--text-secondary);flex-shrink:0;align-self:flex-end;margin-bottom:.35rem;opacity:.7}.message-select-check.checked{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 3px var(--bg-chat);opacity:1}.message-row.mine .message-select-check{order:2;margin-left:.35rem}.message-row.theirs .message-select-check{order:-1;margin-right:.35rem}.group-avatar{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#3390ec,#2b5278);color:#fff;font-weight:600;font-size:1.05rem;flex-shrink:0}.chat-item-avatar.group-avatar,.forward-picker-avatar.group-avatar{width:48px;height:48px;border-radius:50%}.chat-header-avatar.group-avatar{width:42px;height:42px;border-radius:50%;font-size:1rem}.group-hint,.group-members-hint{color:var(--text-secondary);font-size:.8rem}.message-sender-name{display:block;padding:0 .15rem .2rem;border:none;background:transparent;color:#6ab2f2;font-size:.78rem;font-weight:600;cursor:pointer;text-align:left}.message-sender-name:hover{text-decoration:underline}.message-row.theirs .message-bubble-wrap .message-sender-name{margin-left:.1rem}.create-group-modal{width:min(420px,calc(100vw - 2rem));max-height:min(640px,calc(100vh - 2rem));display:flex;flex-direction:column;background:var(--bg-sidebar);border-radius:12px;box-shadow:0 8px 32px #00000073;overflow:hidden}.create-group-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.create-group-header h2{margin:0;font-size:1.1rem;font-weight:600}.create-group-close{border:none;background:transparent;color:var(--text-secondary);font-size:1.1rem;cursor:pointer;padding:.25rem}.create-group-form{display:flex;flex-direction:column;gap:.75rem;padding:1rem 1.25rem 1.25rem;min-height:0}.create-group-label{display:flex;flex-direction:column;gap:.35rem;font-size:.8rem;color:var(--text-secondary)}.create-group-input{padding:.65rem .85rem;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-size:.95rem}.create-group-input:focus{outline:none;border-color:var(--accent)}.create-group-selected-hint{margin:0;font-size:.8rem;color:var(--accent)}.create-group-friends{flex:1;min-height:0;max-height:280px;overflow-y:auto;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.create-group-empty{margin:0;padding:1.5rem 1rem;text-align:center;color:var(--text-secondary);font-size:.9rem}.create-group-list{list-style:none;margin:0;padding:.35rem}.create-group-friend{display:flex;align-items:center;gap:.65rem;width:100%;padding:.55rem .65rem;border:none;border-radius:8px;background:transparent;color:var(--text);cursor:pointer;text-align:left}.create-group-friend:hover,.create-group-friend.selected{background:var(--bg-hover)}.create-group-check{width:20px;height:20px;border:2px solid var(--border);border-radius:50%;flex-shrink:0}.create-group-check.checked{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 3px var(--bg)}.create-group-friend-info{display:flex;flex-direction:column;gap:.1rem;min-width:0}.create-group-friend-info strong{font-size:.92rem}.create-group-friend-info span{font-size:.78rem;color:var(--text-secondary)}.create-group-error{margin:0;color:#ff8a80;font-size:.85rem}.create-group-submit{margin-top:.25rem;padding:.75rem 1rem;border:none;border-radius:8px;background:var(--accent);color:#fff;font-size:.95rem;font-weight:600;cursor:pointer}.create-group-submit:disabled{opacity:.45;cursor:not-allowed}.group-profile-view{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:radial-gradient(circle at 50% 0%,rgba(51,144,236,.1) 0%,transparent 50%),var(--bg-sidebar)}.group-profile-scroll{flex:1;min-height:0;overflow-y:auto}.group-profile-hero{text-align:center;padding:1.25rem 1.25rem 1rem}.group-profile-avatar{width:88px;height:88px;margin:0 auto .75rem;border-radius:50%;font-size:2rem}.group-profile-title{font-size:1.3rem;font-weight:700;margin-bottom:.2rem}.group-profile-count{color:var(--text-secondary);font-size:.9rem}.group-profile-section{margin:0 1rem 1rem;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.group-profile-section-head{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--border)}.group-profile-section-head h3{margin:0;font-size:.85rem;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.04em}.group-profile-add-btn{border:none;background:transparent;color:var(--accent);font-size:.9rem;font-weight:500;cursor:pointer;padding:.25rem .5rem;border-radius:6px}.group-profile-add-btn:hover{background:var(--bg-hover)}.group-member-list{list-style:none;margin:0;padding:0}.group-member-item{display:flex;align-items:center;gap:.25rem;border-bottom:1px solid var(--border)}.group-member-item:last-child{border-bottom:none}.group-member-main{flex:1;display:flex;align-items:center;gap:.75rem;padding:.65rem 1rem;border:none;background:transparent;color:inherit;cursor:pointer;text-align:left;min-width:0}.group-member-main:hover{background:var(--bg-hover)}.group-member-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}.group-member-name{font-size:.95rem;font-weight:500}.group-member-you{color:var(--text-secondary);font-weight:400}.group-member-presence{font-size:.78rem}.group-member-badge{flex-shrink:0;font-size:.72rem;color:var(--accent);background:#3390ec1f;padding:.2rem .5rem;border-radius:999px}.group-member-remove{flex-shrink:0;width:32px;height:32px;margin-right:.5rem;border:none;border-radius:50%;background:transparent;color:#ff8a80;cursor:pointer;font-size:.9rem}.group-member-remove:hover:not(:disabled){background:#ff8a801f}.group-profile-empty,.group-profile-error{margin:0;padding:1rem;text-align:center;color:var(--text-secondary);font-size:.9rem}.group-profile-error{color:#ff8a80;padding:0 1rem .75rem}.group-profile-actions{flex-shrink:0;padding:.75rem 1rem 1.25rem;border-top:1px solid var(--border)}.group-add-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;align-items:flex-end;justify-content:center;background:#0006}.group-add-panel{width:100%;max-height:70%;display:flex;flex-direction:column;gap:.75rem;padding:1rem 1.25rem 1.25rem;background:var(--bg-sidebar);border-radius:16px 16px 0 0;border-top:1px solid var(--border)}.group-add-header{display:flex;align-items:center;justify-content:space-between}.group-add-header h3{margin:0;font-size:1rem}.group-add-close{border:none;background:transparent;color:var(--text-secondary);font-size:1.1rem;cursor:pointer}.group-add-list{flex:1;min-height:0;overflow-y:auto;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.system-message-row{display:flex;justify-content:center;padding:.35rem 1rem}.system-message-text{display:inline-block;max-width:85%;padding:.35rem .75rem;border-radius:999px;background:#0003;color:var(--text-secondary);font-size:.8rem;line-height:1.4;text-align:center}.chat-header-name-btn.group-header-btn{border:none;background:transparent;padding:0;cursor:pointer;text-align:left}.chat-header-name-btn.group-header-btn strong{font-size:inherit;font-weight:600;color:var(--text)}.chat-header-name-btn.group-header-btn:hover strong{color:var(--accent)}.attachment-preview-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:62;width:min(420px,calc(100vw - 2rem));max-height:min(90vh,720px);display:flex;flex-direction:column;background:var(--bg-sidebar);border:1px solid var(--border);border-radius:16px;box-shadow:0 16px 48px #00000080;overflow:hidden}.attachment-preview-title{padding:1rem 1.1rem .75rem;font-size:1rem;font-weight:600}.attachment-preview-body{padding:0 1.1rem 1rem;min-height:0}.attachment-preview-image-wrap{display:flex;align-items:center;justify-content:center;max-height:min(52vh,480px);border-radius:12px;overflow:hidden;background:#0d1117}.attachment-preview-image{display:block;max-width:100%;max-height:min(52vh,480px);width:auto;height:auto;object-fit:contain}.attachment-preview-file{display:flex;align-items:center;gap:.85rem;padding:.9rem 1rem;border-radius:12px;background:var(--bg-input)}.attachment-preview-file-icon{flex-shrink:0;width:3rem;height:3rem;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#2a7fff2e;color:var(--accent)}.attachment-preview-file-info{display:flex;flex-direction:column;gap:.2rem;min-width:0}.attachment-preview-file-info strong{font-size:.95rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-preview-file-info span{font-size:.85rem;color:var(--text-secondary)}.attachment-preview-actions{display:flex;justify-content:flex-end;gap:.5rem;padding:.85rem 1.1rem 1rem;border-top:1px solid var(--border)}.attachment-preview-btn{border:none;border-radius:10px;padding:.62rem 1.1rem;font-size:.92rem;cursor:pointer}.attachment-preview-btn.ghost{background:transparent;color:var(--text-secondary)}.attachment-preview-btn.ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.attachment-preview-btn.primary{background:var(--accent);color:#fff}.attachment-preview-btn.primary:hover:not(:disabled){filter:brightness(1.08)}.attachment-preview-btn:disabled{opacity:.6;cursor:default}.toast-stack{position:fixed;left:1rem;bottom:1rem;z-index:200;display:flex;flex-direction:column-reverse;gap:.65rem;max-width:min(420px,calc(100vw - 2rem));pointer-events:none}.toast-item{display:flex;align-items:stretch;gap:.35rem;border-radius:14px;background:var(--bg-sidebar);border:1px solid var(--border);box-shadow:0 12px 36px #0000006b;pointer-events:auto;overflow:hidden}.toast-item.toast-dismissing{animation:toast-life 9s ease forwards}@keyframes toast-life{0%,52%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(8px)}}.toast-body{flex:1;display:flex;align-items:flex-start;gap:.8rem;min-width:0;padding:.95rem .45rem .95rem 1rem;border:none;background:transparent;color:var(--text);text-align:left;cursor:pointer}.toast-body:hover{background:var(--bg-hover)}.toast-icon{flex-shrink:0;width:1.75rem;text-align:center;font-size:1.3rem;line-height:1.35}.toast-text{display:flex;flex-direction:column;gap:.25rem;min-width:0}.toast-text strong{font-size:1rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast-subtitle{font-size:.9rem;color:var(--text-secondary);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.toast-close{flex-shrink:0;width:2.35rem;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:.95rem}.toast-close:hover{color:var(--text);background:var(--bg-hover)}@media(max-width:768px){html{overflow-x:hidden;max-width:100vw}body{overflow-x:hidden;max-width:100vw;overscroll-behavior-x:none}#root:has(.app-layout){height:100%;height:100dvh;overflow:hidden}.app-layout{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;max-width:100vw;height:100%;height:100dvh;overflow:hidden}.sidebar{width:100%;min-width:0;max-width:100vw;flex:1 1 auto;border-right:none}.sidebar-top{padding-top:max(.5rem,env(safe-area-inset-top,0px));padding-left:max(.75rem,env(safe-area-inset-left,0px));padding-right:max(.75rem,env(safe-area-inset-right,0px))}.app-layout.chat-open .sidebar{display:none}.chat-area{width:100%;max-width:100vw;flex:1 1 100%;min-width:0}.app-layout:not(.chat-open) .chat-area{display:none}.chat-window{width:100%;max-width:100vw}.chat-back-btn{display:flex}.chat-header{padding-top:max(.55rem,env(safe-area-inset-top,0px));padding-left:max(.5rem,env(safe-area-inset-left,0px));padding-right:max(.75rem,env(safe-area-inset-right,0px))}.compose-bar{padding-bottom:max(.6rem,env(safe-area-inset-bottom,0px));padding-left:max(.75rem,env(safe-area-inset-left,0px));padding-right:max(.75rem,env(safe-area-inset-right,0px))}.messages{--messages-padding-x: .75rem;overflow-x:hidden;overscroll-behavior:contain}.message-row{max-width:100%}.message-bubble{max-width:min(88%,calc(100vw - 4rem))}.toast-stack{left:max(1rem,env(safe-area-inset-left,0px));bottom:max(1rem,env(safe-area-inset-bottom,0px));max-width:min(420px,calc(100vw - 2rem))}.profile-overlay{position:fixed;top:0;right:0;bottom:0;left:0;padding:max(1rem,env(safe-area-inset-top,0px)) max(1rem,env(safe-area-inset-right,0px)) max(1rem,env(safe-area-inset-bottom,0px)) max(1rem,env(safe-area-inset-left,0px))}.profile-modal,.forward-picker,.msg-dialog,.attachment-preview-modal,.create-group-modal{max-width:calc(100vw - 2rem)}.auth-page{min-height:100dvh;padding:max(1.5rem,env(safe-area-inset-top,0px)) max(1.5rem,env(safe-area-inset-right,0px)) max(1.5rem,env(safe-area-inset-bottom,0px)) max(1.5rem,env(safe-area-inset-left,0px))}}.mobile-file-input{display:none}
