:root { --primary: #4361ee; --primary-light: #4895ef; --secondary: #3f37c9; --accent: #4cc9f0; --light: #f8f9fa; --dark: #212529; --success: #4ade80; --warning: #facc15; --danger: #f87171; --gray: #6c757d; --light-gray: #e9ecef; --border-radius: 12px; --shadow: 0 4px 20px rgba(0, 0, 0, 0.08); --transition: all 0.3s ease; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } body { background: linear-gradient(135deg, #f5f7fa 0%, #e4edf5 100%); color: var(--dark); min-height: 100vh; padding: 20px; display: flex; flex-direction: column; align-items: center; } .container { width: 100%; max-width: 1200px; margin: 0 auto; } header { text-align: center; padding: 30px 0; animation: fadeIn 0.8s ease-out; } header h1 { font-size: 2.8rem; margin-bottom: 10px; color: var(--secondary); background: linear-gradient(90deg, var(--primary), var(--accent)); -webkit-background-clip: text; background-clip: text; color: transparent; } header p { font-size: 1.2rem; color: var(--gray); max-width: 600px; margin: 0 auto; } .app-container { display: flex; gap: 30px; margin-top: 20px; } @media (max-width: 900px) { .app-container { flex-direction: column; } } .input-section { flex: 1; background: white; border-radius: var(--border-radius); padding: 25px; box-shadow: var(--shadow); animation: slideInLeft 0.6s ease-out; } .chat-section { flex: 1.5; display: flex; flex-direction: column; background: white; border-radius: var(--border-radius); box-shadow: var(--shadow); overflow: hidden; animation: slideInRight 0.6s ease-out; } .section-title { font-size: 1.5rem; margin-bottom: 20px; color: var(--secondary); display: flex; align-items: center; gap: 10px; } .section-title i { background: var(--light-gray); width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; } .upload-area { border: 2px dashed var(--light-gray); border-radius: var(--border-radius); padding: 30px; text-align: center; margin-bottom: 25px; transition: var(--transition); cursor: pointer; } .upload-area:hover { border-color: var(--primary); background: rgba(67, 97, 238, 0.05); } .upload-area i { font-size: 3rem; color: var(--primary); margin-bottom: 15px; } .upload-area h3 { margin-bottom: 10px; color: var(--dark); } .upload-area p { color: var(--gray); margin-bottom: 20px; } .file-types { display: flex; justify-content: center; gap: 15px; margin-top: 15px; } .file-type { background: var(--light-gray); padding: 8px 15px; border-radius: 30px; font-size: 0.9rem; } .url-input { margin-bottom: 25px; } .url-input label { display: block; margin-bottom: 8px; font-weight: 500; } .url-input input { width: 100%; padding: 14px; border: 1px solid var(--light-gray); border-radius: var(--border-radius); font-size: 1rem; transition: var(--transition); } .url-input input:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(67, 97, 238, 0.2); } .btn { background: var(--primary); color: white; border: none; padding: 14px 25px; border-radius: var(--border-radius); font-size: 1rem; font-weight: 600; cursor: pointer; transition: var(--transition); display: inline-flex; align-items: center; justify-content: center; gap: 8px; } .btn:hover { background: var(--secondary); transform: translateY(-2px); } .btn:active { transform: translateY(0); } .btn-block { width: 100%; } .btn-outline { background: transparent; border: 2px solid var(--primary); color: var(--primary); } .btn-outline:hover { background: var(--primary); color: white; } .file-list { margin-top: 25px; } .file-item { display: flex; align-items: center; padding: 12px 15px; background: var(--light-gray); border-radius: var(--border-radius); margin-bottom: 10px; animation: fadeIn 0.3s ease-out; } .file-item i { margin-right: 12px; color: var(--primary); } .file-info { flex: 1; } .file-name { font-weight: 500; margin-bottom: 3px; } .file-size { font-size: 0.85rem; color: var(--gray); } .file-actions { display: flex; gap: 10px; } .file-actions button { background: none; border: none; color: var(--gray); cursor: pointer; font-size: 1.1rem; transition: var(--transition); } .file-actions button:hover { color: var(--danger); } .chat-header { background: var(--primary); color: white; padding: 20px; display: flex; align-items: center; gap: 15px; } .chat-header img { width: 50px; height: 50px; border-radius: 50%; background: white; padding: 5px; } .chat-messages { flex: 1; padding: 25px; overflow-y: auto; display: flex; flex-direction: column; gap: 20px; background: #f8fafc; } .message { max-width: 80%; padding: 18px; border-radius: var(--border-radius); animation: fadeIn 0.3s ease-out; position: relative; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05); } .user-message { background: var(--primary-light); color: white; align-self: flex-end; border-bottom-right-radius: 5px; } .bot-message { background: white; border: 1px solid var(--light-gray); align-self: flex-start; border-bottom-left-radius: 5px; } .message-header { display: flex; align-items: center; margin-bottom: 8px; font-weight: 600; } .message-header i { margin-right: 8px; } .message-content { line-height: 1.5; } .typing-indicator { display: flex; align-items: center; padding: 18px; background: white; border: 1px solid var(--light-gray); border-radius: var(--border-radius); align-self: flex-start; border-bottom-left-radius: 5px; width: 100px; } .typing-dot { width: 8px; height: 8px; background: var(--gray); border-radius: 50%; margin: 0 3px; animation: typing 1.4s infinite ease-in-out; } .typing-dot:nth-child(1) { animation-delay: 0s; } .typing-dot:nth-child(2) { animation-delay: 0.2s; } .typing-dot:nth-child(3) { animation-delay: 0.4s; } .chat-input { display: flex; padding: 20px; background: white; border-top: 1px solid var(--light-gray); } .chat-input input { flex: 1; padding: 16px; border: 1px solid var(--light-gray); border-radius: 30px; font-size: 1rem; transition: var(--transition); } .chat-input input:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(67, 97, 238, 0.2); } .chat-input button { background: var(--primary); color: white; border: none; width: 50px; height: 50px; border-radius: 50%; margin-left: 15px; cursor: pointer; transition: var(--transition); display: flex; align-items: center; justify-content: center; } .chat-input button:hover { background: var(--secondary); transform: scale(1.05); } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideInLeft { from { opacity: 0; transform: translateX(-30px); } to { opacity: 1; transform: translateX(0); } } @keyframes slideInRight { from { opacity: 0; transform: translateX(30px); } to { opacity: 1; transform: translateX(0); } } @keyframes typing { 0%, 60%, 100% { transform: translateY(0); } 30% { transform: translateY(-5px); } } .processing { display: flex; align-items: center; justify-content: center; padding: 30px; color: var(--gray); } .processing i { font-size: 2rem; margin-right: 15px; color: var(--primary); animation: spin 1.5s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } footer { text-align: center; padding: 30px 0; color: var(--gray); font-size: 0.9rem; margin-top: auto; } .pulse { animation: pulse 2s infinite; } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(67, 97, 238, 0.4); } 70% { box-shadow: 0 0 0 10px rgba(67, 97, 238, 0); } 100% { box-shadow: 0 0 0 0 rgba(67, 97, 238, 0); } }