@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg-0: #0f0f0f;--bg-1: #212121;--bg-2: #2c2c2c;--bg-3: #343434;--bg-hover: #2c2c2c;--border: #303030;--accent: #8774e1;--accent-hover: #7b71c6;--text-primary: #ffffff;--text-secondary: #aaaaaa;--text-muted: #717579;--online: #00c73e;--danger: #fb6f5f;--bubble-mine: #766ac8;--bubble-mine-text: #ffffff;--bubble-mine-muted: rgba(255,255,255,.53);--bubble-their: #212121;--tick-color: #ffffff;--tick-muted: rgba(255,255,255,.55);--msg-shadow: rgba(16,16,16,.61);--reaction-bg: #2b2a35;--reaction-bg-hover: #343147;--reaction-text: #8774e1;--reaction-bg-own: #675caf;--reaction-text-own: #ffffff;--reaction-chosen-bg: #8774e1;--reaction-chosen-text: #ffffff;--reaction-chosen-bg-own: #ffffff;--reaction-chosen-text-own: #766ac8;--date-pill-bg: rgba(33,33,33,.8);--date-pill-text: #aaaaaa;--context-bg: #212121;--hover-bg: #2c2c2c;--input-bg: #181818;--shadow: 0 4px 24px rgba(0,0,0,.45);--radius-sm: 6px;--radius-md: 12px;--radius-lg: 15px;--sidebar-w: 280px}[data-theme=light]{--bg-0: #e7ede2;--bg-1: #ffffff;--bg-2: #f4f4f5;--bg-3: #e4e4e5;--bg-hover: #f4f4f5;--border: #dadce0;--accent: #3390ec;--accent-hover: #2a7fd4;--text-primary: #000000;--text-secondary: #707579;--text-muted: #8e8e92;--online: #00c73e;--danger: #e53935;--bubble-mine: #eeffde;--bubble-mine-text: #0b0b0b;--bubble-mine-muted: #4fae4e;--bubble-their: #ffffff;--tick-color: #45af54;--tick-muted: rgba(69,175,84,.55);--msg-shadow: rgba(114,114,114,.25);--reaction-bg: #ebf3fd;--reaction-bg-hover: #c5def9;--reaction-text: #3390ec;--reaction-bg-own: #c6eab2;--reaction-text-own: #45af54;--reaction-chosen-bg: #3390ec;--reaction-chosen-text: #ffffff;--reaction-chosen-bg-own: #45af54;--reaction-chosen-text-own: #ffffff;--date-pill-bg: rgba(255,255,255,.85);--date-pill-text: #5b7059;--context-bg: #ffffff;--hover-bg: #f4f4f5;--input-bg: #f4f4f5;--shadow: 0 4px 24px rgba(0,0,0,.12)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;font-family:Inter Variable,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-0);color:var(--text-primary);font-size:14px;line-height:1.5}ul{list-style:none}button{cursor:pointer;background:none;border:none;color:inherit}a{color:inherit;text-decoration:none}textarea{font-family:inherit;font-size:inherit;color:inherit;resize:none}::-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)}.avatar{display:flex;align-items:center;justify-content:center;border-radius:50%;font-weight:700;color:#fff;flex-shrink:0;letter-spacing:.5px;-webkit-user-select:none;user-select:none}.btn-icon{display:flex;align-items:center;justify-content:center;padding:6px;border-radius:var(--radius-sm);color:var(--text-secondary);transition:background .15s,color .15s}.btn-icon:hover{background:var(--bg-hover);color:var(--text-primary)}.btn-primary{width:100%;padding:11px 20px;background:var(--accent);color:#fff;border-radius:var(--radius-md);font-size:14px;font-weight:600;border:none;cursor:pointer;transition:background .15s,opacity .15s}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.spinner{display:inline-block;width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.spinner-sm{display:inline-block;width:18px;height:18px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.auth-root{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 0%,#1a1a3e 0%,var(--bg-0) 70%);padding:20px;position:relative;overflow:hidden}[data-theme=light] .auth-root{background:radial-gradient(ellipse at 50% 0%,#e0e7ff 0%,var(--bg-0) 70%)}.auth-orb{position:absolute;border-radius:50%;filter:blur(80px);opacity:.35;pointer-events:none;animation:orbFloat 14s ease-in-out infinite}.auth-orb-1{width:380px;height:380px;background:#8774e1;top:-120px;left:-100px}.auth-orb-2{width:300px;height:300px;background:#766ac8;bottom:-80px;right:-60px;animation-delay:-5s}.auth-orb-3{width:220px;height:220px;background:#3390ec;top:50%;left:65%;animation-delay:-9s}[data-theme=light] .auth-orb{opacity:.22}@keyframes orbFloat{0%,to{transform:translate(0) scale(1)}33%{transform:translate(40px,-30px) scale(1.08)}66%{transform:translate(-30px,25px) scale(.94)}}@media (prefers-reduced-motion: reduce){.auth-orb{animation:none}}.auth-card{width:100%;max-width:380px;background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-lg);padding:36px 32px;box-shadow:var(--shadow);position:relative;z-index:1;animation:authCardIn .45s cubic-bezier(.21,1.02,.73,1)}@keyframes authCardIn{0%{opacity:0;transform:translateY(24px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.auth-logo{text-align:center;margin-bottom:28px}.auth-logo-icon{font-size:40px;display:block;margin-bottom:10px;animation:logoBounce .6s cubic-bezier(.34,1.56,.64,1) .15s backwards}@keyframes logoBounce{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.auth-title{font-size:22px;font-weight:700}.auth-subtitle{color:var(--text-secondary);font-size:13px;margin-top:4px}.auth-tabs{display:flex;background:var(--input-bg);border-radius:var(--radius-sm);padding:3px;margin-bottom:24px;position:relative}.auth-tab-slider{position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);background:var(--bg-3);border-radius:calc(var(--radius-sm) - 2px);transition:transform .22s cubic-bezier(.4,0,.2,1)}.auth-tab-slider.right{transform:translate(100%)}.auth-tab{flex:1;padding:8px;border-radius:calc(var(--radius-sm) - 2px);font-size:13px;font-weight:500;color:var(--text-secondary);transition:color .15s;position:relative;z-index:1}.auth-tab.active{color:var(--text-primary)}.auth-field-animated{animation:authFieldIn .3s ease backwards}@keyframes authFieldIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.auth-pw-wrap{position:relative;display:flex}.auth-pw-wrap .field-input{flex:1;padding-right:40px}.auth-pw-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);color:var(--text-muted);transition:color .15s}.auth-pw-toggle:hover{color:var(--text-primary)}.auth-strength{display:flex;align-items:center;gap:10px;margin-top:8px}.auth-strength-bars{display:flex;gap:4px;flex:1}.auth-strength-bar{height:4px;flex:1;border-radius:2px;background:var(--bg-3);transition:background .25s}.auth-strength-bar.fill-weak{background:var(--danger)}.auth-strength-bar.fill-medium{background:#f59e0b}.auth-strength-bar.fill-strong{background:var(--online)}.auth-strength-label{font-size:11px;font-weight:600;flex-shrink:0;min-width:64px;text-align:right}.auth-strength-label.weak{color:var(--danger)}.auth-strength-label.medium{color:#f59e0b}.auth-strength-label.strong{color:var(--online)}.auth-privacy-note{margin-top:20px;text-align:center;font-size:11.5px;color:var(--text-muted);line-height:1.5}.auth-form{display:flex;flex-direction:column;gap:16px}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:13px;font-weight:500;color:var(--text-secondary)}.field-input{background:var(--input-bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);padding:10px 14px;font-size:14px;outline:none;transition:border-color .15s}.field-input:focus{border-color:var(--accent)}.field-input::placeholder{color:var(--text-muted)}.auth-error{color:var(--danger);font-size:13px;padding:8px 12px;background:#f851491a;border-radius:var(--radius-sm);border:1px solid rgba(248,81,73,.3)}.chat-root{display:flex;height:100vh;overflow:hidden;position:relative}.sidebar-toggle{display:none;position:fixed;top:14px;left:14px;z-index:200;padding:8px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary)}.sidebar-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:150;opacity:0;transition:opacity .2s;pointer-events:none}.sidebar-overlay.visible{opacity:1;pointer-events:auto}.sidebar-wrapper{flex-shrink:0;width:var(--sidebar-w)}.sidebar{width:var(--sidebar-w);height:100vh;background:var(--bg-1);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:12px;border-bottom:1px solid var(--border)}.sidebar-me{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.sidebar-me-name{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-header-actions{display:flex;gap:2px;flex-shrink:0}.sidebar-title{padding:10px 16px 4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted)}.user-list{flex:1;overflow-y:auto;padding:4px 8px 8px}.user-list-empty{padding:20px 8px;color:var(--text-muted);font-size:13px;text-align:center}.user-item{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:var(--radius-md);cursor:pointer;transition:background .12s}.user-item:hover{background:var(--bg-hover)}.user-item.active{background:var(--accent)}.user-item.active .user-item-name{color:#fff}.user-item.active .user-item-preview,.user-item.active .user-item-time,.user-item.active .user-item-status,.user-item.active .user-item-status.online{color:#fffc}.user-item-avatar{position:relative}.online-dot{position:absolute;bottom:1px;right:1px;width:10px;height:10px;border-radius:50%;background:var(--text-muted);border:2px solid var(--bg-1);transition:background .2s}.online-dot.online{background:var(--online)}.user-item-info{display:flex;flex-direction:column;min-width:0;flex:1;gap:1px}.user-item-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.user-item-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-item-time{font-size:11px;color:var(--text-muted);flex-shrink:0}.user-item-preview{font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-item-status{font-size:12px;color:var(--text-muted)}.user-item-status.online{color:var(--online)}.chat-main{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-0);position:relative}.chat-header{display:flex;align-items:center;padding:12px 20px;border-bottom:1px solid var(--border);background:var(--bg-1);min-height:62px}.chat-header-user{display:flex;align-items:center;gap:12px}.chat-header-info{display:flex;flex-direction:column}.chat-header-name{font-weight:600;font-size:15px}.chat-header-status{font-size:12px;color:var(--text-muted)}.chat-header-status.online{color:var(--online)}.chat-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--text-secondary);padding:40px;text-align:center}.chat-empty-icon{font-size:56px;opacity:.5;animation:emptyFloat 3s ease-in-out infinite}@keyframes emptyFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.chat-empty h2{font-size:20px;color:var(--text-primary)}.chat-empty p{color:var(--text-muted);font-size:14px}.loading-messages{flex:1;display:flex;align-items:center;justify-content:center}.pinned-banner{display:flex;align-items:center;gap:10px;padding:8px 16px;background:var(--bg-1);border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s}.pinned-banner:hover{background:var(--bg-hover)}.pinned-banner-icon{font-size:16px;flex-shrink:0}.pinned-banner-text{display:flex;flex-direction:column;min-width:0}.pinned-banner-label{font-size:11px;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.5px}.pinned-banner-content{font-size:13px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.select-toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:var(--accent);color:#fff;font-size:13px;font-weight:500}.select-toolbar-actions{display:flex;gap:8px}.select-toolbar-btn{padding:5px 12px;border-radius:var(--radius-sm);font-size:12px;font-weight:600;background:#fff3;color:#fff;cursor:pointer;transition:background .15s}.select-toolbar-btn:hover{background:#ffffff59}.select-toolbar-btn:disabled{opacity:.5;cursor:not-allowed}.select-toolbar-btn.danger{background:#f8514966}.select-toolbar-btn.danger:hover{background:#f8514999}.message-list{flex:1;overflow-y:auto;padding:16px 20px 8px;display:flex;flex-direction:column;gap:2px}.date-divider{display:flex;align-items:center;justify-content:center;margin:10px 0}.date-divider span{font-size:12px;font-weight:500;color:var(--date-pill-text);background:var(--date-pill-bg);padding:3px 12px;border-radius:20px}.message-row{display:flex;justify-content:flex-start;align-items:flex-end;gap:8px;margin:1px 0;position:relative;animation:msgIn .18s ease}.message-row:has(.last-in-group){margin-bottom:7px}.message-row.mine{justify-content:flex-end}@keyframes msgIn{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media (prefers-reduced-motion: reduce){.message-row{animation:none}}.message-row.selected .message-bubble{outline:2px solid var(--accent);outline-offset:2px}.message-row.selectable{cursor:pointer}.message-row.selectable:hover .message-bubble{opacity:.85}.select-checkbox{width:20px;height:20px;border-radius:50%;border:2px solid var(--border);background:var(--bg-2);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;flex-shrink:0;transition:background .15s,border-color .15s}.select-checkbox.checked{background:var(--accent);border-color:var(--accent)}.message-bubble{max-width:min(68%,480px);background:var(--bubble-their);border-radius:15px 15px 15px 6px;padding:6px 10px 7px;position:relative;word-break:break-word;box-shadow:0 1px 2px var(--msg-shadow)}.message-bubble.mine{background:var(--bubble-mine);color:var(--bubble-mine-text);border-radius:15px 15px 6px}.message-bubble.last-in-group{border-bottom-left-radius:0}.message-bubble.mine.last-in-group{border-bottom-left-radius:15px;border-bottom-right-radius:0}.message-bubble.last-in-group:after{content:"";position:absolute;bottom:0;left:-8px;width:9px;height:17px;background:var(--bubble-their);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 9 17'%3E%3Cpath d='M9 0C8 9 5 15 0 17H9Z'/%3E%3C/svg%3E") no-repeat center / 100% 100%;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 9 17'%3E%3Cpath d='M9 0C8 9 5 15 0 17H9Z'/%3E%3C/svg%3E") no-repeat center / 100% 100%}.message-bubble.mine.last-in-group:after{left:auto;right:-8px;background:var(--bubble-mine);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 9 17'%3E%3Cpath d='M0 0C1 9 4 15 9 17H0Z'/%3E%3C/svg%3E") no-repeat center / 100% 100%;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 9 17'%3E%3Cpath d='M0 0C1 9 4 15 9 17H0Z'/%3E%3C/svg%3E") no-repeat center / 100% 100%}.message-bubble.pinned{border-left:3px solid var(--accent)}.message-bubble.mine.pinned{border-left-color:#fff9}.message-bubble.mine .message-time,.message-bubble.mine .msg-edited{color:var(--bubble-mine-muted)}.message-bubble.mine .msg-forwarded{color:var(--bubble-mine-text)}.message-bubble.mine .message-undecryptable{color:var(--bubble-mine-muted)}.message-bubble.mine .reply-preview-bubble{background:#ffffff21;border-left-color:#ffffffb3}.message-bubble.mine .reply-preview-author{color:var(--bubble-mine-text)}.message-bubble.mine .reply-preview-text{color:var(--bubble-mine-muted)}.message-bubble.mine .file-attachment{background:#ffffff1a;border-color:#fff3}.message-bubble.mine .file-attachment:hover{background:#ffffff2e}.message-bubble.mine .file-attachment-icon,.message-bubble.mine .file-attachment-download{color:var(--bubble-mine-text)}.message-bubble.mine .file-attachment-size{color:var(--bubble-mine-muted)}.message-bubble.mine .search-highlight{background:#ffffff59;color:inherit}.msg-forwarded{font-size:11px;font-weight:600;color:var(--accent);margin-bottom:4px}.msg-edited{font-size:10px;color:var(--text-muted);font-style:italic}.message-text{font-size:15px;line-height:1.3125;white-space:pre-wrap}.message-time{display:flex;align-items:center;justify-content:flex-end;gap:3px;font-size:12px;color:var(--text-muted);margin-top:2px;line-height:1}.msg-meta-spacer{display:inline-flex;visibility:hidden;margin:0 0 0 8px;vertical-align:baseline}.msg-meta-floating{position:absolute;right:9px;bottom:6px;margin:0;pointer-events:none}.lock-icon{opacity:.6;flex-shrink:0}.ticks{display:inline-flex;align-items:center;margin-left:2px;vertical-align:middle}.tick-sending{opacity:.6;color:var(--bubble-mine-muted)}.ticks-sent svg,.ticks-delivered svg{color:var(--tick-muted)}.ticks-read svg{color:var(--tick-color)}.key-status-btn{margin-left:auto;font-size:18px;background:none;border:none;cursor:pointer;padding:6px;border-radius:8px;opacity:.8;transition:opacity .15s,background .15s}.key-status-btn:hover{opacity:1;background:var(--hover-bg)}.key-status-btn.key-warn{opacity:1;animation:pulse-warn 1.5s infinite}@keyframes pulse-warn{0%,to{filter:drop-shadow(0 0 0 #f59e0b)}50%{filter:drop-shadow(0 0 6px #f59e0b)}}.fp-modal{max-width:400px}.fp-warning-icon{font-size:42px;text-align:center;margin-bottom:8px}.fp-warning-title{color:#f59e0b}.fp-warning-list{color:var(--text-secondary);font-size:13px;padding-left:18px;margin:8px 0;line-height:1.7}.fp-block{background:var(--input-bg);border-radius:8px;padding:10px 14px;margin-top:12px;font-family:Courier New,monospace}.fp-label{font-size:11px;color:var(--text-secondary);margin-bottom:4px;font-family:inherit}.fp-value{font-size:15px;letter-spacing:2px;font-weight:600;color:var(--text-primary);word-break:break-all}.btn-modal-danger{padding:9px 18px;border-radius:8px;border:none;cursor:pointer;font-size:13px;font-weight:500;background:#dc2626;color:#fff}.btn-modal-danger:hover{background:#b91c1c}.message-undecryptable{color:var(--text-muted);font-style:italic;font-size:13px}.reply-preview-bubble{background:#7d7d7d24;border-left:3px solid var(--accent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:4px 8px;margin-bottom:6px;font-size:12px;display:flex;flex-direction:column;gap:1px}.reply-preview-author{font-weight:600;color:var(--accent)}.reply-preview-text{color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reaction-bar{display:flex;flex-wrap:wrap;gap:4px;margin:5px 0 2px}.reaction-chip{display:flex;align-items:center;gap:4px;height:26px;padding:0 10px 0 7px;background:var(--reaction-bg);color:var(--reaction-text);border:none;border-radius:13px;font-size:14px;font-weight:500;font-variant-numeric:tabular-nums;cursor:pointer;transition:background .15s,color .15s}.reaction-chip span{font-size:13px;color:inherit;font-weight:600}.reaction-chip:hover{background:var(--reaction-bg-hover)}.reaction-chip.mine{background:var(--reaction-chosen-bg);color:var(--reaction-chosen-text)}.message-bubble.mine .reaction-chip{background:var(--reaction-bg-own);color:var(--reaction-text-own)}.message-bubble.mine .reaction-chip:hover{background:var(--reaction-bg-own);filter:brightness(1.08)}.message-bubble.mine .reaction-chip.mine{background:var(--reaction-chosen-bg-own);color:var(--reaction-chosen-text-own)}.msg-hover-actions{display:flex;gap:2px;align-self:center;background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2px;opacity:0;pointer-events:none;transition:opacity .12s;flex-shrink:0}.message-row:hover .msg-hover-actions{opacity:1;pointer-events:auto}.msg-hover-btn{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;color:var(--text-secondary);transition:background .12s,color .12s}.msg-hover-btn:hover{background:var(--hover-bg);color:var(--text-primary)}@media (hover: none){.msg-hover-actions{display:none}}.scroll-down-btn{position:absolute;bottom:84px;right:20px;z-index:50;width:40px;height:40px;border-radius:50%;background:var(--bg-2);border:1px solid var(--border);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);transition:background .15s,color .15s,transform .15s;animation:scrollBtnIn .15s ease}.scroll-down-btn:hover{background:var(--bg-hover);color:var(--text-primary);transform:translateY(-2px)}@keyframes scrollBtnIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.typing-bubble{display:flex;align-items:center;gap:4px;padding:12px 16px;width:fit-content}.typing-dot{width:7px;height:7px;background:var(--text-muted);border-radius:50%;animation:bounce 1.2s ease-in-out infinite}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}@keyframes bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-6px)}}.input-area{border-top:1px solid var(--border);background:var(--bg-1);padding:10px 16px 12px}.input-context-bar{display:flex;align-items:center;justify-content:space-between;background:var(--bg-0);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 10px;margin-bottom:8px}.input-context-info{display:flex;flex-direction:column;min-width:0;flex:1;gap:1px}.input-context-label{font-size:11px;font-weight:600;color:var(--accent)}.input-context-content{font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.input-context-close{margin-left:8px;flex-shrink:0}.file-preview{display:flex;align-items:center;gap:8px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 10px;margin-bottom:8px;font-size:13px;color:var(--text-secondary)}.file-preview-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-preview-remove{color:var(--text-muted);font-size:14px;padding:0 2px;transition:color .15s}.file-preview-remove:hover{color:var(--danger)}.input-row{display:flex;align-items:flex-end;gap:8px}.attach-btn{color:var(--text-muted);padding:8px}.attach-btn:hover:not(:disabled){color:var(--text-primary)}.attach-btn:disabled{opacity:.4;cursor:not-allowed}.message-textarea{flex:1;background:var(--input-bg);border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 14px;font-size:14px;outline:none;max-height:140px;overflow-y:auto;field-sizing:content;transition:border-color .15s}.message-textarea:focus{border-color:var(--accent)}.message-textarea::placeholder{color:var(--text-muted)}.btn-send{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--accent);color:#fff;flex-shrink:0;transition:background .15s,opacity .15s,transform .1s}.btn-send:hover{background:var(--accent-hover);transform:scale(1.05)}.btn-send:disabled{opacity:.35;cursor:not-allowed;transform:none}.file-image-wrap{position:relative;display:inline-block}.file-image{display:block;max-width:280px;max-height:280px;border-radius:var(--radius-sm);object-fit:cover;cursor:pointer;transition:opacity .15s}.file-image:hover{opacity:.9}.img-actions{position:absolute;top:6px;right:6px;display:flex;gap:4px}.img-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);background:#0000008c;color:#fff;font-size:13px;transition:background .15s}.img-action-btn:hover{background:#000c}.file-attachment{display:flex;align-items:center;gap:10px;background:var(--bg-0);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;min-width:200px;max-width:300px;transition:background .15s}.file-attachment:hover{background:var(--bg-hover)}.file-attachment-icon{color:var(--accent);flex-shrink:0}.file-attachment-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.file-attachment-name{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-attachment-size{font-size:11px;color:var(--text-muted)}.file-attachment-download{color:var(--text-muted);flex-shrink:0}.context-menu{position:fixed;z-index:400;background:var(--context-bg);border:1px solid var(--border);border-radius:var(--radius-md);padding:6px;box-shadow:var(--shadow);min-width:160px;animation:fadeIn .1s ease}@keyframes fadeIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.context-menu-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:var(--radius-sm);font-size:13px;color:var(--text-primary);width:100%;text-align:left;transition:background .12s}.context-menu-item:hover:not(.disabled){background:var(--bg-hover)}.context-menu-item.danger{color:var(--danger)}.context-menu-item.danger:hover{background:#f851491a}.context-menu-item.disabled{opacity:.4;cursor:not-allowed}.context-menu-icon{font-size:16px;width:20px;text-align:center}.reaction-picker{position:fixed;z-index:400;display:flex;gap:4px;padding:8px;background:var(--context-bg);border:1px solid var(--border);border-radius:30px;box-shadow:var(--shadow)}.reaction-picker-btn{font-size:22px;padding:4px;border-radius:50%;transition:transform .1s,background .12s}.reaction-picker-btn:hover{transform:scale(1.25);background:var(--bg-hover)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:300;padding:20px}.modal{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px 28px 24px;width:100%;max-width:360px;box-shadow:var(--shadow)}.modal-title{font-size:17px;font-weight:700;margin-bottom:10px}.modal-text{font-size:14px;color:var(--text-secondary);line-height:1.55;margin-bottom:24px}.modal-actions{display:flex;gap:10px;justify-content:flex-end}.btn-modal-cancel{padding:9px 18px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;background:var(--bg-3);color:var(--text-primary);border:1px solid var(--border);cursor:pointer;transition:background .15s}.btn-modal-cancel:hover{background:var(--bg-hover)}.btn-modal-danger{padding:9px 18px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;background:var(--danger);color:#fff;border:none;cursor:pointer;transition:opacity .15s}.btn-modal-danger:hover{opacity:.85}.btn-modal-danger:disabled{opacity:.5;cursor:not-allowed}.forward-user-list{max-height:280px;overflow-y:auto;margin-bottom:16px}.forward-user-item{display:flex;align-items:center;gap:12px;padding:10px;border-radius:var(--radius-md);cursor:pointer;transition:background .12s;font-size:14px}.forward-user-item:hover{background:var(--bg-hover)}.settings-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:350;display:flex;justify-content:flex-end}.settings-panel{width:100%;max-width:380px;height:100%;background:var(--bg-1);border-left:1px solid var(--border);display:flex;flex-direction:column;box-shadow:var(--shadow);animation:slideIn .2s ease;overflow:hidden}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}.settings-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.settings-title{font-size:17px;font-weight:700}.settings-body{flex:1;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:24px}.settings-section-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);margin-bottom:12px}.settings-avatar-row{display:flex;align-items:center;gap:16px}.settings-avatar-wrap{position:relative}.settings-avatar-img{width:72px;height:72px;border-radius:50%;object-fit:cover}.settings-avatar-change{position:absolute;bottom:0;right:0;width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg-1)}.settings-username{font-size:16px;font-weight:600}.settings-pw-form{display:flex;flex-direction:column;gap:10px}.settings-pw-status{font-size:12px;padding:6px 10px;border-radius:var(--radius-sm)}.settings-pw-status.ok{color:var(--online);background:#3fb9501a}.settings-pw-status.err{color:var(--danger);background:#f851491a}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);font-size:14px}.settings-row:last-child{border-bottom:none}.settings-row-col{flex-direction:column;align-items:stretch;gap:8px}.settings-zoom-label{display:flex;justify-content:space-between;font-size:14px}.settings-zoom-value{color:var(--text-muted)}.settings-slider{width:100%;accent-color:var(--accent)}.settings-toggle-group{display:flex;background:var(--bg-0);border-radius:var(--radius-sm);padding:2px;gap:2px}.settings-toggle-btn{padding:5px 14px;border-radius:calc(var(--radius-sm) - 1px);font-size:12px;font-weight:500;color:var(--text-secondary);transition:background .15s,color .15s}.settings-toggle-btn.active{background:var(--bg-3);color:var(--text-primary)}.unread-badge{min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:var(--accent);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-left:auto;flex-shrink:0}.load-more-wrap{display:flex;justify-content:center;padding:8px 0}.load-more-btn{background:var(--input-bg);border:1px solid var(--border);color:var(--text-secondary);padding:6px 18px;border-radius:16px;font-size:13px;cursor:pointer;transition:background .15s}.load-more-btn:hover{background:var(--hover-bg)}.load-more-btn:disabled{opacity:.5;cursor:not-allowed}.search-bar{display:flex;align-items:center;gap:8px;padding:6px 14px;background:var(--input-bg);border-bottom:1px solid var(--border)}.search-input{flex:1;background:none;border:none;outline:none;color:var(--text-primary);font-size:14px}.search-count{font-size:12px;color:var(--text-secondary);white-space:nowrap}.search-highlight{background:#f59e0b55;color:var(--text-primary);border-radius:2px;padding:0 1px}.gallery-modal{max-width:560px;width:90vw;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.gallery-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.gallery-tabs{display:flex;gap:4px;margin-bottom:12px}.gallery-tab{flex:1;padding:8px;border-radius:8px;border:1px solid var(--border);background:none;color:var(--text-secondary);cursor:pointer;font-size:13px;transition:all .15s}.gallery-tab.active{background:var(--accent);color:#fff;border-color:var(--accent)}.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;overflow-y:auto;flex:1}.gallery-thumb{aspect-ratio:1;overflow:hidden;border-radius:6px;cursor:pointer}.gallery-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .15s}.gallery-thumb:hover img{transform:scale(1.05)}.gallery-empty{text-align:center;color:var(--text-secondary);padding:32px}.gallery-file-list{overflow-y:auto;flex:1}.gallery-file-item{display:flex;align-items:center;gap:12px;padding:10px;border-radius:8px;transition:background .12s}.gallery-file-item:hover{background:var(--hover-bg)}.gallery-file-icon{font-size:24px;flex-shrink:0}.gallery-file-info{flex:1;min-width:0}.gallery-file-name{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gallery-file-size{font-size:11px;color:var(--text-secondary)}.lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;background:#000000eb;display:flex;align-items:center;justify-content:center}.lightbox-img{max-width:90vw;max-height:85vh;border-radius:8px;object-fit:contain}.lightbox-close{position:fixed;top:16px;right:20px;background:#ffffff26;border:none;color:#fff;font-size:20px;width:36px;height:36px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center}.lightbox-dl{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--accent);border:none;color:#fff;padding:10px 24px;border-radius:20px;font-size:14px;cursor:pointer}.wallpaper-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px}.wallpaper-thumb{aspect-ratio:1;border-radius:10px;border:2px solid transparent;cursor:pointer;background:var(--input-bg);display:flex;align-items:center;justify-content:center;position:relative;transition:border-color .15s,transform .1s;overflow:hidden}.wallpaper-thumb:hover{transform:scale(1.05);border-color:var(--accent)}.wallpaper-thumb.active{border-color:var(--accent)}.wallpaper-check{position:absolute;bottom:3px;right:5px;font-size:12px;color:var(--accent);font-weight:700;text-shadow:0 0 4px rgba(0,0,0,.5)}.chat-main{position:relative}@media (max-width: 640px){.sidebar-toggle{display:flex}.sidebar-overlay{display:block}.sidebar-wrapper{position:fixed;top:0;left:0;height:100vh;z-index:160;transform:translate(-100%);transition:transform .22s ease}.sidebar-wrapper.open{transform:translate(0)}.chat-header{padding-left:56px}.message-bubble{max-width:85%}.settings-panel{max-width:100%}}
