/* Framed-only layered route family: M22, M23, M25. Extends lab-v2.css. */
body.study-framed-page .route-micro {
  --rm-line: var(--accent);
  --rm-surface: var(--stage-panel);
  --rm-surface-2: var(--bg-alt);
  --rm-ink: var(--text);
  --rm-dim: var(--text-dim);
  --rm-muted: var(--text-muted);
}

body.study-framed-page .route-micro * { box-sizing: border-box; }
body.study-framed-page .route-micro button {
  min-width: 0;
  -webkit-tap-highlight-color: transparent;
}
body.study-framed-page .route-micro button:focus-visible,
body.study-framed-page .route-micro input:focus-visible,
body.study-framed-page .route-micro [tabindex]:focus-visible {
  outline: none;
  box-shadow: var(--focus);
}

body.study-framed-page .rm-head { min-width:0; grid-template-columns: minmax(0, 1fr) auto; overflow:hidden; }
body.study-framed-page .rm-head .lab-v2-head-copy h3 { overflow-wrap:anywhere; }
body.study-framed-page .rm-steps {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}
body.study-framed-page .rm-steps li {
  min-width: 0;
  display: flex;
  align-items: center;
  color: var(--rm-muted);
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: 9px;
  line-height: 1.2;
  white-space: nowrap;
}
body.study-framed-page .rm-steps button {
  min-width:0; min-height:31px; display:flex; align-items:center; gap:5px;
  padding:4px 7px 4px 4px; color:inherit; background:transparent; border:0;
  border-radius:999px; font:inherit; cursor:pointer;
}
body.study-framed-page .rm-steps button:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
body.study-framed-page .rm-steps li span {
  width: 21px;
  height: 21px;
  display: grid;
  place-items: center;
  color: var(--rm-muted);
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 50%;
  font: 750 8.5px/1 "SFMono-Regular", Consolas, monospace;
}
body.study-framed-page .rm-steps li b { font-weight: 650; }
body.study-framed-page .rm-steps li.is-current {
  color: var(--accent-bright);
  background: color-mix(in srgb, var(--accent) 8%, transparent);
  border-color: color-mix(in srgb, var(--accent) 35%, var(--border));
}
body.study-framed-page .rm-steps li.is-current span { color: var(--bg); background: var(--accent); border-color: var(--accent); }
body.study-framed-page .rm-steps li.is-done span { color: var(--bg); background: var(--good); border-color: var(--good); }
html[data-reading-scale="1.5"] body.study-framed-page .rm-steps button,
html[data-reading-scale="1.75"] body.study-framed-page .rm-steps button,
html[data-reading-scale="2"] body.study-framed-page .rm-steps button { padding-right:4px; }
html[data-reading-scale="1.5"] body.study-framed-page .rm-steps li b,
html[data-reading-scale="1.75"] body.study-framed-page .rm-steps li b,
html[data-reading-scale="2"] body.study-framed-page .rm-steps li b { display:none; }

body.study-framed-page .rm-workbench {
  height: 366px;
  grid-template-columns: minmax(196px, .58fr) minmax(0, 1.72fr);
  gap: 8px;
}
body.study-framed-page .rm-palette,
body.study-framed-page .rm-stage {
  min-width: 0;
  min-height: 0;
  background: var(--rm-surface);
  border: 1px solid var(--image-border);
  border-radius: var(--r-control);
}
body.study-framed-page .rm-palette {
  overflow: auto;
  padding: 11px;
  scrollbar-width: thin;
  scrollbar-color: var(--border-strong) transparent;
}
body.study-framed-page .rm-palette-kicker {
  margin: 0 0 4px;
  color: var(--accent);
  font: 750 8.5px/1.3 "SFMono-Regular", Consolas, monospace;
  letter-spacing: .1em;
}
body.study-framed-page .rm-palette h4 {
  margin: 0;
  color: var(--rm-ink);
  font-size: 13px;
  line-height: 1.35;
}
body.study-framed-page .rm-palette > p:not(.rm-palette-kicker) {
  margin: 6px 0 9px;
  color: var(--rm-dim);
  font-size: 9.5px;
  line-height: 1.45;
}
body.study-framed-page .rm-token-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 5px;
}
body.study-framed-page .rm-token-grid-one { grid-template-columns: 1fr; }
body.study-framed-page .rm-token {
  min-height: 44px;
  display: grid;
  align-content: center;
  gap: 1px;
  padding: 6px 8px;
  color: var(--rm-ink);
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: var(--r-control);
  cursor: grab;
  text-align: left;
  touch-action: none;
  transition: border-color .16s ease, transform .16s ease, background .16s ease, opacity .16s ease;
}
body.study-framed-page .rm-token:hover { border-color: var(--accent); transform: translateY(-1px); }
body.study-framed-page .rm-token:active,
body.study-framed-page .rm-token.is-dragging { cursor: grabbing; transform: translateY(1px); border-color: var(--accent); }
body.study-framed-page .rm-token.is-carried {
  background: color-mix(in srgb, var(--accent) 12%, var(--panel));
  border-color: var(--accent);
}
body.study-framed-page .rm-token.is-used,
body.study-framed-page .rm-token:disabled { opacity: .42; cursor: default; transform: none; }
body.study-framed-page .rm-token span { font-size: 9.5px; font-weight: 700; line-height: 1.2; overflow-wrap: anywhere; }
body.study-framed-page .rm-token small { color: var(--rm-muted); font-size: 8px; line-height: 1.25; overflow-wrap: anywhere; }

body.study-framed-page .rm-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 5px 8px;
  margin-top: 8px;
  color: var(--rm-muted);
  font: 700 8px/1.2 "SFMono-Regular", Consolas, monospace;
}
body.study-framed-page .rm-legend span { display: flex; align-items: center; gap: 3px; }
body.study-framed-page .rm-legend i {
  width: 15px;
  height: 15px;
  display: grid;
  place-items: center;
  color: var(--rm-muted);
  border: 1px solid var(--border);
  border-radius: 4px;
  font-style: normal;
}
body.study-framed-page .rm-legend i.is-pos { color: var(--good); border-color: var(--good); }
body.study-framed-page .rm-legend i.is-neg { color: var(--bad); border-color: var(--bad); }

