:root { --color-bg: #f5f7fa; --color-primary: #1c6dd0; --color-secondary: #5e81ac; --color-text: #1a1a1a; --color-muted: #666; --spacing-xs: 0.25rem; --spacing-sm: 0.5rem; --spacing-md: 1rem; --spacing-lg: 2rem; --radius-sm: 4px; --radius-md: 8px; --font-base: 'Segoe UI', sans-serif; --max-width-content: 1200px; } /* ======================== */ /* Header and Toolbar */ /* ======================== */ .app-header { display: flex; justify-content: space-between; align-items: center; background-color: var(--color-bg); border-bottom: 1px solid #ddd; padding: var(--spacing-md); font-family: var(--font-base); } .app-header h1 { font-size: 1.25rem; color: var(--color-primary); margin: 0; } .filter-controls { display: flex; align-items: center; gap: var(--spacing-sm); } .filter-controls label { font-size: 0.9rem; color: var(--color-text); } .filter-controls select, .filter-controls input[type="date"] { border: 1px solid #ccc; border-radius: var(--radius-sm); padding: var(--spacing-xs) var(--spacing-sm); background-color: #fff; font-family: var(--font-base); } /* ======================== */ /* Dashboard and Charts */ /* ======================== */ .app-main { max-width: var(--max-width-content); margin: 0 auto; padding: var(--spacing-md); } .dashboard { display: grid; grid-template-columns: 1fr; gap: var(--spacing-lg); } .chart-panel { background-color: #fff; border: 1px solid #e0e0e0; border-radius: var(--radius-md); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); padding: var(--spacing-md); } .chart-panel h2 { font-size: 1rem; color: var(--color-secondary); margin-bottom: var(--spacing-sm); } .temperature-chart, .humidity-chart, .light-chart { width: 100%; height: 240px; } .chart-panel canvas { width: 100% !important; height: 100% !important; } /* ======================== */ /* Footer */ /* ======================== */ .app-footer { text-align: center; font-size: 0.85rem; color: var(--color-muted); padding: var(--spacing-md); border-top: 1px solid #ddd; background-color: var(--color-bg); } .app-footer small { display: block; margin-top: var(--spacing-xs); } /* ======================== */ /* Responsive Adjustments */ /* ======================== */ @media (min-width: 640px) { .dashboard { grid-template-columns: repeat(2, 1fr); } } @media (min-width: 1024px) { .dashboard { grid-template-columns: repeat(3, 1fr); } }