.block-params { gap: 12px; }
.param-group { display: grid; gap: 6px; min-width: 0; margin: 0; padding: 8px 0 0; border: 0; border-top: 1px solid var(--line); }
.param-group legend { padding: 0 6px 0 0; }
.param-row { display: grid; grid-template-areas: "label label label" "slider number unit"; grid-template-columns: minmax(0, 1fr) 64px 28px; align-items: center; gap: 2px 6px; }
.param-row > .t-label { grid-area: label; }
.param-row input[type="range"] { grid-area: slider; width: 100%; min-width: 0; accent-color: var(--accent); }
.param-row input[type="number"] { grid-area: number; width: 64px; }
.param-row > .t-addr { grid-area: unit; }
.param-select { grid-template-areas: "label" "select"; grid-template-columns: minmax(0, 1fr); }
.param-toggle { grid-template-areas: "box label"; grid-template-columns: auto minmax(0, 1fr); justify-content: start; gap: 8px; }
.param-toggle input { grid-area: box; margin: 0; }
.param-toggle .t-label { grid-area: label; }

.block-plot {
  display: grid; margin: 0; height: 132px;
  grid-template-areas: "y area" ". x" ". caption";
  grid-template-columns: 30px minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) 18px auto;
}
.block-plot-y, .block-plot-x { position: relative; }
.block-plot-y { grid-area: y; }
.block-plot-x { grid-area: x; }
.block-plot figcaption { grid-area: caption; }
.block-plot-y span { position: absolute; right: 4px; transform: translateY(-50%); }
.block-plot-x span { position: absolute; top: 4px; transform: translateX(-50%); }
.block-plot svg { grid-area: area; width: 100%; height: 100%; display: block; overflow: hidden; background: var(--well); }
.block-plot path { fill: none; stroke-width: 1; vector-effect: non-scaling-stroke; }
.block-plot .block-plot-grid { stroke: var(--line); }
.block-plot .block-plot-zero { stroke: var(--muted); }
.block-plot .block-plot-curve { stroke: var(--accent); stroke-width: 2; }
.block-plot .block-plot-curve-1 { stroke: var(--ink); }
.block-plot .block-plot-curve-2 { stroke: var(--muted); }
