/**
 * 商铺 CMS — 全站样式（Bootstrap 5 之上）
 * Mobile First · 支持浅色/深色
 */

/* ── 设计令牌（白底 + 多色强调：赤 / 青绿 / 琥珀 / 鼠尾草 / 天蓝）── */
:root {
  --site-font: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", sans-serif;
  /* 操作按钮：优先苹方/冬青黑，避免雅黑伪粗体发硬 */
  --site-font-action: "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Source Han Sans SC", "HarmonyOS Sans SC", "Microsoft YaHei UI", "Microsoft YaHei", system-ui, sans-serif;
  --site-radius-sm: 0.5rem;
  --site-radius: 0.75rem;
  --site-radius-lg: 1rem;
  --site-shadow-sm: 0 1px 2px rgba(38, 32, 28, 0.05);
  --site-shadow: 0 4px 18px rgba(38, 32, 28, 0.07);
  --site-shadow-hover: 0 10px 28px rgba(38, 32, 28, 0.1);
  --site-accent-shadow: rgba(195, 40, 40, 0.22);
  --site-surface: var(--bs-body-bg);
  --site-surface-elevated: #ffffff;
  --site-page-bg: #ffffff;
  --site-header-bg: rgba(255, 255, 255, 0.94);
  --site-header-border: rgba(38, 32, 28, 0.08);
  --site-header-accent-line: linear-gradient(
    90deg,
    transparent 0%,
    #1a9e96 14%,
    #6b7b73 30%,
    #c32828 48%,
    #c9920a 66%,
    #e85d4d 82%,
    transparent 100%
  );
  --site-accent: #c32828;
  --site-accent-hover: #9e1f1f;
  --site-accent-soft: #e85d4d;
  --site-accent-subtle: #fce9e6;
  --site-accent-on: #ffffff;
  --site-secondary-accent: #6b7b73;
  --site-secondary-subtle: #e8ece9;
  --site-accent-teal: #1a9e96;
  --site-accent-teal-hover: #15867f;
  --site-accent-teal-subtle: #e3f5f3;
  --site-accent-teal-on: #ffffff;
  --site-accent-amber: #c9920a;
  --site-accent-amber-hover: #a67808;
  --site-accent-amber-subtle: #fdf3dc;
  --site-accent-amber-on: #ffffff;
  --site-accent-sky: #5ba8c9;
  --site-accent-sky-hover: #4a92b0;
  --site-accent-sky-subtle: #e8f4fa;
  --site-accent-rose: #d94680;
  --site-accent-rose-subtle: #fce8f0;
  --site-ink-secondary: #3a3532;
  --site-ink-muted: #4f4a46;
  --site-text-muted: #57524d;
  --site-reading: #3f3a36;
  /* 字重层级：参考顶栏副标题 — 正文细、标签中等、标题/操作加粗 */
  --site-fw-title: 600;
  --site-fw-label: 500;
  --site-fw-action: 600;
  --site-fw-body: 400;
  --site-fw-meta: 500;
  /* UI 基准字形（与 .site-brand__tagline 一致） */
  --site-ui-size: 0.8125rem;
  --site-ui-size-sm: 0.75rem;
  --site-ui-tracking: 0;
  --site-ui-lh: 1.35;
  --site-gap: 1rem;
  --site-gap-lg: 1.5rem;
  --site-container-max: 72rem;
  --site-touch: 44px;
  --site-price-ink: var(--bs-emphasis-color);
  --site-price-muted: var(--site-text-muted);
  --site-price-line: rgba(38, 32, 28, 0.08);
  --site-price-divider: color-mix(in srgb, var(--bs-border-color) 62%, transparent);
  --site-price-value: var(--bs-emphasis-color);
  --site-price-value-accent: color-mix(in srgb, var(--site-accent) 42%, var(--bs-emphasis-color));
  --site-price-label: var(--site-ink-muted);
  --bs-body-bg: var(--site-page-bg);
  --bs-border-color: rgba(38, 32, 28, 0.1);
  --bs-secondary-color: var(--site-text-muted);
}

[data-bs-theme="dark"] {
  --site-page-bg: #121110;
  --site-surface-elevated: #1c1a18;
  --site-header-bg: rgba(18, 17, 16, 0.94);
  --site-header-border: rgba(255, 255, 255, 0.09);
  --site-header-accent-line: linear-gradient(
    90deg,
    transparent 0%,
    #4ecdc4 14%,
    #8fa396 30%,
    #ff8f82 48%,
    #fbbf24 66%,
    #e85d4d 82%,
    transparent 100%
  );
  --site-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.42);
  --site-shadow: 0 6px 24px rgba(0, 0, 0, 0.48);
  --site-shadow-hover: 0 12px 36px rgba(0, 0, 0, 0.58);
  --site-accent-shadow: rgba(232, 93, 77, 0.32);
  --site-accent: #ff8f82;
  --site-accent-hover: #ffb4a8;
  --site-accent-soft: #e85d4d;
  --site-accent-subtle: rgba(195, 40, 40, 0.16);
  --site-accent-on: #1a100e;
  --site-secondary-accent: #8fa396;
  --site-secondary-subtle: rgba(107, 123, 115, 0.18);
  --site-accent-teal: #5eead4;
  --site-accent-teal-hover: #8ef0e4;
  --site-accent-teal-subtle: rgba(26, 158, 150, 0.16);
  --site-accent-teal-on: #0f1a18;
  --site-accent-amber: #fbbf24;
  --site-accent-amber-hover: #fcd34d;
  --site-accent-amber-subtle: rgba(201, 146, 10, 0.16);
  --site-accent-amber-on: #1a1408;
  --site-accent-sky: #7ec8e8;
  --site-accent-sky-hover: #a8ddf2;
  --site-accent-sky-subtle: rgba(91, 168, 201, 0.14);
  --site-accent-rose: #f472b6;
  --site-accent-rose-subtle: rgba(217, 70, 128, 0.14);
  --site-ink-secondary: #ece7df;
  --site-ink-muted: #d8d1c7;
  --site-text-muted: #ccc4ba;
  --site-reading: #ece5db;
  --site-price-ink: var(--bs-emphasis-color);
  --site-price-muted: var(--site-ink-muted);
  --site-price-line: rgba(255, 255, 255, 0.1);
  --site-price-divider: rgba(255, 255, 255, 0.14);
  --site-price-value: var(--bs-emphasis-color);
  --site-price-value-accent: #ffb4a8;
  --site-price-label: var(--site-ink-muted);
  --bs-body-bg: var(--site-page-bg);
  --bs-body-color: #f3ece4;
  --bs-emphasis-color: #faf6f0;
  --bs-primary: #ff8f82;
  --bs-primary-rgb: 255, 143, 130;
  --bs-secondary-color: var(--site-text-muted);
  --bs-border-color: rgba(255, 255, 255, 0.11);
}

/* ── 基础 ── */
html {
  -webkit-text-size-adjust: 100%;
}

@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}

body.site-front {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  font-family: var(--site-font);
  font-size: 1rem;
  font-weight: var(--site-fw-body);
  line-height: 1.6;
  background: var(--site-page-bg);
  color: var(--bs-body-color);
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.skip-link {
  position: fixed;
  top: 0.5rem;
  left: 0.5rem;
  z-index: 1100;
  padding: 0.4rem 0.85rem;
  border-radius: var(--site-radius-sm);
  background: var(--site-accent);
  color: #fff;
  font-size: 0.875rem;
  text-decoration: none;
  transform: translateY(-200%);
  transition: transform 0.2s ease;
}

.skip-link:focus {
  transform: translateY(0);
  outline: 2px solid #fff;
  outline-offset: 2px;
}

/* ── 顶栏 ── */
.site-header {
  position: sticky;
  top: 0;
  z-index: 1030;
  background: var(--site-header-bg);
  backdrop-filter: blur(16px) saturate(1.2);
  -webkit-backdrop-filter: blur(16px) saturate(1.2);
  border-bottom: 1px solid var(--site-header-border);
  box-shadow: var(--site-header-shadow, 0 4px 24px rgba(38, 32, 28, 0.05));
}

[data-bs-theme="dark"] .site-header {
  --site-header-shadow: 0 4px 24px rgba(0, 0, 0, 0.35);
}

.site-front--minimal {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--site-page-bg, var(--bs-body-bg));
}

.site-header::after {
  content: "";
  display: block;
  height: 1px;
  background: var(--site-header-accent-line);
  opacity: 0.55;
}

.site-header__shell {
  padding-top: 0.85rem;
  padding-bottom: 0;
}

.site-header__brand-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 0.75rem;
}

.site-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  min-width: 0;
  text-decoration: none;
  color: inherit;
  transition: opacity 0.2s ease;
}

.site-brand:hover {
  opacity: 0.88;
  color: inherit;
}

.site-brand__mark {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 0.85rem;
  background: linear-gradient(145deg, var(--site-accent) 0%, var(--site-accent-soft) 100%);
  box-shadow: 0 6px 16px var(--site-accent-shadow);
}

.site-brand__mark--fallback .bi {
  font-size: 1.25rem;
  color: #fff;
}

.site-brand__logo {
  width: 100%;
  height: 100%;
  object-fit: contain;
  border-radius: 0.65rem;
}

.site-brand__text {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  min-width: 0;
}

.site-brand__name {
  font-size: 1.2rem;
  font-weight: var(--site-fw-title);
  letter-spacing: -0.02em;
  line-height: 1.2;
  color: var(--bs-emphasis-color);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.site-brand__tagline {
  font-size: var(--site-ui-size-sm);
  font-weight: var(--site-fw-meta);
  letter-spacing: var(--site-ui-tracking);
  line-height: var(--site-ui-lh);
  text-transform: none;
  color: var(--site-ink-muted);
  white-space: nowrap;
}

/* 行业导航：卡片 Tab + 底部分割线 */
.site-industry-nav {
  position: relative;
  margin: 0 -0.25rem;
  padding-top: 0.15rem;
}

.site-industry-nav__track {
  overflow: visible;
  padding: 0.2rem 0.15rem 0.45rem;
}

.site-industry-nav__list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.35rem 0.28rem;
  width: 100%;
  min-width: 0;
  position: relative;
  padding-bottom: 0.35rem;
}

.site-industry-nav__list::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1px;
  background: color-mix(in srgb, var(--bs-border-color) 82%, transparent);
  pointer-events: none;
  z-index: 0;
}

.site-industry-nav__fade {
  display: none;
  position: absolute;
  top: 0;
  bottom: 0.15rem;
  width: 1.75rem;
  pointer-events: none;
  z-index: 4;
}

.site-industry-nav__fade--start {
  left: 0;
  background: linear-gradient(90deg, var(--site-header-bg) 30%, transparent);
}

.site-industry-nav__fade--end {
  right: 0;
  background: linear-gradient(270deg, var(--site-header-bg) 30%, transparent);
}

.site-industry-nav__item {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.32rem;
  min-width: 0;
  width: 100%;
  padding: 0.5rem 0.28rem 0.58rem;
  border-radius: var(--site-radius-sm);
  text-decoration: none;
  color: var(--bs-emphasis-color);
  cursor: pointer;
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--site-surface-elevated) 98%, #fff) 0%,
    color-mix(in srgb, var(--site-surface-elevated) 88%, var(--site-page-bg)) 100%
  );
  border: 1px solid color-mix(in srgb, var(--bs-border-color) 90%, transparent);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.72),
    0 1px 3px rgba(38, 32, 28, 0.05);
  transition:
    color 0.2s ease,
    background 0.2s ease,
    border-color 0.2s ease,
    box-shadow 0.2s ease;
}

[data-bs-theme="dark"] .site-industry-nav__item:not(.is-active):not(:hover) {
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--site-surface-elevated) 96%, #fff) 0%,
    color-mix(in srgb, var(--site-surface-elevated) 82%, #121110) 100%
  );
  border-color: color-mix(in srgb, var(--bs-border-color) 95%, transparent);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 1px 4px rgba(0, 0, 0, 0.3);
}

.site-industry-nav__item::after {
  content: "";
  position: absolute;
  left: 0.55rem;
  right: 0.55rem;
  bottom: -0.35rem;
  height: 2px;
  border-radius: 2px;
  background: transparent;
  transition: background 0.22s ease, transform 0.22s ease, opacity 0.22s ease;
  transform: scaleX(0.45);
  opacity: 0;
  z-index: 2;
}

.site-industry-nav__item:hover {
  z-index: 2;
  color: var(--site-accent);
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--site-accent-subtle) 88%, #fff) 0%,
    color-mix(in srgb, var(--site-accent-subtle) 58%, var(--site-surface-elevated)) 100%
  );
  border-color: color-mix(in srgb, var(--site-accent) 30%, var(--bs-border-color));
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.78),
    0 4px 14px color-mix(in srgb, var(--site-accent) 14%, transparent);
}

.site-industry-nav__item:hover::after {
  background: color-mix(in srgb, var(--site-accent) 55%, transparent);
  transform: scaleX(0.72);
  opacity: 1;
}

.site-industry-nav__item.is-active {
  z-index: 3;
  color: var(--site-accent);
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--site-accent-subtle) 95%, #fff) 0%,
    color-mix(in srgb, var(--site-accent-subtle) 72%, var(--site-surface-elevated)) 100%
  );
  border-color: color-mix(in srgb, var(--site-accent) 36%, var(--bs-border-color));
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.7),
    0 5px 16px color-mix(in srgb, var(--site-accent) 20%, transparent);
}

.site-industry-nav__item.is-active::after {
  background: linear-gradient(90deg, var(--site-accent), var(--site-accent-soft));
  transform: scaleX(1);
  opacity: 1;
}

.site-industry-nav__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.05rem;
  height: 2.05rem;
  border-radius: 50%;
  font-size: 0.95rem;
  color: var(--site-ink-secondary);
  background: color-mix(in srgb, var(--site-surface-elevated) 96%, #fff);
  border: 1px solid color-mix(in srgb, var(--bs-border-color) 92%, transparent);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.7),
    0 1px 2px rgba(38, 32, 28, 0.04);
  transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}

.site-industry-nav__item:hover .site-industry-nav__icon {
  border-color: color-mix(in srgb, var(--site-accent) 42%, transparent);
  color: var(--site-accent);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.75),
    0 2px 8px color-mix(in srgb, var(--site-accent) 16%, transparent);
}

.site-industry-nav__item.is-active .site-industry-nav__icon {
  background: linear-gradient(145deg, var(--site-accent) 0%, var(--site-accent-soft) 100%);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 4px 12px var(--site-accent-shadow);
}

.site-industry-nav__label {
  font-size: var(--site-ui-size);
  font-weight: var(--site-fw-label);
  line-height: var(--site-ui-lh);
  white-space: nowrap;
  letter-spacing: var(--site-ui-tracking);
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  text-align: center;
}

