| | |
| |
|
| | :root { |
| | |
| | --primary-color: #3b82f6; |
| | --primary-hover: #2563eb; |
| | --secondary-color: #1d4ed8; |
| | --success-color: #10b981; |
| | --warning-color: #f59e0b; |
| | --danger-color: #ef4444; |
| | --bg-gradient: linear-gradient(135deg, #0d4f6c 0%, #001a2c 100%); |
| | --card-bg: rgba(255, 255, 255, 0.95); |
| | --text-main: #1e293b; |
| | --text-muted: #64748b; |
| | --text-light: #f8fafc; |
| | --border-color: #e2e8f0; |
| | --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); |
| | --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1); |
| | --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1); |
| | |
| | |
| | --space-xs: 0.25rem; |
| | --space-sm: 0.5rem; |
| | --space-md: 1rem; |
| | --space-lg: 1.5rem; |
| | --space-xl: 2rem; |
| | --space-2xl: 3rem; |
| | |
| | |
| | --text-xs: 0.75rem; |
| | --text-sm: 0.875rem; |
| | --text-base: 1rem; |
| | --text-lg: 1.125rem; |
| | --text-xl: 1.25rem; |
| | --text-2xl: 1.5rem; |
| | --text-3xl: 1.875rem; |
| | --text-4xl: 2.25rem; |
| | |
| | |
| | --breakpoint-sm: 640px; |
| | --breakpoint-md: 768px; |
| | --breakpoint-lg: 1024px; |
| | --breakpoint-xl: 1280px; |
| | } |
| |
|
| | |
| | .main-header { |
| | background: var(--bg-gradient); |
| | padding: var(--space-lg) var(--space-md); |
| | border-radius: 12px; |
| | color: var(--text-light); |
| | text-align: center; |
| | margin-bottom: var(--space-lg); |
| | box-shadow: var(--shadow-lg); |
| | border: 1px solid rgba(255,255,255,0.1); |
| | position: relative; |
| | overflow: hidden; |
| | } |
| |
|
| | .main-header::before { |
| | content: ''; |
| | position: absolute; |
| | top: 0; |
| | left: 0; |
| | right: 0; |
| | bottom: 0; |
| | background: linear-gradient(45deg, rgba(59, 130, 246, 0.1), rgba(29, 78, 216, 0.1)); |
| | pointer-events: none; |
| | } |
| |
|
| | .main-header > * { |
| | position: relative; |
| | z-index: 1; |
| | } |
| |
|
| | .main-header h1 { |
| | font-size: var(--text-2xl) !important; |
| | font-weight: 800 !important; |
| | margin-bottom: var(--space-sm) !important; |
| | line-height: 1.2; |
| | text-shadow: 0 2px 4px rgba(0,0,0,0.3); |
| | } |
| |
|
| | .main-header p { |
| | font-size: var(--text-sm) !important; |
| | opacity: 0.9; |
| | margin: var(--space-xs) 0 !important; |
| | } |
| |
|
| | |
| | @media (min-width: 768px) { |
| | .main-header { |
| | padding: var(--space-2xl) var(--space-xl); |
| | margin-bottom: var(--space-xl); |
| | } |
| | |
| | .main-header h1 { |
| | font-size: var(--text-4xl) !important; |
| | } |
| | |
| | .main-header p { |
| | font-size: var(--text-lg) !important; |
| | } |
| | } |
| |
|
| | |
| | [data-testid="stMetricValue"] { |
| | font-size: 2.2rem !important; |
| | font-weight: 700 !important; |
| | color: var(--primary-color) !important; |
| | } |
| |
|
| | |
| | [data-testid="stMetric"] { |
| | background: white; |
| | padding: 1.5rem !important; |
| | border-radius: 12px !important; |
| | box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1); |
| | border: 1px solid #e2e8f0 !important; |
| | } |
| |
|
| | |
| | section[data-testid="stSidebar"] { |
| | background: linear-gradient(180deg, #0f172a 0%, #1e293b 100%) !important; |
| | color: var(--text-light) !important; |
| | border-right: 1px solid rgba(255, 255, 255, 0.1); |
| | box-shadow: var(--shadow-lg); |
| | } |
| |
|
| | |
| | section[data-testid="stSidebar"] [data-testid="stMetric"] { |
| | background: rgba(15, 23, 42, 0.9) !important; |
| | backdrop-filter: blur(15px); |
| | padding: var(--space-lg) !important; |
| | border-radius: 12px !important; |
| | box-shadow: var(--shadow-md); |
| | border: 1px solid rgba(255, 255, 255, 0.15) !important; |
| | margin-bottom: var(--space-md); |
| | transition: all 0.3s ease; |
| | } |
| |
|
| | section[data-testid="stSidebar"] [data-testid="stMetric"]:hover { |
| | background: rgba(30, 41, 59, 0.9) !important; |
| | border-color: rgba(96, 165, 250, 0.3) !important; |
| | transform: translateY(-1px); |
| | } |
| |
|
| | |
| | section[data-testid="stSidebar"] [data-testid="stMetricValue"] { |
| | color: #60a5fa !important; |
| | font-size: var(--text-2xl) !important; |
| | font-weight: 700 !important; |
| | text-shadow: 0 1px 2px rgba(0,0,0,0.5); |
| | line-height: 1.2; |
| | } |
| |
|
| | |
| | section[data-testid="stSidebar"] [data-testid="stMetricLabel"] { |
| | color: #cbd5e1 !important; |
| | font-weight: 600 !important; |
| | text-shadow: 0 1px 2px rgba(0,0,0,0.3); |
| | font-size: var(--text-sm) !important; |
| | } |
| |
|
| | |
| | section[data-testid="stSidebar"] .stInfo { |
| | background: rgba(15, 23, 42, 0.6) !important; |
| | border: 1px solid rgba(96, 165, 250, 0.3) !important; |
| | border-radius: 8px !important; |
| | padding: 1rem !important; |
| | color: #e2e8f0 !important; |
| | backdrop-filter: blur(5px); |
| | } |
| |
|
| | |
| | section[data-testid="stSidebar"] { |
| | background-color: #0f172a !important; |
| | color: white !important; |
| | border-right: 1px solid rgba(255, 255, 255, 0.1); |
| | } |
| |
|
| | |
| | section[data-testid="stSidebar"] .stMarkdown h1, |
| | section[data-testid="stSidebar"] .stMarkdown h3 { |
| | color: #f8fafc !important; |
| | text-shadow: 0 1px 2px rgba(0,0,0,0.5); |
| | } |
| |
|
| | |
| | section[data-testid="stSidebar"] .stSelectbox > div > div, |
| | section[data-testid="stSidebar"] .stMultiSelect > div > div { |
| | background: rgba(15, 23, 42, 0.9) !important; |
| | border: 1px solid rgba(255, 255, 255, 0.2) !important; |
| | border-radius: 8px !important; |
| | color: var(--text-light) !important; |
| | transition: all 0.3s ease; |
| | } |
| |
|
| | section[data-testid="stSidebar"] .stSelectbox > div > div:hover, |
| | section[data-testid="stSidebar"] .stMultiSelect > div > div:hover { |
| | border-color: rgba(96, 165, 250, 0.5) !important; |
| | background: rgba(30, 41, 59, 0.9) !important; |
| | } |
| |
|
| | |
| | section[data-testid="stSidebar"] input[type="text"], |
| | section[data-testid="stSidebar"] input[type="number"], |
| | section[data-testid="stSidebar"] textarea { |
| | background: rgba(15, 23, 42, 0.9) !important; |
| | border: 1px solid rgba(255, 255, 255, 0.2) !important; |
| | border-radius: 6px !important; |
| | color: var(--text-light) !important; |
| | padding: var(--space-sm) var(--space-md) !important; |
| | } |
| |
|
| | section[data-testid="stSidebar"] input[type="text"]:focus, |
| | section[data-testid="stSidebar"] input[type="number"]:focus, |
| | section[data-testid="stSidebar"] textarea:focus { |
| | border-color: var(--primary-color) !important; |
| | box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2) !important; |
| | } |
| |
|
| | |
| | section[data-testid="stSidebar"] .stButton > button { |
| | background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)) !important; |
| | border: 1px solid var(--secondary-color) !important; |
| | border-radius: 8px !important; |
| | color: white !important; |
| | font-weight: 600 !important; |
| | font-size: var(--text-sm) !important; |
| | padding: var(--space-sm) var(--space-md) !important; |
| | transition: all 0.3s ease !important; |
| | box-shadow: var(--shadow-sm); |
| | cursor: pointer; |
| | } |
| |
|
| | section[data-testid="stSidebar"] .stButton > button:hover { |
| | background: linear-gradient(135deg, var(--primary-hover), var(--primary-color)) !important; |
| | transform: translateY(-2px); |
| | box-shadow: var(--shadow-lg); |
| | } |
| |
|
| | section[data-testid="stSidebar"] .stButton > button:active { |
| | transform: translateY(0); |
| | } |
| |
|
| | |
| | section[data-testid="stSidebar"] .stButton > button[kind="secondary"] { |
| | background: rgba(15, 23, 42, 0.8) !important; |
| | border: 1px solid rgba(255, 255, 255, 0.2) !important; |
| | color: var(--text-light) !important; |
| | } |
| |
|
| | section[data-testid="stSidebar"] .stButton > button[kind="secondary"]:hover { |
| | background: rgba(30, 41, 59, 0.9) !important; |
| | border-color: rgba(96, 165, 250, 0.5) !important; |
| | } |
| |
|
| | |
| | .source-badge { |
| | background-color: #f1f5f9; |
| | color: #475569; |
| | padding: 4px 12px; |
| | border-radius: 20px; |
| | font-size: 0.8rem; |
| | font-weight: 600; |
| | display: inline-block; |
| | margin-top: 5px; |
| | border: 1px solid #e2e8f0; |
| | } |
| |
|
| | |
| | .stTabs [data-baseweb="tab-list"] { |
| | gap: 20px; |
| | background-color: transparent; |
| | } |
| |
|
| | .stTabs [data-baseweb="tab"] { |
| | height: 50px; |
| | white-space: pre-wrap; |
| | background-color: #f8fafc; |
| | border-radius: 8px 8px 0px 0px; |
| | gap: 1px; |
| | padding-left: 20px; |
| | padding-right: 20px; |
| | font-weight: 600; |
| | } |
| |
|
| | .stTabs [aria-selected="true"] { |
| | background-color: #3b82f6 !important; |
| | color: white !important; |
| | } |
| |
|
| | |
| | .logo-container { |
| | text-align: center; |
| | padding: 1.5rem; |
| | background: linear-gradient(135deg, #1e293b 0%, #334155 100%); |
| | border-radius: 12px; |
| | margin-bottom: 1.5rem; |
| | border: 1px solid #475569; |
| | } |
| |
|
| | .logo-text { |
| | font-size: 1.6rem; |
| | font-weight: 700; |
| | color: #f8fafc; |
| | margin: 0.5rem 0; |
| | } |
| |
|
| | .logo-subtitle { |
| | font-size: 0.8rem; |
| | color: #94a3b8; |
| | font-weight: 500; |
| | } |
| |
|
| | |
| |
|
| | |
| | [data-testid="stMetric"] { |
| | background: var(--card-bg); |
| | padding: var(--space-md) !important; |
| | border-radius: 8px !important; |
| | box-shadow: var(--shadow-sm); |
| | border: 1px solid var(--border-color) !important; |
| | margin-bottom: var(--space-sm); |
| | backdrop-filter: blur(10px); |
| | transition: all 0.2s ease; |
| | } |
| |
|
| | [data-testid="stMetric"]:hover { |
| | box-shadow: var(--shadow-md); |
| | transform: translateY(-1px); |
| | } |
| |
|
| | [data-testid="stMetricValue"] { |
| | font-size: var(--text-xl) !important; |
| | font-weight: 700 !important; |
| | color: var(--primary-color) !important; |
| | line-height: 1.2; |
| | } |
| |
|
| | [data-testid="stMetricLabel"] { |
| | font-size: var(--text-sm) !important; |
| | color: var(--text-muted) !important; |
| | font-weight: 500; |
| | } |
| |
|
| | |
| | .stColumn { |
| | padding: var(--space-xs) !important; |
| | } |
| |
|
| | |
| | @media (max-width: 768px) { |
| | |
| | section[data-testid="stSidebar"] { |
| | width: 100% !important; |
| | max-width: 100% !important; |
| | position: fixed !important; |
| | top: 0 !important; |
| | left: -100% !important; |
| | height: 100vh !important; |
| | z-index: 1000 !important; |
| | transition: left 0.3s ease !important; |
| | background: rgba(15, 23, 42, 0.98) !important; |
| | backdrop-filter: blur(10px); |
| | } |
| | |
| | section[data-testid="stSidebar"] > div { |
| | padding: var(--space-lg) !important; |
| | overflow-y: auto !important; |
| | height: 100% !important; |
| | } |
| | |
| | |
| | .mobile-menu-toggle { |
| | position: fixed !important; |
| | top: var(--space-md) !important; |
| | left: var(--space-md) !important; |
| | z-index: 1001 !important; |
| | background: var(--primary-color) !important; |
| | color: white !important; |
| | border: none !important; |
| | border-radius: 8px !important; |
| | padding: var(--space-sm) var(--space-md) !important; |
| | font-size: var(--text-sm) !important; |
| | font-weight: 600 !important; |
| | box-shadow: var(--shadow-md) !important; |
| | cursor: pointer !important; |
| | } |
| | |
| | |
| | .main-content { |
| | margin-top: 70px !important; |
| | padding: var(--space-md) !important; |
| | } |
| | |
| | |
| | [data-testid="column"] { |
| | width: 100% !important; |
| | flex: none !important; |
| | margin-bottom: var(--space-md) !important; |
| | } |
| | |
| | |
| | .stPlotlyChart { |
| | height: 300px !important; |
| | margin-bottom: var(--space-lg) !important; |
| | } |
| | |
| | |
| | .main-header h1 { |
| | font-size: var(--text-xl) !important; |
| | } |
| | |
| | .main-header p { |
| | font-size: var(--text-xs) !important; |
| | } |
| | } |
| |
|
| | |
| | @media (min-width: 769px) and (max-width: 1024px) { |
| | .main-content { |
| | padding: var(--space-lg) !important; |
| | } |
| | |
| | .stPlotlyChart { |
| | height: 400px !important; |
| | } |
| | |
| | [data-testid="stMetric"] { |
| | padding: var(--space-lg) !important; |
| | } |
| | } |
| |
|
| | |
| | @media (min-width: 1025px) { |
| | .main-content { |
| | padding: var(--space-xl) !important; |
| | } |
| | |
| | .stPlotlyChart { |
| | height: 500px !important; |
| | } |
| | |
| | |
| | [data-testid="stMetric"]:hover { |
| | transform: translateY(-2px); |
| | box-shadow: var(--shadow-lg); |
| | } |
| | } |
| |
|