/* App.css */ .chat-container { max-width: 800px; margin: auto; display: flex; flex-direction: column; height: 100vh; color: #ffffff; background: #2a2a2a; border-radius: 12px; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3); } body { font-family: 'Roboto', sans-serif; background: #121212; color: #ffffff; } h2 { color: #bb86fc; margin-bottom: 20px; font-weight: 500; } .header-area { display: flex; justify-content: center; text-align: center; background: #383838; } .chat-box { flex-grow: 1; overflow-y: auto; padding: 12px; border: 1px solid #2d2d2d; border-radius: 8px; background: #2a2a2a; margin-bottom: 16px; display: flex; flex-direction: column; } .message { display: block; /* ensures full-width layout */ width: fit-content; max-width: 85%; margin-bottom: 12px; padding: 10px 14px; border-radius: 16px; line-height: 1.5; word-wrap: break-word; } .message.user { align-self: flex-end; margin-left: auto; background: #333c4d; color: #e3f2fd; border-bottom-right-radius: 0; } .message.assistant { align-self: flex-start; margin-right: auto; background: #383838; border-bottom-left-radius: 0; } .input-area { display: flex; padding: 10px; background: #383838; } textarea { flex-grow: 1; padding: 10px 12px; resize: none; border-radius: 6px; background: #2a2a2a; color: #fff; border: 1px solid #444; font-size: 14px; } button { margin-left: 10px; padding: 8px 16px; } .timestamp { font-size: 0.75em; color: #888; margin-top: 4px; } .formatted-text { white-space: pre-wrap; line-height: 1.5; margin-bottom: 8px; } .language-label { font-weight: bold; font-size: 12px; padding: 4px 0; } pre.line-numbers { padding-left: 3.8em; /* ensure room for line numbers */ } .code-block-wrapper pre { background: #2d2d2d; /* override if needed */ padding: 1em; font-size: 0.9em; line-height: 1.5; } .code-block-wrapper { margin: 12px 0; background-color: #2d2d2d; border-radius: 8px; overflow: auto; } .typing-indicator { display: flex; gap: 6px; margin: 6px 0 12px; } .dot { width: 8px; height: 8px; background-color: #bb86fc; border-radius: 50%; animation: blink 1.4s infinite both; } .dot:nth-child(2) { animation-delay: 0.2s; } .dot:nth-child(3) { animation-delay: 0.4s; } @keyframes blink { 0%, 80%, 100% { opacity: 0.2; } 40% { opacity: 1; } } /* Base style — minimal/invisible scrollbar */ * { scrollbar-width: thin; /* Firefox */ scrollbar-color: transparent transparent; } /* Webkit browsers (Chrome, Edge, Safari) */ *::-webkit-scrollbar { width: 4px; } *::-webkit-scrollbar-track { background: transparent; } *::-webkit-scrollbar-thumb { background-color: transparent; border-radius: 8px; transition: background-color 0.3s ease; } /* On hover — visible scrollbar */ *:hover::-webkit-scrollbar-thumb { background-color: rgba(100, 100, 100, 0.5); } *:hover { scrollbar-color: rgba(100, 100, 100, 0.5) transparent; }