/* Global SDG Tracker AI - Mobile First Layout System (2025 Edition) */ :root { /* Colors */ --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); /* Spacing */ --space-xs: 0.25rem; --space-sm: 0.5rem; --space-md: 1rem; --space-lg: 1.5rem; --space-xl: 2rem; --space-2xl: 3rem; /* Typography */ --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; /* Breakpoints */ --breakpoint-sm: 640px; --breakpoint-md: 768px; --breakpoint-lg: 1024px; --breakpoint-xl: 1280px; } /* Mobile First Header Sections */ .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; } /* Tablet and Desktop Adjustments */ @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; } } /* Metric Cards */ [data-testid="stMetricValue"] { font-size: 2.2rem !important; font-weight: 700 !important; color: var(--primary-color) !important; } /* Default Metric Cards */ [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; } /* Enhanced Sidebar Styling */ 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); } /* Sidebar Metric Cards - Enhanced Dark Theme */ 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); } /* Sidebar Metric Values - Enhanced Contrast */ 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; } /* Sidebar Metric Labels */ 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; } /* Sidebar Info Boxes */ 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); } /* Enhanced Sidebar Styling */ section[data-testid="stSidebar"] { background-color: #0f172a !important; color: white !important; border-right: 1px solid rgba(255, 255, 255, 0.1); } /* Sidebar Enhanced Text Styling */ 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); } /* Enhanced Sidebar Form Elements */ 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; } /* Input Fields */ 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; } /* Enhanced Sidebar Buttons */ 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); } /* Secondary buttons */ 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; } /* Data Source Badge */ .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; } /* Tab Styling */ .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 */ .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; } /* Enhanced Mobile Responsive Design */ /* Mobile First Metric Cards */ [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; } /* Mobile Responsive Grid */ .stColumn { padding: var(--space-xs) !important; } /* Mobile Sidebar Enhancements */ @media (max-width: 768px) { /* Hide sidebar by default on mobile */ 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 button */ .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; } /* Adjust main content for mobile */ .main-content { margin-top: 70px !important; padding: var(--space-md) !important; } /* Stack metric cards on mobile */ [data-testid="column"] { width: 100% !important; flex: none !important; margin-bottom: var(--space-md) !important; } /* Mobile chart containers */ .stPlotlyChart { height: 300px !important; margin-bottom: var(--space-lg) !important; } /* Mobile text adjustments */ .main-header h1 { font-size: var(--text-xl) !important; } .main-header p { font-size: var(--text-xs) !important; } } /* Tablet Optimizations */ @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; } } /* Desktop Optimizations */ @media (min-width: 1025px) { .main-content { padding: var(--space-xl) !important; } .stPlotlyChart { height: 500px !important; } /* Enhanced hover effects on desktop */ [data-testid="stMetric"]:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); } }