/* FORMALUX_SHOPS_LOCATOR_V1 */

.fl-shops-locator {
    max-width: 1420px;
    margin: 0 auto;
    padding: 14px 28px 80px;
    color: #2f3033;
}

.fl-shops-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 32px;
    margin: 8px 0 34px;
}

.fl-shops-title {
    margin: 0 0 10px;
    font-size: clamp(36px, 3.3vw, 54px);
    line-height: 1.04;
    font-weight: 500;
    letter-spacing: -0.035em;
}

.fl-shops-subtitle {
    color: #77797c;
    font-size: 18px;
    line-height: 1.45;
}

.fl-shops-stats {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
}

.fl-shops-stats span {
    padding: 9px 13px;
    background: #f3f3f3;
    border-radius: 999px;
    color: #66686b;
    font-size: 13px;
    white-space: nowrap;
}

.fl-shops-toolbar {
    display: flex;
    gap: 14px;
    align-items: center;
    margin-bottom: 18px;
}

.fl-shops-search-wrap {
    position: relative;
    flex: 1 1 auto;
}

.fl-shops-search-icon {
    position: absolute;
    left: 18px;
    top: 50%;
    transform: translateY(-50%);
    color: #8b8d90;
    pointer-events: none;
}

.fl-shops-search {
    width: 100%;
    height: 54px;
    padding: 0 18px 0 52px;
    border: 1px solid #dedfe1;
    border-radius: 15px;
    outline: none;
    background: #fff;
    color: #292a2d;
    font: inherit;
    font-size: 16px;
    transition:
        border-color .18s ease,
        box-shadow .18s ease;
}

.fl-shops-search:focus {
    border-color: #b9babc;
    box-shadow: 0 0 0 4px rgba(0, 0, 0, .035);
}

.fl-shops-filters {
    display: flex;
    gap: 6px;
    padding: 5px;
    background: #f2f2f2;
    border-radius: 15px;
}

.fl-shops-filter {
    height: 44px;
    padding: 0 17px;
    border: 0;
    border-radius: 11px;
    background: transparent;
    color: #686a6d;
    cursor: pointer;
    font: inherit;
    font-size: 14px;
    white-space: nowrap;
    transition:
        background .18s ease,
        color .18s ease,
        box-shadow .18s ease;
}

.fl-shops-filter:hover {
    color: #222326;
}

.fl-shops-filter.is-active {
    background: #fff;
    color: #222326;
    box-shadow: 0 1px 5px rgba(0, 0, 0, .08);
}

.fl-shops-layout {
    display: grid;
    grid-template-columns:
        minmax(0, 1.85fr)
        minmax(340px, .8fr);
    gap: 18px;
    align-items: stretch;
}

.fl-shops-map-column,
.fl-shops-panel {
    min-width: 0;
}

.fl-shops-map-shell {
    position: relative;
    height: 650px;
    overflow: hidden;
    border-radius: 24px;
    background: #f2f2f2;
}

.fl-shops-map {
    width: 100%;
    height: 100%;
}

.fl-shops-map-loader {
    position: absolute;
    left: 18px;
    bottom: 18px;
    z-index: 10;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 11px 15px;
    border-radius: 12px;
    background: rgba(255, 255, 255, .94);
    box-shadow: 0 7px 25px rgba(0, 0, 0, .12);
    color: #55575a;
    font-size: 13px;
    backdrop-filter: blur(8px);
    transition:
        opacity .2s ease,
        visibility .2s ease;
}

.fl-shops-map-loader.is-hidden {
    opacity: 0;
    visibility: hidden;
}

.fl-shops-loader-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #ef4444;
    animation: flShopPulse 1.1s ease-in-out infinite;
}

@keyframes flShopPulse {
    0%, 100% {
        opacity: .35;
        transform: scale(.85);
    }

    50% {
        opacity: 1;
        transform: scale(1);
    }
}

.fl-shops-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 18px;
    padding: 13px 5px 0;
    color: #77797c;
    font-size: 13px;
}

.fl-shops-legend span {
    display: inline-flex;
    align-items: center;
    gap: 7px;
}

.fl-shops-legend-dot {
    display: inline-block;
    width: 9px;
    height: 9px;
    border-radius: 50%;
}