body.study-framed-page .rm-stage {
  position: relative;
  overflow: hidden;
  padding: 8px;
}
body.study-framed-page .rm-stage-title {
  min-width: 0;
  min-height: 38px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  gap: 10px;
  padding: 0 2px 6px;
}
body.study-framed-page .rm-stage-title span {
  display: block;
  color: var(--accent);
  font: 750 8px/1.2 "SFMono-Regular", Consolas, monospace;
  letter-spacing: .11em;
}
body.study-framed-page .rm-stage-title h4 {
  margin: 2px 0 0;
  color: var(--rm-ink);
  font-size: 12px;
  line-height: 1.25;
}
body.study-framed-page .rm-gain {
  max-width: 180px;
  display: grid;
  justify-items: end;
  color: var(--rm-dim);
  font: 700 8px/1.25 "SFMono-Regular", Consolas, monospace;
  text-align: right;
  font-variant-numeric: tabular-nums;
}
body.study-framed-page .rm-gain b { color: var(--accent-bright); font-size: 12px; }
body.study-framed-page .rm-gain small { color: var(--rm-muted); font-size: 8px; }

body.study-framed-page .rm-drop {
  min-height: 44px;
  padding: 6px 8px;
  color: var(--rm-dim);
  background: var(--panel);
  border: 1px dashed var(--border-strong);
  border-radius: var(--r-control);
  cursor: pointer;
  transition: border-color .16s ease, background .16s ease, transform .16s ease;
}
body.study-framed-page .rm-drop:hover,
body.study-framed-page .rm-drop.is-armed,
body.study-framed-page .rm-drop.is-hovered { color: var(--rm-ink); border-color: var(--accent); }
body.study-framed-page .rm-drop.is-hovered { background: color-mix(in srgb, var(--accent) 12%, var(--panel)); transform: translateY(-1px); }
body.study-framed-page .rm-drop.is-filled { border-style: solid; border-color: var(--good); }
body.study-framed-page .rm-drop.is-rejected { border-color: var(--bad); animation: rm-reject .24s ease; }
body.study-framed-page .rm-drop span,
body.study-framed-page .rm-drop small { display: block; }
body.study-framed-page .rm-drop span { font-size: 9px; font-weight: 750; line-height: 1.2; }
body.study-framed-page .rm-drop small { margin-top: 2px; color: var(--rm-muted); font-size: 7.8px; line-height: 1.25; }
@keyframes rm-reject { 0%,100%{transform:translateX(0)} 30%{transform:translateX(-3px)} 70%{transform:translateX(3px)} }

body.study-framed-page .rm-tree-board {
  height: 120px;
  overflow: hidden;
  background: var(--bg-alt);
  border: 1px solid var(--border);
  border-radius: var(--r-control);
  cursor: copy;
}
body.study-framed-page .rm-tree-board.is-armed,
body.study-framed-page .rm-tree-board.is-hovered { border-color: var(--accent); }
body.study-framed-page .rm-tree-svg { width: 100%; height: 100%; display: block; }
body.study-framed-page .rm-tree-root { fill: var(--panel-2); stroke: var(--accent); stroke-width: 2; }
body.study-framed-page .rm-tree-pending,
body.study-framed-page .rm-tree-alt { fill: none; stroke: var(--border-strong); stroke-width: 1.4; }
body.study-framed-page .rm-tree-alt { opacity: .38; stroke-dasharray: 4 5; }
body.study-framed-page .rm-tree-active { fill: none; stroke: var(--accent); stroke-width: 2.4; }
body.study-framed-page .rm-tree-node rect { fill: var(--panel); stroke: var(--accent); stroke-width: 1.3; }
body.study-framed-page .rm-svg-label,
body.study-framed-page .rm-svg-note,
body.study-framed-page .rm-svg-micro,
body.study-framed-page .rm-svg-value { font-family: "SFMono-Regular", Consolas, monospace; }
body.study-framed-page .rm-svg-label { fill: var(--rm-ink); font-size: 8px; font-weight: 750; }
body.study-framed-page .rm-svg-note { fill: var(--rm-muted); font-size: 9px; }
body.study-framed-page .rm-svg-micro { fill: var(--rm-muted); font-size: 7.5px; font-weight: 700; }
body.study-framed-page .rm-svg-value { fill: var(--accent-bright); font-size: 9px; font-weight: 750; }

body.study-framed-page .rm-micro-grid {
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(160px, .72fr);
  gap: 6px;
  margin-top: 6px;
}
body.study-framed-page .rm-candidate-field,
body.study-framed-page .rm-mechanism-scene {
  min-width: 0;
  min-height: 0;
  background: var(--bg-alt);
  border: 1px solid var(--border);
  border-radius: var(--r-control);
}
body.study-framed-page .rm-candidate-field { padding: 6px; }
body.study-framed-page .rm-candidate-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 5px; }
body.study-framed-page .rm-candidate-head b { color: var(--rm-muted); font: 750 7.5px/1.2 "SFMono-Regular", Consolas, monospace; letter-spacing: .08em; }
body.study-framed-page .rm-candidate-head span { color: var(--rm-dim); font-size: 8px; text-align: right; }
body.study-framed-page .rm-candidates { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 3px; }
body.study-framed-page .rm-candidate {
  min-width: 0;
  min-height: 24px;
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 3px 4px;
  color: var(--rm-dim);
  border: 1px solid var(--border);
  border-radius: 5px;
  transition: opacity .16s ease, border-color .16s ease;
}
body.study-framed-page .rm-candidate.is-alive { border-color: color-mix(in srgb, var(--accent) 40%, var(--border)); }
body.study-framed-page .rm-candidate.is-faded { opacity: .18; }
body.study-framed-page .rm-candidate b { min-width: 0; font-size: 7.5px; line-height: 1.1; overflow-wrap: anywhere; }
body.study-framed-page .rm-shape { width: 8px; height: 8px; flex: 0 0 auto; display: block; background: var(--accent); }
body.study-framed-page .rm-shape.coccus { border-radius: 50%; }
body.study-framed-page .rm-shape.rod { width: 11px; border-radius: 5px; }

