

/* Start:/local/components/custom/map/templates/.default/style.css?17873458169424*/
.section-contacts {
    display: flex;
    flex-wrap: wrap;
    /* flex-start нужен, чтобы карта могла залипнуть: при stretch (по умолчанию)
       колонка растягивается на всю высоту и sticky не срабатывает. */
    align-items: flex-start;
    column-gap: 24px;
}

.section-contacts h1 {
    width: 100%;
}

.contact-map {
    /* Базис 0, а не auto: у #map инлайновый width:100%, при basis:auto он бы
       занял всю строку и вытолкнул список вниз.
       min-width: 0 обязателен: без него min-width:auto берётся от внутренней
       вёрстки Яндекс-карты, колонка перестаёт сжиматься и ломает строку. */
    flex: 1 1 0%;
    min-width: 0;
}

.contact-list {
    display: flex;
    flex-wrap: wrap;
    /* Текучая ширина: раньше жёсткие 500px + карта, которая не сжималась,
       не влезали в узкое окно (ноут 1920×1080 с масштабом Windows 150%) и
       список уезжал под карту. */
    width: clamp(300px, 38%, 500px);
    flex: 0 0 auto;
    gap: 14px;
    margin: 0;
    /* Без вложенного скролла: карта слева залипает, список едет со страницей.
       Раньше список был окном на 500px и обрезал карточку на полуслове. */
    align-content: flex-start;
}

.contact-item {
    background-color: transparent;
    width: 100%;
    border: 1px solid var(--border-color);
    box-sizing: border-box;
    border-radius: 0;
    padding: 20px;
    margin: 0;
}

.contact-item__title {
    font-family: var(--font-family-display);
    font-weight: 500;
    font-size: 18px;
    line-height: 26px;
    letter-spacing: 0.01em;
    margin: 0 0 12px 0;
}

.contact-item__text,
.contact-item__address,
.contact-item__hours,
.contact-item__phone {
    margin: 0 0 6px 0;
    font-size: 15px;
    line-height: 24px;
}

.contact-item__hours {
    color: var(--text-color-4);
}

.contact-item__phone a {
    color: inherit;
    text-decoration: none;
    border-bottom: 1px solid var(--border-color);
    transition: border-color 0.15s ease;
}

.contact-item__phone a:hover {
    border-bottom-color: var(--accent);
}

