*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0d0f14;--surface: #161921;--surface2: #1e2130;--border: #2a2f45;--accent: #5b7fff;--accent2: #7c5cfc;--text: #e8eaf6;--text-muted:#7b80a0;--online: #34d399;--offline: #4b5068;--danger: #f87171;--radius: 12px;--font-body: "DM Sans", sans-serif;--font-head: "Syne", sans-serif}html,body,#root{height:100%;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:15px;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 30% 20%,#1a1f3a 0%,var(--bg) 60%)}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:2.5rem;width:100%;max-width:420px;box-shadow:0 24px 64px #00000080}.auth-card h1{font-family:var(--font-head);font-size:2rem;background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:.25rem}.auth-card p.subtitle{color:var(--text-muted);margin-bottom:1.75rem;font-size:.9rem}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.8rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.4rem}.form-group input{width:100%;padding:.75rem 1rem;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-family:var(--font-body);font-size:.95rem;outline:none;transition:border-color .2s}.form-group input:focus{border-color:var(--accent)}.btn-primary{width:100%;padding:.8rem;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border:none;border-radius:var(--radius);font-family:var(--font-head);font-size:1rem;font-weight:700;cursor:pointer;margin-top:.5rem;transition:opacity .2s,transform .1s}.btn-primary:hover{opacity:.9;transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.auth-switch{text-align:center;margin-top:1.5rem;font-size:.9rem;color:var(--text-muted)}.auth-switch a{color:var(--accent);text-decoration:none;font-weight:600}.error-msg{background:#f871711f;border:1px solid var(--danger);color:var(--danger);padding:.6rem .9rem;border-radius:8px;font-size:.85rem;margin-bottom:1rem}.dashboard{display:flex;height:100vh;overflow:hidden}.sidebar{width:280px;min-width:280px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column}.sidebar-header{padding:1.25rem 1.25rem .75rem;border-bottom:1px solid var(--border)}.sidebar-header h2{font-family:var(--font-head);font-size:1.4rem;background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.sidebar-header p{font-size:.78rem;color:var(--text-muted);margin-top:2px}.logout-btn{display:block;width:calc(100% - 2.5rem);margin:.75rem 1.25rem;padding:.5rem;background:transparent;border:1px solid var(--border);border-radius:8px;color:var(--text-muted);font-family:var(--font-body);font-size:.85rem;cursor:pointer;transition:all .2s;text-align:left}.logout-btn:hover{border-color:var(--danger);color:var(--danger)}.user-list{overflow-y:auto;flex:1;padding:.5rem 0}.user-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.25rem;cursor:pointer;transition:background .15s;border-left:3px solid transparent}.user-item:hover{background:var(--surface2)}.user-item.active{background:var(--surface2);border-left-color:var(--accent)}.avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;color:#fff;flex-shrink:0;position:relative}.status-dot{width:9px;height:9px;border-radius:50%;position:absolute;bottom:1px;right:1px;border:2px solid var(--surface)}.status-dot.online{background:var(--online)}.status-dot.offline{background:var(--offline)}.user-meta{flex:1;min-width:0}.user-meta .name{font-weight:600;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-meta .status{font-size:.75rem;color:var(--text-muted)}.user-meta .status.online{color:var(--online)}.chat-window{flex:1;display:flex;flex-direction:column;background:var(--bg);overflow:hidden}.chat-header{padding:1rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:.75rem}.chat-header .name{font-weight:700;font-size:1rem}.chat-header .status{font-size:.78rem;color:var(--text-muted)}.chat-header .status.online{color:var(--online)}.messages-area{flex:1;overflow-y:auto;padding:1.5rem;display:flex;flex-direction:column;gap:.5rem}.empty-chat{margin:auto;text-align:center;color:var(--text-muted)}.empty-chat .icon{font-size:3rem;margin-bottom:.5rem}.empty-chat p{font-size:.9rem}.no-chat-selected{flex:1;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:.75rem;color:var(--text-muted);background:var(--bg)}.no-chat-selected .big-icon{font-size:4rem}.no-chat-selected h3{font-family:var(--font-head);font-size:1.4rem;color:var(--text)}.no-chat-selected p{font-size:.9rem}.msg-row{display:flex;align-items:flex-end;gap:.5rem}.msg-row.sent{justify-content:flex-end}.msg-row.recv{justify-content:flex-start}.bubble{max-width:65%;padding:.6rem .9rem;border-radius:16px;font-size:.9rem;line-height:1.5;word-break:break-word}.msg-row.sent .bubble{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border-bottom-right-radius:4px}.msg-row.recv .bubble{background:var(--surface2);color:var(--text);border-bottom-left-radius:4px}.message-text{margin-bottom:.45rem}.message-text:last-child{margin-bottom:0}.forwarded-label{color:#ffffffb8;font-size:.72rem;font-weight:700;margin-bottom:.25rem}.message-image{display:block;width:min(280px,58vw);max-height:280px;object-fit:cover;border-radius:10px}.file-card{display:flex;align-items:center;gap:.75rem;color:inherit;text-decoration:none;min-width:min(260px,55vw)}.file-icon{width:42px;height:42px;border-radius:8px;background:#ffffff29;display:flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:800;flex-shrink:0}.file-card strong{display:block;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-card small{display:block;color:#ffffffb8;margin-top:2px}.message-meta{display:flex;align-items:center;justify-content:flex-end;gap:.55rem;margin-top:3px}.msg-row.recv .message-meta{justify-content:flex-start}.msg-time{font-size:.68rem;color:var(--text-muted)}.forward-btn{background:transparent;border:none;color:var(--text-muted);cursor:pointer;font-family:var(--font-body);font-size:.68rem;font-weight:700;opacity:0;transition:color .15s,opacity .15s}.msg-row:hover .forward-btn,.forward-btn:focus{opacity:1}.forward-btn:hover{color:var(--accent)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:10}.forward-modal{width:min(360px,100%);max-height:min(520px,90vh);overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 24px 64px #00000073;display:flex;flex-direction:column}.forward-modal-header{padding:1rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.forward-modal-header button{background:transparent;border:none;color:var(--text-muted);cursor:pointer;font-family:var(--font-body);font-weight:700}.forward-user-list{overflow-y:auto;padding:.4rem 0}.forward-user{width:100%;border:none;background:transparent;color:var(--text);display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;cursor:pointer;text-align:left;font-family:var(--font-body)}.forward-user:hover{background:var(--surface2)}.forward-user:disabled{cursor:not-allowed;opacity:.55}.forward-user strong,.forward-user small{display:block}.forward-user small{color:var(--text-muted);font-size:.75rem;margin-top:1px}.selected-file{padding:.65rem 1.5rem;background:var(--surface);border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:1rem;color:var(--text-muted);font-size:.85rem}.selected-file span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selected-file small{display:inline-block;margin-left:.5rem;color:var(--text-muted)}.selected-file button{background:transparent;border:none;color:var(--danger);cursor:pointer;font-family:var(--font-body);font-weight:600}.chat-input-area{padding:1rem 1.5rem;background:var(--surface);border-top:1px solid var(--border);display:flex;gap:.75rem;align-items:center}.chat-input-area input{flex:1;padding:.75rem 1rem;background:var(--surface2);border:1px solid var(--border);border-radius:24px;color:var(--text);font-family:var(--font-body);font-size:.95rem;outline:none;transition:border-color .2s}.chat-input-area input:focus{border-color:var(--accent)}.file-input{display:none}.attach-btn,.send-btn{width:42px;height:42px;border-radius:50%;border:none;color:#fff;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .15s,opacity .2s;flex-shrink:0}.attach-btn{background:var(--surface2);border:1px solid var(--border);color:var(--text);font-size:1.35rem}.send-btn{background:linear-gradient(135deg,var(--accent),var(--accent2))}.attach-btn:hover,.send-btn:hover{transform:scale(1.08)}.send-btn:disabled{opacity:.4;cursor:not-allowed}
