/* Inspector (src/ui/inspector.js). Theme tokens only. Touch target 44px = 24 + 16 + 4 spacing tokens. */
.insp { --insp-touch: calc(var(--lab-space-24) + var(--lab-space-16) + var(--lab-space-4));
  display: flex; flex-direction: column; gap: var(--lab-space-4); padding: var(--lab-space-8);
  background: var(--lab-bg-panel); border: var(--lab-hairline) solid var(--lab-border); border-radius: var(--lab-radius-4); }
.insp[hidden] { display: none; }
.insp__head { display: flex; align-items: center; gap: var(--lab-space-8); }
.insp__head strong { font-size: var(--lab-fs-14); font-weight: var(--lab-weight-semi); color: var(--lab-text); }
.insp__type { flex: 1; font-family: var(--lab-font-mono); font-size: var(--lab-fs-11); color: var(--lab-text-dim); }
.insp__field { display: flex; flex-direction: column; }
.insp__row { display: flex; align-items: center; gap: var(--lab-space-8); }
.insp__label { flex: 0 0 9em; font-size: var(--lab-fs-12); color: var(--lab-text-dim); }
.insp__unit { color: var(--lab-text-mute); }
.insp__input { flex: 1; min-width: 0; min-height: var(--insp-touch); padding: 0 var(--lab-space-8); font-family: var(--lab-font-mono); font-size: var(--lab-fs-14);
  color: var(--lab-text); background: var(--lab-bg-inset); border: var(--lab-hairline) solid var(--lab-border-strong); border-radius: var(--lab-radius-4); }
.insp__input:focus { outline: var(--lab-hairline) solid var(--lab-copper); border-color: var(--lab-copper); }
.insp__input[aria-invalid="true"] { border-color: var(--lab-fault); }
.insp__check { width: var(--insp-touch); height: var(--insp-touch); margin: 0; accent-color: var(--lab-copper); }
.insp__btn { min-width: var(--insp-touch); min-height: var(--insp-touch); padding: 0 var(--lab-space-8); font: inherit; font-size: var(--lab-fs-12);
  color: var(--lab-text); background: var(--lab-bg-raised); border: var(--lab-hairline) solid var(--lab-border-strong); border-radius: var(--lab-radius-4); cursor: pointer; }
.insp__btn:hover { background: var(--lab-bg-hover); }
.insp__close { font-size: var(--lab-fs-16); }
.insp__err { margin: 0; min-height: 0; font-size: var(--lab-fs-11); color: var(--lab-fault); }
.insp__err:empty { display: none; }
.insp__note { margin: 0; font-size: var(--lab-fs-11); color: var(--lab-text-mute); }
.insp__icon { width: var(--lab-space-24); height: var(--lab-space-24); flex: none; color: var(--lab-text); }

/* Overhaul R2 (Analog): E12 steppers + commit confirmation */
.insp__step { min-width: 36px; padding: 0; }
.insp__status { margin: 0; min-height: 1.2em; font-size: var(--lab-fs-11); color: var(--lab-text-mute); }

/* Overhaul R3 (Analog): value row never clips. The label takes its own line, so the input + unit + ▼/▲ + E12
 * row gets the full panel width (266 px dock: input ~110 px). Checkbox rows keep label and box side by side. */
.insp__row { flex-wrap: wrap; row-gap: var(--lab-space-4); }
.insp__label { flex: 1 1 100%; }
.insp__row:has(.insp__check) { flex-wrap: nowrap; }
.insp__row:has(.insp__check) .insp__label { flex: 1 1 auto; }
.insp__input { min-width: 5em; }
.insp__row > .insp__btn { flex: none; }
.insp__chips { display: flex; flex-wrap: wrap; gap: var(--lab-space-4); }
.insp__chip { min-height: var(--insp-touch); min-width: var(--insp-touch); padding: 0 var(--lab-space-8); font: inherit; font-size: var(--lab-fs-12);
  color: var(--lab-text); background: var(--lab-bg-raised); border: 2px solid var(--lab-border-strong); border-radius: 999px; cursor: pointer;
  display: inline-flex; align-items: center; gap: var(--lab-space-4); text-transform: capitalize; }
