.contact-cover { width: 100%; padding-bottom: 300/1440 * 100%; img { position: fixed; object-fit: cover; width: 100vw; object-position: 50% 0%; } } .contact { background: var(--background-color); z-index: 1; @include container; &>section { display: grid; grid-template-columns: 1fr; @include media(">=md") { grid-template-columns: 4fr 6fr; } grid-column-gap: 20px; grid-row-gap: 20px; } aside { svg { width: 32px; height: 32px; vertical-align: middle; fill: var(--background-color); background: var(--theme-color); border-radius: 4px; margin: 4px 10px 4px 0; padding: 3px; } ul { padding: 0; } li { list-style: none; text-align: left; a { color: var(--text-color); &:hover { color: var(--theme-color); } } } .social { a { font-size: 0; } li { display: inline-block; } svg { border-radius: 50%; padding: 7px; width: 40px; height: 40px; } } } form { padding: 20px 0; input, textarea { width: 100%; margin: 10px 0; } } } ///////////////////////////////////////// // Animations ///////////////////////////////////////// @include media(">md") { .contact-cover img { animation: zoomIn 0.8s ease-in; will-change: opacity, transform; } .contact { h1 { animation: fade-up-item-1 2.0s ease-in-out; } .subtitle { animation: fade-up-item-2 2.0s ease-in-out; } form { transform-origin: center left; animation: bounceInRightNoDelay 1.1s ease-in-out; contain: content; } .email { position: absolute; opacity: 0; top: 0; z-index: -1; } aside { transform-origin: center right; animation: bounceInLeftNoDelay 1.1s ease-in-out; contain: content; } } } .contact-response { border: 2px double var(--text-color); background-color: $shade; display: flex; justify-content: center; align-items: center; font-size: larger; padding: 20px; text-align: center; } @media (prefers-reduced-motion) { .contact * { animation: none !important; } }