/* Desk visual fixes: namespaced overrides after merged Vue CSS + Layui. */

#desk-home-root .banner-section {
  aspect-ratio: auto;
  height: 70vh;
  height: 70dvh;
  min-height: 12.5rem;
  max-height: none;
  background: linear-gradient(180deg, #fdf7ec 0%, #f3e6cd 100%);
}

/* 首页轮播：图片区域与圆点分层，避免整块 <a> 盖住切换按钮 */
#desk-home-root .banner-bg-wrapper {
  display: block;
  width: 100%;
  height: 100%;
  z-index: 1;
  text-decoration: none;
  color: inherit;
}

#desk-home-root .banner-dots {
  z-index: 5;
  pointer-events: auto;
}

#desk-home-root .banner-dot {
  display: block;
  flex: 0 0 auto;
}

#desk-home-root .banner-section.media-skel:has(.banner-title-img) {
  background-image: none !important;
  animation: none;
}

.desk-list-page .banner-section,
.desk-about-page .banner-section {
  aspect-ratio: 21 / 6;
  height: auto;
  min-height: 10rem;
  max-height: none;
  background: #f5f5f5;
  line-height: 0;
}

/* ===== 登录弹窗：微信扫码 / 密码登录 ===== */
.login-card .tab-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.75rem;
  margin-bottom: 1.35rem;
}

.login-card .tab-item,
.login-card button.tab-item {
  position: relative;
  min-height: 0;
  padding: 0.35rem 0.15rem 0.55rem;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: #b0a89c;
  font-size: 0.9375rem;
  font-weight: 400;
  line-height: 1.4;
  text-decoration: none;
  box-shadow: none;
  cursor: pointer;
  transition: color 0.2s ease;
}

.login-card .tab-item.is-active {
  color: #1a1a1a;
  font-weight: 600;
  background: transparent;
  border: 0;
}

.login-card .tab-item.is-active::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 0.1875rem;
  border-radius: 999px;
  background: #1a1a1a;
}

.login-card .wechat-box {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
}

.login-card [data-desk-login-panel][hidden],
.login-card .wechat-box[hidden] {
  display: none !important;
}

/* 移动端汉堡菜单：el-row 的 display:flex 会盖掉 [hidden]，默认必须折叠 */
.header-mobile-panel[hidden] {
  display: none !important;
}

.login-card .wechat-qr-wrap {
  width: 11.5rem;
  height: 11.5rem;
  border-radius: 0.75rem;
  overflow: hidden;
  background: #f7f3eb;
}

.login-card .wechat-qr,
.login-card .wechat-qr-wrap img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* ===== 最新活动扑克牌 ===== */
.activity-poker-card {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  cursor: pointer;
  transition: transform 0.8s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.8s cubic-bezier(0.34, 1.56, 0.64, 1);
  transform-origin: center center;
}

.activity-poker-card.is-hidden {
  opacity: 0;
  pointer-events: none;
  transform: translate3d(0, 30px, -100px) scale(0.75);
  z-index: 1;
}

.activity-poker-card.is-prev {
  opacity: 0.75;
  z-index: 2;
  transform: translate3d(-34%, 26px, -60px) scale(0.64);
}

.activity-poker-card.is-prev:hover {
  opacity: 0.85;
  transform: translate3d(-36%, 20px, -40px) scale(0.67);
}

.activity-poker-card.is-next {
  opacity: 0.75;
  z-index: 2;
  transform: translate3d(34%, 26px, -60px) scale(0.64);
}

.activity-poker-card.is-next:hover {
  opacity: 0.85;
  transform: translate3d(36%, 20px, -40px) scale(0.67);
}

.activity-poker-card.is-active {
  opacity: 1;
  z-index: 10;
  transform: translate3d(0, 0, 0) scale(1);
}

@media (max-width: 991px) {
  .activity-poker-card.is-prev {
    transform: translate3d(-32%, 16px, -30px) scale(0.68);
  }
  .activity-poker-card.is-next {
    transform: translate3d(32%, 16px, -30px) scale(0.68);
  }
}

/* ===== 首页城市漫游分类（对齐 Vue HomePage .tab-item，避开全局 .tab-item 冲突） ===== */
#desk-home-root.page-container {
  --text: #262220;
  --muted: #9a8f80;
  min-height: 0;
}

/* desk.css 的 .main-content{padding-bottom:4rem} 会在页脚黑条上方露出 #f5f5f5 灰条 */
.main-content {
  padding-bottom: 0 !important;
}

.main-content:has(#desk-home-root),
.main-content:has(#desk-page-root) {
  padding-bottom: 0 !important;
  min-height: 0;
}

/* 主内容区背景铺满到 footer，避免短页底部露灰 */
.main-content > .page-container,
.main-content > #desk-page-root {
  min-height: 100%;
}

#desk-home-root .section-merchant .merchant-header-row {
  grid-template-columns: minmax(0, 1fr) auto;
}

#desk-home-root .section-merchant .merchant-tabs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  justify-self: stretch;
  gap: 0.5rem;
  min-width: 0;
  max-width: 100%;
  grid-column: 1;
  grid-row: 2;
  overflow: visible;
  padding: 0.15rem 0.75rem 0.15rem 0;
}

#desk-home-root .section-merchant .right-action-group {
  grid-column: 2;
  grid-row: 2;
  z-index: 2;
  flex-shrink: 0;
  align-self: start;
  padding-left: 0.5rem;
}

@media (max-width: 991px) {
  #desk-home-root .section-merchant .merchant-header-row {
    grid-template-columns: 1fr;
  }

  #desk-home-root .section-merchant .merchant-tabs {
    grid-column: 1;
    grid-row: 2;
    padding-right: 0;
  }

  #desk-home-root .section-merchant .right-action-group {
    grid-column: 1;
    grid-row: 3;
    justify-self: center;
    padding-left: 0;
  }
}

#desk-home-root .section-merchant .merchant-tabs::-webkit-scrollbar {
  display: none;
}

#desk-home-root .section-merchant .home-tab-item {
  flex-shrink: 0;
  box-sizing: border-box;
  min-height: 0;
  margin: 0;
  padding: 0.4em 1.1em;
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  color: #9a8f80;
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.4;
  white-space: nowrap;
  text-decoration: none;
  box-shadow: none;
  cursor: pointer;
  user-select: none;
  transition: border-color 0.2s ease, color 0.2s ease;
}

#desk-home-root .section-merchant .home-tab-item::after,
#desk-home-root .section-merchant .home-tab-item.is-active::after {
  content: none;
  display: none;
}

#desk-home-root .section-merchant .home-tab-item.is-active {
  border-color: #262220;
  color: #262220;
  background: transparent;
  font-weight: 600;
}

@media (max-width: 767px) {
  #desk-home-root .section-merchant .section-footer-row .center-action-box {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.85rem;
    width: 100%;
  }

  #desk-home-root .section-merchant .section-footer-row .more-btn {
    margin-inline: auto;
  }

  #desk-home-root .section-merchant .section-footer-row .bottom-arrow-btns {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    margin-inline: auto;
  }
}

