OK you need to do a lot of changes, this is not basically a Greenock issue but a combination of HTML, CSS and JS "issues"
Firstly the HTML
you should use <div class=" col-sm"> not <div class=" col"> as per the docs https://getbootstrap.com/docs/4.0/layout/grid/ to get a flexible grid that stacks.
Next CSS
.my-boxes should only have the display:flex class applied on sizes above phone ie 800px only, otherwise leave it as Bootstrap sets it.
Lastly the JS needs a rewrite.
console.clear(); // Start with a clean console on refesh
gsap.registerPlugin(ScrollTrigger);
let mm = gsap.matchMedia();
const imageSection = document.querySelector(".main-editions");
const container = document.querySelector(".container-main");
mm.add("(min-width: 800px)", () => {
const timeline = gsap.timeline({
scrollTrigger: {
trigger: '.container',
pin: true,
scrub: true,
markers:true,
// end: () => "+=" + (imageSection.scrollWidth - document.documentElement.clientWidth),
// invalidateOnRefresh: true
}
})
timeline.from('.my-boxes', {
xPercent: 100,
ease: "none",
});
});
I tested this quickly by playing around with your codepen and it seemed to work, if nothing else it will give you something to move forward from. Disclaimer I don't use Bootstrap, and the JS change was a quick and dirty copy and paste, likely a lot could be improved.