@charset "utf-8";
@import url(public.css);
:root {
    --header-height: 60px;
    --footer-height: 50px;
    --sidebar-width: 200px;
}
/* 智能根字体大小 */
html {
    font-size: clamp(12px, 1.2vw, 16px); /* 自动根据视口宽度调整 */
}

/* 全局基础样式 */
html,
body {
    height: 100%;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    -moz-osx-font-smoothing: grayscale;
    font-feature-settings: 'liga';
    -webkit-text-size-adjust: 100%;
    font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Ubuntu, Helvetica Neue, Helvetica, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei UI, Microsoft YaHei, Source Han Sans CN, sans-serif;
    font-weight: 400;
    background:white;
    letter-spacing: -1px;
    font-size: 1rem; /* 等于 html 设置的字体大小 */
    color: #555;
}
@media (min-width: 769px) {
    body {
        margin: 0;
        padding: 0;
        display: grid;
        grid-template-areas:
    "header header"
    "sidebar main";
        grid-template-columns: var(--sidebar-width) 1fr;
        grid-template-rows: var(--header-height) 1fr;
        min-height: 100vh;
    }

    /* footer 不存在 ⇒ 取消底部 padding */
    body:not(:has(> footer)) main.main-container {
        padding-bottom: 0;
        max-height: calc(100vh - var(--header-height));
    }

    /* aside.sidebar 不存在 ⇒ 主内容不留左边距 */
    body:not(:has(> aside.sidebar)) main.main-container {
        padding-left: 1rem;
        grid-template-columns: 0 1fr;
    }

    /* header 不存在 ⇒ 取消顶部 padding 和 sidebar top 定位 */
    body:not(:has(> header)) main.main-container {
        padding-top: 1rem;
    }

    body:not(:has(> header)) aside.sidebar {
        top: 0;
        height: calc(100vh - var(--footer-height));
    }

    /* 顶部 */
    header {
        grid-area: header;
        height: var(--header-height);
        background: #222;
        line-height: var(--header-height);
    }

    /* 侧边栏 */
    aside.sidebar {
        grid-area: sidebar;
        background: #f8f8f8;
        position: fixed;
        top: var(--header-height);
        left: 0;
        width: var(--sidebar-width);
        /*height: calc(100vh - var(--header-height));*/
        height: calc(100vh - var(--header-height) - var(--footer-height));
        overflow-y: auto;
        z-index: 100;
    }

    /* 主内容 */
    main.main-container {
        grid-area: main;
        /*margin-left: var(--sidebar-width);*/
        padding: 1rem 1rem var(--footer-height) 1rem;
        overflow-y: auto;
        max-height: calc(100vh - var(--header-height));
        /*height: calc(100vh - var(--header-height) - var(--footer-height));*/
    }

    /* 页脚 */
    footer {
        position: fixed;
        bottom: 0;
        left: 0;
        width: 100%;
        height: var(--footer-height);
        background: #333;
        color: white;
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 0 1em;
        transition: transform 0.3s ease;
        z-index: 2000;
    }
}
.list_shopping_page .list_shopping_item{
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(2, 1fr); /* ✅ 默认移动端 1行2列 */
}
.capitalize-words {
    /* 将每个单词的首字母大写（CSS 级别） */
    text-transform: capitalize;
}
/* IPAD - 中等屏幕 (≥768px) 显示4列 */
@media (min-width: 768px) {
    .list_shopping_page .list_shopping_item{
        grid-template-columns: repeat(4, 1fr);
    }
}