/* ===== /merchants /goods 分类按钮（避开全局 .tab-item 冲突） ===== */
.tabs-wrap {
  display: flex;
  justify-content: center;
  min-width: 0;
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

.tabs-wrap .merchant-tabs,
.tabs-wrap .goods-tabs {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-start;
  gap: 0.5rem;
  max-width: 100%;
  padding: 0.15rem 0.1rem;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  touch-action: pan-x;
}

.tabs-wrap .merchant-tabs::-webkit-scrollbar,
.tabs-wrap .goods-tabs::-webkit-scrollbar {
  display: none;
}

/* list-tab：与首页城市漫游 .home-tab-item 一致；!important 压过 Layui button */
.tabs-wrap .list-tab-item,
[data-desk-page="goods-list"] .list-tab-item,
[data-desk-page="merchant-list"] .list-tab-item {
  appearance: none !important;
  -webkit-appearance: none !important;
  position: relative;
  flex: 0 0 auto;
  flex-shrink: 0;
  box-sizing: border-box !important;
  min-height: 0;
  height: auto !important;
  margin: 0 !important;
  margin-left: 0 !important;
  padding: 0.4em 1.1em !important;
  border: 1px solid transparent !important;
  border-radius: 999px !important;
  background: transparent !important;
  color: #9a8f80 !important;
  font-family: inherit;
  font-size: 0.875rem !important;
  font-weight: 400 !important;
  line-height: 1.4 !important;
  white-space: nowrap;
  text-decoration: none !important;
  box-shadow: none !important;
  outline: none;
  cursor: pointer;
  user-select: none;
  touch-action: manipulation;
  transition: border-color 0.2s ease, color 0.2s ease;
}

.tabs-wrap .list-tab-item::after,
[data-desk-page="goods-list"] .list-tab-item::after,
[data-desk-page="merchant-list"] .list-tab-item::after {
  content: none !important;
  display: none !important;
}

.tabs-wrap .home-tab-item,
[data-desk-page="goods-list"] .home-tab-item,
[data-desk-page="merchant-list"] .home-tab-item {
  appearance: none;
  -webkit-appearance: none;
  position: relative;
  flex-shrink: 0;
  box-sizing: border-box;
  min-height: 0;
  margin: 0;
  padding: 0.4em 1.1em;
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  color: #9a8f80;
  font-family: inherit;
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.4;
  white-space: nowrap;
  text-decoration: none;
  box-shadow: none;
  cursor: pointer;
  user-select: none;
  transition: border-color 0.2s ease, color 0.2s ease;
}

.tabs-wrap .home-tab-item::after,
[data-desk-page="goods-list"] .home-tab-item::after,
[data-desk-page="merchant-list"] .home-tab-item::after {
  content: none !important;
  display: none !important;
}

.tabs-wrap .home-tab-item.is-active,
.tabs-wrap .list-tab-item.is-active,
[data-desk-page="goods-list"] .home-tab-item.is-active,
[data-desk-page="goods-list"] .list-tab-item.is-active,
[data-desk-page="merchant-list"] .home-tab-item.is-active,
[data-desk-page="merchant-list"] .list-tab-item.is-active {
  border-color: #262220 !important;
  color: #262220 !important;
  background: transparent !important;
  font-weight: 600 !important;
}

/* /goods 分类：对齐 Vue GoodsList.vue */
[data-desk-page="goods-list"] {
  --text: #262220;
  --muted: #9a8f80;
}

[data-desk-page="goods-list"] .tabs-wrap {
  display: flex;
  justify-content: center;
  min-width: 0;
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

[data-desk-page="goods-list"] .goods-tabs {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-start;
  gap: 0.5rem;
  max-width: 100%;
  padding: 0.15rem 0.1rem;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  touch-action: pan-x;
}

[data-desk-page="goods-list"] .goods-tabs::-webkit-scrollbar {
  display: none;
}

@media (max-width: 767px) {
  [data-desk-page="goods-list"] .tabs-wrap {
    justify-content: stretch;
  }
}

[data-desk-page="goods-list"] .goods-card {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: 0;
  height: auto;
  aspect-ratio: 1 / 1;
  padding: 0.75rem;
  border-radius: 0.5rem;
  background: #fff;
  box-sizing: border-box;
  overflow: hidden;
}

[data-desk-page="goods-list"] .goods-card .card-cover {
  position: relative;
  flex: 1;
  min-height: 0;
  width: 100%;
  height: auto;
  aspect-ratio: auto;
  overflow: hidden;
  border-radius: calc(0.5rem - 0.15rem);
  background: #f5f5f5;
}

[data-desk-page="goods-list"] .goods-card .cover-img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

[data-desk-page="goods-list"] .goods-card .card-body {
  flex: 0 0 auto;
  min-width: 0;
  padding: 0.7rem 0.15rem 0.1rem;
}

[data-desk-page="goods-list"] .goods-grid > .goods-col.is-guttered {
  padding-left: 10px;
  padding-right: 10px;
  box-sizing: border-box;
}

[data-desk-page="goods-list"] .goods-col {
  min-width: 0;
  margin-bottom: clamp(1.25rem, 2.5vw, 1.75rem);
}

.tabs-wrap .list-tab-item:not(.is-active):hover,
[data-desk-page="goods-list"] .list-tab-item:not(.is-active):hover,
[data-desk-page="merchant-list"] .list-tab-item:not(.is-active):hover {
  color: #262220 !important;
}

/* /merchants 分类条：与 goods 一致的横向滚动 */
[data-desk-page="merchant-list"] .tabs-wrap {
  display: flex;
  justify-content: center;
  min-width: 0;
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

[data-desk-page="merchant-list"] .merchant-tabs {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-start;
  gap: 0.5rem;
  max-width: 100%;
  padding: 0.15rem 0.1rem;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  touch-action: pan-x;
}

[data-desk-page="merchant-list"] .merchant-tabs::-webkit-scrollbar {
  display: none;
}

[data-desk-page="merchant-list"] .merchant-grid > .merchant-col.is-guttered {
  padding-left: 10px;
  padding-right: 10px;
  box-sizing: border-box;
}

[data-desk-page="merchant-list"] .merchant-col {
  min-width: 0;
  margin-bottom: clamp(1.25rem, 2.5vw, 1.75rem);
}

@media (max-width: 767px) {
  [data-desk-page="merchant-list"] .tabs-wrap {
    justify-content: stretch;
  }
}

/* ===== 首页打卡活动：统一加高图文区 ===== */
#desk-home-root .section-checkin {
  --checkin-h: clamp(28rem, 34vw, 36rem);
}

#desk-home-root .section-checkin .checkin-grid {
  align-items: stretch;
}

#desk-home-root .section-checkin .checkin-grid > .el-col {
  display: flex;
}

#desk-home-root .section-checkin .left-col,
#desk-home-root .section-checkin .right-col,
#desk-home-root .section-checkin .left-content-box {
  width: 100%;
  height: var(--checkin-h);
  min-height: var(--checkin-h);
  box-sizing: border-box;
}

#desk-home-root .section-checkin .right-slider-box {
  width: 100%;
  height: 100%;
  min-height: 0;
  box-sizing: border-box;
}

#desk-home-root .section-checkin .activity-desc {
  display: -webkit-box;
  -webkit-line-clamp: 8;
  line-clamp: 8;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

#desk-home-root .section-checkin .right-slider-box .banner-img,
#desk-home-root .section-checkin .right-slider-box .banner-img.max-size-img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 0;
  max-height: none;
  object-fit: cover;
}

@media (max-width: 991px) {
  #desk-home-root .section-checkin {
    --checkin-h: clamp(16rem, 52vw, 24rem);
  }
}

/* ===== 列表/详情版心与页头 logo 列完全同一套栅格 ===== */
.desk-page-align.header-inner {
  width: 100%;
  max-width: 1440px;
  margin-inline: auto;
  box-sizing: border-box;
  padding-inline: 0;
}

.desk-page-align.header-inner > [class*="el-col"] {
  box-sizing: border-box;
  padding-inline: 0;
  margin-bottom: 0;
}

.page-container .list-section,
.page-container .detail-section,
.page-container .intro-section,
.page-container .idea-section,
.page-container .contact-section,
.page-container .breadcrumb-bar {
  padding-inline: 0;
}

/* header / footer 共用同一套版心，缩放步调一致 */
.site-header,
.site-footer {
  --page-max: 1440px;
}

.site-header .header-inner,
.site-footer .footer-inner,
.site-footer .header-inner {
  width: 100%;
  max-width: var(--page-max);
  margin-inline: auto;
  box-sizing: border-box;
}

.site-footer .footer-align-col {
  min-width: 0;
}

.site-footer .footer-main {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: clamp(1.25rem, 3vw, 3rem);
  width: 100%;
  padding-top: clamp(2rem, 4vw, 3.25rem);
  padding-bottom: clamp(1.25rem, 2.5vw, 2rem);
  padding-inline: 0;
  box-sizing: border-box;
}

