*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { width: 100%; height: 100vh; display: flex; justify-content: center; align-items: center; background: #e4e4e4; } .container { display: grid; grid-template-rows: repeat(2, 1fr); grid-template-columns: repeat(2, 1fr); grid-gap: 30px; } figure.card { position: relative; width: 380px; height: 240px; background-image: var(--image-src); background-position: 50% 50%; background-size: 125%; transition: background 400ms ease; box-shadow: 0 6.7px 5.3px rgba(0, 0, 0, 0.03), 0 22.3px 17.9px rgba(0, 0, 0, 0.05), 0 100px 80px rgba(0, 0, 0, 0.07); overflow: hidden; } figure.card:hover figcaption { transform: translateY(0px); } figure.card--1:hover { background-position: 50% 100%; } figure.card--1 figcaption { bottom: 0; transform: translateY(80px); } figure.card--2 { background-size: 110%; } figure.card--2:hover { background-position: 50% -100%; } figure.card--2 figcaption { top: 0; transform: translateY(-80px); } figure.card--3 { background-size: 115%; } figure.card--3:hover { background-position: -100% 50%; } figure.card--3 figcaption { left: 0; transform: translateX(-180px); } figure.card--4:hover { background-position: 100% 50%; } figure.card--4 figcaption { right: 0; transform: translateX(180px); } figure.card--1 figcaption, figure.card--2 figcaption { width: 100%; height: 80px; padding: 15px 20px; } figure.card--3 figcaption, figure.card--4 figcaption { flex-direction: column; width: 180px; height: 100%; padding: 20px 15px; } figure.card figcaption { display: flex; justify-content: space-between; align-items: center; position: absolute; background: #282828; transition: transform 400ms ease; } figure.card figcaption .info { color: #e2e2e2; font-family: "Montserrat"; } figure.card figcaption .info h3 { font-size: 1.2rem; letter-spacing: 1px; margin-bottom: 2px; } figure.card figcaption .info span { color: #72cc60; font-size: 0.85rem; } figure.card figcaption .links { display: flex; justify-content: end; align-items: center; } figure.card figcaption .links a { text-decoration: none; position: relative; width: 35px; height: 35px; display: flex; justify-content: center; align-items: center; color: #fff; margin-left: 10px; font-size: 1.2rem; opacity: 0.65; border-radius: 50%; overflow: hidden; } figure.card figcaption .links a:hover { opacity: 1; } figure.card figcaption .links a:focus { outline: none; } figure.card figcaption .links a:focus::after { transform: scale(1); opacity: 1; } figure.card figcaption .links a::after { content: ""; position: absolute; left: 0; top: 0; width: 100%; height: 100%; border-radius: 50%; opacity: 0; background: rgba(255, 255, 255, 0.05); transform: scale(0.5); z-index: -1; transition: all 150ms ease; } @media only screen and (max-width: 900px) { body { align-items: start; } .container { grid-template-rows: repeat(4, 1fr); grid-template-columns: 1fr; grid-gap: 40px; padding: 80px 0; } } .support { position: fixed; right: 10px; bottom: 10px; padding: 10px; display: flex; } .support a { margin: 0 10px; color: #222; font-size: 1.8rem; backface-visibility: hidden; transition: all 150ms ease; } .support a:hover { transform: scale(1.1); }