/* Local business directory: page-owned layout, no global component overrides. */
.directory-v2 { background: #f4f6f9; --directory-ink: #17324d; --directory-line: #dce5ed; }
.directory-v2 .shops-hero { display: flex; min-height: 0; max-width: 1240px; margin: 24px auto 0; border-radius: 22px; }
.directory-v2 .shops-hero::before { filter: none; opacity: .22; }
.directory-v2 .shops-hero::after { background: linear-gradient(100deg,#102b48f5,#133b60dc 65%,#183c60bd); }
.directory-v2 .shops-hero-inner { display: grid; grid-template-columns: minmax(0,1fr) 280px; align-items: center; gap: 32px; padding: 30px 36px; }
.directory-v2 .directory-eyebrow { color: #c5daeb; font-size: .8125rem; letter-spacing: .1em; margin-bottom: 10px; }
.directory-v2 .shops-hero-title { font-size: clamp(1.75rem,3vw,2.4rem); line-height: 1.4; font-weight: 750; letter-spacing: -.035em; margin-bottom: 10px; }
.directory-v2 .shops-hero-sub { font-size: .9375rem; line-height: 1.8; margin-bottom: 14px; color: #deebf6; }
.directory-v2 .directory-meta { display: flex; flex-wrap: wrap; gap: 10px 20px; font-size: .8125rem; color: #c5daeb; font-variant-numeric: tabular-nums; }
.directory-v2 .directory-business { padding: 20px; border: 1px solid #ffffff2e; border-radius: 14px; background: #ffffff0b; }
.directory-v2 .directory-business strong { font-size: 1rem; }
.directory-v2 .directory-business p { font-size: .8125rem; line-height: 1.75; color: #cbdff0; margin: 6px 0 14px; }
.directory-v2 .directory-business a { display: flex; align-items: center; justify-content: space-between; min-height: 44px; padding: 10px 14px; background: #fff; color: #164268; border-radius: 9px; font-size: .875rem; font-weight: 650; }
.directory-v2 .directory-business .directory-promo-link { padding: 8px 0 0; min-height: 36px; background: none; color: #d5e6f4; font-size: .8125rem; font-weight: 400; }
.directory-v2 .sfbar { position: relative; top: auto; z-index: 210; max-width: 1240px; margin: 18px auto 0; border: 1px solid var(--directory-line); border-radius: 16px; box-shadow: 0 3px 16px #14334f04; }
.directory-v2 .sfbar-inner { padding: 20px 22px 10px; }
.directory-v2 .sfbar-search { border: 1px solid #c4d4e2; border-radius: 10px; padding: 4px 14px; min-height: 54px; background: #f8fafc; margin-bottom: 7px; }
.directory-v2 .sfbar-search .s-ico { opacity: 1; font-size: .875rem; color: #294965; font-weight: 650; }
.directory-v2 .sfbar-search input { min-width: 0; min-height: 44px; font-size: 1rem; padding: 4px 8px; }
.directory-v2 .directory-search-note { color: #627589; font-size: .75rem; margin-bottom: 14px; }
.directory-v2 .chip-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.directory-v2 .chip-quick-scroll { display: flex; flex-wrap: wrap; flex: 1 1 auto; gap: 8px; overflow: visible; mask-image: none; -webkit-mask-image: none; }
.directory-v2 .chip { min-height: 40px; font-size: .875rem; border-radius: 9px; border-width: 1px; padding: 8px 12px; }
.directory-v2 .chip.active { background: #eaf3fc; border-color: #a7c9e8; color: #145a99; box-shadow: none; }
.directory-v2 .chip-cats-scroll { order: 3; flex-basis: 100%; padding-top: 10px; border-top: 1px solid #edf1f5; }
.directory-v2 .chip-cats-scroll .chip { border-color: transparent; background: transparent; }
.directory-v2 .chip-cats-scroll .chip.active { background: #edf4fb; color: #145a99; }
.directory-v2 .cat-dd-btn { min-height: 40px; border-radius: 9px; font-size: .875rem; }
.directory-v2 .directory-sort { position: relative; }
.directory-v2 .directory-sort summary { cursor: pointer; min-height: 40px; padding: 8px 14px; border: 1px solid var(--directory-line); border-radius: 9px; font-size: .875rem; background: #fff; }
.directory-v2 .directory-sort-menu { position: absolute; left: 0; top: calc(100% + 8px); z-index: 250; display: grid; width: 176px; gap: 4px; background: #fff; border: 1px solid var(--directory-line); border-radius: 12px; padding: 8px; box-shadow: 0 12px 30px #102c501a; }
.directory-v2 .directory-sort-menu .chip { justify-content: flex-start; border-color: transparent; }
.directory-v2 .shops-split { display: grid; grid-template-columns: minmax(0,1.65fr) minmax(300px,1fr); max-width: 1240px; margin: 22px auto; gap: 24px; min-height: 0; align-items: start; }
.directory-v2 .split-list { min-width: 0; width: auto; overflow: visible; }
.directory-v2 .list-hdr { padding: 0 0 8px; background: transparent; border: 0; flex-wrap: wrap; }
.directory-v2 .list-hdr-title, .directory-v2 .list-hdr-title strong { font-size: 1rem; }
.directory-v2 .directory-ranking-note { font-size: .75rem; line-height: 1.7; color: #627589; margin-bottom: 16px; }
.directory-v2 #shops-container { padding: 0; gap: 14px; }
.directory-v2 .shop-card { border-radius: 16px; padding: 14px; gap: 18px; border: 1px solid var(--directory-line); box-shadow: 0 3px 16px #17324d05; }
.directory-v2 .shop-card:hover { transform: none; border-color: #b8cddd; box-shadow: 0 6px 22px #17324d0c; }
.directory-v2 .card-img-area { width: 140px; border-radius: 12px; background: #edf2f7; }
.directory-v2 .card-info { padding: 2px 0; gap: 8px; }
.directory-v2 .card-name-link { font-size: 1.125rem; font-weight: 700; color: var(--directory-ink); line-height: 1.5; }
.directory-v2 .directory-card-description { font-size: .875rem; color: #627589; line-height: 1.65; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.directory-v2 .rating-row { gap: 6px; }
.directory-v2 .review-cnt { font-size: .8125rem; color: #627589; }
.directory-v2 .rating-val { color: #17324d; font-weight: 700; }
.directory-v2 .member-badge { background: #fff5df; color: #7f5a12; border: 1px solid #eedeb7; box-shadow: none; font-size: .75rem; }
.directory-v2 .card-addr { font-size: .875rem; line-height: 1.65; align-items: flex-start; }
.directory-v2 .card-addr span { white-space: normal; overflow-wrap: anywhere; }
.directory-v2 .hours-row { flex-wrap: wrap; font-size: .8125rem; }
.directory-v2 .card-bottom-row { display: flex; flex-wrap: wrap; gap: 8px; padding-top: 12px; margin-top: auto; border-top: 1px solid #edf1f5; }
.directory-v2 .card-map-link, .directory-v2 .card-call-link, .directory-v2 .enter-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 40px; padding: 8px 12px; border-radius: 9px; font-size: .8125rem; font-weight: 600; }
.directory-v2 .card-map-link, .directory-v2 .card-call-link { background: #f4f7fa; color: #31526f; border: 1px solid #e0e8f0; }
.directory-v2 .enter-btn { background: #175f9e; color: #fff; box-shadow: none; margin-left: auto; }
.directory-v2 .directory-contact-note { align-self: center; font-size: .75rem; color: #627589; }
.directory-v2 .split-map { display: flex; flex-direction: column; width: 100%; position: sticky; top: 86px; height: min(680px,calc(100vh - 110px)); border-radius: 16px; border: 1px solid var(--directory-line); overflow: hidden; background: #fff; box-shadow: 0 4px 18px #17324d08; }
.directory-v2 .directory-map-heading { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 5px; padding: 16px; border-bottom: 1px solid var(--directory-line); }
.directory-v2 .directory-map-heading strong { font-size: .9375rem; }
.directory-v2 .directory-map-heading span { font-size: .75rem; color: #627589; }
.directory-v2 #leaflet-map { flex: 1; min-height: 0; }
.directory-v2 .map-fit-btn { top: 70px; }
.directory-v2 .fav-heart { width: 36px; height: 36px; min-height: 36px; }
.directory-v2 .rank-badge { background: #17324dcc; border-radius: 6px; }
.directory-v2 .no-results { background: #fff; border-radius: 14px; border: 1px dashed #c7d7e5; padding: 40px 20px; }
.directory-v2 .mob-view-toggle { max-width: 1240px; margin: 14px auto; border: 1px solid var(--directory-line); border-radius: 12px; box-shadow: none; }
@media (max-width: 1280px) {
  .directory-v2 .shops-hero, .directory-v2 .sfbar, .directory-v2 .shops-split { margin-left: 20px; margin-right: 20px; }
}
@media (max-width: 1050px) and (min-width: 900px) {
  .directory-v2 .shops-split { grid-template-columns: minmax(0,1.5fr) minmax(270px,1fr); gap: 18px; }
  .directory-v2 .card-img-area { width: 118px; }
}
@media (max-width: 899px) {
  /* 撤掉 page-shops.css 里旧版全屏布局的 body{overflow:hidden;height:100vh}。
     这里要的是「恢复默认」，所以是 visible 而不是 auto —— auto 会把 body
     变成滚动容器，页内所有 position:sticky（顶栏、筛选条）都会失效。 */
  .directory-v2 { overflow-y: visible; height: auto; }
  .directory-v2 .shops-hero { margin: 14px 12px 0; border-radius: 16px; }
  .directory-v2 .shops-hero-inner { display: block; padding: 22px; }
  .directory-v2 .shops-hero-title { font-size: 1.6rem; }
  .directory-v2 .shops-hero-sub { font-size: .875rem; }
  .directory-v2 .directory-business { display: none; }
  .directory-v2 .sfbar { margin: 12px; }
  .directory-v2 .sfbar-inner { padding: 14px 12px 6px; }
  .directory-v2 .sfbar-search .s-ico { display: none; }
  .directory-v2 .sfbar-search { padding: 3px 8px; }
  .directory-v2 .chip-quick-scroll { gap: 6px; }
  .directory-v2 .chip { font-size: .8125rem; padding: 8px 10px; }
  .directory-v2 .mob-view-toggle { margin: 12px; display: flex; }
  .directory-v2 .mvt-tab { min-height: 44px; font-size: .875rem; }
  .directory-v2 .shops-split { display: flex; position: static; flex-direction: column; overflow: visible; margin: 16px 12px; gap: 0; }
  .directory-v2 .split-list { width: 100%; flex: auto; overflow: visible; }
  .directory-v2 .split-map { height: 65vh; min-height: 340px; flex: auto; }
  .directory-v2 .shop-card { padding: 12px; gap: 12px; }
  .directory-v2 .card-img-area { width: 104px; }
  .directory-v2 .card-name-link { font-size: 1rem; }
  .directory-v2 .directory-card-description { font-size: .8125rem; -webkit-line-clamp: 2; }
  .directory-v2 .card-addr { font-size: .8125rem; }
}
@media (max-width: 440px) {
  .directory-v2 .shop-card { display: grid; grid-template-columns: 84px minmax(0,1fr); gap: 12px; }
  .directory-v2 .card-img-area { width: 84px; }
  .directory-v2 .card-info { min-width: 0; gap: 7px; }
  .directory-v2 .card-bottom-row { gap: 6px; }
  .directory-v2 .card-map-link, .directory-v2 .card-call-link, .directory-v2 .enter-btn { min-height: 44px; padding: 7px 9px; }
  .directory-v2 .enter-btn { margin-left: 0; }
  .directory-v2 .directory-meta { font-size: .75rem; }
}

/* ── 搜索提交 ───────────────────────────────────────────────── */
.directory-v2 .sfbar-submit { flex: 0 0 auto; min-height: 40px; padding: 8px 16px; border: 0; border-radius: 8px; background: #175f9e; color: #fff; font-size: .875rem; font-weight: 650; cursor: pointer; font-family: inherit; }
.directory-v2 .sfbar-submit:hover { background: #12507f; }

/* ── 地区筛选 ───────────────────────────────────────────────── */
.directory-v2 .chip-areas-scroll { order: 2; flex-basis: 100%; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding-top: 10px; border-top: 1px solid #edf1f5; }
.directory-v2 .chip-group-label { font-size: .75rem; color: #627589; font-weight: 650; letter-spacing: .04em; }
.directory-v2 .area-chip { border-color: transparent; background: transparent; }
.directory-v2 .area-chip.hood { color: #4a6076; }
.directory-v2 .area-chip.active { background: #edf4fb; border-color: #a7c9e8; color: #145a99; }
.directory-v2 .chip-count { font-size: .6875rem; color: #7b8ea1; font-variant-numeric: tabular-nums; }
.directory-v2 .area-chip.active .chip-count { color: #3d7cb5; }

/* ── 生效中的筛选条件 ───────────────────────────────────────── */
.directory-v2 .active-filters { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 12px; }
.directory-v2 .active-filter { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 5px 11px; border: 1px solid #cfe0ee; border-radius: 999px; background: #f2f8fd; color: #175f9e; font-size: .8125rem; font-weight: 600; }
.directory-v2 .active-filter:hover { background: #e5f0fa; border-color: #a7c9e8; }
.directory-v2 .active-filter.clear-all { background: transparent; border-color: transparent; color: #627589; font-weight: 400; text-decoration: underline; }
.directory-v2 .active-filter-note { font-size: .75rem; color: #7b8ea1; }
.directory-v2 .list-hdr-q { font-size: .8125rem; font-weight: 400; color: #627589; }

/* ── 卡片上的决策信息 ───────────────────────────────────────── */
.directory-v2 .order-badge { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 6px; background: #e8f8f0; color: #1b6b48; border: 1px solid #bfe7d3; font-size: .75rem; font-weight: 600; }
.directory-v2 .claimed-badge { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 6px; background: #eef4fb; color: #2c5f92; border: 1px solid #cadcee; font-size: .75rem; font-weight: 600; }

@media (max-width: 899px) {
  .directory-v2 .sfbar-submit { padding: 8px 12px; font-size: .8125rem; }
  .directory-v2 .chip-areas-scroll { gap: 6px; }
  /* 移动端没有 hover 可以提示可点，给个浅底让它看起来像按钮 */
  .directory-v2 .chip-areas-scroll .chip { font-size: .8125rem; padding: 7px 10px; background: #f4f7fa; border-color: #e3eaf1; }
  .directory-v2 .chip-areas-scroll .chip.active { background: #edf4fb; border-color: #a7c9e8; }
}

/* 样本量太小的评分，别让它看起来和 300 条评价的分数一样有分量 */
.directory-v2 .review-cnt.thin { color: #9a6a12; }