.site-industry-nav__item.is-active .site-industry-nav__label {
  font-weight: var(--site-fw-title);
}

@media (min-width: 768px) {
  .site-header__shell {
    padding-top: 1rem;
  }

  .site-header__brand-row {
    padding-bottom: 0.85rem;
  }

  .site-brand__name {
    font-size: 1.35rem;
  }

  .site-brand__tagline {
    font-size: var(--site-ui-size);
  }

  .site-industry-nav__track {
    overflow-x: auto;
    overflow-y: visible;
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding: 0.25rem 0.25rem 0.5rem;
  }

  .site-industry-nav__track::-webkit-scrollbar {
    display: none;
  }

  .site-industry-nav__list {
    display: flex;
    flex-wrap: nowrap;
    gap: 0.35rem;
    justify-content: center;
    width: 100%;
    min-width: min-content;
    grid-template-columns: unset;
  }

  .site-industry-nav__item {
    display: inline-flex;
    flex: 0 0 auto;
    width: auto;
    min-width: 4.85rem;
    padding: 0.62rem 0.9rem 0.72rem;
  }

  .site-industry-nav__label {
    font-size: var(--site-ui-size);
    overflow: visible;
    text-overflow: clip;
  }

  .site-industry-nav__fade {
    display: none;
  }
}

/* ── 主内容区 ── */
.site-main {
  flex: 1;
  padding: var(--site-gap) 0 var(--site-gap-lg);
}

.site-main__inner {
  max-width: var(--site-container-max);
}

/* ── 页脚 ── */
.site-footer {
  margin-top: auto;
  padding: 1.25rem 0;
  background: var(--site-surface-elevated);
  border-top: 1px solid var(--bs-border-color);
}

.site-footer__inner {
  text-align: center;
}

.site-footer__nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.35rem 0.65rem;
  margin-bottom: 0.85rem;
  padding-bottom: 0.85rem;
  border-bottom: 1px solid color-mix(in srgb, var(--bs-border-color) 70%, transparent);
}

.site-footer__nav-link {
  font-size: 0.8125rem;
  font-weight: var(--site-fw-body);
  color: var(--site-ink-muted);
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.15s ease;
}

.site-footer__nav-link:hover {
  color: var(--site-accent);
}

.site-footer__copy {
  font-size: 0.8125rem;
  color: var(--site-ink-muted);
}

.site-footer__copy a {
  color: var(--site-ink-muted);
  text-decoration: none;
}

.site-footer__copy a:hover {
  color: var(--site-accent);
}

.site-footer__sep {
  margin: 0 0.35rem;
}

.site-footer__friend {
  margin-bottom: 0.85rem;
  padding-bottom: 0.85rem;
  border-bottom: 1px solid color-mix(in srgb, var(--bs-border-color) 70%, transparent);
}

.site-footer__friend-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.35rem 0.65rem;
}

.site-footer__friend-label {
  margin: 0;
  font-size: 0.8125rem;
  font-weight: var(--site-fw-label);
  color: var(--site-ink-muted);
  white-space: nowrap;
}

.site-footer__friend-list {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.35rem 0.65rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.site-footer__friend-link {
  font-size: 0.8125rem;
  color: var(--site-ink-muted);
  text-decoration: none;
  transition: color 0.15s ease;
}

.site-footer__friend-link:hover {
  color: var(--site-accent);
}

.site-footer--minimal .site-footer__friend {
  border-bottom: none;
  padding-bottom: 0;
}

.site-footer__disclaimer {
  margin: 0.85rem auto 0;
  max-width: 100%;
  padding-inline: 0.35rem;
  font-size: 0.8125rem;
  line-height: 1.65;
  color: var(--site-reading);
  text-align: center;
}

@media (min-width: 768px) {
  .site-footer__disclaimer {
    padding-inline: 0.5rem;
    font-size: 0.875rem;
    line-height: 1.5;
    text-wrap: balance;
  }
}

@media (min-width: 992px) {
  .site-footer__disclaimer {
    margin-top: 0.7rem;
    padding-inline: 1rem;
    /* 与页脚容器同宽，PC 上尽量压成 1～2 行 */
    max-width: none;
  }
}

[data-bs-theme="dark"] .site-footer__disclaimer {
  color: var(--site-reading);
}

/* 右侧悬浮：客服 / 主题 / 回到顶部 */
.site-float-actions {
  --float-btn-size: 3.45rem;
  --float-icon-size: 1.45rem;
  --float-label-size: 0.6875rem;
  position: fixed;
  right: max(0.85rem, env(safe-area-inset-right, 0px));
  bottom: max(1.25rem, env(safe-area-inset-bottom, 0px));
  z-index: 1040;
  pointer-events: none;
}

.site-float-actions__stack {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.65rem;
  pointer-events: auto;
}

.site-float-actions__card {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  width: var(--float-btn-size);
  border-radius: var(--site-radius-lg);
  background: var(--site-surface-elevated);
  border: 1px solid color-mix(in srgb, var(--bs-border-color) 88%, transparent);
  box-shadow: var(--site-shadow), 0 0 0 1px rgba(255, 255, 255, 0.04);
  overflow: hidden;
}

[data-bs-theme="light"] .site-float-actions__card {
  box-shadow:
    0 8px 28px rgba(38, 32, 28, 0.1),
    0 2px 6px rgba(38, 32, 28, 0.05);
}

.site-float-actions__group {
  position: relative;
  z-index: 1;
}

.site-float-actions__group.is-open {
  z-index: 1051;
}

.site-float-actions__btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.22rem;
  width: 100%;
  min-height: calc(var(--float-btn-size) + 0.2rem);
  padding: 0.52rem 0.35rem 0.45rem;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--bs-body-color);
  cursor: pointer;
  transition: background 0.18s ease, color 0.18s ease, transform 0.15s ease;
}

.site-float-actions__card > .site-float-actions__btn:not(:first-child),
.site-float-actions__card > .site-float-actions__group + .site-float-actions__btn {
  border-top: 1px solid color-mix(in srgb, var(--bs-border-color) 65%, transparent);
}

.site-float-actions__btn:hover,
.site-float-actions__btn:focus-visible {
  background: var(--site-accent-subtle);
  color: var(--site-accent);
  outline: none;
}

.site-float-actions__btn[aria-expanded="true"] {
  background: var(--site-accent-subtle);
  color: var(--site-accent);
}

.site-float-actions__btn:active {
  transform: scale(0.97);
}

.site-float-actions__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  background: color-mix(in srgb, var(--site-accent-subtle) 72%, var(--site-surface-elevated));
  color: var(--site-accent);
  transition: background 0.18s ease, transform 0.18s ease;
}

.site-float-actions__btn:hover .site-float-actions__icon,
.site-float-actions__btn:focus-visible .site-float-actions__icon,
.site-float-actions__btn[aria-expanded="true"] .site-float-actions__icon {
  background: var(--site-accent);
  color: #fff;
  transform: translateY(-1px);
}

.site-float-actions__icon .bi {
  font-size: var(--float-icon-size);
  line-height: 1;
}

.site-float-actions__text {
  font-size: var(--site-ui-size-sm);
  font-weight: var(--site-fw-label);
  line-height: var(--site-ui-lh);
  letter-spacing: var(--site-ui-tracking);
  white-space: nowrap;
}

.site-float-actions__btn--top {
  width: var(--float-btn-size);
  min-height: calc(var(--float-btn-size) + 0.35rem);
  padding: 0.6rem 0.35rem 0.5rem;
  border-radius: var(--site-radius-lg);
  border: 1px solid color-mix(in srgb, var(--site-accent) 35%, transparent);
  background: linear-gradient(145deg, var(--site-accent) 0%, var(--site-accent-hover) 100%);
  color: #fff;
  box-shadow: 0 8px 22px color-mix(in srgb, var(--site-accent) 42%, transparent);
}

.site-float-actions__btn--top .site-float-actions__icon {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}

.site-float-actions__btn--top .site-float-actions__text {
  color: rgba(255, 255, 255, 0.95);
}

.site-float-actions__btn--top:hover,
.site-float-actions__btn--top:focus-visible {
  background: linear-gradient(145deg, var(--site-accent-hover) 0%, var(--site-accent) 100%);
  color: #fff;
  box-shadow: 0 10px 26px color-mix(in srgb, var(--site-accent) 50%, transparent);
}

.site-float-actions__btn--top:hover .site-float-actions__icon,
.site-float-actions__btn--top:focus-visible .site-float-actions__icon {
  background: rgba(255, 255, 255, 0.28);
  color: #fff;
}

.site-float-actions__btn--top[hidden] {
  display: none !important;
}

.site-float-actions__panel {
  position: absolute;
  right: calc(100% + 0.65rem);
  bottom: 0;
  z-index: 1052;
  width: min(16.5rem, calc(100vw - 5.5rem));
  border: 1px solid var(--bs-border-color);
  border-radius: var(--site-radius-lg);
  background: var(--site-surface-elevated);
  box-shadow: var(--site-shadow-hover);
  pointer-events: auto;
}

.site-float-actions__panel::after {
  content: none;
}

.site-float-actions__panel--service::after {
  content: "";
  position: absolute;
  right: -0.42rem;
  /* 面板底对齐「分享」后，箭头仍对准「客服」按钮中部 */
  bottom: calc(var(--float-btn-size) + 0.85rem + (var(--float-btn-size) + 0.2rem) / 2 - 0.375rem);
  width: 0.75rem;
  height: 0.75rem;
  border-right: 1px solid var(--bs-border-color);
  border-bottom: 1px solid var(--bs-border-color);
  background: var(--site-surface-elevated);
  transform: rotate(-45deg);
  pointer-events: none;
}

.site-float-actions__panel--service {
  --float-service-panel-w: 15.25rem;
  /* 仍在按钮左侧；底边下移一格，与「分享」按钮底边对齐 */
  bottom: calc(-1 * (var(--float-btn-size) + 0.2rem + 0.65rem));
  width: min(var(--float-service-panel-w), calc(100vw - 5.5rem));
  border-radius: 0.85rem;
  overflow: hidden;
}

.site-float-actions__panel--service .site-float-actions__panel-inner {
  padding: 0.78rem 0.82rem;
}

[data-bs-theme="light"] .site-float-actions__panel--service {
  box-shadow:
    0 12px 40px rgba(38, 32, 28, 0.12),
    0 4px 12px rgba(38, 32, 28, 0.05);
}

[data-bs-theme="dark"] .site-float-actions__panel--service {
  border-color: color-mix(in srgb, var(--bs-border-color) 70%, #1c1a18);
  box-shadow:
    0 16px 48px rgba(0, 0, 0, 0.55),
    0 0 0 1px rgba(255, 255, 255, 0.04);
}

.site-float-actions__group.is-open .site-float-actions__btn--service {
  background: linear-gradient(160deg, var(--site-accent) 0%, var(--site-accent-hover) 100%);
  color: #fff;
}

.site-float-actions__group.is-open .site-float-actions__btn--service .site-float-actions__icon {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}

.site-float-actions__group.is-open .site-float-actions__btn--service .site-float-actions__text {
  color: rgba(255, 255, 255, 0.96);
}

.site-float-actions__service-head {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  margin-bottom: 0.7rem;
  padding-bottom: 0.62rem;
  border-bottom: 1px solid color-mix(in srgb, var(--bs-border-color) 75%, transparent);
}

.site-float-actions__service-head-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 2.2rem;
  height: 2.2rem;
  border-radius: 0.6rem;
  background: color-mix(in srgb, var(--site-accent-subtle) 88%, var(--site-surface-elevated));
  color: var(--site-accent);
  font-size: 1.1rem;
}

[data-bs-theme="dark"] .site-float-actions__service-head-icon {
  background: color-mix(in srgb, var(--site-accent) 22%, var(--site-surface-elevated));
  color: var(--site-accent-soft);
}

.site-float-actions__service-title {
  margin: 0;
  font-size: 0.98rem;
  font-weight: var(--site-fw-title);
  line-height: 1.25;
  color: var(--bs-emphasis-color);
}

.site-float-actions__service-subtitle {
  margin: 0.12rem 0 0;
  font-size: 0.75rem;
  line-height: 1.3;
  color: var(--site-ink-muted);
}

.site-float-actions__service-id-box {
  margin-bottom: 0.62rem;
  padding: 0.62rem 0.68rem;
  border-radius: 0.6rem;
  background: color-mix(in srgb, var(--site-accent-subtle) 42%, var(--site-surface));
  border: 1px solid color-mix(in srgb, var(--site-accent) 12%, var(--bs-border-color));
}

[data-bs-theme="dark"] .site-float-actions__service-id-box {
  background: color-mix(in srgb, var(--site-accent) 10%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--site-accent) 22%, var(--bs-border-color));
}

.site-float-actions__service-id-label {
  display: flex;
  align-items: center;
  gap: 0.32rem;
  margin: 0 0 0.38rem;
  font-size: var(--site-ui-size);
  font-weight: var(--site-fw-label);
  letter-spacing: var(--site-ui-tracking);
  color: var(--site-ink-secondary);
}

.site-float-actions__service-id-label .bi {
  font-size: 0.875rem;
  color: var(--site-accent);
}

.site-float-actions__service-id-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.45rem;
}

.site-float-actions__service-id-value {
  flex: 1;
  min-width: 0;
  font-size: 1.02rem;
  font-weight: var(--site-fw-label);
  line-height: 1.2;
  letter-spacing: 0.02em;
  color: var(--bs-emphasis-color);
  word-break: break-all;
}

.site-float-actions__service-copy {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  flex-shrink: 0;
  padding: 0.3rem 0.55rem;
  border: 1px solid color-mix(in srgb, var(--site-accent-teal) 30%, var(--bs-border-color));
  border-radius: var(--site-radius-sm);
  background: color-mix(in srgb, var(--site-accent-teal-subtle) 55%, var(--site-surface-elevated));
  color: var(--site-accent-teal);
  font-size: 0.75rem;
  font-weight: var(--site-fw-action);
  line-height: 1;
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease, transform 0.15s ease;
}

.site-float-actions__service-copy:hover,
.site-float-actions__service-copy:focus-visible {
  border-color: color-mix(in srgb, var(--site-accent-teal) 50%, transparent);
  background: var(--site-accent-teal);
  color: #fff;
  outline: none;
}

.site-float-actions__service-copy:active {
  transform: scale(0.97);
}