.fl-shops-legend-dot--official {
    background: #ef4444;
}

.fl-shops-legend-dot--partner {
    background: #3f4145;
}

.fl-shops-panel {
    display: flex;
    flex-direction: column;
    height: 650px;
    overflow: hidden;
    border: 1px solid #ececed;
    border-radius: 24px;
    background: #fff;
}

.fl-shops-panel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    min-height: 72px;
    padding: 0 21px;
    border-bottom: 1px solid #eeeeef;
}

.fl-shops-result-title {
    overflow: hidden;
    font-size: 17px;
    font-weight: 500;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.fl-shops-result-count {
    display: inline-flex;
    min-width: 31px;
    height: 31px;
    align-items: center;
    justify-content: center;
    padding: 0 8px;
    border-radius: 999px;
    background: #f1f1f1;
    color: #65676a;
    font-size: 13px;
}

.fl-shops-list {
    flex: 1 1 auto;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
    scrollbar-color: #d7d7d8 transparent;
}

.fl-shop-card {
    position: relative;
    padding: 19px 21px 18px;
    border-bottom: 1px solid #eeeeef;
    cursor: pointer;
    transition:
        background .16s ease,
        box-shadow .16s ease;
}

.fl-shop-card:last-child {
    border-bottom: 0;
}

.fl-shop-card:hover {
    background: #fafafa;
}

.fl-shop-card.is-active {
    z-index: 1;
    background: #f7f7f7;
    box-shadow:
        inset 3px 0 0 #ef4444;
}

.fl-shop-card-type {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 8px;
    color: #7c7e81;
    font-size: 11px;
    line-height: 1.2;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.fl-shop-card-type::before {
    content: "";
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #3f4145;
}

.fl-shop-card--official
.fl-shop-card-type::before {
    background: #ef4444;
}

.fl-shop-card-name {
    margin-bottom: 8px;
    color: #292a2d;
    font-size: 16px;
    font-weight: 500;
    line-height: 1.32;
}

.fl-shop-card-city {
    margin-bottom: 5px;
    color: #4c4e51;
    font-size: 14px;
    font-weight: 500;
}

.fl-shop-card-address {
    color: #797b7e;
    font-size: 13px;
    line-height: 1.45;
}

.fl-shop-card-phone {
    display: inline-block;
    margin-top: 9px;
    color: #333538;
    font-size: 14px;
    text-decoration: none;
}

.fl-shop-card-phone:hover {
    text-decoration: underline;
}

.fl-shop-card-loading {
    margin-top: 9px;
    color: #a0a1a3;
    font-size: 11px;
}

.fl-shops-empty {
    padding: 35px 22px;
    color: #8a8c8f;
    font-size: 14px;
    line-height: 1.45;
}

.fl-shop-balloon {
    max-width: 280px;
    font-family: Arial, sans-serif;
}

.fl-shop-balloon-image {
    width: 100%;
    max-height: 125px;
    margin: 0 0 11px;
    object-fit: cover;
    border-radius: 10px;
}

.fl-shop-balloon-type {
    margin-bottom: 5px;
    color: #888a8d;
    font-size: 11px;
    text-transform: uppercase;
}

.fl-shop-balloon-name {
    margin-bottom: 7px;
    color: #242528;
    font-size: 15px;
    font-weight: 600;
    line-height: 1.3;
}

.fl-shop-balloon-address,
.fl-shop-balloon-phone {
    color: #636568;
    font-size: 13px;
    line-height: 1.4;
}

.fl-shop-balloon-phone {
    margin-top: 6px;
}

.fl-shop-balloon-phone a {
    color: #303236;
}

.fl-shops-error {
    max-width: 1200px;
    margin: 30px auto;
    padding: 20px;
    border-radius: 15px;
    background: #fff0f0;
    color: #991b1b;
}

@media (max-width: 1050px) {

    .fl-shops-layout {
        grid-template-columns:
            minmax(0, 1.5fr)
            minmax(300px, .9fr);
    }

    .fl-shops-map-shell,
    .fl-shops-panel {
        height: 590px;
    }

}

@media (max-width: 820px) {

    .fl-shops-locator {
        padding:
            8px
            14px
            55px;
    }

    .fl-shops-head {
        display: block;
        margin-bottom: 22px;
    }

    .fl-shops-title {
        font-size: 36px;
    }

    .fl-shops-subtitle {
        font-size: 15px;
    }

    .fl-shops-stats {
        justify-content: flex-start;
        margin-top: 15px;
    }

    .fl-shops-toolbar {
        display: block;
    }

    .fl-shops-filters {
        width: 100%;
        margin-top: 10px;
        overflow-x: auto;
    }

    .fl-shops-filter {
        flex: 1 0 auto;
    }

    .fl-shops-layout {
        display: block;
    }

    .fl-shops-map-shell {
        height: 430px;
        border-radius: 18px;
    }

    .fl-shops-panel {
        height: 520px;
        margin-top: 14px;
        border-radius: 18px;
    }

    .fl-shops-legend {
        padding-bottom: 4px;
    }

}

@media (max-width: 480px) {

    .fl-shops-title {
        font-size: 32px;
    }

    .fl-shops-map-shell {
        height: 390px;
    }

    .fl-shops-map-loader {
        left: 10px;
        right: 10px;
        bottom: 10px;
    }

    .fl-shops-panel {
        height: 490px;
    }

}

/* FORMALUX_SHOPS_AUTOCOMPLETE_V2 */

.fl-shops-search-wrap {
    z-index: 40;
}

.fl-shop-suggestions {
    position: absolute;
    z-index: 100;
    top: calc(100% + 7px);
    left: 0;
    right: 0;
    overflow: hidden;
    max-height: 320px;
    overflow-y: auto;
    border: 1px solid #e2e2e3;
    border-radius: 15px;
    background: #fff;
    box-shadow:
        0 14px 40px rgba(0, 0, 0, .12);
}

.fl-shop-suggestion {
    display: flex;
    width: 100%;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 13px 17px;
    border: 0;
    border-bottom: 1px solid #eeeeef;
    background: #fff;
    color: #292a2d;
    cursor: pointer;
    text-align: left;
    font: inherit;
}

.fl-shop-suggestion:last-child {
    border-bottom: 0;
}

.fl-shop-suggestion:hover,
.fl-shop-suggestion.is-active {
    background: #f6f6f6;
}

.fl-shop-suggestion-city {
    font-size: 15px;
    font-weight: 500;
}

.fl-shop-suggestion-count {
    flex: 0 0 auto;
    color: #97999c;
    font-size: 12px;
}

@media (max-width: 820px) {

    .fl-shop-suggestions {
        max-height: 260px;
    }

}

/* FORMALUX_SHOPS_LOCATOR_V3 */

.fl-shop-suggestion strong {
    font-weight: 600;
}

.fl-shop-suggestion small {
    color: #96989b;
    font-size: 12px;
}

.fl-shops-map .ymaps-2-1-79-cluster-content__header {
    font-weight: 500;
}


/* ==========================================================
   FORMA LUX SHOPS — MOBILE V6
   Only <= 820px. Desktop remains unchanged.
   ========================================================== */

.fl-shop-mobile-sheet {
    display: none;
}

@media (max-width: 820px) {

    /*
     * Shops page only: remove breadcrumb from scarce
     * mobile vertical space.
     */
    .bx-breadcrumb,
    .breadcrumb,
    .breadcrumbs {
        display: none !important;
    }

    .fl-shops-locator {
        margin-top: 0 !important;
        padding-top: 0 !important;
    }

    /*
     * Compact toolbar.
     */
    .fl-shops-toolbar {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) !important;
        gap: 8px !important;
        margin-top: 0 !important;
        margin-bottom: 10px !important;
    }

    .fl-shops-search-wrap {
        min-height: 52px !important;
        height: 52px !important;
        border-radius: 16px !important;
    }

    .fl-shops-search {
        min-height: 52px !important;
        height: 52px !important;
        padding-top: 0 !important;
        padding-bottom: 0 !important;
        padding-left: 48px !important;
        padding-right: 44px !important;
        font-size: 17px !important;
        line-height: 52px !important;
    }

    .fl-shops-search-icon {
        left: 16px !important;
        width: 20px !important;
        height: 20px !important;
    }

    .fl-shops-filters {
        min-height: 46px !important;
        height: 46px !important;
        padding: 4px !important;
        gap: 2px !important;
        border-radius: 14px !important;
    }

    .fl-shops-filter {
        min-width: 0 !important;
        min-height: 38px !important;
        height: 38px !important;
        padding: 0 10px !important;
        border-radius: 11px !important;
        font-size: 14px !important;
        line-height: 38px !important;
        white-space: nowrap !important;
    }

    .fl-shops-layout {
        gap: 10px !important;
    }

    /*
     * A useful map area without allowing it to occupy
     * nearly the whole mobile screen.
     */
    .fl-shops-map-shell {
        position: relative !important;
        height: 350px !important;
        min-height: 350px !important;
        border-radius: 18px !important;
        overflow: hidden !important;
    }

    .fl-shops-map {
        height: 100% !important;
        min-height: 0 !important;
    }

    .fl-shops-legend {
        margin-top: 8px !important;
        gap: 14px !important;
        font-size: 12px !important;
    }

    /*
     * Native Yandex balloon is unsuitable for our narrow
     * mobile map. The custom card below replaces it.
     */
    .fl-shops-map-shell .ymaps-2-1-79-balloon-pane,
    .fl-shops-map-shell .ymaps-2-1-79-balloon {
        display: none !important;
    }

    /*
     * Compact shop card over bottom of map.
     */
    .fl-shop-mobile-sheet {
        position: absolute;
        z-index: 50;
        left: 10px;
        right: 10px;
        bottom: 10px;

        display: none;
        align-items: stretch;
        gap: 10px;

        box-sizing: border-box;
        min-height: 106px;
        max-height: 132px;
        padding: 10px 38px 10px 10px;

        background: rgba(255,255,255,.98);
        border: 1px solid rgba(0,0,0,.08);
        border-radius: 16px;
        box-shadow: 0 8px 30px rgba(0,0,0,.16);

        overflow: hidden;
    }

    .fl-shop-mobile-sheet.is-open {
        display: flex;
    }

    .fl-shop-mobile-sheet__image {
        flex: 0 0 92px;
        width: 92px;
        height: 92px;
        object-fit: cover;
        border-radius: 11px;
        background: #f3f3f3;
    }

    .fl-shop-mobile-sheet__body {
        min-width: 0;
        flex: 1 1 auto;
        display: flex;
        flex-direction: column;
        justify-content: center;
    }

    .fl-shop-mobile-sheet__type {
        margin: 0 0 3px;
        color: #777;
        font-size: 9px;
        line-height: 1.2;
        text-transform: uppercase;
        letter-spacing: .02em;
    }

    .fl-shop-mobile-sheet__name {
        margin: 0 0 4px;
        color: #222;
        font-size: 14px;
        line-height: 1.18;
        font-weight: 600;

        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    .fl-shop-mobile-sheet__address {
        color: #777;
        font-size: 11px;
        line-height: 1.25;

        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    .fl-shop-mobile-sheet__phone {
        display: inline-block;
        margin-top: 4px;
        color: #222;
        font-size: 12px;
        line-height: 1.2;
        text-decoration: none;
    }

    .fl-shop-mobile-sheet__close {
        position: absolute;
        top: 7px;
        right: 7px;

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

        width: 28px;
        height: 28px;
        padding: 0;

        border: 0;
        border-radius: 50%;
        background: rgba(245,245,245,.96);
        color: #777;

        font-size: 24px;
        line-height: 1;
        font-weight: 300;

        cursor: pointer;
    }
}

@media (max-width: 480px) {

    .fl-shops-map-shell {
        height: 330px !important;
        min-height: 330px !important;
    }

    .fl-shop-mobile-sheet {
        left: 8px;
        right: 8px;
        bottom: 8px;

        min-height: 98px;
        max-height: 122px;
        padding: 8px 34px 8px 8px;
    }

    .fl-shop-mobile-sheet__image {
        flex-basis: 82px;
        width: 82px;
        height: 82px;
    }

    .fl-shop-mobile-sheet__name {
        font-size: 13px;
    }
}
