diff --git a/visualization_tool/css/layout.css b/visualization_tool/css/layout.css new file mode 100644 index 0000000..15c578b --- /dev/null +++ b/visualization_tool/css/layout.css @@ -0,0 +1,150 @@ +: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); +} \ No newline at end of file