[data-bs-theme="dark"] .site-float-actions__service-copy {
  background: color-mix(in srgb, var(--site-surface-elevated) 88%, #121110);
}

.site-float-actions__service-phone-box {
  margin-bottom: 0.62rem;
  padding: 0.62rem 0.68rem;
  border-radius: 0.6rem;
  background: color-mix(in srgb, var(--site-accent-subtle) 32%, var(--site-surface));
  border: 1px solid color-mix(in srgb, var(--site-accent) 10%, var(--bs-border-color));
}

[data-bs-theme="dark"] .site-float-actions__service-phone-box {
  background: color-mix(in srgb, var(--site-accent) 8%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--site-accent) 18%, var(--bs-border-color));
}

.site-float-actions__service-phone-label {
  display: flex;
  align-items: center;
  gap: 0.32rem;
  margin: 0 0 0.38rem;
  font-size: var(--site-ui-size);
  font-weight: var(--site-fw-label);
  letter-spacing: var(--site-ui-tracking);
  color: var(--site-ink-secondary);
}

.site-float-actions__service-phone-label .bi {
  font-size: 0.875rem;
  color: var(--site-accent);
}

.site-float-actions__service-phone-value {
  margin: 0 0 0.55rem;
  font-size: 1.02rem;
  font-weight: var(--site-fw-label);
  line-height: 1.25;
  letter-spacing: 0.03em;
  color: var(--bs-emphasis-color);
  word-break: break-all;
}

.site-float-actions__service-phone-actions {
  display: flex;
  align-items: stretch;
  gap: 0.4rem;
}

.site-float-actions__service-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  flex: 1;
  min-width: 0;
  min-height: 2rem;
  padding: 0.34rem 0.5rem;
  border: 1px solid color-mix(in srgb, var(--site-accent-teal) 30%, var(--bs-border-color));
  border-radius: var(--site-radius-sm);
  background: color-mix(in srgb, var(--site-accent-teal-subtle) 55%, var(--site-surface-elevated));
  color: var(--site-accent-teal);
  font-size: 0.75rem;
  font-weight: var(--site-fw-action);
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease, transform 0.15s ease;
}

.site-float-actions__service-action:hover,
.site-float-actions__service-action:focus-visible {
  border-color: color-mix(in srgb, var(--site-accent-teal) 50%, transparent);
  background: var(--site-accent-teal);
  color: #fff;
  outline: none;
}

.site-float-actions__service-action:active {
  transform: scale(0.97);
}

.site-float-actions__service-action--call {
  border-color: color-mix(in srgb, var(--site-accent) 45%, transparent);
  background: linear-gradient(145deg, var(--site-accent) 0%, var(--site-accent-hover) 100%);
  color: #fff;
}

.site-float-actions__service-action--call:hover,
.site-float-actions__service-action--call:focus-visible {
  background: linear-gradient(145deg, var(--site-accent-hover) 0%, var(--site-accent) 100%);
  color: #fff;
  border-color: transparent;
}

