/*
  Inventory Lab visual rework.
  This page-specific layer is loaded after the existing Inventory Lab styles.
  The shared Workbench master stylesheet remains untouched.
*/

.workbench {
  --lab-visual-accent: #55c8ff;
  --lab-script-accent: #ffb84d;
  --lab-step-accent: #b89cff;
  --lab-runtime-accent: #68d99b;
  --lab-source-accent: #ff9860;
  --lab-destination-accent: #6eb4ff;
  --lab-authority-accent: #62d39b;
  --lab-catalog-accent: #c28cff;
  --lab-procedure-accent: #ffc85a;
  --lab-danger-accent: #ff737f;
  --lab-visual-surface: color-mix(in srgb, var(--wb-panel) 91%, #123849);
  --lab-script-surface: color-mix(in srgb, var(--wb-panel) 94%, #3b260b);
  --lab-step-surface: color-mix(in srgb, var(--wb-panel) 94%, #271d43);
  --lab-trace-surface: color-mix(in srgb, var(--wb-panel) 94%, #0d3439);
  --lab-card-surface: color-mix(in srgb, var(--wb-panel) 96%, #ffffff);
  --lab-page-gap: 12px;
}

/* --------------------------------------------------------------------------
   App chrome
   -------------------------------------------------------------------------- */
.lab-app {
  grid-template-rows: 52px 48px minmax(0, 1fr);
  font-size: 14px;
}

.lab-top {
  min-height: 52px;
  padding: 8px 12px;
  gap: 14px;
  background: linear-gradient(90deg,
    color-mix(in srgb, var(--wb-panel) 94%, var(--lab-visual-accent)),
    var(--wb-panel) 42%,
    color-mix(in srgb, var(--wb-panel) 95%, var(--lab-script-accent)));
}
.lab-brand {
  min-width: 315px;
  line-height: 1.15;
}
.lab-brand strong {
  font-size: 16px;
  letter-spacing: -.01em;
}
.lab-brand span {
  margin-top: 3px;
  font-size: 11.5px;
  line-height: 1.2;
}

.lab-model {
  gap: 8px;
  font-size: 11.5px;
}
.lab-model span {
  min-height: 30px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 9px;
  border-width: 1px;
  background: var(--wb-input);
}
.lab-model span:nth-of-type(1) {
  border-color: color-mix(in srgb, var(--lab-catalog-accent) 62%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-catalog-accent) 8%, var(--wb-input));
}
.lab-model span:nth-of-type(2) {
  border-color: color-mix(in srgb, var(--lab-destination-accent) 62%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-destination-accent) 8%, var(--wb-input));
}
.lab-model span:nth-of-type(3) {
  border-color: color-mix(in srgb, var(--lab-procedure-accent) 62%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-procedure-accent) 8%, var(--wb-input));
}
.lab-model i { font-size: 14px; }
.lab-top-actions { gap: 7px; }
.lab-theme-label { font-size: 11px; }
.lab-top-actions select,
.lab-top-actions button { min-height: 32px; font-size: 12px; }

.lab-mode-tabs {
  min-height: 48px;
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
  border-bottom: 1px solid var(--wb-line-2);
  background: color-mix(in srgb, var(--wb-panel-2) 92%, #16212a);
}
.lab-mode-tabs .wb-tab {
  min-width: 180px;
  height: 35px;
  padding: 6px 18px;
  border: 1px solid var(--wb-line-2);
  border-radius: 4px;
  background: var(--wb-input);
  color: var(--wb-muted);
  font-size: 13px;
  font-weight: 760;
}
.lab-mode-tabs .wb-tab[data-mode="guided"].wb-active {
  border-color: var(--lab-visual-accent);
  background: color-mix(in srgb, var(--lab-visual-accent) 18%, var(--wb-panel));
  box-shadow: inset 3px 0 0 var(--lab-visual-accent);
  color: var(--wb-text);
}
.lab-mode-tabs .wb-tab[data-mode="sandbox"].wb-active {
  border-color: var(--lab-step-accent);
  background: color-mix(in srgb, var(--lab-step-accent) 17%, var(--wb-panel));
  box-shadow: inset 3px 0 0 var(--lab-step-accent);
  color: var(--wb-text);
}

#guidedMode,
#sandboxMode { grid-template-rows: 44px minmax(0, 1fr); }
.lesson-tabs {
  min-height: 44px;
  background: color-mix(in srgb, var(--wb-panel-2) 95%, #101820);
}
.lesson-tab {
  min-height: 43px !important;
  padding: 7px 10px !important;
  font-size: 12px !important;
  font-weight: 720 !important;
  --lesson-color: var(--wb-accent);
}
.lesson-tab[data-guided-scenario="read"] { --lesson-color: #55c8ff; }
.lesson-tab[data-guided-scenario="transfer"],
.lesson-tab[data-sandbox="transfer"] { --lesson-color: #ff9a60; }
.lesson-tab[data-guided-scenario="shared"],
.lesson-tab[data-sandbox="shared"] { --lesson-color: #68d99b; }
.lesson-tab[data-guided-scenario="gameplay"],
.lesson-tab[data-sandbox="properties"] { --lesson-color: #c28cff; }
.lesson-tab[data-guided-scenario="desync"] { --lesson-color: #ff737f; }
.lesson-tab.is-active {
  background: color-mix(in srgb, var(--lesson-color) 12%, var(--wb-select)) !important;
  box-shadow: inset 0 -4px 0 var(--lesson-color) !important;
  color: var(--wb-text) !important;
}
.lesson-tab:hover { background: color-mix(in srgb, var(--lesson-color) 8%, var(--wb-panel-2)) !important; }

/* --------------------------------------------------------------------------
   Guided: clearly separate the visual model from the source script
   -------------------------------------------------------------------------- */
.guided-shell {
  grid-template-rows: minmax(0, 1fr) 242px;
  background: var(--wb-bg);
}
.guided-main {
  grid-template-columns: minmax(0, 58%) minmax(590px, 42%);
  gap: 14px;
  padding: 12px;
  background: color-mix(in srgb, var(--wb-bg) 96%, #0d1820);
}
.guided-stage,
.guided-code {
  border-width: 1px;
  box-shadow: 0 12px 28px rgba(0,0,0,.2);
}
.guided-stage {
  grid-template-rows: 40px auto minmax(0,1fr);
  border-color: color-mix(in srgb, var(--lab-visual-accent) 68%, var(--wb-line));
  border-top: 4px solid var(--lab-visual-accent);
  background: var(--lab-visual-surface);
}
.guided-code {
  grid-template-rows: 40px auto minmax(0,1fr) auto;
  border-color: color-mix(in srgb, var(--lab-script-accent) 68%, var(--wb-line));
  border-top: 4px solid var(--lab-script-accent);
  background: color-mix(in srgb, var(--lab-code-bg) 97%, #080808);
}
.pane-role-bar {
  min-height: 40px;
  justify-content: flex-start;
  padding: 8px 13px;
  border-bottom: 1px solid var(--wb-line-2);
  letter-spacing: .08em;
}
.pane-role-bar strong { font-size: 12.5px; }
.pane-role-visual {
  color: var(--lab-visual-accent);
  background: linear-gradient(90deg,
    color-mix(in srgb, var(--lab-visual-accent) 18%, var(--wb-panel-2)),
    color-mix(in srgb, var(--lab-visual-accent) 5%, var(--wb-panel-2)));
}
.pane-role-script {
  color: var(--lab-script-accent);
  background: linear-gradient(90deg,
    color-mix(in srgb, var(--lab-script-accent) 17%, var(--wb-panel-2)),
    color-mix(in srgb, var(--lab-script-accent) 4%, var(--wb-panel-2)));
}

.guided-stage-head {
  min-height: 112px;
  padding: 16px 19px 14px;
  border-bottom-color: color-mix(in srgb, var(--lab-visual-accent) 22%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-visual-accent) 5%, var(--wb-panel));
}
.guided-stage-head .wb-kicker {
  color: color-mix(in srgb, var(--lab-visual-accent) 82%, var(--wb-text));
  font-size: 11px;
}
.guided-stage-head h1 {
  max-width: 900px;
  margin-top: 5px;
  font-size: clamp(27px, 1.75vw, 34px);
  line-height: 1.08;
}
.guided-stage-head p {
  max-width: 900px;
  margin-top: 8px;
  font-size: 14px;
  line-height: 1.5;
}
#guidedStepBadge {
  min-height: 29px;
  padding: 5px 9px;
  border-color: color-mix(in srgb, var(--lab-visual-accent) 65%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-visual-accent) 10%, var(--wb-panel));
  color: var(--lab-visual-accent);
  font-size: 11.5px;
}
.guided-scene-wrap {
  padding: 16px 18px;
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--lab-visual-accent) 4%, transparent), transparent 44%),
    color-mix(in srgb, var(--wb-bg) 72%, var(--wb-panel));
}
.guided-scene { inset: 16px 18px; }

.guided-code-head {
  min-height: 82px;
  padding: 11px 14px 10px;
  border-bottom-color: color-mix(in srgb, var(--lab-script-accent) 22%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-script-accent) 5%, #111713);
}
.guided-code-head strong {
  font-size: 15px;
  line-height: 1.25;
}
.scope-note {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  margin: 6px 0 0 !important;
  color: var(--wb-muted);
  font-size: 10.75px !important;
  line-height: 1.4 !important;
}
.scope-note > span:first-child {
  flex: 0 0 auto;
  padding: 1px 5px;
  border: 1px solid color-mix(in srgb, var(--lab-script-accent) 52%, var(--wb-line));
  color: var(--lab-script-accent);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.code-key {
  margin-top: 2px;
  font-size: 10px;
}
.code-key i {
  width: 17px;
  height: 4px;
  background: var(--lab-link);
  box-shadow: 0 0 7px color-mix(in srgb, var(--lab-link) 70%, transparent);
}
.guided-code-scroll { padding: 8px 0 12px; }
.code-section-title {
  gap: 9px;
  margin: 11px 14px 6px;
  font-size: 10.25px;
}
.code-section-title em,
.code-section-context { font-size: 9.75px; line-height: 1.35; }
.code-section-context { margin-inline: 14px; }
.code-line {
  grid-template-columns: 38px minmax(0,1fr);
  min-height: 22px;
  padding-right: 12px;
}
.code-line-number { font-size: 9.75px; }
.code-line-text { font-size: 11.75px; line-height: 1.67; }

.runtime-panel,
.sandbox-runtime {
  padding: 9px 11px 10px;
  border-top-color: color-mix(in srgb, var(--lab-runtime-accent) 28%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-runtime-accent) 4%, #0c1712);
}
.runtime-panel header,
.sandbox-runtime header { margin-bottom: 7px; }
.runtime-panel header strong,
.sandbox-runtime header strong {
  color: var(--lab-runtime-accent);
  font-size: 10.5px;
}
.runtime-grid { gap: 7px; }
.runtime-cell {
  min-height: 48px;
  padding: 7px 8px;
  border-color: color-mix(in srgb, var(--lab-runtime-accent) 18%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-runtime-accent) 3%, var(--wb-input));
}
.runtime-cell span {
  color: color-mix(in srgb, var(--lab-runtime-accent) 42%, var(--wb-muted));
  font-size: 10.25px;
}
.runtime-cell strong { margin-top: 4px; font-size: 15px; }

/* --------------------------------------------------------------------------
   Guided scene vocabulary: use color to identify different roles
   -------------------------------------------------------------------------- */
.mini-data-card,
.address-node,
.read-output,
.entity-card,
.procedure-card,
.health-card,
.authority-box,
.reader-stack > div,
.gate-card,
.stack-node,
.shared-config {
  border: 1px solid var(--wb-line-2);
  background: var(--lab-card-surface);
}

.entity-card,
.procedure-card,
.health-card,
.mini-data-card,
.address-node,
.read-output {
  box-shadow: 0 7px 18px rgba(0,0,0,.13);
}

.card-label {
  color: var(--wb-muted);
  font-size: 10.75px;
}
.entity-card h3,
.procedure-card h3,
.health-card h3 { font-size: 18px; }
.entity-card code { font-size: 11px; }
.value-row {
  margin-top: 11px;
  padding: 9px 10px;
  background: color-mix(in srgb, var(--wb-row) 92%, #ffffff);
}
.value-row span { font-size: 12.5px; }
.value-row strong { font-size: 27px; }

/* Owner/source roles */
[data-focus="transfer-source"],
.shop-card {
  border-color: color-mix(in srgb, var(--lab-source-accent) 62%, var(--wb-line));
  box-shadow: inset 4px 0 0 color-mix(in srgb, var(--lab-source-accent) 72%, transparent), 0 7px 18px rgba(0,0,0,.13);
}
[data-focus="transfer-destination"],
[data-focus="shared-bag"],
[data-focus="gameplay-bag"] {
  border-color: color-mix(in srgb, var(--lab-destination-accent) 62%, var(--wb-line));
  box-shadow: inset 4px 0 0 color-mix(in srgb, var(--lab-destination-accent) 72%, transparent), 0 7px 18px rgba(0,0,0,.13);
}
.authority-card,
[data-focus="shared-warehouse"],
[data-focus="desync-good-authority"] {
  border-color: color-mix(in srgb, var(--lab-authority-accent) 62%, var(--wb-line));
  box-shadow: inset 4px 0 0 color-mix(in srgb, var(--lab-authority-accent) 72%, transparent), 0 7px 18px rgba(0,0,0,.13);
}
.catalog-card,
[data-focus="gameplay-catalog"] {
  border-color: color-mix(in srgb, var(--lab-catalog-accent) 62%, var(--wb-line));
  box-shadow: inset 4px 0 0 color-mix(in srgb, var(--lab-catalog-accent) 72%, transparent), 0 7px 18px rgba(0,0,0,.13);
}
.procedure-card,
[data-focus="gameplay-procedure"] {
  border-color: color-mix(in srgb, var(--lab-procedure-accent) 62%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-procedure-accent) 6%, var(--lab-card-surface));
  box-shadow: inset 0 4px 0 color-mix(in srgb, var(--lab-procedure-accent) 72%, transparent), 0 7px 18px rgba(0,0,0,.13);
}
.health-card,
[data-focus="gameplay-player"] {
  border-color: color-mix(in srgb, var(--lab-runtime-accent) 62%, var(--wb-line));
  box-shadow: inset 0 4px 0 color-mix(in srgb, var(--lab-runtime-accent) 72%, transparent), 0 7px 18px rgba(0,0,0,.13);
}

[data-focus].is-focus {
  border-color: var(--lab-link) !important;
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--lab-link) 34%, transparent), 0 8px 22px rgba(0,0,0,.18) !important;
}

/* Address walkthrough */
.guided-scene[data-scene="read"] { gap: 18px; }
.read-variables { gap: 10px; }
.mini-data-card { min-height: 70px; padding: 10px 12px; }
.mini-data-card span { font-size: 11px; }
.mini-data-card strong { font-size: 16px; }
.address-chain { gap: 15px; }
.address-node {
  min-height: 100px;
  padding: 10px;
  border-top: 3px solid color-mix(in srgb, var(--lab-visual-accent) 58%, var(--wb-line));
}
.address-node:not(:last-child)::after {
  right: -13px;
  color: color-mix(in srgb, var(--lab-visual-accent) 65%, var(--wb-muted));
  font-size: 16px;
}
.address-node small { font-size: 9.5px; }
.address-node strong { font-size: 13px; }
.address-node em { font-size: 10.5px; }
.read-output { min-height: 62px; padding: 10px 13px; }
.read-output span { font-size: 13px; }
.read-output strong { color: var(--lab-runtime-accent); font-size: 30px; }

/* Transfer */
.guided-scene[data-scene="transfer"] { grid-template-rows: 32px minmax(0,1fr) 56px; gap: 11px; }
.call-stack-row { font-size: 11.5px; }
.stack-node { padding: 5px 9px; }
.transfer-board { gap: 18px; }
.transfer-route .route-line { background: linear-gradient(90deg, var(--lab-source-accent), var(--lab-destination-accent)); opacity: .62; }
.gate-grid { gap: 10px; }
.gate-card { min-height: 48px; font-size: 12px; }
.gate-card.is-pass {
  border-color: var(--lab-runtime-accent);
  color: var(--lab-runtime-accent);
  background: color-mix(in srgb, var(--lab-runtime-accent) 8%, var(--wb-panel));
}

/* Shared stock */
.guided-scene[data-scene="shared"] { grid-template-rows: 46px minmax(0,1fr); gap: 10px; }
.shared-config {
  padding: 8px 11px;
  border-color: color-mix(in srgb, var(--lab-authority-accent) 35%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-authority-accent) 5%, var(--lab-card-surface));
  font-size: 11.5px;
}
.shared-config strong:nth-of-type(1) { color: var(--lab-authority-accent); }
.shared-config strong:nth-of-type(2) { color: var(--lab-destination-accent); }
.shared-layout { gap: 17px 20px; padding: 7px 22px; }
.guided-scene[data-scene="shared"] .shop-card { min-height: 158px; }
.value-row-secondary {
  border-color: color-mix(in srgb, var(--lab-destination-accent) 32%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-destination-accent) 5%, var(--wb-row));
}

/* Gameplay */
.gameplay-grid { gap: 15px; }
.procedure-card { min-height: 170px; padding: 16px; }
.procedure-card p { font-size: 12.5px; line-height: 1.45; }
.property-list > div { padding: 7px 8px; font-size: 12px; }
.health-card { padding: 12px 15px; }
.health-track { height: 17px; }
.health-readout { font-size: 12px; }

/* Desync */
.desync-grid { gap: 14px; }
.desync-lane { padding: 13px; gap: 11px; }
.bad-lane {
  border-color: color-mix(in srgb, var(--lab-danger-accent) 62%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-danger-accent) 4%, var(--wb-panel));
}
.good-lane {
  border-color: color-mix(in srgb, var(--lab-authority-accent) 62%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-authority-accent) 4%, var(--wb-panel));
}
.desync-lane header strong { font-size: 13px; }
.authority-box { padding: 11px; }
.authority-box span { font-size: 10.5px; }
.authority-box strong { font-size: 28px; }
.reader-stack > div { padding: 9px; }
.reader-stack span b { font-size: 11.5px; }
.reader-stack span small { font-size: 9.75px; }
.reader-stack strong { font-size: 21px; }
.desync-lane > p { font-size: 11px; }

