What solutions have you tried so far?
Model:SetPrimaryPartCFrame()
Model:PivotTo
Adding debounce
Rewriting the script
Searched for sollution for half an hour
This is probably due to Lua being bad at precise math, and that these errors are building up, causing a drift in positions of parts that you have. I think you should store the original pivot (closed position), and lerp between that and the open position of your model.