body { margin: 0; font-family: 'Segoe UI', sans-serif; background-color: #0a0e14; color: #ffffff; background-image: linear-gradient(rgba(10, 14, 20, 0.85), rgba(10, 14, 20, 0.85)), url('../static/images/ChatGPT Image Apr 11, 2025, 12_14_37 PM.png'); background-size: cover; background-position: center; background-attachment: fixed; position: relative; height: 100vh; overflow: hidden; } body::before { content: ''; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-image: radial-gradient(circle at 70% 50%, rgba(0, 188, 212, 0.05) 0%, transparent 70%), linear-gradient(0deg, transparent 90%, rgba(0, 188, 212, 0.05) 100%), linear-gradient(90deg, transparent 90%, rgba(0, 188, 212, 0.05) 100%); pointer-events: none; z-index: -1; } body::after { content: ''; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-image: repeating-linear-gradient(0deg, rgba(0, 188, 212, 0.03) 0, rgba(0, 188, 212, 0.03) 1px, transparent 1px, transparent 30px), repeating-linear-gradient(90deg, rgba(0, 188, 212, 0.03) 0, rgba(0, 188, 212, 0.03) 1px, transparent 1px, transparent 30px); pointer-events: none; z-index: -1; } .chat-container { max-width: 700px; margin: 0 auto; height: 100vh; display: flex; flex-direction: column; backdrop-filter: blur(5px); background-color: rgba(14, 22, 33, 0.7); box-shadow: 0 0 20px rgba(0, 188, 212, 0.1); border-left: 1px solid rgba(0, 188, 212, 0.1); border-right: 1px solid rgba(0, 188, 212, 0.1); } header { background-color: rgba(30, 42, 56, 0.8); padding: 20px; text-align: center; font-size: 24px; border-bottom: 1px solid #2a3b4d; position: relative; text-shadow: 0 0 10px rgba(0, 188, 212, 0.5); font-weight: bold; letter-spacing: 2px; flex-shrink: 0; /* Prevent header from shrinking */ } header::before { content: ; margin-right: 10px; font-size: 20px; } .chat-box { flex: 1; padding: 20px; overflow-y: auto; display: flex; flex-direction: column; gap: 15px; scrollbar-width: thin; scrollbar-color: #00bcd4 #1e2a38; scroll-behavior: smooth; /* Ensure all messages are preserved */ min-height: 0; } /* Customize scrollbar for WebKit browsers */ .chat-box::-webkit-scrollbar { width: 8px; } .chat-box::-webkit-scrollbar-track { background: #1e2a38; } .chat-box::-webkit-scrollbar-thumb { background-color: #00bcd4; border-radius: 10px; } .bot-message, .user-message { display: flex; flex-direction: column; max-width: 80%; } .bot-message .bubble { background-color: rgba(42, 59, 77, 0.9); align-self: flex-start; border-left: 3px solid #00bcd4; } .user-message .bubble { background-color: rgba(0, 188, 212, 0.8); align-self: flex-end; color: #000; border-right: 3px solid #0097a7; } .bubble { padding: 12px 16px; border-radius: 10px; font-size: 16px; position: relative; white-space: pre-wrap; overflow-x: hidden; /* Prevent horizontal scroll */ word-wrap: break-word; /* Break long words */ max-width: 100%; /* Ensure it doesn't stretch */ box-sizing: border-box; /* Include padding in width */ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); } .time { font-size: 12px; color: #aaa; margin-top: 4px; align-self: flex-end; } .input-area { display: flex; padding: 10px; background-color: rgba(30, 42, 56, 0.9); border-top: 1px solid #2a3b4d; flex-shrink: 0; /* Prevent input area from shrinking */ } .input-area input { flex: 1; padding: 12px; font-size: 16px; border: none; border-radius: 5px 0 0 5px; outline: none; background-color: rgba(255, 255, 255, 0.1); color: #fff; } .input-area input::placeholder { color: rgba(255, 255, 255, 0.5); } .input-area button { padding: 12px 20px; font-size: 16px; background-color: #00bcd4; border: none; border-radius: 0 5px 5px 0; color: #fff; cursor: pointer; transition: background-color 0.3s; } .input-area button:hover { background-color: #0097a7; } /* Markdown formatting */ .answer-content h1, .answer-content h2, .answer-content strong { font-weight: bold; color: #00bcd4; } .answer-content ul, .answer-content ol { padding-left: 20px; margin: 10px 0; } .answer-content li { margin-bottom: 6px; } .answer-content { overflow-x: auto; max-width: 100%; word-wrap: break-word; } /* Copy button */ .copy-btn { position: absolute; top: 8px; right: 8px; background: none; border: none; font-size: 18px; cursor: pointer; color: #bbb; transition: color 0.2s ease; } .copy-btn:hover { color: #fff; } /* Typing dots animation */ .typing-indicator { display: flex; flex-direction: column; max-width: 80%; align-self: flex-start; margin-bottom: 10px; } .typing-indicator .bubble { background-color: rgba(42, 59, 77, 0.9); padding: 12px 16px; border-radius: 10px; font-size: 20px; color: #ccc; font-weight: bold; border-left: 3px solid #00bcd4; } .dots { display: flex; gap: 4px; } .dots span { animation: bounce 1.2s infinite; font-size: 22px; opacity: 0.5; } .dots span:nth-child(1) { animation-delay: 0s; } .dots span:nth-child(2) { animation-delay: 0.2s; } .dots span:nth-child(3) { animation-delay: 0.4s; } @keyframes bounce { 0%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-6px); } } /* Binary code animation in background */ @keyframes binary-flow { 0% { opacity: 0; transform: translateY(-100%); } 10% { opacity: 0.3; } 90% { opacity: 0.3; } 100% { opacity: 0; transform: translateY(100%); } } .binary-column { position: fixed; color: rgba(0, 188, 212, 0.15); font-family: monospace; font-size: 14px; line-height: 1; white-space: nowrap; z-index: -2; user-select: none; pointer-events: none; } /* Clear button */ .clear-btn { position: absolute; right: 15px; top: 50%; transform: translateY(-50%); background-color: rgba(0, 188, 212, 0.2); color: #fff; border: 1px solid rgba(0, 188, 212, 0.5); border-radius: 4px; padding: 6px 12px; font-size: 13px; cursor: pointer; transition: all 0.3s ease; text-decoration: none; display: flex; align-items: center; gap: 5px; } .clear-btn::before { content: '\1F5D1'; font-size: 14px; } .clear-btn:hover { background-color: rgba(0, 188, 212, 0.4); box-shadow: 0 0 10px rgba(0, 188, 212, 0.3); }