[data-bs-theme="dark"] .site-float-actions__service-action:not(.site-float-actions__service-action--call) {
  background: color-mix(in srgb, var(--site-surface-elevated) 88%, #121110);
}

.site-float-actions__service-qr {
  margin-top: 0.15rem;
}

.site-float-actions__service-qr-label {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.3rem;
  margin: 0 0 0.5rem;
  font-size: 0.75rem;
  font-weight: var(--site-fw-label);
  color: color-mix(in srgb, #16a34a 78%, var(--bs-emphasis-color));
}

[data-bs-theme="dark"] .site-float-actions__service-qr-label {
  color: color-mix(in srgb, #4ade80 72%, var(--bs-emphasis-color));
}

.site-float-actions__service-qr-frame {
  padding: 0.42rem;
  border-radius: 0.6rem;
  background: #fff;
  border: 1px solid color-mix(in srgb, var(--bs-border-color) 80%, transparent);
}

[data-bs-theme="dark"] .site-float-actions__service-qr-frame {
  background: #f8fafc;
  border-color: color-mix(in srgb, #fff 12%, var(--bs-border-color));
}

.site-float-actions__panel--service .site-float-actions__qrcode {
  max-width: 7.75rem;
  margin: 0 auto;
  border-radius: 0.35rem;
}

.site-float-actions__panel[hidden] {
  display: none !important;
}

.site-float-actions__panel-inner {
  padding: 1rem 1.05rem;
}

.site-float-actions__panel-title {
  font-weight: var(--site-fw-title);
  font-size: 0.9375rem;
}

.site-float-actions__panel-line {
  font-size: 0.875rem;
  word-break: break-word;
}

.site-float-actions__panel-hint {
  font-size: 0.8125rem;
  color: var(--site-ink-muted);
}

.site-float-actions__qrcode {
  display: block;
  width: 100%;
  max-width: 11rem;
  height: auto;
  margin: 0 auto;
  border-radius: var(--site-radius-sm);
}

.site-float-actions__panel-actions {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.site-float-actions__panel-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  width: 100%;
  padding: 0.55rem 0.75rem;
  border: 1px solid color-mix(in srgb, var(--bs-border-color) 80%, transparent);
  border-radius: var(--site-radius-sm);
  background: var(--site-surface);
  color: var(--bs-body-color);
  font-size: 0.875rem;
  font-weight: var(--site-fw-action);
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease;
}

.site-float-actions__panel-btn:hover,
.site-float-actions__panel-btn:focus-visible {
  border-color: color-mix(in srgb, var(--site-accent) 45%, transparent);
  background: var(--site-accent-subtle);
  color: var(--site-accent);
  outline: none;
}

.site-float-actions__panel-btn--primary {
  border-color: color-mix(in srgb, var(--site-accent) 40%, transparent);
  background: color-mix(in srgb, var(--site-accent) 12%, var(--site-surface));
  color: var(--site-accent);
}

.site-float-actions__panel-btn--primary:hover,
.site-float-actions__panel-btn--primary:focus-visible {
  background: var(--site-accent);
  color: #fff;
}

.site-float-actions__panel-btn[hidden] {
  display: none !important;
}

/* ── 快捷分享渠道按钮 ── */
.site-float-actions__share-channels {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.45rem;
  margin-top: 0.55rem;
  padding-top: 0.65rem;
  border-top: 1px solid color-mix(in srgb, var(--bs-border-color) 55%, transparent);
}

.site-float-actions__share-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  padding: 0.55rem 0.3rem 0.45rem;
  border: 1px solid color-mix(in srgb, var(--bs-border-color) 70%, transparent);
  border-radius: 0.7rem;
  background: var(--site-surface-elevated);
  color: var(--bs-body-color);
  font-size: 0.6875rem;
  font-weight: var(--site-fw-label);
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.12s ease, box-shadow 0.15s ease;
  line-height: 1.2;
}

.site-float-actions__btn--share:hover,
.site-float-actions__btn--share:focus-visible,
.site-float-actions__btn--share[aria-expanded="true"] {
  background: var(--site-accent-sky-subtle);
  color: var(--site-accent-sky);
}

.site-float-actions__btn--share:hover .site-float-actions__icon,
.site-float-actions__btn--share:focus-visible .site-float-actions__icon,
.site-float-actions__btn--share[aria-expanded="true"] .site-float-actions__icon {
  background: var(--site-accent-sky);
  color: #fff;
}

.site-float-actions__btn--theme:hover,
.site-float-actions__btn--theme:focus-visible {
  background: var(--site-accent-amber-subtle);
  color: var(--site-accent-amber);
}

.site-float-actions__btn--theme:hover .site-float-actions__icon,
.site-float-actions__btn--theme:focus-visible .site-float-actions__icon {
  background: var(--site-accent-amber);
  color: var(--site-accent-amber-on);
}

.site-float-actions__share-btn:hover,
.site-float-actions__share-btn:focus-visible {
  transform: translateY(-1px);
  outline: none;
  box-shadow: var(--site-shadow-sm);
}

.site-float-actions__share-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.15rem;
  height: 2.15rem;
  border-radius: 50%;
  font-size: 1.15rem;
  line-height: 1;
}

.site-float-actions__share-svg {
  display: block;
  width: 1.15rem;
  height: 1.15rem;
}

.site-float-actions__share-label {
  white-space: nowrap;
}

/* 品牌色：微博 / QQ / QQ空间（Simple Icons / 官方色值） */
.site-float-actions__share-btn--weibo .site-float-actions__share-icon {
  background: #e6162d;
  color: #fff;
}

.site-float-actions__share-btn--weibo:hover,
.site-float-actions__share-btn--weibo:focus-visible {
  border-color: color-mix(in srgb, #e6162d 45%, transparent);
  background: color-mix(in srgb, #e6162d 8%, var(--site-surface-elevated));
  color: #e6162d;
}

.site-float-actions__share-btn--qq .site-float-actions__share-icon {
  background: #12b7f5;
  color: #fff;
}

.site-float-actions__share-btn--qq:hover,
.site-float-actions__share-btn--qq:focus-visible {
  border-color: color-mix(in srgb, #12b7f5 45%, transparent);
  background: color-mix(in srgb, #12b7f5 8%, var(--site-surface-elevated));
  color: #0a9ed8;
}

.site-float-actions__share-btn--qzone .site-float-actions__share-icon {
  background: #fece00;
  color: #1a1a1a;
}

.site-float-actions__share-btn--qzone:hover,
.site-float-actions__share-btn--qzone:focus-visible {
  border-color: color-mix(in srgb, #fece00 55%, transparent);
  background: color-mix(in srgb, #fece00 14%, var(--site-surface-elevated));
  color: #8a6d00;
}

@media (min-width: 576px) {
  .site-float-actions {
    --float-btn-size: 3.65rem;
    --float-icon-size: 1.55rem;
    --float-label-size: 0.75rem;
  }

  .site-float-actions__icon {
    width: 2.4rem;
    height: 2.4rem;
  }
}

@media (max-width: 575.98px) {
  /* 分享等小面板：手机仍可向上展开（内容矮） */
  .site-float-actions__panel:not(.site-float-actions__panel--service) {
    right: 0;
    bottom: calc(100% + 0.55rem);
    width: min(15.5rem, calc(100vw - 2rem));
  }

  /* 客服面板：手机与 PC 同侧（左），底对齐「分享」，避免顶出屏幕 */
  .site-float-actions__panel--service {
    --float-service-panel-w: 15.25rem;
    right: calc(100% + 0.55rem);
    bottom: calc(-1 * (var(--float-btn-size) + 0.2rem + 0.65rem));
    width: min(var(--float-service-panel-w), calc(100vw - 5.25rem));
  }

  .site-float-actions__panel--service::after {
    right: -0.42rem;
    bottom: calc(var(--float-btn-size) + 0.85rem + (var(--float-btn-size) + 0.2rem) / 2 - 0.375rem);
    transform: rotate(-45deg);
  }
}

/* ── 页面标题区 ── */
.page-hero {
  margin-bottom: var(--site-gap-lg);
  padding: 1.5rem 1.25rem;
  border-radius: var(--site-radius-lg);
  background: linear-gradient(135deg, var(--site-accent-subtle) 0%, var(--site-surface-elevated) 55%);
  border: 1px solid var(--bs-border-color);
  box-shadow: var(--site-shadow-sm);
}

.page-hero--compact {
  padding: 1.15rem 1.15rem;
  margin-bottom: var(--site-gap);
}

.page-hero__title-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.65rem;
}

.page-hero__title-row .page-hero__title {
  margin-bottom: 0;
}

.page-hero__title {
  margin: 0 0 0.35rem;
  font-size: clamp(1.35rem, 4vw, 1.75rem);
  font-weight: var(--site-fw-title);
  letter-spacing: -0.03em;
  line-height: 1.25;
}

/* 前台状态角标（置顶 / 精选）共用尺寸 */
.shop-top-badge,
.shop-recommend-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  flex-shrink: 0;
  box-sizing: border-box;
  min-height: 1.375rem;
  padding: 0.15rem 0.5rem;
  border-radius: 0.35rem;
  border: 1px solid transparent;
  font-size: 0.6875rem;
  font-weight: var(--site-fw-label);
  letter-spacing: 0.04em;
  line-height: 1;
  white-space: nowrap;
  vertical-align: middle;
}

.shop-top-badge > span,
.shop-recommend-badge > span {
  line-height: 1;
}

.shop-top-badge .bi,
.shop-recommend-badge .bi {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 0.75rem;
  height: 0.75rem;
  font-size: 0.72rem;
  line-height: 1;
  flex-shrink: 0;
  opacity: 0.92;
}

.shop-top-badge--detail,
.shop-recommend-badge--detail {
  min-height: 1.5rem;
  padding: 0.18rem 0.55rem;
  font-size: 0.75rem;
}

.shop-top-badge--detail .bi,
.shop-recommend-badge--detail .bi {
  width: 0.8125rem;
  height: 0.8125rem;
  font-size: 0.75rem;
}

.sidebar-shop-item__badges {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.2rem;
  margin-inline-start: 0.25rem;
  vertical-align: middle;
}

.shop-top-badge--sidebar,
.shop-recommend-badge--sidebar {
  font-size: 0.65rem;
  padding: 0.05rem 0.35rem;
}

.shop-top-badge--sidebar .bi,
.shop-recommend-badge--sidebar .bi {
  font-size: 0.7em;
}

.shop-card__title-row .shop-top-badge--detail,
.shop-card__title-row .shop-recommend-badge--detail {
  margin-top: 0;
}

.shop-top-badge {
  background: color-mix(in srgb, #f59e0b 16%, var(--site-surface-elevated));
  color: #b45309;
  border-color: color-mix(in srgb, #f59e0b 38%, transparent);
}

[data-bs-theme="dark"] .shop-top-badge {
  color: #fcd34d;
  background: color-mix(in srgb, #f59e0b 22%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, #f59e0b 42%, transparent);
}

.shop-recommend-badge {
  background: color-mix(in srgb, #0ea5e9 16%, var(--site-surface-elevated));
  color: #0369a1;
  border-color: color-mix(in srgb, #0ea5e9 38%, transparent);
}

[data-bs-theme="dark"] .shop-recommend-badge {
  color: #7dd3fc;
  background: color-mix(in srgb, #0ea5e9 22%, var(--site-surface-elevated));
}

.page-hero__lead {
  margin: 0;
  font-size: 0.9375rem;
  color: var(--site-reading);
  max-width: 42rem;
}

.page-hero__meta {
  margin: 0.5rem 0 0;
  font-size: 0.875rem;
  color: var(--site-ink-muted);
}

/* 合并顶栏：面包屑 + H1（列表页等） */
.page-head {
  position: relative;
  overflow: hidden;
  margin-bottom: var(--site-gap);
  padding: 0.95rem 1.15rem 1.15rem 1.4rem;
  border-radius: var(--site-radius-lg);
  background:
    linear-gradient(
      128deg,
      color-mix(in srgb, var(--site-accent-subtle) 48%, var(--site-surface-elevated)) 0%,
      var(--site-surface-elevated) 38%,
      color-mix(in srgb, var(--site-accent-teal-subtle) 22%, var(--site-surface-elevated)) 100%
    );
  border: 1px solid color-mix(in srgb, var(--bs-border-color) 72%, transparent);
  box-shadow:
    var(--site-shadow-sm),
    inset 0 1px 0 color-mix(in srgb, #fff 55%, transparent);
}

.page-head::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.75rem;
  bottom: 0.75rem;
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: linear-gradient(
    180deg,
    var(--site-accent) 0%,
    color-mix(in srgb, var(--site-accent-teal) 72%, var(--site-accent)) 52%,
    var(--site-accent-amber) 100%
  );
}

.page-head::after {
  content: "";
  position: absolute;
  top: -35%;
  left: -8%;
  width: 42%;
  height: 110%;
  background: radial-gradient(
    ellipse at center,
    color-mix(in srgb, var(--site-accent-subtle) 38%, transparent) 0%,
    transparent 68%
  );
  pointer-events: none;
}

.page-head__title {
  position: relative;
  z-index: 1;
  margin: 0;
  font-size: clamp(1.35rem, 4vw, 1.75rem);
  font-weight: var(--site-fw-title);
  letter-spacing: -0.03em;
  line-height: 1.28;
  color: var(--bs-body-color);
}

.page-head__stat {
  display: inline-flex;
  align-items: center;
  vertical-align: middle;
  margin-left: 0.4rem;
  padding: 0.18rem 0.55rem;
  font-size: clamp(0.75rem, 2.4vw, 0.875rem);
  font-weight: var(--site-fw-label);
  letter-spacing: 0.02em;
  line-height: 1.2;
  color: var(--site-accent);
  background: color-mix(in srgb, var(--site-accent-subtle) 78%, var(--site-surface-elevated));
  border: 1px solid color-mix(in srgb, var(--site-accent) 20%, transparent);
  border-radius: var(--site-radius-sm);
  white-space: nowrap;
}

.page-head__lead {
  position: relative;
  z-index: 1;
  margin: 0.6rem 0 0;
  padding-left: 0.65rem;
  font-size: 1.015625rem;
  color: var(--site-reading);
  max-width: 100%;
  line-height: 1.68;
  border-left: 2px solid color-mix(in srgb, var(--site-accent-teal) 45%, transparent);
}

.page-head__title-row {
  position: relative;
  z-index: 1;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.65rem;
}

.page-head__title-row .page-head__title {
  margin-bottom: 0;
}

.page-head--detail {
  margin-bottom: var(--site-gap);
}

.site-breadcrumb--embed {
  position: relative;
  z-index: 1;
  margin: 0 0 0.72rem;
  padding: 0 0 0.72rem;
  border-bottom: 1px solid color-mix(in srgb, var(--site-accent) 10%, var(--bs-border-color));
}

.site-breadcrumb--embed .site-breadcrumb__list {
  font-size: 0.875rem;
}

.site-breadcrumb--embed .site-breadcrumb__link {
  padding: 0.2rem 0.5rem;
}

.site-breadcrumb--embed .site-breadcrumb__current {
  padding: 0.2rem 0.5rem;
}

.site-breadcrumb--embed .site-breadcrumb__item.is-current .site-breadcrumb__current {
  font-weight: var(--site-fw-label);
  background: color-mix(in srgb, var(--site-accent-subtle) 72%, transparent);
  border-color: color-mix(in srgb, var(--site-accent) 14%, transparent);
}

@media (min-width: 768px) {
  .page-head {
    padding: 1.1rem 1.35rem 1.25rem 1.55rem;
  }

  .page-head::before {
    top: 0.9rem;
    bottom: 0.9rem;
  }

  .site-breadcrumb--embed {
    margin-bottom: 0.8rem;
    padding-bottom: 0.8rem;
  }
}

[data-bs-theme="dark"] .page-head {
  box-shadow: var(--site-shadow-sm);
}

[data-bs-theme="dark"] .page-head::after {
  background: radial-gradient(
    ellipse at center,
    color-mix(in srgb, var(--site-accent-subtle) 55%, transparent) 0%,
    transparent 70%
  );
}

[data-bs-theme="dark"] .page-head__stat {
  background: color-mix(in srgb, var(--site-accent-subtle) 88%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--site-accent) 28%, transparent);
}

/* ── 区块标题 ── */
.section-head {
  margin-bottom: 1rem;
}

.section-head--row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}

.section-head__title {
  margin: 0;
  font-size: 1.125rem;
  font-weight: var(--site-fw-title);
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

.section-head__title .bi {
  color: var(--site-accent);
}

.section-head__desc {
  margin: 0.25rem 0 0;
  font-size: 0.875rem;
  color: var(--site-ink-muted);
}

/* ── 首页 ── */
body.site-front--home .site-main {
  padding-top: 1.15rem;
}

.home-page {
  display: flex;
  flex-direction: column;
  gap: 1.35rem;
}

.home-intro {
  margin-bottom: 0;
}

.home-intro__title {
  margin-bottom: 0.4rem;
}

.home-intro__lead {
  margin-bottom: 0;
}

.home-empty {
  margin-top: 0.25rem;
}

.home-block {
  margin: 0;
}

.home-block__inner {
  padding: 1rem 1rem 1.1rem;
  border-radius: var(--site-radius-lg);
  background: var(--site-surface-elevated);
  border: 1px solid color-mix(in srgb, var(--bs-border-color) 85%, transparent);
  box-shadow: var(--site-shadow-sm);
}

.home-block--latest .home-block__inner {
  border-top: 3px solid var(--site-accent-teal);
}

.home-block--recommend .home-block__inner {
  border-top: 3px solid var(--site-accent-amber);
}

.home-block--hot .home-block__inner {
  border-top: 3px solid var(--site-accent);
}

.home-block .section-head {
  margin-bottom: 0.85rem;
}

.home-block__more {
  display: inline-flex;
  align-items: center;
  gap: 0.1rem;
  flex-shrink: 0;
  font-size: 0.8125rem;
  font-weight: var(--site-fw-label);
  text-decoration: none;
  color: var(--site-ink-muted);
  white-space: nowrap;
  transition: color 0.15s ease;
}

.home-block__more .bi {
  font-size: 1.15rem;
  line-height: 1;
  transition: transform 0.15s ease;
}

.home-block__more:hover {
  color: var(--site-accent);
}

.home-block__more:hover .bi {
  transform: translateX(2px);
}

.section-head__action {
  margin: 0;
}

.home-block--latest .section-head__title .bi {
  color: var(--site-accent-teal);
}

.home-block--recommend .section-head__title .bi {
  color: var(--site-accent-amber);
}

.home-block--hot .section-head__title .bi {
  color: var(--site-accent);
}

[data-bs-theme="dark"] .home-block--latest .section-head__title .bi {
  color: var(--site-accent-teal);
}

[data-bs-theme="dark"] .home-block--recommend .section-head__title .bi {
  color: var(--site-accent-amber);
}

[data-bs-theme="dark"] .home-block--hot .section-head__title .bi {
  color: var(--site-accent);
}

.shop-list--home {
  gap: 0.55rem;
}

@media (min-width: 992px) {
  .shop-list--home {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.65rem;
  }
}

@media (min-width: 768px) {
  .home-block__inner {
    padding: 1.15rem 1.2rem 1.25rem;
  }
}

/* ── 商铺列表卡片 ── */
.shop-list {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.shop-card {
  --shop-card-accent: var(--site-accent);
  --shop-card-accent-strong: var(--site-accent-soft);
  --shop-card-glow: var(--site-accent-shadow);
  --shop-card-stripe-start: var(--site-secondary-accent);
  --shop-card-stripe-end: var(--site-accent-teal);
  --shop-card-loc-accent: var(--site-accent-teal);
  --shop-card-meta-bg: color-mix(in srgb, var(--site-page-bg) 55%, var(--site-surface-elevated));
  --shop-card-meta-border: color-mix(in srgb, var(--bs-border-color) 90%, transparent);
  --shop-card-badge-bg: var(--site-surface-elevated);
  --shop-card-badge-fg: var(--site-ink-secondary);
  --shop-card-badge-accent: var(--site-secondary-accent);
  --shop-card-loc-fg: var(--site-ink-muted);
  --shop-card-cta-fg: var(--shop-card-accent);
  display: grid;
  grid-template-columns: 1fr;
  align-items: stretch;
  background: var(--site-surface-elevated);
  border: 1px solid color-mix(in srgb, var(--bs-border-color) 88%, transparent);
  border-radius: calc(var(--site-radius-lg) + 0.1rem);
  box-shadow:
    var(--site-shadow-sm),
    inset 0 1px 0 rgba(255, 255, 255, 0.72);
  overflow: hidden;
  transition:
    box-shadow 0.28s ease,
    border-color 0.28s ease,
    transform 0.28s ease;
}

[data-bs-theme="dark"] .shop-card {
  --shop-card-accent: var(--site-accent);
  --shop-card-accent-strong: var(--site-accent-soft);
  --shop-card-glow: var(--site-accent-shadow);
  --shop-card-stripe-start: var(--site-secondary-accent);
  --shop-card-stripe-end: var(--site-accent-teal);
  --shop-card-loc-accent: var(--site-accent-teal);
  --shop-card-meta-bg: rgba(255, 255, 255, 0.035);
  --shop-card-meta-border: rgba(255, 255, 255, 0.1);
  --shop-card-badge-bg: rgba(255, 255, 255, 0.05);
  --shop-card-badge-fg: var(--site-ink-secondary);
  --shop-card-badge-accent: var(--site-secondary-accent);
  --shop-card-loc-fg: var(--site-ink-muted);
  --shop-card-cta-fg: var(--site-accent);
  background: var(--site-surface-elevated);
  box-shadow:
    var(--site-shadow-sm),
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

.shop-card:hover {
  border-color: color-mix(in srgb, var(--shop-card-accent) 42%, var(--bs-border-color));
  box-shadow:
    0 10px 28px var(--shop-card-glow),
    var(--site-shadow);
  transform: translateY(-1px);
}

.shop-card__main {
  position: relative;
  display: block;
  padding: 0.95rem 1rem;
  text-decoration: none;
  color: inherit;
  min-width: 0;
}

.shop-card__main::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: linear-gradient(180deg, var(--shop-card-stripe-start) 0%, var(--shop-card-stripe-end) 100%);
  opacity: 0.45;
  transition: opacity 0.28s ease, width 0.28s ease;
}

.shop-card:hover .shop-card__main::before {
  opacity: 1;
  width: 4px;
}

.shop-card__main--static {
  color: inherit;
}

.shop-card__body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}

.shop-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  flex-wrap: nowrap;
}

.shop-card__title-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 0.35rem 0.5rem;
  min-width: 0;
  flex: 1;
}

.shop-card--top {
  border-color: color-mix(in srgb, var(--site-accent-amber) 28%, var(--bs-border-color));
  box-shadow: 0 1px 0 color-mix(in srgb, var(--site-accent-amber) 12%, transparent);
}

[data-bs-theme="dark"] .shop-card--top {
  border-color: color-mix(in srgb, var(--site-accent-amber) 36%, var(--bs-border-color));
  box-shadow: 0 1px 0 color-mix(in srgb, var(--site-accent-amber) 18%, transparent);
}

.shop-card__title {
  margin: 0;
  font-size: 1.0625rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1.38;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  transition: color 0.22s ease;
}

.shop-card:hover .shop-card__title,
.shop-card__main:focus-visible .shop-card__title {
  color: color-mix(in srgb, var(--shop-card-accent) 72%, var(--bs-emphasis-color));
}

.shop-card__head-aside {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  max-width: 38%;
}

/* 人均消费 — 编辑式排版（列表卡 / 详情） */
.shop-price {
  display: inline-flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: baseline;
  gap: 0.42rem;
  max-width: 100%;
  line-height: 1.25;
  white-space: nowrap;
}

.shop-price__label {
  flex-shrink: 0;
  font-size: 0.8125rem;
  font-weight: var(--site-fw-body);
  letter-spacing: 0.02em;
  color: var(--site-price-label);
  line-height: 1.35;
}

.shop-price__amount {
  display: inline-flex;
  align-items: baseline;
  gap: 0.06rem;
  font-variant-numeric: tabular-nums lining-nums;
  font-feature-settings: "tnum" 1, "lnum" 1;
}

.shop-price__currency {
  font-size: 0.78em;
  font-weight: var(--site-fw-body);
  color: var(--site-price-muted);
  opacity: 0.88;
  transform: translateY(-0.04em);
}

.shop-price__num {
  font-size: 1.125rem;
  font-weight: var(--site-fw-label);
  letter-spacing: -0.035em;
  color: var(--site-price-value);
  transition: color 0.2s ease;
}

.shop-price__amount[data-range="1"] .shop-price__num {
  font-size: 1rem;
  letter-spacing: -0.02em;
}

/* 列表卡：左侧细线分隔，与标题同一行 */
.shop-price--card {
  align-items: baseline;
  padding: 0.12rem 0 0.12rem 0.72rem;
  border-left: 1px solid var(--site-price-divider);
  transition: border-color 0.2s ease;
}

.shop-price--card .shop-price__label {
  font-size: 0.8125rem;
}

.shop-price--card .shop-price__num {
  font-size: 1.125rem;
}

.shop-card:hover .shop-price--card {
  border-left-color: color-mix(in srgb, var(--shop-card-accent) 42%, var(--site-price-divider));
}

.shop-card:hover .shop-price--card .shop-price__num {
  color: var(--site-price-value-accent);
}

.shop-card--top .shop-price--card {
  border-left-color: color-mix(in srgb, #f59e0b 28%, var(--site-price-divider));
}

.shop-card--top:hover .shop-price--card {
  border-left-color: color-mix(in srgb, #f59e0b 55%, var(--site-price-divider));
}

.shop-card--top:hover .shop-price--card .shop-price__num {
  color: color-mix(in srgb, #d97706 35%, var(--site-price-value));
}

[data-bs-theme="dark"] .shop-card--top:hover .shop-price--card .shop-price__num {
  color: color-mix(in srgb, #fbbf24 42%, var(--site-price-value));
}

/* 详情页：左侧 dt 已是「人均消费」，右侧仅「约 ¥183」 */
.shop-price--detail {
  gap: 0.28rem;
  padding: 0;
  border: none;
  white-space: normal;
}

.shop-price__qualifier {
  flex-shrink: 0;
  font-size: 0.875rem;
  font-weight: var(--site-fw-body);
  color: var(--site-price-label);
  line-height: 1.35;
}

.shop-price--detail .shop-price__num {
  font-size: 1.25rem;
  font-weight: var(--site-fw-label);
}

.shop-price--detail .shop-price__currency {
  font-size: 0.82em;
}

.shop-price--detail .shop-price__amount[data-range="1"] .shop-price__num {
  font-size: 1.0625rem;
}

.detail-facts__row--price dd.detail-facts__price {
  margin: 0;
  padding-top: 0.05rem;
}

.detail-facts__row--price dt {
  align-self: baseline;
  padding-top: 0.15rem;
}

.shop-card__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.8125rem;
  line-height: 1.35;
  --shop-card-chip-min-h: calc(1.4rem + 0.56rem);
}

.shop-card__badge {
  position: relative;
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  min-height: var(--shop-card-chip-min-h);
  padding: 0.3rem 0.68rem 0.3rem 0.72rem;
  border-radius: var(--site-radius-sm);
  font-size: var(--site-ui-size-sm);
  font-weight: var(--site-fw-label);
  letter-spacing: var(--site-ui-tracking);
  color: var(--shop-card-badge-fg);
  background: color-mix(in srgb, var(--shop-card-badge-accent) 8%, var(--shop-card-badge-bg));
  border: 1px solid color-mix(in srgb, var(--shop-card-badge-accent) 16%, var(--shop-card-meta-border));
  box-shadow:
    var(--site-shadow-sm),
    inset 3px 0 0 var(--shop-card-badge-accent);
}

.shop-card__loc {
  display: inline-flex;
  align-items: center;
  gap: 0.42rem;
  flex: 0 1 auto;
  width: fit-content;
  max-width: 100%;
  min-height: var(--shop-card-chip-min-h);
  padding: 0.28rem 0.68rem 0.28rem 0.46rem;
  border-radius: var(--site-radius-sm);
  color: var(--shop-card-loc-fg);
  background: color-mix(in srgb, var(--site-accent-teal-subtle) 42%, var(--shop-card-meta-bg));
  border: 1px solid color-mix(in srgb, var(--site-accent-teal) 14%, var(--shop-card-meta-border));
  box-shadow: var(--site-shadow-sm);
}

.shop-card__loc-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 1.4rem;
  height: 1.4rem;
  border-radius: calc(var(--site-radius-sm) - 0.12rem);
  background: color-mix(in srgb, var(--shop-card-loc-accent) 16%, var(--site-surface-elevated));
  color: var(--shop-card-loc-accent);
  border: 1px solid color-mix(in srgb, var(--shop-card-loc-accent) 22%, transparent);
}

.shop-card__loc-icon .bi {
  font-size: 0.72rem;
  line-height: 1;
}

.shop-card__loc-text {
  min-width: 0;
  flex: 0 1 auto;
  font-size: 0.8125rem;
  line-height: 1.35;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

[data-bs-theme="dark"] .shop-card__loc {
  background: color-mix(in srgb, var(--site-accent-teal-subtle) 55%, var(--shop-card-meta-bg));
  border-color: color-mix(in srgb, var(--site-accent-teal) 18%, var(--shop-card-meta-border));
}

[data-bs-theme="dark"] .shop-card__loc-icon {
  background: var(--site-accent-teal-subtle);
  border-color: color-mix(in srgb, var(--site-accent-teal) 38%, transparent);
  color: var(--site-accent-teal);
}

/* 分栏 CTA：列表卡 / 文字广告共用 */
.shop-card__cta {
  margin: 0.15rem 0 0;
  padding-top: 0.62rem;
  background: linear-gradient(var(--shop-card-meta-border), var(--shop-card-meta-border)) 0 0 / 100% 1px no-repeat;
}

.shop-card__cta-btn,
.ad-item__cta {
  display: inline-flex;
  align-items: stretch;
  gap: 0;
  padding: 0;
  border-radius: var(--site-radius-sm);
  overflow: hidden;
  font-family: var(--site-font-action);
  font-size: var(--site-ui-size);
  font-weight: 500;
  line-height: var(--site-ui-lh);
  letter-spacing: 0.06em;
  text-decoration: none;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.5),
    0 1px 3px rgba(38, 32, 28, 0.05);
  transition:
    background 0.24s ease,
    border-color 0.24s ease,
    color 0.24s ease,
    box-shadow 0.24s ease,
    transform 0.24s ease;
}

.shop-card__cta-btn {
  border: 1px solid color-mix(in srgb, var(--shop-card-accent-strong) 24%, var(--bs-border-color));
  background: color-mix(in srgb, var(--site-accent-subtle) 38%, var(--site-surface-elevated));
  color: var(--shop-card-cta-fg);
}

.ad-item__cta {
  align-self: flex-start;
  border: 1px solid color-mix(in srgb, var(--site-accent-soft) 24%, var(--bs-border-color));
  background: color-mix(in srgb, var(--site-accent-subtle) 38%, var(--site-surface-elevated));
  color: var(--site-accent);
}

[data-bs-theme="dark"] .shop-card__cta-btn,
[data-bs-theme="dark"] .ad-item__cta {
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.07),
    0 1px 4px rgba(0, 0, 0, 0.22);
}

.shop-card__cta-text,
.ad-item__cta-text {
  display: inline-flex;
  align-items: center;
  padding: 0.5rem 0.82rem;
}

.shop-card__cta-arrow,
.ad-item__cta-arrow {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.15rem;
  padding: 0 0.58rem;
  background: transparent;
  color: inherit;
  transition: color 0.24s ease;
}

.shop-card__cta-arrow::before,
.ad-item__cta-arrow::before {
  content: "";
  position: absolute;
  left: 0;
  top: 22%;
  bottom: 22%;
  width: 1px;
  background: linear-gradient(
    180deg,
    transparent 0%,
    color-mix(in srgb, currentColor 30%, transparent) 50%,
    transparent 100%
  );
  pointer-events: none;
}

.shop-card__cta-arrow .bi,
.ad-item__cta-arrow .bi {
  font-size: 0.98rem;
  line-height: 1;
  color: inherit;
  transition: transform 0.24s ease;
}

.shop-card:hover .shop-card__cta-btn,
.shop-card__main:focus-visible .shop-card__cta-btn,
.ad-item--text:hover .ad-item__cta,
.ad-item__cta:hover,
.ad-item__cta:focus-visible {
  border-color: color-mix(in srgb, var(--site-accent-soft) 55%, transparent);
  background: linear-gradient(135deg, var(--site-accent-soft) 0%, var(--site-accent) 100%);
  color: #fff;
  box-shadow: 0 5px 16px var(--site-accent-shadow);
  text-decoration: none;
}

.shop-card:hover .shop-card__cta-arrow::before,
.shop-card__main:focus-visible .shop-card__cta-arrow::before,
.ad-item--text:hover .ad-item__cta-arrow::before,
.ad-item__cta:hover .ad-item__cta-arrow::before,
.ad-item__cta:focus-visible .ad-item__cta-arrow::before {
  background: linear-gradient(
    180deg,
    transparent 0%,
    rgba(255, 255, 255, 0.35) 50%,
    transparent 100%
  );
}

.shop-card:hover .shop-card__cta-arrow .bi,
.shop-card__main:focus-visible .shop-card__cta-arrow .bi,
.ad-item--text:hover .ad-item__cta-arrow .bi,
.ad-item__cta:hover .ad-item__cta-arrow .bi,
.ad-item__cta:focus-visible .ad-item__cta-arrow .bi {
  transform: translateX(2px);
}

.shop-card__desc {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.55;
  color: var(--site-reading);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.shop-card__feat {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--site-ink-muted);
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.shop-card__main:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--shop-card-accent-strong) 55%, transparent);
  outline-offset: 2px;
}

.shop-card__feat--sub {
  font-size: 0.75rem;
  -webkit-line-clamp: 1;
  padding-left: 0.55rem;
  border-left: 2px solid color-mix(in srgb, var(--shop-card-accent-strong) 35%, transparent);
}

/* 电话：拨打 + 复制（列表卡片 / 详情页共用） */
.shop-phone-contact {
  --phone-accent: var(--site-accent);
  --phone-copy-accent: var(--site-accent-teal);
  --phone-copy-subtle: var(--site-accent-teal-subtle);
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-width: 0;
}

.shop-phone-contact__call {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 0.65rem;
  flex: 1;
  padding: 0.75rem 1rem;
  color: var(--bs-body-color);
  text-decoration: none;
  min-height: var(--site-touch);
  transition: background 0.22s ease, color 0.22s ease;
}

.shop-phone-contact__call:hover {
  color: var(--phone-accent);
}

.shop-phone-contact__call-icon-wrap {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 2.85rem;
  height: 2.85rem;
}

.shop-phone-contact__call-ring {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: radial-gradient(circle, color-mix(in srgb, var(--phone-accent) 22%, transparent) 0%, transparent 72%);
  opacity: 0.85;
  transition: transform 0.28s ease, opacity 0.28s ease;
}

.shop-phone-contact__call-icon {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.45rem;
  height: 2.45rem;
  border-radius: 50%;
  font-size: 1rem;
  color: #fff;
  background: linear-gradient(145deg, var(--phone-accent) 0%, var(--site-accent-soft) 100%);
  box-shadow:
    0 6px 18px color-mix(in srgb, var(--phone-accent) 38%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 35%, transparent);
  transition: transform 0.22s ease, box-shadow 0.22s ease;
}

.shop-phone-contact__call:hover .shop-phone-contact__call-ring {
  transform: scale(1.12);
  opacity: 1;
}

.shop-phone-contact__call:hover .shop-phone-contact__call-icon {
  transform: scale(1.05);
  box-shadow:
    0 8px 22px color-mix(in srgb, var(--phone-accent) 48%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 40%, transparent);
}

.shop-phone-contact__call-text {
  display: flex;
  flex-direction: row;
  align-items: center;
  min-width: 0;
}

.shop-phone-contact__call-num {
  font-size: 1.0625rem;
  font-weight: var(--site-fw-label);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
  color: var(--phone-accent);
  line-height: 1.3;
  word-break: break-all;
}

.shop-phone-contact__call-label {
  font-family: var(--site-font-action);
  font-size: var(--site-ui-size-sm);
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--phone-accent);
  line-height: 1.25;
  white-space: nowrap;
}

.shop-phone-contact--compact .shop-phone-contact__call-text {
  flex-direction: column;
  align-items: center;
}

.shop-phone-contact--compact .shop-phone-contact__copy {
  flex-wrap: nowrap;
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}

.shop-phone-contact--compact .shop-phone-contact__copy-text {
  white-space: nowrap;
}

.shop-card .shop-phone-contact--compact {
  flex-shrink: 0;
  min-width: 5.75rem;
}

.shop-phone-contact__copy {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.32rem;
  width: 100%;
  margin: 0;
  padding: 0.52rem 0.75rem;
  border: none;
  border-top: 1px solid color-mix(in srgb, var(--phone-copy-accent) 20%, var(--bs-border-color));
  background: color-mix(in srgb, var(--phone-copy-subtle) 58%, var(--site-surface-elevated));
  font-family: var(--site-font-action);
  font-size: var(--site-ui-size-sm);
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--phone-copy-accent);
  cursor: pointer;
  min-height: var(--site-touch);
  transition: background 0.22s ease, color 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease;
}

.shop-phone-contact__copy:hover {
  color: #fff;
  background: linear-gradient(
    135deg,
    var(--phone-copy-accent) 0%,
    color-mix(in srgb, var(--phone-copy-accent) 78%, var(--site-accent-teal-hover)) 100%
  );
  border-top-color: color-mix(in srgb, var(--phone-copy-accent) 45%, transparent);
  box-shadow: 0 3px 10px color-mix(in srgb, var(--phone-copy-accent) 24%, transparent);
}

.shop-phone-contact__copy:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--phone-copy-accent) 45%, transparent);
  outline-offset: -2px;
}

.shop-phone-contact__copy .bi {
  font-size: 0.9rem;
  color: inherit;
}

/* 列表卡片右侧联系栏 */
.shop-card .shop-phone-contact {
  --phone-accent: var(--shop-card-accent);
  position: relative;
  border-top: 1px solid color-mix(in srgb, var(--bs-border-color) 68%, transparent);
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--phone-accent) 5%, var(--site-surface-elevated)) 0%, color-mix(in srgb, var(--site-page-bg) 55%, var(--site-surface-elevated)) 100%);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.shop-card .shop-phone-contact::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 1px;
  background: linear-gradient(
    180deg,
    transparent 0%,
    color-mix(in srgb, var(--phone-accent) 35%, var(--bs-border-color)) 18%,
    color-mix(in srgb, var(--phone-accent) 35%, var(--bs-border-color)) 82%,
    transparent 100%
  );
  pointer-events: none;
}

