:root { --primary-color: #007bff; --secondary-color: #6c757d; --light-color: #f8f9fa; --dark-color: #343a40; --body-bg: #f4f7f6; --card-bg: #ffffff; --sent-bg: #007bff; --received-bg: #e9ecef; --font-family: 'Poppins', sans-serif; } body { background-color: var(--body-bg); font-family: var(--font-family); padding-top: 56px; } .navbar { box-shadow: 0 2px 4px rgba(0,0,0,.05); } .btn-primary { background-color: var(--primary-color); border-color: var(--primary-color); transition: all 0.3s ease; } .btn-primary:hover { opacity: 0.9; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.1); } /* Chat Page Styles */ .chat-container { padding-top: 2rem; padding-bottom: 2rem; } #chat-card { border-radius: 1rem; box-shadow: 0 4px 20px rgba(0,0,0,0.08); height: 80vh; display: flex; flex-direction: column; background-color: var(--card-bg); } #chat-box { flex-grow: 1; overflow-y: auto; padding: 1.5rem; display: flex; flex-direction: column; gap: 1rem; } .message { display: flex; align-items: flex-end; max-width: 75%; gap: 0.75rem; } .avatar { width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 500; color: white; flex-shrink: 0; } .message-body { padding: 0.75rem 1.25rem; border-radius: 1.5rem; position: relative; box-shadow: 0 2px 5px rgba(0,0,0,0.05); line-height: 1.6; } .message-text { margin-bottom: 0; } .message-time { font-size: 0.7rem; color: #adb5bd; display: block; margin-top: 0.25rem; } .message.sent { align-self: flex-end; flex-direction: row-reverse; } .message.sent .message-body { background: var(--sent-bg); color: white; border-radius: 1.5rem 1.5rem 0.5rem 1.5rem; } .message.sent .message-time { color: var(--light-color); opacity: 0.8; text-align: right; } .message.received { align-self: flex-start; } .message.received .message-body { background-color: var(--received-bg); color: var(--dark-color); border-radius: 1.5rem 1.5rem 1.5rem 0.5rem; } .message.received .avatar { background-color: var(--secondary-color); } #message-form .form-control { border-radius: 2rem; border: 1px solid #ced4da; padding: 0.75rem 1.25rem; } #message-form .form-control:focus { box-shadow: 0 0 0 0.25rem rgba(0, 123, 255, 0.25); border-color: var(--primary-color); } #send-button { border-radius: 2rem; } /* Typing Indicator Styles */ .typing-indicator-container { padding: 0.5rem 1.5rem; display: flex; align-items: center; gap: 0.75rem; } .typing-indicator { display: flex; align-items: center; background-color: var(--received-bg); border-radius: 1.5rem; padding: 0.75rem 1.25rem; } .typing-indicator span { height: 8px; width: 8px; background-color: #999; border-radius: 50%; display: inline-block; margin: 0 2px; animation: typing 1.2s infinite ease-in-out; } .typing-indicator span:nth-of-type(2) { animation-delay: 0.2s; } .typing-indicator span:nth-of-type(3) { animation-delay: 0.4s; } @keyframes typing { 0%, 100% { transform: translateY(0); opacity: 0.4; } 50% { transform: translateY(-6px); opacity: 1; } } .message.error .message-body { background: #dc3545a1; } /* Security Page Styles */ .security-tool-card { background-color: var(--card-bg); padding: 2rem; border-radius: 1rem; box-shadow: 0 4px 20px rgba(0,0,0,0.08); height: 100%; display: flex; flex-direction: column; } .security-tool-card h5 { font-weight: 600; margin-bottom: 1rem; } .security-tool-card p { color: var(--secondary-color); flex-grow: 1; } .security-tool-card .form-control { border-radius: 0.5rem; } #vpn-status p, #antivirus-result p { padding: 1rem; border-radius: 0.5rem; background-color: var(--light-color); margin-bottom: 0; transition: all 0.3s ease; } #vpn-status p.connecting, #antivirus-result p.scanning { background-color: #fff3cd; /* Bootstrap warning yellow */ color: #664d03; } #vpn-status p.connected { background-color: #d1e7dd; /* Bootstrap success green */ color: #0f5132; }