/* Framed-only M01 / M03 / M04 2D causal-flow family. */
body.study-framed-page .lab-v2-flow {
  --flow-live: var(--accent);
  --flow-output: var(--good);
  --flow-pile: var(--bad);
  --flow-energy: var(--warn);
}

body.study-framed-page .lab-v2-flow .lab-v2-workbench {
  grid-template-columns: minmax(0, 1.6fr) minmax(286px, .94fr);
}

body.study-framed-page .lab-v2-flow .flow-stage {
  isolation: isolate;
  background:
    linear-gradient(color-mix(in srgb, var(--border) 22%, transparent) 1px, transparent 1px),
    linear-gradient(90deg, color-mix(in srgb, var(--border) 22%, transparent) 1px, transparent 1px),
    var(--stage-panel);
  background-size: 28px 28px;
}

body.study-framed-page .lab-v2-flow .flow-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

body.study-framed-page .lab-v2-flow [data-flow-scene][hidden],
body.study-framed-page .lab-v2-flow .flow-drop[hidden] {
  display: none !important;
}

body.study-framed-page .lab-v2-flow .flow-kicker,
body.study-framed-page .lab-v2-flow .flow-label,
body.study-framed-page .lab-v2-flow .flow-value,
body.study-framed-page .lab-v2-flow .flow-station text,
body.study-framed-page .lab-v2-flow .flow-node text,
body.study-framed-page .lab-v2-flow .flow-complex text,
body.study-framed-page .lab-v2-flow .flow-oxygen text,
body.study-framed-page .lab-v2-flow .flow-pile text,
body.study-framed-page .lab-v2-flow .flow-lipoproteins text {
  font-family: "SFMono-Regular", Consolas, monospace;
  font-variant-numeric: tabular-nums;
}

body.study-framed-page .lab-v2-flow .flow-kicker {
  fill: var(--text-muted);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .08em;
}

body.study-framed-page .lab-v2-flow .flow-label {
  fill: var(--text-muted);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .05em;
}

body.study-framed-page .lab-v2-flow .flow-value {
  fill: var(--text);
  font-size: 11px;
  font-weight: 750;
}

body.study-framed-page .lab-v2-flow .flow-axis,
body.study-framed-page .lab-v2-flow .flow-half-line {
  fill: none;
  stroke: var(--border-strong);
  stroke-width: 1.25;
  vector-effect: non-scaling-stroke;
}

body.study-framed-page .lab-v2-flow .flow-half-line {
  opacity: .55;
  stroke-dasharray: 4 5;
}

body.study-framed-page .lab-v2-flow .flow-membrane,
body.study-framed-page .lab-v2-flow .flow-inner-membrane {
  fill: none;
  stroke: var(--border-strong);
  stroke-width: 7;
  stroke-dasharray: 3 7;
  stroke-linecap: round;
  vector-effect: non-scaling-stroke;
}

body.study-framed-page .lab-v2-flow .flow-nucleus {
  fill: color-mix(in srgb, var(--info) 8%, var(--stage-panel));
  stroke: var(--info);
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
}

body.study-framed-page .lab-v2-flow .flow-receptor path,
body.study-framed-page .lab-v2-flow .flow-enzyme,
body.study-framed-page .lab-v2-flow .flow-active-pocket,
body.study-framed-page .lab-v2-flow .flow-es-pocket {
  fill: color-mix(in srgb, var(--accent) 8%, var(--stage-panel));
  stroke: var(--text-muted);
  stroke-width: 4;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
  transition: stroke .18s ease, fill .18s ease;
}

body.study-framed-page .lab-v2-flow .flow-receptor.is-bound path {
  fill: color-mix(in srgb, var(--accent) 18%, var(--stage-panel));
  stroke: var(--accent);
}

body.study-framed-page .lab-v2-flow .flow-node circle,
body.study-framed-page .lab-v2-flow .flow-station rect,
body.study-framed-page .lab-v2-flow .flow-station circle,
body.study-framed-page .lab-v2-flow .flow-complex rect {
  fill: color-mix(in srgb, var(--accent) 7%, var(--stage-panel));
  stroke: var(--border-strong);
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
  transition: stroke .18s ease, fill .18s ease, opacity .18s ease;
}