body.study-framed-page .rm-mechanism-scene { position: relative; display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 6px; padding: 8px; }
body.study-framed-page .rm-mechanism-scene p { grid-column: 1 / -1; margin: 0; display: grid; gap: 1px; }
body.study-framed-page .rm-mechanism-scene p strong { color: var(--rm-ink); font-size: 8px; }
body.study-framed-page .rm-mechanism-scene p span { color: var(--rm-muted); font-size: 7.5px; line-height: 1.25; }
body.study-framed-page .rm-wall { position: relative; width: 56px; height: 56px; margin: auto; border-radius: 50%; border: 2px solid var(--border-strong); }
body.study-framed-page .rm-wall i { position: absolute; inset: 6px; border: 2px solid var(--border); border-radius: 50%; }
body.study-framed-page .rm-wall i:nth-child(2) { inset: 12px; }
body.study-framed-page .rm-wall i:nth-child(3) { inset: 18px; background: var(--panel-2); }
body.study-framed-page .thick-peptidoglycan .rm-wall { border-width: 7px; border-color: var(--accent); }
body.study-framed-page .outer-membrane-lps .rm-wall { border-color: var(--bad); box-shadow: inset 0 0 0 4px var(--accent); }
body.study-framed-page .rm-wall span { position: absolute; right: -7px; top: -5px; display: none; color: var(--bad); font: 750 7px/1 monospace; }
body.study-framed-page .outer-membrane-lps .rm-wall span { display: block; }
body.study-framed-page .rm-synapse { position: relative; width: 70px; height: 48px; margin: auto; }
body.study-framed-page .rm-synapse::before,
body.study-framed-page .rm-synapse::after { content:""; position:absolute; left:0; right:0; height:12px; border:2px solid var(--border-strong); border-radius:12px; }
body.study-framed-page .rm-synapse::before { top:0; }
body.study-framed-page .rm-synapse::after { bottom:0; }
body.study-framed-page .rm-synapse i,
body.study-framed-page .rm-synapse span,
body.study-framed-page .rm-synapse b { position:absolute; top:20px; width:7px; height:7px; border-radius:50%; background:var(--accent); }
body.study-framed-page .rm-synapse i { left:13px; } body.study-framed-page .rm-synapse span { left:31px; } body.study-framed-page .rm-synapse b { left:49px; }
body.study-framed-page .inhibitory-release-blocked .rm-synapse i,
body.study-framed-page .inhibitory-release-blocked .rm-synapse span,
body.study-framed-page .inhibitory-release-blocked .rm-synapse b,
body.study-framed-page .ach-release-blocked .rm-synapse i,
body.study-framed-page .ach-release-blocked .rm-synapse span,
body.study-framed-page .ach-release-blocked .rm-synapse b { background: var(--bad); transform: translateY(-9px); }

body.study-framed-page .rm-transfer-board {
  min-height: 232px;
  display: grid;
  grid-template-columns: 118px minmax(0, 1fr) 118px;
  align-items: center;
  gap: 8px;
  padding: 12px;
  background: var(--bg-alt);
  border: 1px solid var(--border);
  border-radius: var(--r-control);
}
body.study-framed-page .rm-donor,
body.study-framed-page .rm-recipient { min-width: 0; display: grid; justify-items: center; gap: 6px; color: var(--rm-dim); text-align: center; }
body.study-framed-page .rm-donor span,
body.study-framed-page .rm-recipient span { color: var(--rm-muted); font: 750 8px/1.2 monospace; letter-spacing: .08em; }
body.study-framed-page .rm-donor b,
body.study-framed-page .rm-recipient b { font-size: 8px; line-height: 1.25; }
body.study-framed-page .rm-cell { width: 70px; height: 48px; display:block; border: 4px solid var(--accent); border-radius: 50%; box-shadow: inset 0 0 0 8px var(--panel-2); }
body.study-framed-page .rm-recipient.is-protected .rm-cell { border-color: var(--good); }
body.study-framed-page .rm-transfer-zones { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
body.study-framed-page .rm-transfer-zone { position: relative; min-height: 86px; }
body.study-framed-page .rm-transfer-zone::before,
body.study-framed-page .rm-transfer-zone::after { content:""; position:absolute; top:50%; width:13px; height:1px; background:var(--border-strong); }
body.study-framed-page .rm-transfer-zone::before { left:-14px; } body.study-framed-page .rm-transfer-zone::after { right:-14px; }
body.study-framed-page .rm-transfer-zone i { display:block; margin-top:5px; color:var(--accent); font:750 7px/1.2 monospace; font-style:normal; }
body.study-framed-page .rm-route-readout { display:flex; flex-wrap:wrap; gap:5px 10px; margin-top:6px; color:var(--rm-muted); font:700 7.5px/1.2 monospace; }

body.study-framed-page .rm-virus-machine,
body.study-framed-page .rm-hiv-route,
body.study-framed-page .rm-timeline-drop,
body.study-framed-page .rm-wall-lab { min-height: 0; }
body.study-framed-page .rm-virus-machine { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(165px,.72fr); gap:7px; height:285px; }
body.study-framed-page .rm-cell-boundary,
body.study-framed-page .rm-environment-comparison,
body.study-framed-page .rm-hiv-route,
body.study-framed-page .rm-timeline-drop { background:var(--bg-alt); border:1px solid var(--border); border-radius:var(--r-control); }
body.study-framed-page .rm-cell-boundary { padding:9px; }
body.study-framed-page .rm-cell-boundary > span,
body.study-framed-page .rm-sample-head > span { color:var(--rm-muted); font:750 8px/1.2 monospace; letter-spacing:.09em; }
body.study-framed-page .rm-site-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:5px; margin-top:7px; }
body.study-framed-page .rm-virus-station { position:relative; min-height:58px; }
body.study-framed-page .rm-virus-station i { display:block; margin-top:4px; color:var(--accent); font:750 7px/1 monospace; font-style:normal; }
body.study-framed-page .rm-virus-station.is-blocked { border-style:solid; border-color:var(--bad); }
body.study-framed-page .rm-virus-station.is-blocked i { color:var(--bad); }
body.study-framed-page .rm-genome-path { fill:none; stroke:var(--border-strong); stroke-width:3; stroke-dasharray:5 5; }
body.study-framed-page .rm-genome-path.is-flowing { stroke:var(--accent); stroke-dasharray:none; }
body.study-framed-page .rm-genome-particle { fill:var(--accent); stroke:var(--stage-panel); stroke-width:3; }
body.study-framed-page .rm-environment-comparison { padding:8px; display:grid; align-content:start; gap:8px; }
body.study-framed-page .rm-dry-zone { width:100%; }
body.study-framed-page .rm-virion-pair { display:grid; gap:8px; }
body.study-framed-page .rm-virion { display:grid; grid-template-columns:42px 1fr; grid-template-rows:auto auto; align-items:center; gap:1px 7px; color:var(--rm-dim); }
body.study-framed-page .rm-virion i { grid-row:1/-1; width:38px; height:38px; border:3px solid var(--accent); border-radius:50%; background:radial-gradient(circle,var(--panel-2) 0 34%,transparent 36%); opacity:var(--integrity,100%); }
body.study-framed-page .rm-virion.naked i { border-style:dashed; border-color:var(--good); }
body.study-framed-page .rm-virion b { font-size:8px; }
body.study-framed-page .rm-virion span { color:var(--rm-muted); font:700 7.5px/1.2 monospace; }

