main h1 {
    color: #1f4e79;
}

.mosaic {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(var(--mosaic-side), 1fr));
    grid-gap: 0.8em;
}

.mosaic .photo {
    position: relative;
    width: 100%;
    height: 0;
    padding-bottom: 100%;
}
.mosaic img {
    position: absolute;
    object-position: center;
    object-fit: cover;
    height: 100%;
    width: 100%;
    transition: filter 0.5s;
}

.photo p.credits:before {
    content: '© ';
}
.photo p.credits {
    position: absolute;
    bottom: 0;
    right: 0;
    margin: 0;
    color: white;
    background: #0008;
    border-top-left-radius: 0.5em;
    padding: 0 0.2em;
    font-size: small;
}

.mosaic .video {
    position: relative;
    width: 100%;
    height: 0;
    padding-bottom: 56.25%;           /* 9/16 */
}
.mosaic .video .yt {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

@media (min-width: 50em) {
    .mosaic.photos {
        --mosaic-side: 14em;
    }
    .mosaic.videos {
        --mosaic-side: 25em;
    }

    .photo p.credits > .name {
        display: none;
    }
    .photo p.credits:hover > .name {
        display: initial;
    }
}

@media not all and (min-width: 50em) {
    .mosaic.photos {
        --mosaic-side: 8em;
    }
    .mosaic.videos {
        --mosaic-side: 18em;
    }
}
