diff --git a/web/client/src/components/AnalyticsPanel.css b/web/client/src/components/AnalyticsPanel.css index 7a749a4..55d3545 100644 --- a/web/client/src/components/AnalyticsPanel.css +++ b/web/client/src/components/AnalyticsPanel.css @@ -168,6 +168,174 @@ padding: 0.5rem 0.25rem 0.25rem; } +/* ===== Multi-line Scrollable Chart ===== */ +.multiline-chart-container { + position: relative; + width: 100%; + -webkit-user-select: none; + user-select: none; +} + +.multiline-chart-container.dragging { + cursor: grabbing; +} + +.multiline-chart-container:not(.dragging) { + cursor: crosshair; +} + +/* Tooltip */ +.chart-tooltip { + position: absolute; + background: #1a1a1acc; + border: 1px solid #555; + border-radius: 2px; + padding: 0.375rem 0.5rem; + pointer-events: none; + z-index: 30; + min-width: 100px; + -webkit-backdrop-filter: blur(4px); + backdrop-filter: blur(4px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.6); +} + +.chart-tooltip-time { + font-size: 0.5rem; + color: var(--mc-text-gray); + font-weight: 700; + margin-bottom: 0.25rem; + text-transform: uppercase; + letter-spacing: 0.04em; + border-bottom: 1px solid #333; + padding-bottom: 0.2rem; +} + +.chart-tooltip-row { + display: flex; + align-items: center; + gap: 0.3rem; + font-size: 0.5rem; + padding: 0.1rem 0; +} + +.chart-tooltip-dot { + width: 6px; + height: 6px; + border-radius: 50%; + flex-shrink: 0; +} + +.chart-tooltip-name { + color: var(--mc-text-gray); + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + max-width: 80px; +} + +.chart-tooltip-val { + color: var(--mc-text-white); + font-weight: 700; + text-shadow: 1px 1px 0 #000; +} + +/* Scrollbar */ +.chart-scrollbar { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.375rem 0 0.125rem; +} + +.chart-scrollbar-track { + flex: 1; + height: 6px; + background: #222; + border: 1px solid #333; + border-radius: 3px; + position: relative; + overflow: hidden; +} + +.chart-scrollbar-thumb { + position: absolute; + top: 0; + height: 100%; + background: linear-gradient(90deg, #555, #666); + border-radius: 3px; + transition: background 0.15s; + min-width: 12px; +} + +.chart-scrollbar-thumb:hover, +.multiline-chart-container.dragging .chart-scrollbar-thumb { + background: linear-gradient(90deg, #777, #888); +} + +.chart-scrollbar-hint { + font-size: 0.4rem; + color: #444; + text-transform: uppercase; + white-space: nowrap; + letter-spacing: 0.03em; +} + +/* ===== Tracked Items Chips Bar ===== */ +.tracked-items-bar { + display: flex; + flex-wrap: wrap; + gap: 0.375rem; + margin-bottom: 0.5rem; +} + +.tracked-chip { + display: flex; + align-items: center; + gap: 0.25rem; + padding: 0.2rem 0.4rem; + background: #2a2a2a; + border: 1px solid #555; + border-radius: 2px; + font-size: 0.5rem; + color: var(--mc-text-white); + transition: border-color 0.15s, background 0.15s; +} + +.tracked-chip:hover { + background: #333; +} + +.tracked-chip-dot { + width: 6px; + height: 6px; + border-radius: 50%; + flex-shrink: 0; +} + +.tracked-chip-name { + max-width: 80px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.tracked-chip-remove { + background: none; + border: none; + color: #666; + font-size: 0.55rem; + cursor: pointer; + padding: 0 0.15rem; + font-family: 'Silkscreen', monospace; + line-height: 1; + transition: color 0.15s; +} + +.tracked-chip-remove:hover { + color: var(--mc-text-red); +} + .svg-chart { display: block; width: 100%;