/* --------------------------------------------------------------------------
   Guided step area: explanation first, sequence second, navigation obvious
   -------------------------------------------------------------------------- */
.guided-stepbar {
  grid-template-columns: minmax(0, 38%) minmax(0, 62%);
  grid-template-rows: minmax(0,1fr) 68px;
  gap: 10px 12px;
  padding: 11px 12px;
  border-top-color: var(--wb-line-2);
  background: color-mix(in srgb, var(--wb-bg) 93%, #101823);
}
.step-explanation,
.step-trace-panel,
.step-controls {
  padding: 12px 14px;
  border: 1px solid var(--wb-line-2);
  box-shadow: 0 7px 18px rgba(0,0,0,.12);
}
.step-explanation {
  grid-column: 1;
  grid-row: 1;
  gap: 6px;
  border-left: 4px solid var(--lab-step-accent);
  background: var(--lab-step-surface);
}
.step-explanation .wb-badge {
  min-height: 21px;
  border-color: color-mix(in srgb, var(--lab-step-accent) 58%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-step-accent) 10%, var(--wb-panel));
  color: var(--lab-step-accent);
  font-size: 10px;
}
.step-group {
  color: color-mix(in srgb, var(--lab-step-accent) 78%, var(--wb-text));
  font-size: 10.5px;
}
.step-explanation h2 {
  margin-top: 2px;
  font-size: 21px;
  line-height: 1.15;
  letter-spacing: -.015em;
}
.step-explanation p {
  margin-top: 4px;
  font-size: 13.5px;
  line-height: 1.5;
}

