In my opinion, you want to build a "responsive" site, where you have certain thresholds you use for mobile devices. Rather than start with the idea that you have a max, allow the site to grow and shrink based on the device specific (viewport) attributes like vh and vw, as well as using the flexbox properties that allow for growth and shrinkage.
So for example let's say that you have a fixed height for a header, and below that you have a flexbox that should fill available vertical height and width. You might have a style like this:
.app {
font-size: 15px;
color: #fff;
height: 100vh;
width: 100vw;
}
.header {
background-image: linear-gradient(to right, #18a0BE, #622db9);
height: 55px;
display: flex;
}
.app__container {
height: calc(100vh - 55px);
display: flex;
}
.main {
background-color: #edf1f3;
flex: 1;
}
And your markup might be something like:
<body class="app">
<header class="header ">
</header>
<div class="app__container">
<main class="main">
<div class="cards">
</div>
</main>
</div>
</body>