.insp__chip::before { content: ""; width: 12px; height: 12px; border-radius: 50%; background: var(--chip); box-shadow: 0 0 0 1px var(--lab-border-strong); }
.insp__chip--red { --chip: #ff4d4d; } .insp__chip--green { --chip: #3ddc6b; } .insp__chip--yellow { --chip: #ffd84d; }
.insp__chip--blue { --chip: #4d8dff; } .insp__chip--white { --chip: #f4f4f4; }
.insp__chip[aria-checked="true"] { border-color: var(--lab-copper); background: var(--lab-bg-hover); font-weight: var(--lab-weight-semi); }

/* Under 1280 px: bottom sheet (one sheet at a time with the scope: lab:sheet-open, see inspector-logic.js).
 * At >= 1280 it stays a side panel in the dock. */
@media (max-width: 1279.98px) {
  #inspector.insp { position: fixed; left: 0; right: 0; bottom: 0; z-index: 60; max-height: 42vh; overflow-y: auto;
    display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); column-gap: var(--lab-space-16); align-content: start;
    padding: var(--lab-space-8) var(--lab-space-16) var(--lab-space-16); border-radius: var(--lab-radius-4) var(--lab-radius-4) 0 0;
    box-shadow: 0 -8px 24px var(--lab-edge-lo); } /* R7: token (theme/tokens.css) */
  #inspector.insp[hidden] { display: none; }
  #inspector .insp__head, #inspector .insp__note, #inspector .insp__status { grid-column: 1 / -1; }
}

/* Overhaul R4 (Analog): Form NO/NC segmented toggle, hold-to-press, overload reset */
.insp__seg { min-height: var(--insp-touch); min-width: calc(var(--insp-touch) * 1.5); padding: 0 var(--lab-space-12); font: inherit; font-family: var(--lab-font-mono);
  font-size: var(--lab-fs-12); color: var(--lab-text-dim); background: var(--lab-bg-inset); border: var(--lab-hairline) solid var(--lab-border-strong); cursor: pointer; }
.insp__chips:has(.insp__seg) { gap: 0; }
.insp__seg:first-child { border-radius: var(--lab-radius-4) 0 0 var(--lab-radius-4); }
.insp__seg:last-child { border-radius: 0 var(--lab-radius-4) var(--lab-radius-4) 0; border-left: none; }
.insp__seg[aria-checked="true"] { color: var(--lab-text); background: var(--lab-bg-hover); border-color: var(--lab-copper); font-weight: var(--lab-weight-semi); }
.insp__press { flex: 1; touch-action: none; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; font-weight: var(--lab-weight-semi); }
.insp__press[aria-pressed="true"] { background: var(--lab-copper); color: var(--lab-bg-panel); border-color: var(--lab-copper); }
.insp__trip { flex: 1; font-family: var(--lab-font-mono); font-size: var(--lab-fs-12); color: var(--lab-text-dim); }
.insp__trip--on { color: var(--lab-fault); font-weight: var(--lab-weight-semi); }

/* Overhaul R5 (Analog): contact/coil link status */
.insp__link { margin: 0; font-size: var(--lab-fs-12); color: var(--lab-text-dim); }
.insp__link--ok::before { content: "✓ "; color: var(--lab-ok, var(--lab-copper)); }
.insp__link--warn { color: var(--lab-warn, var(--lab-fault)); }
.insp__link--warn::before { content: "⚠ "; }
#inspector .insp__link { grid-column: 1 / -1; }

/* Overhaul R6 (Analog): coil state line */
.insp__coil { margin: 0; font-family: var(--lab-font-mono); font-size: var(--lab-fs-12); color: var(--lab-text-dim); }
.insp__coil--on { color: var(--lab-ok, var(--lab-copper)); font-weight: var(--lab-weight-semi); }
#inspector .insp__coil { grid-column: 1 / -1; }