[data-bs-theme="dark"] .shop-card .shop-phone-contact {
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--phone-accent) 12%, var(--site-surface-elevated)) 0%, color-mix(in srgb, #000 18%, var(--site-surface-elevated)) 100%);
}

.shop-card .shop-phone-contact__call:hover {
  background: color-mix(in srgb, var(--site-accent-subtle) 48%, transparent);
}

.shop-card--compact {
  grid-template-columns: 1fr auto;
}

.shop-card--compact .shop-card__main {
  padding: 0.8rem 0.9rem;
}

.shop-card--compact .shop-phone-contact {
  border-top: none;
  border-left: 1px solid color-mix(in srgb, var(--bs-border-color) 68%, transparent);
  background: color-mix(in srgb, var(--site-page-bg) 35%, var(--site-surface-elevated));
}

.shop-card--compact .shop-phone-contact::before {
  display: none;
}

.shop-card--compact .shop-phone-contact--compact {
  min-width: 4.25rem;
  max-width: 4.25rem;
}

.shop-card--compact .shop-phone-contact--compact .shop-phone-contact__call {
  padding: 0.75rem 0.45rem 0.55rem;
}

.shop-card--compact .shop-phone-contact--compact .shop-phone-contact__call-icon-wrap {
  width: 2.55rem;
  height: 2.55rem;
}

.shop-card--compact .shop-phone-contact--compact .shop-phone-contact__call-icon {
  width: 2.15rem;
  height: 2.15rem;
  font-size: 0.92rem;
}

.shop-card--compact .shop-phone-contact--compact .shop-phone-contact__copy {
  padding: 0.42rem 0.3rem;
  min-height: 2.15rem;
  font-size: 0.6875rem;
}

/* 详情页联系方式：电话与地址共用「正文 + 操作行」 */
.shop-phone-contact--detail {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.55rem;
  min-width: 0;
}

.shop-phone-contact--detail .shop-phone-contact__detail-num {
  font-size: 0.9375rem;
  font-weight: var(--site-fw-body);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
  line-height: 1.45;
  color: var(--bs-body-color);
  word-break: break-all;
}

.detail-facts__value {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.55rem;
  min-width: 0;
}

.detail-facts__value.detail-facts__phone {
  /* 电话内容由 .shop-phone-contact--detail 承担纵向栈 */
  display: block;
}

.detail-facts__primary {
  min-width: 0;
  line-height: 1.55;
}

