@import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap"); * { position: relative; box-sizing: border-box; } html { background: #000; color: #fff; font-family: "Montserrat", sans-serif; font-weight: 400; } h1, h2, h3, h4, strong { font-weight: 700; } body { min-height: 100vh; display: grid; place-items: center; width: 100%; overflow: hidden; } .app { display: grid; padding: 5vmin; } .gallery { display: flex; gap: 1rem; margin: 1rem 0; align-items: center; } .image { flex: 1 1 100%; opacity: 0.7; transition: opacity 0.3s linear; cursor: pointer; } .image img { max-width: 100%; height: auto; --radius: 1rem; border-radius: var(--radius); } .image .title { display: block; font-size: 2vw; margin: 0.5rem 0; color: #aaa; } .image .title strong { display: block; color: white; } .image[data-selected] { opacity: 1; flex-grow: 1.15; flex-shrink: 0.85; } [data-flip] { transition: transform 0.3s cubic-bezier(0.2, 0, 0.5, 1), border-radius 0.3s cubic-bezier(0.2, 0, 0.5, 1); transform-origin: top left; } [data-flipping] { transition: none; transform: var(--flip-translate) var(--flip-scale); --flip-translate: translate(calc(-1px * var(--dx)), calc(-1px * var(--dy))); --flip-scale: scale(calc(1 / var(--dw)), calc(1 / var(--dh))); --flip-radius: calc((var(--dw)) * var(--radius)) / calc((var(--dh)) * var(--radius)); } .title[data-flipping] { transform: var(--flip-translate); } img[data-flipping] { border-radius: var(--flip-radius); }