body.study-framed-page .rm-hiv-route { height:285px; display:grid; grid-template-rows:auto auto 26px 1fr; gap:7px; padding:10px; }
body.study-framed-page .rm-hiv-route > .rm-virus-station { justify-self:start; width:180px; }
body.study-framed-page .rm-lifecycle-nodes { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:5px; }
body.study-framed-page .rm-particle-strip { display:grid; grid-template-columns:repeat(4,1fr); align-items:center; gap:5px; padding:0 6%; }
body.study-framed-page .rm-particle-strip i { position:relative; height:2px; display:block; background:var(--border-strong); }
body.study-framed-page .rm-particle-strip i::after { content:""; position:absolute; right:0; top:50%; width:8px; height:8px; border-radius:50%; background:var(--border-strong); transform:translateY(-50%); }
body.study-framed-page .rm-particle-strip i.is-on { background:var(--accent); }
body.study-framed-page .rm-particle-strip i.is-on::after { background:var(--accent); }
body.study-framed-page .rm-particle-strip i.is-stopped { background:var(--bad); }
body.study-framed-page .rm-particle-strip i.is-stopped::after { width:2px; height:13px; border-radius:0; background:var(--bad); }
body.study-framed-page .rm-live-sentence { margin:0; align-self:center; color:var(--rm-dim); font-size:9px; line-height:1.45; }
body.study-framed-page .rm-live-sentence.bad { color:var(--bad); }

body.study-framed-page .rm-range-card { margin-top:9px; padding:8px; background:var(--bg-alt); border:1px solid var(--border); border-radius:var(--r-control); }
body.study-framed-page .rm-range-card label { display:flex; justify-content:space-between; gap:8px; color:var(--rm-dim); font-size:9px; }
body.study-framed-page .rm-range-card output { color:var(--accent-bright); font:750 9px/1.2 monospace; font-variant-numeric:tabular-nums; }
body.study-framed-page .rm-range-card input { width:100%; min-height:46px; margin:5px 0 0; accent-color:var(--accent); cursor:ew-resize; touch-action:pan-y; }
body.study-framed-page .rm-timeline-drop { height:285px; padding:12px; cursor:copy; }
body.study-framed-page .rm-timeline-axis { position:relative; display:flex; justify-content:space-between; padding:8px 0 13px; color:var(--rm-muted); font:700 8px/1 monospace; border-bottom:1px solid var(--border-strong); }
body.study-framed-page .rm-timeline-axis i { position:absolute; bottom:-7px; width:2px; height:15px; background:var(--accent); transform:translateX(-50%); }
body.study-framed-page .rm-serology-bands { display:grid; gap:10px; margin:15px 0 12px; }
body.study-framed-page .rm-serology-band { display:grid; grid-template-columns:72px 1fr 142px; align-items:center; gap:8px; }
body.study-framed-page .rm-serology-band b { font:750 8px/1.2 monospace; }
body.study-framed-page .rm-serology-band > div { position:relative; height:9px; overflow:visible; background:var(--panel); border-radius:99px; }
body.study-framed-page .rm-serology-band > div i { height:100%; display:block; background:var(--accent); border-radius:inherit; }
body.study-framed-page .rm-serology-band > div span { position:absolute; top:50%; width:7px; height:7px; border:1px solid var(--stage-panel); border-radius:50%; background:var(--accent); transform:translate(-50%,-50%); }
body.study-framed-page .rm-serology-band output { color:var(--rm-muted); font-size:8px; }

body.study-framed-page .rm-wall-token-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
body.study-framed-page .rm-wall-lab { height:246px; min-width:0; }
body.study-framed-page .rm-wall-contextualize { height:214px; }
body.study-framed-page .rm-identity-grid,
body.study-framed-page .rm-context-grid { height:100%; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; }
body.study-framed-page .rm-organism { display:grid; align-content:center; gap:6px; text-align:center; }
body.study-framed-page .rm-organism > b { color:var(--accent-bright); font-size:7.5px; }
body.study-framed-page .rm-morph { height:62px; position:relative; overflow:hidden; }
body.study-framed-page .rm-morph i { position:absolute; left:50%; top:50%; width:62%; height:5px; background:var(--accent); border-radius:6px; transform-origin:left center; }
body.study-framed-page .aspergillus .rm-morph i:nth-child(1) { transform:rotate(-45deg); }
body.study-framed-page .aspergillus .rm-morph i:nth-child(2) { transform:rotate(0); }
body.study-framed-page .aspergillus .rm-morph i:nth-child(3) { transform:rotate(45deg); }
body.study-framed-page .mucor .rm-morph i { height:9px; }
body.study-framed-page .mucor .rm-morph i:nth-child(1) { transform:rotate(-88deg); }
body.study-framed-page .mucor .rm-morph i:nth-child(2) { transform:rotate(0); }
body.study-framed-page .mucor .rm-morph i:nth-child(3) { transform:rotate(88deg); }
body.study-framed-page .tb .rm-morph i { left:25%; width:48%; height:10px; border:2px solid var(--accent); background:transparent; border-radius:7px; }
body.study-framed-page .tb .rm-morph i:nth-child(1) { top:22%; transform:rotate(18deg); }
body.study-framed-page .tb .rm-morph i:nth-child(2) { top:47%; transform:rotate(-12deg); }
body.study-framed-page .tb .rm-morph i:nth-child(3) { top:72%; transform:rotate(32deg); }
body.study-framed-page .rm-identity-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:5px; margin:0 0 6px; }
body.study-framed-page .rm-identity-summary span { min-width:0; padding:4px 5px; color:var(--good); border-bottom:1px solid color-mix(in srgb,var(--good) 55%,var(--border)); font-size:7.5px; text-align:center; overflow-wrap:anywhere; }
body.study-framed-page .rm-context-zone { min-width:0; display:grid; align-content:center; gap:8px; text-align:center; }
body.study-framed-page .rm-context-zone > span { color:var(--rm-ink); overflow-wrap:anywhere; }
body.study-framed-page .rm-context-map { min-width:0; display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:center; gap:3px; }
body.study-framed-page .rm-context-map b { min-width:0; color:var(--accent-bright); font-size:7px; line-height:1.2; overflow-wrap:anywhere; }
body.study-framed-page .rm-context-map b:only-child { grid-column:1 / -1; }
body.study-framed-page .rm-context-map i { color:var(--accent); font-style:normal; }
body.study-framed-page .rm-context-zone > strong { color:var(--good); font-size:7.5px; line-height:1.2; }
body.study-framed-page .rm-context-zone:not(.is-filled) > strong { color:var(--accent-bright); }