/* PC端 - 大屏幕 (≥1024px) 显示5列 */
@media (min-width: 1024px) {
    .list_shopping_page .list_shopping_item {
        grid-template-columns: repeat(5, 1fr);
    }

}
.layout_mobile_footer{
    position: fixed;
    bottom: -0.12rem;
    left: 0;
    width: 100%;
    height: var(--footer-height);
    display: flex;
    /* justify-content: space-between; */
    /* align-items: center; */
    justify-content: center;
    padding: 0 0.5em;
    flex-direction: column;
    transition: transform 0.3s ease;
    z-index: 2000;
    background-color: rgb(255 255 255 / 66%);
    -webkit-backdrop-filter: saturate(180%) blur(1rem);
    backdrop-filter: saturate(180%) blur(1rem);
}
.layout_mobile_footer div a span {
    font-size: 0.8rem;
}
.layout_mobile_footer div a i {
    font-size: 1.45rem;
}
/* 地图容器 */
.map_box{overflow: hidden;margin-bottom:1rem;}
.list_map_box { width:100%; height:50vh;overflow: hidden;}

/* 列表被激活时样式 */
/*.product-item.active-on-map {*/
/*    box-shadow: 0 0.3rem 1rem rgba(0,0,0,0.08);*/
/*    border-radius:0.5rem;*/
/*    transform: translateY(-1rem);*/
/*}*/

/* 自定义圆形 logo marker 容器 */
.custom-marker {
    width: 48px;
    height: 48px;
    text-align: center;
    /*border-radius: 50%;*/
    overflow: hidden;
    display: block;
    /*box-shadow: 0 4px 10px rgba(0,0,0,0.15);*/
    /*border: 2px solid rgba(255,255,255,0.9);*/
    box-sizing: border-box;
    transition: transform 0.14s ease, box-shadow 0.14s ease;
    /*background-color: #fff; !* fallback *!*/
}

/* img 填充 */
.custom-marker img {
    width:100%;
    height:100%;
    object-fit: cover;
    /*display:block;*/
}

/* hover / 高亮样式（用于 marker DOM） */
.leaflet-marker-icon.custom-highlight .custom-marker{
    transform: scale(1.1);
    z-index: 99999 !important;
    /*box-shadow: 0 8px 20px rgba(26, 26, 25, 0.35);*/
      transition: filter 0.3s ease;
  }
