Spaces:
Running
Running
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| body { | |
| font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
| min-height: 100vh; | |
| padding: 20px; | |
| } | |
| .container { | |
| max-width: 900px; | |
| margin: 0 auto; | |
| background: white; | |
| border-radius: 20px; | |
| box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); | |
| overflow: hidden; | |
| } | |
| header { | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
| color: white; | |
| padding: 30px; | |
| text-align: center; | |
| } | |
| header h1 { | |
| font-size: 2em; | |
| margin-bottom: 10px; | |
| } | |
| .subtitle { | |
| opacity: 0.9; | |
| font-size: 0.95em; | |
| } | |
| .attribution { | |
| margin-top: 10px; | |
| font-size: 0.85em; | |
| opacity: 0.8; | |
| } | |
| .attribution a { | |
| color: #fff; | |
| text-decoration: underline; | |
| font-weight: 600; | |
| } | |
| .attribution a:hover { | |
| opacity: 0.9; | |
| } | |
| .status-bar { | |
| background: #f8f9fa; | |
| border-bottom: 1px solid #e9ecef; | |
| padding: 15px 30px; | |
| } | |
| .status-content { | |
| display: flex; | |
| align-items: center; | |
| gap: 15px; | |
| } | |
| #statusText { | |
| font-size: 0.9em; | |
| color: #495057; | |
| font-weight: 500; | |
| } | |
| .progress-container { | |
| flex: 1; | |
| height: 6px; | |
| background: #e9ecef; | |
| border-radius: 3px; | |
| overflow: hidden; | |
| } | |
| .progress-bar { | |
| height: 100%; | |
| background: linear-gradient(90deg, #667eea, #764ba2); | |
| width: 0%; | |
| transition: width 0.3s ease; | |
| } | |
| .chat-container { | |
| height: 500px; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .messages { | |
| flex: 1; | |
| overflow-y: auto; | |
| padding: 20px 30px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 15px; | |
| } | |
| .message { | |
| display: flex; | |
| animation: slideIn 0.3s ease; | |
| } | |
| @keyframes slideIn { | |
| from { | |
| opacity: 0; | |
| transform: translateY(10px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .message-content { | |
| max-width: 80%; | |
| padding: 15px 20px; | |
| border-radius: 15px; | |
| line-height: 1.5; | |
| } | |
| .message.user { | |
| justify-content: flex-end; | |
| } | |
| .message.user .message-content { | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
| color: white; | |
| } | |
| .message.assistant .message-content { | |
| background: #f8f9fa; | |
| color: #212529; | |
| } | |
| .message-content strong { | |
| display: block; | |
| margin-bottom: 5px; | |
| font-size: 0.85em; | |
| opacity: 0.8; | |
| } | |
| .message-content p { | |
| margin: 0; | |
| white-space: pre-wrap; | |
| word-wrap: break-word; | |
| } | |
| .typing-indicator { | |
| display: inline-flex; | |
| gap: 4px; | |
| padding: 10px 0; | |
| } | |
| .typing-indicator span { | |
| width: 8px; | |
| height: 8px; | |
| background: #667eea; | |
| border-radius: 50%; | |
| animation: bounce 1.4s infinite ease-in-out; | |
| } | |
| .typing-indicator span:nth-child(1) { animation-delay: -0.32s; } | |
| .typing-indicator span:nth-child(2) { animation-delay: -0.16s; } | |
| @keyframes bounce { | |
| 0%, 80%, 100% { transform: scale(0); } | |
| 40% { transform: scale(1); } | |
| } | |
| .input-container { | |
| padding: 20px 30px; | |
| border-top: 1px solid #e9ecef; | |
| display: flex; | |
| gap: 10px; | |
| background: #f8f9fa; | |
| } | |
| #userInput { | |
| flex: 1; | |
| padding: 12px 15px; | |
| border: 2px solid #e9ecef; | |
| border-radius: 10px; | |
| font-family: inherit; | |
| font-size: 0.95em; | |
| resize: none; | |
| transition: border-color 0.3s ease; | |
| } | |
| #userInput:focus { | |
| outline: none; | |
| border-color: #667eea; | |
| } | |
| #userInput:disabled { | |
| background: #e9ecef; | |
| cursor: not-allowed; | |
| } | |
| button { | |
| padding: 12px 24px; | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
| color: white; | |
| border: none; | |
| border-radius: 10px; | |
| cursor: pointer; | |
| font-weight: 600; | |
| font-size: 0.95em; | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| transition: transform 0.2s ease, opacity 0.2s ease; | |
| } | |
| button:hover:not(:disabled) { | |
| transform: translateY(-2px); | |
| opacity: 0.9; | |
| } | |
| button:active:not(:disabled) { | |
| transform: translateY(0); | |
| } | |
| button:disabled { | |
| opacity: 0.5; | |
| cursor: not-allowed; | |
| } | |
| .clear-btn { | |
| background: #dc3545; | |
| padding: 12px 20px; | |
| } | |
| .info-panel { | |
| background: #f8f9fa; | |
| padding: 20px 30px; | |
| border-top: 1px solid #e9ecef; | |
| } | |
| .info-panel h3 { | |
| color: #495057; | |
| margin-bottom: 10px; | |
| font-size: 1em; | |
| } | |
| .info-panel ul { | |
| list-style: none; | |
| color: #6c757d; | |
| font-size: 0.9em; | |
| } | |
| .info-panel li { | |
| padding: 5px 0; | |
| padding-left: 20px; | |
| position: relative; | |
| } | |
| .info-panel li:before { | |
| content: "→"; | |
| position: absolute; | |
| left: 0; | |
| color: #667eea; | |
| } | |
| /* Scrollbar styling */ | |
| .messages::-webkit-scrollbar { | |
| width: 8px; | |
| } | |
| .messages::-webkit-scrollbar-track { | |
| background: #f1f1f1; | |
| } | |
| .messages::-webkit-scrollbar-thumb { | |
| background: #667eea; | |
| border-radius: 4px; | |
| } | |
| .messages::-webkit-scrollbar-thumb:hover { | |
| background: #764ba2; | |
| } | |
| /* Responsive design */ | |
| @media (max-width: 768px) { | |
| body { | |
| padding: 10px; | |
| } | |
| .container { | |
| border-radius: 15px; | |
| } | |
| header { | |
| padding: 20px; | |
| } | |
| header h1 { | |
| font-size: 1.5em; | |
| } | |
| .chat-container { | |
| height: 400px; | |
| } | |
| .messages { | |
| padding: 15px; | |
| } | |
| .message-content { | |
| max-width: 90%; | |
| } | |
| .input-container { | |
| flex-direction: column; | |
| padding: 15px; | |
| } | |
| button { | |
| width: 100%; | |
| justify-content: center; | |
| } | |
| } |