.site-footer .footer-brand-col,
.site-footer .footer-qr-col,
.site-footer .footer-copy-col {
  padding-inline: 0;
}

.site-footer .footer-brand-col {
  flex: 1 1 auto;
  min-width: 0;
}

.site-footer .footer-qr-col {
  flex: 0 0 auto;
  display: flex;
  justify-content: flex-end;
}

.site-footer .footer-copy-row {
  width: 100%;
  padding-inline: 0;
  box-sizing: border-box;
}

@media (max-width: 991px) {
  .site-footer .footer-align-col {
    padding-inline: max(0.75rem, env(safe-area-inset-left, 0px));
  }
  .site-footer .footer-main {
    flex-direction: column;
    align-items: stretch;
  }
  .site-footer .footer-qr-col {
    justify-content: flex-start;
  }
}

@media (max-width: 767px) {
  .site-footer .footer-brand-col {
    text-align: center;
  }
  .site-footer .brand-link {
    justify-content: center;
    width: 100%;
  }
  .site-footer .footer-qr-col {
    justify-content: center;
  }
}

.banner-overlay .desk-page-align {
  height: 100%;
  align-items: center;
}

.banner-overlay .banner-copy {
  max-width: min(36rem, 100%);
  padding-block: clamp(0.75rem, 2vw, 1.5rem);
  text-align: left;
}

@media (max-width: 991px) {
  .desk-page-align.header-inner > [class*="el-col"] {
    padding-inline: max(0.75rem, env(safe-area-inset-left, 0px))
      max(0.75rem, env(safe-area-inset-right, 0px));
  }
}

/* ===== 页脚备案色与布局 ===== */
.site-footer .copy-text,
.site-footer .copy-text span,
.site-footer .copy-link,
.site-footer .copy-link:visited,
.site-footer [data-desk-record] a,
.site-footer [data-desk-police-record] a {
  color: #999 !important;
  text-decoration: none;
}

.site-footer .copy-link:hover,
.site-footer [data-desk-record] a:hover,
.site-footer [data-desk-police-record] a:hover {
  color: #ccc !important;
}

.site-footer .copy-text {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.75rem;
}

.site-footer .footer-link {
  color: #fff;
  text-decoration: none;
}

.site-footer .qr-label {
  color: #999;
}

/* 列表加载完后隐藏 loading */
.load-more-box,
.load-more-box[hidden],
.load-more-box[aria-hidden="true"],
.load-more-box.is-complete {
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
}

.load-more-box.is-loading {
  display: flex !important;
  visibility: visible !important;
  height: auto !important;
  margin-top: clamp(0.5rem, 2vw, 1.25rem) !important;
  padding: 1.25rem 0 0.25rem !important;
  overflow: visible !important;
}

.load-more-box.is-complete .load-more-ico,
.load-more-box[hidden] .load-more-ico,
.load-more-box.is-complete img,
.load-more-ico[hidden] {
  display: none !important;
}

.load-more-ico {
  display: block;
  width: 1.5rem !important;
  height: 1.5rem !important;
  max-width: 1.5rem;
  max-height: 1.5rem;
  object-fit: contain;
  opacity: 0.75;
}

/* /checkins 列表：恢复 Vue CheckinList 的 gutter + 行距 */
[data-desk-page="checkin-list"] .checkin-grid > .checkin-col.is-guttered {
  padding-left: 10px;
  padding-right: 10px;
  box-sizing: border-box;
}

[data-desk-page="checkin-list"] .checkin-col {
  display: flex;
  align-items: stretch;
  min-width: 0;
  margin-bottom: clamp(1.25rem, 2.5vw, 2rem) !important;
}

@media (max-width: 767px) {
  [data-desk-page="checkin-list"] .checkin-col {
    margin-bottom: 1.5rem !important;
  }
}

[data-desk-page="checkin-list"] .checkin-card {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  width: 100%;
  height: auto;
  min-height: 0;
  margin: 0;
  padding: 0;
  background: transparent;
  border-radius: 0.5rem;
  box-shadow: none;
}

[data-desk-page="checkin-list"] .checkin-card .card-cover {
  position: relative;
  flex: 0 0 auto;
  width: 100%;
  height: auto;
  min-height: 0;
  aspect-ratio: 576 / 290;
  border-radius: 0.5rem;
  overflow: hidden;
  background: #f5f5f5;
}

[data-desk-page="checkin-list"] .checkin-card .cover-img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

[data-desk-page="checkin-list"] .checkin-card .card-body {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: 0.85rem 0.1rem 0.15rem;
}

/* /activities 列表封面：与 Vue ActivityList 576/290 一致 */
[data-desk-page="activity-list"] .activity-card .card-cover {
  position: relative;
  flex: 0 0 auto;
  width: 100%;
  height: auto;
  min-height: 0;
  aspect-ratio: 576 / 290;
  border-radius: 0.5rem;
  overflow: hidden;
  background: #f5f5f5;
}

[data-desk-page="activity-list"] .activity-card .cover-img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

/* 各页图片按 Vue 锁定长宽比，object-fit:cover 裁切多余部分 */
.desk-list-page .banner-section,
.desk-about-page .banner-section {
  aspect-ratio: 21 / 6;
}

[data-desk-page="merchant-list"] .merchant-card .card-cover {
  position: relative;
  width: 100%;
  aspect-ratio: 254 / 226;
  flex-shrink: 0;
  overflow: hidden;
  border-radius: 0.5rem 0.5rem 0 0;
  background: #f5f5f5;
}

[data-desk-page="news-list"] .news-img-wrap {
  position: relative;
  width: 100%;
  margin-top: auto;
  aspect-ratio: 652 / 348;
  border-radius: 0.5rem;
  overflow: hidden;
  background: #f5f5f5;
  flex-shrink: 0;
}

[data-desk-page="merchant-products"] .product-card .card-cover {
  position: relative;
  width: 100%;
  aspect-ratio: 506 / 450;
  overflow: hidden;
  background: #f5f5f5;
  flex-shrink: 0;
}

/* ===== 商家商品列表 /merchants/:id/products（对齐 Vue ProductList.vue） ===== */
[data-desk-page="merchant-products"].page-container {
  --page-max: 1440px;
  --text: #333;
  --muted: #999;
  --page-bg: #f5f5f5;
  --card-radius: 1rem;
  --img-radius: 0.5rem;
  background: var(--page-bg);
  color: var(--text);
}

[data-desk-page="merchant-products"] .list-section {
  padding: clamp(1.25rem, 3vw, 2rem) 0 clamp(2.5rem, 5vw, 4rem);
  background: transparent;
}

[data-desk-page="merchant-products"] .product-grid > .product-col.is-guttered {
  padding-left: 10px;
  padding-right: 10px;
  box-sizing: border-box;
}

[data-desk-page="merchant-products"] .product-col {
  min-width: 0;
  margin-bottom: clamp(1.1rem, 2.2vw, 1.5rem);
}

