diff --git a/metric_visualization/css/layout.css b/metric_visualization/css/layout.css new file mode 100644 index 0000000..5e6a9f0 --- /dev/null +++ b/metric_visualization/css/layout.css @@ -0,0 +1,148 @@ +:root { + --primary: #2c7be5; + --background: #f9fafb; + --surface: #ffffff; + --text-color: #222; + --muted-text: #555; + --border-color: #e0e0e0; + --spacing-xs: 0.25rem; + --spacing-sm: 0.5rem; + --spacing-md: 1rem; + --spacing-lg: 2rem; + --radius-sm: 4px; + --radius-md: 8px; + --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1); + --shadow-md: 0 4px 8px rgba(0, 0, 0, 0.1); + --font-base: 16px; + --max-width: 1200px; +} + +body { + font-family: sans-serif; + font-size: var(--font-base); + background-color: var(--background); + color: var(--text-color); + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + min-height: 100vh; +} + +/* === app_structure === */ +.app-header { + background-color: var(--surface); + box-shadow: var(--shadow-sm); + padding: var(--spacing-md) var(--spacing-lg); + display: flex; + justify-content: space-between; + align-items: center; + position: sticky; + top: 0; + z-index: 10; +} + +.summary-section { + display: flex; + justify-content: space-between; + gap: var(--spacing-md); + flex-wrap: wrap; + max-width: var(--max-width); + margin: var(--spacing-lg) auto; + padding: 0 var(--spacing-md); +} + +.chart-area { + display: flex; + flex-direction: column; + gap: var(--spacing-md); + max-width: var(--max-width); + margin: 0 auto var(--spacing-lg); + padding: 0 var(--spacing-md); +} + +.data-table { + width: 100%; + border-collapse: collapse; + background-color: var(--surface); + box-shadow: var(--shadow-sm); + border-radius: var(--radius-sm); + overflow: hidden; +} + +.data-table th, +.data-table td { + padding: var(--spacing-sm) var(--spacing-md); + border-bottom: 1px solid var(--border-color); + text-align: left; +} + +.data-table th { + background-color: var(--background); + font-weight: bold; +} + +.app-footer { + margin-top: auto; + text-align: center; + padding: var(--spacing-md); + font-size: 0.875rem; + color: var(--muted-text); + background-color: var(--surface); + border-top: 1px solid var(--border-color); +} + +/* © 2026 Donau2Space.de */ + +/* === cards_and_panels === */ +.card-container { + display: flex; + flex-wrap: wrap; + gap: var(--spacing-md); + justify-content: center; +} + +.panel { + background-color: var(--surface); + border-radius: var(--radius-md); + box-shadow: var(--shadow-md); + padding: var(--spacing-md); + flex: 1 1 300px; +} + +.chart-panel { + background-color: var(--surface); + border-radius: var(--radius-md); + box-shadow: var(--shadow-md); + padding: var(--spacing-md); + display: flex; + flex-direction: column; + align-items: stretch; +} + +.chart-panel canvas { + width: 100%; + height: auto; +} + +/* === responsive_rules === */ +@media (max-width: 768px) { + .summary-section { + flex-direction: column; + align-items: stretch; + } + + .card-container { + flex-direction: column; + align-items: stretch; + } + + .chart-panel { + padding: var(--spacing-sm); + } + + .app-header { + flex-direction: column; + align-items: flex-start; + } +}