diff --git a/data_visualization/css/components.css b/data_visualization/css/components.css new file mode 100644 index 0000000..d5e19b3 --- /dev/null +++ b/data_visualization/css/components.css @@ -0,0 +1,141 @@ +:root { + --primary: #1e88e5; + --secondary: #81d4fa; + --background: #111; + --surface: #1b1b1b; + --text: #f0f0f0; + --accent: #ffca28; + --radius-md: 6px; + --spacing-xs: 0.25rem; + --spacing-sm: 0.5rem; + --spacing-md: 1rem; + --spacing-lg: 2rem; + --shadow-elevated: 0 2px 8px rgba(0, 0, 0, 0.4); +} + +/* ===================== + Filter Panel + ===================== */ +.filter-panel { + display: flex; + flex-wrap: wrap; + gap: var(--spacing-sm); + align-items: center; + background-color: var(--surface); + padding: var(--spacing-md); + border-radius: var(--radius-md); + box-shadow: var(--shadow-elevated); + color: var(--text); +} + +.filter-input { + flex: 1; + min-width: 140px; + padding: var(--spacing-sm); + border: 1px solid var(--secondary); + border-radius: var(--radius-md); + background-color: #222; + color: var(--text); + font-size: 0.95rem; +} + +.filter-input:focus { + outline: none; + border-color: var(--accent); + box-shadow: 0 0 0 2px rgba(255, 202, 40, 0.3); +} + +.filter-button { + padding: var(--spacing-sm) var(--spacing-md); + background-color: var(--primary); + color: #fff; + border: none; + border-radius: var(--radius-md); + cursor: pointer; + transition: background-color 0.2s ease; +} + +.filter-button:hover, +.filter-button:focus { + background-color: var(--accent); + color: #000; +} + +/* ===================== + Chart Panel + ===================== */ +.chart-panel { + background-color: var(--surface); + border-radius: var(--radius-md); + box-shadow: var(--shadow-elevated); + padding: var(--spacing-lg) var(--spacing-md); + margin-top: var(--spacing-md); + overflow-x: auto; +} + +.summary-panel { + background-color: #212121; + border: 1px solid #333; + border-radius: var(--radius-md); + padding: var(--spacing-md); + margin-top: var(--spacing-md); + box-shadow: var(--shadow-elevated); + color: var(--text); +} + +.summary-panel h3 { + margin-top: 0; + color: var(--accent); + font-size: 1.1rem; +} + +/* ===================== + Tooltips + ===================== */ +.tooltip { + position: absolute; + background-color: rgba(0, 0, 0, 0.85); + color: var(--text); + padding: var(--spacing-xs) var(--spacing-sm); + border-radius: var(--radius-md); + font-size: 0.85rem; + line-height: 1.4; + pointer-events: none; + white-space: nowrap; + z-index: 1000; + transition: opacity 0.15s ease; +} + +.tooltip[data-visible="false"] { + opacity: 0; +} + +.tooltip[data-visible="true"] { + opacity: 1; +} + +/* ===================== + Responsive + ===================== */ +@media (min-width: 640px) { + .filter-panel { + flex-wrap: nowrap; + } +} + +/* ===================== + Footer (Copyright) + ===================== */ +footer { + text-align: center; + color: var(--text); + font-size: 0.8rem; + padding: var(--spacing-lg) 0; + opacity: 0.6; +} + +footer::after { + content: "© 2026 Donau2Space.de"; + display: block; + margin-top: var(--spacing-xs); +} \ No newline at end of file