| """ |
| CSS styles for the demo |
| """ |
|
|
| CUSTOM_CSS = """ |
| .gradio-container { |
| max-width: 1800px !important; |
| margin: auto !important; |
| font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif !important; |
| } |
| |
| /* Header styles */ |
| h1 { |
| background: linear-gradient(90deg, #1a365d 0%, #2d3748 100%); |
| -webkit-background-clip: text; |
| -webkit-text-fill-color: transparent; |
| background-clip: text; |
| font-weight: 800 !important; |
| font-size: 2.5rem !important; |
| margin-bottom: 0.5rem !important; |
| line-height: 1.2 !important; |
| } |
| |
| h2 { |
| color: #4a5568 !important; |
| font-weight: 600 !important; |
| font-size: 1.5rem !important; |
| margin-bottom: 1rem !important; |
| } |
| |
| h3 { |
| color: #2d3748 !important; |
| font-weight: 700 !important; |
| font-size: 1.25rem !important; |
| margin-bottom: 0.75rem !important; |
| } |
| |
| h4 { |
| color: #4a5568 !important; |
| font-weight: 600 !important; |
| font-size: 1.1rem !important; |
| margin-bottom: 0.5rem !important; |
| } |
| |
| /* Status indicators */ |
| .critical { |
| color: #FF6B6B !important; |
| font-weight: 700 !important; |
| } |
| |
| .warning { |
| color: #FFA726 !important; |
| font-weight: 700 !important; |
| } |
| |
| .success { |
| color: #4ECDC4 !important; |
| font-weight: 700 !important; |
| } |
| |
| .info { |
| color: #42A5F5 !important; |
| font-weight: 700 !important; |
| } |
| |
| /* Cards and containers */ |
| .metric-card { |
| background: white !important; |
| border-radius: 12px !important; |
| padding: 20px !important; |
| box-shadow: 0 2px 8px rgba(0,0,0,0.06) !important; |
| border: 1px solid #e2e8f0 !important; |
| margin-bottom: 15px !important; |
| transition: transform 0.2s ease, box-shadow 0.2s ease; |
| } |
| |
| .metric-card:hover { |
| transform: translateY(-2px); |
| box-shadow: 0 4px 12px rgba(0,0,0,0.1) !important; |
| } |
| |
| /* Plot containers */ |
| .plot-container { |
| background: white !important; |
| border-radius: 12px !important; |
| padding: 15px !important; |
| box-shadow: 0 2px 8px rgba(0,0,0,0.06) !important; |
| border: 1px solid #e2e8f0 !important; |
| margin-bottom: 20px !important; |
| } |
| |
| /* Data tables */ |
| .dataframe { |
| background: white !important; |
| border-radius: 8px !important; |
| border: 1px solid #e2e8f0 !important; |
| } |
| |
| .dataframe th { |
| background: #f8fafc !important; |
| color: #4a5568 !important; |
| font-weight: 600 !important; |
| padding: 12px !important; |
| border-bottom: 2px solid #e2e8f0 !important; |
| } |
| |
| .dataframe td { |
| padding: 10px 12px !important; |
| border-bottom: 1px solid #e2e8f0 !important; |
| } |
| |
| /* Buttons */ |
| button { |
| border-radius: 8px !important; |
| font-weight: 600 !important; |
| transition: all 0.2s ease !important; |
| } |
| |
| button:hover { |
| transform: translateY(-1px); |
| box-shadow: 0 4px 12px rgba(0,0,0,0.15) !important; |
| } |
| |
| button.primary { |
| background: linear-gradient(135deg, #4ECDC4 0%, #44A08D 100%) !important; |
| color: white !important; |
| border: none !important; |
| } |
| |
| button.secondary { |
| background: white !important; |
| color: #4a5568 !important; |
| border: 1px solid #e2e8f0 !important; |
| } |
| |
| button.secondary:hover { |
| background: #f8fafc !important; |
| border-color: #cbd5e0 !important; |
| } |
| |
| button.stop { |
| background: linear-gradient(135deg, #FF6B6B 0%, #C53030 100%) !important; |
| color: white !important; |
| border: none !important; |
| } |
| |
| /* Inputs and controls */ |
| input, textarea, select { |
| border-radius: 8px !important; |
| border: 1px solid #e2e8f0 !important; |
| padding: 10px 12px !important; |
| background: white !important; |
| } |
| |
| input:focus, textarea:focus, select:focus { |
| border-color: #4ECDC4 !important; |
| box-shadow: 0 0 0 3px rgba(78, 205, 196, 0.1) !important; |
| outline: none !important; |
| } |
| |
| /* Tabs */ |
| .tab-nav { |
| background: linear-gradient(90deg, #f8fafc 0%, #ffffff 100%) !important; |
| border-radius: 12px !important; |
| padding: 8px !important; |
| margin-bottom: 25px !important; |
| border: 1px solid #e2e8f0 !important; |
| } |
| |
| .tab-button { |
| border-radius: 8px !important; |
| font-weight: 600 !important; |
| padding: 10px 20px !important; |
| } |
| |
| .tab-button.selected { |
| background: white !important; |
| color: #4ECDC4 !important; |
| box-shadow: 0 2px 8px rgba(0,0,0,0.08) !important; |
| border: 1px solid #e2e8f0 !important; |
| } |
| |
| /* JSON display */ |
| .json-container { |
| background: #f8fafc !important; |
| border-radius: 8px !important; |
| padding: 15px !important; |
| border: 1px solid #e2e8f0 !important; |
| font-family: 'Monaco', ' |