[data-desk-page="merchant-products"] .product-card {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: 0;
  height: auto;
  background: #fff;
  border-radius: var(--card-radius);
  overflow: hidden;
  box-shadow: 0 0.4rem 1.25rem rgba(0, 0, 0, 0.04);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

[data-desk-page="merchant-products"] .product-card .card-body {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  flex: 0 0 auto;
  min-width: 0;
  padding: 0.9rem 0.95rem 1.05rem;
}

[data-desk-page="merchant-products"] .product-card .product-title {
  margin: 0;
  font-size: clamp(0.9375rem, 1.1vw, 1rem);
  font-weight: 700;
  line-height: 1.4;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

[data-desk-page="merchant-products"] .product-card .product-desc {
  margin: 0;
  color: var(--muted);
  font-size: clamp(0.75rem, 0.95vw, 0.8125rem);
  line-height: 1.55;
  min-height: calc(1.55em * 2);
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}

@media (max-width: 767px) {
  [data-desk-page="merchant-products"] .profile-right-col {
    margin-top: 1rem;
  }

  [data-desk-page="merchant-products"] .profile-right {
    justify-content: space-between;
  }

  [data-desk-page="merchant-products"] .profile-left {
    align-items: flex-start;
  }
}

[data-desk-page="merchant-detail"] .thumbs-nav[hidden] {
  display: none !important;
}

[data-desk-page="activity-detail"] .detail-figure {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: 440px;
  overflow: hidden;
}

[data-desk-page="merchant-detail"] .gallery-main {
  aspect-ratio: 1284 / 706;
}

[data-desk-page="merchant-detail"] .thumb-btn {
  aspect-ratio: 300 / 174;
}

[data-desk-page="merchant-detail"] .activity-cover {
  aspect-ratio: 300 / 174;
}

[data-desk-page="merchant-detail"] .checkin-media {
  aspect-ratio: 1480 / 870;
}

/* 商家详情 · 热门推荐：对齐 MerchantDetail.vue .rec-* */
[data-desk-page="merchant-detail"] .rec-grid > .rec-col.is-guttered {
  padding-left: 10px;
  padding-right: 10px;
  box-sizing: border-box;
}

[data-desk-page="merchant-detail"] .rec-col {
  min-width: 0;
  margin-bottom: 1.25rem;
}

[data-desk-page="merchant-detail"] .rec-card {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: 0;
  height: 100%;
  background: #fff;
  border-radius: var(--card-radius, 0.75rem);
  overflow: hidden;
  box-shadow: 0 0.35rem 1.1rem rgba(0, 0, 0, 0.04);
  text-decoration: none;
  color: inherit;
  -webkit-tap-highlight-color: transparent;
}

[data-desk-page="merchant-detail"] .rec-cover {
  position: relative;
  width: 100%;
  aspect-ratio: 253 / 225;
  overflow: hidden;
  background: #f5f5f5;
  flex-shrink: 0;
}

[data-desk-page="merchant-detail"] .rec-body {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.85rem 0.9rem 1rem;
  min-width: 0;
}

[data-desk-page="merchant-detail"] .rec-title {
  margin: 0;
  font-size: 1rem;
  font-weight: 700;
  color: #222;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

[data-desk-page="merchant-detail"] .rec-desc {
  margin: 0;
  color: var(--muted, #9a8f80);
  font-size: 0.8125rem;
  line-height: 1.55;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}

.desk-about-page .idea-cover {
  aspect-ratio: 528 / 336;
}

.desk-about-page .map-wrap,
.desk-about-page .map-img {
  aspect-ratio: 900 / 491;
}

#desk-home-root .activity-poker-deck,
#desk-home-root .section-activities .card-img-wrap {
  aspect-ratio: 2 / 1;
}

#desk-home-root .recommend-card .card-img-wrap {
  aspect-ratio: 4 / 3;
}

#desk-home-root .section-merchant .merchant-card .card-img-wrap {
  aspect-ratio: 3 / 2;
}

/* ===== 新闻动态：背景图铺满整个区块，不在按钮下方留白 ===== */
#desk-home-root .section-news {
  background-size: 100% 100%;
  background-position: center;
  background-repeat: no-repeat;
}

#desk-home-root .section-news .news-img-wrap {
  aspect-ratio: 16 / 9;
}

#desk-home-root .cover-img,
#desk-home-root .activity-img,
#desk-home-root .news-img,
#desk-home-root .recommend-card .max-size-img,
#desk-home-root .merchant-card .cover-img,
[data-desk-page] .cover-img,
[data-desk-page] .news-img,
[data-desk-page] .detail-figure-img,
[data-desk-page] .gallery-main-img,
[data-desk-page] .thumb-img,
[data-desk-page] .activity-cover-img,
[data-desk-page] .checkin-banner,
[data-desk-page] .rec-img,
.desk-about-page .idea-img,
.desk-about-page .banner-img {
  object-fit: cover;
  object-position: center;
}

/* 打卡点提示蒙层：默认隐藏，避免 display:flex 盖掉 [hidden] */
.point-tip-mask[hidden] {
  display: none !important;
}

/* 打卡点导航图标：扩大可点区域，避免被节点点击抢走 */
.desk-checkin-map-page .node-nav-link,
[data-checkin-map-ui] .node-nav-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  padding: 4px;
  margin: -4px -2px -4px 0;
  line-height: 0;
  text-decoration: none;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

.desk-checkin-map-page .node-nav-icon,
[data-checkin-map-ui] .node-nav-icon {
  display: block;
  width: 16px;
  height: 16px;
  opacity: 0.95;
  pointer-events: none;
}

.point-tip__name-row--link {
  text-decoration: none;
  color: inherit;
}

/* 活动报名弹窗：默认隐藏，避免 display:flex 盖掉 hidden */
.apply-overlay {
  display: none !important;
}
.apply-overlay.is-open {
  display: flex !important;
  align-items: center;
  justify-content: center;
  position: fixed;
  inset: 0;
  z-index: 4000;
  padding: 1rem;
  background: rgba(20, 16, 12, 0.55);
}

/* 活动详情：与页头 logo 左缘对齐，双栏顶对齐，报名按钮按 Vue 金色样式 */
[data-desk-page="activity-detail"] {
  --page-max: 1440px;
  --text-main: #1f1b18;
  --text-muted: #8c8275;
  --bg-color: #f7f5f0;
  --gold: #c8973f;
  --gold-hover: #b38435;
  --border-color: #eee9e0;
  background: #f7f5f0;
  min-height: 40vh;
  padding-bottom: 4rem;
  color: #1f1b18;
}

[data-desk-page="activity-detail"] .detail-container {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 380px;
  align-items: start;
  gap: 2rem;
  margin-top: 0.5rem;
  width: 100%;
}

[data-desk-page="activity-detail"] .content-left,
[data-desk-page="activity-detail"] .content-right {
  min-width: 0;
  align-self: start;
}

[data-desk-page="activity-detail"] .content-right {
  position: sticky;
  top: 2rem;
}

[data-desk-page="activity-detail"] .apply-box {
  width: 100%;
}

[data-desk-page="activity-detail"] .apply-btn,
[data-desk-page="activity-detail"] button.apply-btn {
  appearance: none;
  -webkit-appearance: none;
  display: block;
  width: 100%;
  min-height: 3.25rem;
  margin: 0;
  padding: 0.75rem 1.5rem;
  border: 0;
  border-radius: 0.5rem;
  background: #c8973f;
  color: #fff;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.3;
  text-align: center;
  text-decoration: none;
  box-shadow: 0 4px 12px rgba(200, 151, 63, 0.3);
  cursor: pointer;
}

[data-desk-page="activity-detail"] .apply-btn:hover:not(:disabled):not(.is-disabled) {
  background: #b38435;
  color: #fff;
}

[data-desk-page="activity-detail"] .apply-btn.is-disabled,
[data-desk-page="activity-detail"] .apply-btn:disabled {
  opacity: 0.6;
  cursor: not-allowed;
  box-shadow: none;
}

[data-desk-page="activity-detail"] [data-desk-apply-status].is-pending {
  color: #c8973f;
  font-weight: 600;
}

[data-desk-page="activity-detail"] [data-desk-apply-status].is-success {
  color: #2e8b57;
  font-weight: 600;
}

[data-desk-page="activity-detail"] [data-desk-apply-status].is-fail {
  color: #c45656;
  font-weight: 600;
}

@media (max-width: 960px) {
  [data-desk-page="activity-detail"] .detail-container {
    grid-template-columns: 1fr;
    gap: 1.5rem;
  }
  [data-desk-page="activity-detail"] .content-right {
    position: static;
  }
}

/* 卡片图：容器锁比例，图片绝对铺满 cover，避免原图像素高度撑高 */
[data-desk-page] .activity-card,
[data-desk-page] .merchant-card,
[data-desk-page] .checkin-card,
[data-desk-page] .news-card,
[data-desk-page] .goods-card,
[data-desk-page] .product-card {
  height: auto;
}

