Spaces:
Sleeping
Sleeping
| /* ==================== Global Styles ==================== */ | |
| .gradio-container { | |
| max-width: 100% ; | |
| padding: 0 ; | |
| margin: 0 ; | |
| background: linear-gradient(135deg, #f5f7fa 0%, #e8ecf1 100%) ; | |
| font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif ; | |
| height: 100vh ; | |
| overflow: hidden ; | |
| } | |
| /* ==================== Header Styling ==================== */ | |
| .header-container { | |
| background: linear-gradient(90deg, #00d4aa 0%, #00a896 100%); | |
| padding: 20px 25px; | |
| text-align: center; | |
| border-radius: 0; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); | |
| margin: 0; | |
| position: sticky; | |
| top: 0; | |
| z-index: 100; | |
| } | |
| .header-container h1 { | |
| color: white; | |
| font-size: 1.8rem; | |
| font-weight: 700; | |
| margin: 0; | |
| text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); | |
| } | |
| .header-container p { | |
| color: #e0f7f4; | |
| font-size: 0.95rem; | |
| margin: 5px 0 0 0; | |
| } | |
| /* ==================== Layout Container ==================== */ | |
| .main-container { | |
| display: flex; | |
| height: calc(100vh - 100px); | |
| overflow: hidden; | |
| } | |
| /* ==================== Left Sidebar (Dark Cyan) ==================== */ | |
| .sidebar { | |
| background: linear-gradient(180deg, #008b8b 0%, #006666 100%) ; | |
| border-right: 2px solid #005555 ; | |
| padding: 20px ; | |
| width: 280px ; | |
| min-width: 280px ; | |
| height: 100% ; | |
| overflow-y: auto ; | |
| box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15) ; | |
| } | |
| .sidebar-title { | |
| color: #ffffff ; | |
| font-size: 1.2rem ; | |
| font-weight: 600 ; | |
| margin-bottom: 15px ; | |
| padding-bottom: 10px ; | |
| border-bottom: 2px solid #00d4aa ; | |
| } | |
| /* ==================== Example Buttons ==================== */ | |
| .example-btn { | |
| background: linear-gradient(135deg, #00d4aa 0%, #00a896 100%) ; | |
| color: white ; | |
| border: none ; | |
| border-radius: 10px ; | |
| padding: 12px 15px ; | |
| margin: 6px 0 ; | |
| font-weight: 500 ; | |
| font-size: 0.9rem ; | |
| cursor: pointer ; | |
| transition: all 0.3s ease ; | |
| width: 100% ; | |
| text-align: left ; | |
| box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2) ; | |
| } | |
| .example-btn:hover { | |
| background: linear-gradient(135deg, #00ffcc 0%, #00d4aa 100%) ; | |
| transform: translateX(5px) ; | |
| box-shadow: 0 4px 12px rgba(0, 212, 170, 0.4) ; | |
| } | |
| /* ==================== File Upload Section ==================== */ | |
| .file-upload { | |
| margin: 10px 0 ; | |
| } | |
| .upload-btn { | |
| background: linear-gradient(135deg, #ff8c00 0%, #ff6b00 100%) ; | |
| color: white ; | |
| border: none ; | |
| border-radius: 10px ; | |
| padding: 12px 15px ; | |
| margin: 10px 0 ; | |
| font-weight: 500 ; | |
| font-size: 0.9rem ; | |
| cursor: pointer ; | |
| transition: all 0.3s ease ; | |
| width: 100% ; | |
| text-align: center ; | |
| box-shadow: 0 2px 5px rgba(255, 140, 0, 0.3) ; | |
| } | |
| .upload-btn:hover { | |
| background: linear-gradient(135deg, #ffa500 0%, #ff8c00 100%) ; | |
| transform: translateY(-2px) ; | |
| box-shadow: 0 4px 12px rgba(255, 140, 0, 0.4) ; | |
| } | |
| .upload-info { | |
| color: #e0f7f4 ; | |
| font-size: 0.75rem ; | |
| font-style: italic ; | |
| margin-top: 5px ; | |
| } | |
| /* ==================== Right Chat Area ==================== */ | |
| .chat-container { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| background: #fafbfc ; | |
| padding: 20px ; | |
| height: 100% ; | |
| overflow: hidden ; | |
| } | |
| /* ==================== Output/Response Area ==================== */ | |
| .output-area { | |
| flex: 1; | |
| background: white ; | |
| border: 1px solid #e0e7ef ; | |
| border-radius: 12px ; | |
| padding: 20px ; | |
| margin-bottom: 15px ; | |
| overflow-y: auto ; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05) ; | |
| } | |
| .output-area h3 { | |
| color: #00a896 ; | |
| border-bottom: 2px solid #00d4aa ; | |
| padding-bottom: 8px ; | |
| margin-top: 15px ; | |
| margin-bottom: 12px ; | |
| } | |
| .output-area strong { | |
| color: #00a896 ; | |
| } | |
| .output-area hr { | |
| border: none ; | |
| border-top: 1px solid #e0e7ef ; | |
| margin: 15px 0 ; | |
| } | |
| .output-area p { | |
| color: #000000 ; | |
| line-height: 1.6 ; | |
| margin: 8px 0 ; | |
| } | |
| .output-area li { | |
| color: #000000 ; | |
| } | |
| /* ==================== Input Area (GPT-Style Prompt Box) ==================== */ | |
| .input-container { | |
| background: white ; | |
| border: 2px solid #008b8b ; | |
| border-radius: 12px ; | |
| padding: 15px ; | |
| box-shadow: 0 2px 8px rgba(0, 139, 139, 0.15) ; | |
| } | |
| .prompt-input textarea { | |
| background: white ; | |
| color: #000000 ; | |
| border: 1px solid #008b8b ; | |
| border-radius: 3px ; | |
| font-size: 0.95rem ; | |
| padding: 12px ; | |
| resize: none ; | |
| } | |
| .prompt-input textarea:focus { | |
| border: 2px solid #008b8b ; | |
| outline: none ; | |
| box-shadow: 0 0 0 3px rgba(0, 139, 139, 0.1) ; | |
| background: white ; | |
| } | |
| /* ==================== Button Styling ==================== */ | |
| .send-button { | |
| background: linear-gradient(135deg, #00d4aa 0%, #00a896 100%) ; | |
| color: white ; | |
| border: none ; | |
| border-radius: 8px ; | |
| padding: 10px 28px ; | |
| font-size: 0.95rem ; | |
| font-weight: 600 ; | |
| cursor: pointer ; | |
| transition: all 0.3s ease ; | |
| margin-left: 8px ; | |
| box-shadow: 0 2px 8px rgba(0, 212, 170, 0.3) ; | |
| } | |
| .send-button:hover { | |
| background: linear-gradient(135deg, #00ffcc 0%, #00d4aa 100%) ; | |
| box-shadow: 0 4px 15px rgba(0, 212, 170, 0.4) ; | |
| transform: translateY(-2px) ; | |
| } | |
| .clear-button { | |
| background: white ; | |
| color: #718096 ; | |
| border: 1px solid #d1d5db ; | |
| border-radius: 8px ; | |
| padding: 10px 28px ; | |
| font-size: 0.95rem ; | |
| font-weight: 600 ; | |
| cursor: pointer ; | |
| transition: all 0.3s ease ; | |
| margin-left: 8px ; | |
| } | |
| .clear-button:hover { | |
| background: #f7fafc ; | |
| border-color: #cbd5e0 ; | |
| color: #4a5568 ; | |
| transform: translateY(-2px) ; | |
| } | |
| /* ==================== API Configuration ==================== */ | |
| .api-config { | |
| background: rgba(255, 255, 255, 0.1) ; | |
| border: 1px solid rgba(255, 255, 255, 0.2) ; | |
| border-radius: 8px ; | |
| padding: 12px ; | |
| margin-bottom: 12px ; | |
| } | |
| .api-config input { | |
| background: rgba(255, 255, 255, 0.9) ; | |
| color: #2d3748 ; | |
| border: 1px solid #e0e7ef ; | |
| border-radius: 6px ; | |
| padding: 8px 12px ; | |
| font-size: 0.9rem ; | |
| } | |
| .api-config input:focus { | |
| border-color: #00d4aa ; | |
| outline: none ; | |
| box-shadow: 0 0 0 3px rgba(0, 212, 170, 0.1) ; | |
| } | |
| .api-config label { | |
| color: #ffffff ; | |
| } | |
| .check-api-button { | |
| background: linear-gradient(135deg, #00a896 0%, #008577 100%) ; | |
| color: white ; | |
| border: none ; | |
| border-radius: 6px ; | |
| padding: 8px 18px ; | |
| font-weight: 500 ; | |
| font-size: 0.85rem ; | |
| cursor: pointer ; | |
| transition: all 0.3s ease ; | |
| box-shadow: 0 2px 5px rgba(0, 168, 150, 0.2) ; | |
| } | |
| .check-api-button:hover { | |
| background: linear-gradient(135deg, #00d4aa 0%, #00a896 100%) ; | |
| box-shadow: 0 4px 10px rgba(0, 168, 150, 0.3) ; | |
| } | |
| /* ==================== Scrollbar Styling ==================== */ | |
| ::-webkit-scrollbar { | |
| width: 8px; | |
| height: 8px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| background: #f1f5f9; | |
| border-radius: 4px; | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| background: #00d4aa; | |
| border-radius: 4px; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| background: #00a896; | |
| } | |
| /* Sidebar scrollbar */ | |
| .sidebar::-webkit-scrollbar-track { | |
| background: rgba(0, 0, 0, 0.2); | |
| } | |
| .sidebar::-webkit-scrollbar-thumb { | |
| background: rgba(255, 255, 255, 0.3); | |
| } | |
| .sidebar::-webkit-scrollbar-thumb:hover { | |
| background: rgba(255, 255, 255, 0.5); | |
| } | |
| /* ==================== Accordion Styling ==================== */ | |
| .accordion { | |
| background: rgba(255, 255, 255, 0.1) ; | |
| border: 1px solid rgba(255, 255, 255, 0.2) ; | |
| border-radius: 8px ; | |
| margin-bottom: 10px ; | |
| } | |
| .accordion summary { | |
| color: #ffffff ; | |
| font-weight: 600 ; | |
| font-size: 0.9rem ; | |
| padding: 10px ; | |
| cursor: pointer ; | |
| } | |
| /* ==================== Footer ==================== */ | |
| .footer { | |
| text-align: center; | |
| padding: 15px; | |
| color: #718096; | |
| font-size: 0.85rem; | |
| background: #ffffff; | |
| border-top: 1px solid #e0e7ef; | |
| margin-top: 0; | |
| } | |
| .footer strong { | |
| color: #00a896; | |
| } | |
| /* ==================== Responsive Design ==================== */ | |
| @media (max-width: 768px) { | |
| .header-container h1 { | |
| font-size: 1.3rem; | |
| } | |
| .sidebar { | |
| width: 220px ; | |
| min-width: 220px ; | |
| } | |
| .main-container { | |
| flex-direction: column; | |
| height: auto; | |
| } | |
| } | |
| /* ==================== Fix Endless Scrolling ==================== */ | |
| body { | |
| overflow: hidden ; | |
| } | |
| html { | |
| overflow: hidden ; | |
| } | |
| .gradio-container { | |
| overflow: hidden ; | |
| } | |
| /* ==================== Upload Redirect Button ==================== */ | |
| .upload-redirect-button { | |
| background: linear-gradient(135deg, #ff8c00 0%, #ff6b00 100%) ; | |
| color: white ; | |
| border: none ; | |
| border-radius: 10px ; | |
| padding: 14px 20px ; | |
| margin: 10px 0 ; | |
| font-weight: 600 ; | |
| font-size: 1rem ; | |
| cursor: pointer ; | |
| transition: all 0.3s ease ; | |
| width: 100% ; | |
| text-align: center ; | |
| box-shadow: 0 3px 8px rgba(255, 140, 0, 0.3) ; | |
| display: block ; | |
| } | |
| .upload-redirect-button:hover { | |
| background: linear-gradient(135deg, #ffa500 0%, #ff8c00 100%) ; | |
| transform: translateY(-3px) ; | |
| box-shadow: 0 6px 16px rgba(255, 140, 0, 0.5) ; | |
| } | |
| .upload-redirect-button:active { | |
| transform: translateY(-1px) ; | |
| box-shadow: 0 4px 10px rgba(255, 140, 0, 0.4) ; | |
| } |