/* ── Chat Page ── */ .chat-page { display: flex; flex-direction: column; flex: 1; height: 100vh; background: linear-gradient(135deg, #1a2340 0%, #0d1018 100%); } /* Header */ .chat-header { display: flex; align-items: center; gap: 14px; padding: 14px 18px; border-bottom: 1px solid var(--border); background: rgba(13, 16, 24, .7); backdrop-filter: blur(12px); } .chat-back-btn { background: none; border: 1px solid var(--border); border-radius: 10px; color: var(--muted); font-size: 1.2rem; cursor: pointer; padding: 6px 12px; transition: background .15s, color .15s; } .chat-back-btn:hover { background: rgba(255, 255, 255, .08); color: #fff; } .chat-header-title { flex: 1; color: #fff; font-weight: 900; font-size: 1.1rem; } .chat-status { font-size: .75rem; font-weight: 700; color: var(--muted); } .chat-status.connected { color: #2de0c8; } .chat-header-avatar { width: 36px; height: 36px; border-radius: 50%; background: rgba(45, 224, 200, .15); border: 2px solid rgba(45, 224, 200, .3); display: flex; align-items: center; justify-content: center; font-size: 1.1rem; flex-shrink: 0; overflow: hidden; } .chat-header-avatar-img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; } /* Messages area */ .chat-messages { flex: 1; overflow-y: auto; padding: 20px; display: flex; flex-direction: column; gap: 10px; } .chat-messages::-webkit-scrollbar { width: 4px; } .chat-messages::-webkit-scrollbar-thumb { background: rgba(255,255,255,.1); border-radius: 2px; } .chat-empty { text-align: center; color: var(--muted); font-size: .9rem; padding: 40px 0; } .chat-empty-full { flex: 1; display: flex; align-items: center; justify-content: center; color: var(--muted); font-size: .95rem; } /* Bubbles */ .chat-bubble { max-width: 70%; padding: 10px 14px; border-radius: 14px; font-size: .93rem; line-height: 1.45; align-self: flex-start; background: rgba(255, 255, 255, .08); color: #fff; word-break: break-word; } .chat-bubble.mine { align-self: flex-end; background: #2de0c8; color: #082320; } /* Input row */ .chat-input-row { display: flex; gap: 10px; padding: 16px; border-top: 1px solid var(--border); background: rgba(13, 16, 24, .5); backdrop-filter: blur(8px); } .chat-input { flex: 1; padding: 12px 16px; border-radius: 12px; border: 1px solid var(--border); background: rgba(255, 255, 255, .08); color: #fff; font-family: var(--font); font-size: .9rem; outline: none; transition: border-color .2s; } .chat-input::placeholder { color: var(--muted); } .chat-input:focus { border-color: rgba(45, 224, 200, .5); } .chat-send-btn { padding: 0 20px; border-radius: 12px; border: none; background: #2de0c8; color: #082320; cursor: pointer; font-size: 1.1rem; font-weight: 900; transition: background .2s, opacity .2s; } .chat-send-btn:hover:not(:disabled) { background: #24c9b2; } .chat-send-btn:disabled { opacity: .4; cursor: default; } /* ── Emoji picker ── */ .chat-input-area { position: relative; } .chat-emoji-picker { position: absolute; bottom: 100%; right: 0; margin-bottom: 8px; z-index: 100; } .chat-emoji-picker em-emoji-picker { width: 320px; max-height: 350px; --rgb-background: 13, 16, 24; --rgb-accent: 45, 224, 200; } .chat-emoji-btn { background: rgba(255, 255, 255, .08); border: 1px solid var(--border); border-radius: 12px; padding: 0 12px; cursor: pointer; font-size: 1.3rem; line-height: 1; transition: background .15s, border-color .15s; } .chat-emoji-btn:hover, .chat-emoji-btn.active { background: rgba(255, 255, 255, .14); border-color: rgba(45, 224, 200, .5); } /* ── Chat List ── */ .chat-list { flex: 1; overflow-y: auto; padding: 8px; } .chat-list::-webkit-scrollbar { width: 4px; } .chat-list::-webkit-scrollbar-thumb { background: rgba(255,255,255,.1); border-radius: 2px; } .chat-list-item { display: flex; align-items: center; gap: 14px; padding: 14px 16px; border-radius: 14px; cursor: pointer; transition: background .15s; border: 1px solid transparent; } .chat-list-item:hover { background: rgba(255, 255, 255, .05); border-color: rgba(45, 224, 200, .2); } .chat-list-avatar { width: 44px; height: 44px; border-radius: 50%; background: rgba(45, 224, 200, .15); border: 2px solid rgba(45, 224, 200, .3); display: flex; align-items: center; justify-content: center; font-size: 1.15rem; font-weight: 800; color: #2de0c8; flex-shrink: 0; overflow: hidden; } .chat-list-avatar-img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; } .chat-list-info { flex: 1; min-width: 0; } .chat-list-item.unread .chat-list-name { color: #2de0c8; } .chat-list-item.unread .chat-list-preview { color: rgba(45, 224, 200, .6); font-weight: 600; } .chat-list-name { color: #fff; font-weight: 700; font-size: .9rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .chat-list-preview { color: var(--muted); font-size: .78rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 3px; } /* ── Unread Badge ── */ .chat-list-unread-badge { background: #2de0c8; color: #082320; font-size: .7rem; font-weight: 900; min-width: 20px; height: 20px; border-radius: 10px; display: flex; align-items: center; justify-content: center; padding: 0 6px; flex-shrink: 0; } /* ── Sidebar Unread Badge ── */ .f-sb-unread-badge { background: #2de0c8; color: #082320; font-size: .65rem; font-weight: 900; min-width: 18px; height: 18px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; padding: 0 5px; margin-left: auto; } /* ── Contact Button on Card ── */ .f-card-contact { display: flex; align-items: center; gap: 5px; background: rgba(45, 224, 200, .12); border: 1px solid rgba(45, 224, 200, .3); border-radius: 20px; padding: 5px 14px; cursor: pointer; font-family: var(--font); font-size: .8rem; font-weight: 700; color: #2de0c8; transition: all .2s; } .f-card-contact:hover { background: rgba(45, 224, 200, .22); border-color: rgba(45, 224, 200, .5); } .chat-list-delete-btn { background: rgba(255, 71, 87, .1); border: 1px solid rgba(255, 71, 87, .2); border-radius: 10px; color: rgba(255, 71, 87, .5); cursor: pointer; padding: 8px; display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity .2s, background .2s, border-color .2s, color .2s; flex-shrink: 0; } .chat-list-item:hover .chat-list-delete-btn { opacity: 1; } .chat-list-delete-btn:hover { background: rgba(255, 71, 87, .2); border-color: rgba(255, 71, 87, .4); color: #ff4757; } /* Mobile adjustments */ @media (max-width: 600px) { .chat-header { padding: 12px 14px; } .chat-input-row { padding: 12px; } .chat-bubble { max-width: 85%; } }