.detail-facts__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
}

.detail-facts__action,
.detail-facts__action.btn-call,
a.detail-facts__action,
button.detail-facts__action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  margin: 0;
  padding: 0.5rem 0.9rem;
  border-radius: var(--site-radius-sm);
  font-family: var(--site-font-action);
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  line-height: 1.25;
  text-decoration: none;
  cursor: pointer;
  border: 1px solid transparent;
  min-height: 2.5rem;
  white-space: nowrap;
  box-sizing: border-box;
  transition:
    background 0.2s ease,
    color 0.2s ease,
    border-color 0.2s ease,
    box-shadow 0.2s ease;
}

.detail-facts__action .bi,
.detail-facts__action > span {
  font-size: 0.875rem;
  line-height: 1;
  color: inherit;
  flex-shrink: 0;
}

.detail-facts__action .bi {
  font-size: 1rem;
}

.detail-facts__action--name {
  color: var(--site-secondary-accent);
  background: color-mix(in srgb, var(--site-secondary-subtle) 72%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--site-secondary-accent) 22%, var(--bs-border-color));
}

.detail-facts__action--name:hover {
  color: var(--site-ink-secondary);
  background: color-mix(in srgb, var(--site-secondary-subtle) 92%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--site-secondary-accent) 36%, transparent);
}

.detail-facts__action--address,
.detail-facts__action--copy-phone {
  color: var(--site-accent-teal);
  background: color-mix(in srgb, var(--site-accent-teal-subtle) 68%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--site-accent-teal) 24%, var(--bs-border-color));
}

.detail-facts__action--address:hover,
.detail-facts__action--copy-phone:hover {
  color: #fff;
  background: linear-gradient(
    135deg,
    var(--site-accent-teal) 0%,
    color-mix(in srgb, var(--site-accent-teal) 78%, var(--site-accent-teal-hover)) 100%
  );
  border-color: color-mix(in srgb, var(--site-accent-teal) 42%, transparent);
}

.detail-facts__action--call {
  color: var(--site-accent);
  background: color-mix(in srgb, var(--site-accent-subtle) 70%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--site-accent) 22%, var(--bs-border-color));
}

.detail-facts__action--call:hover {
  color: #fff;
  background: linear-gradient(135deg, var(--site-accent-soft) 0%, var(--site-accent) 100%);
  border-color: color-mix(in srgb, var(--site-accent) 42%, transparent);
  text-decoration: none;
}

.detail-facts__action:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--site-accent) 40%, transparent);
  outline-offset: 2px;
}

[data-bs-theme="dark"] .detail-facts__action--name {
  background: color-mix(in srgb, var(--site-secondary-subtle) 82%, var(--site-surface-elevated));
}

[data-bs-theme="dark"] .detail-facts__action--address,
[data-bs-theme="dark"] .detail-facts__action--copy-phone {
  background: color-mix(in srgb, var(--site-accent-teal-subtle) 88%, var(--site-surface-elevated));
}

[data-bs-theme="dark"] .detail-facts__action--call {
  background: color-mix(in srgb, var(--site-accent-subtle) 82%, var(--site-surface-elevated));
}

