:root{--bg-0: #0a0a0d;--bg-1: #0d0d10;--bg-2: #131317;--bg-3: #1a1a20;--bg-hover: #212129;--border: #26262e;--text-0: #f2f2f5;--text-1: #b5bac1;--text-2: #80848e;--accent: #e63946;--accent-hover: #f04b58;--accent-dim: rgba(230, 57, 70, .15);--danger: #ed4245;--radius: 8px;--rail-w: 72px;--sidebar-w: 240px;--members-w: 240px}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg-0);color:var(--text-0);font-size:15px;overflow:hidden}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,textarea{font-family:inherit}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-thumb{background:var(--bg-3);border-radius:4px}::-webkit-scrollbar-track{background:transparent}.app{display:flex;height:100vh}.main{flex:1;display:flex;min-width:0}.rail{width:var(--rail-w);background:var(--bg-0);display:flex;flex-direction:column;align-items:center;padding:12px 0;gap:8px;overflow-y:auto;flex-shrink:0}.rail-item{width:48px;height:48px;border-radius:50%;background:var(--bg-3);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;color:var(--text-1);transition:border-radius .2s,background .2s,color .2s;position:relative;flex-shrink:0}.rail-item:hover,.rail-item.active{border-radius:16px;background:var(--accent);color:#fff}.rail-item.add{color:#43b581}.rail-item.add:hover{background:#43b581;color:#fff}.rail-divider{width:32px;height:2px;background:var(--border);flex-shrink:0}.sidebar{width:var(--sidebar-w);background:var(--bg-1);display:flex;flex-direction:column;flex-shrink:0;border-right:1px solid var(--bg-0)}.sidebar-header{height:48px;padding:0 16px;display:flex;align-items:center;font-weight:700;border-bottom:1px solid var(--bg-0);box-shadow:0 1px #0000004d;cursor:pointer}.sidebar-header:hover{background:var(--bg-2)}.channel-list{flex:1;overflow-y:auto;padding:12px 8px}.channel-category{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-2);padding:8px 8px 4px}.channel-item{display:flex;align-items:center;gap:6px;padding:7px 8px;border-radius:var(--radius);color:var(--text-2);font-weight:500;width:100%;text-align:left;font-size:15px}.channel-item:hover{background:var(--bg-hover);color:var(--text-1)}.channel-item.active{background:var(--accent-dim);color:var(--text-0)}.channel-item .hash{font-size:18px;font-weight:400;opacity:.7}.channel-item .badge{margin-left:auto;background:var(--danger);color:#fff;font-size:11px;font-weight:700;border-radius:8px;padding:1px 6px;min-width:18px;text-align:center}.user-panel{height:52px;background:var(--bg-0);display:flex;align-items:center;padding:0 8px;gap:8px}.user-panel .info{flex:1;min-width:0}.user-panel .name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-panel .tag{font-size:11px;color:var(--text-2)}.chat{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--bg-2)}.chat-header{height:48px;padding:0 16px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--bg-0);box-shadow:0 1px #0000004d;flex-shrink:0}.chat-header .title{font-weight:700}.chat-header .topic{color:var(--text-2);font-size:13px;border-left:1px solid var(--border);padding-left:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-header .search-btn{margin-left:auto;background:var(--bg-0);border-radius:var(--radius);padding:4px 10px;font-size:13px;color:var(--text-2);display:flex;gap:6px;align-items:center}.chat-header .search-btn:hover{color:var(--text-0)}.message-list{flex:1;overflow-y:auto;padding:16px 0 8px;display:flex;flex-direction:column}.day-sep{display:flex;align-items:center;gap:8px;margin:16px 16px 8px;color:var(--text-2);font-size:12px;font-weight:600}.day-sep:before,.day-sep:after{content:"";flex:1;height:1px;background:var(--border)}.message{display:flex;gap:14px;padding:3px 16px;position:relative}.message.grouped{padding-top:1px;padding-bottom:1px}.message:hover{background:#00000026}.message .gutter{width:40px;flex-shrink:0;display:flex;justify-content:center;padding-top:2px}.message .body{min-width:0;flex:1}.message .meta{display:flex;align-items:baseline;gap:8px}.message .author{font-weight:600;color:var(--text-0);font-size:15px}.message .time{font-size:11px;color:var(--text-2)}.message .content{color:var(--text-1);line-height:1.4;word-wrap:break-word;white-space:pre-wrap}.message .edited{font-size:10px;color:var(--text-2);margin-left:4px}.message .reply-ref{font-size:12px;color:var(--text-2);border-left:2px solid var(--accent);padding-left:8px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.message .actions{position:absolute;top:-16px;right:16px;background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);display:none;box-shadow:0 4px 12px #0006}.message:hover .actions{display:flex}.message .actions button{padding:6px 10px;color:var(--text-1);font-size:13px}.message .actions button:hover{color:var(--text-0);background:var(--bg-hover)}.message .actions button.danger:hover{color:var(--danger)}.avatar{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;flex-shrink:0;-webkit-user-select:none;user-select:none}.avatar.sm{width:32px;height:32px;font-size:13px}.empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-2)}.empty-state .big{font-size:40px}.empty-state h2{color:var(--text-0)}.composer-wrap{padding:0 16px 20px}.reply-bar{background:var(--bg-1);border-radius:var(--radius) var(--radius) 0 0;padding:6px 12px;font-size:12px;color:var(--text-2);display:flex;justify-content:space-between;align-items:center}.reply-bar b{color:var(--text-1)}.composer{background:var(--bg-3);border-radius:var(--radius);display:flex;align-items:flex-end;padding:8px 12px;gap:8px}.composer.with-reply{border-radius:0 0 var(--radius) var(--radius)}.composer textarea{flex:1;background:none;border:none;outline:none;resize:none;color:var(--text-0);font-size:15px;line-height:1.4;max-height:200px}.composer textarea::placeholder{color:var(--text-2)}.composer .send{color:var(--accent);font-size:18px;padding:4px}.composer .send:hover{color:var(--accent-hover)}.typing{height:18px;font-size:12px;color:var(--text-2);padding:2px 20px 0}.members{width:var(--members-w);background:var(--bg-1);overflow-y:auto;padding:16px 8px;flex-shrink:0}.members .category{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--text-2);padding:4px 8px}.member{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:var(--radius);color:var(--text-2)}.member:hover{background:var(--bg-hover);color:var(--text-1)}.member .dot{width:8px;height:8px;border-radius:50%;background:#43b581;margin-left:auto;flex-shrink:0}.member .dot.idle{background:#faa61a}.member .dot.dnd{background:var(--danger)}.member .dot.invisible{background:var(--text-2)}.auth{height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(600px 400px at 80% 20%,rgba(230,57,70,.12),transparent),var(--bg-0)}.auth-card{width:420px;max-width:92vw;background:var(--bg-2);border-radius:12px;padding:32px;border:1px solid var(--border)}.auth-logo{font-size:34px;font-weight:800;color:var(--accent);text-align:center}.auth-sub{text-align:center;color:var(--text-2);margin-bottom:24px;font-size:14px}.auth-tabs{display:flex;gap:4px;background:var(--bg-0);border-radius:var(--radius);padding:4px;margin-bottom:20px}.auth-tabs button{flex:1;padding:8px;border-radius:6px;color:var(--text-2);font-weight:600}.auth-tabs button.active{background:var(--accent);color:#fff}.field{margin-bottom:14px}.field label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;color:var(--text-2);margin-bottom:6px;letter-spacing:.4px}.field input{width:100%;background:var(--bg-0);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;color:var(--text-0);font-size:15px;outline:none}.field input:focus{border-color:var(--accent)}.btn-primary{width:100%;background:var(--accent);color:#fff;font-weight:700;font-size:15px;padding:11px;border-radius:var(--radius);margin-top:6px}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.error-box{background:#ed42451f;border:1px solid rgba(237,66,69,.4);color:#ff7b80;border-radius:var(--radius);padding:10px 12px;font-size:13px;margin-bottom:14px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:50}.modal{width:440px;max-width:92vw;background:var(--bg-2);border-radius:12px;padding:24px;border:1px solid var(--border)}.modal h2{margin-bottom:16px}.modal .row{display:flex;gap:8px;margin-top:16px;justify-content:flex-end}.btn-ghost{padding:10px 16px;color:var(--text-1);font-weight:600}.btn-ghost:hover{color:var(--text-0)}.btn-solid{background:var(--accent);color:#fff;font-weight:700;padding:10px 18px;border-radius:var(--radius)}.btn-solid:hover{background:var(--accent-hover)}.palette-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;justify-content:center;padding-top:15vh;z-index:60}.palette{width:560px;max-width:92vw;background:var(--bg-2);border-radius:12px;border:1px solid var(--border);overflow:hidden;height:fit-content;max-height:60vh}.palette input{width:100%;background:none;border:none;outline:none;padding:16px;font-size:16px;color:var(--text-0);border-bottom:1px solid var(--border)}.palette .results{overflow-y:auto;padding:8px}.palette .result{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius);width:100%;text-align:left;color:var(--text-1)}.palette .result:hover,.palette .result.selected{background:var(--accent-dim);color:var(--text-0)}.palette .result .cluster-name{margin-left:auto;font-size:12px;color:var(--text-2)}.search-results{flex:1;overflow-y:auto;padding:12px 16px}.search-hit{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;margin-bottom:8px;font-size:14px}.search-hit .who{font-weight:700;margin-right:8px}.search-hit .when{font-size:11px;color:var(--text-2)}.ws-pill{position:fixed;bottom:12px;right:12px;font-size:11px;background:var(--bg-1);border:1px solid var(--border);border-radius:12px;padding:4px 10px;color:var(--text-2);z-index:40}.ws-pill.on{color:#43b581}@media(max-width:1100px){.members{display:none}}@media(max-width:820px){.sidebar{width:200px}}.avatar{position:relative}.avatar.xs{width:22px;height:22px;font-size:11px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#43b581;flex-shrink:0}.dot.idle{background:#faa61a}.dot.dnd{background:var(--danger)}.dot.invisible,.dot.offline,.member .dot.offline{background:#747f8d}.avatar .dot.in-avatar{position:absolute;right:-3px;bottom:-3px;width:14px;height:14px;border:3px solid var(--bg-1);background:#43b581}.avatar .dot.in-avatar.idle{background:#faa61a}.avatar .dot.in-avatar.dnd{background:var(--danger)}.avatar .dot.in-avatar.invisible,.avatar .dot.in-avatar.offline{background:#747f8d}.dot.inline{width:9px;height:9px}.avatar-btn{border-radius:50%;line-height:0}.avatar-btn:hover{filter:brightness(1.15)}.rail-item{position:relative}.rail-item.home{background:var(--bg-3);font-size:18px}.rail-item.home.active{background:var(--accent)}.rail-badge{position:absolute;top:-3px;right:-3px;background:var(--accent);color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px;border:2px solid var(--bg-0)}button.member{width:100%;text-align:left;color:var(--text-2)}.member.is-offline{opacity:.55}.user-panel{position:relative}.user-panel-btn{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:4px;border-radius:6px;text-align:left}.user-panel-btn:hover{background:var(--bg-hover)}.user-panel-btn .chev{margin-left:auto;color:var(--text-2);font-size:14px}.status-menu{position:absolute;bottom:58px;left:8px;right:8px;background:var(--bg-3);border:1px solid var(--border);border-radius:10px;padding:8px;z-index:70;box-shadow:0 10px 30px #0000008c}.status-menu-title{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-2);font-weight:700;padding:4px 6px}.status-opt{display:flex;align-items:center;gap:8px;width:100%;padding:7px 8px;border-radius:6px;font-size:13px;color:var(--text-1);text-align:left}.status-opt:hover{background:var(--bg-hover);color:var(--text-0)}.status-opt.active{background:var(--accent-dim)}.status-opt .check{margin-left:auto;color:var(--accent);font-weight:700}.status-opt.danger:hover{background:#ed424526;color:#ff7b80}.status-sep{height:1px;background:var(--border);margin:6px 0}.status-custom{display:flex;gap:6px;padding:0 6px}.status-custom input{flex:1;min-width:0;background:var(--bg-0);border:1px solid var(--border);border-radius:6px;padding:6px 8px;color:var(--text-0);font-size:13px;outline:none}.status-custom input:focus{border-color:var(--accent)}.status-custom button{background:var(--accent);border-radius:6px;padding:0 10px;font-size:12px;font-weight:700;color:#fff}.channel-item.dm-item{gap:8px}.channel-item.dm-nav{gap:6px}.tabs{display:flex;gap:4px;margin-left:8px;flex-wrap:wrap}.tab{font-size:13px;font-weight:600;color:var(--text-2);padding:5px 10px;border-radius:6px}.tab:hover{background:var(--bg-hover);color:var(--text-1)}.tab.active{background:var(--accent-dim);color:var(--text-0)}.tab.add-friend-tab{background:var(--accent);color:#fff}.tab.add-friend-tab:hover{background:var(--accent-hover);color:#fff}.friends-body{flex:1;overflow-y:auto;padding:18px 16px}.add-friend{max-width:640px}.add-friend label{font-size:15px;font-weight:800;text-transform:uppercase;letter-spacing:.5px}.add-friend p{color:var(--text-2);font-size:13px;margin:6px 0 14px}.add-row{display:flex;gap:8px}.add-row input{flex:1;background:var(--bg-0);border:1px solid var(--border);border-radius:var(--radius);padding:12px;color:var(--text-0);outline:none;font-size:15px}.add-row input:focus{border-color:var(--accent)}.add-row .btn-solid:disabled{opacity:.5;cursor:not-allowed}.hint{margin-top:12px;font-size:13px;color:var(--text-2)}.hint.ok{color:#43b581}.hint.err{color:#ff7b80}.list-label{font-size:12px;font-weight:700;text-transform:uppercase;color:var(--text-2);margin-bottom:8px}.empty-line{color:var(--text-2);font-size:14px;padding:4px 0 18px}.friend-row{display:flex;align-items:center;gap:8px;border-top:1px solid var(--border);padding:10px 6px}.friend-row:last-child{border-bottom:1px solid var(--border)}.friend-row:hover{background:var(--bg-hover);border-radius:var(--radius);border-color:transparent}.friend-main{display:flex;align-items:center;gap:12px;flex:1;min-width:0;text-align:left}.friend-name{font-weight:600;font-size:15px;color:var(--text-0)}.friend-sub{font-size:12px;color:var(--text-2)}.friend-actions{display:flex;gap:8px}.btn-solid.sm,.btn-ghost.sm{width:34px;height:34px;border-radius:50%;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px}.btn-ghost.danger{color:#ff7b80}.btn-ghost.danger:hover{color:#ff7b80;background:#ed42451f}.dm-title{display:flex;align-items:center;gap:8px;min-width:0}.dm-title:hover .title{text-decoration:underline}.typing-ind{font-size:12px;font-style:italic;color:var(--text-2);padding:4px 2px 6px;height:22px}.profile-card{width:380px;max-width:92vw;background:var(--bg-2);border:1px solid var(--border);border-radius:14px;overflow:hidden}.profile-banner{height:90px;position:relative}.profile-close{position:absolute;top:8px;right:8px;width:28px;height:28px;border-radius:50%;background:#00000073;color:#fff;font-size:13px}.profile-close:hover{background:#000000b3}.profile-avatar{position:absolute;left:20px;bottom:-30px;width:76px;height:76px;border-radius:50%;border:6px solid var(--bg-2);display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:800;color:#fff}.profile-body{padding:40px 20px 20px}.profile-name{font-size:20px;font-weight:800}.profile-username{color:var(--text-2);font-size:13px;display:flex;align-items:center}.profile-custom{color:var(--text-1);font-size:13px;margin-top:4px}.profile-section{margin-top:14px}.profile-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--text-2);margin-bottom:4px}.profile-bio{font-size:14px;color:var(--text-1);line-height:1.45;white-space:pre-wrap}.profile-meta{margin-top:14px;font-size:12px;color:var(--text-2);display:flex;gap:6px;flex-wrap:wrap}.profile-actions{margin-top:16px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.profile-loading{padding:26px;text-align:center;color:var(--text-2);font-size:14px}.profile-loading.err{color:#ff7b80}
