/* /demos/rust-move-lab — the parts of this page that are only this page's.
 *
 * THE STEP COMPONENT IS NOT HERE. The tab strip, the caret gutters, the
 * suggested-fix diffs and the provenance list are rust-diag-steps.css, shared
 * with /demos/rust-lifetime-lab, and this file loads AFTER it so a rule here
 * wins.
 *
 * WHAT IS HERE is the Go half, and it is a different thing from the sibling
 * page's. That one pairs each error with a single line the Go COMPILER printed.
 * This one pairs each error with a SCENE of the program's own output — several
 * lines, in the order they were printed, with the one or two that carry the
 * lesson marked. Order and emphasis are the two things these rules exist to
 * carry, and neither has a counterpart on the other page.
 */

.rml__lede {
  max-width: 62rem;
}

.rml__captured,
.rml__silence,
.rml__whole,
.rml__prov,
.rml__steps {
  margin: 2.5rem 0;
}

.rml__captured p,
.rml__silence p,
.rml__whole p,
.rml__prov p,
.rml__sequence {
  max-width: 62rem;
}

/* ---- the silence panel -------------------------------------------------- */

/* The Go compiler's entire contribution to this page's question is an empty
 * string, and this section says so with the recorded evidence beside it. It is
 * set off from the page because it is a FINDING rather than a preamble: a reader
 * who skips it will wonder for the rest of the page why only one language has
 * diagnostics. */
.rml__silence {
  border-left: 3px solid var(--border-color, #d0d7de);
  padding-left: 1.25rem;
}

.rml__silence-list {
  font-size: 0.95rem;
}

/* ---- a scene of program output ------------------------------------------ */

.rml__go {
  border-left: 3px solid var(--border-color, #d0d7de);
  padding-left: 1rem;
  margin: 1.5rem 0 0.5rem;
}

.rml__go h4 {
  font-size: 1rem;
  margin-bottom: 0.5rem;
}

.rml__go-note,
.rml__go-caption {
  max-width: 60rem;
}

.rml__go-caption {
  font-size: 0.95rem;
  margin-bottom: 0.25rem;
}

/* EACH LINE IS ITS OWN BLOCK, not one <pre> with newlines in it, and that is
 * what makes a single line emphasizable at all. The cost is the gap between
 * consecutive lines, which is removed here so a scene still reads as one run of
 * output rather than as a list. */
.rml__scene {
  margin: 0.75rem 0;
}

.rml__scene-line {
  margin: 0;
  border-radius: 0;
  border-bottom-width: 0;
}

.rml__scene-line:first-child {
  border-radius: 8px 8px 0 0;
}

.rml__scene-line:last-child {
  border-radius: 0 0 8px 8px;
  border-bottom-width: 1px;
}

/* THE LINE THAT CARRIES THE LESSON. In the third scene these are the two
 * iterations whose backing arrays differ — the second write landed on top of the
 * first, in a slot neither slice ever shows you. Marked with a left rule and a
 * weight change rather than a background, so the monospace grid the caret
 * gutters depend on is not disturbed and the line is still legible when the
 * accent color is not available. */
.rml__scene-line--key {
  border-left: 4px solid var(--link-color, #0969da);
  font-weight: 600;
}

/* A line whose content the program MEASURED — an address comparison — rather
 * than one it merely narrated. The marker is a suffix rather than a color,
 * because the distinction is a claim about provenance and has to survive being
 * read aloud, printed, or seen without color. */
.rml__scene-line[data-measured="true"] code::after {
  content: "  \2190 measured";
  opacity: 0.6;
  font-weight: 400;
}

/* ---- the whole run ------------------------------------------------------ */

.rml__whole-raw {
  font-size: 0.85rem;
}