.front-copy-toast {
  position: fixed;
  left: 50%;
  bottom: calc(1.25rem + env(safe-area-inset-bottom, 0px));
  z-index: 1200;
  transform: translate(-50%, 120%);
  padding: 0.55rem 1rem;
  border-radius: 2rem;
  font-size: 0.875rem;
  font-weight: var(--site-fw-label);
  color: #fff;
  background: color-mix(in srgb, var(--site-accent) 92%, #1a100e);
  box-shadow: var(--site-shadow);
  opacity: 0;
  pointer-events: none;
  transition: transform 0.22s ease, opacity 0.22s ease;
}

.front-copy-toast.is-visible {
  transform: translate(-50%, 0);
  opacity: 1;
}

@media (min-width: 768px) {
  .shop-card--has-phone:not(.shop-card--compact) {
    grid-template-columns: minmax(0, 1fr) auto;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-card__main {
    padding: 1.05rem 1.15rem;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact {
    display: flex;
    flex-direction: column;
    border-top: none;
    border-left: 1px solid color-mix(in srgb, var(--bs-border-color) 68%, transparent);
    min-width: 6.75rem;
    max-width: 7.5rem;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact::before {
    display: block;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact__call {
    flex-direction: column;
    gap: 0.42rem;
    padding: 1.05rem 0.85rem 0.7rem;
    border-right: none;
    text-align: center;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact--compact .shop-phone-contact__call {
    flex-direction: column;
    padding: 0.9rem 0.65rem 0.6rem;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact__call-text {
    align-items: center;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact--compact .shop-phone-contact__call-label {
    font-size: 0.75rem;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact--compact .shop-phone-contact__copy {
    padding: 0.5rem 0.65rem;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact__call-num {
    font-size: 0.8125rem;
    text-align: center;
    word-break: break-all;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact__copy {
    flex-direction: column;
    gap: 0.28rem;
    padding: 0.52rem 0.75rem;
    min-height: var(--site-touch);
  }

  .shop-card--compact.shop-card--has-phone {
    grid-template-columns: minmax(0, 1fr) auto;
  }

  .shop-card--compact .shop-phone-contact {
    border-top: none;
    border-left: 1px solid color-mix(in srgb, var(--bs-border-color) 68%, transparent);
    min-width: 4.25rem;
    max-width: 4.25rem;
  }

  .shop-card--compact .shop-phone-contact--compact .shop-phone-contact__call {
    flex-direction: column;
    gap: 0.35rem;
    padding: 0.75rem 0.45rem 0.55rem;
    text-align: center;
  }

  .shop-card--compact .shop-card__main {
    padding: 0.9rem 1rem;
  }
}

@media (max-width: 767.98px) {
  .shop-card--compact {
    grid-template-columns: 1fr;
  }

  .shop-card--has-phone:not(.shop-card--compact) {
    grid-template-columns: 1fr;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    align-items: stretch;
    border-top: 1px solid color-mix(in srgb, var(--bs-border-color) 68%, transparent);
    border-left: none;
    min-width: 0;
    max-width: none;
    width: 100%;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact::before {
    display: none;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact__call {
    flex-direction: row;
    justify-content: center;
    align-items: center;
    gap: 0.42rem;
    padding: 0.72rem 0.5rem;
    min-height: 2.75rem;
    border-right: 1px solid color-mix(in srgb, var(--bs-border-color) 62%, transparent);
    text-align: center;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact--compact .shop-phone-contact__call-text {
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.18rem;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact--compact .shop-phone-contact__call-label {
    font-size: 0.75rem;
    line-height: 1.2;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact__call-icon-wrap {
    width: 2.1rem;
    height: 2.1rem;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact__call-icon {
    width: 1.85rem;
    height: 1.85rem;
    font-size: 0.88rem;
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact__copy {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 0.32rem;
    border: none;
    padding: 0.72rem 0.45rem;
    min-height: 2.75rem;
    font-size: 0.75rem;
    background: color-mix(in srgb, var(--phone-copy-subtle) 52%, transparent);
    color: var(--phone-copy-accent);
  }

  .shop-card--has-phone:not(.shop-card--compact) .shop-phone-contact__copy .bi {
    font-size: 0.92rem;
  }

  .shop-card--compact .shop-phone-contact {
    border-left: none;
    border-top: 1px solid color-mix(in srgb, var(--bs-border-color) 68%, transparent);
    background: color-mix(in srgb, var(--site-page-bg) 35%, var(--site-surface-elevated));
  }

  .shop-card--compact .shop-phone-contact--compact {
    min-width: 0;
    max-width: none;
    width: 100%;
  }

  .shop-card--compact.shop-card--has-phone .shop-phone-contact {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    align-items: stretch;
  }

  .shop-card--compact.shop-card--has-phone .shop-phone-contact__call {
    flex-direction: row;
    justify-content: center;
    gap: 0.42rem;
    padding: 0.7rem 0.5rem;
    min-height: var(--site-touch);
    border-right: 1px solid color-mix(in srgb, var(--bs-border-color) 62%, transparent);
  }

  .shop-card--compact.shop-card--has-phone .shop-phone-contact--compact .shop-phone-contact__call-text {
    flex-direction: column;
    align-items: center;
    justify-content: center;
  }

  .shop-card--compact.shop-card--has-phone .shop-phone-contact__copy {
    flex-direction: row;
    justify-content: center;
    gap: 0.32rem;
    border: none;
    padding: 0.7rem 0.4rem;
    font-size: 0.75rem;
  }

  /* 店名较短：人均与标题同一行，右侧对齐 */
  .shop-card__head {
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.45rem;
  }

  .shop-card__title-row {
    flex: 1;
    min-width: 0;
  }

  .shop-card__title {
    -webkit-line-clamp: 1;
  }

  .shop-card__head-aside {
    max-width: none;
    width: auto;
    margin-top: 0;
    flex-shrink: 0;
    align-self: center;
  }

  .shop-price--card {
    gap: 0.35rem;
    padding: 0.08rem 0 0.08rem 0.58rem;
  }

  .shop-price--card .shop-price__label {
    font-size: 0.75rem;
  }

  .shop-price--card .shop-price__num {
    font-size: 1.0625rem;
  }

  .shop-price--card .shop-price__amount[data-range="1"] .shop-price__num {
    font-size: 0.9375rem;
  }
}

/* ── 面包屑 ── */
.site-breadcrumb {
  margin-bottom: var(--site-gap);
}

.site-breadcrumb__bar {
  padding: 0.55rem 0.85rem;
  border-radius: var(--site-radius);
  background: color-mix(in srgb, var(--site-surface-elevated) 92%, var(--site-page-bg));
  border: 1px solid color-mix(in srgb, var(--bs-border-color) 75%, transparent);
  box-shadow: var(--site-shadow-sm);
  overflow-x: auto;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}

.site-breadcrumb__list {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.15rem 0.25rem;
  width: max-content;
  max-width: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 0.8125rem;
  line-height: 1.35;
}

.site-breadcrumb__item,
.site-breadcrumb__sep {
  display: inline-flex;
  flex-shrink: 0;
  align-items: center;
  white-space: nowrap;
}

.site-breadcrumb__sep {
  padding: 0 0.1rem;
  color: color-mix(in srgb, var(--site-text-muted) 55%, transparent);
  font-size: 0.65rem;
}

.site-breadcrumb__link {
  display: inline-flex;
  flex-shrink: 0;
  align-items: center;
  gap: 0.3rem;
  padding: 0.2rem 0.5rem;
  border-radius: var(--site-radius-sm);
  color: var(--site-ink-secondary);
  font-weight: var(--site-fw-label);
  text-decoration: none;
  white-space: nowrap;
  background: color-mix(in srgb, var(--site-secondary-subtle) 62%, var(--site-surface-elevated));
  border: 1px solid color-mix(in srgb, var(--bs-border-color) 78%, transparent);
  transition: color 0.15s ease, background 0.15s ease, border-color 0.15s ease;
}

.site-breadcrumb__link:hover {
  color: var(--site-accent-teal);
  background: var(--site-accent-teal-subtle);
  border-color: color-mix(in srgb, var(--site-accent-teal) 28%, transparent);
}

.site-breadcrumb__home-icon {
  font-size: 0.9rem;
  flex-shrink: 0;
}

.site-breadcrumb__link-text {
  font-weight: var(--site-fw-body);
  white-space: nowrap;
}

.site-breadcrumb__item.is-current {
  flex-shrink: 1;
  min-width: 0;
  max-width: 16rem;
}

.site-breadcrumb__current {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  padding: 0.2rem 0.5rem;
  border-radius: var(--site-radius-sm);
  font-weight: var(--site-fw-label);
  border: 1px solid transparent;
}

.site-breadcrumb__item:not(.is-current) .site-breadcrumb__current {
  color: var(--site-ink-secondary);
  font-weight: var(--site-fw-label);
  background: color-mix(in srgb, var(--site-secondary-subtle) 62%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--bs-border-color) 78%, transparent);
}

.site-breadcrumb__item.is-current .site-breadcrumb__current {
  color: var(--site-accent);
  background: color-mix(in srgb, var(--site-accent-subtle) 72%, transparent);
  border-color: color-mix(in srgb, var(--site-accent) 18%, transparent);
}

/* ── 分页 ── */
.site-pagination {
  margin-top: 1.5rem;
}

.site-pagination__list {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 0.35rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.site-pagination__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.25rem;
  min-height: 2.25rem;
  padding: 0.35rem 0.65rem;
  border-radius: var(--site-radius-sm);
  font-size: 0.875rem;
  text-decoration: none;
  color: var(--bs-body-color);
  background: var(--site-surface-elevated);
  border: 1px solid var(--bs-border-color);
}

.site-pagination__link:hover {
  border-color: var(--site-accent);
  color: var(--site-accent);
}

.site-pagination__link.is-active {
  background: var(--site-accent);
  border-color: var(--site-accent);
  color: #fff;
  font-weight: var(--site-fw-label);
}

.site-pagination__link--nav {
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}

.site-pagination__ellipsis {
  padding: 0 0.25rem;
  color: var(--site-ink-muted);
}

/* ── 空状态 ── */
.empty-state {
  text-align: center;
  padding: 2.5rem 1.25rem;
  background: var(--site-surface-elevated);
  border: 1px dashed var(--bs-border-color);
  border-radius: var(--site-radius);
}

.empty-state__icon {
  font-size: 2.5rem;
  color: var(--site-ink-muted);
  opacity: 0.6;
  margin-bottom: 0.75rem;
}

.empty-state__text {
  margin: 0;
  font-size: 0.9375rem;
  color: var(--site-ink-muted);
  max-width: 28rem;
  margin-inline: auto;
}

.empty-state a {
  color: var(--site-accent);
}

/* ── 主内容 + 侧边栏（列表 / 详情） ── */
.page-with-sidebar {
  display: grid;
  gap: var(--site-gap-lg);
  align-items: start;
}

.page-with-sidebar__main {
  min-width: 0;
}

.page-with-sidebar__aside {
  min-width: 0;
}

@media (min-width: 992px) {
  .page-with-sidebar {
    grid-template-columns: minmax(0, 1fr) min(17.5rem, 30%);
    gap: 1.5rem;
  }

  /* 侧栏随整页滚动，不用 sticky（主列表很长时 sticky 会长时间「钉住」侧栏） */
}

@media (min-width: 768px) and (max-width: 991.98px) {
  .page-with-sidebar {
    grid-template-columns: minmax(0, 1fr) min(14.5rem, 38%);
  }
}

/* 侧边栏三区块 */
.sidebar-blocks {
  --sidebar-accent: var(--site-accent);
}

.sidebar-blocks__panel {
  background: var(--site-surface-elevated);
  border: 1px solid color-mix(in srgb, var(--bs-border-color) 82%, transparent);
  border-radius: var(--site-radius-lg);
  box-shadow: var(--site-shadow-sm);
  overflow: hidden;
}

.sidebar-blocks__section {
  padding: 1rem 1rem 0.85rem;
}

.sidebar-blocks__divider {
  height: 1px;
  margin: 0 1rem;
  background: linear-gradient(
    90deg,
    transparent,
    color-mix(in srgb, var(--bs-border-color) 90%, transparent) 15%,
    color-mix(in srgb, var(--bs-border-color) 90%, transparent) 85%,
    transparent
  );
}

.sidebar-blocks__head {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  margin-bottom: 0.75rem;
}

.sidebar-blocks__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 2.35rem;
  height: 2.35rem;
  border-radius: 0.65rem;
  font-size: 1.05rem;
  color: #fff;
  background: linear-gradient(145deg, var(--sidebar-accent), var(--site-accent-soft));
  box-shadow: 0 4px 12px color-mix(in srgb, var(--sidebar-accent) 35%, transparent);
}

.sidebar-blocks__head-text {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
}

.sidebar-blocks__title {
  margin: 0;
  font-size: 1.0625rem;
  font-weight: var(--site-fw-title);
  letter-spacing: var(--site-ui-tracking);
  line-height: var(--site-ui-lh);
  color: var(--bs-emphasis-color);
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.5rem;
}

.sidebar-blocks__scope {
  font-size: 0.8125rem;
  font-weight: var(--site-fw-body);
  color: var(--bs-secondary-color);
  white-space: nowrap;
}

.sidebar-blocks__hint {
  font-size: 0.75rem;
  font-weight: var(--site-fw-body);
  letter-spacing: 0.03em;
  color: var(--site-reading);
}

.sidebar-blocks__section--latest {
  --sidebar-accent: var(--site-accent-teal);
}

.sidebar-blocks__section--recommend {
  --sidebar-accent: var(--site-accent-amber);
}

.sidebar-blocks__section--hot {
  --sidebar-accent: var(--site-accent);
}

[data-bs-theme="dark"] .sidebar-blocks__section--latest {
  --sidebar-accent: var(--site-accent-teal);
}

[data-bs-theme="dark"] .sidebar-blocks__section--recommend {
  --sidebar-accent: var(--site-accent-amber);
}

[data-bs-theme="dark"] .sidebar-blocks__section--hot {
  --sidebar-accent: var(--site-accent);
}

.sidebar-blocks__list {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: none;
}

.sidebar-shop-item {
  border-bottom: 1px solid color-mix(in srgb, var(--bs-border-color) 55%, transparent);
}

.sidebar-shop-item:last-child {
  border-bottom: 0;
}

.sidebar-shop-item__link {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  padding: 0.65rem 0.15rem;
  margin: 0 -0.15rem;
  border-radius: var(--site-radius-sm);
  text-decoration: none;
  color: inherit;
  transition: background 0.15s ease, transform 0.15s ease;
}

.sidebar-shop-item__link:hover {
  background: color-mix(in srgb, var(--sidebar-accent) 10%, var(--site-surface-elevated));
  color: inherit;
  transform: translateX(2px);
}

.sidebar-shop-item__rank {
  flex-shrink: 0;
  width: 1.65rem;
  font-size: 0.6875rem;
  font-weight: var(--site-fw-label);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
  line-height: 1;
  text-align: center;
  color: color-mix(in srgb, var(--sidebar-accent) 55%, var(--site-text-muted));
}

.sidebar-blocks__section--hot .sidebar-shop-item:nth-child(-n + 3) .sidebar-shop-item__rank {
  color: var(--sidebar-accent);
}

.sidebar-shop-item__body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.sidebar-shop-item__name {
  font-size: var(--site-ui-size);
  font-weight: var(--site-fw-body);
  line-height: var(--site-ui-lh);
  letter-spacing: var(--site-ui-tracking);
  color: var(--site-reading);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.sidebar-shop-item__sub {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem 0.45rem;
  min-width: 0;
}

.sidebar-shop-item__tag {
  flex-shrink: 0;
  font-size: 0.625rem;
  font-weight: var(--site-fw-label);
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--sidebar-accent);
}

.sidebar-shop-item__meta {
  font-size: 0.6875rem;
  color: var(--site-ink-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}

.sidebar-shop-item__arrow {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  font-size: 0.75rem;
  color: color-mix(in srgb, var(--site-text-muted) 50%, transparent);
  transition: color 0.15s ease, transform 0.15s ease;
}

.sidebar-shop-item__link:hover .sidebar-shop-item__arrow {
  color: var(--sidebar-accent);
  transform: translateX(2px);
}

@media (max-width: 991.98px) {
  .sidebar-blocks__panel {
    margin-top: 0.25rem;
  }

  .page-with-sidebar__aside .sidebar-blocks__section {
    padding: 0.9rem 0.95rem 0.75rem;
  }
}

/* ── 详情页 ── */
.shop-detail__layout {
  display: grid;
  gap: var(--site-gap-lg);
}

@media (min-width: 992px) {
  .shop-detail__layout {
    grid-template-columns: minmax(0, 1fr) min(16.5rem, 28%);
    align-items: start;
  }
}

.detail-panel {
  background: var(--site-surface-elevated);
  border: 1px solid var(--bs-border-color);
  border-radius: var(--site-radius);
  padding: 1.15rem 1.2rem;
  margin-bottom: var(--site-gap);
  box-shadow: var(--site-shadow-sm);
}

.detail-panel--contact {
  border-color: color-mix(in srgb, var(--site-accent) 28%, var(--bs-border-color));
}

.detail-panel__title {
  margin: 0 0 0.85rem;
  font-size: 1rem;
  font-weight: var(--site-fw-title);
  letter-spacing: var(--site-ui-tracking);
  line-height: var(--site-ui-lh);
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

.detail-panel__title .bi {
  color: var(--site-accent);
}

.detail-panel--contact .detail-panel__title {
  margin-bottom: 0.75rem;
  padding-bottom: 0.72rem;
  border-bottom: 1px solid color-mix(in srgb, var(--site-accent) 14%, var(--bs-border-color));
}

.detail-facts {
  margin: 0;
}

.detail-facts__row {
  display: grid;
  grid-template-columns: minmax(6.5rem, 7.75rem) 1fr;
  gap: 0.35rem 0.85rem;
  padding: 0.75rem 0;
  align-items: start;
}

.detail-facts__row:last-child {
  padding-bottom: 0;
}

.detail-facts__row:first-child {
  padding-top: 0;
}

.detail-facts__row + .detail-facts__row {
  border-top: 1px solid color-mix(in srgb, var(--site-accent) 10%, var(--bs-border-color));
}

.detail-facts dt,
.detail-facts__label {
  margin: 0;
}

.detail-facts__label {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.9375rem;
  font-weight: var(--site-fw-label);
  letter-spacing: var(--site-ui-tracking);
  line-height: var(--site-ui-lh);
  color: var(--site-ink-secondary);
}

.detail-facts__label-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 1.7rem;
  height: 1.7rem;
  border-radius: var(--site-radius-sm);
  font-size: 0.88rem;
  border: 1px solid transparent;
}

.detail-facts__label-text {
  white-space: nowrap;
}

.detail-facts__label--area .detail-facts__label-icon {
  color: var(--site-secondary-accent);
  background: color-mix(in srgb, var(--site-secondary-subtle) 78%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--site-secondary-accent) 22%, transparent);
}

.detail-facts__label--address .detail-facts__label-icon {
  color: var(--site-accent-teal);
  background: color-mix(in srgb, var(--site-accent-teal-subtle) 72%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--site-accent-teal) 22%, transparent);
}

.detail-facts__label--phone .detail-facts__label-icon {
  color: var(--site-accent);
  background: color-mix(in srgb, var(--site-accent-subtle) 72%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--site-accent) 18%, transparent);
}

.detail-facts__row--area dd {
  color: var(--site-ink-secondary);
  font-weight: var(--site-fw-body);
}

.detail-facts__row--address dd {
  color: var(--bs-body-color);
  line-height: 1.55;
}

@media (max-width: 767.98px) {
  .detail-facts__row:not(.detail-facts__row--phone) {
    gap: 0.4rem 0.65rem;
    padding: 0.8rem 0;
    /* 保持标签与内容左右并排；勿强制 1fr 单列，否则短内容也会整行换下 */
  }
}

.detail-facts dd {
  margin: 0;
  font-size: 0.9375rem;
  color: var(--site-reading);
  word-break: break-word;
}

.detail-facts__link {
  display: inline-flex;
  align-items: center;
  gap: 0.2rem;
  margin-left: 0.5rem;
  font-size: 0.875rem;
  color: var(--site-accent);
  text-decoration: none;
}

.detail-facts__link:hover {
  text-decoration: underline;
}

/* 兼容旧类名（若缓存页仍引用）——尺寸与 .detail-facts__action 一致 */
.detail-facts__copy-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
}

.detail-facts__copy {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  margin: 0;
  padding: 0.5rem 0.9rem;
  border-radius: var(--site-radius-sm);
  font-family: var(--site-font-action);
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  line-height: 1.25;
  cursor: pointer;
  border: 1px solid transparent;
  min-height: 2.5rem;
  white-space: nowrap;
  box-sizing: border-box;
}

.detail-facts__copy .bi,
.detail-facts__copy-label {
  font-size: 0.875rem;
  line-height: 1;
  color: inherit;
}

.detail-facts__copy .bi {
  font-size: 1rem;
}

.detail-facts__copy--name {
  color: var(--site-secondary-accent);
  background: color-mix(in srgb, var(--site-secondary-subtle) 72%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--site-secondary-accent) 22%, var(--bs-border-color));
}

.detail-facts__copy--address {
  color: var(--site-accent-teal);
  background: color-mix(in srgb, var(--site-accent-teal-subtle) 68%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--site-accent-teal) 24%, var(--bs-border-color));
}

/* 详情页 — 独立温馨提示（联系方式下方，始终展示） */
.detail-panel--tips {
  border-color: color-mix(in srgb, var(--site-accent) 18%, var(--bs-border-color));
  background: color-mix(in srgb, var(--site-accent-subtle) 22%, var(--site-surface-elevated));
}

.detail-panel--tips .detail-panel__title .bi {
  color: color-mix(in srgb, var(--site-accent) 88%, var(--site-accent-soft));
}

.detail-tips {
  margin: 0;
  padding: 0 0 0 1.15rem;
  font-size: 0.875rem;
  line-height: 1.7;
  color: var(--site-reading);
}

.detail-tips li + li {
  margin-top: 0.55rem;
}

[data-bs-theme="dark"] .detail-panel--tips {
  background: color-mix(in srgb, var(--site-accent-subtle) 32%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--site-accent-soft) 24%, var(--bs-border-color));
}

.detail-call {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.5rem 1rem;
  border-radius: 2rem;
  background: var(--site-accent);
  color: #fff !important;
  font-weight: var(--site-fw-label);
  text-decoration: none;
  min-height: var(--site-touch);
}

.detail-call:hover {
  background: var(--site-accent-hover);
  color: #fff !important;
}

.detail-wechat {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}

.detail-intro {
  font-size: 0.9375rem;
  line-height: 1.75;
  color: var(--site-reading);
}

.shop-detail__aside .sidebar-blocks {
  margin-bottom: 1rem;
}

.shop-detail__aside .sidebar-blocks__panel {
  position: sticky;
  top: calc(5.5rem + var(--site-gap));
}

.detail-aside-card {
  background: var(--site-surface-elevated);
  border: 1px solid var(--bs-border-color);
  border-radius: var(--site-radius);
  padding: 1rem 1.1rem;
  box-shadow: var(--site-shadow-sm);
}

.detail-aside-card__title {
  margin: 0 0 0.75rem;
  font-size: 1rem;
  font-weight: var(--site-fw-title);
  letter-spacing: var(--site-ui-tracking);
  line-height: var(--site-ui-lh);
}

.detail-panel--related {
  margin-bottom: 0;
}

.detail-related__lead {
  margin: -0.35rem 0 0.65rem;
  font-size: 0.8125rem;
  color: var(--site-ink-muted);
}

.detail-related {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 0.35rem;
}

@media (min-width: 576px) {
  .detail-related {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.4rem 0.5rem;
  }
}

.detail-related li + li {
  margin-top: 0;
}

.detail-related a {
  display: block;
  padding: 0.5rem 0.65rem;
  border: 1px solid var(--bs-border-color-translucent, var(--bs-border-color));
  border-radius: var(--site-radius-sm);
  font-size: 0.875rem;
  text-decoration: none;
  color: var(--bs-body-color);
  background: color-mix(in srgb, var(--site-surface-elevated) 96%, var(--site-page-bg));
  transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease;
}

.detail-related a:hover {
  border-color: color-mix(in srgb, var(--site-accent) 28%, var(--bs-border-color));
  background: var(--site-accent-subtle);
  color: var(--site-accent);
}

/* 相册 */
.shop-gallery {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.5rem;
}

@media (min-width: 576px) {
  .shop-gallery {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.shop-gallery__item {
  border: 0;
  padding: 0;
  border-radius: var(--site-radius-sm);
  overflow: hidden;
  background: transparent;
  cursor: zoom-in;
}

.shop-gallery__item img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
  transition: transform 0.2s ease;
}

.shop-gallery__item:hover img {
  transform: scale(1.03);
}

.shop-gallery__item:focus-visible {
  outline: 2px solid var(--site-accent);
  outline-offset: 2px;
}

.shop-gallery-modal-img {
  max-height: min(70vh, 640px);
  object-fit: contain;
  background: var(--bs-secondary-bg);
}

.shop-gallery-modal__content {
  background: var(--bs-body-bg);
  color: var(--bs-body-color);
}

.shop-gallery-modal__header,
.shop-gallery-modal__footer {
  border-color: var(--bs-border-color);
}

.shop-gallery-modal__body {
  background: var(--bs-body-bg);
}

/* 触屏可点 */
.btn-call {
  min-height: var(--site-touch);
}

/* ── 列表地区选择器 ── */
.list-browse {
  --list-picker-active-bg: var(--site-accent-teal);
  --list-picker-active-fg: var(--site-accent-teal-on);
  --list-picker-border: var(--bs-border-color);
}

.list-region-picker {
  background: var(--site-surface-elevated);
  border: 1px solid var(--list-picker-border);
  border-radius: var(--site-radius-lg);
  margin-bottom: var(--site-gap);
  overflow: clip;
  box-shadow: var(--site-shadow-sm);
}

.list-region-picker__toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.75rem;
  padding: 0.65rem 0.9rem;
  border-bottom: 1px solid var(--list-picker-border);
  background: color-mix(in srgb, var(--site-accent-teal-subtle) 55%, var(--site-surface-elevated));
}

.list-region-picker__all {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.8125rem;
  font-weight: var(--site-fw-label);
  text-decoration: none;
  color: var(--site-accent-teal);
  white-space: nowrap;
}

.list-region-picker__all:hover {
  text-decoration: underline;
}

.list-region-picker__context {
  margin-left: auto;
  font-size: 0.8125rem;
  font-weight: var(--site-fw-label);
  color: var(--bs-body-color);
  white-space: nowrap;
}

.list-region-picker__empty {
  margin: 0;
  padding: 0.75rem 0.9rem;
  font-size: 0.875rem;
  color: var(--site-ink-muted);
}

.list-region-picker__fold {
  border-bottom: 1px solid var(--list-picker-border);
}

.list-region-picker__fold-summary {
  padding: 0.55rem 0.9rem;
  font-size: 0.8125rem;
  font-weight: var(--site-fw-label);
  color: var(--site-ink-muted);
  cursor: pointer;
  list-style: none;
  user-select: none;
}

.list-region-picker__fold-summary::-webkit-details-marker {
  display: none;
}

.list-region-picker__fold-summary::before {
  content: "";
  display: inline-block;
  width: 0.4rem;
  height: 0.4rem;
  margin-right: 0.45rem;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(-45deg);
  vertical-align: 0.15rem;
  transition: transform 0.15s ease;
}

.list-region-picker__fold[open] > .list-region-picker__fold-summary::before {
  transform: rotate(45deg);
  vertical-align: 0.05rem;
}

.list-region-picker__fold-body {
  padding: 0 0.9rem 0.65rem;
}

.list-region-picker__fold .list-region-picker__section {
  padding: 0;
  border: 0;
}

.list-region-picker__title {
  font-size: 0.75rem;
  font-weight: var(--site-fw-label);
  color: var(--site-ink-muted);
}

.list-region-picker__section--districts {
  border-top: 1px solid var(--list-picker-border);
}

.list-region-picker__section {
  padding: 0.6rem 0.9rem 0.7rem;
  border-bottom: 1px solid var(--list-picker-border);
}

.list-region-picker__section--municipality {
  background: var(--bs-tertiary-bg);
}

.list-region-picker__chip--municipality {
  font-weight: var(--site-fw-label);
}

.list-region-picker__section:last-child {
  border-bottom: 0;
}

.list-region-picker__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.65rem;
  margin-bottom: 0.45rem;
}

.list-region-picker__meta {
  font-size: 0.75rem;
  margin-right: auto;
  color: var(--site-ink-muted);
}

.list-region-picker__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}

.list-region-picker__chip {
  flex: 0 0 auto;
  padding: 0.35rem 0.75rem;
  border-radius: 2rem;
  font-size: 0.875rem;
  text-decoration: none;
  color: var(--bs-body-color);
  border: 1px solid var(--list-picker-border);
  background: var(--site-surface-elevated);
  white-space: nowrap;
  transition: border-color 0.15s ease, color 0.15s ease, background-color 0.15s ease;
}

.list-region-picker__chip:hover {
  border-color: var(--site-accent-teal);
  color: var(--site-accent-teal);
}

.list-region-picker__chip.is-active {
  border-color: var(--list-picker-active-bg);
  background: var(--list-picker-active-bg);
  color: var(--list-picker-active-fg);
  font-weight: var(--site-fw-label);
}

.list-region-picker__province-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(3.5rem, 1fr));
  gap: 0.4rem;
  margin-bottom: 0.5rem;
}

.list-region-picker__tab {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 2.25rem;
  padding: 0.4rem 0.35rem;
  border: 1px solid var(--list-picker-border);
  border-radius: var(--site-radius-sm);
  background: var(--site-surface-elevated);
  color: var(--bs-body-color);
  font-size: 0.8125rem;
  font-weight: var(--site-fw-body);
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
}

.list-region-picker__tab:hover {
  border-color: var(--site-accent-teal);
  color: var(--site-accent-teal);
}

.list-region-picker__tab.is-active {
  background: var(--list-picker-active-bg);
  border-color: var(--list-picker-active-bg);
  color: var(--list-picker-active-fg);
  font-weight: var(--site-fw-label);
}

.list-region-picker__tab.is-empty:not(.is-active) {
  opacity: 0.72;
}

.list-region-picker__panel {
  display: none;
}

.list-region-picker__panel.is-active {
  display: block;
}

@media (min-width: 576px) {
  .detail-facts__row {
    grid-template-columns: 6.5rem 1fr;
  }

  .list-region-picker__province-grid {
    grid-template-columns: repeat(auto-fill, minmax(4rem, 1fr));
  }
}

@media (min-width: 992px) {
  .list-region-picker__province-grid {
    grid-template-columns: repeat(12, minmax(0, 1fr));
  }
}

.list-region-picker--city .list-region-picker__section--districts,
.list-region-picker--district .list-region-picker__section--districts {
  background: color-mix(in srgb, var(--site-accent-subtle) 25%, var(--site-surface-elevated));
}

.list-region-picker--city .list-region-picker__section--provinces .list-region-picker__fold,
.list-region-picker--district .list-region-picker__section--provinces .list-region-picker__fold {
  border-bottom: 0;
}

@media (max-width: 575.98px) {
  .list-region-picker__context {
    margin-left: 0;
    width: 100%;
  }
}

[data-bs-theme="dark"] .list-region-picker__chip.is-active {
  border-color: var(--list-picker-active-bg);
  background: var(--list-picker-active-bg);
  color: var(--list-picker-active-fg);
}

/* ── 后台与其它（保留） ── */
body.admin-app {
  min-height: 100vh;
}

[data-bs-theme="dark"] .card.shadow-sm,
[data-bs-theme="dark"] .table {
  --bs-table-bg: var(--bs-body-bg);
  color: var(--bs-body-color);
}

[data-bs-theme="dark"] .app-sidebar {
  border-color: var(--bs-border-color) !important;
}

[data-bs-theme="dark"] .badge.bg-warning.text-dark {
  color: var(--bs-dark) !important;
}

.admin-app .shop-list-filter-chip {
  font-weight: var(--site-fw-body);
}

[data-bs-theme="dark"] .admin-app .shop-list-filter-chip {
  color: var(--bs-body-color);
  background-color: var(--bs-secondary-bg) !important;
  border-color: var(--bs-border-color) !important;
}

.shop-image-tile {
  cursor: grab;
  transition: box-shadow 0.15s ease, opacity 0.15s ease;
}

.shop-image-tile:active {
  cursor: grabbing;
}

.shop-image-tile--dragging {
  opacity: 0.55;
}

.shop-image-tile--over {
  box-shadow: 0 0 0 2px var(--bs-primary);
}

@media (pointer: coarse) {
  .shop-image-tile {
    cursor: default;
  }

  .shop-image-tile[draggable="true"] {
    -webkit-user-drag: none;
    user-select: none;
  }
}

.admin-shop-actions {
  white-space: nowrap;
}

#shop-batch-toolbar .btn-group {
  flex-wrap: wrap;
}

#shop-batch-toolbar.is-over-limit {
  border-left: 3px solid var(--bs-warning);
}

#shop-batch-toolbar.is-over-limit #shop-batch-count {
  color: var(--bs-warning);
  font-weight: var(--site-fw-label);
}

[data-form-dirty-banner]:not(.d-none) {
  border-left: 3px solid var(--bs-warning);
}

address {
  word-break: break-word;
}

/* ── 首页 SEO/GEO 区块 ── */
.home-channels {
  margin-bottom: var(--site-gap-lg);
}

.home-channels__list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.75rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.home-channels__link {
  display: inline-flex;
  align-items: center;
  padding: 0.35rem 0.85rem;
  border-radius: var(--site-radius-sm);
  background: var(--site-surface-elevated);
  border: 1px solid var(--bs-border-color);
  color: var(--bs-body-color);
  font-size: 0.9375rem;
  font-weight: var(--site-fw-body);
  text-decoration: none;
  transition: border-color 0.15s ease, color 0.15s ease;
}

.home-channels__link:hover {
  border-color: var(--site-accent);
  color: var(--site-accent);
}

.home-faq {
  margin-top: var(--site-gap-lg);
  padding-top: var(--site-gap-lg);
  border-top: 1px solid var(--bs-border-color);
}

.home-faq__item {
  border: 1px solid var(--bs-border-color);
  border-radius: var(--site-radius-sm);
  background: var(--site-surface-elevated);
  margin-bottom: 0.5rem;
  overflow: hidden;
}

.home-faq__question {
  padding: 0.75rem 1rem;
  font-weight: var(--site-fw-label);
  cursor: pointer;
  list-style: none;
}

.home-faq__question::-webkit-details-marker {
  display: none;
}

.home-faq__answer {
  padding: 0 1rem 0.85rem;
  color: var(--site-ink-muted);
  font-size: 0.9375rem;
  line-height: 1.65;
}

.home-faq__answer p {
  margin: 0;
}

/* —— 图文广告 —— */
.content-top-ads {
  margin: 0 0 1.25rem;
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
}

.sidebar-ads {
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
  margin-bottom: 1.25rem;
}

.content-top-ads__item,
.sidebar-ads__item,
.ad-item {
  --ad-accent: var(--site-accent);
  position: relative;
  border: 1px solid color-mix(in srgb, var(--bs-border-color) 82%, transparent);
  border-radius: var(--site-radius-lg);
  background: var(--site-surface-elevated);
  box-shadow: var(--site-shadow-sm);
  overflow: hidden;
  transition:
    box-shadow 0.22s ease,
    border-color 0.22s ease,
    transform 0.22s ease;
}

.ad-item::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 3px;
  background: linear-gradient(180deg, var(--ad-accent), var(--site-accent-soft));
  opacity: 0.72;
  pointer-events: none;
  z-index: 2;
}

.ad-item--image:hover {
  border-color: color-mix(in srgb, var(--ad-accent) 32%, var(--bs-border-color));
  box-shadow: var(--site-shadow);
}

.ad-item__badge {
  position: absolute;
  top: 0.5rem;
  left: 0.65rem;
  z-index: 3;
  padding: 0.15rem 0.5rem;
  font-size: 0.625rem;
  font-weight: var(--site-fw-label);
  letter-spacing: 0.06em;
  line-height: 1.35;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--bs-warning-text-emphasis, #664d03) 88%, var(--bs-body-color));
  background: color-mix(in srgb, var(--bs-warning) 14%, var(--site-surface-elevated));
  border: 1px solid color-mix(in srgb, var(--bs-warning) 28%, var(--bs-border-color));
  border-radius: 999px;
  box-shadow: var(--site-shadow-sm);
  backdrop-filter: blur(6px);
}

[data-bs-theme="dark"] .ad-item__badge {
  color: color-mix(in srgb, var(--bs-warning) 72%, #fff);
  background: color-mix(in srgb, var(--bs-warning) 22%, var(--site-surface-elevated));
  border-color: color-mix(in srgb, var(--bs-warning) 36%, var(--bs-border-color));
}

/* 文字广告：[广告] + 正文；有链接时在下方显示按钮 */
.ad-item--text {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  gap: 0.65rem;
  padding: 0.9rem 1rem 0.9rem 1.15rem;
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--ad-accent) 5%, var(--site-surface-elevated)) 0%,
    var(--site-surface-elevated) 55%
  );
}