.leaflet-marker-icon.custom-highlight .custom-marker img{
    filter: drop-shadow(0 8px 18px rgba(0,0,0,0.28)) saturate(1.15) brightness(0.95);
    transition: filter .12s ease, transform .12s ease;
}
.leaflet-marker-icon.my-cluster-icon.leaflet-zoom-animated.leaflet-interactive .cluster-custom .cluster-count{
    color: red;font-size: 1.1rem;
    position: absolute;left: 0.3rem;top: 0.3rem;right: 0.3rem;text-align: center;
}
/* 聚合簇样式可自定义，插件自带样式会被使用 */
.list_shopping_page .list_shopping_item .list_shopping_item_data{
    box-sizing: border-box;
    height: 100%; /* 让每个块撑满单元格，保持高度一致 */
    display: flex;
    flex-direction: column;
    /*justify-content: space-between; !* 或 center 等 *!*/
    background-color: rgba(231, 226, 219, 0.29);
    border-radius: 0.35rem;
    -webkit-transition: all 200ms cubic-bezier(0.55, 0.055, 0.675, 0.19);
    -moz-transition: all 200ms cubic-bezier(0.55, 0.055, 0.675, 0.19);
    -o-transition: all 200ms cubic-bezier(0.55, 0.055, 0.675, 0.19);
    transition: all 200ms cubic-bezier(0.55, 0.055, 0.675, 0.19);
    backdrop-filter: blur(0.3rem);
    background: linear-gradient(145deg, #e2e8ec, white);
    box-shadow:0.4rem 0.4rem 1rem #D1D9E6, -0.4rem -0.4rem 1rem white;
}
.list_shopping_page .list_shopping_item .list_shopping_item_data:hover,.list_shopping_page .list_shopping_item .list_shopping_item_data.active-on-map{
    -webkit-transform: translateY(-1rem);
    -moz-transform: translateY(-1rem);
    -o-transform: translateY(-1rem);
    -ms-transform: translateY(-1rem);
    transform: translateY(-1rem);
    /*-webkit-box-shadow: 0 16px 20px -14px rgba(0, 36, 100, 0.2);*/
    /*-moz-box-shadow: 0 16px 20px -14px rgba(0, 36, 100, 0.2);*/
    /*box-shadow: 0 16px 20px -14px rgba(0, 36, 100, 0.2);*/
    -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
    -o-transition: all 0.3s ease;
    transition: all 0.3s ease;
}

.list_shopping_page .list_shopping_item .list_shopping_item_data .list_item_cover{
    max-height: 10rem;
    overflow: hidden;
}
.list_shopping_page .list_shopping_item .list_shopping_item_data .list_item_cover .list_item_top{
    position: absolute;
    top: 0.5rem;
    left: 0.5rem;
    right: 0.5rem;
    z-index: 1;
    flex-direction: column;
    align-items: flex-start;
    font-size: 0.85rem;
}
.list_shopping_page .list_shopping_item .list_shopping_item_data .list_item_cover .list_item_top span.business_item{
    background-color: rgba(0, 0, 0, 0.4);
    color: #d5d5d5;
    border-radius: 1rem;
}
.list_shopping_page .list_shopping_item .list_shopping_item_data .list_item_cover .list_item_top span.business_item .btn_business_tel{
    font-size: 0.85rem;
    color:white;
    border-radius: 2rem;
    background-color:rgb(13 110 253 / 64%);
}

.list_shopping_page .list_shopping_item .list_shopping_item_data .list_item_cover img{
    border-radius: 0.5rem 0.5rem 0 0;
}
.list_shopping_page .list_shopping_item .list_shopping_item_data .content-wrapper .product-item-bottom{

}
.list_shopping_page .list_shopping_item .list_shopping_item_data .content-wrapper .product-item-bottom .list_item_info_lits,
.shopping_detail_info .list_item_info_lits{
    line-height:1.15rem;
}
.list_shopping_page .list_shopping_item .list_shopping_item_data .content-wrapper .product-item-bottom .list_item_info_lits .item_info_title,
.shopping_detail_info .list_item_info_lits .item_info_title{
    background-color:#e7e7e7;border-radius:0.3rem;margin-right: 0.3rem;font-size: 0.9rem;padding:0 0.15rem;
}
/* control wrapper */
.user-locate-wrap {border-width:0!important;}
.user-locate-inner { gap: .5rem; align-items:center; display:flex; }
.user-locate-inner .map-filter-inline{
  position: absolute;
    top: 0;
    right:100%;
}

/* inline filter clone */
.map-filter-clone-inline { width: 18rem; background:white; padding: .5rem; border-radius: 6px; box-shadow: 0 8px 20px rgba(0,0,0,0.12); }
.map-filter-clone-inline ul { margin:0; padding:0; list-style:none; display:flex; flex-wrap:wrap; gap:.35rem; }
.map-filter-clone-inline a { display:inline-block; padding:.28rem .5rem; border-radius:.35rem; background:#f5f5f5; color:#333; text-decoration:none; font-size:.9rem; }

/* small toggle */
.map-filter-toggle-small { width:28px; height:28px;
    border: 1px solid rgb(233, 233, 233);
    background: rgb(255, 255, 255);
    display:inline-flex; align-items:center; justify-content:center; border-radius:6px; }

/* select / button */
.user-geo-ttl-select { min-width:64px; }
.user-locate-btn img { display:block; }

/* modal for mobile filter */
.map-filter-modal { display:none; position:fixed; inset:0; background: rgba(0,0,0,0.45); z-index: 12000; display:flex; align-items:flex-end; justify-content:center; }
.map-filter-modal-inner { width:100%; max-height: 80vh;
    background:white;position: relative; border-top-left-radius:12px; border-top-right-radius:12px; padding:12px; box-shadow:0 -8px 30px rgba(0,0,0,0.18); overflow:auto; }
.map-filter-modal-close { position:absolute;
    right:0.5rem; top:0.5rem; background:transparent; border:none; font-size:1rem; }
.map-filter-modal-body { padding-top:1rem; }

/* marker nearby/list highlight */
.marker-nearby { box-shadow: 0 12px 30px rgba(255,80,60,0.18) !important; transform: scale(1.04); }
.list_shopping_item_data.nearby, .product-item.nearby { outline: 2px solid rgba(255,80,60,0.12); background: #fff9f7; }

/* custom-highlight shadow for selected marker */
.leaflet-marker-icon.custom-highlight .custom-marker,
.leaflet-marker-icon.custom-highlight .custom-marker img {
    /*box-shadow: 0 10px 22px rgba(0,0,0,0.25), 0 4px 8px rgba(0,0,0,0.12);*/
    transition: transform .12s ease, box-shadow .12s ease, filter .12s ease;
    transform-origin: center bottom;
    transform: translateY(-0.3rem);
    z-index: 9999 !important;
}

/* adjust zoom control spacing bottomright */
.leaflet-bottom.leaflet-right { margin-bottom: 8px; margin-right: 8px; }

/* responsive tweaks */
@media (max-width: 768px) {
    .map-filter-clone-inline { width: 86vw; }
    .map-filter-modal-inner { max-height: 86vh; }
}

/* ===== class-based scroll lock (modal open) ===== */
html.no-scroll, body.no-scroll {
    overflow: hidden !important;
    height: 100% !important;
    touch-action: none !important;
    -ms-touch-action: none !important;
    overscroll-behavior: contain !important;
}
.filter_box{
    /* background: linear-gradient(to top right, #ffb413, #ffcf40, #ffe08a); */
    background: linear-gradient(#1e15010a 0%, rgb(255, 255, 255) 79%);
    border-radius: 0.5rem;box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
}
.filter_box .product-filter .filter-row{
    align-items: center;
}
.user-locate-inner .map-filter-inline .map-filter-clone-inline .filter-row,.map-filter-modal-body .product-filter .filter-row{
    margin-bottom: 0.5rem;
}
.filter_box .product-filter .filter-row .filter-title{
    font-weight:450;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    word-wrap: normal;
}
.user-locate-inner .map-filter-inline .map-filter-clone-inline .filter-values,.map-filter-modal-body .product-filter .filter-row .filter-values{
    padding-left: 0.5rem;
}
.user-locate-inner .map-filter-inline .map-filter-clone-inline .filter-row .filter-title,.map-filter-modal-body .product-filter .filter-row .filter-title{
    background-color: #eaeaea;
    border-radius: 0.3rem;
}
.filter_box .product-filter .filter-row .filter-values  li.active  a, .filter_box .product-filter .filter-values li:focus a,
.filter_box .product-filter .filter-row .filter-values  li:hover  a,.user-locate-inner .map-filter-inline .map-filter-clone-inline .filter-values li:hover a
    ,.map-filter-modal-body .product-filter .filter-row .filter-values li:hover a
{
    background-color: black;
    color: white;
}

.filter_box .product-filter .filter-row .filter-values  li  a ,.user-locate-inner .map-filter-inline .map-filter-clone-inline .filter-values li a
,.map-filter-modal-body .product-filter .filter-row .filter-values li a
{
    display: block;
    padding: 0.15rem;
    border: none;
    -webkit-border-radius: 0.2rem;
    -webkit-background-clip: padding-box;
    -moz-border-radius: 0.2rem;
    -moz-background-clip: padding;
    border-radius: 0.2rem;
    background-clip: padding-box;
    color: #2c2c2c;
    -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
    -o-transition: all 0.3s ease;
    transition: all 0.3s ease;
}
.user-locate-inner .map-filter-inline .map-filter-clone-inline .filter-values li a{
    width: auto!important;
}