/* WHY [BOL-COMPOSER-BALANCE-003]: the extra track gap put the desktop Orb
   left of the midpoint of its usable slot; Calendar's switch stayed beside it
   instead of balancing the other edge. Align the existing tracks, not the Orb
   renderer/scale. Narrow composers use both ends of the same row, with no new
   row or height. Mode hit areas become 44px; their existing 44px row keeps its
   centre and the small paint overscan fits the current composer padding.
   FALSIFIER: Chat/Calendar at 1280/768/390/360 grows taller, moves the canvas
   relative to its stage, overlaps a control, or shrinks a target below 44px. */
.app-shell .ops-voice-control:not(:has(.ops-voice-mute, .ops-voice-interrupt)) { column-gap: 0; }
.app-shell .ops-voice-modes button { min-width: 44px; min-height: 44px; height: 44px; }
.app-shell .ops-assistant--workspace-open > form.ops-composer > .ops-voice-control:not(:has(.ops-voice-mute, .ops-voice-interrupt)) {
  width: 100%;
  grid-template-columns: 88px minmax(0, 1fr) auto;
}
.app-shell .ops-assistant--workspace-open > form.ops-composer .ops-voice-control:not(:has(.ops-voice-mute, .ops-voice-interrupt)) .ops-voice-modes {
  justify-self: end;
  width: auto;
}
@media (max-width: 760px) {
  .app-shell .ops-assistant > form.ops-composer > .ops-voice-control:not(:has(.ops-voice-mute, .ops-voice-interrupt)) { grid-template-columns: 82px minmax(0, 1fr) auto; }
  .app-shell form.ops-composer .ops-voice-control:not(:has(.ops-voice-mute, .ops-voice-interrupt)) .ops-voice-modes { justify-self: end; width: auto; }
  /* The idle Orb spans three existing grid rows; centre the idle switch in
     that same slot, without moving or overlapping active Stop/Mute controls. */
  .app-shell .ops-voice-control:not(:has(.ops-voice-mute, .ops-voice-interrupt)) .ops-voice-modes { grid-row: 1 / 4; }
}
