*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-base:#0f1117;--bg-surface:#14171f;--bg-raised:#1a1d28;--bg-panel:#1a1d28;--bg-hover:#1e2235;--bg-active:#22263a;--border:#252836;--border-light:#2e334a;--text:#dde2f0;--text-muted:#5a6480;--text-dim:#3a4260;--accent:#7c9ef8;--accent-dim:#3a4f8a;--green:#4caf80;--yellow:#f8d47c;--red:#f87c7c;--mention-bg:#2a2318;--mention-border:#f8d47c55;--sidebar-w:200px;--sidebar-collapsed:40px;--userlist-w:186px;--topic-h:42px;--radius:7px;--radius-sm:4px;color:var(--text);background:var(--bg-base);font-family:Inter,system-ui,-apple-system,sans-serif;font-size:13px;line-height:1.5}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}html,body,#root{height:100%}.app{grid-template-columns:var(--sidebar-w) 1fr 0;background:var(--bg-base);height:100vh;display:grid;overflow:hidden}.app.sidebar-closed{grid-template-columns:var(--sidebar-collapsed) 1fr 0}.app.userlist-open{grid-template-columns:var(--sidebar-w) 1fr var(--userlist-w)}.app.sidebar-closed.userlist-open{grid-template-columns:var(--sidebar-collapsed) 1fr var(--userlist-w)}.main{background:var(--bg-surface);border-left:1px solid var(--border);border-right:1px solid var(--border);flex-direction:column;height:100vh;display:flex;overflow:hidden}.sidebar{background:var(--bg-base);-webkit-user-select:none;user-select:none;flex-direction:column;min-width:0;height:100vh;display:flex;overflow:hidden}.sidebar-header{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:8px;padding:10px 12px;display:flex}.sidebar-toggle-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px 4px;font-size:16px;line-height:1;transition:color .1s}.sidebar-toggle-btn:hover{color:var(--text)}.app.sidebar-closed .sidebar-header{justify-content:center;padding:10px 6px}.app.sidebar-closed .sidebar-logo,.app.sidebar-closed .ws-dot,.app.sidebar-closed .sidebar-own-nick,.app.sidebar-closed .sidebar-profile,.app.sidebar-closed .sidebar-section,.app.sidebar-closed .sidebar-footer,.app.sidebar-closed .sidebar-premium-badge{display:none}.sidebar-logo{letter-spacing:2px;color:var(--accent);text-transform:uppercase;font-size:15px;font-weight:800}.ws-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;transition:background .3s}.sidebar-own-nick{display:none}.sidebar-section{border-bottom:1px solid var(--border);padding:6px 0;overflow-y:auto}.sidebar-section:last-child{border-bottom:none}.sidebar-section-label{letter-spacing:.8px;text-transform:uppercase;color:var(--text-dim);padding:6px 14px 3px;font-size:10px;font-weight:700}.sidebar-item{cursor:pointer;border-left:2px solid #0000;justify-content:space-between;align-items:center;gap:6px;padding:5px 10px 5px 14px;transition:background .1s;display:flex}.sidebar-item:hover{background:var(--bg-hover)}.sidebar-item.active{background:var(--bg-active);border-left-color:var(--accent)}.sidebar-item.mentioned{border-left-color:var(--yellow)}.sidebar-item-name{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;flex:1;font-family:monospace;font-size:13px;overflow:hidden}.sidebar-item.active .sidebar-item-name{color:var(--text)}.sidebar-item.mentioned .sidebar-item-name{color:var(--yellow)}.sidebar-item.query-disconnected .sidebar-item-name{opacity:.45;font-style:italic}.sidebar-item-right{flex-shrink:0;align-items:center;gap:5px;display:flex}.badge{background:var(--bg-raised);color:var(--text-muted);text-align:center;border-radius:99px;min-width:18px;padding:1px 6px;font-size:10px;font-weight:700}.badge-mention{background:var(--yellow);color:#1a1400}.close-btn{color:var(--text-dim);cursor:pointer;opacity:0;background:0 0;border:none;padding:0 2px;font-size:14px;line-height:1;transition:opacity .1s,color .1s}.sidebar-item:hover .close-btn{opacity:1}.close-btn:hover{color:var(--red)}.topic-bar{height:var(--topic-h);border-bottom:1px solid var(--border);background:var(--bg-surface);flex-shrink:0;align-items:center;gap:8px;padding:0 12px;display:flex;overflow:hidden}.topic-bar-hamburger{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;padding:2px 6px;font-size:16px;line-height:1;transition:color .1s,background .1s}.topic-bar-hamburger:hover{color:var(--text);background:var(--bg-hover)}.topic-bar-users-btn{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);text-transform:uppercase;letter-spacing:.6px;cursor:pointer;white-space:nowrap;background:0 0;flex-shrink:0;padding:3px 8px;font-size:10px;font-weight:700;transition:color .1s,border-color .1s,background .1s}.topic-bar-users-btn:hover,.topic-bar-users-btn.active{color:var(--accent);border-color:var(--accent-dim);background:#7c9ef812}.topic-bar-name{color:var(--accent);white-space:nowrap;flex-shrink:0;font-family:monospace;font-size:13px;font-weight:700}.topic-bar-sep{color:var(--border-light);flex-shrink:0}.topic-bar-text{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.topic-bar-count{color:var(--text-dim);white-space:nowrap;flex-shrink:0;margin-left:auto;font-size:11px}.chat-window{flex-direction:column;flex:1;padding:10px 0 6px;display:flex;overflow-y:auto}.chat-load-more{text-align:center;padding:6px 0 2px}.chat-load-more button{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:10px;padding:3px 10px;font-size:11px;transition:color .15s,border-color .15s}.chat-load-more button:hover{color:var(--text);border-color:var(--accent)}.chat-empty{color:var(--text-dim);flex:1;justify-content:center;align-items:center;font-size:13px;display:flex}.chat-separator{color:var(--accent);opacity:.7;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:6px 16px;font-size:11px;display:flex}.chat-separator:before,.chat-separator:after{content:"";background:var(--accent);opacity:.3;flex:1;height:1px}.msg{border-left:2px solid #0000;align-items:flex-start;gap:12px;padding:2px 16px;transition:background .1s;display:flex;position:relative}.msg:not(.msg-grouped){padding-top:14px}.msg:hover{background:var(--bg-hover)}.msg.msg-mention{background:var(--mention-bg);border-left-color:var(--yellow)}.msg.msg-mention:hover{background:#2e2a1a}.msg-avatar-col{flex-shrink:0;justify-content:center;width:40px;padding-top:1px;display:flex}.msg-grouped-time{color:var(--text-dim);opacity:0;text-align:right;flex-shrink:0;width:40px;font-family:monospace;font-size:9px;line-height:20px;transition:opacity .1s}.msg:hover .msg-grouped-time{opacity:1}.msg-content-col{flex:1;min-width:0;padding-bottom:2px}.msg-header{align-items:baseline;gap:8px;margin-bottom:2px;display:flex}.msg-nick{cursor:default;font-size:13px;font-weight:700}.msg-nick-btn{cursor:pointer;background:0 0;border:none;padding:0}.msg-nick-btn:hover{text-decoration:underline}.msg-time{color:var(--text-dim);flex-shrink:0;font-family:monospace;font-size:11px}.msg-text{color:var(--text);word-break:break-word;white-space:pre-wrap;font-size:13px;line-height:1.45}.msg-error .msg-text{color:#ffb2b2}.msg-action-line{color:var(--text-dim);align-items:baseline;gap:7px;padding:3px 16px;font-size:13px;font-style:italic;line-height:1.45;display:flex}.msg-action-line.msg-mention{border-left:2px solid var(--yellow);background:#ffcc0014;padding-left:14px}.msg-action-marker{color:var(--accent);font-weight:700}.msg-action-text{color:var(--text-dim);word-break:break-word;white-space:pre-wrap;font-style:italic}.msg-action-text .mirc-text{color:var(--text)}.msg-linklike{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:none;padding:0}.msg-linklike:hover{text-decoration:underline}.msg-event{color:var(--text-dim);align-items:center;gap:10px;padding:2px 16px;font-size:12px;font-style:italic;display:flex}.msg-event-text{flex:1}.composer{border-top:1px solid var(--border);background:var(--bg-surface);flex-shrink:0;padding:8px 12px 10px}.composer-hint{color:var(--text-muted);padding:0 4px 5px;font-family:monospace;font-size:11px}.composer-hint kbd{background:var(--bg-raised);border:1px solid var(--border-light);border-radius:var(--radius-sm);color:var(--text-dim);padding:0 4px;font-size:10px}.composer-row{align-items:center;gap:8px;display:flex}.composer-input{background:var(--bg-raised);border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text);outline:none;flex:1;padding:8px 12px;font-family:inherit;font-size:13px;transition:border-color .15s}.composer-input:focus{border-color:var(--accent-dim)}.composer-input::placeholder{color:var(--text-dim)}.composer-input:disabled{opacity:.4;cursor:not-allowed}.composer-input.composer-input-cmd{color:var(--accent);font-family:monospace}.composer-send{background:var(--accent);border-radius:var(--radius);color:#0a0d14;cursor:pointer;border:none;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:16px;font-weight:700;transition:opacity .15s;display:flex}.composer-send:disabled{background:var(--bg-raised);color:var(--text-dim);cursor:not-allowed}.composer-send:hover:not(:disabled){opacity:.85}.userlist{background:var(--bg-base);flex-direction:column;min-width:0;height:100vh;display:flex;overflow:hidden}.userlist-header{height:var(--topic-h);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:6px;padding:0 8px;display:flex}.userlist-toggle-btn{color:var(--text-dim);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;padding:4px 6px;font-size:12px;line-height:1;transition:color .1s,background .1s}.userlist-toggle-btn:hover{color:var(--text-muted);background:var(--bg-hover)}.userlist-group{border-bottom:1px solid var(--border);padding:6px 0;overflow-y:auto}.userlist-group:last-child{border-bottom:none}.userlist-group-label{letter-spacing:.7px;text-transform:uppercase;color:var(--text-dim);padding:4px 12px 3px;font-size:10px;font-weight:700}.user-item{cursor:default;border-radius:var(--radius-sm);align-items:center;gap:8px;margin:1px 4px;padding:4px 10px;transition:background .1s;display:flex}.user-item:hover{background:var(--bg-hover)}.user-item.user-self{opacity:.6}.user-avatar{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-family:monospace;font-size:9px;font-weight:800;display:flex}.user-nick{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-family:monospace;font-size:12px;overflow:hidden}.user-prefix{color:var(--yellow);margin-right:1px;font-weight:700}.connect-overlay{-webkit-backdrop-filter:blur(6px);z-index:100;background:#0a0c12bf;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.connect-form{background:var(--bg-surface);border:1px solid var(--border-light);border-radius:var(--radius);flex-direction:column;gap:12px;width:420px;max-width:100%;padding:24px;display:flex;box-shadow:0 12px 40px #00000080}.connect-title{color:var(--accent);text-align:center;letter-spacing:1.5px;text-transform:uppercase;margin:0 0 4px;font-size:15px;font-weight:700}.connect-row{gap:10px;display:flex}.connect-field{flex-direction:column;gap:4px;min-width:0;display:flex}.connect-field-grow{flex:1}.connect-field-port{flex-shrink:0;width:90px}.connect-field label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.7px;font-size:10px;font-weight:700}.connect-field input{background:var(--bg-raised);border:1px solid var(--border-light);border-radius:var(--radius-sm);color:var(--text);outline:none;width:100%;padding:8px 10px;font-family:inherit;font-size:13px;transition:border-color .15s}.connect-field input:focus{border-color:var(--accent-dim)}.connect-hint{color:var(--text-dim);margin-top:2px;font-size:10px}.connect-status{color:var(--text-muted);text-align:center;min-height:20px;padding:6px 0 2px;font-size:11px}.connect-status code{background:var(--bg-raised);color:var(--accent);border-radius:3px;padding:1px 5px;font-size:10px}.connect-actions{gap:8px;margin-top:4px;display:flex}.connect-submit{background:var(--accent);border-radius:var(--radius);color:#0a0d14;cursor:pointer;letter-spacing:.5px;border:none;flex:1;padding:10px;font-size:13px;font-weight:700;transition:opacity .15s}.connect-submit:hover:not(:disabled){opacity:.9}.connect-submit:disabled{background:var(--bg-raised);color:var(--text-dim);cursor:not-allowed}.connect-clear{border:1px solid var(--border);border-radius:var(--radius);color:var(--text-dim);cursor:pointer;background:0 0;padding:10px 14px;font-size:12px;transition:color .15s,border-color .15s}.connect-clear:hover{color:var(--text);border-color:var(--text-dim)}.sidebar-profile{border-bottom:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:8px;padding:10px 12px 8px;display:flex}.sidebar-profile-top{align-items:center;gap:10px;display:flex}.sidebar-profile-avatar{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-family:monospace;font-size:11px;font-weight:800;display:flex}.sidebar-profile-info{flex-direction:column;gap:1px;min-width:0;display:flex}.sidebar-profile-username{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.sidebar-profile-nick{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-family:monospace;font-size:11px;overflow:hidden}.sidebar-disconnect-btn{border:1px solid var(--border-light);width:100%;color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;text-align:center;letter-spacing:.3px;background:0 0;padding:5px 8px;font-family:inherit;font-size:11px;font-weight:600;transition:color .1s,border-color .1s,background .1s}.sidebar-disconnect-btn:hover{color:var(--red);border-color:var(--red);background:#f87c7c0a}.sidebar-footer{border-top:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:2px;margin-top:auto;padding:8px;display:flex}.sidebar-footer-btn{border-radius:var(--radius-sm);width:100%;color:var(--text-muted);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:7px 10px;font-family:inherit;font-size:12px;transition:color .1s,background .1s;display:flex}.sidebar-footer-btn:hover{color:var(--text);background:var(--bg-hover)}.sidebar-footer-btn--logout:hover{color:var(--red)}.sidebar-footer-icon{text-align:center;flex-shrink:0;width:18px;font-size:14px}.sidebar-footer-label{flex:1}.sidebar-settings-btn{display:none}.setup-screen{background:var(--bg-base);z-index:200;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.setup-card{background:var(--bg-surface);border:1px solid var(--border-light);border-radius:var(--radius);flex-direction:column;gap:4px;width:440px;max-width:100%;padding:32px 28px 28px;display:flex;box-shadow:0 16px 48px #0000008c}.setup-logo{letter-spacing:4px;color:var(--accent);text-transform:uppercase;text-align:center;font-size:28px;font-weight:900}.setup-subtitle{color:var(--text-dim);text-align:center;letter-spacing:2px;text-transform:uppercase;margin-bottom:16px;font-size:11px}.setup-form{flex-direction:column;gap:12px;display:flex}.setup-row{gap:10px;display:flex}.setup-field{flex-direction:column;gap:4px;min-width:0;display:flex}.setup-field-grow{flex:1}.setup-field-port{flex-shrink:0;width:88px}.setup-field label{text-transform:uppercase;letter-spacing:.7px;color:var(--text-muted);font-size:10px;font-weight:700}.setup-optional{text-transform:none;letter-spacing:0;color:var(--text-dim);font-weight:400}.setup-field input{background:var(--bg-raised);border:1px solid var(--border-light);border-radius:var(--radius-sm);color:var(--text);outline:none;width:100%;padding:8px 10px;font-family:inherit;font-size:13px;transition:border-color .15s}.setup-field input:focus{border-color:var(--accent-dim)}.setup-hint{color:var(--text-dim);margin-top:1px;font-size:10px}.setup-ssl-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;display:flex}.setup-ssl-toggle input[type=checkbox]{opacity:0;width:0;height:0;position:absolute}.setup-ssl-track{background:var(--border-light);border-radius:9px;flex-shrink:0;width:32px;height:18px;transition:background .2s;display:inline-block;position:relative}.setup-ssl-track:after{content:"";background:var(--text-muted);border-radius:50%;width:12px;height:12px;transition:transform .2s,background .2s;position:absolute;top:3px;left:3px}.setup-ssl-toggle input:checked~.setup-ssl-track{background:var(--accent-dim)}.setup-ssl-toggle input:checked~.setup-ssl-track:after{background:var(--accent);transform:translate(14px)}.setup-ssl-label{color:var(--text);font-size:12px;font-weight:600}.setup-ssl-hint{color:var(--text-dim);font-size:11px}.setup-advanced-toggle{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;width:fit-content;padding:2px 0;font-family:inherit;font-size:11px;transition:color .1s;display:flex}.setup-advanced-toggle:hover{color:var(--text)}.setup-advanced-arrow{font-size:10px}.setup-advanced{border-top:1px solid var(--border);flex-direction:column;gap:10px;padding:8px 0 0;display:flex}.setup-status-wait{color:var(--text-muted);text-align:center;font-size:11px}.setup-status-wait code{background:var(--bg-raised);color:var(--accent);border-radius:3px;padding:1px 5px;font-size:10px}.setup-connect-btn{background:var(--accent);border-radius:var(--radius);color:#0a0d14;cursor:pointer;letter-spacing:.5px;border:none;width:100%;margin-top:4px;padding:11px;font-size:13px;font-weight:700;transition:opacity .15s}.setup-connect-btn:hover:not(:disabled){opacity:.88}.setup-connect-btn:disabled{background:var(--bg-raised);color:var(--text-dim);cursor:not-allowed}.settings-overlay{-webkit-backdrop-filter:blur(4px);z-index:150;background:#0a0c12b3;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.settings-panel{background:var(--bg-surface);border:1px solid var(--border-light);border-radius:var(--radius);flex-direction:column;width:440px;max-width:100%;max-height:90vh;display:flex;overflow-y:auto;box-shadow:0 12px 40px #00000080}.settings-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 20px 14px;display:flex}.settings-title{color:var(--text);text-transform:uppercase;letter-spacing:1px;font-size:13px;font-weight:700}.settings-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:18px;line-height:1;transition:color .1s}.settings-close:hover{color:var(--text)}.settings-form{flex-direction:column;gap:12px;padding:20px;display:flex}.settings-actions{gap:8px;margin-top:4px;display:flex}.settings-save-btn{border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-muted);cursor:pointer;background:0 0;padding:10px 16px;font-family:inherit;font-size:12px;transition:color .1s,border-color .1s}.settings-save-btn:hover{color:var(--text);border-color:var(--text-dim)}.settings-reconnect-btn{background:var(--accent);border-radius:var(--radius);color:#0a0d14;cursor:pointer;letter-spacing:.3px;border:none;flex:1;padding:10px;font-size:13px;font-weight:700;transition:opacity .15s}.settings-reconnect-btn:hover{opacity:.88}.userlist-scroll{flex:1;padding:4px 0;overflow-y:auto}.msg-avatar{border-radius:50%;flex-shrink:0}.msg-grade-prefix{color:var(--yellow);flex-shrink:0;font-family:monospace;font-size:12px;font-weight:700;line-height:1}.msg-bot-badge{background:var(--bg-raised);border:1px solid var(--border-light);color:var(--text-dim);letter-spacing:.5px;text-transform:uppercase;border-radius:var(--radius-sm);flex-shrink:0;align-items:center;padding:0 4px;font-size:9px;font-weight:700;line-height:16px;display:inline-flex}.nick-menu{background:var(--bg-surface);border:1px solid var(--border-light);border-radius:var(--radius);flex-direction:column;min-width:160px;padding:4px 0;display:flex;box-shadow:0 8px 28px #0000008c}.nick-menu-title{color:var(--text-muted);border-bottom:1px solid var(--border);text-overflow:ellipsis;white-space:nowrap;margin-bottom:2px;padding:6px 12px 8px;font-family:monospace;font-size:11px;font-weight:700;overflow:hidden}.nick-menu button{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:none;padding:6px 12px;font-family:inherit;font-size:12px;transition:background .1s}.nick-menu button:hover{background:var(--bg-hover)}.nick-menu-sep{background:var(--border);height:1px;margin:2px 0}.nick-menu-danger{color:var(--red)!important}.whois-overlay{z-index:1200;background:#0a0c1299;position:fixed;inset:0}.whois-modal{z-index:1201;background:var(--bg-surface);border:1px solid var(--border-light);border-radius:var(--radius);flex-direction:column;width:90vw;min-width:360px;max-width:520px;max-height:80vh;display:flex;position:fixed;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 12px 40px #0000008c}.whois-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px 10px;display:flex}.whois-title{color:var(--accent);font-family:monospace;font-size:13px;font-weight:700}.whois-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:18px;line-height:1;transition:color .1s}.whois-close:hover{color:var(--text)}.whois-body{padding:12px 16px 16px;overflow-y:auto}.whois-table{border-collapse:collapse;width:100%}.whois-table tr{vertical-align:top}.whois-table td{padding:4px 0;font-size:12px;line-height:1.5}.whois-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;width:100px;padding-right:16px;font-family:monospace;font-size:10px;font-weight:700}.whois-value{color:var(--text);word-break:break-all;font-family:monospace;font-size:12px}.channel-list-panel{background:var(--bg-surface);flex-direction:column;height:100%;display:flex;overflow:hidden}.channel-list-header{height:var(--topic-h);border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;padding:0 20px;display:flex}.channel-list-title{align-items:baseline;gap:10px;display:flex;overflow:hidden}.channel-list-title-main{color:var(--accent);white-space:nowrap;font-size:13px;font-weight:700}.channel-list-title-server{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-family:monospace;font-size:12px;overflow:hidden}.channel-list-count{color:var(--text-dim);white-space:nowrap;font-size:11px}.channel-list-refresh{background:var(--accent);border-radius:var(--radius);color:#0a0d14;cursor:pointer;white-space:nowrap;border:none;flex-shrink:0;padding:5px 14px;font-size:12px;font-weight:700;transition:opacity .15s}.channel-list-refresh:hover:not(:disabled){opacity:.85}.channel-list-refresh:disabled{opacity:.45;cursor:not-allowed}.channel-list-loading,.channel-list-empty{color:var(--text-dim);flex:1;justify-content:center;align-items:center;font-size:13px;display:flex}.channel-list-body{flex:1;overflow-y:auto}.channel-list-table{border-collapse:collapse;table-layout:fixed;width:100%}.channel-list-table thead{background:var(--bg-raised);z-index:1;position:sticky;top:0}.channel-list-table th{text-align:left;letter-spacing:.7px;text-transform:uppercase;color:var(--text-dim);border-bottom:1px solid var(--border);padding:7px 12px;font-size:10px;font-weight:700}.channel-list-col-name{width:22%}.channel-list-col-users{text-align:right;width:8%}.channel-list-col-topic{width:70%}.channel-list-row{cursor:pointer;border-bottom:1px solid var(--border);transition:background .1s}.channel-list-row:hover{background:var(--bg-hover)}.channel-list-table td{text-overflow:ellipsis;white-space:nowrap;color:var(--text);padding:6px 12px;font-size:12px;overflow:hidden}.channel-list-col-users{color:var(--text-muted);text-align:right;font-family:monospace}.channel-list-joined{color:var(--green);font-weight:700}.channel-list-no-topic{color:var(--text-dim)}.channel-list-error{color:var(--yellow);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;padding:24px;font-size:13px;display:flex}.channel-list-error-icon{font-size:28px}.msg-server-line{align-items:baseline;gap:10px;padding:2px 16px;font-size:13px;line-height:1.5;display:flex}.msg-server-line--error .msg-server-text{color:#ffb2b2}.msg-server-text{color:var(--text-muted);word-break:break-word;white-space:pre-wrap;flex:1}.auth-tabs{gap:4px;margin-bottom:20px;display:flex}.auth-tab{background:var(--bg-raised);border:1px solid var(--border-light);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;flex:1;padding:8px;font-size:12px;font-weight:600;transition:background .15s,color .15s}.auth-tab.active{background:var(--accent-dim);color:var(--text);border-color:var(--accent-dim)}.auth-message{background:var(--bg-raised);border-radius:var(--radius);color:var(--text-muted);text-align:center;padding:14px;font-size:12px;line-height:1.7}.auth-error{color:var(--red);margin-top:4px;font-size:11px}.auth-link-btn{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px}.admin-overlay{z-index:300;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.admin-panel{background:var(--bg-surface);border:1px solid var(--border-light);border-radius:var(--radius);flex-direction:column;width:720px;max-width:95vw;max-height:85vh;display:flex;box-shadow:0 20px 60px #0009}.admin-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.admin-tabs{border-bottom:1px solid var(--border);padding:0 20px;display:flex}.admin-tab{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 16px;font-size:12px;font-weight:600;transition:color .15s}.admin-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.admin-body{flex:1;padding:20px;overflow-y:auto}.admin-stat-grid{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px;display:grid}.admin-stat-card{background:var(--bg-raised);border-radius:var(--radius);text-align:center;padding:16px}.admin-stat-value{color:var(--accent);font-size:28px;font-weight:800}.admin-stat-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-top:4px;font-size:10px}.admin-table{border-collapse:collapse;width:100%;font-size:12px}.admin-table th{text-align:left;border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);padding:6px 10px;font-size:10px}.admin-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:8px 10px}.admin-action-btn{border-radius:var(--radius-sm);border:1px solid var(--border-light);color:var(--text);cursor:pointer;background:0 0;padding:3px 10px;font-size:11px;transition:opacity .15s}.admin-action-btn:hover{opacity:.75}.admin-approve-btn{color:var(--green);border-color:var(--green)}.admin-reject-btn{color:var(--red);border-color:var(--red)}.admin-filter{background:var(--bg-raised);border:1px solid var(--border-light);border-radius:var(--radius-sm);color:var(--text);padding:5px 8px;font-size:12px}.sidebar-admin-btn{border:1px solid var(--accent-dim);border-radius:var(--radius-sm);width:100%;color:var(--accent);cursor:pointer;text-align:left;background:0 0;margin-top:4px;padding:6px 10px;font-size:11px;transition:background .15s;display:block}.sidebar-admin-btn:hover{background:var(--accent-dim);color:var(--text)}.setup-pwd-saved{color:var(--green);text-transform:uppercase;letter-spacing:.4px;margin-left:4px;font-size:10px;font-weight:600}.setup-actions{align-items:center;gap:8px;margin-top:4px;display:flex}.setup-secondary-btn{background:var(--bg-raised);border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-muted);cursor:pointer;white-space:nowrap;padding:9px 14px;font-size:12px;font-weight:600;transition:background .15s,color .15s}.setup-secondary-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.setup-secondary-btn:disabled{opacity:.45;cursor:not-allowed}.setup-connect-btn--inline{flex:1}.setup-test-result{border-radius:var(--radius-sm);border:1px solid;padding:8px 10px;font-size:11px}.setup-test-result.ok{color:var(--green);border-color:var(--green);background:#4caf8014}.setup-test-result.fail{color:var(--red);border-color:var(--red);background:#f87c7c14}.sidebar-premium-badge{border-radius:var(--radius-sm);border:1px solid var(--accent-dim);color:var(--accent);letter-spacing:.3px;background:#7c9ef812;justify-content:space-between;align-items:center;gap:6px;margin:6px 10px 0;padding:5px 10px;font-size:10px;font-weight:600;display:flex}.sidebar-premium-expiry{color:var(--text-muted);font-size:10px;font-weight:400}.panel-backdrop{z-index:499;background:#0000008c;display:none;position:fixed;inset:0}@media (width<=767px){.app,.app.sidebar-closed,.app.userlist-open,.app.sidebar-closed.userlist-open{grid-template-columns:1fr!important}.panel-backdrop{display:block}.sidebar{z-index:500;height:100%;box-shadow:none;transition:transform .25s,box-shadow .25s;position:fixed;top:0;left:0;transform:translate(-100%);width:var(--sidebar-w)!important}.app:not(.sidebar-closed) .sidebar{transform:translate(0);box-shadow:4px 0 24px #0000008c}.app.sidebar-closed .sidebar-logo,.app.sidebar-closed .ws-dot,.app.sidebar-closed .sidebar-own-nick,.app.sidebar-closed .sidebar-profile,.app.sidebar-closed .sidebar-section,.app.sidebar-closed .sidebar-footer,.app.sidebar-closed .sidebar-premium-badge{display:revert}.app.sidebar-closed .sidebar-header{justify-content:flex-start;padding:10px 12px}.userlist{z-index:500;height:100%;box-shadow:none;transition:transform .25s,box-shadow .25s;position:fixed;top:0;right:0;transform:translate(100%);width:var(--userlist-w)!important}.app.userlist-open .userlist{transform:translate(0);box-shadow:-4px 0 24px #0000008c}}@media (width>=768px){.topic-bar-hamburger{display:none}}.topic-bar-center{flex:1;align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}.topic-bar-star,.topic-bar-menu{color:var(--text-dim);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;padding:2px 6px;font-size:16px;line-height:1;transition:color .1s,background .1s}.topic-bar-star:hover,.topic-bar-menu:hover{color:var(--text);background:var(--bg-hover)}.sidebar-item-icon{color:var(--text-dim);-webkit-user-select:none;user-select:none;flex-shrink:0;font-family:monospace;font-size:11px}.sidebar-item.active .sidebar-item-icon{color:var(--text-muted)}.sidebar-section-label-row{justify-content:space-between;align-items:center;padding:6px 10px 3px 14px;display:flex}.sidebar-section-label-row .sidebar-section-label{padding:0}.sidebar-section-add-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:18px;font-weight:300;line-height:1;transition:color .1s}.sidebar-section-add-btn:hover{color:var(--accent)}.userlist-search-input{background:var(--bg-raised);border:1px solid var(--border-light);border-radius:var(--radius-sm);min-width:0;color:var(--text);outline:none;flex:1;padding:5px 9px;font-family:inherit;font-size:12px;transition:border-color .15s}.userlist-search-input:focus{border-color:var(--accent-dim)}.userlist-search-input::placeholder{color:var(--text-dim);font-size:12px}.composer-btn-icon{color:var(--text-dim);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;padding:4px 6px;font-size:16px;line-height:1;transition:color .1s,background .1s}.composer-btn-icon:hover:not(:disabled){color:var(--text-muted);background:var(--bg-hover)}.composer-btn-icon:disabled{opacity:.3;cursor:not-allowed}.topic-bar-menu.active{color:var(--text);background:var(--bg-hover)}.kebab-menu{z-index:600;background:var(--bg-surface);border:1px solid var(--border-light);border-radius:var(--radius);flex-direction:column;min-width:180px;padding:4px 0;display:flex;position:fixed;box-shadow:0 8px 28px #0000008c}.kebab-menu-item{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:none;padding:8px 16px;font-family:inherit;font-size:13px;transition:background .1s}.kebab-menu-item:hover{background:var(--bg-hover)}.kebab-menu-danger{color:var(--red)!important}.kebab-menu-danger:hover{background:#f87c7c12!important}.kebab-menu-sep{background:var(--border);height:1px;margin:3px 0}.composer-emoji-picker{z-index:300;position:fixed}.msg-avatar img,.user-avatar img,.sidebar-profile-avatar img{object-fit:cover;border-radius:50%;width:100%;height:100%}.msg-reactions{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.reaction-pill{border:1px solid var(--border);background:var(--bg-input);color:var(--text);cursor:pointer;border-radius:12px;align-items:center;gap:4px;padding:2px 8px;font-size:13px;transition:background .15s;display:inline-flex}.reaction-pill:hover{background:var(--hover)}.reaction-pill-own{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 18%, transparent)}.msg-hover-bar{z-index:300;background:var(--bg-panel);border:1px solid var(--border);pointer-events:auto;border-radius:24px;align-items:center;gap:2px;margin-top:-4px;padding:4px 6px;display:flex;position:absolute;top:0;right:16px;transform:translateY(-100%);box-shadow:0 2px 10px #0000004d}.msg-hover-bar.bar-below{margin-top:0;top:100%;transform:translateY(4px)}.msg-hover-emoji-btn{cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;font-size:20px;line-height:1;transition:transform .1s,background .1s;display:flex}.msg-hover-emoji-btn:hover{background:var(--hover);transform:scale(1.25)}.msg-hover-more-btn{border:1px solid var(--border);background:var(--bg-input);width:32px;height:32px;color:var(--text-muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;font-size:16px;line-height:1;transition:background .1s,color .1s;display:flex}.msg-hover-more-btn:hover{background:var(--hover);color:var(--text)}.emoji-picker-overlay{z-index:498;position:fixed;inset:0}.emoji-picker-full{z-index:499;background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;grid-template-columns:repeat(8,1fr);gap:2px;width:288px;padding:8px;display:grid;position:absolute;bottom:calc(100% + 6px);right:0;box-shadow:0 4px 20px #0006}.emoji-picker-btn{cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:32px;height:32px;font-size:20px;line-height:1;transition:background .1s,transform .1s;display:flex}.emoji-picker-btn:hover{background:var(--hover);transform:scale(1.2)}.modal-overlay{z-index:500;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.avatar-upload-panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;width:320px;max-width:90vw;padding:20px}.avatar-upload-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.avatar-upload-header h3{margin:0;font-size:15px}.avatar-upload-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:18px}.avatar-upload-preview{justify-content:center;margin-bottom:16px;display:flex}.avatar-upload-error{color:var(--red);margin-bottom:8px;font-size:12px}.avatar-upload-actions{flex-wrap:wrap;gap:8px;margin-bottom:8px;display:flex}.avatar-upload-hint{color:var(--text-muted);margin:0 0 12px;font-size:11px}.avatar-pack-section{border-top:1px solid var(--border);padding-top:12px}.avatar-pack-label{color:var(--text-muted);margin:0 0 8px;font-size:12px}.avatar-pack-grid{grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:6px;display:grid}.avatar-pack-item{cursor:pointer;background:0 0;border:2px solid #0000;border-radius:50%;width:52px;height:52px;padding:0;transition:border-color .15s;overflow:hidden}.avatar-pack-item:hover{border-color:var(--accent)}.avatar-pack-item img{object-fit:cover;width:100%;height:100%}.avatar-pack-admin-grid{grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:8px;margin-top:8px;display:grid}.avatar-pack-admin-item{color:var(--text-muted);flex-direction:column;align-items:center;gap:4px;font-size:11px;display:flex}.avatar-pack-admin-item img{object-fit:cover;border:1px solid var(--border);border-radius:50%;width:52px;height:52px}.avatar-pack-admin-label{text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:80px;overflow:hidden}.ignore-overlay{z-index:600;background:#0006;position:fixed;inset:0}.ignore-panel{z-index:601;background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;width:min(400px,92vw);max-height:70vh;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 8px 32px #00000080}.ignore-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 16px 12px;font-size:15px;font-weight:600;display:flex}.ignore-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:20px;line-height:1}.ignore-close:hover{color:var(--text)}.ignore-body{flex:1;padding:8px 0;overflow-y:auto}.ignore-empty{text-align:center;color:var(--text-dim);margin:0;padding:20px;font-size:13px}.ignore-list{margin:0;padding:0;list-style:none}.ignore-row{justify-content:space-between;align-items:center;gap:12px;padding:6px 16px;display:flex}.ignore-row:hover{background:var(--bg-hover)}.ignore-nick{color:var(--text);flex:1;font-family:monospace;font-size:14px}.ignore-remove-btn{border:1px solid var(--border);background:var(--bg-input);color:var(--error,#e05c5c);cursor:pointer;border-radius:6px;flex-shrink:0;padding:3px 10px;font-size:12px}.ignore-remove-btn:hover{background:var(--hover)}.ignore-footer{border-top:1px solid var(--border);gap:8px;padding:10px 16px 14px;display:flex}.ignore-input{border:1px solid var(--border);background:var(--bg-input);color:var(--text);border-radius:8px;flex:1;padding:7px 10px;font-size:13px}.ignore-add-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:7px 14px;font-size:13px}.ignore-add-btn:hover{filter:brightness(1.1)}.banlist-overlay{z-index:600;background:#0006;position:fixed;inset:0}.banlist-panel{z-index:601;background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;width:min(680px,95vw);max-height:75vh;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 8px 32px #00000080}.banlist-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 16px 12px;font-family:monospace;font-size:15px;font-weight:600;display:flex}.banlist-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0 4px;font-family:sans-serif;font-size:20px;line-height:1}.banlist-close:hover{color:var(--text)}.banlist-body{flex:1;padding:8px 0;overflow-y:auto}.banlist-loading,.banlist-empty{text-align:center;color:var(--text-dim);margin:0;padding:24px;font-size:13px}.banlist-table{border-collapse:collapse;width:100%;font-size:13px}.banlist-table th{text-align:left;color:var(--text-muted);border-bottom:1px solid var(--border);padding:6px 16px;font-size:12px;font-weight:500}.banlist-table td{border-bottom:1px solid color-mix(in srgb, var(--border) 40%, transparent);padding:7px 16px}.banlist-table tr:last-child td{border-bottom:none}.banlist-table tr:hover td{background:var(--bg-hover)}.banlist-mask{color:var(--text);word-break:break-all;font-family:monospace}.banlist-setter{color:var(--text-muted)}.banlist-ts{color:var(--text-dim);white-space:nowrap}.banlist-remove-btn{border:1px solid var(--border);background:var(--bg-input);color:var(--error,#e05c5c);cursor:pointer;white-space:nowrap;border-radius:6px;padding:3px 10px;font-size:12px}.banlist-remove-btn:hover{background:var(--hover)}.banlist-footer{border-top:1px solid var(--border);gap:8px;padding:10px 16px 14px;display:flex}.banlist-input{border:1px solid var(--border);background:var(--bg-input);color:var(--text);border-radius:8px;flex:1;padding:7px 10px;font-family:monospace;font-size:13px}.banlist-add-btn{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:7px 14px;font-size:13px}.banlist-add-btn:hover{filter:brightness(1.1)}