body.study-framed-page .lab-v2-flow .flow-node text,
body.study-framed-page .lab-v2-flow .flow-station text,
body.study-framed-page .lab-v2-flow .flow-complex text,
body.study-framed-page .lab-v2-flow .flow-oxygen text {
  fill: var(--text);
  font-size: 11px;
  font-weight: 750;
  text-anchor: middle;
  dominant-baseline: middle;
}

body.study-framed-page .lab-v2-flow .flow-station .flow-sub,
body.study-framed-page .lab-v2-flow .flow-complex .flow-sub {
  fill: var(--text-muted);
  font-size: 8px;
  font-weight: 650;
}

body.study-framed-page .lab-v2-flow .flow-route,
body.study-framed-page .lab-v2-flow .flow-lactate-route,
body.study-framed-page .lab-v2-flow .flow-recycle,
body.study-framed-page .lab-v2-flow .flow-leak {
  fill: none;
  stroke: var(--border-strong);
  stroke-width: 4;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
  transition: stroke .18s ease, stroke-width .18s ease, opacity .18s ease;
}

body.study-framed-page .lab-v2-m03 .flow-route {
  marker-end: url("#m03-arrow");
}

body.study-framed-page .lab-v2-flow .flow-route.is-active,
body.study-framed-page .lab-v2-flow .flow-recycle.is-active {
  stroke: var(--flow-output);
  stroke-width: 6;
}

body.study-framed-page .lab-v2-flow .flow-lactate-route.is-active,
body.study-framed-page .lab-v2-flow .flow-leak {
  stroke: var(--flow-energy);
}

body.study-framed-page .lab-v2-flow .flow-arrow-head { fill: context-stroke; }

body.study-framed-page .lab-v2-flow .flow-particles,
body.study-framed-page .lab-v2-flow .flow-protons,
body.study-framed-page .lab-v2-flow .flow-pile,
body.study-framed-page .lab-v2-flow .flow-lipoproteins {
  transition: opacity .18s ease, transform .18s ease;
  transform-box: fill-box;
  transform-origin: center;
}

body.study-framed-page .lab-v2-flow .flow-particles circle,
body.study-framed-page .lab-v2-flow .flow-protons circle {
  fill: var(--flow-live);
  stroke: var(--stage-panel);
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
}

body.study-framed-page .lab-v2-flow .flow-pile circle {
  fill: color-mix(in srgb, var(--flow-pile) 28%, var(--stage-panel));
  stroke: var(--flow-pile);
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
}

body.study-framed-page .lab-v2-flow .flow-pile text,
body.study-framed-page .lab-v2-flow .flow-lipoproteins text {
  fill: var(--text-dim);
  font-size: 9px;
  font-weight: 700;
  text-anchor: middle;
}

body.study-framed-page .lab-v2-flow .flow-oxygen circle {
  fill: color-mix(in srgb, var(--info) 9%, var(--stage-panel));
  stroke: var(--border-strong);
  stroke-width: 2;
  stroke-dasharray: 3 3;
  vector-effect: non-scaling-stroke;
}

body.study-framed-page .lab-v2-flow .flow-oxygen.is-active circle {
  stroke: var(--info);
  stroke-dasharray: none;
}

body.study-framed-page .lab-v2-flow .flow-complex.is-blocked rect,
body.study-framed-page .lab-v2-flow .flow-station.is-blocked rect {
  fill: color-mix(in srgb, var(--bad) 11%, var(--stage-panel));
  stroke: var(--bad);
  stroke-dasharray: 7 4;
}

body.study-framed-page .lab-v2-flow .flow-curve-baseline,
body.study-framed-page .lab-v2-flow .flow-curve-ghost,
body.study-framed-page .lab-v2-flow .flow-curve-current {
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}

body.study-framed-page .lab-v2-flow .flow-curve-baseline,
body.study-framed-page .lab-v2-flow .flow-curve-ghost {
  stroke: var(--text-muted);
  stroke-width: 2;
  stroke-dasharray: 6 5;
  opacity: .72;
}

body.study-framed-page .lab-v2-flow .flow-curve-current {
  stroke: var(--accent);
  stroke-width: 4;
}

