¿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.