.img-container {
    display: inline-block;
    width: 100%;
    aspect-ratio: 4/3;
    height: auto;
    overflow: hidden;
    position: relative;
    max-width: 100%;
}

.aspect-ratio-1-1 {
    aspect-ratio: 1/1;
}

.aspect-ratio-4-3 {
    aspect-ratio: 4/3;
}

.aspect-ratio-16-9 {
    aspect-ratio: 16/9;
}

.aspect-ratio-16-10 {
    aspect-ratio: 16/10;
}

.aspect-ratio-21-9 {
    aspect-ratio: 9/21;
}

.aspect-ratio-3-4 {
    aspect-ratio: 3/4;
}

.aspect-ratio-9-16 {
    aspect-ratio: 9/16;
}

.aspect-ratio-10-16 {
    aspect-ratio: 10/16;
}

.aspect-ratio-9-21 {
    aspect-ratio: 9/21;
}

.img-container::before, .img-container::after {
    content: '';
}

.img-container::before, .img-container::after, .img-container img {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
}

.img-container::before {
    z-index: 2;
    background-color: rgba(0, 0, 0, 0.7);
    opacity: 0;
    visibility: hidden;
    transition: all 0.3s ease-in-out;
}

a.img-container i {
    display: block;
    width: 46px;
    height: 46px;
    position: absolute;
    left: 50%;
    top: 50%;
    margin-left: -23px;
    margin-top: -23px;
    z-index: 4;
    text-align: center;
    line-height: 46px;
    font-size: 36px;
    color: white;
    opacity: 0;
    visibility: hidden;
    transition: all 0.3s ease-in-out;
} 

a.img-container:hover i {
    opacity: 1;
    visibility: visible;
}

a.img-container:hover::before {
    opacity: 1;
    visibility: visible;
}

.section:nth-child(2n+1) .img-container::after {
    background-color: #f9f9f9;
}

.img-container::after {
    z-index: 3;
    background-color: white;
    opacity: 1;
    transition: all 0.3s ease-in-out;
}

.img-container.loaded::after {
    opacity: 0;
    visibility: hidden;
}

.img-container img {
    transition: all 0.3s ease-in-out;
    object-fit: cover;
    z-index: 1;
}

a.img-container:hover img, .img-container a:hover img {
    transform: scale(1.25);
}

.img-container .shadow {
    display: block;
    width: 100%;
    height: 100%;
    z-index: 10;
    position: absolute;
    top: 0;
    left: 0;
    box-shadow: inset 0px 0px 24px rgba(0, 0, 0, 0.3);
    border-radius: 5px;
    opacity: 0;
    transition: all 0.3s ease-in-out;
    z-index: 10;
}

.img-container.loaded .shadow {
    opacity: 1;
    transition-delay: 0s;
    
}

.img-container.imgfit img {
    object-fit: contain !important;
}