body.study-framed-page .lab-v2-flow .flow-marker {
  stroke: var(--accent-bright);
  stroke-width: 2.5;
  stroke-dasharray: 4 3;
  vector-effect: non-scaling-stroke;
}

body.study-framed-page .lab-v2-flow .flow-slider-track {
  stroke: var(--border-strong);
  stroke-width: 8;
  stroke-linecap: round;
  vector-effect: non-scaling-stroke;
}

body.study-framed-page .lab-v2-flow .flow-knob {
  fill: var(--accent);
  stroke: var(--stage-panel);
  stroke-width: 3;
  vector-effect: non-scaling-stroke;
}

body.study-framed-page .lab-v2-flow .flow-slider-hit {
  fill: transparent;
  pointer-events: all;
  cursor: ew-resize;
  touch-action: none;
}

body.study-framed-page .lab-v2-flow .flow-slider:focus-visible {
  outline: none;
  filter: drop-shadow(0 0 3px var(--accent));
}

body.study-framed-page .lab-v2-flow .flow-lipoproteins circle {
  fill: color-mix(in srgb, var(--warn) 20%, var(--stage-panel));
  stroke: var(--warn);
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
}

/* M04 shows the counterfactual and the current traffic at the same time. */
body.study-framed-page .lab-v2-m04 .m04-baseline-ghost {
  opacity: .4;
  pointer-events: none;
}

body.study-framed-page .lab-v2-m04 .m04-baseline-ghost path {
  fill: none;
  stroke: var(--text-muted);
  stroke-width: 2;
  stroke-dasharray: 6 6;
  vector-effect: non-scaling-stroke;
}

body.study-framed-page .lab-v2-m04 .m04-baseline-ghost circle {
  fill: var(--stage-panel);
  stroke: var(--text-muted);
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
}

body.study-framed-page .lab-v2-m04 .m04-baseline-ghost text,
body.study-framed-page .lab-v2-m04 .m04-consequence text,
body.study-framed-page .lab-v2-m04 .m04-blood-pool text {
  font-family: "SFMono-Regular", Consolas, monospace;
  font-variant-numeric: tabular-nums;
  text-anchor: middle;
}

body.study-framed-page .lab-v2-m04 .m04-baseline-ghost text {
  fill: var(--text-muted);
  font-size: 8px;
  font-weight: 650;
  letter-spacing: .04em;
}

body.study-framed-page .lab-v2-m04 .m04-particle-train,
body.study-framed-page .lab-v2-m04 .m04-blood-pool,
body.study-framed-page .lab-v2-m04 .m04-pile,
body.study-framed-page .lab-v2-m04 .m04-consequence {
  transform-box: fill-box;
  transform-origin: center;
  transition: transform .12s ease, opacity .12s ease, filter .12s ease;
}

body.study-framed-page .lab-v2-m04 .m04-particle-train circle {
  fill: color-mix(in srgb, var(--flow-output) 22%, var(--stage-panel));
  stroke: var(--flow-output);
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
  transition: fill .12s ease, stroke .12s ease;
}

body.study-framed-page .lab-v2-m04 .m04-particle-train.is-blocked circle,
body.study-framed-page .lab-v2-m04 .m04-blood-pool.is-backlogged circle,
body.study-framed-page .lab-v2-m04 .m04-pile.is-backlogged circle {
  fill: color-mix(in srgb, var(--bad) 28%, var(--stage-panel));
  stroke: var(--bad);
}

body.study-framed-page .lab-v2-m04 .m04-degrade-particles circle {
  fill: color-mix(in srgb, var(--warn) 22%, var(--stage-panel));
  stroke: var(--warn);
}

body.study-framed-page .lab-v2-m04 .m04-blood-pool circle {
  fill: color-mix(in srgb, var(--warn) 20%, var(--stage-panel));
  stroke: var(--warn);
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
  transition: fill .12s ease, stroke .12s ease;
}

body.study-framed-page .lab-v2-m04 .m04-blood-pool text {
  fill: var(--text-dim);
  font-size: 8px;
  font-weight: 700;
}

