
/* Loader */
.loader {
    border: 6px solid rgba(0,0,0,.1);
    border-top: 6px solid #2c2c2c;
    border-radius: 50%;
    width: 24px;
    height: 24px;
    animation: spin 1.5s ease-in-out infinite;
    transform-origin: center;
}

.loader.grey {
    border: 6px solid rgba(200,200,200,.3);
    border-top: 6px solid #ccc;
}

@keyframes spin {
    0% {
        transform: translate(-50%,-50%) rotate(0deg);
    }
    100% {
        transform: translate(-50%,-50%) rotate(360deg);
    }
}


.imageGrid {
    padding: 0;
    width: 100%;
    margin: 0 auto;

    display: grid;
    gap: var(--s);

    border-radius: var(--box-corner-radius);

    grid-template-areas: "main" "strip";
    grid-template-columns: 1fr;
    grid-template-rows: max-content auto;
}

.imageGrid .selected {
    grid-area: main;
    display: flex;
}

.imageGrid .selected .dst {
    position: relative;
    overflow: hidden;
    border-radius: var(--box-corner-radius);
    height: max-content;
}


.imageGrid .selected .dst.loading .loader {
    position: absolute;
    left:50%;
    top:50%;
    transform: translate(-50%,-50%);
    width:24px;
    height:24px;
}

.imageGrid .selected .dst a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    max-width: 100%;
    /*aspect-ratio: 12/8;*/
    max-height: 100%;
    overflow: hidden;
}

.imageGrid .selected .dst a img {
    display: block;
    max-height: 100%;
    height: 100%;
    max-width: 100%;
}

.imageGrid .selected .dst.loading a, .imageGrid .selected .dst.loading .info {
    display: none;
}

.imageGrid .selected .dst .thumbnail {
    display: none;
}

.imageGrid .selected .info {
    width: 100%;
    position: absolute;
    z-index: 2;
    left: 0;
    bottom: 0;
    box-sizing: border-box;
}

.imageGrid .selected .info:before {
    content: '';
    display: block;
    position: absolute;
    background: var(--info-bg);
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
}

.imageGrid .selected .info > * {
    z-index: 1;
    position: relative;
    color: white;
    box-sizing: border-box;
    padding: var(--xs) var(--m);
}

.imageGrid .selected .info > div:first-of-type {
    padding-top: var(--m);
}

.imageGrid .selected .info > div:last-of-type {
    padding-bottom: var(--m);
}

.imageGrid .selected .desc {
    opacity: .6;
}


.imageGrid .strip {
    grid-area: strip;
    padding: 0;
    box-sizing: border-box;
    overflow: hidden;
    position: relative;
}

.imageGrid .strip ul {
    padding: 0;
    margin: 0;
    display: flex;

    list-style: none;
    gap: var(--xs);
}

.imageGrid .strip ul li {
    display: flex;
    justify-content: center;
    aspect-ratio: 1/1;
    width: var(--thumb-image-w);
    height: calc(var(--thumb-image-h) + var(--thumb-active-border));
    border-bottom: 3px solid transparent;
}

.imageGrid .strip ul li.active {
    border-color: var(--third-color);
}

.imageGrid .strip ul li > a {
    display: flex;
    width: 100%;
    justify-content: center;
    aspect-ratio: 1/1;
    align-items: center;

}

.imageGrid .strip ul li > a > img {
    max-width: 100%;
    max-height: calc(100% - 10px);
}

.imageGrid .strip li.selected {
    border-color:darkgoldenrod;
}



.viewbox {
    opacity: 0;
    visibility: hidden;
    user-select: none;
}


.viewbox.show {
    opacity: 1;
    visibility: visible;
}

.viewbox .wrapper {

    width: 60%;
    height: 100%;

    margin-right: var(--wrapper-right-margin);

    max-width: 1280px;
    max-height: 960px;

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

    position: fixed;

    top: 50%;
    left: 50%;

    background: var(--first-color);

    transform: translate(-50%, -50%);
    z-index: 1102;
}

.viewbox .wrapper .close {
    position: absolute;
    right: calc(0% - var(--wrapper-right-margin) / 2 - var(--close-w) / 2);
    top: 0;
    width: var(--close-w);
    height: var(--close-h);
    opacity: .5;
    color: white;
    cursor: pointer;
    z-index: 1102;
}

.viewbox .wrapper .close:hover {
    opacity: 1;
}

.viewbox.loading .wrapper > .loader {
    position:fixed;
    left:50%;
    top:50%;
    transform: translate(-50%,-50%);
    z-index: 1101;
}

.viewbox .nav > div {
    position: fixed;
    transition: .15s;
    top: 0;
    bottom: 0;
    width: 6%;
    opacity: .7;
    min-width: calc(42px + (var(--m) * 2));
    height: 100%;
    color: white;
    cursor: pointer;
    background: transparent;
    z-index: 1101;
}

.viewbox .nav:hover > div {
    opacity: .8;
    background: var(--nav-bg);
}

.viewbox .nav .left:hover, .viewbox .nav .right:hover {
    opacity: .95;
}

.viewbox .nav > div:active {
    opacity: 1;
    background: var(--nav-bg-active);
}

.viewbox .wrapper .nav svg {
    position: fixed;
    top: 50%;
    width: 42px;
    height: 42px;
    transform: translateY(-50%);
    color:white;
}

.viewbox .wrapper .nav .left {
    left: 0;
}

.viewbox .wrapper .nav .left svg {
    left: var(--m);
}

.viewbox .wrapper .nav .right {
    right: 0;
}

.viewbox .wrapper .nav .right svg {
    right: var(--m);
}

.viewbox .wrapper .fullImage {
    max-height: 100%;
    max-width: 100%;
}


.backdrop {
    position:fixed;
    left:0;
    top:0;
    width:100%;
    height:100%;
    background:black;
    opacity: 0;
    visibility: hidden;
    z-index: 1100;
}

.backdrop.show {
    opacity: .57;
    visibility: visible;
}

@media only screen and (max-width: 1180px) {

    .viewbox .wrapper .close {
        top: var(--s);
        right: var(--s);
    }

    .viewbox .wrapper {
        width: 100%;
        height: 100%;
    }

}

:root {
    --main-image-height: auto;


    --thumb-image-h: 64px;
    --thumb-image-w: 64px;

    --thumb-active-border: 3px;

    --thumb-image-bottom-margin: 10px;
    --thumb-image-right-margin: 8px;

    --info-bg: #020122aa;

    --wrapper-right-margin: 52px;

    --close-w: 36px;
    --close-h: 36px;

    --nav-bg: #00000065;
    --nav-bg-active: #00000078;
}