.step-trace-panel {
  grid-column: 2;
  grid-row: 1;
  grid-template-rows: auto auto minmax(0,1fr);
  gap: 7px;
  border-left: 4px solid var(--lab-runtime-accent);
  background: var(--lab-trace-surface);
}
.step-trace-panel header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 6px;
}
.step-trace-panel header strong {
  color: var(--lab-runtime-accent);
  font-size: 11px;
  letter-spacing: .07em;
  text-transform: uppercase;
}
.step-trace-panel header span {
  color: color-mix(in srgb, var(--lab-runtime-accent) 72%, var(--wb-text));
  font-size: 11px;
  text-align: right;
}
.step-trace-title { font-size: 12px; }
.step-trace {
  grid-auto-rows: minmax(58px, auto);
  gap: 7px;
}
.trace-node {
  padding: 8px 9px;
  border-color: var(--wb-line-2);
  background: color-mix(in srgb, var(--wb-input) 95%, #0e272b);
}
.trace-index { width: 23px; height: 23px; }
.trace-node strong { font-size: 11.5px; }
.trace-node small { font-size: 9.75px; }
.trace-node.is-done {
  border-color: color-mix(in srgb, var(--lab-runtime-accent) 52%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-runtime-accent) 6%, var(--wb-input));
}
.trace-node.is-active {
  border-color: var(--lab-link);
  background: color-mix(in srgb, var(--lab-link) 12%, var(--wb-input));
  box-shadow: inset 4px 0 0 var(--lab-link);
}
.trace-node.is-upcoming { opacity: .48; }