body.study-framed-page .lab-v2-m04 .m04-consequence rect {
  fill: color-mix(in srgb, var(--good) 9%, var(--stage-panel));
  stroke: var(--good);
  stroke-width: 1.5;
  vector-effect: non-scaling-stroke;
  transition: fill .12s ease, stroke .12s ease;
}

body.study-framed-page .lab-v2-m04 .m04-consequence text {
  fill: var(--good);
  font-size: 8px;
  font-weight: 750;
  dominant-baseline: middle;
  transition: fill .12s ease;
}

body.study-framed-page .lab-v2-m04 .m04-consequence.is-warn rect {
  fill: color-mix(in srgb, var(--warn) 9%, var(--stage-panel));
  stroke: var(--warn);
}

body.study-framed-page .lab-v2-m04 .m04-consequence.is-warn text { fill: var(--warn); }

body.study-framed-page .lab-v2-m04 .m04-consequence.is-bad rect {
  fill: color-mix(in srgb, var(--bad) 10%, var(--stage-panel));
  stroke: var(--bad);
}

body.study-framed-page .lab-v2-m04 .m04-consequence.is-bad text { fill: var(--bad); }

body.study-framed-page .lab-v2-m04 .flow-route.is-starved {
  stroke: var(--bad);
  stroke-width: 2;
  stroke-dasharray: 3 8;
  opacity: .55;
}

body.study-framed-page .lab-v2-m04 .flow-station.is-starved circle {
  fill: color-mix(in srgb, var(--bad) 8%, var(--stage-panel));
  stroke: var(--bad);
  stroke-dasharray: 4 5;
}

body.study-framed-page .lab-v2-m04.m04-visual-pulse .m04-particle-train,
body.study-framed-page .lab-v2-m04.m04-visual-pulse .m04-blood-pool,
body.study-framed-page .lab-v2-m04.m04-visual-pulse .m04-consequence {
  animation: m04-flow-flash .3s ease both;
}

@keyframes m04-flow-flash {
  0% { opacity: .32; filter: brightness(.82); }
  48% { opacity: 1; filter: brightness(1.28); }
  100% { filter: brightness(1); }
}

body.study-framed-page .lab-v2-flow .flow-drop {
  position: absolute;
  z-index: 3;
  min-width: 54px;
  min-height: 36px;
  padding: 4px 7px;
  color: var(--text-muted);
  background: color-mix(in srgb, var(--stage-panel) 88%, transparent);
  border: 1px dashed var(--border-strong);
  border-radius: var(--r-control);
  cursor: pointer;
  font: 700 9px/1.2 "SFMono-Regular", Consolas, monospace;
  letter-spacing: .02em;
  transition: color .16s ease, border-color .16s ease, background .16s ease, transform .16s ease;
}

body.study-framed-page .lab-v2-flow .flow-drop:hover {
  color: var(--text);
  border-color: var(--accent);
}

body.study-framed-page .lab-v2-flow .flow-drop.is-ready {
  color: var(--accent-bright);
  background: color-mix(in srgb, var(--accent) 13%, var(--stage-panel));
  border-color: var(--accent);
  border-style: solid;
  transform: translateY(-2px);
}

body.study-framed-page .lab-v2-flow .flow-drop:focus-visible {
  outline: none;
  box-shadow: var(--focus);
}

body.study-framed-page .lab-v2-flow .flow-side {
  grid-template-rows: auto auto auto minmax(34px, 1fr) auto;
  align-content: start;
  gap: 6px;
  padding: 8px;
}

body.study-framed-page .lab-v2-flow .flow-brief {
  min-width: 0;
  padding: 6px 8px;
  background: var(--bg-alt);
  border-left: 3px solid var(--accent);
  border-radius: 6px;
}

body.study-framed-page .lab-v2-flow .flow-round {
  margin: 0 0 2px;
  color: var(--accent);
  font: 700 8.5px/1.25 "SFMono-Regular", Consolas, monospace;
  letter-spacing: .08em;
}

body.study-framed-page .lab-v2-flow .flow-instruction {
  margin: 0;
  color: var(--text-dim);
  font-size: 10px;
  line-height: 1.35;
}

body.study-framed-page .lab-v2-flow .flow-toolkit {
  min-width: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 5px;
}

