I have designed like the photo below in mobile mode, but because I want it to be responsive, I used grid and flex-box, but according to the sample photo, I could not place the components.

1- By placing a photo, the layout of the page is ruined.

2- I tried putting the grid on the whole picture but failed.
3- I also made the colored boxes with flex.
4- Once, I put the photo in the CSS file using the background: URL() command, which improved its layout, but the problem was that I wanted the button and these colored boxes to be placed a little lower than the photo, but all the changes were only It was done in the background photo range and I could not change their location with the position.

- Tell me what method should I use to implement this example so that it becomes responsive much more easily.
<style>
.grid--1×2 {
display: grid;
grid-template-columns: 1fr 1fr;
}
.pos--relative {
position: relative;
}
.pos--absolute {
position: absolute;
}
.side__box-time {
display: flex;
justify-content: center;
flex-direction: column;
}
.box {
border: 1px solid black;
}
.box--green {
background: green;
}
.box--blue {
background: blue;
}
.box--yellow {
background: yellow;
}
.container-flex {
display: flex;
flex-direction: column;
}
.btn {
border: 1px solid black;
background: black;
color: white;
padding: 6px;
bottom: 0;
}
.img {
width: 100%;
}
</style>
</head>
<body>
<div class="grid--1×2 pos--relative">
<img src="images/sandwich.jpg" class="img" alt="" />
<!--Empty cell-->
<div class="pos--reletive"></div>
<div class="container-flex">
<div class="box box--green">First Box</div>
<div class="box box--yellow">Second Box</div>
<div class="box box--blue">third Box</div>
</div>
<a class="btn pos--absolute" href="#">FULL RECIPE</a>
</div>
</body>