.contact-item__btns {
    margin-top: 18px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

.contact-item__icons {
    display: flex;
    align-items: center;
    gap: 6px;
}

/* 38px — высота соседней .btn-link--small (14px × 1.45 + padding + рамка):
   иконки и текстовые кнопки в ряду должны стоять на одной линии. */
.contact-item__icon {
    width: 38px;
    height: 38px;
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    background: #fff;
    border: 1px solid var(--border-color);
    border-radius: 2px;
    color: var(--text-color);
    transition: background-color 500ms cubic-bezier(.22, 1, .36, 1),
                border-color 320ms cubic-bezier(.22, 1, .36, 1),
                color 320ms cubic-bezier(.22, 1, .36, 1);
}

.contact-item__icon svg {
    width: 18px;
    height: 18px;
    display: block;
}

.contact-item__icon:hover,
.contact-item__icon:focus-visible {
    background: var(--btn-bg-color);
    border-color: var(--btn-bg-color);
    color: #fff;
}

.contact-item__sep {
    width: 1px;
    height: 22px;
    margin: 0 5px;
    /* Не --border-color: hairline-бордер рядом с рамками иконок терялся. */
    background: var(--main-color-8);
    opacity: 0.5;
    flex: 0 0 auto;
}

.boutique-photo {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    /* Плотнее 0.88: при 12% просвета шапка сайта читалась сквозь затемнение и спорила с фото. */
    background: rgba(20, 18, 16, 0.96);
}

.boutique-photo[hidden] {
    display: none;
}

.boutique-photo__figure {
    margin: 0;
    max-width: min(1100px, 100%);
    max-height: 100%;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.boutique-photo__img {
    display: block;
    max-width: 100%;
    /* 100px оставлены подписи и воздуху — без вычета высокий кадр вылезает за экран. */
    max-height: calc(100vh - 100px);
    object-fit: contain;
    margin: 0 auto;
}

.boutique-photo__caption {
    color: #fff;
    font-size: 14px;
    line-height: 1.5;
    text-align: center;
    opacity: 0.75;
}

.boutique-photo__close {
    position: absolute;
    top: 16px;
    right: 16px;
    width: 44px;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: 0;
    padding: 0;
    color: #fff;
    cursor: pointer;
    opacity: 0.75;
    transition: opacity 320ms cubic-bezier(.22, 1, .36, 1);
}

.boutique-photo__close:hover {
    opacity: 1;
}

.boutique-photo__close svg {
    width: 24px;
    height: 24px;
}

/* Фото входа в балуне метки: ширина балуна задаётся картой, кадр под неё подстраивается.
   Клик разворачивает кадр на весь экран — в балуне вход толком не разглядеть. */
.contact-balloon__photo {
    display: block;
    width: 100%;
    max-width: 260px;
    height: auto;
    margin: 0 0 8px;
    cursor: zoom-in;
}

.contact-map {
    margin-bottom: 20px;
    /* Высота от экрана, а не фиксированная: на ноутбучных 720–800 CSS-px
       карта в 560px занимала весь первый экран и список был не виден. */
    height: clamp(320px, calc(100vh - 260px), 560px);
    background-color: var(--main-color-5);
    border: 1px solid var(--border-color);
    /* sticky, чтобы карта оставалась на виду, пока листаешь список бутиков.
       Внутри — абсолютный .loader, поэтому position меняется со static на sticky.
       top отсчитан от липкой шапки сайта (~57px), иначе карта уезжает под неё. */
    position: sticky;
    top: 80px;
}

.loader {
    position: absolute;
    display: inline-block;
    width: 80px;
    height: 80px;
    color: inherit;
    vertical-align: middle;
    pointer-events: none;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
}

.loader:before, .loader:after {
    position: absolute;
    content: "";
}

.loader:before {
    width: 80%;
    height: 80%;
    left: 10%;
    bottom: 10%;
    border-radius: 100% 100% 100% 0;
    box-shadow: 0px 0px 0px 0.1em var(--main-color-2);
    -webkit-animation: loader 1s linear infinite;
    animation: loader 1s linear infinite;
    transform: rotate(-46deg);
}

.loader:after {
    width: 80px;
    height: 0.3em;
    border-radius: 100%;
    left: 0;
    background-color: var(--main-color-2);
    bottom: -0.2em;
    z-index: -1;
    opacity: 0.2;
}

@-webkit-keyframes loader {
    0% {
        top: 0;
    }

    50% {
        top: -5px;
    }

    100% {
        top: 0;
    }
}

@keyframes loader {
    0% {
        top: 0;
    }

    50% {
        top: -5px;
    }

    100% {
        top: 0;
    }
}

/* Брейкпоинт опущен с 992px: две колонки нормально живут и в узком окне,
   а на 992 в стек сваливались ноуты с масштабом Windows 150%. */
@media (max-width: 860px) {
    .section-contacts{
        display: block;
    }
    .contact-map {
        height: clamp(260px, 45vh, 400px);
        /* На узких экранах карта не залипает — иначе она съедает пол-экрана. */
        position: relative;
        top: auto;
    }
    .contact-list{
        width: 100%;
        padding-left: 0;
        margin-bottom: 40px;
    }
}


@media (max-width: 767px) {
    .contact-map {
        height: 300px;
    }

    .contact-list {
        --mr-item: 10px;
        --item-col: 1;
    }

    .contact-item__title {
        font-weight: 500;
        font-size: 16px;
        line-height: 24px;
        margin: 0 0 10px 0;
    }

    .contact-item__text,
    .contact-item__address,
    .contact-item__hours,
    .contact-item__phone {
        font-size: 14px;
        line-height: 24px;
    }

    /* На тач-экранах иконка дорастает до минимального тач-таргета 44×44. */
    .contact-item__icon {
        width: 44px;
        height: 44px;
    }
}
/* End */
/* /local/components/custom/map/templates/.default/style.css?17873458169424 */