body.study-framed-page .rm-parasite-layout { height:285px; display:grid; grid-template-rows:48px minmax(0,1fr) 78px; gap:5px; }
body.study-framed-page .rm-portal-row { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:4px; }
body.study-framed-page .rm-portal { min-height:44px; padding:4px 5px; }
body.study-framed-page .rm-route-center { min-height:0; display:grid; grid-template-columns:minmax(0,1fr) 134px; grid-template-rows:minmax(0,1fr) 28px; gap:4px 6px; }
body.study-framed-page .rm-body-svg { grid-row:1 / -1; width:100%; height:100%; display:block; background:var(--bg-alt); border:1px solid var(--border); border-radius:var(--r-control); }
body.study-framed-page .rm-body-outline { fill:var(--panel); stroke:var(--border-strong); stroke-width:2; }
body.study-framed-page .rm-organ { fill:color-mix(in srgb,var(--accent) 8%,var(--panel)); stroke:var(--border-strong); stroke-width:1.5; }
body.study-framed-page .rm-organ.blood { fill:none; stroke:var(--bad); stroke-width:3; opacity:.55; }
body.study-framed-page .rm-route-base { fill:none; stroke:var(--border-strong); stroke-width:3; stroke-dasharray:5 6; }
body.study-framed-page .rm-route-live { fill:none; stroke:var(--accent); stroke-width:4; opacity:0; }
body.study-framed-page .rm-route-live.is-on { opacity:1; }
body.study-framed-page .rm-route-particle { opacity:.22; }
body.study-framed-page .rm-route-particle.is-on { opacity:1; }
body.study-framed-page .rm-route-particle circle { fill:var(--accent); stroke:var(--stage-panel); stroke-width:3; }
body.study-framed-page .rm-route-particle path { fill:none; stroke:var(--bg); stroke-width:2; }
body.study-framed-page .rm-host-slot { align-self:stretch; }
body.study-framed-page .rm-severity-meter { display:grid; grid-template-columns:1fr 68px 28px; align-items:center; gap:4px; color:var(--rm-muted); font-size:7.5px; }
body.study-framed-page .rm-severity-meter i { height:5px; display:block; overflow:hidden; background:var(--border); border-radius:99px; }
body.study-framed-page .rm-severity-meter i b { height:100%; display:block; background:var(--bad); border-radius:inherit; }
body.study-framed-page .rm-severity-meter output { color:var(--rm-dim); font:700 7.5px/1 monospace; }
body.study-framed-page .rm-sample-bay { min-width:0; display:grid; grid-template-columns:120px minmax(0,1fr); grid-template-rows:1fr auto; gap:4px 7px; padding:6px; background:var(--bg-alt); border:1px solid var(--border); border-radius:var(--r-control); }
body.study-framed-page .rm-sample-head { display:grid; align-content:center; gap:3px; }
body.study-framed-page .rm-sample-head b { color:var(--accent-bright); font:750 8px/1.2 monospace; }
body.study-framed-page .rm-sample-zones { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:3px; }
body.study-framed-page .rm-sample-zone { min-height:44px; padding:3px; }
body.study-framed-page .rm-sample-zone.is-detected { border-style:solid; border-color:var(--good); background:color-mix(in srgb,var(--good) 10%,var(--panel)); }
body.study-framed-page .rm-sample-zone.is-false-negative { border-style:solid; border-color:var(--bad); background:color-mix(in srgb,var(--bad) 9%,var(--panel)); }
body.study-framed-page .rm-sample-bay .rm-live-sentence { grid-column:1 / -1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* v2.1 perceptual-delta contract: every primary move changes geometry, color,
   numeric readout and consequence while a dashed baseline stays visible. */
body.study-framed-page .rm-tree-zone {
  height:112px; display:grid; grid-template-columns:minmax(0,1.65fr) minmax(138px,.62fr); gap:6px;
}
body.study-framed-page .rm-tree-zone .rm-tree-board { height:112px; }
body.study-framed-page .rm-culture-clock {
  min-width:0; display:grid; grid-template-columns:66px minmax(0,1fr); align-items:center; gap:7px;
  padding:7px; background:var(--bg-alt); border:1px solid var(--border); border-radius:var(--r-control);
}
body.study-framed-page .rm-culture-clock.is-wasted { border-color:var(--warn); }
body.study-framed-page .rm-culture-dish {
  position:relative; width:62px; height:62px; border:2px solid var(--border-strong); border-radius:50%;
  background:color-mix(in srgb,var(--accent) 5%,var(--panel)); overflow:hidden;
}
body.study-framed-page .rm-culture-dish::after {
  content:""; position:absolute; inset:4px; border:1px dashed var(--border-strong); border-radius:50%;
}
body.study-framed-page .rm-culture-dish > span {
  position:absolute; left:50%; bottom:3px; z-index:2; color:var(--rm-muted);
  font:700 5.5px/1 monospace; letter-spacing:.08em; transform:translateX(-50%);
}
body.study-framed-page .rm-culture-dish > i {
  position:absolute; left:var(--dot-x); top:var(--dot-y); z-index:1; width:7px; height:7px;
  background:var(--accent); border:1px solid var(--stage-panel); border-radius:50%; transform:translate(-50%,-50%);
}
body.study-framed-page .rm-culture-dish > i.is-cleared { opacity:.12; transform:translate(-50%,-50%) scale(.55); }
body.study-framed-page .rm-culture-dish > i.is-newly-cleared { animation:rm-colony-clear .14s ease-out both; }
body.study-framed-page .rm-culture-clock output { min-width:0; display:grid; gap:2px; font-variant-numeric:tabular-nums; }
body.study-framed-page .rm-culture-clock output > span { color:var(--rm-muted); font:700 7px/1.2 monospace; }
body.study-framed-page .rm-culture-clock output > b { color:var(--accent-bright); font:750 13px/1.1 monospace; }
body.study-framed-page .rm-culture-clock output > small { color:var(--rm-dim); font-size:7px; line-height:1.35; overflow-wrap:anywhere; }
body.study-framed-page .rm-tree-active.is-growing { stroke-dasharray:180; animation:rm-branch-grow .14s ease-out both; }
body.study-framed-page .rm-tree-node.is-new { animation:rm-node-grow .14s ease-out both; transform-box:fill-box; transform-origin:center; }
body.study-framed-page .rm-candidate { position:relative; }
body.study-framed-page .rm-candidate > i { margin-left:auto; color:var(--bad); font:800 10px/1 monospace; font-style:normal; }
body.study-framed-page .rm-candidate.is-newly-eliminated { animation:rm-candidate-prune .14s ease-out both; border-color:var(--bad); }
@keyframes rm-branch-grow { from{stroke-dashoffset:180} to{stroke-dashoffset:0} }
@keyframes rm-node-grow { from{opacity:.15;transform:translateX(-28px) scale(.72)} to{opacity:1;transform:translateX(0) scale(1)} }
@keyframes rm-colony-clear { from{opacity:1;transform:translate(-50%,-50%) scale(1.7)} to{opacity:.12;transform:translate(-50%,-50%) scale(.55)} }
@keyframes rm-candidate-prune { from{opacity:1;transform:translateX(0)} to{opacity:.18;transform:translateX(28px)} }

body.study-framed-page .rm-replication-svg { width:100%; height:92px; display:block; overflow:visible; }
body.study-framed-page .rm-genome-ghost,
body.study-framed-page .rm-flow-ghost { fill:none; stroke:var(--border-strong); stroke-width:3; stroke-dasharray:5 6; opacity:.72; }
body.study-framed-page .rm-genome-path.is-invalid { stroke:var(--bad); }
body.study-framed-page .rm-genome-particle.is-traveling,
body.study-framed-page .rm-flow-particle.is-traveling { animation:rm-replication-travel .14s ease-out both; }
@keyframes rm-replication-travel { from{transform:translate(0,0)} to{transform:translate(var(--travel-x),var(--travel-y,0px))} }
body.study-framed-page .rm-dry-clock { display:flex; align-items:center; justify-content:space-between; gap:6px; color:var(--rm-muted); font:700 6.5px/1.2 monospace; }
body.study-framed-page .rm-dry-clock b { color:var(--accent-bright); font-size:9px; font-variant-numeric:tabular-nums; }
body.study-framed-page .rm-virion { grid-template-columns:64px 1fr; min-height:64px; }
body.study-framed-page .rm-virion i {
  position:relative; width:var(--virion-size,58px); height:var(--virion-size,58px); min-width:22px; min-height:22px;
  justify-self:center; opacity:1; transition:width .14s ease,height .14s ease,border-color .14s ease;
}
body.study-framed-page .rm-virion i::after {
  content:""; position:absolute; left:50%; top:50%; width:58px; height:58px; border:1px dashed var(--border-strong);
  border-radius:50%; transform:translate(-50%,-50%); opacity:.7;
}
body.study-framed-page .rm-virion i > em { display:none; position:absolute; width:8px; height:3px; background:var(--bad); border-radius:3px; }
body.study-framed-page .rm-virion.enveloped.is-tested i > em { display:block; animation:rm-envelope-debris .14s ease-out both; }
body.study-framed-page .rm-virion i > em:nth-child(1) { right:-13px; top:3px; transform:rotate(28deg); }
body.study-framed-page .rm-virion i > em:nth-child(2) { left:-14px; bottom:5px; transform:rotate(-36deg); }
body.study-framed-page .rm-virion i > em:nth-child(3) { right:-9px; bottom:-8px; transform:rotate(62deg); }
@keyframes rm-envelope-debris { from{opacity:0;translate:0 0} to{opacity:1;translate:16px 9px} }

body.study-framed-page .rm-lifecycle-flow { width:100%; height:48px; display:block; overflow:visible; }
body.study-framed-page .rm-flow-live { fill:none; stroke:var(--accent); stroke-width:5; }
body.study-framed-page .rm-flow-live.is-blocked { stroke:var(--warn); }
body.study-framed-page .rm-flow-node { fill:var(--border-strong); stroke:var(--stage-panel); stroke-width:3; }
body.study-framed-page .rm-flow-node.is-on { fill:var(--accent); }
body.study-framed-page .rm-flow-node.is-off { fill:var(--bad); }
body.study-framed-page .rm-flow-particle { fill:var(--accent-bright); stroke:var(--stage-panel); stroke-width:3; }
body.study-framed-page .rm-flow-stop { fill:none; stroke:var(--bad); stroke-width:5; stroke-linecap:round; }

body.study-framed-page .rm-serology-curve { width:100%; height:178px; display:block; overflow:visible; }
body.study-framed-page .rm-curve-axis { fill:none; stroke:var(--border-strong); stroke-width:1.5; }
body.study-framed-page .rm-serology-line,
body.study-framed-page .rm-serology-ghost { fill:none; stroke-width:4; stroke-linecap:round; stroke-linejoin:round; }
body.study-framed-page .rm-serology-ghost { stroke:var(--border-strong); stroke-width:2; stroke-dasharray:5 6; opacity:.72; }
body.study-framed-page .rm-serology-line.hbsag { stroke:var(--bad); }
body.study-framed-page .rm-serology-line.antihbs { stroke:var(--good); }
body.study-framed-page .rm-serology-line.antihbc { stroke:var(--accent); }
body.study-framed-page .rm-time-cursor { stroke:var(--stage-text); stroke-width:1.5; stroke-dasharray:3 4; opacity:.8; }
body.study-framed-page .rm-serology-marker { stroke:var(--stage-panel); stroke-width:3; }
body.study-framed-page .rm-marker-leader { stroke:var(--border-strong); stroke-width:1.5; }
body.study-framed-page .rm-serology-marker.hbsag { fill:var(--bad); }
body.study-framed-page .rm-serology-marker.antihbs { fill:var(--good); }
body.study-framed-page .rm-serology-marker.antihbc { fill:var(--accent); }
body.study-framed-page .rm-serology-label { font:700 8px/1 monospace; }
body.study-framed-page .rm-serology-label.hbsag { fill:var(--bad); }
body.study-framed-page .rm-serology-label.antihbs { fill:var(--good); }
body.study-framed-page .rm-serology-label.antihbc { fill:var(--accent-bright); }
body.study-framed-page .rm-serology-now { animation:rm-serology-scrub .14s ease-out both; }
@keyframes rm-serology-scrub { from{transform:translateX(var(--cursor-shift))} to{transform:translateX(0)} }
body.study-framed-page .rm-serology-key { display:grid; grid-template-columns:repeat(3,1fr); gap:5px; margin-top:-3px; }
body.study-framed-page .rm-serology-key span { padding:4px 6px; border:1px solid var(--border); border-radius:5px; font:700 7.5px/1.2 monospace; font-variant-numeric:tabular-nums; }
body.study-framed-page .rm-serology-key .hbsag { color:var(--bad); }
body.study-framed-page .rm-serology-key .antihbs { color:var(--good); }
body.study-framed-page .rm-serology-key .antihbc { color:var(--accent-bright); }

body.study-framed-page .rm-organ.is-active { fill:color-mix(in srgb,var(--accent) 28%,var(--panel)); stroke:var(--accent); stroke-width:3; }
body.study-framed-page .rm-route-wrong { fill:none; stroke:var(--bad); stroke-width:4; stroke-dasharray:5 5; }
body.study-framed-page .rm-route-wrong-label { fill:var(--bad); font:700 8px/1 monospace; }
body.study-framed-page .rm-portal.is-wrong { border-style:solid; border-color:var(--bad); background:color-mix(in srgb,var(--bad) 11%,var(--panel)); }
body.study-framed-page .rm-parasite-sprite {
  opacity:.2; transform:translate(var(--to-x),var(--to-y)); transform-box:fill-box;
}
body.study-framed-page .rm-parasite-sprite.is-on { opacity:1; animation:rm-parasite-travel .14s ease-out both; }
body.study-framed-page .rm-parasite-sprite circle { fill:var(--accent); stroke:var(--stage-panel); stroke-width:3; }
body.study-framed-page .rm-parasite-sprite path { fill:none; stroke:var(--stage-text); stroke-width:2; stroke-linecap:round; }
body.study-framed-page .rm-parasite-sprite i { display:none; }
@keyframes rm-parasite-travel { from{transform:translate(var(--from-x),var(--from-y)) rotate(-10deg)} to{transform:translate(var(--to-x),var(--to-y)) rotate(10deg)} }
body.study-framed-page .rm-sample-zone { position:relative; overflow:visible; }
body.study-framed-page .rm-scoop { position:absolute; right:4px; top:-24px; width:14px; height:29px; border-right:3px solid var(--stage-text); transform-origin:top center; animation:rm-probe-scoop .14s ease-out both; }
body.study-framed-page .rm-scoop::after { content:""; position:absolute; right:-5px; bottom:-4px; width:12px; height:7px; border:2px solid var(--stage-text); border-top:0; border-radius:0 0 8px 8px; }
body.study-framed-page .rm-scoop > b { position:absolute; right:-2px; bottom:-1px; width:3px; height:3px; background:var(--good); border-radius:50%; }
body.study-framed-page .rm-scoop > b:nth-child(2) { right:3px; bottom:1px; }
body.study-framed-page .rm-scoop > b:nth-child(3) { right:1px; bottom:4px; }
body.study-framed-page .rm-scoop.is-empty > b { display:none; }
body.study-framed-page .rm-scoop.is-empty::after { border-color:var(--bad); }
@keyframes rm-probe-scoop { from{transform:translateY(-28px) rotate(-18deg)} to{transform:translateY(0) rotate(0)} }
body.study-framed-page .rm-detection-strip { min-width:0; display:grid; grid-template-columns:minmax(0,1fr) 82px; align-items:center; gap:6px; }
body.study-framed-page .rm-detection-strip svg { width:100%; height:50px; display:block; overflow:visible; }
body.study-framed-page .rm-detection-ghost { fill:none; stroke:var(--border-strong); stroke-width:2; stroke-dasharray:4 5; }
body.study-framed-page .rm-detection-threshold { fill:none; stroke:var(--warn); stroke-width:1.5; stroke-dasharray:3 4; }
body.study-framed-page .rm-detection-curve { fill:none; stroke:var(--accent); stroke-width:3; stroke-linecap:round; }
body.study-framed-page .rm-detection-marker { fill:var(--bad); stroke:var(--stage-panel); stroke-width:2; }
body.study-framed-page .rm-detection-marker.is-detected { fill:var(--good); }
body.study-framed-page .rm-detection-strip output { display:grid; gap:1px; color:var(--rm-muted); font:700 7px/1.2 monospace; font-variant-numeric:tabular-nums; }
body.study-framed-page .rm-detection-strip output b { color:var(--accent-bright); font-size:11px; }
body.study-framed-page .rm-detection-strip output small { color:var(--rm-muted); font-size:6.5px; }
body.study-framed-page .rm-sample-bay { grid-template-rows:auto auto minmax(44px,1fr) auto; }
body.study-framed-page .rm-sample-bay .rm-detection-strip,
body.study-framed-page .rm-sample-bay .rm-live-sentence { grid-column:1 / -1; }
body.study-framed-page .route-micro-m25 .rm-workbench { height:400px; }
body.study-framed-page .route-micro-m25 .rm-parasite-layout { height:320px; grid-template-rows:48px minmax(0,1fr) 112px; }

body.study-framed-page .rm-foot { grid-template-columns:minmax(0,1fr) auto; }
body.study-framed-page .rm-feedback { min-width:0; color:var(--rm-dim); font-size:10px; line-height:1.35; }
body.study-framed-page .rm-feedback.good { color:var(--good); }
body.study-framed-page .rm-feedback.bad { color:var(--bad); }
body.study-framed-page .rm-feedback.info { color:var(--accent-bright); }
body.study-framed-page .rm-foot-actions { display:flex; align-items:center; gap:9px; }
body.study-framed-page .rm-next {
  min-height:32px;
  padding:5px 9px;
  color:var(--bg);
  background:var(--accent);
  border:1px solid var(--accent);
  border-radius:var(--r-control);
  cursor:pointer;
  font-size:9px;
  font-weight:750;
}
body.study-framed-page .rm-next:hover { transform:translateY(-1px); }

@media (max-width: 1100px) {
  body.study-framed-page .rm-steps button { padding-right:4px; }
  body.study-framed-page .rm-steps li b { display:none; }
  body.study-framed-page .rm-workbench { grid-template-columns:minmax(180px,.55fr) minmax(0,1.7fr); }
  body.study-framed-page .rm-token span { font-size:9px; }
  body.study-framed-page .rm-candidates { grid-template-columns:repeat(2,minmax(0,1fr)); }
  body.study-framed-page .rm-transfer-board { grid-template-columns:96px minmax(0,1fr) 96px; }
  body.study-framed-page .rm-cell { width:58px; }
}

@media (max-width: 760px), (pointer: coarse) {
  body.study-framed-page .rm-head { grid-template-columns:1fr; }
  body.study-framed-page .rm-steps { justify-content:flex-start; }
  body.study-framed-page .rm-steps li { min-height:44px; }
  body.study-framed-page .rm-steps button { width:100%; min-height:44px; justify-content:center; padding:5px; }
  body.study-framed-page .rm-steps li span { width:32px; height:32px; font-size:11px; }
  body.study-framed-page .rm-workbench { height:auto; grid-template-columns:1fr; }
  body.study-framed-page .rm-palette { max-height:none; overflow:visible; }
  body.study-framed-page .rm-palette > p:not(.rm-palette-kicker) { max-height:36px; overflow:hidden; font-size:12px; }
  body.study-framed-page .rm-palette h4 { font-size:15px; }
  body.study-framed-page .rm-token-grid,
  body.study-framed-page .rm-token-grid-one { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; overflow:visible; padding-bottom:0; touch-action:auto; }
  body.study-framed-page .rm-token-grid .rm-token,
  body.study-framed-page .rm-token-grid-one .rm-token { min-width:0; width:100%; min-height:46px; touch-action:none; }
  body.study-framed-page .rm-token[data-drag-token="sample:probe"] { grid-column:1 / -1; }
  body.study-framed-page .rm-token,
  body.study-framed-page .rm-drop { min-height:44px; }
  body.study-framed-page .rm-token span,
  body.study-framed-page .rm-drop span { font-size:11px; }
  body.study-framed-page .rm-token small,
  body.study-framed-page .rm-drop small { font-size:10px; }
  body.study-framed-page .rm-stage { height:auto; min-height:365px; overflow:visible; }
  body.study-framed-page .rm-stage-title { grid-template-columns:1fr; }
  body.study-framed-page .rm-gain { max-width:none; justify-items:start; text-align:left; }
  body.study-framed-page .rm-tree-board { height:120px; }
  body.study-framed-page .rm-tree-zone { height:132px; grid-template-columns:minmax(0,1fr) 112px; }
  body.study-framed-page .rm-tree-zone .rm-tree-board { height:132px; }
  body.study-framed-page .rm-culture-clock { grid-template-columns:1fr; justify-items:center; gap:3px; padding:5px; text-align:center; }
  body.study-framed-page .rm-culture-dish { width:48px; height:48px; }
  body.study-framed-page .rm-culture-clock output > small { font-size:6.5px; }
  body.study-framed-page .rm-micro-grid { grid-template-columns:minmax(0,1fr) 118px; }
  body.study-framed-page .rm-candidates { grid-template-columns:repeat(2,minmax(0,1fr)); }
  body.study-framed-page .rm-candidate b,
  body.study-framed-page .rm-candidate-head span { font-size:10px; }
  body.study-framed-page .rm-mechanism-scene { min-height:164px; grid-template-columns:1fr; align-content:start; padding:6px; }
  body.study-framed-page .rm-mechanism-scene p { grid-column:1; }
  body.study-framed-page .rm-wall { width:46px; height:46px; }
  body.study-framed-page .rm-synapse { width:64px; height:42px; }
  body.study-framed-page .rm-transfer-board { grid-template-columns:1fr; min-height:0; }
  body.study-framed-page .rm-transfer-zones { grid-template-columns:1fr 1fr; }
  body.study-framed-page .rm-transfer-zone::before,
  body.study-framed-page .rm-transfer-zone::after { display:none; }
  body.study-framed-page .rm-virus-machine { height:auto; grid-template-columns:1fr; }
  body.study-framed-page .rm-site-grid { grid-template-columns:1fr; }
  body.study-framed-page .rm-environment-comparison { grid-template-columns:1fr 1fr; }
  body.study-framed-page .rm-hiv-route,
  body.study-framed-page .rm-timeline-drop { height:auto; min-height:360px; }
  body.study-framed-page .rm-lifecycle-nodes { grid-template-columns:1fr 1fr; }
  body.study-framed-page .rm-serology-band { grid-template-columns:62px 1fr; }
  body.study-framed-page .rm-serology-band output { grid-column:1 / -1; }
  body.study-framed-page .rm-serology-key span { font-size:8.5px; }
  body.study-framed-page .rm-wall-lab,
  body.study-framed-page .rm-wall-contextualize { height:auto; overflow:visible; touch-action:auto; }
  body.study-framed-page .rm-identity-grid,
  body.study-framed-page .rm-context-grid { height:auto; grid-template-columns:repeat(3,minmax(0,1fr)); gap:5px; }
  body.study-framed-page .rm-organism { min-width:0; min-height:158px; touch-action:none; }
  body.study-framed-page .rm-context-zone { min-width:0; min-height:176px; padding:6px 4px; touch-action:none; }
  body.study-framed-page .rm-identity-summary span { min-height:44px; display:grid; place-items:center; font-size:9px; }
  body.study-framed-page .rm-parasite-layout { height:auto; min-height:442px; grid-template-rows:94px 206px auto; }
  body.study-framed-page .rm-portal-row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); overflow:visible; gap:4px; touch-action:auto; }
  body.study-framed-page .rm-portal { min-width:0; touch-action:none; }
  body.study-framed-page .rm-route-center { grid-template-columns:minmax(0,1fr) 104px; grid-template-rows:minmax(0,1fr) 28px; }
  body.study-framed-page .rm-body-svg { grid-row:1 / -1; }
  body.study-framed-page .rm-host-slot { min-height:44px; padding:3px; }
  body.study-framed-page .rm-sample-bay { grid-template-columns:76px minmax(0,1fr); }
  body.study-framed-page .rm-sample-zones { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); overflow:visible; gap:3px; touch-action:auto; }
  body.study-framed-page .rm-sample-zone { min-width:0; touch-action:none; }
  body.study-framed-page .rm-sample-bay .rm-live-sentence { white-space:normal; font-size:10px; line-height:1.35; }
  body.study-framed-page .rm-detection-strip { grid-template-columns:minmax(0,1fr) 72px; }
  body.study-framed-page .route-micro-m25 .rm-workbench { height:auto; }
  body.study-framed-page .route-micro-m25 .rm-parasite-layout { height:auto; min-height:548px; grid-template-rows:94px 206px auto; }
  body.study-framed-page .rm-foot { grid-template-columns:1fr; }
  body.study-framed-page .rm-feedback { font-size:12px; }
  body.study-framed-page .rm-foot-actions { align-items:stretch; flex-direction:column; }
  body.study-framed-page .rm-next { min-height:44px; font-size:12px; }
}

