svg{cursor:crosshair}.activePoint{stroke:var(--accent);stroke-width:2px;fill:none}.popup{background:var(--bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid var(--border);font-family:var(--font-geist-sans),system-ui,sans-serif;color:var(--fg);pointer-events:none;white-space:nowrap;border-radius:6px;padding:8px 12px;font-size:.85rem;line-height:1.4;box-shadow:0 4px 12px #0003}.popup-label{margin:2px 0}.popup-label strong{color:var(--fg);font-weight:600}figure.plot{flex-direction:column;align-items:center;max-width:calc(100vw - 2rem);margin:2rem auto;display:flex;left:50%;transform:translate(-50%)}figure.plot>svg{width:100%;height:100%}figure.plot>figcaption{text-align:center;color:var(--fg-muted);margin-top:1rem;font-size:.9rem}.plotWrapper{flex-direction:column;align-items:center;width:100%;margin:2rem 0;display:flex}.plotRect{stroke:var(--fg);stroke-width:1px}.gridLine{stroke:var(--border);stroke-width:1px}.legend-container{width:100%;font-family:var(--font-geist-sans),system-ui,sans-serif;justify-content:flex-end;gap:16px;margin-bottom:12px;padding-right:50px;font-size:.9rem;display:flex}.yLabel,.xLabel{fill:var(--fg-muted);font-size:.75rem}.legend-item{align-items:center;gap:6px;display:flex}.legend-swatch{border:1px solid var(--border);border-radius:2px;width:12px;height:12px}.legend-label{color:var(--fg-muted);font-weight:500}.axis-label{fill:var(--fg);font-family:var(--font-geist-sans),sans-serif;letter-spacing:.02em;font-size:.8rem;font-weight:600}
:root{--binary-search-stroke:#ef4444;--linear-search-stroke:#0f172a;--binary-search-predictable-stroke:#059669}[data-theme=dark]{--binary-search-stroke:#f87171;--linear-search-stroke:#94a3b8;--binary-search-predictable-stroke:#34d399}.legend-swatch.BinarySearchRandomTarget{background-color:var(--binary-search-stroke)}.legend-swatch.LinearSearch{background-color:var(--linear-search-stroke)}.legend-swatch.BinarySearchPredictableTarget{background-color:var(--binary-search-predictable-stroke)}.BinarySearchRandomTarget{stroke:var(--binary-search-stroke)}path.BinarySearchRandomTarget{fill:none}.LinearSearch{stroke:var(--linear-search-stroke)}path.LinearSearch{fill:none}.BinarySearchPredictableTarget{stroke:var(--binary-search-predictable-stroke)}path.BinarySearchPredictableTarget{fill:none}circle{fill:var(--plot-dot);stroke:var(--plot-dot)}
