/* ==========================================================================
   IMAGES
   ========================================================================== */


/* --------------------------------------------------------------------------
   Component
   -------------------------------------------------------------------------- */

.sv_images,
.sv_images_header,
.sv_images_gallery {
    width: 100%;
    min-width: 0;
}

.sv_images {
    position: relative;
    overflow: hidden;
}

.sv_images_header {
    padding-bottom: var(--space_2);
}


/* --------------------------------------------------------------------------
   Gallery
   -------------------------------------------------------------------------- */

.sv_images_gallery {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: var(--space_2);
    padding-bottom: var(--space_10);
}

.sv_image {
    position: relative;
    display: block;
    min-width: 0;
    margin: 0;
    overflow: hidden;
    aspect-ratio: 2 / 1;
    background-color: var(--color_RockBlue_25);
}

.sv_image_button {
    display: block;
    width: 100%;
    height: 100%;
    padding: 0;
    border: 0;
    background: transparent;
    cursor: pointer;
}

.sv_image img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 250ms ease, opacity 250ms ease;
}

.sv_image_button:hover img,
.sv_image_button:focus-visible img {
    transform: scale(1.025);
}


/* --------------------------------------------------------------------------
   Overlay
   -------------------------------------------------------------------------- */

.sv_images_overlay {
    position: fixed;
    inset: 0;
    z-index: 100;
    display: none;
    place-items: center;
    padding: var(--space_4);
    background-color: var(--color_RockBlue_75);
}

    .sv_images_overlay.state_active {
        display: grid;
    }


/* --------------------------------------------------------------------------
   Viewer
   -------------------------------------------------------------------------- */

.sv_images_viewer {
    position: relative;
    display: flex;
    flex-direction: column;
    width: min( calc(100vw - var(--space_8)), calc(var(--space_10) * 12) );
    max-height: calc(100dvh - var(--space_8));
    overflow: hidden;
    background-color: var(--color_White);
    box-shadow: 0 0 var(--space_4) var(--color_LunarGreen);
}


/* --------------------------------------------------------------------------
   Viewer header
   -------------------------------------------------------------------------- */

.sv_images_viewer_header {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    min-height: var(--space_6);
    padding-inline: var(--space_2);
}

.sv_images_position {
    font-family: var(--font_Roboto);
}

.sv_images_title {
    margin: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: center;
    font-family: var(--font_Roboto);
    font-size: var(--font_size_16);
    font-weight: 400;
    line-height: 1.2;
}

.sv_images_close {
    display: grid;
    place-items: center;
    width: var(--space_4);
    height: var(--space_4);
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--color_LunarGreen);
    cursor: pointer;
}

    .sv_images_close .svg_icon {
        width: 100%;
        height: 100%;
        fill: currentColor;
    }


/* --------------------------------------------------------------------------
   Image stage
   -------------------------------------------------------------------------- */

.sv_images_stage {
    position: relative;
    display: grid;
    place-items: center;
    min-height: var(--space_80);
    max-height: calc(100dvh - var(--space_12));
    overflow: auto;
    padding: var(--space_1);
}

.sv_images_large {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
}


/* --------------------------------------------------------------------------
   Navigation
   -------------------------------------------------------------------------- */

.sv_images_previous,
.sv_images_next {
    position: absolute;
    top: 50%;
    display: grid;
    place-items: center;
    width: var(--space_5);
    height: var(--space_5);
    padding: 0;
    border: 0;
    border-radius: 50%;
    background-color: var(--color_RockBlue_75);
    cursor: pointer;
    transform: translateY(-50%);
}

.sv_images_previous {
    left: var(--space_2);
}

.sv_images_next {
    right: var(--space_2);
}

    .sv_images_previous .svg_icon,
    .sv_images_next .svg_icon {
        width: 50%;
        height: 50%;
        fill: var(--color_White);
    }

.sv_images_previous .svg_icon {
    transform: rotate(180deg);
}


/* --------------------------------------------------------------------------
   Responsive
   -------------------------------------------------------------------------- */

@media only screen and (max-width: 64em) {

    .sv_images_gallery {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .sv_images_viewer {
        width: 100%;
        max-width: 100%;
        aspect-ratio: 1 / 1;
        max-height: none;
    }
}

@media only screen and (max-width: 48em) {

    .sv_images_gallery {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        padding-inline: var(--space_2);
    }

    .sv_images_overlay {
        padding: var(--space_2);
    }

    .sv_images_viewer {
        width: 100%;
        max-height: calc(100dvh - var(--space_4));
    }

    .sv_images_previous {
        left: var(--space_1);
    }

    .sv_images_next {
        right: var(--space_1);
    }
}

@media only screen and (max-width: 30em) {

    .sv_images_gallery {
        grid-template-columns: 1fr;
    }
}


/* --------------------------------------------------------------------------
   Reduced motion
   -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {

    .sv_image img {
        transition: none;
    }
}