.ad-item--text:hover {
  border-color: color-mix(in srgb, var(--ad-accent) 24%, var(--bs-border-color));
  box-shadow: var(--site-shadow);
}

.ad-item--text .ad-item__badge {
  position: static;
  flex-shrink: 0;
  margin-top: 0.2em;
  text-transform: none;
  letter-spacing: 0.02em;
  font-size: 0.6875rem;
}

.ad-item--text .ad-item__body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.72rem;
}

.ad-item--text .ad-item__text,
.ad-item--text .sidebar-ads__text {
  margin: 0;
  padding: 0;
  font-size: 0.9375rem;
  line-height: 1.65;
  color: color-mix(in srgb, var(--bs-body-color) 92%, var(--site-text-muted));
  overflow-wrap: break-word;
  word-break: break-word;
}

.ad-item__link {
  display: block;
  color: inherit;
  text-decoration: none;
}

.ad-item--image .ad-item__link {
  padding: 0.55rem 0.65rem 0.65rem;
  background: color-mix(in srgb, var(--site-page-bg) 42%, var(--site-surface-elevated));
}

.ad-item--image .ad-item__image {
  transition: transform 0.28s ease;
}

.ad-item--image:hover .ad-item__image {
  transform: scale(1.015);
}

.ad-item__image {
  display: block;
  width: 100%;
  height: auto;
  max-height: 12rem;
  object-fit: contain;
  border-radius: calc(var(--site-radius-lg) - 0.35rem);
}

.content-top-ads__item.ad-item--image .ad-item__image {
  max-height: 13.5rem;
}

.sidebar-ads__item.ad-item--image .ad-item__image {
  max-height: 10rem;
}

.ad-item__text,
.sidebar-ads__text {
  margin: 0;
  padding: 0.85rem 1rem;
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--bs-body-color);
}

.sidebar-ads__text {
  max-height: 8rem;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(180deg, #000 72%, transparent);
  mask-image: linear-gradient(180deg, #000 72%, transparent);
}

.sidebar-ads__item.ad-item--text {
  padding: 0.8rem 0.85rem 0.8rem 1rem;
}

.sidebar-ads__item.ad-item--text .ad-item__cta {
  width: 100%;
}

@media (max-width: 575.98px) {
  .ad-item--text {
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.85rem 0.9rem 0.85rem 1rem;
  }

  .ad-item--text .ad-item__badge {
    margin-top: 0;
  }

  .ad-item__cta {
    width: 100%;
    justify-content: center;
  }
}

/* —— 全站公告 —— */
.site-announcement {
  border-bottom: 1px solid var(--bs-border-color);
  background: var(--site-surface-elevated);
}

.site-announcement--info {
  background: color-mix(in srgb, var(--bs-info) 12%, var(--site-surface-elevated));
}

.site-announcement--warn {
  background: color-mix(in srgb, var(--bs-warning) 18%, var(--site-surface-elevated));
}

.site-announcement--success {
  background: color-mix(in srgb, var(--bs-success) 12%, var(--site-surface-elevated));
}

.site-announcement__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 1rem;
  padding: 0.65rem 0;
}

.site-announcement__title {
  margin: 0;
  font-weight: var(--site-fw-title);
  font-size: 0.9375rem;
}

.site-announcement__body {
  margin: 0;
  flex: 1 1 12rem;
  font-size: 0.9375rem;
  line-height: 1.5;
  color: var(--bs-body-color);
}

.site-announcement__link {
  font-size: 0.875rem;
  white-space: nowrap;
}