.card-cover,
.news-img-wrap,
.card-img-wrap,
.idea-cover,
.rec-cover,
.activity-cover,
.checkin-media,
.gallery-main {
  position: relative;
  overflow: hidden;
}

.card-cover > img,
.news-img-wrap > img,
.card-img-wrap > img,
.idea-cover > img,
.rec-cover > img,
.activity-cover > img,
.checkin-media > img,
.gallery-main > img,
img.cover-img,
img.news-img,
img.activity-img,
img.activity-cover-img,
img.rec-img,
img.checkin-banner,
img.gallery-main-img,
img.idea-img {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  object-fit: cover !important;
  object-position: center !important;
}

/* 寻宝详情：不展示 SEO 文案块，首屏从地图页头（中英标题）开始 */
.checkin-map-seo {
  display: none !important;
}

/* Header logo：固定占位，避免图片加载前后 head 高度跳动 */
.site-header .logo-link {
  display: flex;
  align-items: center;
  width: min(100%, 9.5rem);
  height: clamp(2.25rem, 3.6vw, 2.75rem);
  flex-shrink: 0;
}

.site-header .logo-img {
  display: block;
  width: 100%;
  max-width: 9.5rem;
  height: clamp(2.25rem, 3.6vw, 2.75rem);
  object-fit: contain;
  object-position: left center;
}

@media (max-width: 991px) {
  .site-header .logo-link {
    width: min(100%, 7.5rem);
    height: 2.25rem;
  }

  .site-header .logo-img {
    max-width: 7.5rem;
    height: 2.25rem;
  }
}

.site-footer .brand-logo {
  display: block;
  width: 100%;
  max-width: 12.5rem;
  height: clamp(2.5rem, 4vw, 3.5rem);
  object-fit: contain;
  object-position: left center;
}

.site-footer .qr-img {
  display: block;
  width: 100%;
  max-width: 8.75rem;
  aspect-ratio: 1 / 1;
  height: auto;
  object-fit: contain;
}

/* ===== 页头电话号码悬浮气泡：补齐 hover 死区 ===== */
/* desk.css 里气泡 top: calc(100% + .55rem) 与 .header-phone 之间有 .55rem 空隙，
   且 .header-phone-tip:before 箭头只有 .7rem 宽，鼠标从号码移向“复制”时
   会短暂离开 .header-phone 的所有后代，:hover 失效导致气泡提前消失。
   这里补一条透明“桥”填满空隙，并与气泡、.header-phone 下沿各留一点重叠，
   斜向移动也始终命中 .header-phone 的后代，气泡不会闪退。 */
.header-phone-tip::after {
  content: "";
  position: absolute;
  left: -0.75rem;
  right: -0.75rem;
  bottom: 100%;
  /* .55rem 与气泡 top 的空隙一致，额外 2px 向上压住 .header-phone 下沿，避免出现 1px 死缝 */
  height: calc(0.55rem + 2px);
}

/* ===== 页头电话号码与左侧图标对齐到同一条腰线 ===== */
/* desk.css 里 .header-phone-copy 是 flex-start，号码贴在 32px 图标（--phone-ico-h:2rem）
   顶部，号码行高只有 15px，垂直中心比图标中心高约 8.7px，看上去“号码飘在图标上方”。
   1) 号码列改为垂直居中：号码垂直中心 = 图标垂直中心（同一腰线）；
   2) 号码加白底 + z-index：压住 .header-phone-consult::before 那条 1px 金线，
      否则居中后金线正好从数字中间穿过（效果等同原来的“文字挖空金线”）；
   3) 金线左右各外露 .2rem，腰线装饰仍然可见（号码长短变化时外露长度不变）。 */
.header-phone-copy {
  justify-content: center;
}

.header-phone-num {
  position: relative;
  z-index: 1;
  /* 与 .site-header 背景一致，只用于挖空金线，不做视觉分层 */
  background: #fff;
}

.header-phone-consult::before {
  left: -0.2rem;
  right: -0.2rem;
}


/* ===== 地图页（腾讯地图 JS GL + mpapi 省市漫游） ===== */
/* 布局：左侧地图舞台 + 右侧信息面板；比例与其它 desk 页一致，地图满宽不再用 iframe */
.desk-map-page  {
  --map-brand: #c8973f;
  --map-brand-deep: #b38435;
  --map-ink: #262220;
  --map-muted: #8a8074;
  --map-line: #ece3d4;
  --map-paper: #fffdf8;
  --map-shell-h: clamp(30rem, 76vh, 56rem);
  background: #f7f4ee;
}

.desk-map-page .map-shell {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 21.5rem;
  align-items: stretch;
  background: var(--map-paper);
}

.desk-map-page .map-stage {
  position: relative;
  height: var(--map-shell-h);
  min-height: 22rem;
  background: #e9edf0;
  overflow: hidden;
}

/* 腾讯 GL 需要一个有尺寸的容器：绝对铺满舞台 */
.desk-map-page .map-canvas {
  position: absolute;
  inset: 0;
  z-index: 1;
}

.desk-map-page .map-float {
  position: absolute;
  z-index: 3;
  display: flex;
  gap: 0.5rem;
  pointer-events: none;
}

.desk-map-page .map-float > * {
  pointer-events: auto;
}

.desk-map-page .map-float--top {
  top: 1rem;
  left: 1rem;
  right: 1rem;
  flex-direction: column;
  align-items: flex-start;
}

.desk-map-page .map-float--bottom {
  left: 1rem;
  bottom: 1rem;
  align-items: center;
}

.desk-map-page .map-search {
  position: relative;
  display: flex;
  align-items: center;
  gap: 0.35rem;
  width: min(26rem, 100%);
  padding: 0.3rem 0.3rem 0.3rem 0.75rem;
  background: var(--map-paper);
  border: 1px solid var(--map-line);
  border-radius: 999px;
  box-shadow: 0 0.5rem 1.4rem rgba(38, 34, 32, 0.12);
}

.desk-map-page .map-search-ico {
  color: var(--map-muted);
  font-size: 1rem;
  line-height: 1;
}

.desk-map-page .map-search-input {
  flex: 1;
  min-width: 0;
  padding: 0.4rem 0.15rem;
  border: 0;
  background: transparent;
  color: var(--map-ink);
  font-size: 0.875rem;
  line-height: 1.4;
  outline: none;
  -webkit-appearance: none;
  appearance: none;
}

.desk-map-page .map-search-btn {
  flex: 0 0 auto;
  padding: 0.4rem 1rem;
  border: 0;
  border-radius: 999px;
  background: var(--map-brand);
  color: #fff;
  font-size: 0.8125rem;
  line-height: 1.4;
  cursor: pointer;
  transition: background 0.2s ease;
}

.desk-map-page .map-search-btn:hover {
  background: var(--map-brand-deep);
}

.desk-map-page .map-suggest {
  position: absolute;
  top: calc(100% + 0.4rem);
  left: 0;
  right: 0;
  max-height: 18rem;
  overflow-y: auto;
  padding: 0.35rem;
  background: var(--map-paper);
  border: 1px solid var(--map-line);
  border-radius: 0.75rem;
  box-shadow: 0 1rem 2rem rgba(38, 34, 32, 0.16);
}

.desk-map-page .map-suggest[hidden] {
  display: none !important;
}

.desk-map-page .map-suggest-item {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  width: 100%;
  padding: 0.5rem 0.6rem;
  border: 0;
  border-radius: 0.5rem;
  background: transparent;
  text-align: left;
  cursor: pointer;
}

.desk-map-page .map-suggest-cover {
  width: 2.5rem;
  height: 2.5rem;
  flex: 0 0 2.5rem;
  border-radius: 0.4rem;
  object-fit: cover;
  background: #eee;
}

.desk-map-page .map-suggest-cover--empty {
  display: inline-block;
}

.desk-map-page .map-suggest-body {
  flex: 1;
  min-width: 0;
}

.desk-map-page .map-suggest-item:hover,
.desk-map-page .map-suggest-item:focus-visible {
  background: #f6f0e4;
}

