@font-face { font-family: "Inter"; src: url("InterVariable.ttf"); } :root { --primary-color: #5865f2; --success-color: #3ba55c; --danger-color: #ed4245; --background-dark: #36393f; --background-darker: #2f3136; --background-light: #40444b; --background-lightest: #4f545c; --background-overlay: rgba(0, 0, 0, 0.6); --text-normal: #dcddde; --text-muted: #a3a6aa; --text-link: #00aff4; --text-positive: #3ba55c; --scrollbar-thin-thumb: #202225; --scrollbar-thin-track: transparent; --sidebar-width: 240px; --users-panel-width: 240px; --chat-input-height: 68px; --radius-sm: 4px; --radius-md: 8px; --radius-lg: 16px; --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); --shadow-md: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); --shadow-lg: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); --animation-duration: 0.2s; } * { margin: 0; padding: 0; box-sizing: border-box; } html, body { height: 100%; width: 100%; overflow: hidden; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; color: var(--text-normal); background-color: var(--background-dark); } /* Custom Scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: var(--background-lightest); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: var(--text-muted); } .hidden { display: none !important; } /* Login Page */ #login-container { height: 100vh; width: 100vw; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #721c7a, #612bd4, #3aa5c5, #30cf7f); background-size: 400% 400%; animation: gradient 120s ease infinite; } @keyframes gradient { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .login-card { width: 100%; max-width: 480px; background-color: var(--background-dark); border-radius: var(--radius-md); box-shadow: var(--shadow-lg); overflow: hidden; padding: 2rem; } .login-header { text-align: center; margin-bottom: 2rem; } .login-header h2 { font-size: 2rem; font-weight: 700; margin-bottom: 0.5rem; color: var(--text-normal); } .login-header p { color: var(--text-muted); font-size: 0.9rem; } .login-form { display: flex; flex-direction: column; gap: 1rem; } .input-group { position: relative; display: flex; align-items: center; } .input-group i { position: absolute; left: 12px; color: var(--text-muted); font-size: 1rem; } .input-group input { width: 100%; padding: 12px 12px 12px 40px; background-color: var(--background-darker); border: 1px solid rgba(0, 0, 0, 0.3); border-radius: var(--radius-sm); color: var(--text-normal); font-size: 1rem; transition: border-color var(--animation-duration) ease; } .input-group input:focus { outline: none; border-color: var(--primary-color); } .checkbox-group { display: flex; align-items: center; gap: 0.5rem; margin-top: 0.5rem; } .checkbox-group input[type="checkbox"] { width: 18px; height: 18px; cursor: pointer; } .checkbox-group label { color: var(--text-normal); font-size: 0.9rem; cursor: pointer; } .login-buttons { display: flex; gap: 1rem; margin-top: 0.5rem; } .server-options { display: flex; flex-direction: column; align-items: center; margin-top: 1rem; } .server-config { margin-top: 1rem; width: 100%; display: none; } /* Buttons */ .btn { display: inline-flex; align-items: center; justify-content: center; padding: 10px 16px; border-radius: var(--radius-sm); font-size: 0.9rem; font-weight: 500; cursor: pointer; transition: background-color var(--animation-duration) ease; border: none; color: var(--text-normal); } .btn-primary { background-color: var(--primary-color); } .btn-primary:hover { background-color: #4752c4; } .btn-success { background-color: var(--success-color); } .btn-success:hover { background-color: #2d8a49; } .btn-danger { background-color: var(--danger-color); } .btn-danger:hover { background-color: #c7373a; } .btn-text { background-color: transparent; color: var(--text-link); padding: 5px 10px; } .btn-text:hover { text-decoration: underline; } .btn-icon { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; background-color: transparent; border: none; color: var(--text-muted); cursor: pointer; transition: all var(--animation-duration) ease; } .btn-icon:hover { color: var(--text-normal); background-color: var(--background-lightest); } /* App Layout */ #app { height: 100vh; width: 100vw; display: grid; grid-template-columns: var(--sidebar-width) 1fr var(--users-panel-width); grid-template-rows: 1fr; } /* Sidebar */ .sidebar { grid-column: 1; background-color: var(--background-darker); height: 100%; display: flex; flex-direction: column; border-right: 1px solid rgba(0, 0, 0, 0.2); } .sidebar-header { padding: 1rem; border-bottom: 1px solid rgba(0, 0, 0, 0.2); } .sidebar-header h3 { font-size: 1.2rem; font-weight: 600; } .room-list { flex: 1; overflow-y: auto; padding: 1rem 0.5rem; } .room-category { margin-bottom: 1rem; } .room-category-header { display: flex; align-items: center; justify-content: space-between; padding: 0.5rem; font-size: 0.8rem; font-weight: 700; text-transform: uppercase; color: var(--text-muted); } .room-item { display: flex; align-items: center; padding: 0.5rem 0.75rem; margin: 0.25rem 0; border-radius: var(--radius-sm); font-size: 1rem; color: var(--text-muted); cursor: pointer; transition: all var(--animation-duration) ease; } .room-item:hover { background-color: var(--background-light); color: var(--text-normal); } .room-item.active { background-color: var(--background-light); color: var(--text-normal); font-weight: 500; } .room-item i { margin-right: 0.5rem; font-size: 1rem; } .user-profile { padding: 1rem; display: flex; align-items: center; gap: 0.75rem; background-color: rgba(0, 0, 0, 0.15); } .user-avatar { width: 32px; height: 32px; border-radius: 50%; background-color: var(--primary-color); display: flex; align-items: center; justify-content: center; color: white; } .user-info { display: flex; flex-direction: column; } .user-status { font-size: 0.75rem; color: var(--text-muted); } /* Chat Container */ .chat-container { grid-column: 2; display: flex; flex-direction: column; height: 100%; overflow: hidden; } .chat-header { height: 48px; padding: 0 1rem; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgba(0, 0, 0, 0.2); background-color: var(--background-dark); z-index: 10; } .current-room { display: flex; align-items: center; gap: 0.5rem; font-size: 1rem; font-weight: 600; } .current-room i { color: var(--text-muted); } .header-actions { display: flex; align-items: center; gap: 0.5rem; } .chat-content { flex: 1; display: flex; flex-direction: column; /* background-color: var(--background-dark); position: relative; height: 100%;*/ overflow: hidden; } .messages { flex: 1; overflow-y: auto; padding: 1rem; display: flex; flex-direction: column; gap: 0.25rem; min-height: 0; } .message { display: flex; margin-bottom: 0.5rem; } .message-avatar { width: 40px; height: 40px; border-radius: 50%; background-color: var(--background-light); margin-right: 1rem; display: flex; align-items: center; justify-content: center; color: var(--text-normal); font-size: 1rem; } .message-content { flex: 1; } .message-header { display: flex; align-items: baseline; margin-bottom: 0.25rem; } .message-author { font-weight: 500; margin-right: 0.5rem; } .message-timestamp { font-size: 0.75rem; color: var(--text-muted); } .message-text { word-wrap: break-word; line-height: 1.4; } .system-message { padding: 0.5rem 0; color: var(--text-muted); font-style: italic; font-size: 0.9rem; text-align: center; } .history-message { opacity: 0.7; } .message.history-message .message-timestamp { font-style: italic; } .call-notification { margin: 0.5rem 0; padding: 0.75rem 1rem; background-color: rgba(88, 101, 242, 0.15); border-radius: var(--radius-sm); color: var(--text-link); cursor: pointer; transition: background-color var(--animation-duration) ease; } .call-notification:hover { background-color: rgba(88, 101, 242, 0.25); } .typing-indicator { padding: 0.25rem 1rem; font-size: 0.85rem; color: var(--text-muted); font-style: italic; } .message-input-container { padding: 0 1rem 1rem; background-color: var(--background-dark); border-top: 1px solid rgba(0, 0, 0, 0.2); flex-shrink: 0; } .message-actions { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.5rem; } .message-input-wrapper { display: flex; align-items: center; gap: 0.5rem; padding: 0 1rem; background-color: var(--background-light); border-radius: var(--radius-md); } #messageInput { flex: 1; height: 44px; background-color: transparent; border: none; color: var(--text-normal); font-size: 1rem; padding: 0; } #messageInput:focus { outline: none; } .send-button { background-color: transparent; border: none; color: var(--text-muted); cursor: pointer; display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; transition: color var(--animation-duration) ease; } .send-button:hover { color: var(--primary-color); } /* Users Panel */ .users-panel { grid-column: 3; background-color: var(--background-darker); height: 100%; border-left: 1px solid rgba(0, 0, 0, 0.2); } .users-panel-header { padding: 1rem; border-bottom: 1px solid rgba(0, 0, 0, 0.2); } .users-panel-header h3 { font-size: 1rem; font-weight: 600; color: var(--text-muted); } .users-list { padding: 1rem; } .user-item { display: flex; align-items: center; padding: 0.5rem; margin-bottom: 0.5rem; border-radius: var(--radius-sm); transition: background-color var(--animation-duration) ease; } .user-item:hover { background-color: var(--background-light); } /* Eggs Panel */ .eggs-panel { position: fixed; top: 0; right: 0; width: 300px; height: 100vh; background-color: var(--background-dark); border-left: 1px solid rgba(0, 0, 0, 0.2); z-index: 100; display: flex; flex-direction: column; transform: translateX(100%); transition: transform var(--animation-duration) ease; } .eggs-panel.visible { transform: translateX(0); } .eggs-header { padding: 1rem; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgba(0, 0, 0, 0.2); } .eggs-header h3 { font-size: 1rem; font-weight: 600; } .eggs-list { padding: 1rem; overflow-y: auto; } .egg-item { display: flex; align-items: center; gap: 0.75rem; width: 100%; padding: 0.75rem; margin-bottom: 0.5rem; background-color: var(--background-light); border: none; border-radius: var(--radius-sm); color: var(--text-normal); font-size: 0.9rem; text-align: left; cursor: pointer; transition: background-color var(--animation-duration) ease; } .egg-item:hover { background-color: var(--background-lightest); } .egg-content { flex: 1; padding: 1rem; overflow-y: auto; } /* Modal */ .modal { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background-color: var(--background-overlay); display: flex; align-items: center; justify-content: center; z-index: 1000; } .modal-content { width: 100%; max-width: 500px; background-color: var(--background-dark); border-radius: var(--radius-md); overflow: hidden; } .modal-header { padding: 1rem; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgba(0, 0, 0, 0.2); } .modal-header h3 { font-size: 1.1rem; font-weight: 600; } .modal-body { padding: 1rem; } #fileupload { width: 100%; padding: 1rem; background-color: var(--background-light); border-radius: var(--radius-sm); margin-bottom: 1rem; cursor: pointer; } .upload-preview { margin: 1rem 0; max-height: 300px; overflow: auto; text-align: center; } .upload-preview img { max-width: 100%; max-height: 200px; border-radius: var(--radius-sm); } /* Meet Container */ .meet-container { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background-color: var(--background-overlay); z-index: 1000; display: flex; align-items: center; justify-content: center; } /* Responsive Design */ @media (max-width: 992px) { #app { grid-template-columns: var(--sidebar-width) 1fr; } .users-panel { display: none; } } @media (max-width: 768px) { #app { grid-template-columns: 1fr; } .sidebar { position: fixed; left: -100%; width: var(--sidebar-width); z-index: 100; transition: left var(--animation-duration) ease; } .sidebar.visible { left: 0; } .chat-header { padding-left: 0.5rem; } .menu-toggle { display: block; } } /* File Message */ .file-message { display: flex; align-items: center; padding: 0.75rem; background-color: var(--background-light); border-radius: var(--radius-sm); margin-top: 0.25rem; } .file-icon { margin-right: 0.75rem; font-size: 1.5rem; color: var(--text-link); } .file-name { flex: 1; font-size: 0.9rem; } .file-button { padding: 0.4rem 0.75rem; background-color: var(--primary-color); border: none; border-radius: var(--radius-sm); color: white; font-size: 0.8rem; cursor: pointer; } .file-button:hover { background-color: #4752c4; } /* Image Message */ .image-message { margin-top: 0.25rem; max-width: 400px; } .image-message img { max-width: 100%; border-radius: var(--radius-sm); cursor: pointer; transition: opacity var(--animation-duration) ease; } .image-message img:hover { opacity: 0.9; }