:root{--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--bubble-pad-y: 5px;--input-h: 36px;--btn-sm-h: 28px;--btn-md-h: 36px;--btn-lg-h: 44px;--r-xs: 4px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 20px;--r-bubble: 18px;--r-full: 9999px;--shadow-xs: 0 1px 2px rgba(0,0,0,.06);--shadow-sm: 0 2px 8px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 8px 28px rgba(0,0,0,.12), 0 2px 6px rgba(0,0,0,.06);--shadow-lg: 0 24px 56px rgba(0,0,0,.18), 0 4px 16px rgba(0,0,0,.1);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Inter", system-ui, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--text-xs: 12px;--text-sm: 13px;--text-md: 14px;--text-base: 15px;--text-lg: 16px;--text-xl: 17px;--t-fast: .12s cubic-bezier(.4,0,.2,1);--t-base: .18s cubic-bezier(.4,0,.2,1);--t-spring: .24s cubic-bezier(.34,1.56,.64,1);--transition: var(--t-base);--bg: #ffffff;--bg-secondary: #f4f4f5;--bg-chat: #e9eef5;--surface: #ebebeb;--surface-hi: #dcdcdc;--surface-2: #f0f0f0;--border: #e0e0e0;--border-soft: #ebebeb;--border-strong: #c4c4c4;--text: #000000;--text-secondary: #707579;--text-tertiary: #aaaaaa;--text-disabled: #c0c0c0;--text-2: var(--text-secondary);--text-3: var(--text-tertiary);--accent: #2481cc;--accent-hi: #1a6aac;--accent-soft: rgba(36,129,204,.12);--accent-on: #ffffff;--accent-grad: linear-gradient(160deg, #2481cc 0%, #1a6aac 100%);--shadow-accent: 0 4px 16px rgba(36,129,204,.3);--bubble-mine: #effdde;--bubble-mine-text: #000000;--bubble-other: #ffffff;--bubble-other-text: #000000;--danger: #e53935;--danger-soft: rgba(229,57,53,.1);--success: #4caf50;--success-soft: rgba(76,175,80,.1);--warn: #ff9800;--warn-soft: rgba(255,152,0,.1);--online: #4caf50;--unread-bg: var(--accent);--unread-color: #ffffff;--unread-muted-bg: var(--text-tertiary);color-scheme:light}[data-theme=dark]{--bg: #17212b;--bg-secondary: #0f1923;--bg-chat: #0e1621;--surface: #232e3c;--surface-hi: #2b3a4d;--surface-2: #1e2b38;--border: #2b3a4d;--border-soft: #1e2b38;--border-strong: #3a5068;--text: #f5f5f5;--text-secondary: #708499;--text-tertiary: #4a6278;--text-disabled: #2b3a4d;--text-2: var(--text-secondary);--text-3: var(--text-tertiary);--accent: #5ba8e0;--accent-hi: #4a95cc;--accent-soft: rgba(91,168,224,.15);--accent-on: #ffffff;--shadow-accent: 0 4px 16px rgba(91,168,224,.25);--bubble-mine: #2b5278;--bubble-mine-text: #ffffff;--bubble-other: #182533;--bubble-other-text: #f5f5f5;--danger: #ef5350;--danger-soft: rgba(239,83,80,.12);--success: #66bb6a;--success-soft: rgba(102,187,106,.12);--warn: #ffa726;--warn-soft: rgba(255,167,38,.12);--online: #4caf50;--unread-bg: var(--accent);--unread-muted-bg: var(--text-tertiary);--shadow-xs: 0 1px 2px rgba(0,0,0,.2);--shadow-sm: 0 2px 8px rgba(0,0,0,.24), 0 1px 2px rgba(0,0,0,.16);--shadow-md: 0 8px 28px rgba(0,0,0,.32), 0 2px 6px rgba(0,0,0,.2);--shadow-lg: 0 24px 56px rgba(0,0,0,.4), 0 4px 16px rgba(0,0,0,.24);color-scheme:dark}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]){--bg: #17212b;--bg-secondary: #0f1923;--bg-chat: #0e1621;--surface: #232e3c;--surface-hi: #2b3a4d;--surface-2: #1e2b38;--border: #2b3a4d;--border-soft: #1e2b38;--border-strong: #3a5068;--text: #f5f5f5;--text-secondary: #708499;--text-tertiary: #4a6278;--text-disabled: #2b3a4d;--text-2: var(--text-secondary);--text-3: var(--text-tertiary);--accent: #5ba8e0;--accent-hi: #4a95cc;--accent-soft: rgba(91,168,224,.15);--shadow-accent: 0 4px 16px rgba(91,168,224,.25);--bubble-mine: #2b5278;--bubble-mine-text: #ffffff;--bubble-other: #182533;--bubble-other-text: #f5f5f5;--danger: #ef5350;--danger-soft: rgba(239,83,80,.12);--success: #66bb6a;--success-soft: rgba(102,187,106,.12);--warn: #ffa726;--warn-soft: rgba(255,167,38,.12);--online: #4caf50;--shadow-xs: 0 1px 2px rgba(0,0,0,.2);--shadow-sm: 0 2px 8px rgba(0,0,0,.24), 0 1px 2px rgba(0,0,0,.16);--shadow-md: 0 8px 28px rgba(0,0,0,.32), 0 2px 6px rgba(0,0,0,.2);--shadow-lg: 0 24px 56px rgba(0,0,0,.4), 0 4px 16px rgba(0,0,0,.24);color-scheme:dark}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;font-family:var(--font-sans);font-size:var(--text-base);line-height:1.45;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;color:var(--text);background:var(--bg-secondary);overflow-x:hidden}@supports (padding: env(safe-area-inset-top)){body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none;color:inherit}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hi)}::selection{background:var(--accent-soft);color:var(--text)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#0000001f;border-radius:var(--r-full)}::-webkit-scrollbar-thumb:hover{background:#00000038}[data-theme=dark] ::-webkit-scrollbar-thumb,:root:not([data-theme=light]):not([data-theme=dark]):is([data-dark]) ::-webkit-scrollbar-thumb{background:#ffffff1f}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:focus:not(:focus-visible){outline:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--btn-md-h);padding:0 var(--s-4);border-radius:var(--r-md);font-size:var(--text-md);font-weight:600;letter-spacing:-.1px;transition:background var(--t-base),color var(--t-base),opacity var(--t-base),transform var(--t-base);white-space:nowrap}.btn:active:not(:disabled){transform:scale(.96)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-primary{background:var(--accent);color:var(--accent-on)}.btn-primary:hover:not(:disabled){background:var(--accent-hi)}.btn-primary:active:not(:disabled){background:color-mix(in srgb,var(--accent-hi) 90%,#000 10%)}.btn-secondary{background:var(--surface);color:var(--text)}.btn-secondary:hover:not(:disabled){background:var(--surface-hi)}.btn-ghost{background:transparent;color:var(--accent);font-weight:500}.btn-ghost:hover:not(:disabled){background:var(--accent-soft)}.btn-ghost-danger{background:transparent;color:var(--danger);font-weight:500}.btn-ghost-danger:hover:not(:disabled){background:var(--danger-soft)}.btn-danger{background:var(--danger-soft);color:var(--danger);font-weight:600}.btn-danger:hover:not(:disabled){background:var(--danger);color:#fff}.btn-sm{min-height:var(--btn-sm-h);padding:0 var(--s-3);font-size:var(--text-sm)}.btn-lg{min-height:var(--btn-lg-h);padding:0 var(--s-5);font-size:var(--text-base)}.btn-round{border-radius:var(--r-full);padding:0;width:var(--btn-md-h)}.btn-round.btn-sm{width:var(--btn-sm-h)}.btn-round.btn-lg{width:var(--btn-lg-h)}.field{display:block;width:100%;min-height:var(--input-h);padding:0 var(--s-3);background:var(--surface-2);border:1px solid transparent;border-radius:var(--r-md);color:var(--text);font-size:var(--text-md);transition:background var(--t-base),border-color var(--t-base);outline:none}.field:focus{background:var(--bg);border-color:var(--accent)}.field::placeholder{color:var(--text-tertiary)}.field:disabled{background:var(--surface);color:var(--text-tertiary);cursor:not-allowed}textarea.field{padding:var(--s-3) var(--s-4);min-height:80px;resize:vertical;line-height:1.5;font-family:inherit}.label{display:block;font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--s-1);font-weight:500}.helper{font-size:var(--text-xs);color:var(--text-tertiary);margin-top:var(--s-1)}.err{color:var(--danger);background:var(--danger-soft);padding:var(--s-2) var(--s-3);border-radius:var(--r-md);font-size:var(--text-sm);font-weight:500}.err.small{font-size:var(--text-xs);padding:var(--s-1) var(--s-2)}.info{color:var(--success);background:var(--success-soft);padding:var(--s-2) var(--s-3);border-radius:var(--r-md);font-size:var(--text-sm);font-weight:500}[data-theme=dark] .info{color:var(--success)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]) .info{color:var(--success)}}.card{background:var(--surface-2);border-radius:var(--r-lg);padding:var(--s-4)}.card+.card{margin-top:var(--s-3)}.centered{display:flex;min-height:100vh;align-items:center;justify-content:center;padding:var(--s-4);background:radial-gradient(circle at 20% 20%,rgba(36,129,204,.07),transparent 55%),radial-gradient(circle at 80% 80%,rgba(36,129,204,.04),transparent 55%),var(--bg-secondary)}.auth{display:flex;flex-direction:column;gap:var(--s-4);width:100%;max-width:380px;padding:var(--s-6) var(--s-5) var(--s-5);background:var(--bg);border-radius:var(--r-xl);box-shadow:var(--shadow-lg)}.auth h1{font-size:24px;font-weight:700;text-align:center;letter-spacing:-.5px;margin:var(--s-2) 0 var(--s-1)}.auth .tabs{display:flex;gap:3px;padding:3px;background:var(--surface);border-radius:var(--r-md);margin:var(--s-1) 0 var(--s-2)}.auth .tabs button{flex:1;min-height:30px;padding:0 var(--s-3);border-radius:var(--r-sm);font-size:var(--text-sm);font-weight:600;color:var(--text-secondary);transition:background var(--t-base),color var(--t-base)}.auth .tabs button.active{background:var(--bg);color:var(--text);box-shadow:var(--shadow-xs)}.auth .link{text-align:center;font-size:var(--text-sm);color:var(--text-tertiary);padding:var(--s-2)}.auth .link:hover{color:var(--text)}.auth-modern{max-width:400px}.auth-logo{width:68px;height:68px;background:var(--accent-grad);color:#fff;border-radius:var(--r-xl);display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700;margin:0 auto;box-shadow:var(--shadow-accent);letter-spacing:-1px}.auth-fields{display:flex;flex-direction:column;gap:var(--s-3)}.auth-field{display:flex;flex-direction:column;gap:var(--s-1)}.auth-submit{width:100%;margin-top:var(--s-2);min-height:var(--btn-lg-h)}.auth-foot{text-align:center;font-size:var(--text-md);color:var(--text-secondary);margin-top:var(--s-2)}.link-inline{background:none;border:none;padding:0;color:var(--accent);font-size:inherit;cursor:pointer;font-weight:600}.link-inline:hover{color:var(--accent-hi)}.pending-screen{text-align:center}.pending-screen .emoji{display:flex;align-items:center;justify-content:center;margin:var(--s-3) auto;color:var(--accent)}.layout{display:grid;grid-template-columns:340px 1fr;gap:0;height:100vh;background:var(--bg-secondary)}.layout.with-info{grid-template-columns:340px 1fr 360px}.sidebar{background:var(--bg);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.me{padding:var(--s-3) var(--s-4);display:flex;justify-content:space-between;align-items:center;gap:var(--s-3)}.me-button{width:100%;background:transparent;border:none;border-bottom:1px solid var(--border-soft);padding:var(--s-2) var(--s-3);display:flex;align-items:center;gap:var(--s-3);cursor:pointer;text-align:left;height:52px;min-height:52px;transition:background var(--t-base)}.me-button:hover{background:var(--bg-secondary)}.me-info{display:flex;flex-direction:column;min-width:0;flex:1}.me-name{font-size:var(--text-xl);font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.2px}.me-sub{font-size:var(--text-xs);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}.me-edit-icon{color:var(--text-tertiary);flex-shrink:0;opacity:.6}.me-button:hover .me-edit-icon{opacity:1;color:var(--accent)}.admin-link{display:flex;align-items:center;gap:var(--s-2);margin:var(--s-2) var(--s-3) 0;padding:var(--s-2) var(--s-3);background:var(--surface-2);color:var(--accent);border-radius:var(--r-sm);font-size:var(--text-md);font-weight:600;text-decoration:none;transition:background var(--t-base)}.admin-link svg{flex-shrink:0}.admin-link:hover{background:var(--surface);color:var(--accent-hi)}.admin-link.public{background:transparent;color:var(--text-tertiary);font-size:var(--text-sm);font-weight:400}.admin-link.public:hover{color:var(--text);background:transparent}.sidebar-search-wrap{padding:var(--s-2) var(--s-3) var(--s-1);display:flex;flex-direction:column;gap:var(--s-1);border-bottom:1px solid var(--border-soft)}.sidebar-search{display:flex;align-items:center;gap:var(--s-2);background:var(--surface-2);border-radius:var(--r-full);padding:0 var(--s-3);height:34px;border:1px solid transparent;transition:border-color var(--t-base),background var(--t-base)}.sidebar-search:focus-within{border-color:var(--accent);background:var(--bg)}.sidebar-search svg{color:var(--text-tertiary);flex-shrink:0}.sidebar-search input{flex:1;border:none;background:transparent;outline:none;font-size:var(--text-base);color:var(--text);min-width:0}.sidebar-search input::placeholder{color:var(--text-tertiary)}.sidebar-filter-tabs{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;padding:2px 0}.sidebar-filter-tabs::-webkit-scrollbar{display:none}.sidebar-filter-tab{flex-shrink:0;padding:4px 10px;border-radius:var(--r-full);font-size:var(--text-sm);font-weight:500;color:var(--text-secondary);background:transparent;border:none;cursor:pointer;transition:background var(--t-base),color var(--t-base);white-space:nowrap}.sidebar-filter-tab:hover{background:var(--surface-2);color:var(--text)}.sidebar-filter-tab.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.sidebar-section{margin-top:var(--s-3)}.sidebar-section-header{display:flex;justify-content:space-between;align-items:center;padding:4px var(--s-4) 4px;font-size:var(--text-xs);color:var(--text-secondary);font-weight:700;letter-spacing:.5px;text-transform:uppercase}.sidebar-section-header button{width:26px;height:26px;border-radius:50%;color:var(--accent);font-size:20px;font-weight:400;line-height:1;display:flex;align-items:center;justify-content:center;transition:background var(--t-base)}.sidebar-section-header button:hover{background:var(--accent-soft)}.sidebar-empty{padding:var(--s-4);color:var(--text-tertiary);font-size:var(--text-sm);text-align:center}.pinned-section-label{padding:6px var(--s-4) 4px;font-size:var(--text-xs);font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--text-tertiary);display:flex;align-items:center;gap:4px}.pinned-separator{height:1px;background:var(--border-soft);margin:2px var(--s-3)}.sidebar-logout{margin:auto var(--s-3) var(--s-3);padding:var(--s-2) var(--s-3);background:transparent;border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text-secondary);font-size:var(--text-md);font-weight:500;transition:background var(--t-base),color var(--t-base)}.sidebar-logout:hover{background:var(--surface-2);color:var(--text)}.chat-list{list-style:none;padding:2px 0}.chat-list-item{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);cursor:pointer;position:relative;min-width:0;transition:background var(--t-fast)}.chat-list-item:hover{background:var(--bg-secondary)}.chat-list-item.active{background:var(--accent)}.chat-list-item.active .chat-list-name,.chat-list-item.active .chat-list-time{color:#fff}.chat-list-item.active .chat-list-preview{color:#ffffffd9}.chat-list-item.active .pin-mark{color:#ffffffb3}.chat-list-item.active .typing-preview{color:#fffffff2}.chat-list-item.active .ch-action{color:#ffffffbf}.chat-list-item.active .ch-action:hover{background:#ffffff2e;color:#fff}.chat-list-item.active .unread-badge{background:#ffffff4d;color:#fff}.chat-list-item.pinned:not(.active){background:transparent}.chat-list-item.pinned:not(.active):hover{background:var(--bg-secondary)}.chat-list-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.chat-list-row{display:flex;align-items:baseline;gap:var(--s-2);min-width:0}.chat-list-name{flex:1;font-size:var(--text-lg);font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;letter-spacing:-.15px}.chat-list-time{font-size:var(--text-xs);color:var(--text-tertiary);flex-shrink:0;font-weight:400}.chat-list-preview{font-size:var(--text-sm);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;line-height:1.3}.pin-mark{margin-right:3px;opacity:.6;color:var(--text-tertiary);vertical-align:middle}.chat-list-actions{display:flex;gap:2px;opacity:0;transition:opacity var(--t-base);flex-shrink:0}.chat-list-item:hover .chat-list-actions,.chat-list-item.active .chat-list-actions{opacity:1}@media (hover: none){.chat-list-actions{opacity:1}}.ch-action{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:transparent;color:var(--text-tertiary);transition:background var(--t-fast),color var(--t-fast)}.ch-action:hover{background:#00000012;color:var(--text)}.ch-action.danger:hover{background:var(--danger);color:#fff}.ch-action svg{display:block}.avatar-circle{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:#fff;font-weight:600;flex-shrink:0;text-transform:uppercase;-webkit-user-select:none;user-select:none;overflow:hidden;letter-spacing:-.5px}.avatar-wrap{position:relative;display:inline-flex;flex-shrink:0}.online-dot{position:absolute;bottom:1px;right:1px;width:10px;height:10px;border-radius:50%;background:var(--online);border:2px solid var(--bg);box-shadow:0 0 0 1px #00000014}.chat-list-item.active .online-dot{border-color:var(--accent)}.user-picker-avatar{width:36px;height:36px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:var(--text-md);flex-shrink:0;text-transform:uppercase}.user-picker-avatar.small{width:28px;height:28px;font-size:var(--text-xs)}.unread-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:var(--r-full);background:var(--unread-bg);color:var(--unread-color);font-size:11px;font-weight:700;flex-shrink:0;letter-spacing:-.3px}.unread-badge.muted{background:var(--unread-muted-bg)}.typing-preview{font-style:italic;color:var(--accent)}.chat{display:flex;flex-direction:column;height:100vh;min-width:0;background:var(--bg-chat)}.empty{display:flex;flex:1;align-items:center;justify-content:center;background:var(--bg-chat)}.empty-state{background:var(--bg);border-radius:var(--r-lg);padding:var(--s-6);text-align:center;color:var(--text-secondary);box-shadow:var(--shadow-sm)}.empty-state .emoji{font-size:48px;display:flex;align-items:center;justify-content:center;margin:0 auto var(--s-3);color:var(--text-tertiary)}.empty-state .title{font-size:var(--text-xl);color:var(--text);margin-bottom:4px;font-weight:600}.empty-state .help{font-size:var(--text-md);color:var(--text-tertiary)}.chat .empty .empty-state.transparent-card{background:transparent;box-shadow:none}.chat-header{display:flex;align-items:center;gap:var(--s-2);padding:0 var(--s-3);border-bottom:1px solid var(--border-soft);background:var(--bg);min-height:52px;height:52px;position:sticky;top:0;z-index:2;flex-shrink:0}.chat-back{width:38px;height:38px;display:none;align-items:center;justify-content:center;border-radius:50%;color:var(--accent);flex-shrink:0;transition:background var(--t-fast)}.chat-back:hover{background:var(--accent-soft)}.chat-header-info{display:flex;align-items:center;gap:var(--s-3);min-width:0;flex:1;background:transparent;border:none;padding:var(--s-1) var(--s-2);text-align:left;border-radius:var(--r-sm);cursor:pointer;transition:background var(--t-fast)}.chat-header-info:hover{background:var(--bg-secondary)}.chat-header-text{min-width:0}.chat-header h2{font-size:var(--text-lg);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.2px;color:var(--text)}.chat-header-sub{font-size:var(--text-xs);color:var(--text-secondary);line-height:1.2}.chat-header-sub.typing{color:var(--accent);font-style:italic}.chat-header-actions{display:flex;align-items:center;gap:var(--s-1);flex-shrink:0}.chat-header-btn{width:36px;height:36px;border-radius:50%;color:var(--text-secondary);display:inline-flex;align-items:center;justify-content:center;background:transparent;transition:background var(--t-fast),color var(--t-fast);flex-shrink:0}.chat-header-btn:hover:not(:disabled){background:var(--bg-secondary);color:var(--accent)}.chat-header-btn.active{background:var(--accent-soft);color:var(--accent)}.chat-header-btn:disabled{opacity:.3;cursor:not-allowed}.chat-header-menu-wrap{position:relative}.chat-header-dropdown{position:absolute;top:calc(100% + 4px);right:0;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-md);min-width:200px;z-index:30;padding:4px;display:flex;flex-direction:column;gap:1px;animation:menuIn .12s ease}@keyframes menuIn{0%{opacity:0;transform:scale(.96) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}.chat-header-dropdown button{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r-sm);font-size:var(--text-base);color:var(--text);text-align:left;width:100%;transition:background var(--t-fast)}.chat-header-dropdown button:hover{background:var(--bg-secondary)}.chat-header-dropdown button.danger{color:var(--danger)}.chat-header-dropdown button.danger:hover{background:var(--danger);color:#fff}.chat-header-dropdown button.danger:hover svg{color:#fff}.chat-header-dropdown button svg{color:var(--text-tertiary);flex-shrink:0}.pin-bar{display:flex;align-items:center;gap:var(--s-2);padding:6px var(--s-4);border-bottom:1px solid var(--border-soft);background:var(--bg);min-height:38px;position:relative;z-index:1;flex-shrink:0}.pin-bar-stripe{width:3px;height:28px;border-radius:2px;background:var(--accent);flex-shrink:0}.pin-bar-content{flex:1;display:flex;flex-direction:column;min-width:0;text-align:left;gap:1px;background:transparent;border:none;cursor:pointer}.pin-bar-label{display:flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.3px}.pin-bar-text{font-size:var(--text-sm);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pin-bar-close{width:26px;height:26px;border-radius:50%;background:transparent;color:var(--text-tertiary);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:background var(--t-fast),color var(--t-fast)}.pin-bar-close:hover{background:var(--surface);color:var(--text)}.messages{flex:1;overflow-y:auto;padding:var(--s-3) var(--s-4) var(--s-3);display:flex;flex-direction:column;gap:2px;background:radial-gradient(ellipse at 10% 20%,rgba(36,129,204,.04) 0%,transparent 50%),radial-gradient(ellipse at 90% 80%,rgba(36,129,204,.03) 0%,transparent 50%),repeating-linear-gradient(45deg,transparent,transparent 20px,rgba(0,0,0,.012) 20px,rgba(0,0,0,.012) 21px),var(--bg-chat)}[data-theme=dark] .messages{background:radial-gradient(ellipse at 10% 20%,rgba(91,168,224,.04) 0%,transparent 50%),radial-gradient(ellipse at 90% 80%,rgba(91,168,224,.03) 0%,transparent 50%),repeating-linear-gradient(45deg,transparent,transparent 20px,rgba(255,255,255,.008) 20px,rgba(255,255,255,.008) 21px),var(--bg-chat)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]) .messages{background:radial-gradient(ellipse at 10% 20%,rgba(91,168,224,.04) 0%,transparent 50%),radial-gradient(ellipse at 90% 80%,rgba(91,168,224,.03) 0%,transparent 50%),repeating-linear-gradient(45deg,transparent,transparent 20px,rgba(255,255,255,.008) 20px,rgba(255,255,255,.008) 21px),var(--bg-chat)}}.messages-spacer{flex:1 0 0}.load-older-spinner{display:flex;justify-content:center;padding:var(--s-3) 0}.spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:var(--r-full);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.date-separator{display:flex;justify-content:center;position:sticky;top:var(--s-2);z-index:1;margin:var(--s-3) 0;pointer-events:none}.date-separator span{background:#0003;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:#fff;padding:4px 12px;border-radius:var(--r-full);font-size:12px;font-weight:500;letter-spacing:-.1px}[data-theme=dark] .date-separator span{background:#ffffff1f}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]) .date-separator span{background:#ffffff1f}}:root{--bubble-max: 92%}@media (min-width: 768px){:root{--bubble-max: min(85%, 640px)}}@media (min-width: 1100px){:root{--bubble-max: min(62%, 760px)}}@media (min-width: 1600px){:root{--bubble-max: min(60%, 900px)}}.bubble-row{display:flex;align-items:flex-end;gap:var(--s-2);max-width:100%;margin-top:2px;padding:0 8px;border-radius:var(--r-sm);transition:background var(--t-fast)}.bubble-row:hover{background:#00000008}[data-theme=dark] .bubble-row:hover{background:#ffffff08}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]) .bubble-row:hover{background:#ffffff08}}.bubble-row.ctx-open{background:#0000000d}[data-theme=dark] .bubble-row.ctx-open{background:#ffffff0d}.bubble-row.mine{justify-content:flex-end}.bubble-row.grouped{margin-top:1px}.bubble-avatar-slot{flex-shrink:0;width:32px}.bubble{position:relative;padding:var(--bubble-pad-y) 10px;background:var(--bubble-other);color:var(--bubble-other-text);border-radius:var(--r-bubble);max-width:var(--bubble-max, min(640px, 75%));white-space:normal;word-break:normal;overflow-wrap:break-word;-webkit-hyphens:none;hyphens:none;min-width:fit-content;font-size:var(--text-base);line-height:1.34;letter-spacing:-.1px;box-shadow:var(--shadow-xs)}.bubble-row.last-in-group:not(.mine) .bubble{border-bottom-left-radius:var(--r-xs)}.bubble-row.last-in-group.mine .bubble{border-bottom-right-radius:var(--r-xs)}.bubble-row.last-in-group .bubble.media-only{border-radius:var(--r-bubble)}.bubble:not(.mine){border-bottom-left-radius:var(--r-xs)}.bubble-row.grouped:not(.mine) .bubble{border-top-left-radius:var(--r-xs)}.bubble.mine{background:var(--bubble-mine);color:var(--bubble-mine-text);border-bottom-right-radius:var(--r-xs)}.bubble-row.grouped.mine .bubble{border-top-right-radius:var(--r-xs)}.bubble.mine .bubble-time{color:#00000061}[data-theme=dark] .bubble.mine .bubble-time{color:#ffffff8c}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]) .bubble.mine .bubble-time{color:#ffffff8c}}.bubble.media-only{padding:0;background:transparent;box-shadow:none}.bubble.media-only.mine{background:transparent}.bubble.media-only .bubble-time{position:absolute;bottom:8px;right:10px;background:#0000007a;color:#fffffff2;padding:2px 8px;border-radius:var(--r-full);font-size:11px;margin-top:0}.bubble-author{font-size:var(--text-xs);font-weight:600;line-height:1.2;margin-bottom:3px;letter-spacing:-.1px}.bubble-row.mine .bubble-author{display:none}.bubble-text{white-space:pre-wrap;flex:1 1 auto}.bubble-body{display:block;min-width:0}.bubble-body .bubble-text{white-space:pre-wrap;word-break:break-word;overflow-wrap:break-word;display:inline;line-height:1.38}.bubble-meta{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:var(--text-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;-webkit-user-select:none;user-select:none;float:right;margin-left:6px;line-height:1;transform:translateY(3px)}.bubble-body:after{content:"";display:block;clear:both}.bubble.mine .bubble-meta{color:#00000061}[data-theme=dark] .bubble.mine .bubble-meta{color:#ffffff8c}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]) .bubble.mine .bubble-meta{color:#ffffff8c}}.bubble-time{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:var(--text-tertiary);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;white-space:nowrap;line-height:1;justify-content:flex-end;margin-top:4px}.bubble-checks{display:inline-flex;align-items:center;margin-left:1px;flex-shrink:0;font-size:12px;line-height:1;letter-spacing:-1px}.bubble-checks.read{color:var(--accent)}.bubble-checks.sent{color:var(--text-tertiary)}.bubble-checks.pending{color:var(--text-tertiary);opacity:.8}[data-theme=dark] .bubble.mine .bubble-checks.read{color:#64b5f6}[data-theme=dark] .bubble.mine .bubble-checks.sent{color:#ffffff80}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]) .bubble.mine .bubble-checks.read{color:#64b5f6}:root:not([data-theme=light]):not([data-theme=dark]) .bubble.mine .bubble-checks.sent{color:#ffffff80}}.bubble-edited{font-style:italic;opacity:.75;margin-right:3px}.bubble-ctx-menu{position:fixed;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-md);display:flex;flex-direction:column;min-width:200px;max-width:min(220px,calc(100vw - 16px));z-index:1001;padding:4px;color:var(--text);animation:menuIn .1s ease}.bubble-ctx-menu button{display:flex;align-items:center;gap:9px;text-align:left;padding:7px 10px;border-radius:var(--r-sm);font-size:var(--text-base);color:var(--text);width:100%;transition:background var(--t-fast)}.bubble-ctx-menu button:hover{background:var(--bg-secondary)}.bubble-ctx-menu button svg{color:var(--text-secondary);flex-shrink:0}.bubble-ctx-menu button.danger{color:var(--danger)}.bubble-ctx-menu button.danger:hover{background:var(--danger);color:#fff}.bubble-ctx-menu button.danger:hover svg{color:#fff}.bubble-ctx-menu button.danger svg{color:var(--danger)}.bubble-ctx-menu-divider{height:1px;background:var(--border-soft);margin:3px 0}.bubble-ctx-menu-date{padding:4px 10px 6px;font-size:12px;color:var(--text-tertiary);-webkit-user-select:none;user-select:none;cursor:default;white-space:nowrap}.bubble-menu-reactions{display:flex;padding:4px 6px 3px;gap:2px;border-bottom:1px solid var(--border-soft);margin-bottom:2px}.bubble-menu-reactions button{font-size:20px;padding:3px 5px;border-radius:var(--r-xs);line-height:1;min-width:0;gap:0;transition:background var(--t-fast),transform 80ms}.bubble-menu-reactions button:hover{background:var(--surface-2);transform:scale(1.2)}.bubble-edit{display:flex;flex-direction:column;gap:6px;min-width:200px}.bubble-edit textarea{background:#0000000f;border:1px solid rgba(0,0,0,.15);border-radius:var(--r-sm);color:inherit;font-size:var(--text-lg);font-family:inherit;padding:7px 10px;resize:vertical;min-height:60px;outline:none}.bubble.mine .bubble-edit textarea{background:#0000001a;border-color:#0003}[data-theme=dark] .bubble-edit textarea{background:#ffffff14;border-color:#ffffff26}[data-theme=dark] .bubble.mine .bubble-edit textarea{background:#ffffff1a;border-color:#ffffff2e}.bubble-edit-actions{display:flex;gap:6px;justify-content:flex-end}.bubble-edit-actions button{padding:4px 12px;border-radius:var(--r-full);background:transparent;color:inherit;font-size:var(--text-sm);font-weight:600;opacity:.8}.bubble-edit-actions button:hover{opacity:1}.bubble-edit-actions button.primary{background:#0000001f;opacity:1}.bubble.mine .bubble-edit-actions button.primary{background:#0000002e}.bubble:not(.mine) .bubble-edit-actions button.primary{background:var(--accent);color:#fff}.bubble-pinned-mark{display:inline-flex;align-items:center;margin-right:3px;color:var(--accent);opacity:.7}.bubble.mine .bubble-pinned-mark{color:#00000080}[data-theme=dark] .bubble.mine .bubble-pinned-mark{color:#fff9}.bubble-forward-from{font-size:var(--text-xs);font-weight:600;color:var(--accent);margin-bottom:4px;display:flex;align-items:center;gap:4px}.bubble.mine .bubble-forward-from{color:#0000008c}[data-theme=dark] .bubble.mine .bubble-forward-from{color:#ffffffb3}.bubble-reply-quote{display:flex;gap:6px;margin-bottom:6px;cursor:pointer;border-radius:var(--r-xs);padding:4px 6px;background:#0000000f;transition:background var(--t-fast)}.bubble.mine .bubble-reply-quote{background:#00000017}.bubble-reply-quote:hover{background:#0000001a}.bubble.mine .bubble-reply-quote:hover{background:#00000021}[data-theme=dark] .bubble-reply-quote{background:#ffffff12}[data-theme=dark] .bubble.mine .bubble-reply-quote{background:#ffffff17}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]) .bubble-reply-quote{background:#ffffff12}:root:not([data-theme=light]):not([data-theme=dark]) .bubble.mine .bubble-reply-quote{background:#ffffff17}}.bubble-reply-stripe{width:3px;align-self:stretch;border-radius:2px;background:var(--accent);flex-shrink:0}.bubble.mine .bubble-reply-stripe{background:#00000059}[data-theme=dark] .bubble.mine .bubble-reply-stripe{background:#ffffff8c}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]) .bubble.mine .bubble-reply-stripe{background:#ffffff8c}}.bubble-reply-body{min-width:0;flex:1}.bubble-reply-name{font-size:11px;font-weight:600;color:var(--accent);margin-bottom:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bubble.mine .bubble-reply-name{color:#0009}[data-theme=dark] .bubble.mine .bubble-reply-name{color:#fffc}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]) .bubble.mine .bubble-reply-name{color:#fffc}}.bubble-reply-text{font-size:var(--text-sm);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bubble.mine .bubble-reply-text{color:#00000080}[data-theme=dark] .bubble.mine .bubble-reply-text{color:#fff9}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]) .bubble.mine .bubble-reply-text{color:#fff9}}.bubble-reply-text.deleted{font-style:italic}.bubble-reactions{display:flex;flex-wrap:wrap;gap:3px;margin-top:4px;padding:0 2px}.reaction-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:var(--r-full);background:var(--bg);border:1px solid var(--border);font-size:var(--text-sm);height:22px;cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),transform 80ms;-webkit-user-select:none;user-select:none;line-height:1;font-variant-numeric:tabular-nums}.reaction-chip:hover{background:var(--surface);border-color:var(--border-strong);transform:scale(1.04)}.reaction-chip.mine{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.reaction-chip.mine:hover{background:#2481cc2e}[data-theme=dark] .reaction-chip.mine:hover{background:#5ba8e038}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]) .reaction-chip.mine:hover{background:#5ba8e038}}.reaction-chip-count{font-size:var(--text-xs);font-weight:600;color:var(--text-secondary)}.reaction-chip.mine .reaction-chip-count{color:var(--accent)}@keyframes highlightFade{0%{background:#2481cc38}to{background:transparent}}.bubble-row.highlight-flash .bubble{animation:highlightFade 1.8s ease forwards}.attachments{display:flex;flex-direction:column;gap:var(--s-2);margin-top:var(--s-1)}.att-image{max-width:100%;max-height:340px;border-radius:var(--r-bubble);cursor:zoom-in;display:block}.att-image-wrap{position:relative;display:block;max-width:100%;max-height:340px;border-radius:var(--r-bubble);overflow:hidden;cursor:zoom-in;background-size:cover;background-position:center;background-repeat:no-repeat;flex-shrink:0;outline:none}.att-image-wrap:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.att-image-thumb{display:block;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .2s ease;position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit}.att-image-thumb.loaded{opacity:1}.att-audio{width:100%;max-width:300px;height:36px}.att-video{max-width:100%;max-height:360px;border-radius:var(--r-bubble)}.att-file{display:inline-flex;gap:var(--s-2);align-items:center;padding:var(--s-2) var(--s-3);background:#0000000f;border-radius:var(--r-sm);color:inherit;font-size:var(--text-md);max-width:100%;text-decoration:none;font-weight:500}.bubble:not(.mine) .att-file{background:var(--surface-2);border:1px solid var(--border-soft);color:var(--text)}.bubble:not(.mine) .att-file:hover{background:var(--surface)}.att-file:hover{background:#0000001a}.att-size{opacity:.6;font-size:var(--text-xs)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000f0;display:flex;align-items:center;justify-content:center;z-index:1000;flex-direction:column;cursor:zoom-out;padding:var(--s-4)}.lightbox img{max-width:92vw;max-height:84vh;object-fit:contain;cursor:default;border-radius:var(--r-sm);box-shadow:0 20px 60px #000000b3}.lightbox-close{position:absolute;top:var(--s-4);right:var(--s-4);width:42px;height:42px;background:#ffffff1f;color:#fff;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;line-height:0;padding:0}.lightbox-close svg{display:block}.lightbox-close:hover{background:#fff3}.lightbox-caption{color:#ffffffa6;margin-top:var(--s-3);font-size:var(--text-sm)}.lightbox-img-wrap{position:relative;max-width:92vw;max-height:84vh;cursor:default;border-radius:var(--r-sm);overflow:hidden;box-shadow:0 20px 60px #000000b3;display:flex;align-items:center;justify-content:center}.lightbox-img-preview{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;filter:blur(12px);transform:scale(1.1);background-size:cover;background-position:center}.lightbox-img-full{position:relative;max-width:92vw;max-height:84vh;object-fit:contain;cursor:default;opacity:0;transition:opacity .24s ease;z-index:1}.lightbox-img-full.loaded{opacity:1}.composer{display:flex;flex-direction:column;gap:var(--s-1);padding:var(--s-2) var(--s-3);border-top:1px solid var(--border-soft);background:var(--bg);flex-shrink:0}.composer-pill-row{display:flex;gap:var(--s-2);align-items:flex-end}.composer-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;color:var(--text-tertiary);border-radius:50%;transition:background var(--t-fast),color var(--t-fast);flex-shrink:0}.composer-icon:hover:not(:disabled){background:var(--surface-2);color:var(--accent)}.composer-icon:disabled{opacity:.4;cursor:not-allowed}.composer-icon.mic{color:var(--text-tertiary)}.composer-icon.mic.recording{background:var(--danger);color:#fff;animation:pulse 1.2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.composer-pill{flex:1;min-height:36px;padding:8px var(--s-4);background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--r-bubble);outline:none;font-size:var(--text-lg);transition:border-color var(--t-base),background var(--t-base);color:var(--text);line-height:1.3;resize:none;overflow-y:hidden;max-height:min(34vh,260px);font-family:inherit;box-sizing:border-box}.composer-pill:focus{border-color:var(--accent);background:var(--bg)}.composer-pill::placeholder{color:var(--text-tertiary)}.composer-send{width:36px;height:36px;background:var(--accent);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background var(--t-fast),transform var(--t-spring);flex-shrink:0;animation:sendBtnIn var(--t-spring) both}@keyframes sendBtnIn{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}.composer-send:hover:not(:disabled){background:var(--accent-hi);transform:scale(1.08)}.composer-send:disabled{opacity:.4;cursor:not-allowed}.composer-attachments{display:flex;gap:var(--s-2);flex-wrap:wrap;padding:2px 0}.composer-att{position:relative;display:flex;flex-direction:column;gap:4px;background:var(--surface-2);border-radius:var(--r-sm);padding:6px;width:108px;align-items:center}.composer-att img{width:100%;height:72px;object-fit:cover;border-radius:var(--r-xs)}.composer-att .att-icon{width:100%;height:72px;display:flex;align-items:center;justify-content:center;font-size:28px;background:var(--bg);border-radius:var(--r-xs)}.composer-att .att-name{font-size:11px;color:var(--text-secondary);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.composer-att>button{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;background:var(--danger);color:#fff;display:inline-flex;align-items:center;justify-content:center;line-height:0;padding:0;box-shadow:var(--shadow-sm)}.composer-att>button svg{display:block}.composer-emoji-btn{position:absolute;right:4px;bottom:0;height:36px;width:32px;flex-shrink:0;border-radius:50%;color:var(--text-tertiary);transition:color var(--t-fast),background var(--t-fast)}.composer-emoji-btn:hover{color:var(--accent);background:var(--surface-2)}.composer-emoji-btn.active{color:var(--accent)}.composer-pill{padding-right:38px}.emoji-picker{position:absolute;bottom:calc(100% + 8px);right:0;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-md);padding:var(--s-2);z-index:200;animation:menuIn .12s ease;min-width:230px}.emoji-picker-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:2px}.emoji-picker-btn{font-size:22px;line-height:1;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--r-sm);transition:background var(--t-fast),transform 80ms;cursor:pointer}.emoji-picker-btn:hover{background:var(--surface-2);transform:scale(1.18)}.composer-readonly{padding:var(--s-4);text-align:center;color:var(--text-tertiary);font-size:var(--text-md);border-top:1px solid var(--border-soft);background:var(--surface-2)}.reply-bar{display:flex;align-items:center;gap:var(--s-2);padding:6px var(--s-3);background:var(--bg);border-top:1px solid var(--border-soft);min-height:40px}.reply-bar-stripe{width:3px;align-self:stretch;border-radius:2px;background:var(--accent);flex-shrink:0}.reply-bar-content{flex:1;min-width:0}.reply-bar-name{font-size:var(--text-xs);font-weight:600;color:var(--accent);margin-bottom:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-bar-text{font-size:var(--text-sm);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-bar-close{color:var(--text-tertiary);width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:background var(--t-fast),color var(--t-fast)}.reply-bar-close:hover{background:var(--surface);color:var(--text)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;overflow-y:auto;z-index:100;padding:var(--s-4);animation:fadein .18s ease}@keyframes fadein{0%{opacity:0}to{opacity:1}}.modal-card{background:var(--bg);border-radius:var(--r-xl);padding:var(--s-4);width:100%;max-width:460px;max-height:86vh;display:flex;flex-direction:column;gap:var(--s-3);box-shadow:var(--shadow-lg);overflow-y:auto;position:relative;animation:modalIn .22s cubic-bezier(.34,1.56,.64,1)}@keyframes modalIn{0%{transform:scale(.94);opacity:0}to{transform:scale(1);opacity:1}}.modal-header{display:flex;justify-content:space-between;align-items:center}.modal-header h2{font-size:20px;font-weight:700;letter-spacing:-.3px}.modal-close{width:28px;height:28px;border-radius:50%;background:var(--surface);color:var(--text-secondary);display:inline-flex;align-items:center;justify-content:center;line-height:0;padding:0;transition:background var(--t-fast)}.modal-close:hover{background:var(--surface-hi);color:var(--text)}.modal-close svg{display:block}.modal-actions{display:flex;justify-content:flex-end;gap:var(--s-2);margin-top:var(--s-2)}.modal-drag-handle{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.modal-drag-handle:active,.dragging .modal-drag-handle,.modal-card.dragging{cursor:grabbing}@media (max-width: 768px){.modal-drag-handle{cursor:default;touch-action:auto}}.user-picker-list{flex:1;overflow-y:auto;max-height:360px;display:flex;flex-direction:column;gap:1px;padding:var(--s-1) 0}.user-picker-item{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);cursor:pointer;transition:background var(--t-fast);text-align:left;width:100%;color:var(--text);font-size:var(--text-lg)}.user-picker-item:hover{background:var(--bg-secondary)}.user-picker-item.selected{background:var(--accent-soft)}.user-picker-check{margin-left:auto;color:var(--accent);font-weight:700;font-size:18px}.kind-selector{display:flex;gap:var(--s-2)}.kind-selector button{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:var(--s-3);background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--r-sm);color:var(--text);text-align:left;font-size:var(--text-md);font-weight:600;transition:background var(--t-base),border-color var(--t-base)}.kind-selector button:hover{background:var(--surface)}.kind-selector button.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.kind-sub{font-size:var(--text-xs);color:var(--text-tertiary);font-weight:400}.kind-selector button.active .kind-sub{color:var(--accent);opacity:.7}.sm-window,.modal-card.sm-window{width:min(1040px,92vw);height:min(700px,92vh);max-width:min(1040px,92vw)!important;max-height:min(700px,92vh)!important;min-width:720px;min-height:480px;padding:0!important;display:flex;flex-direction:row;overflow:hidden!important;border-radius:var(--r-xl);gap:0}.sm-sidebar{width:240px;flex-shrink:0;border-right:1px solid var(--border-soft);display:flex;flex-direction:column;background:var(--bg-secondary);border-radius:var(--r-xl) 0 0 var(--r-xl);overflow:hidden}.sm-sidebar-header{padding:var(--s-5) var(--s-4) var(--s-3);flex-shrink:0;-webkit-user-select:none;user-select:none;min-height:60px;display:flex;align-items:flex-end}.sm-sidebar-title{font-size:var(--text-xl);font-weight:700;letter-spacing:-.3px;color:var(--text)}.sm-nav{display:flex;flex-direction:column;gap:1px;padding:var(--s-2) var(--s-3);flex:1;overflow-y:auto}.sm-nav-item{display:flex;align-items:center;gap:var(--s-3);padding:0 var(--s-3);height:38px;border-radius:var(--r-md);font-size:var(--text-md);font-weight:500;color:var(--text-secondary);text-align:left;transition:background var(--t-fast),color var(--t-fast);width:100%;flex-shrink:0}.sm-nav-item:hover{background:var(--surface-2);color:var(--text)}.sm-nav-item.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.sm-sidebar-profile{border-top:1px solid var(--border-soft);padding:var(--s-2) var(--s-3);display:flex;align-items:center;gap:var(--s-2);cursor:pointer;transition:background var(--t-fast);flex-shrink:0;text-align:left;width:100%}.sm-sidebar-profile:hover{background:var(--surface-2)}.sm-sidebar-profile-info{flex:1;min-width:0}.sm-sidebar-profile-name{font-size:var(--text-md);font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sm-sidebar-profile-sub{font-size:var(--text-xs);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}.sm-sidebar-profile-chevron{color:var(--text-tertiary);flex-shrink:0;opacity:.5}.sm-content{flex:1;background:var(--bg-secondary);display:flex;flex-direction:column;overflow:hidden;position:relative;border-radius:0 var(--r-xl) var(--r-xl) 0}.sm-close-btn{position:absolute;top:var(--s-3);right:var(--s-3);z-index:2;width:32px;height:32px;border-radius:50%;background:var(--surface);color:var(--text-secondary);display:inline-flex;align-items:center;justify-content:center;transition:background var(--t-fast),color var(--t-fast);flex-shrink:0}.sm-close-btn:hover{background:var(--surface-hi);color:var(--text)}.sm-content-inner{flex:1;overflow-y:auto;padding:var(--s-5) var(--s-5) var(--s-5) var(--s-5);display:flex;flex-direction:column;gap:var(--s-4)}.sm-content-inner>*{flex-shrink:0}.sm-section-title{font-size:20px;font-weight:700;letter-spacing:-.3px;color:var(--text);flex-shrink:0;padding-right:48px}.sm-card{background:var(--bg);border-radius:var(--r-lg);overflow:hidden;max-width:640px}.sm-card-title{font-size:var(--text-md);font-weight:600;color:var(--text);padding:var(--s-3) var(--s-4) var(--s-2);border-bottom:1px solid var(--border-soft)}.sm-card-label{font-size:var(--text-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.6px;font-weight:700;padding:0 0 var(--s-2);max-width:640px}.sm-row{display:flex;align-items:center;gap:var(--s-3);padding:0 var(--s-4);min-height:52px;border-bottom:1px solid var(--border-soft)}.sm-row.sm-row-last{border-bottom:none}.sm-row-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--text-tertiary);flex-shrink:0;width:22px}.sm-row-label{flex:1;font-size:var(--text-md);color:var(--text);font-weight:400}.sm-row-label-col{flex:unset;font-size:var(--text-sm);font-weight:500;color:var(--text-secondary)}.sm-row-value{font-size:var(--text-md);color:var(--text-secondary);margin-left:auto}.sm-row-right{margin-left:auto;flex-shrink:0}.sm-row-input{flex:1;border:none;background:transparent;font:inherit;color:var(--text);text-align:right;outline:none;font-size:var(--text-md);padding:0;min-width:0}.sm-row-input::placeholder{color:var(--text-tertiary)}.sm-row-meta{font-size:var(--text-xs);color:var(--text-tertiary);margin-left:auto}.sm-row-column{flex-direction:column;align-items:stretch;gap:var(--s-2);padding:var(--s-3) var(--s-4);min-height:unset}.sm-row-col-header{display:flex;align-items:center;gap:var(--s-3)}.sm-row-textarea{border:none;background:var(--surface-2);border-radius:var(--r-sm);font:inherit;color:var(--text);outline:none;font-size:var(--text-md);padding:var(--s-2) var(--s-3);resize:vertical;min-height:72px;line-height:1.4;width:100%}.sm-row-textarea:focus{background:var(--bg);border:1px solid var(--accent)}.sm-card-footer{padding:var(--s-2) var(--s-4) var(--s-2);display:flex;justify-content:flex-end}.sm-pwd-fields{display:flex;flex-direction:column;gap:var(--s-2);padding:var(--s-3) var(--s-4) var(--s-2)}.sm-pwd-fields .field{max-width:380px}.sm-pwd-fields .field{min-height:var(--input-h);font-size:var(--text-md)}.sm-hero-card{max-width:640px}.sm-hero-body{display:flex;align-items:center;gap:var(--s-4);padding:var(--s-4)}.sm-hero-info{display:flex;flex-direction:column;gap:3px;min-width:0}.sm-hero-name{font-size:20px;font-weight:700;letter-spacing:-.3px;color:var(--text)}.sm-hero-username{font-size:var(--text-base);color:var(--text-secondary)}.profile-avatar-btn{position:relative;background:transparent;border:none;cursor:pointer;border-radius:50%;padding:0;display:inline-block;flex-shrink:0}.profile-avatar-btn .avatar-circle{border:3px solid var(--bg);box-shadow:var(--shadow-md)}.profile-avatar-edit{position:absolute;right:2px;bottom:2px;background:var(--accent);color:#fff;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg);box-shadow:var(--shadow-sm);transition:background var(--t-fast),transform 80ms}.profile-avatar-btn:hover .profile-avatar-edit{background:var(--accent-hi);transform:scale(1.08)}.sm-save-bar{display:flex;gap:var(--s-2);justify-content:flex-end;max-width:640px}.sm-help{font-size:var(--text-sm);color:var(--text-tertiary);line-height:1.5;max-width:640px}.sm-theme-row{padding:var(--s-1) 0}.session-item{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-4);border-bottom:1px solid var(--border-soft);min-height:56px}.session-item:last-child{border-bottom:none}.session-icon{width:36px;height:36px;border-radius:var(--r-sm);background:var(--bg-secondary);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.session-item.session-current .session-icon{background:var(--accent-soft)}.session-body{flex:1;min-width:0}.session-device{font-size:var(--text-md);font-weight:600;color:var(--text)}.session-meta{font-size:var(--text-xs);color:var(--text-tertiary);margin-top:2px;line-height:1.4}.session-revoke{width:28px;height:28px;border-radius:50%;color:var(--text-tertiary);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:background var(--t-fast),color var(--t-fast)}.session-revoke:hover{background:var(--danger-soft);color:var(--danger)}.sessions-empty{color:var(--text-tertiary);font-size:var(--text-sm);padding:var(--s-3) var(--s-4);text-align:center}.session-current-card{border:1px solid var(--accent-soft);background:var(--accent-soft);border-radius:var(--r-lg);overflow:hidden;max-width:640px}[data-theme=dark] .session-current-card{background:#5ba8e014}.sm-danger-card{border:1px solid var(--danger-soft);background:var(--bg);border-radius:var(--r-lg);overflow:hidden;max-width:640px}.sm-danger-desc{font-size:var(--text-sm);color:var(--text-secondary);line-height:1.5;padding:var(--s-3) var(--s-4) var(--s-2)}.sm-danger-actions{padding:var(--s-2) var(--s-4) var(--s-3)}.badge{display:inline-block;padding:1px 8px;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:600;border-radius:var(--r-full);letter-spacing:.2px;vertical-align:middle}.badge.current{background:var(--success-soft);color:var(--success)}.pm-theme-segments{display:flex;gap:var(--s-1);padding:var(--s-3) var(--s-4)}.pm-theme-seg{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--s-2);height:36px;border-radius:var(--r-md);font-size:var(--text-md);font-weight:500;color:var(--text-secondary);background:var(--bg-secondary);border:1px solid var(--border);cursor:pointer;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast)}.pm-theme-seg:hover{background:var(--surface-hi);color:var(--text)}.pm-theme-seg.active{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}.tg-section-help{font-size:var(--text-sm);color:var(--text-tertiary);padding:var(--s-1) var(--s-3) 0;line-height:1.4}.modal-resize-handle{position:absolute;bottom:4px;right:4px;width:16px;height:16px;cursor:nwse-resize;touch-action:none;background-image:repeating-linear-gradient(-45deg,transparent,transparent 2px,rgba(0,0,0,.15) 2px,rgba(0,0,0,.15) 3px);border-radius:var(--r-sm);flex-shrink:0;z-index:1}[data-theme=dark] .modal-resize-handle{background-image:repeating-linear-gradient(-45deg,transparent,transparent 2px,rgba(255,255,255,.12) 2px,rgba(255,255,255,.12) 3px)}@media (max-width: 768px){.sm-window{width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;min-width:unset!important;min-height:unset!important;border-radius:0;flex-direction:column}.sm-sidebar{width:100%;flex-shrink:0;border-right:none;border-bottom:1px solid var(--border-soft);border-radius:0;flex-direction:column}.sm-sidebar-header{padding:var(--s-3) var(--s-4) var(--s-2);min-height:unset}.sm-nav{flex-direction:row;gap:2px;overflow-x:auto;padding:var(--s-2);scrollbar-width:none;flex:unset}.sm-nav::-webkit-scrollbar{display:none}.sm-nav-item{flex-shrink:0;white-space:nowrap;height:32px}.sm-sidebar-profile{display:none}.sm-content{border-radius:0}.sm-content-inner{padding:var(--s-3)}.sm-close-btn{top:var(--s-2);right:var(--s-2)}}.info-panel{background:var(--bg);border-left:1px solid var(--border);display:flex;flex-direction:column;height:100%;overflow:hidden}.info-panel-header{display:flex;align-items:center;gap:var(--s-2);padding:0 var(--s-3);border-bottom:1px solid var(--border-soft);background:var(--bg);min-height:52px;height:52px;flex-shrink:0}.info-panel-title{flex:1;text-align:center;font-size:var(--text-xl);font-weight:600;letter-spacing:-.2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-panel-close{width:30px;height:30px;border-radius:50%;background:var(--surface);color:var(--text-secondary);display:inline-flex;align-items:center;justify-content:center;line-height:0;padding:0;transition:background var(--t-fast);flex-shrink:0}.info-panel-close:hover{background:var(--surface-hi);color:var(--text)}.info-panel-close svg{display:block}.info-panel-edit-btn{width:30px;height:30px;border-radius:50%;background:transparent;color:var(--text-secondary);display:inline-flex;align-items:center;justify-content:center;line-height:0;padding:0;transition:background var(--t-fast),color var(--t-fast);flex-shrink:0}.info-panel-edit-btn:hover{background:var(--surface);color:var(--accent)}.info-panel-edit-btn svg{display:block}.info-panel-scroll{flex:1;overflow-y:auto;display:flex;flex-direction:column}.ip-profile-card{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-4) var(--s-2);border-bottom:1px solid var(--border-soft)}.ip-avatar-wrap{flex-shrink:0}.ip-meta{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.ip-meta-edit{display:flex;flex-direction:column;gap:8px;flex:1;min-width:0}.ip-name{font-size:var(--text-lg);font-weight:700;letter-spacing:-.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.ip-sub{font-size:var(--text-sm);color:var(--text-secondary)}.ip-desc{font-size:var(--text-sm);color:var(--text-secondary);line-height:1.45;margin-top:2px}.info-avatar-btn{position:relative;background:transparent;border:none;cursor:pointer;border-radius:50%;padding:0}.info-avatar-btn:disabled{cursor:default}.info-avatar-edit{position:absolute;left:0;right:0;bottom:-6px;background:var(--accent);color:#fff;font-size:10px;padding:4px 0;border-radius:var(--r-full);font-weight:600;text-transform:uppercase;letter-spacing:.5px;width:80%;margin:0 auto}.ip-actions{display:flex;border-bottom:1px solid var(--border-soft)}.ip-action{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:var(--s-2) var(--s-1);color:var(--accent);transition:background var(--t-fast);border-radius:0}.ip-action:hover{background:var(--accent-soft)}.ip-action.active{background:var(--accent-soft);color:var(--accent)}.ip-action-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--accent)}.ip-action-label{font-size:11px;font-weight:500;color:var(--text-secondary);white-space:nowrap}.info-more-menu{position:absolute;bottom:calc(100% + 4px);right:0;min-width:200px;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-md);padding:4px;z-index:50;display:flex;flex-direction:column;animation:menuIn .12s ease}.info-more-menu button{display:flex;align-items:center;gap:9px;text-align:left;padding:8px 10px;border-radius:var(--r-sm);font-size:var(--text-base);color:var(--text);width:100%;transition:background var(--t-fast)}.info-more-menu button:hover{background:var(--bg-secondary)}.info-more-menu button.danger{color:var(--danger)}.info-more-menu button.danger:hover{background:var(--danger);color:#fff}.info-more-menu button.danger:hover svg{color:#fff}.info-more-menu button svg{color:var(--text-secondary);flex-shrink:0}.info-more-menu button.danger svg{color:var(--danger)}.info-tabs{display:flex;border-bottom:1px solid var(--border-soft);overflow-x:auto;scrollbar-width:none;padding:0 var(--s-3);gap:0;flex-shrink:0}.info-tabs::-webkit-scrollbar{display:none}.info-tab{flex-shrink:0;padding:8px 10px;font-size:var(--text-sm);font-weight:600;color:var(--text-secondary);border-bottom:2px solid transparent;transition:color var(--t-base),border-color var(--t-base);white-space:nowrap}.info-tab:hover{color:var(--text)}.info-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.ip-tab-content{flex:1;overflow-y:auto;display:flex;flex-direction:column}.info-tab-empty{padding:var(--s-5) var(--s-4);text-align:center;color:var(--text-tertiary);font-size:var(--text-md)}.info-section-title{padding:var(--s-3) var(--s-4) var(--s-2);font-size:var(--text-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:1px;font-weight:700}.info-add-btn{margin:var(--s-2) var(--s-3);width:calc(100% - var(--s-3) * 2)}.ip-danger{padding:var(--s-3) var(--s-4) var(--s-4);display:flex;flex-direction:column;gap:var(--s-2);margin-top:auto}.info-tab-content{flex:1;overflow-y:auto}.info-danger{padding:var(--s-4);display:flex;flex-direction:column;gap:var(--s-2);margin-top:auto}.ip-media-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px}.ip-media-item{aspect-ratio:1;overflow:hidden;background:var(--surface);cursor:zoom-in;transition:opacity var(--t-fast);border:none;padding:0}.ip-media-item:hover{opacity:.82}.ip-media-item img{width:100%;height:100%;object-fit:cover;display:block}.ip-media-video-thumb{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--surface-hi);color:var(--text-tertiary)}.members-list{list-style:none;display:flex;flex-direction:column;gap:1px;margin:0 var(--s-3);padding:0 0 var(--s-3)}.members-list li{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2);border-radius:var(--r-sm);transition:background var(--t-fast)}.members-list li:hover{background:var(--bg-secondary)}.member-name{flex:1;font-size:var(--text-base);min-width:0;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.member-kick{color:transparent;font-size:16px;line-height:1;padding:0 var(--s-1);transition:color var(--t-fast)}.member-kick svg{display:block}.members-list li:hover .member-kick{color:var(--text-tertiary)}.member-kick:hover{color:var(--danger)!important}@media (hover: none){.member-kick{color:var(--text-tertiary)}}.media-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;padding:var(--s-2)}.media-grid-item{aspect-ratio:1;overflow:hidden;border-radius:var(--r-xs);background:var(--surface);cursor:zoom-in;transition:opacity var(--t-fast)}.media-grid-item:hover{opacity:.82}.media-grid-item img{width:100%;height:100%;object-fit:cover;display:block}.media-grid-video-thumb{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--surface-hi);color:var(--text-tertiary)}.info-file-list{display:flex;flex-direction:column;gap:0;padding:var(--s-2) 0}.info-file-item{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-4);color:var(--text);text-decoration:none;border-bottom:1px solid var(--border-soft);transition:background var(--t-fast)}.info-file-item:last-child{border-bottom:none}.info-file-item:hover{background:var(--bg-secondary)}.info-file-icon{width:40px;height:40px;border-radius:var(--r-sm);background:var(--surface-2);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.info-file-body{flex:1;min-width:0}.info-file-name{font-size:var(--text-md);font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-file-meta{font-size:var(--text-xs);color:var(--text-tertiary);margin-top:2px}.info-links-list{display:flex;flex-direction:column}.info-link-item{display:flex;flex-direction:column;gap:2px;padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--border-soft);color:var(--text);text-decoration:none;transition:background var(--t-fast)}.info-link-item:last-child{border-bottom:none}.info-link-item:hover{background:var(--bg-secondary)}.info-link-domain{font-size:var(--text-md);font-weight:600;color:var(--accent)}.info-link-url{font-size:var(--text-sm);color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-link-meta{font-size:var(--text-xs);color:var(--text-tertiary)}.info-pins-list{display:flex;flex-direction:column;gap:0}.info-pin-item{display:flex;align-items:center;border-bottom:1px solid var(--border-soft)}.info-pin-item:last-child{border-bottom:none}.info-pin-content{flex:1;text-align:left;padding:var(--s-3) var(--s-4);transition:background var(--t-fast);display:flex;flex-direction:column;gap:2px;background:transparent;border:none;cursor:pointer}.info-pin-content:hover{background:var(--bg-secondary)}.info-pin-author{font-size:var(--text-xs);font-weight:600;color:var(--accent)}.info-pin-text{font-size:var(--text-md);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-pin-date{font-size:var(--text-xs);color:var(--text-tertiary)}.info-pin-unpin{width:34px;height:34px;border-radius:50%;color:var(--text-tertiary);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin-right:var(--s-2);transition:background var(--t-fast),color var(--t-fast)}.info-pin-unpin:hover{background:var(--danger-soft);color:var(--danger)}.msg-search-panel{border-bottom:1px solid var(--border);background:var(--bg);display:flex;flex-direction:column;max-height:360px;flex-shrink:0}.msg-search-header{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);border-bottom:1px solid var(--border-soft)}.msg-search-input-wrap{flex:1;display:flex;align-items:center;gap:var(--s-2);background:var(--surface-2);border-radius:var(--r-full);padding:0 var(--s-3);height:34px;border:1px solid transparent;transition:border-color var(--t-base),background var(--t-base)}.msg-search-input-wrap:focus-within{border-color:var(--accent);background:var(--bg)}.msg-search-input-wrap svg{color:var(--text-tertiary);flex-shrink:0}.msg-search-input{flex:1;border:none;background:transparent;outline:none;font-size:var(--text-base);color:var(--text);min-width:0}.msg-search-input::placeholder{color:var(--text-tertiary)}.msg-search-clear{color:var(--text-tertiary);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.msg-search-clear:hover{color:var(--text)}.msg-search-close{width:32px;height:32px;border-radius:50%;background:var(--surface);color:var(--text-secondary);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:background var(--t-fast)}.msg-search-close:hover{background:var(--surface-hi)}.msg-search-results{overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:1px;padding:3px}.msg-search-status{padding:var(--s-3) var(--s-4);color:var(--text-tertiary);font-size:var(--text-md);text-align:center}.msg-search-item{display:flex;align-items:flex-start;gap:var(--s-3);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);text-align:left;cursor:pointer;transition:background var(--t-fast);width:100%}.msg-search-item:hover{background:var(--bg-secondary)}.msg-search-item-body{flex:1;min-width:0}.msg-search-item-meta{display:flex;align-items:baseline;gap:var(--s-2);margin-bottom:2px}.msg-search-item-author{font-size:var(--text-md);font-weight:600;color:var(--text)}.msg-search-item-date{font-size:var(--text-xs);color:var(--text-tertiary);margin-left:auto;flex-shrink:0}.msg-search-item-text{font-size:var(--text-md);color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}mark.search-highlight{background:#ffc80066;border-radius:2px;padding:0 1px}.admin-layout{display:grid;grid-template-columns:260px 1fr;height:100vh;background:var(--bg-secondary)}.admin-sidebar{background:var(--bg);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:var(--s-4) 0}.admin-sidebar-header{padding:0 var(--s-4) var(--s-4)}.admin-sidebar-header h2{font-size:20px;font-weight:700;margin-top:var(--s-4);letter-spacing:-.3px}.admin-back-link{display:inline-flex;align-items:center;gap:var(--s-2);color:var(--accent);font-size:var(--text-md);font-weight:500;padding:var(--s-1) 0}.admin-back-link:hover{color:var(--accent-hi)}.admin-nav{display:flex;flex-direction:column;gap:2px;padding:0 var(--s-3);flex:1}.admin-nav button{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);font-size:var(--text-base);color:var(--text);text-align:left;font-weight:500;transition:background var(--t-fast)}.admin-nav button:hover{background:var(--bg-secondary)}.admin-nav button.active{background:var(--accent);color:#fff}.admin-nav-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--text-tertiary)}.admin-nav button.active .admin-nav-icon{color:#fff}.admin-nav-badge{margin-left:auto;background:var(--danger);color:#fff;padding:2px 7px;border-radius:var(--r-full);font-size:11px;font-weight:700;min-width:20px;text-align:center}.admin-nav button.active .admin-nav-badge{background:#ffffff4d}.admin-nav-count{margin-left:auto;color:var(--text-tertiary);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.admin-nav button.active .admin-nav-count{color:#ffffffb3}.admin-sidebar-footer{border-top:1px solid var(--border-soft);padding:var(--s-4)}.admin-sidebar-footer .me{padding:0;border:none}.admin-main{overflow-y:auto;padding:var(--s-5)}.admin-section{max-width:960px}.admin-section-header{margin-bottom:var(--s-4)}.admin-section-header h1{font-size:28px;font-weight:700;letter-spacing:-.5px;margin-bottom:var(--s-2)}.admin-section-header p{color:var(--text-secondary);font-size:var(--text-base);line-height:1.55;max-width:640px}.request-list{display:flex;flex-direction:column;gap:var(--s-3)}.request-card{background:var(--bg);border-radius:var(--r-lg);padding:var(--s-4);display:flex;gap:var(--s-4);align-items:center;justify-content:space-between;box-shadow:var(--shadow-sm);transition:box-shadow var(--t-base)}.request-card:hover{box-shadow:var(--shadow-md)}.request-info{display:flex;flex-direction:column;gap:2px}.request-name{font-size:var(--text-xl);font-weight:600;color:var(--text);letter-spacing:-.2px}.request-email{font-size:var(--text-md);color:var(--text-secondary)}.request-date{font-size:var(--text-sm);color:var(--text-tertiary);margin-top:var(--s-1)}.request-actions{display:flex;gap:var(--s-2);flex-shrink:0}.data-table{width:100%;border-collapse:collapse;background:var(--bg);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.data-table th,.data-table td{padding:var(--s-3) var(--s-4);text-align:left;border-bottom:1px solid var(--border-soft);font-size:var(--text-md);vertical-align:middle}.data-table tr:last-child td{border-bottom:none}.data-table th{color:var(--text-tertiary);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.8px;background:var(--surface-2)}.data-table tr.self{background:var(--accent-soft)}.data-table tr:hover:not(.self){background:var(--bg-secondary)}.status-pill{display:inline-block;padding:2px 9px;border-radius:var(--r-full);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.status-pending{background:var(--warn-soft);color:var(--warn)}.status-active{background:var(--success-soft);color:var(--success)}.status-blocked{background:var(--danger-soft);color:var(--danger)}.row-actions{display:flex;gap:var(--s-2);flex-wrap:wrap}.switch{position:relative;display:inline-block;width:44px;height:26px}.switch input{opacity:0;width:0;height:0}.switch span{position:absolute;cursor:pointer;top:0;right:0;bottom:0;left:0;background:var(--surface-hi);border-radius:var(--r-full);transition:background var(--t-base)}.switch span:before{content:"";position:absolute;height:22px;width:22px;left:2px;top:2px;background:#fff;border-radius:50%;transition:transform var(--t-base);box-shadow:var(--shadow-xs)}.switch input:checked+span{background:var(--success)}.switch input:checked+span:before{transform:translate(18px)}.switch input:disabled+span{opacity:.5;cursor:not-allowed}@media (max-width: 768px){.layout{grid-template-columns:1fr!important;position:relative}.layout.with-info{grid-template-columns:1fr!important}.sidebar{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;transform:translate(0);width:100vw;transition:transform .22s cubic-bezier(.4,0,.2,1)}.layout.sidebar-closed .sidebar{transform:translate(-100%)}.chat{position:fixed;top:0;right:0;bottom:0;left:0;z-index:4;width:100vw}.info-panel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:6;width:100vw;border-left:none}.chat-back{display:flex}.admin-layout{grid-template-columns:1fr}.admin-sidebar{display:none}.admin-main{padding:var(--s-4)}.messages{padding:var(--s-3)}.composer{padding:var(--s-2) var(--s-3)}.composer-icon,.composer-send{width:38px;height:38px}.composer-pill{min-height:36px;font-size:var(--text-lg)}.field{font-size:var(--text-md);min-height:40px}.modal-card{max-width:100%;max-height:92vh}.modal-overlay{padding:var(--s-2)}.modal-overlay:has(.sm-window){padding:0;align-items:stretch;justify-content:stretch;overflow:hidden}.sm-window.modal-card{max-height:100%;max-width:100%}}@media (display-mode: standalone){.chat-header{padding-top:max(0px,env(safe-area-inset-top))}.composer{padding-bottom:max(var(--s-3),env(safe-area-inset-bottom))}}@media (min-width: 768px) and (max-width: 1023px){.layout{grid-template-columns:300px 1fr}.layout.with-info{grid-template-columns:300px 1fr 300px}}.ch-action svg,.member-kick svg,.composer-att>button svg,.modal-close svg,.info-panel-close svg,.info-panel-edit-btn svg,.lightbox-close svg,.pin-bar-close svg,.reply-bar-close svg,.msg-search-close svg{display:block}.mention-badge{background:var(--accent);color:var(--accent-on);font-size:11px;font-weight:700;min-width:18px;height:18px;border-radius:var(--r-full);display:inline-flex;align-items:center;justify-content:center;padding:0 4px;line-height:1}.mention{color:var(--accent);font-weight:600;border-radius:var(--r-xs);padding:0 1px}.bubble.mine .mention{color:var(--bubble-mine-text);text-decoration:underline;text-underline-offset:2px;opacity:.9}.bubble-row.mentioned>div>.bubble:not(.mine){background:color-mix(in srgb,var(--accent-soft) 60%,var(--bubble-other));border-left:3px solid var(--accent);padding-left:calc(var(--s-3) - 3px)}[data-theme=dark] .bubble-row.mentioned>div>.bubble:not(.mine){background:color-mix(in srgb,var(--accent-soft) 80%,var(--bubble-other))}.mention-popover{position:absolute;bottom:calc(100% + 6px);left:0;right:0;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-md);overflow:hidden;z-index:200;max-height:220px;overflow-y:auto;animation:menuIn .12s ease}.mention-popover-item{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);width:100%;text-align:left;cursor:pointer;transition:background var(--t-fast);border-radius:0}.mention-popover-item:hover,.mention-popover-item.active{background:var(--accent-soft)}.mention-popover-name{font-weight:600;font-size:var(--text-md);color:var(--text)}.mention-popover-username{font-size:var(--text-sm);color:var(--text-secondary);margin-left:auto}.sidebar-search-clear{margin-left:auto;color:var(--text-tertiary);width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;flex-shrink:0;transition:background var(--t-fast),color var(--t-fast)}.sidebar-search-clear:hover{background:var(--surface);color:var(--text)}.global-search-results{display:flex;flex-direction:column;padding:var(--s-2) 0}.search-group-label{font-size:var(--text-xs);font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.7px;padding:var(--s-3) var(--s-4) var(--s-1)}.search-result-item{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-4);width:100%;text-align:left;cursor:pointer;transition:background var(--t-fast);color:var(--text)}.search-result-item:hover{background:var(--bg-secondary)}.search-result-icon{color:var(--text-secondary);display:flex;align-items:center;justify-content:center;flex-shrink:0;width:32px;height:32px;border-radius:50%;background:var(--surface)}.search-result-body{display:flex;flex-direction:column;min-width:0}.search-result-name{font-weight:600;font-size:var(--text-md);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-result-preview{font-size:var(--text-sm);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-result-msg .search-result-icon{border-radius:var(--r-sm)}.invite-section{border-top:1px solid var(--border-soft);padding-top:var(--s-3);margin-top:var(--s-2)}.invite-link-row{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-4);background:var(--surface-2);border-radius:var(--r-md);margin:0 var(--s-3) var(--s-3)}.invite-link-url{flex:1;font-size:var(--text-sm);color:var(--accent);font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.join-invite-card{max-width:380px}.join-invite-body{display:flex;flex-direction:column;align-items:center;gap:var(--s-4);padding:var(--s-4) 0 var(--s-2);text-align:center}.join-invite-loading{color:var(--text-secondary);padding:var(--s-6) 0}.join-invite-error{display:flex;flex-direction:column;align-items:center;gap:var(--s-3);color:var(--text-secondary);padding:var(--s-4) 0}.join-invite-avatar{margin-bottom:var(--s-1)}.join-invite-name{font-size:22px;font-weight:700;letter-spacing:-.3px}.join-invite-meta{font-size:var(--text-md);color:var(--text-secondary)}.join-invite-actions{display:flex;gap:var(--s-3);justify-content:center;margin-top:var(--s-2)}@media (max-width: 768px){.join-invite-actions{flex-direction:column;width:100%}.join-invite-actions .btn{width:100%}}.dialog-overlay{z-index:1002}.dialog-card{max-width:380px;max-height:unset;overflow-y:visible;gap:var(--s-4)}.dialog-message{white-space:pre-line;color:var(--text-secondary);font-size:var(--text-base);line-height:1.5;margin:0}@media (max-width: 768px){.dialog-card{max-width:calc(100vw - var(--s-5) * 2)}}