.step-controls {
  grid-column: 1 / -1;
  grid-row: 2;
  display: grid;
  grid-template-columns: minmax(240px,1fr) auto;
  grid-template-rows: 1fr;
  align-items: center;
  gap: 16px;
  padding: 9px 12px;
  border-left: 4px solid var(--lab-script-accent);
  background: color-mix(in srgb, var(--lab-script-accent) 5%, var(--wb-panel));
}
.step-count {
  display: grid;
  grid-template-columns: auto minmax(160px, 1fr);
  align-items: center;
  gap: 12px;
}
.step-count > span {
  color: var(--wb-text);
  font: 700 12px/1.1 var(--wb-mono);
  text-align: left;
}
.step-progress {
  height: 9px;
  border: 1px solid var(--wb-line-2);
  background: var(--wb-input);
}
.step-progress i {
  background: linear-gradient(90deg, var(--lab-visual-accent), var(--lab-script-accent));
}
.step-buttons {
  display: grid;
  grid-template-columns: 132px 184px;
  gap: 10px;
}
.step-buttons button {
  min-height: 46px;
  padding: 8px 14px;
  font-size: 14px;
  font-weight: 780;
  border-radius: 4px;
}
#guidedBackButton {
  border-color: color-mix(in srgb, var(--lab-visual-accent) 45%, var(--wb-line-2));
  background: color-mix(in srgb, var(--lab-visual-accent) 7%, var(--wb-panel-2));
}
#guidedNextButton {
  border-color: var(--lab-script-accent);
  background: var(--lab-script-accent);
  color: #151009;
  box-shadow: 0 5px 14px color-mix(in srgb, var(--lab-script-accent) 22%, transparent);
}
#guidedNextButton:hover { filter: brightness(1.08); }
#guidedNextButton:disabled,
#guidedBackButton:disabled { box-shadow: none; }

