@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";:root{--bg-primary:#1e1f22;--bg-secondary:#2b2d31;--bg-tertiary:#313338;--bg-accent:#383a40;--bg-hover:#35373c;--bg-modifier:#232428;--text-primary:#f2f3f5;--text-secondary:#b5bac1;--text-muted:#80848e;--text-link:#00a8fc;--blurple:#5865f2;--blurple-hover:#4752c4;--green:#57f287;--red:#ed4245;--yellow:#fee75c;--border:#ffffff0f;--shadow:0 4px 24px #0006;--radius:8px;--radius-sm:4px;--radius-lg:16px;--sidebar-width:240px;--icons-width:72px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--bg-primary);height:100%;color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:16px;overflow:hidden}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--bg-accent);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.auth-page{background:radial-gradient(ellipse at 60% 40%, #5865f240 0%, transparent 60%), radial-gradient(ellipse at 20% 80%, #57f2871a 0%, transparent 50%), var(--bg-primary);justify-content:center;align-items:center;height:100vh;display:flex;position:relative;overflow:hidden}.auth-page:before{content:"";pointer-events:none;background:radial-gradient(circle at 10% 20%,#5865f214 0%,#0000 40%),radial-gradient(circle at 90% 80%,#5865f20f 0%,#0000 40%);position:absolute;inset:0}.auth-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:440px;box-shadow:var(--shadow), 0 0 0 1px #5865f21a;padding:40px;animation:.4s cubic-bezier(.16,1,.3,1) slideUp;position:relative;overflow:hidden}.auth-card:before{content:"";background:linear-gradient(90deg, var(--blurple), #7289da, var(--green));height:2px;position:absolute;top:0;left:0;right:0}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.auth-logo{text-align:center;margin-bottom:24px}.auth-logo .logo-icon{background:linear-gradient(135deg, var(--blurple), #7289da);border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;margin-bottom:12px;font-size:28px;display:inline-flex;box-shadow:0 0 32px #5865f266}.auth-card h1{text-align:center;color:var(--text-primary);margin-bottom:4px;font-size:24px;font-weight:700}.auth-card .subtitle{text-align:center;color:var(--text-muted);margin-bottom:28px;font-size:14px}.form-group{margin-bottom:16px}.form-group label{text-transform:uppercase;letter-spacing:.6px;color:var(--text-secondary);margin-bottom:8px;font-size:12px;font-weight:600;display:block}.form-group input{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text-primary);outline:none;padding:12px 14px;font-family:inherit;font-size:16px;transition:border-color .15s,box-shadow .15s}.form-group input:focus{border-color:var(--blurple);box-shadow:0 0 0 3px #5865f233}.form-group input::placeholder{color:var(--text-muted)}.btn{border-radius:var(--radius);cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;padding:12px 20px;font-family:inherit;font-size:15px;font-weight:600;text-decoration:none;transition:background .15s,transform .1s,box-shadow .15s;display:inline-flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--blurple);color:#fff;width:100%;margin-top:8px;box-shadow:0 2px 12px #5865f266}.btn-primary:hover:not(:disabled){background:var(--blurple-hover);box-shadow:0 4px 16px #5865f280}.btn-secondary{background:var(--bg-accent);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover)}.btn-ghost{color:var(--text-secondary);background:0 0;padding:6px 12px;font-size:14px}.btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary)}.btn-danger{background:var(--red);color:#fff;padding:6px 14px;font-size:13px}.btn-danger:hover:not(:disabled){background:#c0392b}.btn-success{background:var(--green);color:#0a0a0a;padding:6px 14px;font-size:13px}.btn-success:hover:not(:disabled){background:#3dd46a}.btn-sm{padding:6px 14px;font-size:13px}.auth-switch{text-align:center;color:var(--text-muted);margin-top:20px;font-size:14px}.auth-switch a{color:var(--blurple);font-weight:500;text-decoration:none}.auth-switch a:hover{text-decoration:underline}.error-msg{border-radius:var(--radius-sm);color:#f28b8c;background:#ed42451f;border:1px solid #ed42454d;margin-bottom:16px;padding:10px 14px;font-size:13px;animation:.2s fadeIn}.success-msg{border-radius:var(--radius-sm);color:var(--green);background:#57f2871f;border:1px solid #57f2874d;margin-bottom:16px;padding:10px 14px;font-size:13px;animation:.2s fadeIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.app-layout{height:100vh;display:flex;overflow:hidden}.nav-sidebar{width:var(--icons-width);background:var(--bg-primary);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;align-items:center;gap:8px;padding:12px 0;display:flex;overflow-y:auto}.nav-separator{background:var(--bg-accent);border-radius:1px;width:32px;height:2px;margin:4px 0}.nav-icon-btn{background:var(--bg-secondary);cursor:pointer;width:48px;height:48px;color:var(--text-secondary);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:20px;transition:border-radius .2s,background .15s,color .15s;display:flex;position:relative}.nav-icon-btn:hover,.nav-icon-btn.active{background:var(--blurple);color:#fff;border-radius:35%}.nav-icon-btn.active:before{content:"";background:#fff;border-radius:0 2px 2px 0;width:4px;height:60%;position:absolute;left:-12px}.nav-bottom{flex-direction:column;align-items:center;gap:8px;margin-top:auto;display:flex}.channel-sidebar{width:var(--sidebar-width);background:var(--bg-secondary);flex-direction:column;flex-shrink:0;display:flex;overflow:hidden}.sidebar-header{border-bottom:1px solid var(--border);align-items:center;min-height:48px;padding:12px 16px;font-size:15px;font-weight:600;display:flex}.sidebar-section-label{text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);padding:16px 16px 4px;font-size:11px;font-weight:700}.dm-item{border-radius:var(--radius);cursor:pointer;align-items:center;gap:12px;padding:8px;transition:background .1s;display:flex;position:relative}.dm-item:hover{background:var(--bg-hover)}.dm-item.active{background:var(--bg-accent)}.dm-item .dm-name{color:var(--text-secondary);font-size:14px;font-weight:500}.dm-item:hover .dm-name,.dm-item.active .dm-name{color:var(--text-primary)}.main-content{background:var(--bg-tertiary);flex-direction:column;flex:1;display:flex;overflow:hidden}.content-header{border-bottom:1px solid var(--border);background:var(--bg-tertiary);flex-shrink:0;align-items:center;gap:12px;height:48px;padding:0 16px;font-size:15px;font-weight:600;display:flex}.avatar{text-transform:uppercase;-webkit-user-select:none;user-select:none;color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:700;display:flex}.avatar-sm{width:32px;height:32px;font-size:12px}.avatar-md{width:40px;height:40px;font-size:15px}.avatar-lg{width:48px;height:48px;font-size:18px}.user-panel{background:var(--bg-modifier);flex-shrink:0;align-items:center;gap:8px;height:52px;margin-top:auto;padding:0 8px;display:flex}.user-panel .user-info{flex:1;overflow:hidden}.user-panel .user-name{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.user-panel .user-tag{color:var(--text-muted);font-size:11px}.user-panel .logout-btn{cursor:pointer;color:var(--text-muted);border-radius:var(--radius-sm);background:0 0;border:none;align-items:center;padding:4px;font-size:16px;transition:color .15s,background .15s;display:flex}.user-panel .logout-btn:hover{color:var(--text-primary);background:var(--bg-hover)}.friends-panel{flex-direction:column;flex:1;display:flex;overflow:hidden}.friends-tabs{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:2px;height:48px;padding:0 16px;display:flex}.friend-tab{border-radius:var(--radius-sm);cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:6px 12px;font-family:inherit;font-size:14px;font-weight:500;transition:background .15s,color .15s;position:relative}.friend-tab:hover{background:var(--bg-hover);color:var(--text-primary)}.friend-tab.active{background:var(--bg-accent);color:var(--text-primary)}.friend-tab .badge{background:var(--red);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;font-size:10px;font-weight:700;display:flex;position:absolute;top:-2px;right:-2px}.friends-body{flex:1;padding:16px;overflow-y:auto}.section-header{text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);padding:8px 0 12px;font-size:12px;font-weight:700}.friend-item{border-radius:var(--radius);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px;transition:background .1s;display:flex}.friend-item:last-child{border-bottom:none}.friend-item:hover{background:var(--bg-hover)}.friend-info{flex:1;overflow:hidden}.friend-name{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.friend-status{color:var(--text-muted);font-size:12px}.friend-actions{flex-shrink:0;gap:8px;display:flex}.add-friend-panel{max-width:640px;padding:24px}.add-friend-panel h2{margin-bottom:8px;font-size:20px;font-weight:700}.add-friend-panel p{color:var(--text-muted);margin-bottom:20px;font-size:14px}.add-friend-form{background:var(--bg-modifier);border:1px solid var(--border);border-radius:var(--radius);gap:12px;padding:4px 4px 4px 16px;transition:border-color .15s,box-shadow .15s;display:flex}.add-friend-form:focus-within{border-color:var(--blurple);box-shadow:0 0 0 3px #5865f226}.add-friend-form input{color:var(--text-primary);background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:15px}.add-friend-form input::placeholder{color:var(--text-muted)}.empty-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;height:100%;padding:40px;display:flex}.empty-state .empty-icon{opacity:.3;font-size:64px}.empty-state p{color:var(--text-muted);max-width:300px;font-size:15px}.chat-panel{flex-direction:column;flex:1;display:flex;overflow:hidden}.messages-area{flex-direction:column;flex:1;gap:12px;padding:16px;display:flex;overflow-y:auto}.mobile-header{background:var(--bg-tertiary);border-bottom:1px solid var(--border);z-index:100;align-items:center;gap:12px;height:48px;padding:0 16px;display:none}.hamburger-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;align-items:center;font-size:24px;display:flex}.sidebar-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:900;background:#000000b3;animation:.2s fadeIn;display:none;position:fixed;inset:0}@media (width<=768px){.mobile-header{display:flex}.nav-sidebar{z-index:1000;transition:transform .3s cubic-bezier(.16,1,.3,1);position:fixed;top:0;bottom:0;left:-320px;box-shadow:4px 0 12px #00000080}.channel-sidebar{top:0;left:calc(-320px + var(--icons-width));z-index:950;transition:transform .3s cubic-bezier(.16,1,.3,1);position:fixed;bottom:0;box-shadow:4px 0 12px #00000080}.app-layout.sidebar-open .nav-sidebar,.app-layout.sidebar-open .channel-sidebar{transform:translate(320px)}.app-layout.sidebar-open .sidebar-overlay{display:block}.main-content{width:100%}.msg-group{max-width:90%}.friend-actions{flex-direction:column;gap:4px}.friend-item{padding:8px}.friends-tabs{white-space:nowrap;justify-content:flex-start;overflow-x:auto}.friends-tabs::-webkit-scrollbar{display:none}.content-header{display:none}.chat-panel{height:calc(100vh - 48px)}}.msg-wrapper{flex-direction:column;width:100%;display:flex}.msg-group{border-radius:var(--radius-lg);gap:12px;max-width:80%;padding:8px 12px;animation:.2s msgIn;display:flex;position:relative}.msg-group-received{background:var(--bg-accent);border-bottom-left-radius:4px;align-self:flex-start}.msg-group-sent{background:var(--blurple);border-bottom-right-radius:4px;flex-direction:row-reverse;align-self:flex-end}.msg-group-sent .msg-header{flex-direction:row-reverse}.msg-group-sent .msg-text{text-align:right;color:#fff}.msg-group-sent .msg-time{color:#fff9}.msg-group-sent .msg-author{color:#fff!important}@keyframes msgIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.msg-avatar-col{flex-shrink:0}.msg-content-col{flex-direction:column;flex:1;display:flex;overflow:hidden}.msg-header{align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.msg-author{font-size:14px;font-weight:700}.msg-time{color:var(--text-muted);font-size:10px}.msg-text{color:var(--text-primary);word-break:break-word;white-space:pre-wrap;font-size:15px;line-height:1.4}.sidebar-section-label:first-child,.sidebar-header{display:none!important}.dm-list{flex:1;padding:16px 8px;overflow-y:auto}.user-panel{background:var(--bg-modifier);border-top:1px solid var(--border);align-items:center;gap:12px;height:64px;padding:0 12px;display:flex}.leave-btn{color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.5px;cursor:pointer;background:#ffffff0d;margin-left:auto;padding:6px 12px;font-size:11px;font-weight:700;transition:all .2s cubic-bezier(.175,.885,.32,1.275)}.leave-btn:hover{background:var(--red);color:#fff;border-color:#0000;transform:scale(1.05);box-shadow:0 4px 12px #ed424566}.badge{background:var(--red);color:#fff;border:3px solid var(--bg-primary);border-radius:10px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 4px;font-size:11px;font-weight:800;display:flex;position:absolute;top:-2px;right:-2px;box-shadow:0 2px 4px #0003}.badge-dot{border-radius:50%;width:12px;min-width:12px;height:12px;padding:0}.chat-input-area{flex-shrink:0;padding:0 16px 16px}.chat-input-wrapper{background:var(--bg-accent);border-radius:var(--radius);border:1px solid var(--border);align-items:flex-end;gap:12px;padding:12px 16px;display:flex}.chat-input{color:var(--text-primary);resize:none;background:0 0;border:none;outline:none;flex:1;max-height:160px;font-family:inherit;font-size:15px;line-height:1.5}.chat-input::placeholder{color:var(--text-muted)}.send-btn{background:var(--blurple);color:#fff;border-radius:var(--radius-sm);cursor:pointer;border:none;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:14px;transition:background .15s,transform .1s;display:flex}.send-btn:hover{background:var(--blurple-hover)}.send-btn:active{transform:scale(.92)}.send-btn:disabled{opacity:.5;cursor:not-allowed}.spinner{border:3px solid var(--bg-accent);border-top-color:var(--blurple);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-screen{background:var(--bg-primary);flex-direction:column;justify-content:center;align-items:center;gap:16px;height:100vh;display:flex}.loading-screen p{color:var(--text-muted);font-size:14px}.toast-container{z-index:1000;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.toast{border-radius:var(--radius);box-shadow:var(--shadow);max-width:320px;padding:12px 18px;font-size:14px;font-weight:500;animation:.3s cubic-bezier(.16,1,.3,1) toastIn}.toast-success{color:var(--green);background:#1a3a26;border:1px solid #57f2874d}.toast-error{color:#f28b8c;background:#3a1a1a;border:1px solid #ed42454d}.toast-info{background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-primary)}@keyframes toastIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.unread-dot{background:var(--red);border-radius:50%;flex-shrink:0;width:8px;height:8px}
