""" Enhanced CSS styles for ARF demo Comprehensive styling for expressive Tab 1 """ def get_styles() -> str: """Get all CSS styles for the ARF demo""" return """ /* ===== Base Styles ===== */ .demo-container { max-width: 1800px; margin: 0 auto; padding: 20px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif; } .header-section { text-align: center; margin-bottom: 25px; padding: 30px 40px; background: linear-gradient(135deg, #1e3a8a 0%, #3b82f6 100%); color: white; border-radius: 16px; box-shadow: 0 8px 32px rgba(59, 130, 246, 0.15); } .status-bar { display: flex; justify-content: center; gap: 20px; margin-bottom: 30px; padding: 15px; background: #f8fafc; border-radius: 12px; border: 1px solid #e2e8f0; flex-wrap: wrap; } .status-item { padding: 8px 16px; background: white; border-radius: 8px; font-size: 14px; font-weight: 500; display: flex; align-items: center; gap: 6px; border: 1px solid #e2e8f0; } .status-item.active { background: #10b981; color: white; border-color: #10b981; } /* ===== Tab 1 Specific Styles ===== */ /* Scenario Card */ .scenario-card { border: 1px solid #e2e8f0; border-radius: 14px; padding: 20px; background: white; box-shadow: 0 4px 12px rgba(0,0,0,0.05); margin-bottom: 20px; transition: all 0.3s ease; } .scenario-card:hover { box-shadow: 0 8px 24px rgba(0,0,0,0.08); transform: translateY(-2px); } .scenario-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding-bottom: 12px; border-bottom: 2px solid #f1f5f9; } .scenario-header h3 { margin: 0; font-size: 18px; color: #1e293b; } .severity-badge { padding: 4px 12px; border-radius: 20px; font-size: 12px; font-weight: bold; color: white; text-transform: uppercase; letter-spacing: 0.5px; } .severity-badge.high { background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); } .severity-badge.medium { background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%); } .severity-badge.low { background: linear-gradient(135deg, #10b981 0%, #059669 100%); } .scenario-details { margin-top: 15px; } .scenario-detail-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; padding: 4px 0; } .detail-label { font-size: 13px; color: #64748b; font-weight: 500; } .detail-value { font-size: 14px; color: #1e293b; font-weight: 600; } .detail-value.revenue-risk { color: #ef4444; font-weight: 700; } .scenario-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 15px; padding-top: 12px; border-top: 1px solid #f1f5f9; } .scenario-tag { padding: 3px 8px; background: #f1f5f9; border-radius: 6px; font-size: 11px; color: #475569; font-weight: 500; } /* Agent Cards */ .agent-card { border: 2px solid; border-radius: 14px; padding: 18px; background: white; text-align: center; flex: 1; margin: 5px; min-height: 180px; display: flex; flex-direction: column; align-items: center; justify-content: space-between; transition: all 0.3s ease; } .agent-card:hover { transform: translateY(-4px); box-shadow: 0 12px 24px rgba(0,0,0,0.1); } .agent-card.detection { border-color: #3b82f6; background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%); } .agent-card.recall { border-color: #8b5cf6; background: linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%); } .agent-card.decision { border-color: #10b981; background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%); } .agent-icon { font-size: 32px; margin-bottom: 10px; } .agent-content { width: 100%; } .agent-content h4 { margin: 0 0 8px 0; font-size: 16px; color: #1e293b; } .agent-status-text { font-size: 13px; color: #475569; margin-bottom: 12px; line-height: 1.4; } .agent-metrics { display: flex; justify-content: space-around; margin-bottom: 12px; } .agent-metric { font-size: 11px; padding: 3px 8px; background: rgba(255, 255, 255, 0.8); border-radius: 6px; color: #475569; font-weight: 500; } .agent-status { display: inline-block; padding: 5px 14px; border-radius: 20px; font-size: 12px; font-weight: bold; color: white; text-transform: uppercase; letter-spacing: 0.5px; } .agent-status.active { background: linear-gradient(135deg, #10b981 0%, #059669 100%); } /* OSS vs Enterprise Sections */ .oss-section, .enterprise-section { padding: 20px; border-radius: 14px; margin-bottom: 15px; flex: 1; min-height: 320px; display: flex; flex-direction: column; } .oss-section { background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%); border: 2px solid #0ea5e9; } .enterprise-section { background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%); border: 2px solid #10b981; } .edition-header { display: flex; align-items: center; gap: 10px; margin-bottom: 15px; padding-bottom: 12px; border-bottom: 2px solid rgba(255, 255, 255, 0.3); } .edition-icon { font-size: 28px; } .edition-header h3 { margin: 0; font-size: 20px; color: #1e293b; flex: 1; } .edition-badge { padding: 4px 10px; background: rgba(255, 255, 255, 0.9); border-radius: 8px; font-size: 11px; font-weight: bold; color: #475569; } .edition-description { margin-bottom: 20px; padding: 12px; background: rgba(255, 255, 255, 0.7); border-radius: 10px; } .edition-description p { margin: 0; font-size: 14px; color: #475569; font-weight: 500; } .intent-card, .execution-card { background: white; border-radius: 12px; padding: 20px; box-shadow: 0 4px 12px rgba(0,0,0,0.05); flex: 1; display: flex; flex-direction: column; } .intent-header, .execution-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding-bottom: 10px; border-bottom: 1px solid #f1f5f9; } .intent-header h4, .execution-header h4 { margin: 0; font-size: 16px; color: #1e293b; } .intent-confidence { padding: 4px 10px; background: #dbeafe; color: #1d4ed8; border-radius: 6px; font-size: 12px; font-weight: bold; } .execution-mode { padding: 4px 10px; background: #10b981; color: white; border-radius: 6px; font-size: 12px; font-weight: bold; text-transform: uppercase; } .execution-mode.autonomous { background: linear-gradient(135deg, #10b981 0%, #059669 100%); } .execution-mode.approval { background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%); } .intent-details, .execution-details { flex: 1; } .intent-details p, .execution-details p { margin: 8px 0; font-size: 14px; color: #475569; } .intent-details strong, .execution-details strong { color: #1e293b; } .savings-highlight { color: #10b981; font-weight: 700; font-size: 16px; } .boundary-stop, .boundary-start { margin-top: 20px; text-align: center; } .stop-line, .start-line { height: 2px; background: linear-gradient(90deg, transparent, #3b82f6, transparent); margin: 8px 0; } .start-line { background: linear-gradient(90deg, transparent, #10b981, transparent); } .stop-text, .start-text { font-size: 12px; font-weight: bold; padding: 6px 12px; border-radius: 8px; display: inline-block; } .stop-text { background: #fee2e2; color: #dc2626; } .start-text { background: #dcfce7; color: #166534; } /* Metric Cards */ .metric-card { border: 1px solid #e2e8f0; border-radius: 12px; padding: 18px; background: white; margin: 8px; text-align: center; flex: 1; min-width: 140px; transition: all 0.3s ease; } .metric-card:hover { transform: translateY(-4px); box-shadow: 0 8px 16px rgba(0,0,0,0.08); } .metric-card.detection { border-left: 4px solid #3b82f6; } .metric-card.mttr { border-left: 4px solid #10b981; } .metric-card.auto-heal { border-left: 4px solid #8b5cf6; } .metric-card.savings { border-left: 4px solid #f59e0b; } .metric-icon { font-size: 28px; margin-bottom: 10px; } .metric-content h4 { margin: 0 0 8px 0; font-size: 14px; color: #64748b; font-weight: 600; } .metric-value { font-size: 28px; font-weight: bold; color: #1e40af; margin: 8px 0; } .metric-card.mttr .metric-value { color: #10b981; } .metric-card.auto-heal .metric-value { color: #8b5cf6; } .metric-card.savings .metric-value { color: #f59e0b; } .metric-comparison { font-size: 12px; color: #64748b; margin: 0; } /* Buttons */ .oss-btn { background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%); color: white !important; border: none; padding: 16px 24px; border-radius: 12px; font-weight: 600; font-size: 16px; width: 100%; transition: all 0.3s ease; } .oss-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(59, 130, 246, 0.3); } .enterprise-btn { background: linear-gradient(135deg, #10b981 0%, #059669 100%); color: white !important; border: none; padding: 16px 24px; border-radius: 12px; font-weight: 600; font-size: 16px; width: 100%; transition: all 0.3s ease; } .enterprise-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(16, 185, 129, 0.3); } .button-info { font-size: 12px; color: #64748b; text-align: center; margin-top: 6px !important; font-style: italic; } /* Approval Status */ .approval-status { border: 2px solid #e2e8f0; border-radius: 14px; padding: 20px; background: white; margin-top: 20px; } .approval-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding-bottom: 12px; border-bottom: 2px solid #f1f5f9; } .approval-header h4 { margin: 0; font-size: 16px; color: #1e293b; } .approval-badge { padding: 4px 12px; border-radius: 8px; font-size: 12px; font-weight: bold; text-transform: uppercase; } .approval-badge.not-required { background: #10b981; color: white; } .approval-badge.required { background: #f59e0b; color: white; } .approval-badge.pending { background: #3b82f6; color: white; } .approval-content { margin-top: 15px; } .approval-content p { margin: 8px 0; font-size: 14px; color: #475569; } .approval-workflow { display: flex; flex-direction: column; gap: 10px; margin-top: 20px; } .workflow-step { padding: 12px; background: #f8fafc; border-radius: 10px; border-left: 4px solid #3b82f6; font-size: 14px; color: #475569; font-weight: 500; } .demo-info { font-size: 12px; color: #64748b; text-align: center; margin-top: 8px !important; font-style: italic; } /* Footer */ .footer { text-align: center; padding: 25px; color: #6b7280; font-size: 14px; margin-top: 40px; border-top: 2px solid #e5e7eb; background: #f9fafb; border-radius: 12px; } .footer strong { color: #1e293b; font-size: 16px; } .footer-links { margin-top: 15px; display: flex; justify-content: center; gap: 20px; flex-wrap: wrap; } .footer-links a { color: #3b82f6; text-decoration: none; font-weight: 500; transition: color 0.2s ease; } .footer-links a:hover { color: #1d4ed8; text-decoration: underline; } /* Responsive Adjustments */ @media (max-width: 1200px) { .status-bar { gap: 10px; } .status-item { font-size: 13px; padding: 6px 12px; } .agent-card { min-height: 200px; } .metric-card { min-width: 120px; } } /* Gradient backgrounds for panels */ .gradio-container .tab-nav { background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); border-radius: 12px; padding: 8px; margin-bottom: 20px; } .gradio-container .tab-nav .selected { background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%) !important; color: white !important; font-weight: 600; border-radius: 10px; } """