Here are some ideas:
Convert your ggreengreen polygons into points where each node will be a point in a new table referring back to the original record and the node number.
Use the Distance Calculator to calculate the two shortest distances between the "green" points and the red lines
Use a query to find all the distance lines that intersect a green line with an ID different than the original ID. They seem to cross another green line to get to a red line. You don't want to use these. Delete those that were found.
For each of the green lines, select the distance lines sort them by node and distance.
For each of the sorted distance lines, get the Node ID, if you already have looked at this node ID ignore it, move the matching node of the current green line to the end point of the distance line and finally save back the edited green line to the current record in the green line table.
You might want to build in some extra validations too. Maybe check that the distance you are moving is less than a certain distance.