From a0132aa58d896026966707025016a6445fec3e74 Mon Sep 17 00:00:00 2001 From: Mika Date: Sun, 3 May 2026 02:07:35 +0000 Subject: [PATCH] Add data_visualization/css/layout.css --- data_visualization/css/layout.css | 167 ++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 data_visualization/css/layout.css diff --git a/data_visualization/css/layout.css b/data_visualization/css/layout.css new file mode 100644 index 0000000..95e2790 --- /dev/null +++ b/data_visualization/css/layout.css @@ -0,0 +1,167 @@ +:root { + --color-bg: #f9fafb; + --color-surface: #ffffff; + --color-border: #d1d5db; + --color-primary: #1e3a8a; + --color-text: #111827; + --spacing-xs: 0.25rem; + --spacing-sm: 0.5rem; + --spacing-md: 1rem; + --spacing-lg: 2rem; + --spacing-xl: 4rem; + --radius-sm: 0.25rem; + --radius-md: 0.5rem; + --radius-lg: 1rem; + --font-base: 'system-ui', sans-serif; + --font-size-base: 1rem; + --font-size-sm: 0.875rem; + --font-size-lg: 1.25rem; + --container-max-width: 1200px; + --breakpoint-md: 640px; + --breakpoint-lg: 1024px; +} + +body { + margin: 0; + font-family: var(--font-base); + background-color: var(--color-bg); + color: var(--color-text); + line-height: 1.5; +} + +/* ===================================== + layout_shell + ===================================== */ +.app-shell { + display: flex; + flex-direction: column; + min-height: 100vh; + max-width: var(--container-max-width); + margin: 0 auto; + padding: var(--spacing-md); + box-sizing: border-box; +} + +/* ===================================== + filter_panel + ===================================== */ +.filter-panel { + display: flex; + flex-wrap: wrap; + gap: var(--spacing-sm); + justify-content: flex-start; + align-items: center; + background-color: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + padding: var(--spacing-md); + margin-bottom: var(--spacing-lg); +} + +.filter-panel label { + font-size: var(--font-size-sm); + font-weight: 500; + margin-right: var(--spacing-xs); +} + +.filter-panel select, +.filter-panel input { + padding: var(--spacing-xs) var(--spacing-sm); + border: 1px solid var(--color-border); + border-radius: var(--radius-sm); + font-size: var(--font-size-sm); + background-color: var(--color-surface); +} + +/* ===================================== + chart_container + ===================================== */ +.chart-container { + position: relative; + width: 100%; + background-color: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + padding: var(--spacing-md); + box-sizing: border-box; + margin-bottom: var(--spacing-lg); +} + +.chart-container canvas { + width: 100%; + height: auto; + max-height: 400px; +} + +/* ===================================== + summary_cards + ===================================== */ +.summary-cards { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: var(--spacing-md); + margin-bottom: var(--spacing-lg); +} + +.summary-cards .card { + background-color: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + padding: var(--spacing-md); + text-align: center; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.summary-cards .card__title { + font-size: var(--font-size-sm); + color: var(--color-primary); + margin-bottom: var(--spacing-xs); +} + +.summary-cards .card__value { + font-size: var(--font-size-lg); + font-weight: bold; +} + +/* ===================================== + Responsiveness + ===================================== */ +@media (min-width: 640px) { + .filter-panel { + justify-content: space-between; + } + + .chart-container canvas { + max-height: 500px; + } +} + +@media (min-width: 1024px) { + .chart-container canvas { + max-height: 600px; + } +} + +/* Footer */ +footer { + text-align: center; + font-size: var(--font-size-sm); + color: var(--color-text); + margin-top: auto; + padding: var(--spacing-md); + border-top: 1px solid var(--color-border); +} + +footer p { + margin: 0; +} + +footer small { + font-size: var(--font-size-sm); +} + +footer small::before { + content: '© 2026 Donau2Space.de'; + display: block; + margin-bottom: var(--spacing-xs); +} \ No newline at end of file