@media (max-width: 430px) {
  body.study-framed-page .rm-steps { width:100%; }
  body.study-framed-page .rm-steps li { flex:1; justify-content:center; }
  body.study-framed-page .rm-transfer-zones,
  body.study-framed-page .rm-environment-comparison,
  body.study-framed-page .rm-lifecycle-nodes { grid-template-columns:1fr; }
  body.study-framed-page .rm-identity-grid,
  body.study-framed-page .rm-context-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  body.study-framed-page .rm-organism:last-child,
  body.study-framed-page .rm-context-zone:last-child { grid-column:1 / -1; }
  body.study-framed-page .rm-context-zone small { display:none; }
  body.study-framed-page .rm-context-zone { min-height:148px; }
  body.study-framed-page .rm-context-map b,
  body.study-framed-page .rm-context-zone > strong { font-size:9px; }
  body.study-framed-page .rm-portal-row { grid-template-columns:1fr 1fr; }
  body.study-framed-page .rm-sample-zones { grid-template-columns:repeat(3,minmax(0,1fr)); }
}

@media (prefers-reduced-motion: reduce) {
  body.study-framed-page .route-micro * { animation:none !important; transition:none !important; }
}

@media print {
  body.study-framed-page .route-micro { break-inside:avoid; }
  body.study-framed-page .rm-token,
  body.study-framed-page .rm-next { display:none; }
}
