From ebdccab0a77c9085d681e4917501a0653ee03200 Mon Sep 17 00:00:00 2001 From: Mika Date: Mon, 16 Mar 2026 13:59:08 +0000 Subject: [PATCH] Add data_visualization/css/components.css --- data_visualization/css/components.css | 151 ++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 data_visualization/css/components.css diff --git a/data_visualization/css/components.css b/data_visualization/css/components.css new file mode 100644 index 0000000..aa5643f --- /dev/null +++ b/data_visualization/css/components.css @@ -0,0 +1,151 @@ +:root { + --primary: #004d7a; + --accent: #009688; + --background: #f5f7fa; + --surface: #ffffff; + --text-primary: #222; + --text-secondary: #666; + --border-color: #ddd; + --radius-md: 8px; + --spacing-sm: 0.5rem; + --spacing-md: 1rem; + --spacing-lg: 2rem; + --shadow-md: 0 2px 6px rgba(0, 0, 0, 0.1); +} + +/* ============================= + Cards & Panels + ============================= */ +.card { + background-color: var(--surface); + border: 1px solid var(--border-color); + border-radius: var(--radius-md); + box-shadow: var(--shadow-md); + padding: var(--spacing-md); + margin-bottom: var(--spacing-lg); + color: var(--text-primary); + transition: box-shadow 0.2s ease, transform 0.2s ease; +} + +.card:hover { + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15); + transform: translateY(-2px); +} + +.chart-panel { + display: flex; + flex-direction: column; + align-items: stretch; + justify-content: flex-start; + background-color: var(--surface); + border: 1px solid var(--border-color); + border-radius: var(--radius-md); + box-shadow: var(--shadow-md); + padding: var(--spacing-md); + height: 100%; + overflow: hidden; +} + +.chart-panel__header { + font-size: 1.1rem; + font-weight: 600; + color: var(--text-primary); + margin-bottom: var(--spacing-sm); +} + +.chart-panel__body { + flex: 1; + position: relative; +} + +/* ============================= + Filter Panel + ============================= */ +.filter-panel { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: var(--spacing-sm); + background-color: var(--surface); + padding: var(--spacing-md); + border: 1px solid var(--border-color); + border-radius: var(--radius-md); + box-shadow: var(--shadow-md); +} + +.filter-panel label { + font-weight: 500; + color: var(--text-secondary); + margin-right: var(--spacing-sm); +} + +.filter-panel select, +.filter-panel input[type="text"], +.filter-panel input[type="number"] { + border: 1px solid var(--border-color); + border-radius: var(--radius-md); + padding: 0.4rem 0.6rem; + font-size: 0.9rem; + background-color: var(--background); + color: var(--text-primary); + transition: border-color 0.2s; +} + +.filter-panel select:focus, +.filter-panel input:focus { + border-color: var(--accent); + outline: none; +} + +.filter-panel button { + background-color: var(--accent); + color: #fff; + border: none; + border-radius: var(--radius-md); + padding: 0.5rem 1rem; + cursor: pointer; + transition: background-color 0.2s ease; +} + +.filter-panel button:hover { + background-color: #00796b; +} + +/* ============================= + Charts Container + ============================= */ +.charts-container { + display: grid; + grid-template-columns: 1fr; + gap: var(--spacing-lg); + width: 100%; + margin-top: var(--spacing-lg); +} + +@media (min-width: 768px) { + .charts-container { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (min-width: 1200px) { + .charts-container { + grid-template-columns: repeat(3, 1fr); + } +} + +/* ============================= + Footer Branding + ============================= */ +.footer { + text-align: center; + padding: var(--spacing-md); + color: var(--text-secondary); + font-size: 0.85rem; + border-top: 1px solid var(--border-color); + margin-top: var(--spacing-lg); +} + +.footer__copyright::before { + content: "© 2026 Donau2Space.de"; +} \ No newline at end of file