/* Lab Bench · Lab 3 (k from a spring). Builds on lab-bench.css. */
.sp-workspace{grid-template-columns:270px minmax(0,1.3fr) 330px}
.sp-pick{border:0;margin:0;padding:14px 18px 4px;display:grid;gap:8px}
.sp-pick legend,.sp-sub{font-weight:650;font-size:calc(14.5px * var(--ts, 1));margin:0 0 6px;padding:0}
.sp-pick label{display:flex;align-items:center;gap:8px;font-size:calc(15px * var(--ts, 1));cursor:pointer}
.sp-pick input{accent-color:var(--teal);width:17px;height:17px}
.sp-swatch{display:inline-block;width:14px;height:14px;border-radius:3px}
.sp-masses{padding:10px 18px 4px}
.sp-mass-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.sp-mass{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid #dbe4dd;border-radius:8px;padding:7px 9px;background:#fbfcfa;font-size:calc(14.5px * var(--ts, 1))}
.sp-mass.on{background:#eef7ef;border-color:#9cc9b0}
.sp-mass button{font:inherit;font-size:calc(13.5px * var(--ts, 1));padding:5px 10px;border:1px solid #c7d6cc;border-radius:6px;background:white;white-space:nowrap}
.sp-total{margin:10px 0 4px;font-size:calc(15px * var(--ts, 1));line-height:1.5}
.sp-sensor-pick{padding:8px 18px 16px;font-size:calc(14.5px * var(--ts, 1))}
.lb-bad-text{color:#9a4a1b}.lb-good-text{color:#246b43}
.sp-pull{padding-bottom:4px}.sp-pull label{font-weight:600}.sp-pull select{font:inherit;font-size:calc(14px * var(--ts, 1))}
.sp-bench .run-message{padding:6px 18px 14px;margin:0}
.sp-block{border-top:1px solid #edf0ec}
.sp-mass-in{padding-bottom:6px}
/* the stand */
.sp-pointer{stroke:#c24c2a;stroke-width:2}.sp-pointer-big{stroke-width:3}.sp-pointer-tip{fill:#c24c2a}
.sp-plate{fill:#3c4a46}.sp-slot{stroke:#3c4a46;stroke-width:.8}
.sp-slot-50{fill:#b9c2c8}.sp-slot-100{fill:#8f9aa3}.sp-slot-200{fill:#6b767e}
.sp-hanger-lab{font-size:14px;fill:#3c4a46;text-anchor:end}
.sp-peg-lab{font-size:15px;font-weight:700;fill:#56635f;text-anchor:middle}
.sp-unit{font-size:15px;font-weight:600;fill:#4d4114}
.sp-sensor-box{fill:#1f6b5e}.sp-sensor-eye{fill:#9ff0c4;stroke:#1f6b5e;stroke-width:2}
.sp-sensor-lab{font-size:14px;fill:#3c4a46}
.sp-beam{stroke:#1f6b5e;stroke-width:1.2;stroke-dasharray:4 4;fill:none;opacity:.7}
.sp-loupe-blur{font-size:26px;font-weight:700;fill:#56635f;text-anchor:middle}
/* motion sensor */
.sp-sensor{margin-top:18px}
.sp-sensor-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:12px 18px;align-items:start;padding-bottom:12px}
.sp-graph{display:block;width:calc(100% - 20px);height:auto;margin:10px 10px 4px;cursor:crosshair;touch-action:none}
.sp-graph:focus{outline:none}.sp-graph:focus-visible{outline:3px solid #ba622e;outline-offset:2px}
.sp-plot-bg{fill:#fbfcfa;stroke:#dfe7e1}
.sp-tick{font-size:14px;fill:#56635f;text-anchor:middle}.sp-tick-y{text-anchor:end}
.sp-axis{font-size:15px;fill:#3c4a46;text-anchor:middle}
.sp-trace{fill:none;stroke:#1f6b5e;stroke-width:1.8;stroke-linejoin:round}
.sp-cursor{stroke-width:2}.sp-cursor-dot{stroke:white;stroke-width:1.5}.sp-cursor-lab{font-size:15px;font-weight:700}
line.sp-cursor-a{stroke:#ba622e}circle.sp-cursor-a,text.sp-cursor-a{fill:#ba622e}
line.sp-cursor-b{stroke:#2f6db5}circle.sp-cursor-b,text.sp-cursor-b{fill:#2f6db5}
.sp-cursor-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.sp-readout{font-size:calc(15px * var(--ts, 1));font-variant-numeric:tabular-nums;margin:10px 0 0;line-height:1.6}
.sp-sensor-rec{padding-top:14px}
/* notebook and analysis */
.sp-progress{list-style:none;margin:10px 0 0;display:grid;gap:4px;font-size:calc(14.5px * var(--ts, 1))}
.sp-progress li::before{content:'☐';margin-right:8px;color:var(--muted)}
.sp-progress li.done{color:#2f7d4f}.sp-progress li.done::before{content:'☑';color:#2f7d4f}
.sp-nb-btns{padding-bottom:16px}
.sp-table th:nth-child(3),.sp-table td:nth-child(3){text-align:left}
.sp-analysis{margin-top:18px}
.sp-graphs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px;padding:8px 8px 14px}
.sp-graph-box svg{width:100%;height:auto;display:block;padding:8px 10px 0}
.sp-graph-box .lb-explain{margin:12px 18px 0}
.sp-result{margin-top:18px}
.sp-res-form{display:grid;gap:10px;max-width:760px}
.sp-res-form>label{font-weight:600}
.sp-res-form select{font:inherit;font-size:calc(15px * var(--ts, 1));max-width:260px}
.sp-res-form .lb-result-row>span:first-child{min-width:150px}
.sp-res-table th,.sp-res-table td{text-align:left}
@media(max-width:1200px){.sp-workspace{grid-template-columns:260px minmax(0,1fr)}.sp-sensor-grid{grid-template-columns:1fr}}
@media(max-width:900px){.sp-graphs{grid-template-columns:1fr}}
@media(max-width:760px){.sp-workspace{grid-template-columns:1fr}.sp-res-form .lb-result-row{flex-wrap:wrap}}
.sp button.lb-big{background:#a8551f;border-color:#a8551f}
.sp-marker{cursor:ns-resize;outline:none}
.sp-marker-line{stroke:#ba622e;stroke-width:1.6;stroke-dasharray:6 4}
.sp-marker-hit{fill:transparent}
.sp-marker-block{fill:#ba622e;stroke:#7a3b16;stroke-width:1}
.sp-marker-grip{stroke:#fff;stroke-width:1.4}
.sp-marker:focus-visible .sp-marker-block{stroke:#243d3b;stroke-width:3}
.sp-marker:focus-visible .sp-marker-line{stroke-width:2.6}
.sp-marker-help{padding:8px 18px 0;margin:0}
.sp-grid-minor{stroke:#e6ece7;stroke-width:1}.sp-grid-major{stroke:#d9e1dc;stroke-width:1.2}
.sp-tick-half{fill:#7a8581;font-size:13px}
.sp .lb-countdown{align-items:flex-end;justify-content:flex-start;padding:0 0 16% 22%}
.sp-grab{fill:transparent;cursor:grab}.sp-grab.held{cursor:grabbing}
.sp-pull-lab{font-size:15px;font-weight:700;fill:#ba622e;text-anchor:end;paint-order:stroke;stroke:#fff;stroke-width:4px}
