:root { --primary: #2d7df4; --primary-light: #e8f1fe; --accent: #f4a261; --bg: #ffffff; --bg-alt: #f7f9fc; --text: #1d1f21; --text-muted: #6c757d; --border: #d0d7de; --radius-md: 4px; --spacing-xs: 0.25rem; --spacing-sm: 0.5rem; --spacing-md: 1rem; --spacing-lg: 2rem; --font-base: 'system-ui', sans-serif; --transition-fast: 0.2s ease; } /* =============================================== */ /* Charts & Panels */ /* =============================================== */ .chart-panel { background-color: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-md); padding: var(--spacing-md); margin-bottom: var(--spacing-lg); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); display: flex; flex-direction: column; gap: var(--spacing-md); } .bandwidth-chart, .retry-tailp99-chart { width: 100%; height: 280px; display: flex; justify-content: center; align-items: center; background: var(--bg-alt); border-radius: var(--radius-md); position: relative; } .bandwidth-chart canvas, .retry-tailp99-chart canvas { width: 100%; height: 100%; } .chart-panel__title { font-weight: 600; font-size: 1.1rem; color: var(--text); margin-bottom: var(--spacing-sm); } .chart-panel__description { font-size: 0.9rem; color: var(--text-muted); } /* =============================================== */ /* Filters & Sidebar */ /* =============================================== */ .filter-panel { display: flex; flex-wrap: wrap; background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-md); padding: var(--spacing-md); gap: var(--spacing-md); align-items: center; } .filter-panel label { font-weight: 500; color: var(--text); font-size: 0.95rem; } .filter-panel select, .filter-panel input[type="text"], .filter-panel input[type="number"] { border: 1px solid var(--border); border-radius: var(--radius-md); padding: var(--spacing-xs) var(--spacing-sm); font-size: 0.95rem; color: var(--text); background: var(--bg); transition: border-color var(--transition-fast); } .filter-panel select:focus, .filter-panel input:focus { outline: none; border-color: var(--primary); } .sidebar { display: flex; flex-direction: column; gap: var(--spacing-md); padding: var(--spacing-md); background: var(--bg-alt); border-right: 1px solid var(--border); min-width: 220px; } .sidebar__group { display: flex; flex-direction: column; gap: var(--spacing-sm); } .sidebar__title { font-size: 1rem; font-weight: 600; color: var(--text); margin-bottom: var(--spacing-xs); } /* =============================================== */ /* Tables */ /* =============================================== */ .data-table, .results-table { width: 100%; border-collapse: collapse; font-size: 0.95rem; font-family: var(--font-base); margin-top: var(--spacing-md); border: 1px solid var(--border); } table.data-table th, table.results-table th { text-align: left; background: var(--primary-light); color: var(--text); padding: var(--spacing-sm); border-bottom: 1px solid var(--border); font-weight: 600; } table.data-table td, table.results-table td { padding: var(--spacing-sm); border-bottom: 1px solid var(--border); color: var(--text); } table.data-table tr:nth-child(even), table.results-table tr:nth-child(even) { background: var(--bg-alt); } table.data-table tr:hover, table.results-table tr:hover { background: var(--primary-light); } /* Responsive Behaviour */ @media (max-width: 768px) { .chart-panel { padding: var(--spacing-sm); } .filter-panel { flex-direction: column; align-items: stretch; } .sidebar { display: none; } table.data-table, table.results-table { font-size: 0.85rem; } } /* Footer */ footer { text-align: center; font-size: 0.8rem; color: var(--text-muted); padding: var(--spacing-md); } footer::after { content: "© 2026 Donau2Space.de"; display: block; margin-top: var(--spacing-xs); }