* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

:root {
    --gap: .5em;
    --index: calc(1vw + 1vh);
    --color-dark: #000;
}

body {
    overflow: hidden;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
}

.header {
    text-transform: uppercase;
    font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; /* (Ctrl+space для вывода подсказки встроенных шрифтов) */
    letter-spacing: .1em;
    font-size: calc(var(--index) * 2.8);
    position: absolute;
    font-weight: 200;
    text-align: center;
    opacity: .9;
    margin-top: .2em;
}

.header span {
    display: block;
    font-family: Helvetica, sans-serif;
    font-size: calc(var(--index) * .75);
    margin-top: 5px;
}

.gallery {
    width: 30vw;
    column-width: 2em;
    gap: var(--gap);
    transform: scale(8.2);
    will-change: transform; /* (обозначаем для браузера, что нужно выделить больше ресурсов на эту трансформацию) */
    transition: transform 1s cubic-bezier(.075, 1, .25, 1), opacity 1s;
}

.gallery__item {
    display: block;
    margin-bottom: var(--gap);
    transform: scale(1.001); /* (так как весь блок увеличен, картинки получатся размытыми, добавляем минимальное увеличение и на них, чтобы убрать размытие) */
    will-change: transform;
    transition: .3s;
}

.gallery__item:hover {
    transform: scale(1.03);
}

.gallery__item img {
    width: 100%;
    display: block;
}

.loaded .gallery {
    opacity: 1;
}

.loaded .header span {
    opacity: 0;
}

/* Dark Mode OS */
@media (prefers-color-scheme: dark) {
    body {
        background-color: var(--color-dark);
    }
    .header {
        filter: invert(100%); /* (изменит цвет текста) */
    }
}

body .pswp .pswp__container {
    /* transition: transform .5s ease-out; */
    transition: transform 1s cubic-bezier(.3, 0, 0, 1);
}