/* --------------------------------------------------------------------------
   Hands-on mode: controls, model, and script are distinct work areas
   -------------------------------------------------------------------------- */
.sandbox-panel {
  grid-template-columns: 300px minmax(470px, 1fr) minmax(600px, 41%);
  gap: 14px;
  padding: 12px;
  background: color-mix(in srgb, var(--wb-bg) 96%, #111823);
}
.sandbox-controls,
.sandbox-visual,
.sandbox-code {
  border-width: 1px;
  border-radius: 2px;
  box-shadow: 0 11px 25px rgba(0,0,0,.18);
}
.sandbox-controls {
  gap: 10px;
  padding: 14px;
  border-color: color-mix(in srgb, var(--lab-step-accent) 58%, var(--wb-line));
  border-top: 4px solid var(--lab-step-accent);
  background: color-mix(in srgb, var(--lab-step-accent) 5%, var(--wb-panel));
}
.sandbox-visual {
  padding: 14px;
  border-color: color-mix(in srgb, var(--lab-visual-accent) 58%, var(--wb-line));
  border-top: 4px solid var(--lab-visual-accent);
  background: var(--lab-visual-surface);
}
.sandbox-code {
  border-color: color-mix(in srgb, var(--lab-script-accent) 58%, var(--wb-line));
  border-top: 4px solid var(--lab-script-accent);
  background: color-mix(in srgb, var(--lab-code-bg) 97%, #080808);
}
.pane-mini-label {
  min-height: 24px;
  margin-bottom: 7px;
  padding: 4px 7px;
  border-color: color-mix(in srgb, var(--lab-step-accent) 58%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-step-accent) 9%, var(--wb-panel));
  color: var(--lab-step-accent);
  font-size: 10px;
}
.sandbox-visual .pane-mini-label {
  border-color: color-mix(in srgb, var(--lab-visual-accent) 58%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-visual-accent) 9%, var(--wb-panel));
  color: var(--lab-visual-accent);
}
.pane-mini-script {
  border-color: color-mix(in srgb, var(--lab-script-accent) 58%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-script-accent) 9%, var(--wb-panel));
  color: var(--lab-script-accent);
}
.sandbox-controls header h2,
.sandbox-visual header h2,
.sandbox-code header h2 {
  margin-top: 2px;
  font-size: 19px;
  line-height: 1.2;
}
.sandbox-controls header p,
.sandbox-code header p {
  margin-top: 7px;
  font-size: 12.25px;
  line-height: 1.48;
}
.sandbox-controls .wb-field { gap: 4px; }
.sandbox-controls .wb-field label,
.share-toggle { font-size: 12px; }
.sandbox-controls input,
.sandbox-controls select,
.sandbox-controls button {
  min-height: 36px;
  font-size: 12.5px;
}
.sandbox-controls button.wb-primary {
  min-height: 42px;
  border-color: var(--lab-step-accent);
  background: color-mix(in srgb, var(--lab-step-accent) 18%, var(--wb-panel-2));
  font-weight: 780;
}
.sandbox-message {
  min-height: 58px;
  padding: 9px 10px;
  font-size: 12px;
  line-height: 1.45;
}
.sandbox-visual > header {
  padding-bottom: 11px;
  border-bottom-color: color-mix(in srgb, var(--lab-visual-accent) 22%, var(--wb-line));
}
.sandbox-code > header {
  padding: 12px 14px;
  border-bottom-color: color-mix(in srgb, var(--lab-script-accent) 22%, var(--wb-line));
  background: color-mix(in srgb, var(--lab-script-accent) 5%, #111713);
}
.sandbox-code-scroll { padding: 9px; }
.code-block {
  padding: 9px;
  font-size: 10.75px;
  line-height: 1.62;
  border-color: color-mix(in srgb, var(--lab-script-accent) 15%, var(--wb-line));
}
.sandbox-runtime { max-height: 166px; }
.sandbox-runtime .runtime-grid { grid-template-columns: repeat(auto-fit, minmax(175px,1fr)); }

.sandbox-transfer-board,
.sandbox-shared-grid,
.sandbox-properties-grid { gap: 13px; }
.sandbox-transfer-board { padding: 18px; }
.sandbox-shared-grid { padding: 14px; }
.sandbox-properties-grid { padding: 15px; }
.sandbox-transfer-route > div {
  background: linear-gradient(90deg, var(--lab-source-accent), var(--lab-destination-accent));
}

/* Reduce repeated explanatory chrome while keeping necessary scope labels. */
.sandbox-code .code-section-title em { color: color-mix(in srgb, var(--lab-script-accent) 32%, var(--wb-muted)); }

/* --------------------------------------------------------------------------
   Responsive safeguards
   -------------------------------------------------------------------------- */
@media (max-width: 1600px) {
  .lab-model { display: none; }
  .guided-main { grid-template-columns: minmax(0,55%) minmax(540px,45%); }
  .guided-shell { grid-template-rows: minmax(0,1fr) 248px; }
  .sandbox-panel { grid-template-columns: 270px minmax(410px,1fr) minmax(540px,42%); }
  .guided-stage-head h1 { font-size: clamp(25px,1.8vw,31px); }
  .step-explanation h2 { font-size: 19px; }
}

@media (max-width: 1320px) {
  .lab-brand { min-width: 260px; }
  .lab-theme-label { display: none; }
  .guided-main { grid-template-columns: minmax(0,52%) minmax(500px,48%); gap: 9px; padding: 9px; }
  .guided-shell { grid-template-rows: minmax(0,1fr) 260px; }
  .guided-stepbar { grid-template-columns: 1fr 1.35fr; }
  .sandbox-panel { grid-template-columns: 245px minmax(370px,1fr) minmax(470px,43%); gap: 9px; padding: 9px; }
}

@media (max-width: 1050px) {
  .lab-app { overflow: auto; height: auto; min-height: 100vh; }
  .guided-main,
  .sandbox-panel { grid-template-columns: 1fr; overflow: visible; }
  .guided-shell { grid-template-rows: auto auto; overflow: visible; }
  .guided-stage,
  .guided-code { min-height: 560px; }
  .guided-stepbar { grid-template-columns: 1fr; grid-template-rows: auto auto auto; }
  .step-explanation,
  .step-trace-panel,
  .step-controls { grid-column: 1; grid-row: auto; }
  .step-controls { grid-template-columns: 1fr; }
  .step-buttons { justify-self: stretch; grid-template-columns: 1fr 1fr; }
}

/* Fit every operation part without a second-row collision at desktop widths. */
.step-trace {
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
}

/* Shared-stock diagrams carry four cards, so use a denser card rhythm here. */
.guided-scene[data-scene="shared"] {
  grid-template-rows: 38px minmax(0, 1fr);
  gap: 7px;
}
.guided-scene[data-scene="shared"] .shared-config {
  min-height: 38px;
  padding: 6px 9px;
  font-size: 10.75px;
}
.guided-scene[data-scene="shared"] .shared-layout {
  grid-template-rows: minmax(132px, 1fr) minmax(96px, .72fr);
  align-content: stretch;
  gap: 8px 16px;
  padding: 0 16px 2px;
  overflow: hidden;
}
.guided-scene[data-scene="shared"] .entity-card {
  min-height: 0;
  padding: 8px 10px;
}
.guided-scene[data-scene="shared"] .shop-card {
  min-height: 0;
  align-self: stretch;
}
.guided-scene[data-scene="shared"] .entity-card h3 { font-size: 16px; }
.guided-scene[data-scene="shared"] .entity-card code {
  margin-top: 3px;
  padding: 1px 4px;
  font-size: 9.5px;
}
.guided-scene[data-scene="shared"] .value-row {
  min-height: 35px;
  margin-top: 6px;
  padding: 6px 8px;
}
.guided-scene[data-scene="shared"] .value-row span { font-size: 11.25px; }
.guided-scene[data-scene="shared"] .value-row strong { font-size: 22px; }
.guided-scene[data-scene="shared"] .authority-card,
.guided-scene[data-scene="shared"] .shared-layout > .entity-card:last-child {
  width: 94%;
  align-self: stretch;
}

/* Extra compaction for the shared-stock diagram at browser-height viewports. */
.guided-scene[data-scene="shared"] .shared-layout {
  grid-template-rows: 112px 88px;
}
.guided-scene[data-scene="shared"] .shop-card {
  position: relative;
  padding: 7px 9px;
}
.guided-scene[data-scene="shared"] .shop-card .card-label { font-size: 9.5px; }
.guided-scene[data-scene="shared"] .shop-card h3 {
  margin-top: 2px;
  font-size: 15px;
}
.guided-scene[data-scene="shared"] .shop-card code {
  position: absolute;
  top: 7px;
  right: 9px;
  max-width: 54%;
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 8.75px;
}
.guided-scene[data-scene="shared"] .shop-card .value-row {
  min-height: 29px;
  margin-top: 4px;
  padding: 4px 7px;
}
.guided-scene[data-scene="shared"] .shop-card .value-row span { font-size: 10.5px; }
.guided-scene[data-scene="shared"] .shop-card .value-row strong { font-size: 19px; }
.guided-scene[data-scene="shared"] .authority-card,
.guided-scene[data-scene="shared"] .shared-layout > .entity-card:last-child {
  padding: 7px 9px;
}
.guided-scene[data-scene="shared"] .authority-card .card-label,
.guided-scene[data-scene="shared"] .shared-layout > .entity-card:last-child .card-label { font-size: 9.25px; }
.guided-scene[data-scene="shared"] .authority-card h3,
.guided-scene[data-scene="shared"] .shared-layout > .entity-card:last-child h3 {
  margin-top: 2px;
  font-size: 15px;
}
.guided-scene[data-scene="shared"] .authority-card code,
.guided-scene[data-scene="shared"] .shared-layout > .entity-card:last-child code {
  margin-top: 2px;
  font-size: 8.75px;
}
.guided-scene[data-scene="shared"] .authority-card .value-row,
.guided-scene[data-scene="shared"] .shared-layout > .entity-card:last-child .value-row {
  min-height: 28px;
  margin-top: 4px;
  padding: 4px 7px;
}
.guided-scene[data-scene="shared"] .authority-card .value-row strong,
.guided-scene[data-scene="shared"] .shared-layout > .entity-card:last-child .value-row strong { font-size: 19px; }
