Ваш CSS должен выглядеть так:
body {
background-image: linear-gradient(to bottom, red, yellow);
background-repeat: no-repeat;
background-attachment: fixed;
position: static;
}
#card {
position: relative;
width: 300px;
height: 500px;
margin: auto;
box-shadow: 5px 5px 10px rgba(0, 0, 0, .5);
background-color: #ffffff;
padding: 75px;
border-radius: 35px 35px;
-webkit-transition-duration: 0.2s;
transition-duration: 0.2s;
}
позиция: абсолютный портит отображение вашего фона. Это позиционирует элемент относительно его родителя. Так как родительский элемент body является html-тегом, я не слишком уверен, где это позиционирует тело, но это не то место, где вы захотите его.
Смотрите здесь: https://www.w3schools.com/css/css_positioning.asp
Вы также не должны описывать расположение внутри тела, поскольку все, что вы помещаете внутрь него, будет пытаться находиться на 50% от верха и левого угла. То же самое с преобразованием. Эти стили должны быть добавлены к фактическому элементу вашего стиля.
background-repeat: no-repeat, background-attachment: fixed и position: static гарантирует, что градиент подгоняется под размер окна и не вызывает ошибок.
Вы можете видеть, как я добавил стили высоты, ширины и поля для класса вашей карты.
https://jsfiddle.net/AnthrOne/1guch73d/14/