""" 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', '