Spaces:
Running
on
Zero
Running
on
Zero
"""CSS styles and theme definitions for the Markit UI.""" | |
# Main CSS styles for the application | |
CSS_STYLES = """ | |
/* Global styles */ | |
.gradio-container { | |
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; | |
} | |
/* Document converter styles */ | |
.output-container { | |
max-height: 420px; | |
overflow-y: auto; | |
border: 1px solid #ddd; | |
padding: 10px; | |
} | |
.gradio-container .prose { | |
overflow: visible; | |
} | |
.processing-controls { | |
display: flex; | |
justify-content: center; | |
gap: 10px; | |
margin-top: 10px; | |
} | |
.provider-options-row { | |
margin-top: 15px; | |
margin-bottom: 15px; | |
} | |
/* Chat Tab Styles - Complete redesign */ | |
.chat-tab-container { | |
max-width: 1200px; | |
margin: 0 auto; | |
padding: 20px; | |
} | |
.chat-header { | |
text-align: center; | |
margin-bottom: 30px; | |
padding: 20px; | |
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
border-radius: 15px; | |
color: white; | |
box-shadow: 0 4px 15px rgba(0,0,0,0.1); | |
} | |
.chat-header h2 { | |
margin: 0; | |
font-size: 1.8em; | |
font-weight: 600; | |
} | |
.chat-header p { | |
margin: 10px 0 0 0; | |
opacity: 0.9; | |
font-size: 1.1em; | |
} | |
/* Status Card Styling */ | |
.status-card { | |
background: #ffffff; | |
border: 1px solid #e1e5e9; | |
border-radius: 12px; | |
padding: 20px; | |
margin-bottom: 25px; | |
box-shadow: 0 2px 10px rgba(0,0,0,0.05); | |
transition: all 0.3s ease; | |
} | |
.status-card:hover { | |
box-shadow: 0 4px 20px rgba(0,0,0,0.1); | |
} | |
.status-header { | |
display: flex; | |
justify-content: space-between; | |
align-items: center; | |
margin-bottom: 20px; | |
padding-bottom: 15px; | |
border-bottom: 2px solid #f0f2f5; | |
} | |
.status-header h3 { | |
margin: 0; | |
color: #2c3e50; | |
font-size: 1.3em; | |
font-weight: 600; | |
} | |
.status-indicator { | |
padding: 8px 16px; | |
border-radius: 25px; | |
font-weight: 600; | |
font-size: 0.9em; | |
letter-spacing: 0.5px; | |
} | |
.status-ready { | |
background: #d4edda; | |
color: #155724; | |
border: 1px solid #c3e6cb; | |
} | |
.status-not-ready { | |
background: #f8d7da; | |
color: #721c24; | |
border: 1px solid #f5c6cb; | |
} | |
.status-grid { | |
display: grid; | |
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); | |
gap: 15px; | |
margin-bottom: 20px; | |
} | |
.status-item { | |
background: #f8f9fa; | |
padding: 15px; | |
border-radius: 8px; | |
text-align: center; | |
border: 1px solid #e9ecef; | |
} | |
.status-label { | |
font-size: 0.85em; | |
color: #6c757d; | |
margin-bottom: 5px; | |
font-weight: 500; | |
} | |
.status-value { | |
font-size: 1.4em; | |
font-weight: 700; | |
color: #495057; | |
} | |
.status-services { | |
display: flex; | |
gap: 15px; | |
flex-wrap: wrap; | |
} | |
.service-status { | |
display: flex; | |
align-items: center; | |
gap: 8px; | |
padding: 10px 15px; | |
border-radius: 8px; | |
font-weight: 500; | |
flex: 1; | |
min-width: 200px; | |
color: #2c3e50 !important; | |
} | |
.service-status span { | |
color: #2c3e50 !important; | |
} | |
.service-ready { | |
background: #d4edda; | |
color: #2c3e50 !important; | |
border: 1px solid #c3e6cb; | |
} | |
.service-ready span { | |
color: #2c3e50 !important; | |
} | |
.service-error { | |
background: #f8d7da; | |
color: #2c3e50 !important; | |
border: 1px solid #f5c6cb; | |
} | |
.service-error span { | |
color: #2c3e50 !important; | |
} | |
.service-icon { | |
font-size: 1.2em; | |
} | |
.service-indicator { | |
margin-left: auto; | |
} | |
.status-error { | |
border-color: #dc3545; | |
background: #f8d7da; | |
} | |
.error-message { | |
color: #721c24; | |
margin: 0; | |
font-weight: 500; | |
} | |
/* Control buttons styling */ | |
.control-buttons { | |
display: flex; | |
gap: 12px; | |
justify-content: flex-end; | |
margin-bottom: 25px; | |
} | |
.control-btn { | |
padding: 10px 20px; | |
border-radius: 8px; | |
font-weight: 500; | |
transition: all 0.3s ease; | |
border: none; | |
cursor: pointer; | |
} | |
.btn-refresh { | |
background: #17a2b8; | |
color: white; | |
} | |
.btn-refresh:hover { | |
background: #138496; | |
transform: translateY(-1px); | |
} | |
.btn-new-session { | |
background: #28a745; | |
color: white; | |
} | |
.btn-new-session:hover { | |
background: #218838; | |
transform: translateY(-1px); | |
} | |
.btn-clear-data { | |
background: #dc3545; | |
color: white; | |
} | |
.btn-clear-data:hover { | |
background: #c82333; | |
transform: translateY(-1px); | |
} | |
.btn-primary { | |
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
color: white; | |
} | |
.btn-primary:hover { | |
transform: translateY(-1px); | |
box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3); | |
} | |
/* Chat interface styling */ | |
.chat-main-container { | |
background: #ffffff; | |
border-radius: 15px; | |
box-shadow: 0 4px 20px rgba(0,0,0,0.08); | |
overflow: hidden; | |
margin-bottom: 25px; | |
} | |
.chat-container { | |
background: #ffffff; | |
border-radius: 12px; | |
border: 1px solid #e1e5e9; | |
overflow: hidden; | |
} | |
/* Custom chatbot styling */ | |
.gradio-chatbot { | |
border: none !important; | |
background: #ffffff; | |
} | |
.gradio-chatbot .message { | |
padding: 15px 20px; | |
margin: 10px; | |
border-radius: 12px; | |
} | |
.gradio-chatbot .message.user { | |
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
color: white; | |
margin-left: 50px; | |
} | |
.gradio-chatbot .message.assistant { | |
background: #f8f9fa; | |
border: 1px solid #e9ecef; | |
margin-right: 50px; | |
} | |
/* Input area styling */ | |
.chat-input-container { | |
background: #ffffff; | |
padding: 20px; | |
border-top: 1px solid #e1e5e9; | |
border-radius: 0 0 15px 15px; | |
} | |
.input-row { | |
display: flex; | |
gap: 12px; | |
align-items: center; | |
} | |
.message-input { | |
flex: 1; | |
border: 2px solid #e1e5e9; | |
border-radius: 25px; | |
padding: 12px 20px; | |
font-size: 1em; | |
transition: all 0.3s ease; | |
resize: none; | |
max-height: 120px; | |
min-height: 48px; | |
} | |
.message-input:focus { | |
border-color: #667eea; | |
box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); | |
outline: none; | |
} | |
.send-button { | |
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
color: white; | |
border: none; | |
border-radius: 12px; | |
padding: 12px 24px; | |
min-width: 80px; | |
height: 48px; | |
margin-right: 10px; | |
cursor: pointer; | |
transition: all 0.3s ease; | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
font-size: 1em; | |
font-weight: 600; | |
letter-spacing: 0.5px; | |
} | |
.send-button:hover { | |
transform: scale(1.05); | |
box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3); | |
} | |
/* Session info styling */ | |
.session-info { | |
background: #e7f3ff; | |
border: 1px solid #b3d9ff; | |
border-radius: 8px; | |
padding: 15px; | |
color: #0056b3; | |
font-weight: 500; | |
text-align: center; | |
} | |
/* Responsive design */ | |
@media (max-width: 768px) { | |
.chat-tab-container { | |
padding: 10px; | |
} | |
.status-grid { | |
grid-template-columns: repeat(2, 1fr); | |
} | |
.service-status { | |
min-width: 100%; | |
} | |
.control-buttons { | |
flex-direction: column; | |
gap: 8px; | |
} | |
.gradio-chatbot .message.user { | |
margin-left: 20px; | |
} | |
.gradio-chatbot .message.assistant { | |
margin-right: 20px; | |
} | |
} | |
/* Query Ranker Styles */ | |
.ranker-container { | |
max-width: 1200px; | |
margin: 0 auto; | |
padding: 20px; | |
} | |
.ranker-placeholder { | |
text-align: center; | |
padding: 40px; | |
background: #f8f9fa; | |
border-radius: 12px; | |
border: 1px solid #e9ecef; | |
color: #6c757d; | |
} | |
.ranker-placeholder h3 { | |
color: #495057; | |
margin-bottom: 10px; | |
} | |
.ranker-error { | |
text-align: center; | |
padding: 30px; | |
background: #f8d7da; | |
border: 1px solid #f5c6cb; | |
border-radius: 12px; | |
color: #721c24; | |
} | |
.ranker-error h3 { | |
margin-bottom: 15px; | |
} | |
.error-hint { | |
font-style: italic; | |
margin-top: 10px; | |
opacity: 0.8; | |
} | |
.ranker-no-results { | |
text-align: center; | |
padding: 40px; | |
background: #ffffff; | |
border: 1px solid #e1e5e9; | |
border-radius: 12px; | |
color: #6c757d; | |
} | |
.ranker-no-results h3 { | |
color: #495057; | |
margin-bottom: 15px; | |
} | |
.no-results-hint { | |
font-style: italic; | |
margin-top: 10px; | |
opacity: 0.8; | |
} | |
.ranker-header { | |
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
color: white; | |
padding: 20px; | |
border-radius: 15px; | |
margin-bottom: 25px; | |
box-shadow: 0 4px 15px rgba(0,0,0,0.1); | |
} | |
.ranker-title h3 { | |
margin: 0 0 10px 0; | |
font-size: 1.4em; | |
font-weight: 600; | |
} | |
.query-display { | |
font-size: 1.1em; | |
opacity: 0.9; | |
font-style: italic; | |
margin-bottom: 15px; | |
} | |
.ranker-meta { | |
display: flex; | |
gap: 15px; | |
align-items: center; | |
flex-wrap: wrap; | |
} | |
.method-badge { | |
background: rgba(255, 255, 255, 0.2); | |
padding: 6px 12px; | |
border-radius: 20px; | |
font-weight: 500; | |
font-size: 0.9em; | |
} | |
.result-count { | |
background: rgba(255, 255, 255, 0.15); | |
padding: 6px 12px; | |
border-radius: 20px; | |
font-weight: 500; | |
font-size: 0.9em; | |
} | |
.result-card { | |
background: #ffffff; | |
border: 1px solid #e1e5e9; | |
border-radius: 12px; | |
margin-bottom: 20px; | |
box-shadow: 0 2px 10px rgba(0,0,0,0.05); | |
transition: all 0.3s ease; | |
overflow: hidden; | |
} | |
.result-card:hover { | |
box-shadow: 0 4px 20px rgba(0,0,0,0.1); | |
transform: translateY(-2px); | |
} | |
.result-header { | |
display: flex; | |
justify-content: space-between; | |
align-items: center; | |
padding: 15px 20px; | |
background: #f8f9fa; | |
border-bottom: 1px solid #e9ecef; | |
} | |
.rank-info { | |
display: flex; | |
gap: 10px; | |
align-items: center; | |
flex-wrap: wrap; | |
} | |
.rank-badge { | |
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
color: white; | |
padding: 4px 10px; | |
border-radius: 15px; | |
font-weight: 600; | |
font-size: 0.85em; | |
} | |
.source-info { | |
background: #e9ecef; | |
color: #495057; | |
padding: 4px 8px; | |
border-radius: 10px; | |
font-size: 0.85em; | |
font-weight: 500; | |
} | |
.page-info { | |
background: #d1ecf1; | |
color: #0c5460; | |
padding: 4px 8px; | |
border-radius: 10px; | |
font-size: 0.85em; | |
} | |
.length-info { | |
background: #f8f9fa; | |
color: #6c757d; | |
padding: 4px 8px; | |
border-radius: 10px; | |
font-size: 0.85em; | |
} | |
.score-info { | |
display: flex; | |
gap: 10px; | |
align-items: center; | |
} | |
.confidence-badge { | |
padding: 4px 8px; | |
border-radius: 10px; | |
font-weight: 600; | |
font-size: 0.85em; | |
} | |
.score-value { | |
background: #2c3e50; | |
color: white; | |
padding: 6px 12px; | |
border-radius: 15px; | |
font-weight: 600; | |
font-size: 0.9em; | |
} | |
.result-content { | |
padding: 20px; | |
} | |
.content-text { | |
line-height: 1.6; | |
color: #2c3e50; | |
border-left: 3px solid #667eea; | |
padding-left: 15px; | |
background: #f8f9fa; | |
padding: 15px; | |
border-radius: 0 8px 8px 0; | |
max-height: 300px; | |
overflow-y: auto; | |
} | |
.result-actions { | |
display: flex; | |
gap: 10px; | |
padding: 15px 20px; | |
background: #f8f9fa; | |
border-top: 1px solid #e9ecef; | |
} | |
.action-btn { | |
padding: 8px 16px; | |
border: none; | |
border-radius: 8px; | |
font-weight: 500; | |
cursor: pointer; | |
transition: all 0.3s ease; | |
font-size: 0.9em; | |
display: flex; | |
align-items: center; | |
gap: 5px; | |
} | |
.copy-btn { | |
background: #17a2b8; | |
color: white; | |
} | |
.copy-btn:hover { | |
background: #138496; | |
transform: translateY(-1px); | |
} | |
.info-btn { | |
background: #6c757d; | |
color: white; | |
} | |
.info-btn:hover { | |
background: #5a6268; | |
transform: translateY(-1px); | |
} | |
.ranker-methods { | |
margin-top: 20px; | |
padding-top: 15px; | |
border-top: 1px solid #e9ecef; | |
} | |
.methods-label { | |
font-weight: 600; | |
color: #495057; | |
margin-bottom: 10px; | |
font-size: 0.9em; | |
} | |
.methods-list { | |
display: flex; | |
gap: 8px; | |
flex-wrap: wrap; | |
} | |
.method-tag { | |
background: #e9ecef; | |
color: #495057; | |
padding: 4px 10px; | |
border-radius: 12px; | |
font-size: 0.8em; | |
font-weight: 500; | |
} | |
/* Ranker controls styling */ | |
.ranker-controls { | |
background: #ffffff; | |
border: 1px solid #e1e5e9; | |
border-radius: 12px; | |
padding: 20px; | |
margin-bottom: 25px; | |
box-shadow: 0 2px 10px rgba(0,0,0,0.05); | |
} | |
.ranker-input-row { | |
display: flex; | |
gap: 15px; | |
align-items: end; | |
margin-bottom: 15px; | |
} | |
.ranker-query-input { | |
flex: 1; | |
border: 2px solid #e1e5e9; | |
border-radius: 25px; | |
padding: 12px 20px; | |
font-size: 1em; | |
transition: all 0.3s ease; | |
} | |
.ranker-query-input:focus { | |
border-color: #667eea; | |
box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); | |
outline: none; | |
} | |
.ranker-search-btn { | |
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
color: white; | |
border: none; | |
border-radius: 12px; | |
padding: 12px 24px; | |
min-width: 100px; | |
cursor: pointer; | |
transition: all 0.3s ease; | |
font-weight: 600; | |
font-size: 1em; | |
} | |
.ranker-search-btn:hover { | |
transform: scale(1.05); | |
box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3); | |
} | |
.ranker-options-row { | |
display: flex; | |
gap: 15px; | |
align-items: center; | |
} | |
/* Responsive design for ranker */ | |
@media (max-width: 768px) { | |
.ranker-container { | |
padding: 10px; | |
} | |
.ranker-input-row { | |
flex-direction: column; | |
gap: 10px; | |
} | |
.ranker-options-row { | |
flex-direction: column; | |
gap: 10px; | |
align-items: stretch; | |
} | |
.ranker-meta { | |
justify-content: center; | |
} | |
.rank-info { | |
flex-direction: column; | |
gap: 5px; | |
align-items: flex-start; | |
} | |
.result-header { | |
flex-direction: column; | |
gap: 10px; | |
align-items: flex-start; | |
} | |
.score-info { | |
align-self: flex-end; | |
} | |
.result-actions { | |
flex-direction: column; | |
gap: 8px; | |
} | |
} | |
""" |