.image-carousel {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin: 0 auto;
    width: 100%;
    max-width: 500px;
}

.image-carousel__main-image {
    position: relative;
    width: 100%;
    max-height: 500px;
    height: fit-content;
    overflow: hidden;
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: 1fr;
}

.image-carousel__image {
    width: 100%;
    height: 100%;
    opacity: 0;
    transition: opacity 0.3s ease-in-out;
    grid-column: 1 / 2;
    grid-row: 1 / 2;
    object-fit: cover;
}

.image-carousel__image--active {
    opacity: 1;
}

.image-carousel__image--active:focus-visible {
    outline: 2px solid #007EAC;
}

.image-carousel__thumbnail-button:focus-visible img {
    outline: 2px solid #007EAC;
}

.image-carousel__arrow-controls {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    border: unset;
    fill: white;
    background-color: #3C3C3C;
    height: 25px;
    width: 25px;
    padding: 5px;
    z-index: 1;
}

.image-carousel__arrow-controls--left {
    left: 0;
}

.image-carousel__arrow-controls--right {
    right: 0;
}

.image-carousel__arrow-controls--inactive {
    opacity: 0.6;
}

.image-carousel__arrow-controls svg {
    width: 100%;
    height: 100%;
}

.image-carousel__thumbnail-controls {
    position: relative;
    width: 100%;
    max-width: 700px;
    margin: 0 auto;
}

.image-carousel__thumbnail-controls::before,
.image-carousel__thumbnail-controls::after {
    content: '';
    position: absolute;
    height: 100%;
    width: 10px;
    background-color: white;
    top: 0;
    z-index: 2;
}

.image-carousel__thumbnail-controls::before {
    left: 0;
    background: linear-gradient(90deg, white 0%, transparent 100%);
}

.image-carousel__thumbnail-controls::after {
    right: 0;
    background: linear-gradient(90deg, transparent 0%, white 100%);
}

.image-carousel__thumbnail-container {
    display: flex;
    flex-direction: row;
    gap: 0.5rem;
    overflow-x: scroll;
    -ms-overflow-style: none;  /* IE and Edge */
    scrollbar-width: none;  /* Firefox */
    padding: 10px 0;
}

.image-carousel__thumbnail-container::-webkit-scrollbar {
    display: none;
}

.image-carousel__thumbnail-container button {
    background: none !important;
    color: inherit;
    border: none;
    padding: 0;
    font: inherit;
    cursor: pointer;
    outline: inherit !important;
}

.image-carousel__thumbnail-container button:hover {
    background: unset;
}

.image-carousel__thumbnail-controls img {
    max-width: 100px;
    transition: transform 0.2s ease-in-out;
    width: unset;
    height: 100%;
    object-fit: cover;
}

.image-carousel__thumbnail-controls button:first-of-type img {
    margin-left: 1.2rem;
}

.image-carousel__thumbnail-controls button:last-of-type img {
    margin-right: 1.2rem;
}

.image-carousel__thumbnail--active {
    transform: scale(1.2);
    margin: 0 1rem;
}

@media only screen and (min-width: 450px) {
    .image-carousel__arrow-controls {
        height: 30px;
        width: 30px;
    }

    .image-carousel__thumbnail--active {
        margin: 0 1.5rem;
    }

    .image-carousel__thumbnail-controls button:first-of-type img {
        margin-left: 1.4rem;
    }
    
    .image-carousel__thumbnail-controls button:last-of-type img {
        margin-right: 1.4rem;
    }

    .image-carousel__thumbnail-controls img {
        max-width: 130px;
    }
}

@media only screen and (min-width: 700px) {
    .image-carousel {
        max-width: 650px;
    }

    .image-carousel__arrow-controls {
        height: 35px;
        width: 35px;
    }

    .image-carousel__thumbnail-controls img{
        max-width: 160px;
    }

    .image-carousel__thumbnail-controls button:first-of-type img {
        margin-left: 1.5rem;
    }
    
    .image-carousel__thumbnail-controls button:last-of-type img {
        margin-right: 1.5rem;
    }

    .image-carousel__thumbnail--active {
        margin: 0 2rem;
    }
}

@media only screen and (min-width: 1024px) {
    .image-carousel:not(.flexible-layout .image-carousel, .content-wide .image-carousel) {
        width: 77.30159%;
    }

    .image-carousel__arrow-controls:not(.flexible-layout .image-carousel .image-carousel__arrow-controls, .content-wide .image-carousel .image-carousel__arrow-controls) {
        height: 30px;
        width: 30px;
        padding: 5px;
    }

    .image-carousel__thumbnail-controls button:first-of-type img{
        margin-left: 1.3rem;
    }
    
    .image-carousel__thumbnail-controls button:last-of-type img{
        margin-right: 1.3rem;
    }

    .image-carousel__thumbnail-controls img {
        max-width: 130px;
    }

    .image-carousel__thumbnail--active {
        margin: 0 1.5rem;
    }

    .flexible-layout .image-carousel {
        float: unset;
    }

    .image-carousel {
        max-width: 900px;
    }

    .flexible-layout .image-carousel,
    .content-wide .image-carousel {
        max-width: 700px;
    }

    .flexible-layout .image-carousel .image-carousel__thumbnail-controls button:first-of-type img,
    .content-wide .image-carousel .image-carousel__thumbnail-controls button:first-of-type img {
        margin-left: 1.6rem;
    }
    
    .flexible-layout .image-carousel .image-carousel__thumbnail-controls button:last-of-type img,
    .content-wide .image-carousel .image-carousel__thumbnail-controls button:last-of-type img {
        margin-right: 1.6rem;
    }

    .flexible-layout .image-carousel .image-carousel__thumbnail-controls img,
    .content-wide .image-carousel .image-carousel__thumbnail-controls img {
        max-width: 175px;
    }
}

@media only screen and (min-width: 1500px) {
    .image-carousel {
        width: 100%;
    }

    .image-carousel__arrow-controls:not(.flexible-layout .image-carousel .image-carousel__arrow-controls, .content-wide .image-carousel .image-carousel__arrow-controls) {
        height: 35px;
        width: 35px;
        padding: 10px;
    }

    .image-carousel__thumbnail-controls img {
        max-width: 160px;
    }

    .image-carousel__thumbnail--active {
        margin: 0 2rem;
    }

    .image-carousel__thumbnail-controls button:first-of-type img{
        margin-left: 1.5rem;
    }
    
    .image-carousel__thumbnail-controls button:last-of-type img{
        margin-right: 1.5rem;
    }
}