¿No tiene tamaño definido? Los elementos de bloque tienen por defecto ancho y alto definido, cuyo valor es
auto
. Entonces ocupará todo el ancho y el alto será según el contenido. Que siendo un elemento cuyo identificador se llama
main
y viene justo después de
body
debo de sospechar gravemenete que tiene contenido suficiente para que tenga altura.
El valor
cover
hace precisamente eso que dices, ajusta el fondo de tal forma que se complete siempre el ancho o el alto sin deformar la imagen, por lo que casi siempre se verá recortado algo.