diff --git a/spike_visualizer/css/components.css b/spike_visualizer/css/components.css new file mode 100644 index 0000000..7b19b53 --- /dev/null +++ b/spike_visualizer/css/components.css @@ -0,0 +1,166 @@ +/* ============================ + Filter Panel + ============================ */ + +.filter-panel { + display: flex; + flex-wrap: wrap; + gap: 1rem; + align-items: center; + background-color: #f4f4f4; + border-bottom: 1px solid #ccc; + padding: 0.75rem 1.25rem; +} + +.filter-label { + font-weight: 600; + color: #333; + margin-right: 0.25rem; +} + +.filter-control { + padding: 0.4rem 0.6rem; + border-radius: 4px; + border: 1px solid #bbb; + background-color: #fff; + transition: border-color 0.2s ease, background-color 0.2s ease; +} + +.filter-control:hover, +.filter-control:focus { + border-color: #888; + background-color: #f9f9f9; + outline: none; +} + +/* ============================ + Chart Container + ============================ */ + +.chart-container { + position: relative; + flex: 1; + min-height: 400px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 6px; + overflow: hidden; + margin-top: 1rem; +} + +.d3-chart { + width: 100%; + height: 100%; + cursor: crosshair; +} + +.tooltip { + position: absolute; + pointer-events: none; + background-color: rgba(50, 50, 50, 0.9); + color: #fff; + padding: 0.5rem 0.75rem; + border-radius: 4px; + font-size: 0.875rem; + line-height: 1.2; + z-index: 10; + opacity: 0; + transition: opacity 0.15s ease; +} + +.tooltip.visible { + opacity: 1; +} + +/* ============================ + Tabellen- & Summary-Stile + ============================ */ + +.spike-table { + width: 100%; + border-collapse: collapse; + margin-top: 1rem; + font-size: 0.9rem; +} + +.spike-table th, +.spike-table td { + padding: 0.5rem 0.75rem; + text-align: left; + border-bottom: 1px solid #ddd; +} + +.spike-table th { + background-color: #f0f0f0; + font-weight: 600; +} + +.spike-table tr:hover { + background-color: #fafafa; +} + +.metric-summary { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + gap: 1rem; + margin-top: 1.5rem; + padding: 0.75rem 1rem; + background-color: #f9f9f9; + border: 1px solid #ddd; + border-radius: 4px; +} + +.metric-summary .metric-item { + flex: 1; + min-width: 120px; +} + +.metric-summary .metric-label { + font-size: 0.85rem; + color: #555; +} + +.metric-summary .metric-value { + font-size: 1.1rem; + font-weight: 600; + color: #222; +} + +/* ============================ + Responsive Anpassungen + ============================ */ + +@media (max-width: 768px) { + .filter-panel { + flex-direction: column; + align-items: stretch; + } + + .chart-container { + min-height: 300px; + } + + .metric-summary { + flex-direction: column; + } +} + +/* ============================ + Footer Copyright + ============================ */ + +footer { + text-align: center; + font-size: 0.8rem; + color: #777; + margin-top: 2rem; + padding: 1rem 0; + border-top: 1px solid #ddd; +} + +footer::after { + content: "© 2026 Donau2Space.de"; + display: block; + margin-top: 0.5rem; +} \ No newline at end of file