:root { --color-bg: #f9fafb; --color-surface: #ffffff; --color-primary: #2b6cb0; --color-accent: #3182ce; --color-border: #e2e8f0; --color-text: #1a202c; --spacing-xs: 0.25rem; --spacing-sm: 0.5rem; --spacing-md: 1rem; --spacing-lg: 2rem; --font-base: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; --radius-sm: 4px; --radius-md: 6px; --max-width: 1200px; } /* ============================= Header & Footer ============================= */ .app-header, .app-footer { background-color: var(--color-surface); color: var(--color-text); padding: var(--spacing-md) var(--spacing-lg); border-bottom: 1px solid var(--color-border); display: flex; align-items: center; justify-content: space-between; } .app-header { position: sticky; top: 0; z-index: 1000; } .app-footer { border-top: 1px solid var(--color-border); border-bottom: none; justify-content: center; font-size: 0.9rem; text-align: center; } /* ============================= Main Dashboard Layout ============================= */ .app-main { flex: 1; background-color: var(--color-bg); padding: var(--spacing-md); display: flex; flex-direction: column; align-items: center; } .metrics-dashboard { width: 100%; max-width: var(--max-width); display: grid; grid-template-columns: 1fr; gap: var(--spacing-lg); } /* ============================= Section Panels ============================= */ .charts-section, .metrics-table { background-color: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: var(--spacing-md); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); } .charts-section { display: flex; flex-direction: column; gap: var(--spacing-md); } .metrics-table { overflow-x: auto; } /* ============================= Filter Controls ============================= */ .filter-controls { display: flex; align-items: center; justify-content: flex-end; gap: var(--spacing-sm); margin-bottom: var(--spacing-md); } .filter-controls button { background-color: var(--color-primary); color: #fff; border: none; border-radius: var(--radius-sm); padding: var(--spacing-sm) var(--spacing-md); cursor: pointer; transition: background-color 0.2s ease; } .filter-controls button:hover, .filter-controls button:focus { background-color: var(--color-accent); } .filter-controls button.active { background-color: var(--color-accent); font-weight: 600; } /* ============================= Responsive Design ============================= */ @media (min-width: 640px) { .metrics-dashboard { grid-template-columns: repeat(2, 1fr); } } @media (min-width: 1024px) { .metrics-dashboard { grid-template-columns: repeat(3, 1fr); } } /* ============================= Accessibility Helpers ============================= */ :focus { outline: 2px solid var(--color-accent); outline-offset: 2px; } /* ============================= Footer Copyright ============================= */ .app-footer::after { content: '© 2026 Donau2Space.de'; display: block; margin-top: var(--spacing-xs); color: var(--color-text); }