body.study-framed-page .lab-v2-flow .flow-tool {
  min-width: 0;
  min-height: 45px;
  display: grid;
  align-content: center;
  gap: 1px;
  padding: 5px 7px;
  color: var(--text-dim);
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 7px;
  cursor: grab;
  text-align: left;
  touch-action: none;
  transition: border-color .16s ease, background .16s ease, transform .16s ease;
}

body.study-framed-page .lab-v2-flow .flow-tool:hover {
  border-color: var(--border-strong);
  transform: translateY(-1px);
}

body.study-framed-page .lab-v2-flow .flow-tool[aria-pressed="true"] {
  background: color-mix(in srgb, var(--accent) 11%, var(--panel));
  border-color: var(--accent);
}

body.study-framed-page .lab-v2-flow .flow-tool strong {
  min-width: 0;
  color: var(--text);
  font-size: 10px;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

body.study-framed-page .lab-v2-flow .flow-tool small {
  min-width: 0;
  color: var(--text-muted);
  font: 500 8px/1.2 "SFMono-Regular", Consolas, monospace;
  overflow-wrap: anywhere;
}

body.study-framed-page .lab-v2-flow .flow-readout {
  min-width: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px;
}

body.study-framed-page .lab-v2-flow .flow-readout > div {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: baseline;
  gap: 1px 4px;
  padding: 5px 7px;
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 6px;
}

body.study-framed-page .lab-v2-flow .flow-readout span {
  min-width: 0;
  color: var(--text-muted);
  font-size: 8.5px;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

body.study-framed-page .lab-v2-flow .flow-readout strong {
  color: var(--text);
  font: 750 13px/1 "SFMono-Regular", Consolas, monospace;
  font-variant-numeric: tabular-nums;
}

body.study-framed-page .lab-v2-flow .flow-readout small {
  grid-column: 1 / -1;
  color: var(--text-muted);
  font: 500 7.5px/1.15 "SFMono-Regular", Consolas, monospace;
}

body.study-framed-page .lab-v2-flow .flow-feedback {
  min-width: 0;
  margin: 0;
  align-self: center;
  color: var(--text-dim);
  font-size: 9px;
  line-height: 1.35;
}

body.study-framed-page .lab-v2-flow .flow-feedback[data-kind="good"] { color: var(--good); }
body.study-framed-page .lab-v2-flow .flow-feedback[data-kind="warn"] { color: var(--warn); }
body.study-framed-page .lab-v2-flow .flow-feedback[data-kind="bad"] { color: var(--bad); }

body.study-framed-page .lab-v2-flow .flow-next {
  min-height: 34px;
  padding: 6px 10px;
  color: var(--bg);
  background: var(--accent);
  border: 1px solid var(--accent);
  border-radius: var(--r-control);
  cursor: pointer;
  font-size: 10px;
  font-weight: 700;
}

body.study-framed-page .lab-v2-flow .flow-next:hover { background: var(--accent-bright); }
body.study-framed-page .lab-v2-flow .flow-next:focus-visible { outline: none; box-shadow: var(--focus); }

.flow-drag-ghost {
  position: fixed;
  z-index: 2147483600;
  max-width: 176px;
  padding: 7px 10px;
  color: var(--text);
  background: var(--panel);
  border: 1px solid var(--accent);
  border-radius: 7px;
  font: 700 10px/1.2 "SFMono-Regular", Consolas, monospace;
  pointer-events: none;
  transform: translate(10px, 10px);
}

/* Chapter-specific overlay coordinates. */
body.study-framed-page .lab-v2-flow .m01-drop-membrane { left: 10%; top: 19%; }
body.study-framed-page .lab-v2-flow .m01-drop-nuclear { left: 8%; top: 62%; }
body.study-framed-page .lab-v2-flow .m01-drop-transducer { left: 38%; top: 28%; }
body.study-framed-page .lab-v2-flow .m01-drop-pocket { left: 7%; top: 30%; }
body.study-framed-page .lab-v2-flow .m01-drop-active { left: 8%; top: 21%; }
body.study-framed-page .lab-v2-flow .m01-drop-allosteric { left: 20%; top: 50%; }
body.study-framed-page .lab-v2-flow .m01-drop-es { left: 8%; top: 56%; }

body.study-framed-page .lab-v2-flow .m03-a-fuel { left: 5%; top: 25%; }
body.study-framed-page .lab-v2-flow .m03-a-pdh { left: 38%; top: 25%; }
body.study-framed-page .lab-v2-flow .m03-a-oxygen { right: 7%; bottom: 14%; }
body.study-framed-page .lab-v2-flow .m03-b-entry { left: 3%; top: 38%; }
body.study-framed-page .lab-v2-flow .m03-b-iv { left: 57%; top: 34%; }
body.study-framed-page .lab-v2-flow .m03-b-v { right: 5%; top: 34%; }
body.study-framed-page .lab-v2-flow .m03-b-leak { left: 69%; top: 64%; }
body.study-framed-page .lab-v2-flow .m03-b-oxygen { right: 20%; bottom: 12%; }
body.study-framed-page .lab-v2-flow .m03-c-entry { left: 3%; top: 38%; }
body.study-framed-page .lab-v2-flow .m03-c-i { left: 21%; top: 29%; }
body.study-framed-page .lab-v2-flow .m03-c-oxygen { right: 7%; top: 36%; }

body.study-framed-page .lab-v2-flow .m04-a-input { left: 5%; top: 30%; }
body.study-framed-page .lab-v2-flow .m04-a-urea { left: 43%; top: 30%; }
body.study-framed-page .lab-v2-flow .m04-b-input { left: 5%; top: 32%; }
body.study-framed-page .lab-v2-flow .m04-b-ldlr { left: 52%; top: 32%; }
body.study-framed-page .lab-v2-flow .m04-b-synth { left: 14%; top: 59%; }
body.study-framed-page .lab-v2-flow .m04-c-input { left: 6%; top: 37%; }
body.study-framed-page .lab-v2-flow .m04-c-hgprt { left: 49%; top: 17%; }
body.study-framed-page .lab-v2-flow .m04-c-xo { left: 49%; top: 56%; }

@media (max-width: 760px), (pointer: coarse) {
  body.study-framed-page .lab-v2-flow .lab-v2-workbench {
    height: auto;
    grid-template-columns: minmax(0, 1fr);
  }
  body.study-framed-page .lab-v2-flow .flow-stage { height: 310px; }
  body.study-framed-page .lab-v2-flow .flow-side {
    grid-template-rows: auto auto auto auto auto;
    overflow: visible;
  }
  body.study-framed-page .lab-v2-flow .flow-round,
  body.study-framed-page .lab-v2-flow .flow-instruction,
  body.study-framed-page .lab-v2-flow .flow-feedback,
  body.study-framed-page .lab-v2-flow .flow-tool strong,
  body.study-framed-page .lab-v2-flow .flow-tool small,
  body.study-framed-page .lab-v2-flow .flow-readout span,
  body.study-framed-page .lab-v2-flow .flow-readout small { font-size: 11px; }
  body.study-framed-page .lab-v2-flow .flow-tool,
  body.study-framed-page .lab-v2-flow .flow-drop,
  body.study-framed-page .lab-v2-flow .flow-next {
    min-height: 44px;
  }
  body.study-framed-page .lab-v2-flow .flow-drop { min-width: 62px; }
  body.study-framed-page .lab-v2-flow .m03-b-leak { top: 50%; }
  body.study-framed-page .lab-v2-flow .flow-feedback { min-height: 34px; }
}

@media (max-width: 420px) {
  body.study-framed-page .lab-v2-flow .flow-toolkit,
  body.study-framed-page .lab-v2-flow .flow-readout { grid-template-columns: 1fr 1fr; }
  body.study-framed-page .lab-v2-flow .flow-kicker { font-size: 8.5px; }
  body.study-framed-page .lab-v2-flow .flow-value { font-size: 9.5px; }
  body.study-framed-page .lab-v2-flow .flow-drop {
    min-width: 52px;
    padding-inline: 4px;
    font-size: 8.5px;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.study-framed-page .lab-v2-flow *,
  .flow-drag-ghost { transition: none !important; }
}

@media print {
  body.study-framed-page .lab-v2-flow .flow-drop,
  body.study-framed-page .lab-v2-flow .flow-toolkit,
  body.study-framed-page .lab-v2-flow .flow-next { display: none !important; }
}
