/* ── Base ── */ body, .gradio-container { font-family: 'Inter', sans-serif; background: #0d0d1a; color: #e8e8f0; } /* ── Header ── */ .header-wrap { position: relative; width: 100%; min-height: 180px; display: flex; align-items: center; justify-content: center; overflow: hidden; margin-bottom: 8px; } .bg-top { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0.35; z-index: 0; } .header-content { position: relative; z-index: 1; text-align: center; padding: 32px 16px; } .app-title { font-size: 2.2rem; font-weight: 800; color: #f5c518; margin: 0 0 8px 0; letter-spacing: -0.5px; text-shadow: 0 2px 12px rgba(0,0,0,0.6); } .app-subtitle { font-size: 1.05rem; color: #c8c8e0; margin: 0; } /* ── KPI Cards ── */ .kpi-card { background: #1a1a2e; border-radius: 12px; padding: 18px 24px; min-width: 130px; text-align: center; border: 1px solid #2a2a4a; box-shadow: 0 4px 16px rgba(0,0,0,0.3); transition: transform 0.15s ease; } .kpi-card:hover { transform: translateY(-3px); } .kpi-value { font-size: 1.9rem; font-weight: 800; line-height: 1; margin-bottom: 6px; } .kpi-label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.5px; } .kpi-total .kpi-value { color: #a78bfa; } .kpi-renew .kpi-value { color: #2ecc71; } .kpi-invest .kpi-value { color: #f39c12; } .kpi-cancel .kpi-value { color: #e74c3c; } .kpi-roi .kpi-value { color: #3498db; } .kpi-completion .kpi-value { color: #1abc9c; } .kpi-rating .kpi-value { color: #f5c518; } .kpi-sentiment .kpi-value { color: #e91e8c; } /* ── Tabs ── */ .tab-nav button { background: transparent !important; color: #a0a0c0 !important; border-bottom: 2px solid transparent !important; font-weight: 500; transition: all 0.2s; } .tab-nav button.selected { color: #f5c518 !important; border-bottom: 2px solid #f5c518 !important; } /* ── Buttons ── */ button.primary { background: linear-gradient(135deg, #f5c518, #e8a000) !important; color: #0d0d1a !important; font-weight: 700 !important; border: none !important; border-radius: 8px !important; } button.secondary { background: #1a1a2e !important; color: #e8e8f0 !important; border: 1px solid #3a3a5a !important; border-radius: 8px !important; } button:hover { opacity: 0.9; } /* ── Inputs ── */ input, textarea, .gr-textbox textarea { background: #1a1a2e !important; border: 1px solid #3a3a5a !important; color: #e8e8f0 !important; border-radius: 8px !important; } /* ── DataFrames ── */ .gr-dataframe table { background: #1a1a2e; border-radius: 8px; overflow: hidden; } .gr-dataframe th { background: #2a2a4a; color: #f5c518; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.5px; } .gr-dataframe td { color: #c8c8e0; font-size: 0.85rem; border-bottom: 1px solid #2a2a3a; } .gr-dataframe tr:hover td { background: #22223a; } /* ── Images ── */ .gr-image img { border-radius: 10px; box-shadow: 0 4px 20px rgba(0,0,0,0.4); } /* ── Chatbot ── */ .gr-chatbot { background: #1a1a2e !important; border: 1px solid #3a3a5a !important; border-radius: 10px !important; } .gr-chatbot .message.user { background: #2a2a4a !important; color: #e8e8f0 !important; border-radius: 8px !important; } .gr-chatbot .message.bot { background: #0f3460 !important; color: #e8e8f0 !important; border-radius: 8px !important; } /* ── Log box ── */ .gr-textbox textarea { font-family: 'Courier New', monospace !important; font-size: 0.82rem !important; } /* ── Footer ── */ .footer { position: relative; text-align: center; padding: 24px; margin-top: 16px; color: #666; font-size: 0.8rem; overflow: hidden; } .bg-bottom { position: absolute; bottom: 0; left: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0.15; z-index: 0; } .footer p { position: relative; z-index: 1; } /* ── Markdown headings ── */ .gr-markdown h3 { color: #f5c518; font-size: 1rem; margin: 20px 0 8px; border-bottom: 1px solid #2a2a4a; padding-bottom: 4px; }