diff --git a/visualization_ui/css/components.css b/visualization_ui/css/components.css new file mode 100644 index 0000000..5b49936 --- /dev/null +++ b/visualization_ui/css/components.css @@ -0,0 +1,141 @@ +:root { + --primary: #2a73cc; + --secondary: #f4f7fb; + --accent: #e2eaff; + --text-color: #222; + --text-muted: #666; + --border-radius: 6px; + --spacing-xs: 0.25rem; + --spacing-sm: 0.5rem; + --spacing-md: 1rem; + --spacing-lg: 1.5rem; + --shadow-level-1: 0 1px 3px rgba(0,0,0,0.1); + --shadow-level-2: 0 3px 6px rgba(0,0,0,0.15); +} + +/* ============================== + Dashboard Panels +============================== */ + +.alert-dashboard { + display: grid; + grid-template-columns: 1fr; + gap: var(--spacing-lg); + padding: var(--spacing-md); + background-color: var(--secondary); + min-height: 100vh; +} + +@media (min-width: 768px) { + .alert-dashboard { + grid-template-columns: 2fr 1fr; + } +} + +.panel { + background-color: #fff; + border-radius: var(--border-radius); + box-shadow: var(--shadow-level-1); + padding: var(--spacing-md); + transition: box-shadow 0.2s ease, transform 0.2s ease; +} + +.panel:hover { + box-shadow: var(--shadow-level-2); + transform: translateY(-2px); +} + +.summary-panel { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + color: var(--text-color); + background: var(--accent); + font-size: 0.95rem; + line-height: 1.4; +} + +.summary-panel__title { + font-weight: 600; + margin-bottom: var(--spacing-sm); + color: var(--primary); +} + +.summary-panel__item { + margin-bottom: var(--spacing-xs); + color: var(--text-muted); +} + +/* ============================== + Controls and Buttons +============================== */ + +.filter-control { + display: flex; + align-items: center; + gap: var(--spacing-sm); + margin-bottom: var(--spacing-md); +} + +.filter-control label { + font-size: 0.9rem; + color: var(--text-color); +} + +.filter-control select, +.filter-control input[type="text"] { + padding: var(--spacing-sm); + border-radius: var(--border-radius); + border: 1px solid #ccc; + background-color: #fff; + font-size: 0.9rem; + color: var(--text-color); +} + +.refresh-button { + padding: var(--spacing-sm) var(--spacing-md); + background-color: var(--primary); + color: #fff; + border: none; + border-radius: var(--border-radius); + cursor: pointer; + font-size: 0.95rem; + font-weight: 500; + box-shadow: var(--shadow-level-1); + transition: background-color 0.2s ease, box-shadow 0.2s ease; +} + +.refresh-button:hover { + background-color: darken(var(--primary), 10%); + box-shadow: var(--shadow-level-2); +} + +.refresh-button:disabled { + opacity: 0.6; + cursor: not-allowed; + box-shadow: none; +} + +/* ============================== + Responsive Adjustments +============================== */ + +@media (min-width: 1024px) { + .alert-dashboard { + grid-template-columns: repeat(3, 1fr); + } +} + +footer { + text-align: center; + font-size: 0.8rem; + margin-top: var(--spacing-lg); + color: var(--text-muted); +} + +footer::after { + content: "© 2026 Donau2Space.de"; + display: block; + margin-top: var(--spacing-sm); +} \ No newline at end of file