body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: #1e1e1e; color: #d4d4d4; margin: 0; display: flex; justify-content: center; height: 100vh; } .container { width: 100%; max-width: 1000px; display: flex; flex-direction: column; height: 100%; background-color: #252526; box-shadow: 0 0 20px rgba(0,0,0,0.5); } /* --- Header --- */ header { padding: 15px 20px; border-bottom: 1px solid #3e3e42; display: flex; justify-content: space-between; align-items: center; background-color: #2d2d30; gap: 20px; flex-wrap: wrap; } .header-left h1 { margin: 0; font-size: 1.2rem; color: #fff; } .status-indicator { font-size: 0.8rem; margin-top: 5px; color: #4ec9b0; } .controls-panel { display: flex; gap: 15px; align-items: center; flex-wrap: wrap; } .model-controls { display: flex; gap: 10px; align-items: center; } /* --- Inputs & Buttons --- */ #model-path-input { background-color: #3e3e42; border: 1px solid #555; color: #fff; padding: 8px 12px; border-radius: 4px; width: 300px; font-size: 0.9rem; } #model-path-input:focus { border-color: #007acc; outline: none; } #model-path-input:disabled { background-color: #333; color: #888; cursor: not-allowed; } .btn { padding: 8px 16px; border: none; border-radius: 4px; cursor: pointer; font-weight: 600; font-size: 0.9rem; transition: opacity 0.2s; } .btn:hover:not(:disabled) { opacity: 0.9; } .btn:disabled { opacity: 0.5; cursor: not-allowed; } .btn-primary { background-color: #0e639c; color: white; } .btn-secondary { background-color: #cca511; color: #111; } .btn-danger { background-color: #ce4e4e; color: white; } /* --- Chat --- */ #chat-window { flex: 1; padding: 20px; overflow-y: auto; display: flex; flex-direction: column; gap: 15px; } .message { padding: 10px 15px; border-radius: 8px; max-width: 80%; line-height: 1.5; word-wrap: break-word; } .message.user { align-self: flex-end; background-color: #0e639c; color: white; } .message.bot { align-self: flex-start; background-color: #3e3e42; } .message.system { align-self: center; font-size: 0.85rem; color: #888; text-align: center; } /* --- Loader --- */ .loader span { display: inline-block; width: 6px; height: 6px; background-color: #fff; border-radius: 50%; margin: 0 2px; animation: bounce 1.4s infinite ease-in-out both; } .loader span:nth-child(1) { animation-delay: -0.32s; } .loader span:nth-child(2) { animation-delay: -0.16s; } @keyframes bounce { 0%, 80%, 100% { transform: scale(0); opacity: 0.5; } 40% { transform: scale(1); opacity: 1; } } /* --- Input Area --- */ .input-area { padding: 20px; border-top: 1px solid #3e3e42; display: flex; gap: 10px; background-color: #2d2d30; } #user-input { flex: 1; background-color: #1e1e1e; border: 1px solid #3e3e42; color: white; padding: 10px; border-radius: 4px; resize: none; outline: none; } #user-input:focus { border-color: #007acc; } #user-input:disabled { background-color: #333; cursor: not-allowed; } #send-btn { padding: 0 24px; background-color: #0e639c; color: white; border: none; border-radius: 4px; cursor: pointer; font-weight: bold; } #send-btn:hover { background-color: #1177bb; } /* --- Автодополнение --- */ .model-controls { position: relative; width: 100%; display: flex; gap: 10px; align-items: center; } .model-controls > div:first-child { flex: 1; display: flex; align-items: center; } .suggestions-list { position: absolute; top: 100%; left: 0; width: 100%; background-color: #2d2d30; border: 1px solid #3e3e42; border-top: none; border-radius: 0 0 4px 4px; max-height: 200px; overflow-y: auto; z-index: 1000; box-shadow: 0 4px 6px rgba(0,0,0,0.3); list-style: none; padding: 0; margin: 0; } .suggestion-item { padding: 8px 12px; cursor: pointer; color: #d4d4d4; font-size: 0.9rem; border-bottom: 1px solid #3e3e42; } .suggestion-item:last-child { border-bottom: none; } .suggestion-item:hover { background-color: #0e639c; color: white; } .suggestions-list::-webkit-scrollbar { width: 8px; } .suggestions-list::-webkit-scrollbar-track { background: #1e1e1e; } .suggestions-list::-webkit-scrollbar-thumb { background: #555; border-radius: 4px; }