For a “normal” website like this I wouldn’t even bother using distinct layouts for portrait and landscape. The important thing is to find a good layout for the width. The orientation in your media query differentiates based on specific heights which feels unnecessary. (That’s what scrolling is for )
Therefore I would say your landscape layout is fine for 600px+ widths (no matter the orientation). If you like to make the cards layout more “intelligent”, you could use something like this: grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
This code would make sure that the cards always have the same size, but at least 300px. Whenever there is enough space another card will join the same row.