.login-box label,.modal-body label{display:block;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em;color:var(--text-tertiary)}.login-box button,.modal-confirm{background:var(--accent);color:var(--text-white);border:none;border-radius:var(--radius-sm);cursor:pointer;font-family:inherit;font-weight:500;transition:background .15s}.login-box button:active,.modal-confirm:active{background:var(--accent-hover)}.thread-close,.modal-close{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:.125rem .25rem;line-height:1;border-radius:3px}.thread-close:active,.modal-close:active{color:var(--text-primary);background:var(--bg-active)}.user-avatar,.message .msg-avatar,.settings-avatar-preview,.mention-popup-item .mention-avatar{border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--text-white);flex-shrink:0;overflow:hidden}.user-avatar img,.message .msg-avatar img,.settings-avatar-preview img{width:100%;height:100%;object-fit:cover}.mention-popup,.emoji-autocomplete-popup,.channel-popup{position:fixed;background:var(--bg-input);border-radius:var(--radius-md);box-shadow:0 8px 24px var(--shadow-heavy);z-index:70;max-height:240px;overflow-y:auto;padding:6px}.mention-popup-item,.emoji-autocomplete-item,.channel-popup-item{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:var(--radius-sm);cursor:pointer}.mention-popup-item:active,.emoji-autocomplete-item:active,.channel-popup-item:active,.mention-popup-item.active,.emoji-autocomplete-item.active,.channel-popup-item.active{background:var(--bg-active)}.emoji-picker,.gif-picker{position:fixed;background:var(--bg-input);border-radius:var(--radius-md);box-shadow:0 8px 24px var(--shadow-heavy);z-index:70;display:flex;flex-direction:column;overflow:hidden}.emoji-picker-search,.gif-picker-search{padding:8px;border-bottom:1px solid var(--border-subtle)}.emoji-picker-search input,.gif-picker-search input{width:100%;padding:6px 10px;font-family:inherit;font-size:.85rem;background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-primary);outline:none;box-sizing:border-box}.emoji-picker-search input::placeholder,.gif-picker-search input::placeholder{color:var(--text-secondary)}.emoji-picker-search input:focus,.gif-picker-search input:focus{border-color:var(--accent)}.chat-empty,.emoji-picker-empty,.gif-picker-empty{text-align:center;color:var(--text-secondary);font-size:.85rem;padding:2rem 1rem}@media(hover:hover){.login-box button:hover,.modal-confirm:hover{background:var(--accent-hover)}.thread-close:hover,.modal-close:hover{color:var(--text-primary);background:var(--bg-active)}.mention-popup-item:hover,.emoji-autocomplete-item:hover,.channel-popup-item:hover{background:var(--bg-active)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.loading{display:flex;align-items:center;justify-content:center;padding:2rem;color:var(--text-secondary);font-size:.85rem;gap:.5rem}.spinner{width:20px;height:20px;border:2px solid var(--border-subtle);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.chat-messages-loading-top{display:flex;justify-content:center;padding:.5rem 0}body.login-page{display:flex;align-items:center;justify-content:center;background:var(--bg-primary);overflow:auto}#app.login-view{width:100%;max-width:480px;padding:1rem}.login-box{background:var(--bg-secondary);border-radius:var(--radius-lg);padding:2rem;box-shadow:0 8px 24px var(--shadow-medium);text-align:center}.login-box h1{font-size:1.5rem;font-weight:600;color:var(--text-heading);margin-bottom:.25rem}.login-box .subtitle{color:var(--text-tertiary);font-size:.9rem;margin-bottom:1.25rem}.login-box .error{background:var(--error-bg);color:var(--error);font-size:.85rem;padding:.6rem .75rem;border-radius:4px;margin-bottom:1rem;text-align:left}.login-box .success{background:color-mix(in srgb,var(--success) 15%,var(--bg-primary));color:var(--success);font-size:.85rem;padding:.6rem .75rem;border-radius:4px;margin-bottom:1rem;text-align:left}.login-box .field{text-align:left;margin-bottom:1.25rem}.login-box label{margin-bottom:.5rem}.login-box label.required:after{content:" *";color:var(--error)}.login-box input{width:100%;padding:.7rem .75rem;font-family:inherit;font-size:1rem;background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);outline:none;transition:border-color .15s}.login-box input:focus{border-color:var(--accent)}.login-box input::placeholder{color:var(--text-placeholder)}.login-box button{width:100%;padding:.7rem;margin-top:.25rem;font-size:1rem;font-weight:600;border-radius:var(--radius-round)}.login-box button:active{background:var(--accent-active)}.chat-shell{display:flex;position:fixed;inset:0;overflow:hidden}.sidebar{width:260px;background:var(--bg-primary);display:flex;flex-direction:column;flex-shrink:0}.sidebar-header{padding:1rem 1rem .5rem;display:flex;align-items:center;gap:.6rem;font-size:1.25rem;font-weight:800;color:var(--text-heading)}.sidebar-logo{width:26px;height:26px;border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0}.channel-list-header{padding:.5rem .75rem .25rem;display:flex;align-items:center;justify-content:space-between;font-size:.75rem;font-weight:600;color:var(--text-secondary)}.add-channel-btn{background:none;border:none;color:var(--text-secondary);font-size:1.15rem;cursor:pointer;padding:0;line-height:1;width:22px;height:22px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-xs)}.add-channel-btn:active{color:var(--text-primary);background:var(--bg-hover)}.channel-list{flex:1;overflow-y:auto;padding:.25rem .625rem}.channel-group{margin-top:.5rem}.channel-group-header{display:flex;align-items:center;gap:.3rem;padding:.35rem .5rem;border-radius:var(--radius-xs);cursor:pointer;color:var(--text-secondary);font-size:.75rem;font-weight:600;-webkit-user-select:none;user-select:none}.channel-group-header.unread{color:var(--text-heading)}.channel-group-header.unread .channel-group-name:after{content:"";display:inline-block;width:6px;height:6px;margin-left:.4rem;border-radius:50%;background:var(--text-heading);vertical-align:middle}.channel-group-header:active{background:var(--bg-hover)}.channel-group-caret{font-size:.7rem;line-height:1;display:flex;align-items:center}.channel-group-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.channel-group-header .mention-badge{margin-left:auto}.channel-group-empty{padding:.3rem .5rem .3rem 1.1rem;font-size:.8rem;font-style:italic;color:var(--text-tertiary)}.channel-group-items .channel-item{padding-left:1.1rem}.channel-item{padding:.4rem .5rem;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:.95rem;font-weight:500;line-height:1.35;cursor:pointer;display:flex;align-items:center}.channel-item.unread{font-weight:600;color:var(--text-heading)}.mention-badge{margin-left:auto;background:var(--error);color:var(--text-white);font-size:.75rem;font-weight:700;min-width:1.1rem;text-align:center;padding:.1rem .35rem;border-radius:var(--radius-round);line-height:1.3}.channel-item:active:not(.active){background:var(--bg-hover);color:var(--text-primary)}.channel-item:before{content:"#";font-size:1.15em;font-weight:500;color:var(--text-secondary);margin-right:.65rem}.channel-item.active{background:var(--bg-active);color:var(--text-heading)}.channel-item.active:before{color:var(--text-tertiary)}.channel-item .mute-indicator{margin-left:.25rem;font-size:.7rem;color:var(--text-secondary);vertical-align:middle}.user-panel{margin:.5rem;padding:.5rem .625rem;background:var(--bg-secondary);border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:space-between;gap:.5rem}.user-panel .user-tag{display:flex;align-items:center;gap:.625rem;min-width:0;cursor:pointer;padding:.25rem;border-radius:var(--radius-md)}.user-panel .user-tag:active{background:var(--bg-hover)}.user-avatar{width:36px;height:36px;font-size:.85rem}.user-panel .avatar-wrap{position:relative;flex-shrink:0}.user-panel .status-dot{position:absolute;right:-2px;bottom:-2px;width:12px;height:12px;border-radius:50%;background:var(--success);border:3px solid var(--bg-secondary);box-sizing:content-box}.user-panel .status-dot.offline{background:var(--text-secondary)}.user-panel .user-ident{min-width:0}.user-panel .username{font-size:.95rem;font-weight:600;color:var(--text-heading);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-panel .user-status{font-size:.8rem;color:var(--text-secondary)}.user-panel .logout-btn{font-family:inherit;font-size:.75rem;background:none;color:var(--text-secondary);border:none;padding:.25rem .4rem;border-radius:var(--radius-xs);cursor:pointer;flex-shrink:0}.user-panel .logout-btn:active{color:var(--text-primary);background:var(--bg-active)}.chat-main{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--bg-primary);position:relative}.chat-header{padding:.6rem 1rem;border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;gap:.5rem}.chat-header>*{transition:opacity .3s ease}.chat-main.offline .chat-header{position:relative;overflow:hidden}.chat-main.offline .chat-header>*{opacity:.4}.chat-main.offline .chat-header:after{content:"";position:absolute;bottom:0;left:-140px;width:140px;height:2px;background:linear-gradient(90deg,transparent,var(--accent));animation:offline-sweep 1.6s linear infinite}@keyframes offline-sweep{to{left:100%}}@media(prefers-reduced-motion:reduce){.chat-main.offline .chat-header:after{animation:none;left:0;width:100%;background:var(--accent);opacity:.6}}.chat-header-titles{min-width:0;flex:1}.chat-header-title{display:flex;align-items:center;gap:.4rem;font-size:1.05rem;font-weight:700;color:var(--text-heading);overflow:hidden;white-space:nowrap}.chat-header .hash{color:var(--text-secondary);font-weight:500;font-size:1.15em}.chat-header-sub{display:flex;align-items:center;gap:.35rem;font-size:.8rem;color:var(--text-secondary)}.chat-header-sub:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--success)}.chat-messages{flex:1;overflow-y:auto;padding:1rem 0;display:flex;flex-direction:column;background-image:var(--chat-texture, none);background-attachment:local}.chat-messages-inner{margin-top:auto;padding:0 1rem}.chat-empty h3{font-size:1.1rem;color:var(--text-heading);margin-bottom:.25rem}.chat-empty p{font-size:.85rem}@media(hover:hover){.add-channel-btn:hover{color:var(--text-primary);background:var(--bg-hover)}.channel-group-header:hover{background:var(--bg-hover);color:var(--text-primary)}.channel-item:hover:not(.active){background:var(--bg-hover);color:var(--text-primary)}.user-panel .user-tag:hover{background:var(--bg-hover)}.user-panel .logout-btn:hover{color:var(--text-primary);background:var(--bg-active)}}.context-menu{position:fixed;background:var(--bg-context-menu);border-radius:var(--radius-md);padding:.375rem;min-width:160px;box-shadow:0 8px 24px var(--shadow-heavy);z-index:60}.context-menu-item{padding:.45rem .6rem;font-size:.85rem;color:var(--text-primary);border-radius:var(--radius-sm);cursor:pointer}.context-menu-item:active{background:var(--accent);color:var(--text-white)}.context-menu-item .submenu-arrow{float:right;margin-left:1rem;color:var(--text-secondary)}.context-menu-item:active .submenu-arrow{color:var(--text-white)}.context-menu-item.has-check:before{content:"✓";font-weight:700}.context-menu-item.danger{color:var(--error)}.context-menu-item.danger:active{background:var(--danger);color:var(--text-white)}@media(hover:hover){.context-menu-item:hover{background:var(--accent);color:var(--text-white)}.context-menu-item:hover .submenu-arrow{color:var(--text-white)}.context-menu-item.danger:hover{background:var(--danger);color:var(--text-white)}}.action-sheet-overlay{position:fixed;inset:0;background:var(--overlay);z-index:65}.action-sheet{position:fixed;bottom:0;left:0;right:0;background:var(--bg-input);border-radius:var(--radius-lg) var(--radius-lg) 0 0;z-index:66;transform:translateY(100%);transition:transform .25s ease;max-height:80vh;overflow-y:auto;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.action-sheet:before{content:"";display:block;width:36px;height:4px;margin:.5rem auto .25rem;border-radius:var(--radius-round);background:var(--bg-active)}.action-sheet.open{transform:translateY(0)}.action-sheet-header{padding:.75rem 1rem;border-bottom:1px solid var(--border-subtle);font-size:.8rem;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-sheet-reactions{display:flex;align-items:center;gap:6px;padding:.75rem 1rem;border-bottom:1px solid var(--border-subtle);overflow-x:auto}.action-sheet-reaction-btn img{width:26px;height:26px;object-fit:contain}.action-sheet-reaction-btn{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:var(--bg-chip);border:none;border-radius:50%;cursor:pointer;font-size:1.4rem;flex-shrink:0}.action-sheet-reaction-btn:active{background:var(--bg-active)}.action-sheet-reaction-btn.plus{font-size:1.2rem;color:var(--text-secondary)}.action-sheet-item{display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;font-size:1rem;color:var(--text-primary);cursor:pointer;width:100%;background:none;border:none;font-family:inherit;text-align:left}.action-sheet-item:active{background:var(--bg-active)}.action-sheet-item .ui-icon{font-size:1.1rem;color:var(--text-secondary);width:1.25rem;text-align:center}.action-sheet-item.danger,.action-sheet-item.danger .ui-icon{color:var(--error)}.message{padding:.125rem 0;display:flex;gap:.75rem;line-height:1.375;position:relative}.message:not(.message-grouped){margin-top:1.0625rem}.chat-messages-inner>.message:first-child{margin-top:0}.day-divider{display:flex;align-items:center;gap:.75rem;margin:1.25rem 0 .25rem;color:var(--text-secondary);font-size:.75rem;font-weight:600}.day-divider:before,.day-divider:after{content:"";flex:1;height:1px;background:var(--border-subtle)}.day-divider+.message{margin-top:.25rem}.message .msg-avatar{width:40px;height:40px;font-size:.9rem;margin-top:.125rem}.message .msg-body{flex:1;min-width:0}.message .msg-header{display:flex;align-items:baseline;gap:.5rem;line-height:1.375rem;min-height:1.375rem}.message .msg-username{font-weight:600;color:var(--text-heading);font-size:.9rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message .msg-timestamp{font-size:.7rem;color:var(--text-secondary);flex-shrink:0;white-space:nowrap}.message .msg-content{color:var(--text-primary);font-size:.9rem;word-wrap:break-word}.message .msg-content a{color:var(--link);text-decoration:none}.msg-content p{margin:.125rem 0}.msg-content p:first-child{margin-top:0}.msg-content p:last-child{margin-bottom:0}.msg-content code{background:var(--bg-tertiary);padding:.125rem .3rem;border-radius:3px;font-size:.85em;font-family:var(--font-mono)}.msg-content pre{background:var(--bg-tertiary);border:1px solid var(--border-subtle);padding:.5rem .625rem;border-radius:4px;overflow-x:auto;margin:.25rem 0}.msg-content pre code{background:none;padding:0;border-radius:0;font-size:.85em;font-family:var(--font-mono)}.msg-content pre code .hljs-keyword,.msg-content pre code .hljs-selector-tag,.msg-content pre code .hljs-built_in,.msg-content pre code .hljs-name{color:#ff7b72}.msg-content pre code .hljs-string,.msg-content pre code .hljs-attr,.msg-content pre code .hljs-symbol,.msg-content pre code .hljs-bullet{color:#a5d6ff}.msg-content pre code .hljs-number,.msg-content pre code .hljs-literal{color:#79c0ff}.msg-content pre code .hljs-title,.msg-content pre code .hljs-title.function_,.msg-content pre code .hljs-section{color:#d2a8ff}.msg-content pre code .hljs-type,.msg-content pre code .hljs-title.class_{color:#ffa657}.msg-content pre code .hljs-comment,.msg-content pre code .hljs-quote{color:#8b949e;font-style:italic}.msg-content pre code .hljs-meta,.msg-content pre code .hljs-meta .hljs-keyword{color:#79c0ff}.msg-content pre code .hljs-variable,.msg-content pre code .hljs-template-variable{color:#ffa657}.msg-content pre code .hljs-attribute{color:#79c0ff}.msg-content pre code .hljs-regexp{color:#a5d6ff}.msg-content pre code .hljs-addition{color:#aff5b4;background:#3fb95026}.msg-content pre code .hljs-deletion{color:#ffa198;background:#f8514926}.msg-content pre code .hljs-params{color:inherit}.msg-content pre code .hljs-selector-class,.msg-content pre code .hljs-selector-id,.msg-content pre code .hljs-selector-pseudo{color:#7ee787}.msg-content pre,.msg-edit-textarea{-webkit-user-select:text;user-select:text}.code-block-wrapper{position:relative}.code-copy-btn{position:absolute;top:4px;right:4px;background:var(--bg-secondary);border:1px solid var(--border-subtle);color:var(--text-secondary);border-radius:4px;padding:2px 6px;font-size:.75rem;cursor:pointer;opacity:0;transition:opacity .15s}.msg-content blockquote{border-left:3px solid var(--border-subtle);padding-left:.625rem;color:var(--text-secondary);margin:.25rem 0}.msg-content ul,.msg-content ol{padding-left:1.5rem;margin:.25rem 0}.msg-content table{border-collapse:collapse;margin:.25rem 0}.msg-content th,.msg-content td{border:1px solid var(--border-subtle);padding:.25rem .5rem;font-size:.85rem}.msg-content th{background:var(--bg-tertiary)}.msg-content hr{border:none;border-top:1px solid var(--border-subtle);margin:.375rem 0}.msg-content img:not(.emoji-custom-inline){max-width:100%;max-height:400px;object-fit:contain;border-radius:var(--radius-sm)}.message .msg-content-jumbo{font-size:2.7rem;line-height:1}.msg-content-jumbo .emoji-custom-inline{width:2.7rem;height:2.7rem}.message .msg-media{margin-top:.25rem}.message .msg-media img{max-width:min(400px,100%);max-height:300px;border-radius:var(--radius-sm);cursor:pointer;display:block;margin-top:.25rem}.media-collapse-toggle{display:inline-flex;align-items:center;gap:4px;background:none;border:none;color:var(--text-secondary);font-family:inherit;font-size:.75rem;cursor:pointer;padding:2px 4px;border-radius:3px}.media-collapse-toggle:active{color:var(--text-primary);background:var(--bg-active)}.message .media-collapsed>*:not(.media-collapse-toggle){display:none}.image-embed{margin-top:.25rem}.image-embed img{max-width:min(400px,100%);max-height:300px;border-radius:var(--radius-sm);cursor:pointer;display:block;margin-top:.25rem}.message .msg-reply-count{font-size:.75rem;color:var(--link);cursor:pointer;margin-top:.125rem}.msg-edited{font-size:.75rem;color:var(--text-secondary)}.msg-edit-textarea{width:100%;background:var(--bg-input);border:1px solid var(--accent);border-radius:4px;color:var(--text-primary);font-family:inherit;font-size:.9rem;padding:.5rem;resize:none;outline:none;line-height:1.375;max-height:200px}.msg-edit-actions{display:flex;gap:.375rem;margin-top:.25rem}.msg-edit-actions button{font-family:inherit;font-size:.75rem;padding:.2rem .5rem;border:none;border-radius:3px;cursor:pointer}.msg-edit-actions .edit-save-btn{background:var(--accent);color:var(--text-white)}.msg-edit-actions .edit-save-btn:active{background:var(--accent-hover)}.msg-edit-actions .edit-cancel-btn{background:none;color:var(--text-secondary)}.msg-edit-actions .edit-cancel-btn:active{color:var(--text-primary)}.message-highlight{animation:message-highlight-fade 2s ease-out}@keyframes message-highlight-fade{0%{background:var(--accent-faint)}to{background:transparent}}.message-grouped{padding-top:0}.message-grouped .msg-avatar{visibility:hidden;width:40px;height:0}.typing-indicator,.catching-up{padding:0 1rem;font-size:.75rem;color:var(--text-secondary);height:1.25rem;line-height:1.25rem;flex-shrink:0}@media(hover:hover){.message:hover{background:var(--bg-message-hover)}.message .msg-content a:hover{text-decoration:underline}.code-block-wrapper:hover .code-copy-btn{opacity:1}.media-collapse-toggle:hover{color:var(--text-primary);background:var(--bg-active)}.message .msg-reply-count:hover{text-decoration:underline}.msg-edit-actions .edit-save-btn:hover{background:var(--accent-hover)}.msg-edit-actions .edit-cancel-btn:hover{color:var(--text-primary)}}.link-previews{display:flex;flex-direction:column;gap:6px;margin-top:4px}.link-preview{position:relative;display:flex;gap:12px;background:var(--bg-secondary);border-left:4px solid var(--accent);border-radius:4px;padding:10px 12px;max-width:520px;overflow:hidden}.link-preview-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.link-preview-site{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.02em}.link-preview-title{font-size:.9rem;font-weight:600;color:var(--link);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-preview-desc{font-size:.8rem;color:var(--text-tertiary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.3}.link-preview-image{width:80px;height:80px;object-fit:cover;border-radius:4px;flex-shrink:0}.link-preview-dismiss{position:absolute;top:4px;right:4px;background:var(--bg-tertiary);border:none;color:var(--text-secondary);cursor:pointer;border-radius:4px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;padding:0;font-size:.7rem}.link-preview-dismiss:active{background:var(--bg-active);color:var(--text-primary)}.youtube-embed{flex-direction:column}.youtube-player{position:relative;width:100%;padding-bottom:56.25%}.youtube-player iframe{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:4px}@media(hover:hover){.link-preview-title:hover{text-decoration:underline}.link-preview:hover .link-preview-dismiss{opacity:1}.link-preview-dismiss:hover{background:var(--bg-active);color:var(--text-primary)}}.reaction-details-overlay{position:fixed;inset:0;background:var(--overlay);z-index:65}.reaction-details{position:fixed;bottom:0;left:0;right:0;background:var(--bg-secondary);border-radius:12px 12px 0 0;z-index:66;transform:translateY(100%);transition:transform .25s ease;max-height:60vh;display:flex;flex-direction:column}.reaction-details.open{transform:translateY(0)}.reaction-details-tabs{display:flex;align-items:center;gap:2px;padding:.5rem .75rem;border-bottom:1px solid var(--border-subtle);overflow-x:auto;flex-shrink:0;-webkit-overflow-scrolling:touch}.reaction-details-tab{display:flex;align-items:center;gap:4px;padding:.4rem .6rem;background:none;border:none;border-bottom:2px solid transparent;border-radius:6px 6px 0 0;cursor:pointer;font-size:1.1rem;flex-shrink:0;color:var(--text-secondary);font-family:inherit}.reaction-details-tab .tab-count{font-size:.8rem}.reaction-details-tab.active{border-bottom-color:var(--accent);color:var(--text-primary)}.reaction-details-tab:active{background:var(--bg-active)}.reaction-details-tab .emoji-custom-inline{width:1.2em;height:1.2em;vertical-align:middle}.reaction-details-users{flex:1;overflow-y:auto;padding:.5rem}.reaction-details-user{display:flex;align-items:center;gap:.75rem;padding:.5rem;border-radius:6px}.reaction-details-avatar{width:32px;height:32px;border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--text-white);font-size:.8rem;flex-shrink:0;overflow:hidden}.reaction-details-avatar img{width:100%;height:100%;object-fit:cover}.reaction-details-name{font-size:.95rem;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.channel-popup{z-index:1000}.mention-popup-item .mention-avatar{width:24px;height:24px;font-size:.75rem;font-weight:700;object-fit:cover}.mention-popup-item img.mention-avatar{background:none}.mention-popup-item .mention-name{font-weight:600;font-size:.85rem;color:var(--text-heading)}.mention-popup-item .mention-username{font-size:.8rem;color:var(--text-secondary)}.emoji-autocomplete-item .emoji-autocomplete-preview{width:24px;height:24px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:1.2rem;object-fit:contain}.emoji-autocomplete-item img.emoji-autocomplete-preview{border-radius:2px}.emoji-autocomplete-item .emoji-autocomplete-name{font-size:.85rem;color:var(--text-heading)}.mention{color:color-mix(in srgb,var(--accent) 40%,white);background:color-mix(in srgb,var(--accent) 30%,transparent);border-radius:var(--radius-xs);padding:0 3px;font-weight:500}.channel-mention{color:color-mix(in srgb,var(--accent) 40%,white);background:color-mix(in srgb,var(--accent) 30%,transparent);border-radius:var(--radius-xs);padding:0 3px;font-weight:500;cursor:pointer;text-decoration:none}.channel-popup-item{gap:4px}.channel-popup-item .channel-popup-hash{color:var(--text-secondary);font-weight:600}.channel-popup-item .channel-popup-name{font-weight:600;font-size:.85rem;color:var(--text-heading)}.timestamp-tag{color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,transparent);border-radius:3px;padding:0 3px;font-weight:600;cursor:default}@media(hover:hover){.channel-mention:hover{text-decoration:underline}}.msg-reactions{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.reaction-btn{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;font-size:.9rem;font-family:inherit;background:var(--bg-chip);border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;line-height:1.4}.reaction-btn:active{background:var(--bg-active)}.reaction-btn.reacted{background:var(--accent-faint);border-color:var(--accent)}.reaction-count{font-size:.8rem;font-weight:600;color:var(--text-secondary)}.reaction-btn.reacted .reaction-count{color:var(--text-primary)}.reaction-add-btn{color:var(--text-secondary);font-size:1rem;padding:4px 12px}.reaction-add-btn:active{color:var(--text-primary)}.reaction-toolbar{display:none;position:absolute;top:-16px;right:16px;background:var(--bg-input);border-radius:var(--radius-sm);padding:3px;gap:0;z-index:5;box-shadow:0 4px 12px var(--overlay-lighter)}.reaction-toolbar-btn img{width:20px;height:20px;object-fit:contain}.reaction-toolbar-btn{width:30px;height:28px;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:4px;cursor:pointer;font-size:1.1rem;padding:0;color:var(--text-primary)}.reaction-toolbar-btn:active{background:var(--bg-active)}.reaction-toolbar-plus{font-size:1rem;color:var(--text-secondary);border-left:1px solid var(--border-subtle);border-radius:0 4px 4px 0}.reaction-toolbar-plus:active{color:var(--text-primary)}.reaction-toolbar-more{font-size:1rem;color:var(--text-secondary);border-left:1px solid var(--border-subtle);border-radius:0 4px 4px 0}.reaction-toolbar-more:active{color:var(--text-primary)}@media(hover:hover){.reaction-btn:hover{background:var(--bg-hover);border-color:var(--accent)}.message:hover .reaction-toolbar{display:flex}.reaction-toolbar-btn:hover{background:var(--bg-active)}.reaction-toolbar-plus:hover,.reaction-toolbar-more:hover{color:var(--text-primary)}}.emoji-picker{width:352px;max-height:420px}.emoji-picker-category-bar{display:flex;padding:4px 8px;gap:2px;border-bottom:1px solid var(--border-subtle)}.emoji-picker-category-btn{width:32px;height:28px;display:flex;align-items:center;justify-content:center;background:none;border:none;border-bottom:2px solid transparent;border-radius:4px 4px 0 0;cursor:pointer;font-size:1rem;padding:0;flex-shrink:0}.emoji-picker-category-btn.active{border-bottom-color:var(--accent)}.emoji-picker-category-btn:active:not(.active){background:var(--bg-active)}.emoji-picker-body{flex:1;overflow-y:auto;padding:0 8px 8px}.emoji-picker-section-header{position:sticky;top:0;background:var(--bg-secondary);font-size:.75rem;font-weight:600;color:var(--text-secondary);padding:6px 0 4px;text-transform:uppercase;letter-spacing:.03em;z-index:1}.emoji-picker-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:2px}.emoji-picker-item{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:4px;cursor:pointer;font-size:1.3rem;padding:0}.emoji-picker-item img{width:28px;height:28px;object-fit:contain}.emoji-picker-item:active{background:var(--bg-active)}.emoji-custom-inline{width:22px;height:22px;vertical-align:middle;object-fit:contain;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}@media(hover:hover){.emoji-picker-category-btn:hover:not(.active){background:var(--bg-active)}.emoji-picker-item:hover{background:var(--bg-active)}}.chat-input-bar{padding:.25rem .75rem .75rem;flex-shrink:0}.chat-input-wrap{background:var(--bg-input-bar);border-radius:var(--radius-xl);display:flex;align-items:flex-end;--chat-row-height: 2.6375rem }.chat-input-field{flex:1;position:relative;min-width:0}.chat-input-field textarea{display:block;width:100%;background:none;border:none;outline:none;color:var(--text-primary);font-family:inherit;font-size:.9rem;padding:.7rem 1rem;resize:none;max-height:200px;line-height:1.375}.chat-input-placeholder{position:absolute;left:0;top:0;right:0;padding:.7rem 1rem;font-family:inherit;font-size:.9rem;line-height:1.375;color:var(--text-placeholder);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-input-wrap .attach-btn,.chat-input-wrap .gif-btn,.chat-input-wrap .send-btn{background:none;border:none;color:var(--text-secondary);font-size:1.25rem;cursor:pointer;height:var(--chat-row-height);padding:0 .75rem;align-items:center;justify-content:center;line-height:1;flex-shrink:0}.chat-input-wrap .attach-btn,.chat-input-wrap .gif-btn{display:flex}.chat-input-wrap .attach-btn{font-size:1.4rem;padding:0 .6rem 0 .9rem}.chat-input-wrap .send-btn{display:none;width:36px;height:36px;padding:0;margin:calc((var(--chat-row-height) - 36px) / 2) 6px;border-radius:50%;background:var(--accent);color:var(--text-white);font-size:1.05rem}.chat-input-wrap .attach-btn:active,.chat-input-wrap .gif-btn:active{color:var(--text-primary)}.chat-input-wrap .send-btn:active{background:var(--accent-hover)}.chat-input-wrap .send-btn:disabled{opacity:.5;cursor:default}.chat-input-spinner{display:none;margin:calc((var(--chat-row-height) - 20px) / 2) .85rem;flex-shrink:0}.chat-input-wrap.sending .chat-input-spinner{display:block}.chat-input-wrap.sending .send-btn{display:none}.chat-input-wrap.sending textarea{opacity:.5}.send-error-toast,.send-queued-toast{margin:0 1rem .5rem;padding:.5rem .75rem;border-radius:6px;font-size:.8rem;text-align:center}.send-error-toast{background:var(--error);color:#fff}.send-queued-toast{background:var(--accent);color:var(--text-white)}.upload-preview{padding:.5rem 1rem 0;display:flex;gap:.5rem;flex-wrap:wrap}.upload-preview-item{position:relative;width:120px;height:120px;border:1px solid var(--border-subtle);border-radius:8px;overflow:hidden;background:var(--bg-input)}.upload-preview-item img{width:100%;height:100%;object-fit:cover}.upload-preview-item .upload-overlay{position:absolute;inset:0;background:var(--overlay-medium);display:flex;align-items:center;justify-content:center;color:var(--text-white);font-size:.8rem}.upload-preview-item .remove-upload{position:absolute;top:4px;right:4px;background:var(--bg-input);color:var(--text-primary);border:none;border-radius:50%;width:20px;height:20px;font-size:.75rem;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}.upload-preview-item .remove-upload:active{background:var(--error);color:var(--text-white)}.upload-preview-item.file-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;padding:.5rem;background:var(--bg-secondary)}.upload-preview-item.file-card .file-card-icon{font-size:1.75rem;color:var(--text-secondary);line-height:1}.upload-preview-item.file-card .file-card-name{font-size:.7rem;color:var(--text-primary);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;padding:0 .25rem}.file-attachment{display:inline-flex;align-items:center;gap:.5rem;background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:8px;padding:.5rem .75rem;margin-top:.25rem;text-decoration:none;color:var(--text-primary);font:inherit;text-align:left;max-width:100%;cursor:pointer}.file-attachment:active{background:var(--bg-hover)}.file-attachment .ui-icon{color:var(--text-secondary);flex-shrink:0}.file-attachment-name{font-size:.85rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.drop-overlay{position:absolute;inset:0;background:var(--accent-faint);border:2px dashed var(--accent);border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--accent);font-size:1.1rem;font-weight:600;z-index:10;pointer-events:none}@media(hover:hover){.chat-input-wrap .attach-btn:hover,.chat-input-wrap .gif-btn:hover{color:var(--text-primary)}.chat-input-wrap .send-btn:hover{background:var(--accent-hover)}.upload-preview-item .remove-upload:hover{background:var(--error);color:var(--text-white)}.file-attachment:hover{background:var(--bg-hover);text-decoration:none}}.gif-picker{width:400px;max-width:calc(100vw - 16px);max-height:480px}.gif-picker-body{flex:1;overflow-y:auto;padding:8px}.gif-picker-section-header{font-size:.75rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;padding:4px 0 8px}.gif-picker-grid{columns:2;column-gap:6px}.gif-picker-item{display:block;width:100%;padding:0;margin:0 0 6px;border:none;background:none;cursor:pointer;border-radius:6px;overflow:hidden;break-inside:avoid}.gif-picker-item img{display:block;width:100%;height:auto;border-radius:6px}.gif-picker-item:active{opacity:.8}.gif-picker-empty{padding:32px 8px}.gif-picker-attribution{padding:4px 8px;text-align:right;border-top:1px solid var(--border-subtle)}.gif-picker-attribution a{color:var(--text-secondary);font-size:.7rem;text-decoration:none}.gif-picker-attribution a:active{color:var(--text-primary)}@media(hover:hover){.gif-picker-item:hover{opacity:.8}.gif-picker-attribution a:hover{color:var(--text-primary)}}.camera-overlay{position:fixed;inset:0;z-index:80;background:#000;display:flex;flex-direction:column}.camera-stage{flex:1;min-height:0;position:relative;display:flex;align-items:center;justify-content:center}.camera-video{width:100%;height:100%;object-fit:contain}.camera-video.mirrored{transform:scaleX(-1)}.camera-message{position:absolute;left:1.5rem;right:1.5rem;text-align:center;color:var(--text-white);font-size:.9rem;text-shadow:0 1px 4px rgb(0 0 0 / .6)}.camera-controls{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.25rem 2rem;background:#000}.camera-btn{background:none;border:none;color:var(--text-white);font-size:1.5rem;line-height:1;cursor:pointer;width:44px;height:44px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.camera-btn:disabled{opacity:.4;cursor:default}.camera-shutter{width:68px;height:68px;border-radius:50%;background:#fff;border:4px solid rgb(255 255 255 / .4);background-clip:content-box;cursor:pointer;flex-shrink:0;padding:3px;transition:transform .1s ease}.camera-shutter:active{transform:scale(.94)}.camera-shutter:disabled{opacity:.4;cursor:default}.thread-panel{width:420px;flex-shrink:0;background:var(--bg-primary);border-left:1px solid var(--border-subtle);display:flex;flex-direction:column}.thread-header{padding:.75rem 1rem;font-size:.95rem;font-weight:700;color:var(--text-heading);border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between}.thread-close{font-size:1.2rem}.thread-messages{flex:1;overflow-y:auto;padding:1rem 0;display:flex;flex-direction:column}.thread-messages .chat-messages-inner{margin-top:auto;padding:0 1rem}.thread-divider{padding:.5rem 1rem;font-size:.75rem;font-weight:600;color:var(--text-secondary);display:flex;align-items:center;gap:.5rem}.thread-divider:after{content:"";flex:1;height:1px;background:var(--border-subtle)}.thread-input-bar{padding:0 1rem 1.5rem;flex-shrink:0}.thread-panel .message .msg-media img{max-width:min(300px,100%);max-height:200px}.user-list-panel{width:220px;flex-shrink:0;background:var(--bg-primary);border-left:1px solid var(--border-subtle);display:flex;flex-direction:column;overflow:hidden}.user-list-header{padding:.75rem 1rem;font-size:.95rem;font-weight:700;color:var(--text-heading);border-bottom:1px solid var(--border-subtle)}.user-list-body{flex:1;overflow-y:auto;padding:.5rem}.user-list-section-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em;color:var(--text-secondary);padding:.5rem .5rem .25rem}.user-list-item{display:flex;align-items:center;gap:.625rem;padding:.375rem .5rem;border-radius:var(--radius-sm)}.user-list-item.offline{opacity:.45}.user-list-avatar{width:32px;height:32px;border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--text-white);font-size:.65rem;flex-shrink:0;overflow:hidden}.user-list-avatar img{width:100%;height:100%;object-fit:cover}.user-list-status{width:8px;height:8px;border-radius:50%;background:var(--text-secondary);flex-shrink:0}.user-list-status.online{background:var(--success, #3ba55d)}.user-list-name{font-size:.85rem;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.modal-overlay{position:fixed;inset:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;z-index:50;opacity:0;transition:opacity .2s ease}.modal-overlay.open{opacity:1}.modal-overlay.confirm-overlay{z-index:60}.modal{background:var(--bg-secondary);border-radius:var(--radius-lg);width:440px;max-width:90vw;max-height:80vh;overflow-y:auto;box-shadow:0 8px 24px var(--shadow-heavy);transform:scale(.96);transition:transform .2s ease}.modal-overlay.open .modal{transform:none}.modal-header{padding:1rem 1rem .5rem;display:flex;align-items:center;justify-content:space-between}.modal-header h2{font-size:1.1rem;font-weight:600;color:var(--text-heading)}.modal-close{font-size:1.3rem}.modal-body{padding:.75rem 1rem}.modal-body .field{margin-bottom:1rem}.modal-body label{margin-bottom:.5rem}.modal-body input[type=text],.modal-body input[type=password],.modal-body select{width:100%}.modal-body p{font-size:.9rem;line-height:1.4;color:var(--text-primary)}.modal-footer{padding:.75rem 1rem 1rem;display:flex;justify-content:flex-end;gap:.5rem}.modal-cancel{font-family:inherit;font-size:.9rem;background:none;color:var(--text-primary);border:none;padding:.5rem 1rem;border-radius:var(--radius-sm);cursor:pointer}.modal-cancel:active{text-decoration:underline}.modal-confirm{font-size:.9rem;padding:.5rem 1rem}.modal-confirm.danger{background:var(--danger)}.modal-confirm.danger:active{background:var(--danger-hover)}@media(hover:hover){.modal-cancel:hover{text-decoration:underline}.modal-confirm.danger:hover{background:var(--danger-hover)}}#image-viewer-overlay{position:fixed;inset:0;background:var(--overlay-heavy);z-index:100;display:flex;align-items:center;justify-content:center;padding:1rem;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}.image-viewer-img{max-width:100%;max-height:100%;object-fit:contain;transform-origin:center center;will-change:transform;-webkit-user-drag:none}#image-viewer-overlay.zoomed .image-viewer-img{cursor:grab}#image-viewer-overlay.zoomed .image-viewer-img:active{cursor:grabbing}.image-viewer-toolbar{position:absolute;top:1rem;right:1rem;display:flex;gap:.25rem}.image-viewer-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--bg-viewer-btn);border:none;border-radius:4px;color:var(--text-white);font-size:1.25rem;cursor:pointer}.image-viewer-btn:active{background:var(--bg-viewer-btn-hover)}@media(max-width:768px){.image-viewer-open-btn{display:none}}@media(hover:hover){.image-viewer-btn:hover{background:var(--bg-viewer-btn-hover)}}#pdf-viewer-overlay{position:fixed;inset:0;background:var(--overlay-heavy);z-index:100;display:flex;flex-direction:column}.pdf-viewer-bar{flex:0 0 auto;display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;min-width:0}.pdf-viewer-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-white);font-size:.85rem;font-weight:500}.pdf-viewer-actions{flex:0 0 auto;display:flex;gap:.25rem}.pdf-viewer-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--bg-viewer-btn);border:none;border-radius:4px;color:var(--text-white);font-size:1.25rem;cursor:pointer}.pdf-viewer-btn:active{background:var(--bg-viewer-btn-hover)}@media(hover:hover){.pdf-viewer-btn:hover{background:var(--bg-viewer-btn-hover)}}@media(max-width:768px){.pdf-viewer-open-btn{display:none}}.pdf-viewer-frame{flex:1 1 auto;width:100%;min-height:0;border:none;background:var(--bg-pdf-frame)}.settings-modal{width:920px;max-width:94vw;height:min(680px,85vh);max-height:85vh;display:flex;overflow:hidden;position:relative}.settings-nav{width:200px;flex-shrink:0;display:flex;flex-direction:column;gap:2px;padding:1rem .75rem;background:var(--bg-primary)}.settings-nav-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);padding:0 .65rem;margin-bottom:.5rem}.settings-nav-item{display:flex;align-items:center;gap:.65rem;font-family:inherit;font-size:.9rem;font-weight:500;background:none;border:none;color:var(--text-secondary);padding:.55rem .65rem;border-radius:var(--radius-sm);cursor:pointer;text-align:left;white-space:nowrap}.settings-nav-item .ui-icon{font-size:1.05rem}.settings-nav-item:active{background:var(--bg-hover);color:var(--text-primary)}.settings-nav-item.active{background:var(--bg-active);color:var(--text-heading)}.settings-body{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;position:relative}.settings-topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.25rem 1.5rem .75rem}.settings-title{font-size:1.15rem;font-weight:700;color:var(--text-heading)}.settings-subtitle{font-size:.85rem;color:var(--text-secondary);margin-top:2px}.settings-close{width:34px;height:34px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-secondary);border-radius:50%;font-size:1.05rem;cursor:pointer}.settings-close:active{background:var(--bg-active);color:var(--text-primary)}.settings-content{flex:1;min-height:0;overflow-y:auto;padding:.25rem 1.5rem 5.5rem}.settings-panel{max-width:620px}.settings-content input[type=text],.settings-content input[type=password]{width:100%}.settings-section{margin-bottom:1.5rem}.settings-label,.settings-content .field>label{display:block;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em;color:var(--text-tertiary);margin-bottom:.6rem}.settings-group{background:var(--bg-tertiary);border-radius:var(--radius-md)}.settings-group>*+*{border-top:1px solid var(--border-subtle)}.setting-row{display:flex;align-items:center;gap:.85rem;padding:.75rem 1rem}.setting-row--clickable{cursor:pointer}.setting-row-icon{width:34px;height:34px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--bg-active);color:var(--text-secondary);border-radius:var(--radius-sm);font-size:1.05rem}.setting-row-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.setting-row-label{font-size:.95rem;font-weight:500;color:var(--text-primary)}.setting-row-desc{font-size:.8rem;color:var(--text-secondary)}.setting-row select{flex-shrink:0;background-color:var(--bg-secondary);padding:.45rem 2rem .45rem .6rem;font-size:.85rem}.settings-note{font-size:.8rem;color:var(--text-secondary);line-height:1.4;margin-top:.6rem}.settings-note--warn{color:var(--error-dark)}.settings-test-btn{margin-top:.75rem}.toggle{position:relative;width:42px;height:25px;flex-shrink:0}.toggle input{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;cursor:pointer}.toggle-track{position:absolute;inset:0;background:var(--bg-active);border-radius:var(--radius-round);transition:background .15s ease;pointer-events:none}.toggle-knob{position:absolute;top:3px;left:3px;width:19px;height:19px;background:var(--text-heading);border-radius:50%;transition:transform .15s ease;box-shadow:0 1px 2px var(--shadow-light)}.toggle input:checked+.toggle-track{background:var(--accent)}.toggle input:checked+.toggle-track .toggle-knob{transform:translate(17px)}.toggle input:focus-visible+.toggle-track{box-shadow:0 0 0 3px var(--accent-faint)}.settings-btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;flex-shrink:0;font-family:inherit;font-size:.85rem;font-weight:500;background:var(--accent);color:var(--text-white);border:none;border-radius:var(--radius-sm);padding:.5rem .9rem;cursor:pointer;white-space:nowrap;transition:background .15s}.settings-btn:active{background:var(--accent-hover)}.settings-btn--ghost{background:none;color:var(--text-secondary)}.settings-btn--ghost:active{background:var(--bg-active);color:var(--text-primary)}.settings-savebar{position:absolute;left:1.5rem;right:1.5rem;bottom:1rem;z-index:2;display:flex;align-items:center;gap:.5rem;background:var(--bg-input);border-radius:var(--radius-md);box-shadow:0 8px 24px var(--shadow-heavy);padding:.6rem .6rem .6rem 1rem;opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .2s ease,transform .2s ease}.settings-savebar.visible{opacity:1;transform:none;pointer-events:auto}.settings-savebar-text{flex:1;min-width:0;font-size:.85rem;color:var(--text-primary)}.settings-profile-hero{margin-bottom:1.5rem}.settings-profile-banner{height:110px;border-radius:var(--radius-md)}.settings-profile-row{display:flex;align-items:flex-end;gap:1rem;padding:0 1.25rem;margin-top:-44px}.settings-avatar-preview{width:88px;height:88px;font-size:2rem;border:6px solid var(--bg-secondary);box-sizing:content-box;position:relative;cursor:pointer}.settings-avatar-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--overlay-medium);color:var(--text-white);font-size:1.4rem;border-radius:50%;opacity:0;transition:opacity .15s ease}.settings-avatar-edit{position:absolute;bottom:0;right:0;width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:var(--bg-active);color:var(--text-primary);border:2px solid var(--bg-secondary);border-radius:50%;font-size:.75rem;transition:opacity .15s ease}.settings-profile-names{flex:1;min-width:0;padding-bottom:4px}.settings-profile-preview-name{font-size:1.25rem;font-weight:800;color:var(--text-heading);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.settings-profile-preview-username{font-size:.85rem;color:var(--text-secondary);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.settings-avatar-remove{margin-bottom:4px}.settings-content .field{margin-bottom:1rem}.field-hint{font-size:.8rem;color:var(--text-secondary);margin-top:.3rem}.field-error{font-size:.8rem;color:var(--error-dark);margin-top:.3rem}input.username-changed{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 55%,transparent);background:color-mix(in srgb,var(--accent) 14%,transparent)}.settings-content input[type=color]{appearance:none;-webkit-appearance:none;width:38px;height:38px;padding:0;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:none;cursor:pointer;flex-shrink:0}.settings-content input[type=color]::-webkit-color-swatch-wrapper{padding:0}.settings-content input[type=color]::-webkit-color-swatch{border:none;border-radius:calc(var(--radius-sm) - 2px)}.settings-content input[type=color]::-moz-color-swatch{border:none;border-radius:calc(var(--radius-sm) - 2px)}.settings-color-row{display:flex;align-items:center;gap:.6rem}.settings-color-row input[type=text]{flex:1;min-width:0}.invite-result{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem}.invite-result input[type=text]{flex:1;min-width:0;font-family:var(--font-mono);font-size:.8rem;color:var(--text-secondary)}.settings-form{padding:.9rem 1rem;display:flex;flex-direction:column;gap:.6rem}.settings-form-row{display:flex;align-items:center;gap:.75rem;margin-top:.15rem}.settings-feedback{font-size:.8rem}.settings-feedback.error{color:var(--error-dark)}.settings-feedback.success{color:var(--success)}.login-toggle{text-align:center;margin-top:1rem;color:var(--text-secondary);font-size:.85rem}.login-toggle a{color:var(--link);text-decoration:none}@media(hover:hover){.settings-nav-item:hover{background:var(--bg-hover);color:var(--text-primary)}.settings-nav-item.active:hover{background:var(--bg-active);color:var(--text-heading)}.settings-close:hover{background:var(--bg-active);color:var(--text-primary)}.settings-btn:hover{background:var(--accent-hover)}.settings-btn--ghost:hover{background:var(--bg-active);color:var(--text-primary)}.settings-avatar-preview:hover .settings-avatar-overlay{opacity:1}.settings-avatar-preview:hover .settings-avatar-edit{opacity:0}.login-toggle a:hover{text-decoration:underline}}.theme-presets{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:.6rem}.theme-preset{padding:0;background:var(--bg-tertiary);border:none;border-radius:var(--radius-md);overflow:hidden;cursor:pointer;text-align:left;font-family:inherit;box-shadow:0 0 0 1px var(--border-subtle)}.theme-preset.active{box-shadow:0 0 0 2px var(--accent)}.theme-preset-chip{display:block;height:56px;position:relative}.theme-preset-dot{position:absolute;top:13px;left:10px;width:14px;height:14px;border-radius:50%}.theme-preset-lines{position:absolute;top:14px;left:32px;right:10px;display:flex;flex-direction:column;gap:6px}.theme-preset-lines span{display:block;height:5px;border-radius:3px;opacity:.85}.theme-preset-lines span:first-child{width:80%}.theme-preset-lines span:last-child{width:55%}.texture-chip{background-color:var(--bg-primary)}.theme-preset-name{display:block;padding:.45rem .6rem;font-size:.75rem;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.6rem}.theme-tile{display:flex;align-items:center;gap:.6rem;background:var(--bg-tertiary);border-radius:var(--radius-md);padding:.5rem .6rem}.theme-tile input[type=color]{width:34px;height:34px}.theme-tile-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.theme-tile-name{font-size:.8rem;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.theme-tile input.theme-tile-hex{width:100%;padding:0;background:none;border:none;border-radius:0;font-family:var(--font-mono);font-size:.75rem;color:var(--text-secondary)}.theme-tile input.theme-tile-hex:focus{color:var(--text-primary)}.theme-fonts{display:flex;flex-direction:column;gap:.6rem}.theme-font-row{display:flex;align-items:center;gap:.6rem}.theme-font-label{width:90px;flex-shrink:0;font-size:.8rem;font-weight:500;color:var(--text-primary)}.theme-font-row input{flex:1;min-width:0;font-size:.85rem}.theme-actions{display:flex;flex-wrap:wrap;gap:.5rem}.theme-paste-error{font-size:.8rem;color:var(--error-dark);margin-top:.5rem}@media(hover:hover){.theme-preset:hover{box-shadow:0 0 0 2px var(--border)}.theme-preset.active:hover{box-shadow:0 0 0 2px var(--accent)}}.emoji-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:.6rem}.emoji-tile{position:relative;display:flex;flex-direction:column;align-items:center;gap:.4rem;background:var(--bg-tertiary);border-radius:var(--radius-md);padding:.85rem .5rem .65rem}.emoji-tile>img{width:36px;height:36px;object-fit:contain}.emoji-tile-name{max-width:100%;font-family:var(--font-mono);font-size:.72rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.emoji-tile-delete{position:absolute;top:4px;right:4px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:50%;color:var(--text-secondary);font-size:.75rem;cursor:pointer;transition:opacity .12s ease,background .12s ease}.emoji-tile-delete:active{background:var(--danger);color:var(--text-white)}.emoji-tile--add{justify-content:center;min-height:86px;background:none;border:1px dashed var(--border);cursor:pointer;color:var(--text-secondary);font-family:inherit;font-size:.78rem;font-weight:500;gap:.3rem}.emoji-tile--add .ui-icon{font-size:1.1rem}.emoji-tile--add:active{background:var(--bg-hover);color:var(--text-primary)}.emoji-editor{display:flex;align-items:center;gap:.6rem;background:var(--bg-tertiary);border-radius:var(--radius-md);padding:.6rem;margin-bottom:.75rem}.emoji-editor-preview{width:44px;height:44px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--bg-input);border-radius:var(--radius-sm)}.emoji-editor-preview img{width:32px;height:32px;object-fit:contain}.emoji-editor input[type=text]{flex:1;min-width:0;font-family:var(--font-mono);font-size:.85rem}.emoji-error{font-size:.8rem;color:var(--error-dark);margin-bottom:.6rem}.emoji-empty-hint{font-size:.8rem;color:var(--text-secondary);margin-top:.6rem}@media(hover:hover){.emoji-tile-delete{opacity:0}.emoji-tile:hover .emoji-tile-delete,.emoji-tile-delete:focus-visible{opacity:1}.emoji-tile-delete:hover{background:var(--danger);color:var(--text-white)}.emoji-tile--add:hover{background:var(--bg-hover);color:var(--text-primary)}}.user-profile-modal{width:400px;max-width:90vw;background:var(--bg-secondary);border-radius:var(--radius-lg);overflow:hidden}.user-profile-banner{height:120px;position:relative}.user-profile-close{position:absolute;top:.75rem;right:.75rem;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--overlay-medium);color:var(--text-white);border:none;border-radius:50%;font-size:1rem;cursor:pointer}.user-profile-hero{padding:0 1rem}.user-profile-avatar{width:88px;height:88px;margin-top:-44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2.25rem;font-weight:700;color:#fff;overflow:hidden;border:6px solid var(--bg-secondary);box-sizing:content-box;position:relative}.user-profile-avatar img{width:100%;height:100%;object-fit:cover}.user-profile-names{padding:.75rem .25rem .25rem}.user-profile-display-name{font-size:1.4rem;font-weight:800;color:var(--text-heading);line-height:1.2}.user-profile-username{font-size:.9rem;color:var(--text-primary);margin-top:.15rem}.user-profile-body{padding:.75rem 1rem 1rem}.user-profile-notes-label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em;color:var(--text-secondary);margin-bottom:.4rem}.user-profile-notes{width:100%;min-height:80px;resize:vertical;font-family:inherit;font-size:.9rem;background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:.6rem .7rem;box-sizing:border-box;line-height:1.4;outline:none}.user-profile-notes:focus{border-color:var(--accent)}.call-overlay{position:fixed;inset:0;background:#000000f2;z-index:1000;display:flex;flex-direction:column;color:#fff}.call-header{display:flex;align-items:center;justify-content:center;gap:1rem;padding:.75rem 1rem;flex-shrink:0}.call-channel-name{font-size:.9rem;font-weight:600;color:#ffffffb3}.call-timer{font-size:.85rem;font-family:monospace;color:#ffffff80}.call-body{display:flex;flex:1;overflow:hidden;position:relative}.call-grid{flex:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.5rem;padding:.5rem;align-content:center;align-items:center;justify-items:center;overflow:hidden}.call-grid.has-screen-share{grid-template-columns:1fr auto;grid-template-rows:1fr;align-content:stretch}.call-tile-screen{aspect-ratio:auto;height:100%;background:#000}.call-tile-screen .call-video{object-fit:contain}.call-sidebar{display:flex;flex-direction:column;gap:.5rem;width:200px;overflow-y:auto}.call-sidebar .call-tile{aspect-ratio:4 / 3;flex-shrink:0}.call-grid.mobile-screen-share{grid-template-columns:1fr;grid-template-rows:1fr auto;position:relative}.call-grid.mobile-screen-share .call-tile-screen{height:100%;aspect-ratio:auto}.call-mobile-view-toggle{position:absolute;bottom:.5rem;right:.5rem;background:#fff3;color:#fff;border:none;border-radius:1rem;padding:.35rem .75rem;font-size:.75rem;font-weight:500;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1}.call-mobile-view-toggle:hover{background:#ffffff4d}.call-control-btn.active{background:#43b581}.call-control-btn.active:hover{background:#3ca374}.call-tile{position:relative;aspect-ratio:16 / 9;width:100%;background:#1a1a2e;border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center}.call-video{width:100%;height:100%;object-fit:cover}.call-video.mirrored{transform:scaleX(-1)}.call-avatar{width:64px;height:64px;border-radius:50%;background:var(--accent, #5865f2);display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:600;color:#fff}.call-volume-slider{position:absolute;bottom:1.4rem;left:0;right:0;padding:0 .4rem;z-index:2;opacity:0;transition:opacity .15s}.call-tile:hover .call-volume-slider{opacity:1}.call-volume-slider input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:2px;background:#ffffff40;outline:none;cursor:pointer}.call-volume-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:#fff;cursor:pointer}.call-volume-slider input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:#fff;border:none;cursor:pointer}.call-tile-label{position:absolute;bottom:0;left:0;right:0;padding:.25rem .5rem;background:linear-gradient(transparent,#000000b3);font-size:.8rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.call-mute-indicator{position:absolute;top:.4rem;right:.4rem;background:#0009;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:.75rem;color:#f04747}.call-controls{display:flex;align-items:center;justify-content:center;gap:1rem;padding:1rem;flex-shrink:0}.call-control-btn{width:48px;height:48px;border-radius:50%;border:none;background:#ffffff26;color:#fff;font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.call-control-btn:hover{background:#ffffff40}.call-control-btn.muted{background:#f04747}.call-control-btn.muted:hover{background:#d63c3c}.call-leave-btn{background:#f04747}.call-leave-btn:hover{background:#d63c3c}.start-call-btn{margin-left:auto;background:none;border:none;color:var(--text-tertiary);font-size:1.3rem;cursor:pointer;padding:.2rem .4rem;border-radius:var(--radius-xs);display:flex;align-items:center;justify-content:center}.start-call-btn:hover{color:var(--text-primary);background:var(--bg-hover)}.call-indicator{margin-left:auto;display:inline-flex;align-items:center;gap:.2rem;color:#43b581;font-size:.7rem;cursor:pointer;padding:.1rem .3rem;border-radius:3px;flex-shrink:0}.call-indicator:hover{background:#43b58126}.call-indicator .ui-icon{font-size:.7rem}.call-indicator-count{font-weight:600;font-size:.65rem}.call-toast-layer{position:fixed;inset:0;pointer-events:none;z-index:1001}.call-error-toast{position:absolute;top:3.5rem;left:50%;transform:translate(-50%);background:#f04747e6;color:#fff;padding:.5rem 1rem;border-radius:6px;font-size:.8rem;white-space:nowrap;z-index:1001;animation:call-toast-fade 4s ease-in-out forwards}@keyframes call-toast-fade{0%{opacity:0;transform:translate(-50%) translateY(-4px)}10%{opacity:1;transform:translate(-50%) translateY(0)}80%{opacity:1}to{opacity:0}}.call-chat-panel{width:320px;display:flex;flex-direction:column;border-left:1px solid rgba(255,255,255,.1);background:#0009;flex-shrink:0}.call-panel-tabs{display:flex;align-items:center;border-bottom:1px solid rgba(255,255,255,.1);flex-shrink:0}.call-panel-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:.3rem;padding:.55rem .5rem;background:none;border:none;border-bottom:2px solid transparent;color:#ffffff80;font-size:.8rem;font-weight:500;cursor:pointer;transition:color .15s,border-color .15s}.call-panel-tab:hover{color:#fffc}.call-panel-tab.active{color:#fff;border-bottom-color:#5865f2}.call-participants-list{flex:1;overflow-y:auto;padding:.4rem 0}.call-participant-row{display:flex;align-items:center;padding:.4rem .75rem;gap:.5rem}.call-participant-row:hover{background:#ffffff0d}.call-participant-name{flex:1;font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.call-participant-controls{display:flex;gap:.25rem;flex-shrink:0}.call-participant-btn{background:none;border:none;color:#fff9;cursor:pointer;width:28px;height:28px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.85rem}.call-participant-btn:hover{background:#ffffff1a;color:#fff}.call-participant-btn.off{color:#f04747}.call-participant-btn.off:hover{background:#f0474733}.call-chat-close{background:none;border:none;color:#fff9;cursor:pointer;font-size:1rem;padding:.15rem;display:flex;align-items:center}.call-chat-close:hover{color:#fff}.call-chat-messages{flex:1;overflow-y:auto;padding:.5rem}.call-chat-messages .message{padding:.2rem .4rem}.call-chat-messages .msg-avatar{width:24px;height:24px;font-size:.7rem}.call-chat-messages .msg-avatar img{width:24px;height:24px}.call-chat-messages .msg-header{font-size:.8rem}.call-chat-messages .msg-content{font-size:.85rem}.call-chat-input-bar{display:flex;align-items:flex-end;gap:.4rem;padding:.5rem;border-top:1px solid rgba(255,255,255,.1);flex-shrink:0}.call-chat-input-bar textarea{flex:1;background:#ffffff1a;border:none;border-radius:6px;color:#fff;padding:.4rem .6rem;font-size:.85rem;font-family:inherit;resize:none;line-height:1.3;max-height:80px}.call-chat-input-bar textarea::placeholder{color:#fff6}.call-chat-input-bar textarea:focus{outline:none;background:#ffffff26}.call-chat-send{background:none;border:none;color:#fff9;cursor:pointer;font-size:1.1rem;padding:.3rem;display:flex;align-items:center}.call-chat-send:hover{color:#fff}.call-chat-badge{position:absolute;top:-4px;right:-4px;background:#f04747;color:#fff;font-size:.65rem;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px;line-height:1}.call-chat-btn{position:relative}@media(max-width:768px){.call-grid{grid-template-columns:1fr;padding:.25rem;gap:.25rem}.call-tile{aspect-ratio:4 / 3}.call-volume-slider{opacity:1}.call-controls{padding:.75rem;gap:.75rem}.call-participants-btn{display:none}.call-control-btn{width:44px;height:44px;font-size:1.1rem}.call-chat-panel{position:absolute;inset:0;width:100%;z-index:10;background:#000000f2;border-left:none}}.mobile-header{display:none}.hamburger-btn{background:none;border:none;color:var(--text-tertiary);font-size:1.4rem;cursor:pointer;padding:0;line-height:1}.hamburger-btn:active{color:var(--text-primary)}.sidebar-overlay{display:none;position:fixed;inset:0;background:var(--overlay-light);z-index:20}@media(max-width:768px){.sidebar{position:fixed;left:0;top:0;bottom:0;width:min(85vw,320px);border-radius:0 var(--radius-lg) var(--radius-lg) 0;z-index:30;transform:translate(-100%);transition:transform .2s ease}.sidebar.open{transform:translate(0)}.sidebar-overlay.open{display:block}.chat-main{touch-action:pan-y}.mobile-header{display:flex}.desktop-header{display:none}.thread-panel{position:fixed;inset:0;width:100%;z-index:15;border-left:none}.modal-overlay .settings-modal,.modal-overlay .user-profile-modal{transform:translateY(100%);transition:transform .25s ease}.modal-overlay.open .settings-modal,.modal-overlay.open .user-profile-modal{transform:none}.settings-modal{width:100%;max-width:100%;height:100%;max-height:100%;border-radius:0;flex-direction:column}.user-profile-modal{align-self:flex-end;width:100%;max-width:100%;height:calc(100% - 48px);max-height:none;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.user-profile-banner{height:140px}.settings-nav{width:auto;flex-direction:row;align-items:center;overflow-x:auto;flex-shrink:0;padding:.6rem .75rem;gap:.25rem}.settings-nav-title{display:none}.settings-nav-item{padding:.45rem .8rem;border-radius:var(--radius-round)}.settings-topbar{padding:.75rem 1rem .5rem}.settings-content{padding:.25rem 1rem 5.5rem}.settings-savebar{left:.75rem;right:.75rem;bottom:.75rem}.settings-profile-banner{height:96px}.settings-profile-row{padding:0 .75rem;margin-top:-36px}.settings-avatar-preview{width:76px;height:76px}.theme-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.emoji-grid{grid-template-columns:repeat(auto-fill,minmax(84px,1fr))}.chat-input-wrap .send-btn{display:flex}.message{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.message:hover{background:none}.message:hover .reaction-toolbar{display:none}.code-copy-btn,.link-preview-dismiss{opacity:1}.gif-picker,.emoji-picker{width:calc(100vw - 16px);max-height:60vh;left:8px!important;bottom:8px!important;top:auto!important}.user-list-panel{display:none}}@media(hover:hover){.hamburger-btn:hover{color:var(--text-primary)}}
