/* GraphView — scrolling wire-flood time-series for the séance board area. Tokens: bg #07070d · panel rgba(16,16,26,0.85) · phosphor #7cffb2 · violet #b26bff · radio orange #ff9d4a · mono 'IBM Plex Mono'. */ .graph-view { position: relative; width: 100%; height: 100%; min-height: 0; display: flex; flex-direction: column; background: rgba(16, 16, 26, 0.85); border: 1px solid rgba(124, 255, 178, 0.18); border-radius: 6px; overflow: hidden; filter: drop-shadow(0 0 18px rgba(7, 7, 13, 0.9)); } .graph-counters { display: flex; gap: 1.4rem; align-items: center; padding: 8px 14px; border-bottom: 1px solid rgba(124, 255, 178, 0.12); font-family: 'IBM Plex Mono', ui-monospace, Menlo, monospace; flex-shrink: 0; } .graph-counter { display: flex; align-items: baseline; gap: 0.5rem; white-space: nowrap; } .counter-key { font-size: 0.62rem; letter-spacing: 0.18em; color: rgba(211, 233, 219, 0.5); } .counter-val { font-size: 0.85rem; color: #7cffb2; text-shadow: 0 0 10px rgba(124, 255, 178, 0.55); } .counter-entity { color: #b26bff; text-shadow: 0 0 10px rgba(178, 107, 255, 0.55); } .graph-canvas-wrap { position: relative; flex: 1 1 auto; min-height: 0; } .graph-canvas-wrap canvas { position: absolute; inset: 0; cursor: crosshair; } .graph-listening { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); margin: 0; color: #b26bff; font-family: 'IBM Plex Mono', ui-monospace, Menlo, monospace; font-size: 0.78rem; letter-spacing: 0.22em; text-transform: uppercase; text-shadow: 0 0 12px rgba(178, 107, 255, 0.7); pointer-events: none; }