.desk-map-page .map-suggest-name {
  display: block;
  color: var(--map-ink);
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.4;
}

.desk-map-page .map-suggest-meta {
  display: block;
  margin-top: 0.15rem;
  color: var(--map-muted);
  font-size: 0.75rem;
  line-height: 1.4;
}

.desk-map-page .map-suggest-empty {
  padding: 0.6rem;
  color: var(--map-muted);
  font-size: 0.8125rem;
}

.desk-map-page .map-cats {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  max-width: 100%;
}

.desk-map-page .map-cat {
  padding: 0.35rem 0.9rem;
  border: 1px solid var(--map-line);
  border-radius: 999px;
  background: rgba(255, 253, 248, 0.94);
  color: var(--map-ink);
  font-size: 0.8125rem;
  line-height: 1.4;
  cursor: pointer;
  transition: color 0.2s ease, background 0.2s ease, border-color 0.2s ease;
}

.desk-map-page .map-cat:hover {
  border-color: var(--map-brand);
  color: var(--map-brand-deep);
}

.desk-map-page .map-cat.is-active {
  border-color: var(--map-brand);
  background: var(--map-brand);
  color: #fff;
}

.desk-map-page .map-badge {
  padding: 0.3rem 0.75rem;
  border-radius: 999px;
  background: rgba(38, 34, 32, 0.78);
  color: #fff;
  font-size: 0.75rem;
  line-height: 1.4;
  letter-spacing: 0.02em;
}

.desk-map-page .map-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.35rem 0.9rem;
  border: 1px solid var(--map-line);
  border-radius: 999px;
  background: var(--map-paper);
  color: var(--map-ink);
  font-size: 0.8125rem;
  line-height: 1.4;
  cursor: pointer;
}

.desk-map-page .map-btn:hover {
  border-color: var(--map-brand);
  color: var(--map-brand-deep);
}

.desk-map-page .map-btn[disabled] {
  opacity: 0.6;
  cursor: progress;
}

.desk-map-page .map-status {
  position: absolute;
  z-index: 3;
  right: 1rem;
  bottom: 1rem;
  max-width: 22rem;
  margin: 0;
  padding: 0.4rem 0.85rem;
  border-radius: 999px;
  background: rgba(38, 34, 32, 0.78);
  color: #fff;
  font-size: 0.8125rem;
  line-height: 1.4;
}

.desk-map-page .map-status[hidden] {
  display: none !important;
}

.desk-map-page .map-status.is-error {
  background: rgba(196, 86, 86, 0.92);
}
/* ===== 地图页：右侧信息面板 ===== */
.desk-map-page .map-side {
  display: flex;
  flex-direction: column;
  height: var(--map-shell-h);
  min-height: 22rem;
  border-left: 1px solid var(--map-line);
  background: var(--map-paper);
}

.desk-map-page .map-side-head {
  flex: 0 0 auto;
  padding: 1.1rem 1.25rem 0.85rem;
  border-bottom: 1px solid var(--map-line);
}

.desk-map-page .map-side-city {
  margin: 0;
  color: var(--map-ink);
  font-size: 1.25rem;
  font-weight: 600;
  line-height: 1.35;
}

.desk-map-page .map-side-sub {
  margin: 0.25rem 0 0;
  color: var(--map-muted);
  font-size: 0.8125rem;
  line-height: 1.5;
}

.desk-map-page .map-side-body {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 1rem 1.25rem 1.5rem;
}

.desk-map-page .map-side-tip {
  margin: 0.75rem 0 0;
  color: var(--map-muted);
  font-size: 0.8125rem;
  line-height: 1.6;
}

.desk-map-page .map-card {
  padding: 0.9rem 1rem;
  border: 1px solid var(--map-line);
  border-radius: 0.75rem;
  background: #fff;
}

.desk-map-page .map-card + .map-card,
.desk-map-page .map-card + .map-side-tip {
  margin-top: 0.75rem;
}

.desk-map-page .map-card-kicker {
  margin: 0;
  color: var(--map-brand-deep);
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.desk-map-page .map-card-num {
  margin: 0.2rem 0 0;
  color: var(--map-ink);
  font-size: 1.75rem;
  font-weight: 700;
  line-height: 1.1;
}

.desk-map-page .map-card-hint {
  margin: 0.25rem 0 0;
  color: var(--map-muted);
  font-size: 0.8125rem;
  line-height: 1.5;
}

.desk-map-page .map-card-title {
  margin: 0 0 0.5rem;
  color: var(--map-ink);
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.4;
}

.desk-map-page .map-card-err {
  margin: 0;
  color: #c45656;
  font-size: 0.875rem;
  line-height: 1.5;
}

.desk-map-page .map-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  width: 100%;
  padding: 0.45rem 0.5rem;
  border: 0;
  border-radius: 0.5rem;
  background: transparent;
  color: var(--map-ink);
  font-size: 0.875rem;
  line-height: 1.4;
  text-align: left;
  cursor: pointer;
}

.desk-map-page .map-row:hover,
.desk-map-page .map-row:focus-visible {
  background: #f6f0e4;
}

.desk-map-page .map-row-name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.desk-map-page .map-row-count {
  flex: 0 0 auto;
  color: var(--map-brand-deep);
  font-weight: 600;
}

.desk-map-page .map-cat-stat {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-top: 0.4rem;
  font-size: 0.8125rem;
  color: var(--map-muted);
}

.desk-map-page .map-cat-stat-bar {
  flex: 1;
  height: 0.35rem;
  border-radius: 999px;
  background: #f0e8da;
  overflow: hidden;
}

.desk-map-page .map-cat-stat-fill {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: var(--map-brand);
}

.desk-map-page .map-cover {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
  margin-bottom: 0.75rem;
  border-radius: 0.6rem;
  overflow: hidden;
  background: #f5f1ea;
}

.desk-map-page .map-cover img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.desk-map-page .map-meta {
  margin: 0.6rem 0 0;
  padding: 0;
  list-style: none;
}

.desk-map-page .map-meta li {
  display: flex;
  gap: 0.5rem;
  padding: 0.3rem 0;
  font-size: 0.8125rem;
  line-height: 1.55;
}

.desk-map-page .map-meta-key {
  flex: 0 0 3.25rem;
  color: var(--map-muted);
}

.desk-map-page .map-meta-val {
  flex: 1;
  min-width: 0;
  color: var(--map-ink);
  word-break: break-all;
}

.desk-map-page .map-meta-val a {
  color: var(--map-brand-deep);
  text-decoration: none;
}

.desk-map-page .map-meta-val[data-panel-address="1"] {
  display: inline-flex;
  align-items: flex-start;
  gap: 0.4rem;
}

.desk-map-page .map-addr-copy {
  position: relative;
  flex: 1;
  min-width: 0;
  color: var(--map-brand-deep);
  cursor: pointer;
  border-bottom: 1px dashed transparent;
  transition: color 0.15s, border-color 0.15s;
}

.desk-map-page .map-addr-copy:hover,
.desk-map-page .map-addr-copy:focus-visible {
  color: #b38435;
  border-bottom-color: rgba(200, 151, 63, 0.55);
  outline: none;
}

.desk-map-page .map-addr-copy::after {
  content: "复制此地址";
  position: absolute;
  left: 0;
  bottom: calc(100% + 6px);
  z-index: 2;
  padding: 0.25rem 0.5rem;
  border-radius: 0.35rem;
  background: rgba(31, 27, 24, 0.88);
  color: #fff;
  font-size: 0.6875rem;
  line-height: 1.3;
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  transform: translateY(2px);
  transition: opacity 0.15s, transform 0.15s;
}

.desk-map-page .map-addr-copy:hover::after,
.desk-map-page .map-addr-copy:focus-visible::after {
  opacity: 1;
  transform: translateY(0);
}

.desk-map-page .map-addr-nav {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
  margin-top: 0.05rem;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: transparent;
  cursor: pointer;
  line-height: 0;
  -webkit-tap-highlight-color: transparent;
}

