body {
    width: 100%;
    height: 100%;
    margin: 0px;
    background-color: black;

    display: flex;
    align-items: center;
    justify-content: center;
}

/* whole page */
.container {
    --dim: min(95vw, 95vh);
    width: var(--dim);
    height: var(--dim);

    display: grid;
    grid-gap: 20px;
    grid-template: 1fr 1fr 1fr / 1fr 1fr 1fr;
}

/* square containing image */
.container > div {
    width: 100%;
    height: 100%;
    position: relative;
    overflow: hidden;

    display: flex;
    justify-content: center;
    align-items: center;
}

/* text behind image */
.container > div > div {
    width: 80%;
    height: 80%;
    color: red;
    font-size: 32px;
    position: absolute;
    transition: all 0.3s;

    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
}

img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 50% 0%;
    border-radius: 8%;
    position: absolute;
    transition: all 0.6s;
}

img:hover {
    opacity: 0.2;
    transition: all 0.3s;
}