.desk-map-page .map-addr-nav:hover,
.desk-map-page .map-addr-nav:focus-visible {
  background: #f6f0e4;
  outline: none;
}

.desk-map-page .map-addr-nav-ico {
  display: block;
  width: 1.05rem;
  height: 1.05rem;
  object-fit: contain;
}

.desk-map-page .map-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 0.85rem;
}

.desk-map-page .map-actions--panel {
  gap: 0.55rem;
}

.desk-map-page .map-actions--panel .map-panel-btn.favorite-btn {
  flex: 1 1 auto;
  min-width: 0;
  text-decoration: none;
  box-sizing: border-box;
}

.desk-map-page .map-action {
  flex: 1 1 auto;
  padding: 0.5rem 0.9rem;
  border: 1px solid var(--map-brand);
  border-radius: 999px;
  background: var(--map-brand);
  color: #fff;
  font-size: 0.8125rem;
  line-height: 1.4;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
}

.desk-map-page .map-action:hover {
  border-color: var(--map-brand-deep);
  background: var(--map-brand-deep);
}

.desk-map-page .map-action--ghost {
  background: transparent;
  color: var(--map-brand-deep);
}

.desk-map-page .map-action--ghost:hover {
  background: #f6f0e4;
  color: var(--map-brand-deep);
}

.desk-map-page .map-spots {
  margin: 0.85rem 0 0;
  padding: 0.85rem calc(0.6rem + 28px) 0.85rem 0.9rem;
  border: 1px dashed var(--map-line);
  border-radius: 0.6rem;
  overflow: visible;
}

.desk-map-page .map-spots-title {
  margin: 0 0 0.35rem;
  color: var(--map-ink);
  font-size: 0.8125rem;
  font-weight: 600;
}

.desk-map-page .map-spots-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
}

.desk-map-page .map-spots-head .map-spots-title {
  margin: 0;
}

.desk-map-page .map-spot-toggle {
  flex: 0 0 auto;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--map-brand-deep);
  font-size: 0.75rem;
  text-decoration: underline;
  cursor: pointer;
}

.desk-map-page .map-spots-hint {
  margin: 0.3rem 0 0.55rem;
  color: var(--map-muted);
  font-size: 0.75rem;
  line-height: 1.6;
}

/* 子景点 Follow 186：头像=cover，正面=name；面板背面=intro；地图背面=点赞/收藏 */
.desk-map-page .map-spot-btn {
  --width: 100%;
  --height: 34px;
  --border_radius: 999px;
  --bg_color: #fff;
  --color: #262220;
  --accent: #c8973f;
  --icon-size: 24px;
  position: relative;
  width: var(--width);
  height: var(--height);
  margin: 0.4rem 0 0;
  padding: 0;
  border-radius: var(--border_radius);
  background: var(--bg_color);
  color: var(--color);
  border: 1px solid var(--accent);
  overflow: visible;
  font-family: Arial, Helvetica, "Microsoft YaHei", sans-serif;
  cursor: pointer;
  text-decoration: none;
  user-select: none;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  z-index: 2;
  font-size: 12px;
  font-weight: 600;
  box-sizing: border-box;
  line-height: 1.2;
}

/* 右侧列表：点赞/收藏与头像同直径，允许画出按钮；金色背景仍裁在左侧胶囊内 */
.desk-map-page .map-spot-btn--panel {
  --engage-size: var(--icon-size);
  overflow: visible;
  clip-path: inset(-8rem -8rem -8rem 0);
}

.desk-map-page .map-spot-btn--panel:hover,
.desk-map-page .map-spot-btn--panel:focus-within {
  z-index: 30 !important;
}

.desk-map-page .map-spot-btn--map {
  --width: 112px;
  --height: 30px;
  --icon-size: 22px;
  width: var(--width);
  margin: 0;
  overflow: hidden;
  box-shadow: 0 3px 10px rgba(38, 34, 32, 0.16);
  pointer-events: auto;
  font-size: 11px;
}

/* 商户胶囊：简介在按钮内滑动；点赞/收藏挂在封面右侧，可画出按钮 */
.desk-map-page .map-spot-btn--map.is-merchant-pin {
  --engage-size: var(--icon-size);
  overflow: visible;
  clip-path: inset(-8rem -8rem -8rem 0);
}

.desk-map-page .map-spot-overlay {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 120;
  will-change: transform;
  pointer-events: none;
}

.desk-map-page .map-spot-overlay .map-spot-btn {
  pointer-events: auto;
}

.desk-map-page .map-spot-btn .btn-icon {
  position: absolute;
  top: 50%;
  left: 4px;
  transform: translateY(-50%);
  transition: left 0.45s, transform 0.45s;
  height: var(--icon-size);
  width: var(--icon-size);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 4;
}

.desk-map-page .map-spot-btn .btn-icon img {
  width: var(--icon-size);
  height: var(--icon-size);
  border-radius: 50%;
  object-fit: cover;
  display: block;
  background: #f0f0f0;
  border: 1px solid #fff;
  box-shadow: 0 0 0 1px rgba(200, 151, 63, 0.35);
}

.desk-map-page .map-spot-btn .btn-icon-fallback {
  width: var(--icon-size);
  height: var(--icon-size);
  border-radius: 50%;
  background: #262220;
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  line-height: var(--icon-size);
  text-align: center;
}

.desk-map-page .map-spot-btn .btn-front-text {
  margin-left: calc(var(--icon-size) + 8px);
  max-width: calc(100% - var(--icon-size) - 14px);
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  position: relative;
  z-index: 1;
}

/* 核心子景点：名称金色加粗，不再显示「核心」字样 */
.desk-map-page .map-spot-btn.is-core .btn-front-text {
  color: #c8973f;
  font-weight: 800;
}

.desk-map-page .map-spot-btn .btn-back-text {
  position: absolute;
  top: 0;
  left: calc(var(--width) * -1);
  font-weight: 700;
  font-size: 11px;
  color: #fff;
  background: var(--accent);
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.4s;
  z-index: 3;
  overflow: hidden;
  box-sizing: border-box;
  padding: 0 8px;
  border-radius: 999px;
}

/* 无跑马灯：居中静态文案 */
.desk-map-page .map-spot-btn:not(.is-marquee) .btn-back-text {
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 0 8px;
}

/* 跑马灯轨道：仅面板简介 */
.desk-map-page .map-spot-btn.is-marquee .btn-back-track {
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
  will-change: transform;
  transform: translateX(var(--marquee-start, 100%));
}

.desk-map-page .map-spot-btn .btn-back-label {
  white-space: nowrap;
  padding: 0 16px 0 0;
}

.desk-map-page .map-spot-btn:hover .btn-icon {
  left: calc(100% - 4px);
  transform: translate(-100%, -50%);
}

.desk-map-page .map-spot-btn:hover .btn-back-text {
  left: 0;
}

.desk-map-page .map-spot-btn.is-marquee-ready.is-marquee-playing .btn-back-track {
  animation: deskMapSpotMarquee var(--marquee-duration, 4s) linear var(--marquee-delay, 0s) infinite;
  animation-fill-mode: both;
}

.desk-map-page .map-spot-overlay.is-admin-cluster {
  z-index: 120;
  pointer-events: none;
}

.desk-map-page .tencent-map-marker {
  position: relative;
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  padding: 8px 12px 8px 14px;
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255, 255, 255, 0.65);
  border-radius: 12px;
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.1);
  font-size: 13px;
  color: #1f2937;
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
  pointer-events: auto;
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.desk-map-page .tencent-map-marker:hover {
  box-shadow: 0 6px 24px rgba(0, 0, 0, 0.14);
  transform: translateY(-1px);
}

.desk-map-page .tencent-map-marker::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 3px;
  height: 28px;
  background: #10b981;
  border-radius: 4px;
}

.desk-map-page .tencent-map-marker .province-name {
  font-weight: 500;
  color: #111827;
  line-height: 1.2;
}

.desk-map-page .tencent-map-marker .stat-row {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.desk-map-page .tencent-map-marker .stat-item {
  display: inline-flex;
  align-items: center;
  gap: 3px;
}

.desk-map-page .tencent-map-marker .stat-item img {
  width: 14px;
  height: 14px;
  object-fit: contain;
  vertical-align: middle;
}

.desk-map-page .tencent-map-marker .stat-item .num {
  font-weight: 600;
  color: #1f2937;
  font-size: 13px;
  line-height: 1.2;
}

.desk-map-page .map-spot-overlay.is-name-cluster {
  z-index: 160;
  pointer-events: none;
}

.desk-map-page .map-name-cluster {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 4.5rem;
  background: rgba(200, 151, 63, 0.96);
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
  border-radius: 999px;
  padding: 6px 12px;
  box-shadow: 0 3px 10px rgba(38, 34, 32, 0.18);
  pointer-events: auto;
  cursor: pointer;
  white-space: nowrap;
}

/* 重叠时：鼠标所在的子景点（地图标记 / 右侧列表）提到最上层，移开后回到原层级 */
.desk-map-page .map-spot-overlay:hover {
  z-index: 500 !important;
}

@keyframes deskMapSpotMarquee {
  0% { transform: translateX(var(--marquee-start, 100%)); }
  100% { transform: translateX(calc(-1 * var(--marquee-end, 0px))); }
}

.desk-map-page .map-spot-btn:active:not(.is-disabled) {
  transform: scale(1.02);
}

.desk-map-page .map-spot-btn.is-active {
  border-color: #b38435;
  box-shadow: 0 0 0 1px #b38435, 0 3px 10px rgba(38, 34, 32, 0.14);
}

.desk-map-page .map-spot-btn.is-active .btn-icon-fallback {
  background: #c8973f;
}

.desk-map-page .map-spot-btn.is-disabled {
  opacity: 0.78;
  color: #7e7e7e;
  background: #f3f3f3;
  border-color: #d5d5d5;
  cursor: default;
}

.desk-map-page .map-spot-btn.is-disabled .btn-icon-fallback {
  background: #9a9a9a;
}

/* 面板：头像右侧竖排。padding-left 盖住 4px 空隙，鼠标从封面移到点赞时 hover 不断 */
.desk-map-page .map-spot-btn--panel .spot-engage {
  position: absolute;
  left: 100%;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  width: calc(var(--engage-size) + 4px);
  height: auto;
  padding-left: 4px;
  box-sizing: border-box;
  pointer-events: none;
  z-index: 6;
}

.desk-map-page .map-spot-btn--panel .btn-icon:hover .spot-engage,
.desk-map-page .map-spot-btn--panel .spot-engage:hover {
  pointer-events: auto;
}

.desk-map-page .map-spot-btn--panel .spot-engage-btn {
  position: relative;
  flex: 0 0 var(--engage-size);
  width: var(--engage-size);
  height: var(--engage-size);
  border-radius: 50%;
  background: #fff;
  border: 1px solid rgba(200, 151, 63, 0.55);
  box-shadow: 0 2px 6px rgba(38, 34, 32, 0.16);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  opacity: 0;
  transform: scale(0.7);
  transition: opacity 0.18s, transform 0.18s, background 0.15s, border-color 0.15s;
  pointer-events: none;
  color: #8c8275;
}

.desk-map-page .map-spot-btn--panel .btn-icon:hover .spot-engage-btn,
.desk-map-page .map-spot-btn--panel .spot-engage:hover .spot-engage-btn,
.desk-map-page .map-spot-btn--panel .spot-engage-btn:hover,
.desk-map-page .map-spot-btn--panel .spot-engage-btn:focus-visible {
  opacity: 1;
  transform: scale(1);
  pointer-events: auto;
}

.desk-map-page .spot-glyph {
  display: block;
  width: 58%;
  height: 58%;
  flex: 0 0 auto;
  fill: currentColor;
  overflow: visible;
}

.desk-map-page .map-spot-btn--panel .spot-engage-btn.is-active,
.desk-map-page .map-spot-btn--panel .spot-engage-btn:hover {
  color: #c8973f;
  border-color: #c8973f;
  background: #fff8eb;
}

/* 商户地图标记：只有鼠标在封面上时，封面右侧才出现点赞/收藏 */
.desk-map-page .map-spot-btn--map.is-merchant-pin .spot-engage {
  position: absolute;
  left: 100%;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  width: max-content;
  padding-left: 4px;
  box-sizing: border-box;
  pointer-events: none;
  z-index: 6;
}

.desk-map-page .map-spot-btn--map.is-merchant-pin .btn-icon:hover .spot-engage,
.desk-map-page .map-spot-btn--map.is-merchant-pin .spot-engage:hover {
  pointer-events: auto;
}

.desk-map-page .map-spot-btn--map.is-merchant-pin .spot-engage-btn {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  height: var(--engage-size);
  min-width: var(--engage-size);
  padding: 0 6px;
  border-radius: 999px;
  background: #fff;
  border: 1px solid rgba(200, 151, 63, 0.55);
  box-shadow: 0 2px 6px rgba(38, 34, 32, 0.16);
  color: #262220;
  cursor: pointer;
  opacity: 0;
  transform: scale(0.7);
  transition: opacity 0.18s, transform 0.18s, background 0.15s, border-color 0.15s, color 0.15s;
  pointer-events: none;
}

.desk-map-page .map-spot-btn--map.is-merchant-pin .btn-icon:hover .spot-engage-btn,
.desk-map-page .map-spot-btn--map.is-merchant-pin .spot-engage:hover .spot-engage-btn,
.desk-map-page .map-spot-btn--map.is-merchant-pin .spot-engage-btn:hover,
.desk-map-page .map-spot-btn--map.is-merchant-pin .spot-engage-btn:focus-visible {
  opacity: 1;
  transform: scale(1);
  pointer-events: auto;
}

.desk-map-page .map-spot-btn--map.is-merchant-pin .spot-engage-btn em {
  font-style: normal;
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
}

.desk-map-page .map-spot-btn--map.is-merchant-pin .spot-engage-btn.is-active,
.desk-map-page .map-spot-btn--map.is-merchant-pin .spot-engage-btn:hover {
  color: #c8973f;
  border-color: #c8973f;
  background: #fff8eb;
}

.desk-map-page .map-spot-btn--panel .spot-engage-btn em {
  display: none;
}

/* 地图悬停：点赞 / 收藏数 */
.desk-map-page .map-spot-btn--map .spot-engage-stats {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
}

.desk-map-page .map-spot-btn--map .spot-stat {
  display: inline-flex;
  align-items: center;
  gap: 0.2rem;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  font-size: 11px;
  font-weight: 700;
  font-style: normal;
  font-family: inherit;
  line-height: 1;
  color: rgba(255, 255, 255, 0.92);
  cursor: pointer;
}

.desk-map-page .map-spot-btn--map .spot-stat.is-active {
  color: #fff;
}

.desk-map-page .map-spot-btn--map .spot-stat.is-active .spot-glyph {
  transform: scale(1.18);
}

.desk-map-page .map-spot-btn--map .spot-glyph {
  width: 12px;
  height: 12px;
  flex: 0 0 12px;
}

.desk-map-page .map-spot-btn--map .spot-stat em {
  font-style: normal;
}

.desk-map-page .map-actions--panel {
  min-height: 2.5rem;
}

@media (max-width: 991px) {
  .desk-map-page .map-shell {
    grid-template-columns: 1fr;
  }

  .desk-map-page .map-stage {
    height: 62vh;
    min-height: 20rem;
  }

  .desk-map-page .map-side {
    height: auto;
    max-height: none;
    border-left: 0;
    border-top: 1px solid var(--map-line);
  }

  .desk-map-page .map-side-body {
    max-height: 26rem;
  }

  .desk-map-page .map-search {
    width: 100%;
  }

  .desk-map-page .map-status {
    left: 1rem;
    right: 1rem;
    max-width: none;
  }
}


