/* ============================================================
   墓易通 · 全新设计系统（自研，零旧代码）
   设计语言：东方人文 · 温润庄重 · 有生命力
   配色遵循 60-30-10：暖中性打底 60% / 墨黑文字 30% / 玉绿+琥珀点睛 10%
   ============================================================ */

:root {
  /* —— 中性打底 60%（暖宣纸，不带绿味）—— */
  --paper:        #FBF8F2;   /* 页面大背景：暖宣纸 */
  --paper-2:      #F6EFE2;   /* 分区柔和暖底 */
  --card:         #FFFFFF;   /* 干净白卡（对比暖底才透气）*/
  --line:         #ECE4D6;   /* 暖发丝线 */
  --line-2:       #DED2BE;   /* 稍重分隔 */

  /* —— 文字墨色 30%（暖墨黑，非深绿）—— */
  --ink:          #241F18;   /* 标题/正文主色：暖墨黑 */
  --ink-2:        #5C5348;   /* 次要文字：暖灰 */
  --ink-3:        #8C8273;   /* 说明/占位：浅暖灰 */

  /* —— 玉绿点睛 10%（有生命力、白字达 AA）—— */
  --jade:         #0E7A57;   /* 主 CTA / 激活 / 关键强调 */
  --jade-strong:  #0A5C42;   /* hover / 深度 */
  --jade-soft:    #E6F2EC;   /* 选中/激活底 */
  --jade-ink:     #0B6247;   /* 浅底上的绿字（AA）*/

  /* —— 琥珀点睛（暖意，仅徽章/细线/星级，克制）—— */
  --amber:        #C0863A;   /* 装饰暖金 */
  --amber-ink:    #8A5A16;   /* 浅底上的金棕字（AA）*/
  --amber-soft:   #F7EEDA;   /* 暖徽章底 */

  --danger:       #B4462F;
  --star:         #C9962F;

  /* —— 阴影：仅暖中性，无彩色投影 —— */
  --sh-sm: 0 1px 2px rgba(46,36,20,.05), 0 1px 3px rgba(46,36,20,.05);
  --sh-md: 0 8px 24px rgba(46,36,20,.08);
  --sh-lg: 0 20px 52px rgba(46,36,20,.13);

  /* —— 圆角 —— */
  --r-sm: 10px; --r-md: 14px; --r-lg: 20px; --r-pill: 999px;

  /* —— 字体与字阶 —— */
  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", "Helvetica Neue", Arial, sans-serif;
  --fs-display: clamp(34px, 4.6vw, 56px);
  --fs-h1: clamp(26px, 3vw, 36px);
  --fs-h2: 24px;
  --fs-h3: 19px;
  --fs-body: 16px;
  --fs-sm: 14px;
  --fs-cap: 13px;

  /* —— 间距（8pt）与版心 —— */
  --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px; --sp-5: 24px;
  --sp-6: 32px; --sp-7: 48px; --sp-8: 64px; --sp-9: 96px;
  --wrap: 1400px;
  --touch: 44px;

  --z-header: 60; --z-float: 70; --z-modal: 120;
}

/* ---------------- reset / base ---------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font);
  font-size: var(--fs-body);
  line-height: 1.65;
  color: var(--ink);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
h1, h2, h3, h4, p { margin: 0; }
a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; border: 0; background: none; color: inherit; }
img, svg { display: block; max-width: 100%; }
ul { margin: 0; padding: 0; list-style: none; }
:focus-visible { outline: 3px solid var(--jade); outline-offset: 2px; border-radius: 6px; }
::selection { background: var(--jade-soft); }

.wrap { width: min(var(--wrap), calc(100% - 48px)); margin-inline: auto; }
.muted { color: var(--ink-2); }
.eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: var(--fs-cap); font-weight: 700; letter-spacing: .04em;
  color: var(--jade-ink); text-transform: none;
}
.eyebrow::before { content: ""; width: 22px; height: 2px; border-radius: 2px; background: var(--amber); }

/* ---------------- buttons ---------------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: var(--touch); padding: 0 22px;
  border-radius: var(--r-pill); font-size: var(--fs-sm); font-weight: 700;
  transition: transform .14s ease, box-shadow .16s ease, background .16s ease, color .16s ease;
  white-space: nowrap;
}
.btn svg { width: 18px; height: 18px; }
.btn-primary { background: var(--jade); color: #fff; box-shadow: var(--sh-sm); transition: background .2s ease, transform .15s ease, box-shadow .2s ease; }
.btn-primary:hover { background: var(--jade-strong); transform: translateY(-1px); box-shadow: var(--sh-md); }
.btn-primary:active { transform: scale(.97) translateY(0); box-shadow: var(--sh-sm); }
.btn-ghost { background: var(--card); color: var(--ink); box-shadow: inset 0 0 0 1px var(--line-2); }
.btn-ghost:hover { box-shadow: inset 0 0 0 1px var(--jade); color: var(--jade-ink); transform: translateY(-1px); }
.btn-quiet { color: var(--jade-ink); font-weight: 700; padding: 0 6px; min-height: 40px; }
.btn-quiet:hover { color: var(--jade-strong); }
.btn-lg { min-height: 52px; padding: 0 30px; font-size: var(--fs-body); }
.btn:disabled { opacity: .45; cursor: not-allowed; transform: none; }

/* ---------------- badges / chips ---------------- */
.badge {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 12px; border-radius: var(--r-pill);
  font-size: var(--fs-cap); font-weight: 700; line-height: 1;
}
.badge-jade { background: var(--jade-soft); color: var(--jade-ink); }
.badge-amber { background: var(--amber-soft); color: var(--amber-ink); }
.badge-line { box-shadow: inset 0 0 0 1px var(--line-2); color: var(--ink-2); }

.chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 14px; border-radius: var(--r-pill); font-size: var(--fs-sm);
  font-weight: 600; color: var(--ink-2); background: var(--card);
  box-shadow: inset 0 0 0 1px var(--line); transition: all .14s ease;
}
.chip[aria-pressed="true"], .chip.is-active {
  background: var(--jade); color: #fff; box-shadow: none;
}
.chip:not(.is-active):hover { box-shadow: inset 0 0 0 1px var(--jade); color: var(--jade-ink); }

/* ---------------- card ---------------- */
.card {
  background: var(--card); border-radius: var(--r-lg);
  box-shadow: var(--sh-sm); border: 1px solid var(--line);
}
.card-pad { padding: var(--sp-5); }

/* ---------------- header / nav ---------------- */
.site-header {
  position: sticky; top: 0; z-index: var(--z-header);
  background: color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter: saturate(1.4) blur(12px);
  border-bottom: 1px solid var(--line);
}
.site-header-inner { display: flex; align-items: center; gap: var(--sp-4); height: 72px; }
.brand { display: flex; align-items: center; gap: 10px; font-weight: 800; font-size: 20px; letter-spacing: .02em; white-space: nowrap; flex: none; }
.brand-mark {
  width: 38px; height: 38px; border-radius: 11px; display: grid; place-items: center;
  color: #fff; font-size: 18px; font-weight: 900;
  background: linear-gradient(150deg, var(--jade) 0%, var(--jade-strong) 100%);
  box-shadow: var(--sh-sm);
}
.brand-city {
  display: inline-flex; align-items: center; gap: 6px; margin-left: 4px;
  padding: 7px 12px; border-radius: var(--r-pill); font-size: var(--fs-sm); font-weight: 700;
  color: var(--ink-2); background: var(--card); box-shadow: inset 0 0 0 1px var(--line);
}
.nav {
  display: flex; align-items: center; gap: 4px; margin-inline: auto;
  background: var(--paper-2); border: 1px solid var(--line); border-radius: var(--r-pill);
  padding: 5px 8px; box-shadow: var(--sh-sm);
}
.nav a {
  position: relative; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap;
  padding: 9px 16px; font-size: var(--fs-sm); font-weight: 700;
  color: var(--ink-2); border-radius: var(--r-pill);
  transition: color .16s ease, background .16s ease, box-shadow .16s ease;
}
.nav a svg { width: 15px; height: 15px; color: var(--ink-3); transition: color .16s ease; flex: none; }
.nav a:hover { color: var(--ink); background: var(--card); box-shadow: var(--sh-sm); }
.nav a:hover svg { color: var(--jade); }
.nav a.is-active { color: #fff; background: var(--jade); box-shadow: 0 2px 8px rgba(14,122,87,.25); }
.nav a.is-active svg { color: #fff; }
.header-cta { display: flex; align-items: center; gap: 12px; }
.header-phone { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; color: var(--ink); white-space: nowrap; }
.header-phone:hover { color: var(--jade-ink); }
.header-phone svg { width: 18px; height: 18px; color: var(--jade); }

/* 汉堡按钮（默认隐藏，≤992 显示）*/
.nav-toggle { display: none; width: 44px; height: 44px; border-radius: var(--r-md); align-items: center; justify-content: center; color: var(--ink); background: var(--card); box-shadow: inset 0 0 0 1px var(--line-2); flex: none; }
.nav-toggle svg { width: 22px; height: 22px; }
.nav-toggle:hover { color: var(--jade-ink); box-shadow: inset 0 0 0 1px var(--jade); }

/* 移动端下拉抽屉 */
.nav-drawer { display: none; border-top: 1px solid var(--line); background: color-mix(in srgb, var(--paper) 97%, transparent); }
.nav-drawer.is-open { display: block; }
.nav-drawer .wrap { padding-top: var(--sp-3); padding-bottom: var(--sp-4); }
.nav-drawer-list { display: grid; gap: 2px; }
.nav-drawer-list a { display: flex; align-items: center; gap: 12px; padding: 13px 10px; border-radius: var(--r-md); font-size: var(--fs-body); font-weight: 700; color: var(--ink-2); }
.nav-drawer-list a svg { width: 20px; height: 20px; color: var(--jade); opacity: .85; flex: none; }
.nav-drawer-list a.is-active { background: var(--jade-soft); color: var(--jade-ink); }
.nav-drawer-list a:active { background: var(--paper-2); }
.nav-drawer-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: var(--sp-3); padding-top: var(--sp-3); border-top: 1px solid var(--line); }
.nav-drawer-phone { display: inline-flex; align-items: center; gap: 8px; font-weight: 800; color: var(--jade-ink); white-space: nowrap; }
.nav-drawer-phone svg { width: 18px; height: 18px; }
.nav-drawer-foot .btn { flex: 1; min-width: 160px; justify-content: center; }

/* 顶部导航响应式：≥993 水平导航 / ≤992 汉堡；1200 以下电话仅留图标 */
@media (max-width: 1199px) { .header-phone .header-phone-num { display: none; } .header-phone { gap: 0; } }
@media (max-width: 1100px) {
  .nav { display: none; }
  .header-phone { display: none; }
  .header-book { display: none; }
  .nav-toggle { display: inline-flex; }
}
/* ≤768px 手机端：顶栏账号钮隐藏（与底部Tab“登录/我的”重复），顶栏只留 logo+汉堡，账号操作归一到底部Tab→我的页 */
@media (max-width: 768px) {
  .header-cta .acct-avatar, .header-cta .acct { display: none; }
  /* 汉堡也隐藏：底部Tab承载主导航，纪念堂/下载APP/合作等次级入口页脚和首页板块全覆盖，顶栏只留 logo 最干净；
     769-1100px 平板区间汉堡保留（那里无底部Tab，汉堡是唯一导航） */
  .nav-toggle { display: none; }
  .nav-drawer { display: none !important; }
}

/* GEO 指南：与现有暖纸、玉绿、低装饰卡片体系一致。 */
.geo-guide-page { padding: var(--sp-7) 0 var(--sp-9); min-height: 55vh; }
.geo-guide-head { max-width: 760px; display: grid; gap: 10px; margin-bottom: var(--sp-6); }
.geo-guide-head h1 { font-size: var(--fs-h1); font-weight: 850; letter-spacing: -.02em; }
.geo-guide-head p { color: var(--ink-2); max-width: 700px; }
.geo-guide-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sp-4); }
.geo-guide-card { min-height: 210px; padding: var(--sp-5); display: flex; flex-direction: column; gap: 10px; transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
.geo-guide-card:hover { transform: translateY(-3px); box-shadow: var(--sh-md); border-color: var(--jade); }
.geo-guide-card > span { color: var(--jade-ink); font-size: var(--fs-cap); font-weight: 800; letter-spacing: .04em; }
.geo-guide-card h2 { font-size: var(--fs-h3); font-weight: 800; line-height: 1.45; }
.geo-guide-card p { color: var(--ink-2); font-size: var(--fs-sm); }
.geo-guide-card time { margin-top: auto; color: var(--ink-3); font-size: var(--fs-cap); }
.geo-guide-empty { padding: var(--sp-8) var(--sp-5); max-width: 620px; display: grid; gap: 12px; justify-items: start; }
.geo-guide-empty h1 { font-size: var(--fs-h2); font-weight: 800; }
.geo-guide-empty p, .geo-guide-note { color: var(--ink-2); }
.geo-guide-crumb { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: var(--sp-4); color: var(--ink-3); font-size: var(--fs-sm); }
.geo-guide-crumb a { display: inline-flex; align-items: center; gap: 4px; color: var(--jade-ink); font-weight: 700; }
.geo-guide-crumb a:hover { color: var(--jade-strong); text-decoration: underline; }
.geo-guide-crumb svg { width: 15px; height: 15px; }
.geo-guide-back { display: inline-flex; color: var(--jade-ink); font-size: var(--fs-sm); font-weight: 800; margin-bottom: var(--sp-5); }
.geo-guide-back:hover { color: var(--jade-strong); text-decoration: underline; }
.geo-guide-article { padding: clamp(24px, 4vw, 52px); max-width: 880px; }
.geo-guide-article h1, .geo-guide-article h2, .geo-guide-article h3 { margin: 1.6em 0 .6em; font-weight: 850; line-height: 1.42; }
.geo-guide-article h1 { font-size: var(--fs-h2); }.geo-guide-article h2 { font-size: 20px; }.geo-guide-article h3 { font-size: 17px; }
.geo-guide-article p { margin: 0 0 1em; color: var(--ink-2); line-height: 1.9; }
.geo-guide-links { max-width: 880px; margin-top: var(--sp-4); padding: var(--sp-5); display: grid; gap: 14px; }
.geo-guide-links h2 { display: flex; align-items: center; gap: 8px; font-size: var(--fs-h3); font-weight: 850; }
.geo-guide-links h2 svg { width: 18px; height: 18px; color: var(--jade); }
.geo-guide-links > div { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.geo-guide-links a { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--r-pill); background: var(--paper-2); color: var(--jade-ink); font-weight: 800; }
.geo-guide-links a:hover { border-color: var(--jade); background: var(--jade-soft); }
.geo-guide-links a svg { width: 15px; height: 15px; flex: 0 0 auto; }
.geo-guide-note { max-width: 880px; margin-top: var(--sp-4); padding: var(--sp-4); border-left: 3px solid var(--amber); background: var(--amber-soft); border-radius: 0 var(--r-sm) var(--r-sm) 0; font-size: var(--fs-sm); }
@media (max-width: 900px) { .geo-guide-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .geo-guide-page { padding: var(--sp-5) 0 var(--sp-8); }.geo-guide-grid { grid-template-columns: 1fr; }.geo-guide-card { min-height: 176px; }.geo-guide-article { padding: var(--sp-5); }.geo-guide-links > div { grid-template-columns: 1fr; } }
@media (min-width: 1101px) { .nav-drawer { display: none !important; } }

/* ---------------- footer ---------------- */
.site-footer { margin-top: var(--sp-9); background: var(--ink); color: #D9D2C6; }
.site-footer .wrap { padding: var(--sp-8) 0 var(--sp-5); }
/* footer 主体：左品牌区 + 中链接区 + 右公众号卡（C89 GEO） */
.footer-main { display: grid; grid-template-columns: 1.3fr 2fr 0.9fr; gap: var(--sp-7); align-items: start; padding-bottom: var(--sp-6); }
.footer-brand .brand { color: #fff; }
.footer-brand > p { margin-top: 14px; color: #A79E8E; max-width: 340px; line-height: 1.8; font-size: var(--fs-sm); }
.footer-trust { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-top: 18px; }
.footer-trust span { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 600; color: rgba(255,255,255,.78); }
.footer-trust svg { width: 14px; height: 14px; color: var(--jade); }
.footer-phone { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-top: 18px; font-size: 20px; color: #fff; text-decoration: none; font-weight: 800; }
.footer-phone svg { width: 19px; height: 19px; color: var(--jade); }
.footer-phone span { font-size: 12px; font-weight: 500; color: #8A8071; width: 100%; }
.footer-phone:hover { color: var(--jade); }
.footer-nav { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-5); }
.footer-col h4 { font-size: var(--fs-sm); color: #fff; margin-bottom: 14px; letter-spacing: .06em; }
.footer-col a { display: block; padding: 6px 0; color: #A79E8E; font-size: var(--fs-sm); text-decoration: none; }
.footer-col a:hover { color: #fff; }
.footer-col button.footer-link { display: block; width: 100%; text-align: left; padding: 6px 0; color: #A79E8E; font-size: var(--fs-sm); background: none; border: none; cursor: pointer; font-family: inherit; }
.footer-col button.footer-link:hover { color: #fff; }
/* C89 GEO 新增：footer 右侧公众号卡片（QR + 文案） */
.footer-mp { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; padding: 8px 4px; }
.footer-mp-qr { width: 120px; height: 120px; border-radius: 8px; background: #fff; padding: 6px; box-shadow: 0 2px 8px rgba(0,0,0,.25); }
.footer-mp-title { color: #fff; font-size: var(--fs-sm); margin: 0; letter-spacing: .02em; }
.footer-mp-title b { color: var(--jade); font-weight: 700; }
.footer-mp-sub { color: #A79E8E; font-size: 12px; margin: 0; line-height: 1.5; }
/* footer 底栏：版权 + 法律链接 */
.footer-bottom { padding-top: var(--sp-5); border-top: 1px solid rgba(255,255,255,.1); font-size: var(--fs-cap); color: #8A8071; display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; }
.footer-legal { display: flex; align-items: center; gap: 8px 20px; flex-wrap: wrap; }
.footer-legal a { color: #A79E8E; text-decoration: none; }
.footer-legal a:hover { color: #fff; }
/* Footer 隐藏城市切换 */
.footer-ver { font-style: normal; font-size: 11px; color: #6B6357; margin-left: 10px; letter-spacing: .02em; }
.footer-city-btn { background: none; border: none; color: #A79E8E; font-size: var(--fs-cap); font-weight: 600; cursor: pointer; font-family: inherit; padding: 0; }
.footer-city-btn:hover { color: #fff; }
.footer-city-switch { position: fixed; bottom: 48px; left: 50%; transform: translateX(-50%); width: min(680px, calc(100vw - 32px)); z-index: var(--z-modal); animation: fcpIn .15s ease; }
.footer-city-switch .city-switch-panel { max-height: 70vh; }
@keyframes fcpIn { from { opacity: 0; transform: translateX(-50%) translateY(20px); } to { opacity: 1; transform: translateX(-50%) translateY(0); } }
.fcp-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.fcp-head strong { font-size: 16px; font-weight: 800; }
.fcp-head button { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; background: var(--paper-2); color: var(--ink-3); border: 0; cursor: pointer; }
.fcp-head button svg { width: 14px; height: 14px; }
.fcp-body { display: grid; gap: 14px; max-height: 320px; overflow-y: auto; }
.fcp-prov { font-size: 12px; font-weight: 700; color: var(--ink-3); margin-bottom: 6px; }
.fcp-cities { display: flex; flex-wrap: wrap; gap: 6px; }
.fcp-city { padding: 5px 12px; border-radius: var(--r-pill); border: 1px solid var(--line-2); background: var(--paper); font-size: 13px; font-weight: 600; color: var(--ink-2); cursor: pointer; transition: all .12s; }
.fcp-city:hover { border-color: var(--jade); color: var(--jade-ink); }
.fcp-city.is-active { background: var(--jade); color: #fff; border-color: var(--jade); }
@media (max-width: 860px) {
  .footer-main { grid-template-columns: 1fr; gap: var(--sp-6); }
  .footer-mp { align-items: flex-start; text-align: left; }
}
@media (max-width: 520px) {
  .footer-nav { grid-template-columns: 1fr 1fr; }
  .footer-bottom { flex-direction: column; align-items: flex-start; }
}

/* ---------------- section heading ---------------- */
.section { padding: var(--sp-9) 0; }
.section-tight { padding: var(--sp-8) 0; }
.section-head { text-align: center; max-width: 640px; margin: 0 auto var(--sp-7); display: grid; gap: 14px; justify-items: center; }
.section-head.sh-tight { margin-bottom: var(--sp-5); }
.section-head h2 { font-size: var(--fs-h1); font-weight: 800; letter-spacing: -.01em; }
.section-head p { color: var(--ink-2); font-size: 17px; line-height: 1.75; }

/* ---------------- utility icon ---------------- */
.i { width: 20px; height: 20px; stroke: currentColor; stroke-width: 1.9; fill: none; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.i-amber { stroke: var(--amber); }

/* ============================================================
   页面级样式（首页 / 看报告页）
   ============================================================ */

/* ---------------- 首页 HERO ---------------- */
.hero { position: relative; overflow: hidden; }
.hero::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background:
    radial-gradient(1100px 460px at 82% -8%, rgba(14,122,87,.10), transparent 60%),
    radial-gradient(760px 420px at 8% 8%, rgba(192,134,58,.10), transparent 55%),
    var(--paper);
}
.hero-inner { display: grid; grid-template-columns: 1.05fr .95fr; gap: var(--sp-8); align-items: center; padding: var(--sp-9) 0; }
.hero-copy { display: grid; gap: var(--sp-5); align-content: start; }
.hero h1 { font-size: var(--fs-display); line-height: 1.1; letter-spacing: -.015em; font-weight: 800; }
.hero h1 .accent { color: var(--jade); }
.hero-sub { font-size: 18px; line-height: 1.8; color: var(--ink-2); max-width: 520px; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 4px; }
.hero-trust { display: flex; gap: var(--sp-6); margin-top: var(--sp-4); flex-wrap: wrap; }
.hero-trust div { display: grid; gap: 2px; }
.hero-trust strong { font-size: 26px; font-weight: 800; color: var(--ink); font-variant-numeric: tabular-nums; }
.hero-trust strong em { font-size: 15px; font-style: normal; color: var(--jade-ink); margin-left: 2px; }
.hero-trust span { font-size: var(--fs-cap); color: var(--ink-3); }

.hero-visual { position: relative; height: 460px; }
.hero-visual::before { content: ""; position: absolute; z-index: 0; right: -22px; top: -20px; width: 70%; height: 78%; border-radius: var(--r-lg); background: linear-gradient(150deg, var(--jade-soft), color-mix(in srgb, var(--jade) 12%, var(--paper))); }
.hero-visual::after { content: ""; position: absolute; z-index: 0; left: -18px; bottom: 28px; width: 120px; height: 120px; border-radius: 50%; background: radial-gradient(circle at 30% 30%, color-mix(in srgb, var(--jade) 18%, transparent), transparent 70%); }
.hero-photo, .hero-scene { z-index: 1; }
.hero-scene {
  position: absolute; inset: 0; border-radius: var(--r-lg); overflow: hidden;
  box-shadow: var(--sh-lg); border: 1px solid var(--line);
  background: linear-gradient(180deg, #EAF2ED 0%, #F3EDE0 100%);
}
.hero-scene .sun { position: absolute; top: 46px; right: 60px; width: 84px; height: 84px; border-radius: 50%; background: radial-gradient(circle, #F4E4C0 0%, rgba(244,228,192,0) 70%); }
.hero-scene .hill { position: absolute; left: -8%; right: -8%; border-radius: 48%; }
.hero-scene .hill-1 { bottom: 92px; height: 300px; background: linear-gradient(180deg, #2F6B54, #275C48); opacity: .92; }
.hero-scene .hill-2 { bottom: 58px; height: 250px; left: 28%; right: -22%; background: linear-gradient(180deg, #3B7B60, #2F6A52); opacity: .96; }
.hero-scene .hill-3 { bottom: 26px; height: 210px; left: -26%; right: 40%; background: linear-gradient(180deg, #4A8C6F, #3A7458); }
.hero-scene .water { position: absolute; left: 0; right: 0; bottom: 0; height: 88px; background: linear-gradient(180deg, rgba(224,236,230,.7), #DCE9E1); }
.hero-badge {
  position: absolute; left: 24px; bottom: 24px; z-index: 2;
  display: flex; align-items: center; gap: 12px; padding: 14px 18px;
  background: color-mix(in srgb, var(--card) 92%, transparent); backdrop-filter: blur(6px);
  border-radius: var(--r-md); box-shadow: var(--sh-md); border: 1px solid var(--line);
}
.hero-badge .ring {
  width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center;
  font-weight: 800; font-size: 14px; color: var(--jade-ink);
  background: conic-gradient(var(--jade) 90%, var(--jade-soft) 0); position: relative;
}
.hero-badge .ring::after { content: ""; position: absolute; inset: 4px; background: var(--card); border-radius: 50%; }
.hero-badge .ring b { position: relative; z-index: 1; }
.hero-badge div { display: grid; gap: 1px; }
.hero-badge strong { font-size: 15px; }
.hero-badge span { font-size: var(--fs-cap); color: var(--ink-3); }

/* ---------------- 价值卡 ---------------- */
.feature-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--sp-4); }
.feature {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg);
  padding: var(--sp-5); display: grid; gap: 12px; align-content: start;
  box-shadow: var(--sh-sm); transition: transform .16s ease, box-shadow .16s ease;
}
.feature:hover { transform: translateY(-3px); box-shadow: var(--sh-md); }
.feature-ic {
  width: 50px; height: 50px; border-radius: 14px; display: grid; place-items: center;
  background: var(--jade-soft); color: var(--jade); margin-bottom: 4px;
}
.feature:nth-child(2) .feature-ic { background: var(--amber-soft); color: var(--amber-ink); }
.feature h3 { font-size: var(--fs-h3); font-weight: 700; }
.feature p { color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.7; }

/* ---------------- 精选墓园卡 ---------------- */
.cem-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-5); }
.cem-card { overflow: hidden; display: grid; grid-template-rows: 220px auto; transition: transform .2s ease, box-shadow .2s ease; cursor: pointer; }
.cem-cover { position: relative; background: linear-gradient(135deg, #EEF3EF, #E3EAE4); display: block; cursor: pointer; }
.cem-cover .cem-score {
  position: absolute; top: 14px; right: 14px; padding: 6px 12px; border-radius: var(--r-pill);
  background: color-mix(in srgb, var(--card) 92%, transparent); font-weight: 800; color: var(--jade-ink);
  display: flex; align-items: baseline; gap: 3px; box-shadow: var(--sh-sm);
}
.cem-cover .cem-score b { font-size: 18px; }
.cem-cover .cem-score span { font-size: 11px; color: var(--ink-3); }
.cem-body { padding: 14px var(--sp-5) var(--sp-4); display: grid; gap: 10px; }
/* 名称+地址同行 */
.cem-titlerow { display: flex; align-items: baseline; gap: 10px; min-width: 0; text-decoration: none; color: inherit; }
.cem-titlerow:hover h3 { color: var(--jade-ink); }
.cem-titlerow h3 { font-size: 17px; font-weight: 800; flex: none; max-width: 45%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cem-addr { display: inline-flex; align-items: center; gap: 5px; color: var(--ink-3); font-size: 12px; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cem-addr svg { width: 13px; height: 13px; flex: none; color: var(--ink-3); }
.cem-tags { display: flex; flex-wrap: wrap; gap: 6px; }
/* 合作标签叠加在图片左下角 */
.cem-coop-tag { position: absolute; left: 12px; bottom: 12px; z-index: 1; display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border-radius: var(--r-pill); font-size: 11px; font-weight: 700; backdrop-filter: blur(4px); }
.cem-coop-tag svg { width: 13px; height: 13px; }
.cem-coop-tag.coop-key { background: rgba(14,122,87,.92); color: #fff; }
.cem-coop-tag.coop-appt { background: rgba(255,255,255,.92); color: var(--jade-ink); }
.cem-coop-tag.coop-cons { background: rgba(255,255,255,.92); color: var(--ink-2); }
.cem-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 2px; padding-top: 12px; border-top: 1px solid var(--line); }
.cem-foot-l { display: flex; align-items: center; gap: 6px; min-width: 0; }
.cem-rep-link { display: inline-flex; align-items: center; gap: 5px; padding: 0 12px; min-height: 40px; border: 1px solid rgba(14, 122, 87, .28); border-radius: var(--r-pill); background: var(--jade-soft); color: var(--jade-ink); font-size: var(--fs-cap); font-weight: 700; white-space: nowrap; cursor: pointer; transition: all .15s ease; text-decoration: none; }
.cem-rep-link svg { width: 15px; height: 15px; flex: none; }
.cem-rep-link:hover { background: var(--jade); color: #fff; border-color: var(--jade); }
/* 0 份报告占位：灰色 chip，链到合作页邀请墓园入驻（墓园运营方看到“同行有报告”会主动来谈，也避免 C 端以为页面坏了） */
.cem-rep-link.cem-rep-empty { background: var(--paper-2); color: var(--ink-3); border-color: var(--line); font-weight: 600; }
.cem-rep-link.cem-rep-empty:hover { background: var(--ink-3); color: #fff; border-color: var(--ink-3); }
@media (max-width: 480px) { .cem-rep-link { padding: 0 9px; } .cem-foot .btn-quiet { padding-right: 4px; } }
.favorite-btn { min-height: 40px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 0 10px; border: 1px solid var(--line-2); border-radius: var(--r-pill); background: var(--card); color: var(--jade-ink); font-size: var(--fs-cap); font-weight: 700; white-space: nowrap; transition: all .15s ease; }
.favorite-btn:hover { border-color: var(--jade); background: var(--jade-soft); }
.favorite-btn.is-active { border-color: #E53935; background: #FDE8E8; color: #C62828; }
.favorite-btn.is-active svg { color: #E53935; fill: #E53935; stroke: #E53935; }
.favorite-btn svg { width: 16px; height: 16px; }
.cd-actions .favorite-btn { min-height: var(--touch); padding: 0 16px; font-size: var(--fs-sm); }
.cem-price { font-weight: 800; color: var(--ink); }
.cem-price em { font-size: var(--fs-cap); color: var(--ink-3); font-style: normal; font-weight: 600; }

/* ---------------- 流程 ---------------- */
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-5); }
.step { display: grid; gap: 12px; padding: var(--sp-5); }
.step .num {
  width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center;
  font-weight: 800; font-size: 18px; color: var(--jade); background: var(--jade-soft);
}
.step h3 { font-size: var(--fs-h3); font-weight: 700; }
.step p { color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.7; }

/* ---------------- CTA 横幅 ---------------- */
.cta-band { background: linear-gradient(135deg, var(--jade-strong), var(--jade)); border-radius: var(--r-lg); padding: var(--sp-8); color: #fff; text-align: center; display: grid; gap: 18px; justify-items: center; box-shadow: var(--sh-md); }
.cta-band h2 { font-size: var(--fs-h1); font-weight: 800; }
.cta-band p { color: rgba(255,255,255,.86); font-size: 17px; max-width: 560px; }
.cta-band .btn-primary { background: #fff; color: var(--jade-strong); }
.cta-band .btn-primary:hover { background: var(--amber-soft); }

/* ============================================================
   看报告页
   ============================================================ */
.reports-page { padding: var(--sp-6) 0 var(--sp-8); }
.reports-intro { display: grid; gap: 12px; margin-bottom: var(--sp-6); }
.reports-intro h1 { font-size: var(--fs-h1); font-weight: 800; letter-spacing: -.01em; }
.reports-intro p { color: var(--ink-2); font-size: 16px; max-width: 720px; }
.reports-value-cta, .cd-value-cta { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 16px; border: 1px solid rgba(14,122,87,.22); border-radius: var(--r-md); background: linear-gradient(135deg, rgba(14,122,87,.09), rgba(216,169,84,.10)); }
.reports-value-cta b, .cd-value-cta b { display: block; color: var(--jade-ink); font-size: var(--fs-body); }
.reports-value-cta span, .cd-value-cta span { display: block; margin-top: 4px; color: var(--ink-2); font-size: var(--fs-sm); }
.reports-value-actions, .cd-value-actions { display: flex; flex: none; flex-wrap: wrap; gap: 8px; }
.reports-layout { display: grid; grid-template-columns: minmax(0,1fr) 380px; gap: var(--sp-5); align-items: start; }
@media (max-width: 992px) { .reports-layout { grid-template-columns: minmax(0,1fr) 300px; } }

.report-read { display: grid; gap: var(--sp-5); min-width: 0; }
.report-hero { display: grid; gap: var(--sp-4); padding: var(--sp-6); }
.report-hero-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.report-hero h2 { font-size: var(--fs-h2); font-weight: 700; letter-spacing: -.01em; }
.report-lead { font-size: 17px; line-height: 1.75; color: var(--ink-2); max-width: 620px; }
.report-lead b { color: var(--jade-ink); font-weight: 700; }
.report-meta { display: flex; flex-wrap: wrap; gap: 8px 18px; color: var(--ink-3); font-size: var(--fs-cap); }
.report-meta span { display: inline-flex; align-items: center; gap: 6px; }
.report-hero-actions { display: flex; flex-wrap: wrap; gap: 12px; }

.score-hero { display: grid; grid-template-columns: auto 1fr; gap: var(--sp-6); align-items: center; padding: var(--sp-6); background: linear-gradient(150deg, #FFFFFF 0%, #FBF6EC 100%); }
.score-ring { width: 168px; height: 168px; position: relative; display: grid; place-items: center; }
.score-ring .ring-svg { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); }
.score-ring .ring-bg { fill: none; stroke: var(--jade-soft); stroke-width: 9; }
.score-ring .ring-fg { fill: none; stroke: var(--jade); stroke-width: 9; stroke-linecap: round; transition: stroke-dashoffset .8s ease; }
.score-ring .val { position: relative; z-index: 1; text-align: center; display: grid; gap: 2px; }
.score-ring .val b { font-size: 46px; font-weight: 800; color: var(--jade-ink); line-height: 1; font-variant-numeric: tabular-nums; }
.score-ring .val span { font-size: var(--fs-cap); color: var(--ink-3); }
.score-side { display: grid; gap: 14px; }
.score-side .grade { display: flex; align-items: center; gap: 12px; }
.score-side .grade b { font-size: 22px; font-weight: 800; }
.score-summary { color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.7; }
.score-quick { display: flex; flex-wrap: wrap; gap: 10px; }

.dims { display: grid; gap: var(--sp-4); padding: var(--sp-6); }
.dims h3 { font-size: var(--fs-h3); font-weight: 700; display: flex; align-items: center; gap: 8px; }
.dim-list { display: grid; gap: 18px; }
.dim { display: grid; grid-template-columns: 1fr auto; gap: 6px 14px; align-items: center; }
.dim .name { font-size: 15px; font-weight: 700; color: var(--ink); }
.dim .read { font-size: 15px; font-weight: 800; color: var(--ink); font-variant-numeric: tabular-nums; }
.dim .read em { font-size: 12px; color: var(--ink-3); font-style: normal; font-weight: 600; margin-left: 2px; }
.dim .bar { grid-column: 1 / -1; height: 9px; border-radius: 999px; background: var(--jade-soft); overflow: hidden; }
.dim .bar i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--jade-strong), var(--jade)); }
.dim .judge { grid-column: 1 / -1; font-size: var(--fs-cap); color: var(--ink-3); }
.dim .judge.good { color: var(--jade-ink); }
.dim .judge.mid { color: var(--amber-ink); }

.advice { padding: var(--sp-6); display: grid; gap: var(--sp-4); }
.advice h3 { font-size: var(--fs-h3); font-weight: 700; display: flex; align-items: center; gap: 8px; }
.advice-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-4); }
.advice-item { display: grid; gap: 8px; padding: var(--sp-4); background: var(--paper-2); border-radius: var(--r-md); }
.advice-item .k { display: inline-flex; align-items: center; gap: 8px; font-weight: 800; color: var(--jade-ink); font-size: var(--fs-sm); }
.advice-item p { color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.7; }

.reports-side { position: sticky; top: 88px; display: grid; gap: var(--sp-4); padding: var(--sp-5); }
.side-tabs { display: flex; gap: 8px; flex-wrap: wrap; }
.side-search { position: relative; }
.side-search .i { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--ink-3); }
.side-search input {
  width: 100%; min-height: var(--touch); padding: 0 14px 0 42px; border-radius: var(--r-pill);
  border: 1px solid var(--line-2); background: var(--paper); font: inherit; font-size: var(--fs-sm); color: var(--ink);
}
.side-search input:focus-visible { outline: none; border-color: var(--jade); box-shadow: 0 0 0 3px var(--jade-soft); }
.side-controls { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.segmented { display: inline-flex; padding: 4px; background: var(--paper-2); border-radius: var(--r-pill); gap: 4px; }
.segmented button { padding: 8px 16px; border-radius: var(--r-pill); font-size: var(--fs-cap); font-weight: 700; color: var(--ink-2); }
.segmented button.is-active { background: var(--card); color: var(--jade-ink); box-shadow: var(--sh-sm); }
.side-count { font-size: var(--fs-cap); color: var(--ink-3); }
.report-rows { display: grid; gap: 10px; }
/* 报告页右侧列表：两列紧凑，地图才是主角，列表不占整屏 */
.rp-panel .report-rows { grid-template-columns: 1fr 1fr; gap: 8px; }
.rp-panel .report-row { padding: 10px 14px; }
.rp-panel .report-row .r-name { font-size: 14px; }
.rp-panel .report-row .r-cem { display: none; }
.rp-panel .report-row .r-score b { font-size: 17px; }
.report-row {
  display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; align-items: center;
  width: 100%; text-align: left; padding: 14px 16px; border-radius: var(--r-md);
  background: var(--card); border: 1px solid var(--line); transition: all .14s ease;
}
.report-row:hover { border-color: var(--jade); transform: translateX(2px); }
.report-row.is-active { border-color: var(--jade); background: var(--jade-soft); }
.report-row .r-name { grid-column: 1; grid-row: 1; font-size: 15px; font-weight: 700; color: var(--ink); }
.report-row .r-cem { grid-column: 1; grid-row: 2; font-size: var(--fs-cap); color: var(--ink-3); }
.report-row .r-score { grid-column: 2; grid-row: 1 / span 2; align-self: center; text-align: right; }
.report-row .r-score b { font-size: 20px; font-weight: 800; color: var(--jade-ink); font-variant-numeric: tabular-nums; }
.report-row .r-score span { display: block; font-size: 11px; color: var(--amber-ink); font-weight: 700; }
.side-foot { text-align: center; font-size: var(--fs-cap); color: var(--ink-3); padding-top: 6px; }

/* ---------------- 响应式 ---------------- */
@media (max-width: 960px) {
  .hero-inner { grid-template-columns: 1fr; gap: var(--sp-6); padding: var(--sp-7) 0; }
  .hero-visual { height: 300px; }
  .feature-grid { grid-template-columns: repeat(2, 1fr); }
  .cem-grid, .steps, .advice-grid { grid-template-columns: 1fr; }
  .reports-layout { grid-template-columns: 1fr; }
  .reports-side { position: static; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
  .feature-grid { grid-template-columns: 1fr; }
  .score-hero { grid-template-columns: 1fr; justify-items: center; text-align: center; }
  .footer-grid { grid-template-columns: 1fr; }
  .wrap { width: calc(100% - 32px); }
}

/* ============================================================
   信任条 + 三大核心编辑式专区
   ============================================================ */
.trust-strip { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--card); }
.trust-strip .wrap { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px; padding: 22px 0; }
.trust-item { display: flex; align-items: center; gap: 12px; }
.trust-item .tic { width: 40px; height: 40px; border-radius: 11px; display: grid; place-items: center; background: var(--jade-soft); color: var(--jade); flex: none; }
.trust-item:nth-child(2) .tic { background: var(--amber-soft); color: var(--amber-ink); }
.trust-item b { display: block; font-size: 15px; font-weight: 800; }
.trust-item span { font-size: var(--fs-cap); color: var(--ink-3); }
.trust-sep { width: 1px; height: 34px; background: var(--line); }

.core { padding: var(--sp-9) 0; }
.core-inner { display: grid; grid-template-columns: 1.02fr .98fr; gap: var(--sp-8); align-items: center; }
.core-reverse .core-inner { direction: rtl; }
.core-reverse .core-inner > * { direction: ltr; }
.core-text { display: grid; gap: 18px; align-content: start; }
.core-kicker { display: inline-flex; align-items: center; gap: 8px; width: fit-content; padding: 6px 14px; border-radius: var(--r-pill); font-size: var(--fs-cap); font-weight: 800; }
.core-kicker.only { background: linear-gradient(120deg, var(--jade), var(--jade-strong)); color: #fff; box-shadow: var(--sh-sm); }
.core-kicker.survey { background: var(--amber-soft); color: var(--amber-ink); }
.core-kicker.memo { background: var(--jade-soft); color: var(--jade-ink); }
.core-text h2 { font-size: var(--fs-h1); font-weight: 800; letter-spacing: -.01em; line-height: 1.2; }
.core-text h2 .u { color: var(--jade); }
.core-lead { font-size: 17px; line-height: 1.85; color: var(--ink-2); }
.core-points { display: grid; gap: 12px; margin-top: 2px; }
.core-points li { display: grid; grid-template-columns: 22px 1fr; gap: 10px; align-items: start; }
.core-points .ck { width: 22px; height: 22px; border-radius: 50%; background: var(--jade-soft); color: var(--jade); display: grid; place-items: center; margin-top: 2px; }
.core-points b { font-weight: 700; }
.core-points p { color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.6; }
.core-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 6px; }
.core-media { position: relative; }

/* 核心1的报告预览卡 */
.rp-preview { padding: var(--sp-5); display: grid; gap: 16px; }
.rp-preview .rp-head { display: flex; align-items: center; justify-content: space-between; }
.rp-preview .rp-title { font-size: var(--fs-h3); font-weight: 800; }
.rp-preview .rp-score { display: flex; align-items: center; gap: 14px; padding: 14px; background: linear-gradient(150deg,#fff,#FBF6EC); border-radius: var(--r-md); border: 1px solid var(--line); }
.rp-ring { --v:90; width: 92px; height: 92px; border-radius: 50%; position: relative; display: grid; place-items: center; flex: none; background: conic-gradient(var(--jade) calc(var(--v)*1%), var(--jade-soft) 0); }
.rp-ring::after { content:""; position:absolute; inset:8px; border-radius:50%; background:var(--card); }
.rp-ring b { position: relative; z-index: 1; font-size: 28px; font-weight: 800; color: var(--jade-ink); }
.rp-score .rp-sc-side b { font-size: 17px; font-weight: 800; }
.rp-score .rp-sc-side p { font-size: var(--fs-cap); color: var(--ink-3); }
.rp-mini { display: grid; gap: 10px; }
.rp-mini .rp-row { display: grid; grid-template-columns: 68px 1fr auto; gap: 10px; align-items: center; font-size: var(--fs-cap); }
.rp-mini .rp-row .n { color: var(--ink-2); font-weight: 700; }
.rp-mini .rp-row .b { height: 7px; border-radius: 999px; background: var(--jade-soft); overflow: hidden; }
.rp-mini .rp-row .b i { display: block; height: 100%; background: linear-gradient(90deg,var(--jade-strong),var(--jade)); }
.rp-mini .rp-row .v { font-weight: 800; color: var(--jade-ink); font-variant-numeric: tabular-nums; }

/* 核心2 地图预览 */
.map-preview { height: 420px; overflow: hidden; position: relative; }
.map-canvas { position: absolute; inset: 0; background:
  linear-gradient(0deg, rgba(14,122,87,.05), rgba(14,122,87,.05)),
  radial-gradient(120px 120px at 30% 40%, rgba(192,134,58,.10), transparent 70%),
  repeating-linear-gradient(0deg, transparent 0 38px, rgba(46,36,20,.05) 38px 39px),
  repeating-linear-gradient(90deg, transparent 0 38px, rgba(46,36,20,.05) 38px 39px),
  linear-gradient(160deg, #EAF1EC, #F3EFE5); }
.map-canvas .road { position: absolute; background: #fff; box-shadow: 0 0 0 1px var(--line); }
.map-canvas .river { position: absolute; background: linear-gradient(90deg,#BFE0D3,#D9EBE2); border-radius: 40px; opacity: .85; }
.map-pin { position: absolute; transform: translate(-50%,-100%); display: grid; justify-items: center; gap: 3px; cursor: pointer; z-index: 2; }
.map-pin .dot { width: 16px; height: 16px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); background: var(--jade); box-shadow: var(--sh-sm); border: 2px solid #fff; }
.map-pin.is-active .dot { background: var(--amber); width: 20px; height: 20px; }
.map-pin .lbl { font-size: 11px; font-weight: 800; color: var(--ink); background: color-mix(in srgb,var(--card) 92%, transparent); padding: 2px 7px; border-radius: 999px; box-shadow: var(--sh-sm); white-space: nowrap; }
.map-legend { position: absolute; left: 16px; bottom: 16px; background: color-mix(in srgb,var(--card) 92%, transparent); backdrop-filter: blur(6px); border-radius: var(--r-md); padding: 10px 14px; box-shadow: var(--sh-md); border: 1px solid var(--line); font-size: var(--fs-cap); color: var(--ink-2); display: flex; gap: 14px; }
.map-legend b { color: var(--ink); }

/* 核心3 纪念堂预览：浅暖纸色（用户反馈深棕色太沉，改亮） */
.memo-preview { padding: var(--sp-5); display: grid; gap: 14px; background: linear-gradient(180deg, #FDFBF6, #F3EBDD); border: 1px solid var(--line); }
/* 首页纪念堂四图拼贴：真实示意图 + 底部小标签，不用假占位图 */
.memo-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.memo-tile { position: relative; margin: 0; border-radius: var(--r-md); overflow: hidden; }
.memo-tile img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.memo-tile figcaption { position: absolute; left: 8px; bottom: 8px; background: rgba(13,51,42,.78); color: #fff; font-size: 12px; font-weight: 700; line-height: 1; padding: 5px 10px; border-radius: 999px; }
.memo-portrait { display: flex; align-items: center; gap: 14px; }
.memo-portrait .avatar { width: 64px; height: 64px; border-radius: 14px; background: linear-gradient(135deg,#3B7B60,#4A8C6F); display: grid; place-items: center; color: #fff; font-weight: 800; font-size: 22px; flex: none; }
.memo-portrait .m-name { color: var(--ink); font-size: 19px; font-weight: 800; }
.memo-portrait .m-dates { color: var(--ink-3); font-size: var(--fs-cap); }
.memo-offer { display: flex; gap: 10px; }
.memo-offer button { flex: 1; display: grid; justify-items: center; gap: 4px; padding: 12px; border-radius: var(--r-md); background: rgba(255,255,255,.06); color: #E7DFD1; font-size: var(--fs-cap); font-weight: 700; transition: all .14s ease; }
.memo-offer button:hover { background: rgba(255,255,255,.12); }
.memo-offer button .cnt { color: var(--amber); font-weight: 800; }
.memo-tribute { background: rgba(255,255,255,.65); border: 1px solid var(--line); border-radius: var(--r-md); padding: 12px 14px; color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.7; }
.memo-tribute b { color: var(--ink); }

/* ============================================================
   报告页——“分析什么”解读 + 雷达 + 方法论
   ============================================================ */
.report-why { padding: var(--sp-6); display: grid; gap: var(--sp-5); }
.report-why h3 { font-size: var(--fs-h3); font-weight: 800; display: flex; align-items: center; gap: 8px; }
.report-why .lead { color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.75; max-width: 720px; }
.dim-explain { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
.dim-ex { display: grid; grid-template-columns: 40px 1fr; gap: 12px; padding: 14px; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--paper); }
.dim-ex .dic { width: 40px; height: 40px; border-radius: 11px; display: grid; place-items: center; background: var(--jade-soft); color: var(--jade); }
.dim-ex h4 { font-size: var(--fs-sm); font-weight: 800; display: flex; gap: 8px; align-items: baseline; }
.dim-ex h4 em { font-style: normal; font-size: 12px; color: var(--jade-ink); font-weight: 700; }
.dim-ex p { color: var(--ink-2); font-size: var(--fs-cap); line-height: 1.65; margin-top: 3px; }
.radar-wrap { display: grid; grid-template-columns: 300px 1fr; gap: var(--sp-6); align-items: center; padding: var(--sp-6); }
.radar-svg { width: 100%; max-width: 300px; height: auto; }
.radar-legend { display: grid; gap: 10px; }
.radar-legend .rl { display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; font-size: var(--fs-sm); }
.radar-legend .rl .nm { font-weight: 700; }
.radar-legend .rl .vv { font-weight: 800; color: var(--jade-ink); font-variant-numeric: tabular-nums; }
.radar-legend .rl .jg { font-size: var(--fs-cap); }
.report-method { display: flex; flex-wrap: wrap; gap: 10px; }
.method-chip { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: var(--r-pill); background: var(--paper-2); font-size: var(--fs-cap); font-weight: 700; color: var(--ink-2); }
.method-chip .i { color: var(--jade); }

/* ============================================================
   地图选墓页 / 家族纪念堂页
   ============================================================ */
.mapx-page { padding: var(--sp-6) 0 var(--sp-8); }
.mapx-layout { display: grid; grid-template-columns: 360px 1fr; gap: var(--sp-5); align-items: start; }
.mapx-side { display: grid; gap: var(--sp-4); padding: var(--sp-5); position: sticky; top: 88px; }
/* 地图页侧栏墓园列表序号徽章（方便用户记住看到第几个）：序号 | 名称+地址 | 报告份数（右侧）三列布局 */
.mapx-side .report-row { grid-template-columns: auto minmax(0, 1fr) auto; }
.mapx-side .report-row .rc-no { grid-column: 1; grid-row: 1 / span 2; align-self: center; min-width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; background: var(--paper-2); color: var(--jade-ink); font-size: 12px; font-weight: 800; border-radius: 8px; font-variant-numeric: tabular-nums; }
.mapx-side .report-row.is-active .rc-no { background: var(--jade); color: #fff; }
.mapx-side .report-row .r-name { grid-column: 2; }
.mapx-side .report-row .r-cem { grid-column: 2; }
.mapx-side .scroll-list { max-height: 520px; }
.mapx-side h3 { font-size: var(--fs-h3); font-weight: 800; }
.filter-group { display: grid; gap: 8px; }
.filter-group .fg-label { font-size: var(--fs-cap); color: var(--ink-3); font-weight: 700; }
.filter-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.mapx-main { display: grid; gap: var(--sp-4); }
.mapx-canvas-card { height: 540px; position: relative; overflow: hidden; }
.mapx-selected { padding: var(--sp-5); display: grid; grid-template-columns: 1fr auto; gap: 14px; align-items: center; }
.mapx-selected .ms-name { font-size: var(--fs-h3); font-weight: 800; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
/* 选中园报告引导：名称旁份数徽标 + 直达报告按钮（板块互相打通） */
.ms-rep-tag { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px; border-radius: var(--r-pill); background: var(--jade-soft); border: 1px solid rgba(14, 122, 87, .25); color: var(--jade-ink); font-size: 12px; font-weight: 800; white-space: nowrap; }
.ms-rep-tag svg { width: 13px; height: 13px; }
/* 0 份占位变体（与首页 .cem-rep-empty 同口径） */
.ms-rep-tag.ms-rep-tag-empty { background: var(--paper-2); color: var(--ink-3); border-color: var(--line); font-weight: 600; }
.ms-rep-btn.ms-rep-btn-empty { color: var(--ink-3); border-color: var(--line); background: var(--paper-2); }
.ms-rep-btn.ms-rep-btn-empty:hover { color: #fff; background: var(--ink-3); border-color: var(--ink-3); }
.ms-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.ms-rep-btn { white-space: nowrap; }
.mapx-side .report-row .rc-cnt { grid-column: 3; grid-row: 1 / span 2; align-self: center; justify-self: end; font-size: 12px; font-weight: 800; color: var(--jade-ink); background: var(--jade-soft); border-radius: var(--r-pill); padding: 3px 10px; white-space: nowrap; }
/* 侧栏 0 份报告占位：灰色 chip，与首页卡片 .cem-rep-empty 同风格 */
.mapx-side .report-row .rc-cnt.rc-cnt-empty { color: var(--ink-3); background: var(--paper-2); border: 1px solid var(--line); font-weight: 600; }
.mapx-selected .ms-meta { color: var(--ink-3); font-size: var(--fs-cap); margin-top: 4px; }
.mapx-selected .ms-tags { display: flex; gap: 6px; margin-top: 8px; flex-wrap: wrap; }

.memx-page { padding: 0 0 var(--sp-8); }
.memx-hero { background: linear-gradient(180deg,#212F29,#2A2420); color: #EDE6D8; }
.memx-hero .wrap { padding: var(--sp-8) 0; display: grid; gap: 16px; justify-items: center; text-align: center; }
.memx-hero h1 { font-size: var(--fs-h1); font-weight: 800; color: #fff; }
.memx-hero p { color: #B8AE9C; max-width: 600px; line-height: 1.8; }
.memx-hall { margin-top: calc(var(--sp-8) * -1); }
.memx-card { padding: var(--sp-6); display: grid; grid-template-columns: 280px 1fr; gap: var(--sp-6); }
.memx-figure { display: grid; gap: 14px; justify-items: center; text-align: center; padding: var(--sp-5); background: var(--paper-2); border-radius: var(--r-md); }
.memx-figure .avatar { width: 120px; height: 120px; border-radius: 20px; background: linear-gradient(135deg,#3B7B60,#4A8C6F); display: grid; place-items: center; color: #fff; font-size: 40px; font-weight: 800; }
.memx-figure h2 { font-size: var(--fs-h3); font-weight: 800; }
.memx-figure .dates { color: var(--ink-3); font-size: var(--fs-cap); }
.memx-offerings { display: flex; gap: 10px; }
.memx-offerings button { flex: 1; display: grid; justify-items: center; gap: 5px; padding: 12px 8px; border-radius: var(--r-md); background: var(--card); border: 1px solid var(--line); font-size: var(--fs-cap); font-weight: 700; transition: all .14s ease; }
.memx-offerings button:hover { border-color: var(--jade); color: var(--jade-ink); transform: translateY(-2px); }
.memx-offerings .cnt { color: var(--amber-ink); font-weight: 800; }
.memx-detail { display: grid; gap: var(--sp-5); align-content: start; }
.memx-detail h3 { font-size: var(--fs-h3); font-weight: 800; display: flex; align-items: center; gap: 8px; }
.timeline { display: grid; gap: 0; }
.tl-item { display: grid; grid-template-columns: 88px 1fr; gap: 14px; padding-bottom: 18px; position: relative; }
.tl-item::before { content:""; position: absolute; left: 96px; top: 8px; bottom: -6px; width: 2px; background: var(--line); }
.tl-item:last-child::before { display: none; }
.tl-year { font-weight: 800; color: var(--jade-ink); font-size: var(--fs-sm); text-align: right; }
.tl-body { position: relative; padding-left: 22px; }
.tl-body::before { content:""; position: absolute; left: -3px; top: 6px; width: 12px; height: 12px; border-radius: 50%; background: var(--jade); border: 2px solid var(--card); }
.tl-body p { color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.6; }
.tributes { display: grid; gap: 10px; }
.tribute { padding: 14px 16px; background: var(--paper-2); border-radius: var(--r-md); }
.tribute .who { font-weight: 800; font-size: var(--fs-sm); }
.tribute .who span { color: var(--ink-3); font-weight: 500; font-size: var(--fs-cap); margin-left: 8px; }
.tribute p { color: var(--ink-2); font-size: var(--fs-sm); margin-top: 5px; line-height: 1.7; }

/* ============================================================
   家属评价 + FAQ
   ============================================================ */
.quotes { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-4); }
.quote-card { padding: var(--sp-5); display: grid; gap: 14px; }
.quote-card .qmark { color: var(--amber); font-size: 34px; font-weight: 800; line-height: .6; height: 20px; }
.quote-card p { color: var(--ink); font-size: var(--fs-sm); line-height: 1.8; }
.quote-who { display: flex; align-items: center; gap: 10px; margin-top: 2px; }
.quote-who .qa { width: 38px; height: 38px; border-radius: 50%; background: var(--jade-soft); color: var(--jade-ink); display: grid; place-items: center; font-weight: 800; }
.quote-who b { font-size: var(--fs-sm); }
.quote-who span { display: block; font-size: var(--fs-cap); color: var(--ink-3); }
.faq { max-width: 820px; margin: 0 auto; display: grid; gap: 12px; }
.faq details { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); padding: 4px 20px; box-shadow: var(--sh-sm); }
.faq summary { list-style: none; cursor: pointer; padding: 16px 0; font-weight: 700; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary .fq-ic { color: var(--jade); transition: transform .18s ease; flex: none; }
.faq details[open] summary .fq-ic { transform: rotate(90deg); }
.faq details p { color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.8; padding: 0 0 18px; }

@media (max-width: 960px) {
  .core-inner { grid-template-columns: 1fr; gap: var(--sp-6); }
  .core-reverse .core-inner { direction: ltr; }
  .dim-explain { grid-template-columns: 1fr; }
  .radar-wrap { grid-template-columns: 1fr; justify-items: center; }
  .mapx-layout { grid-template-columns: 1fr; }
  .mapx-side { position: static; }
  .mapx-main { order: -1; }
  .mapx-canvas-card { height: 400px; }
  .memx-card { grid-template-columns: 1fr; }
  .quotes { grid-template-columns: 1fr; }
  .trust-sep { display: none; }
}

/* 骨架屏 + 墓园角标 */
.skl { border-radius: var(--r-lg); background: linear-gradient(100deg, var(--paper-2) 30%, #EFE7D8 50%, var(--paper-2) 70%); background-size: 200% 100%; animation: skl 1.2s ease-in-out infinite; }
/* B23：统一空状态组件 */
.empty-state { max-width: 480px; margin: 48px auto; text-align: center; padding: 48px 28px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); }
.empty-state > svg { width: 52px; height: 52px; color: var(--jade); opacity: .7; margin-bottom: 16px; }
.empty-state h3 { font-size: 18px; font-weight: 800; color: var(--ink); margin-bottom: 8px; }
.empty-state p { font-size: 14px; color: var(--ink-2); line-height: 1.7; margin-bottom: 20px; }
.empty-state .btn { margin: 0 auto; }
/* B11：筛选栏 */
.filter-bar { display: grid; gap: 14px; padding: 18px 20px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); margin-bottom: var(--sp-5); }
.filter-group { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.filter-group > label { font-size: 13px; font-weight: 700; color: var(--ink-2); min-width: 36px; flex: none; }
.filter-bar .chip { font-size: 12px; padding: 5px 12px; }
.load-more-wrap { text-align: center; margin-top: var(--sp-6); }
.load-all-hint { text-align: center; color: var(--ink-3); font-size: 13px; margin-top: var(--sp-5); }
@media (max-width: 768px) {
  .filter-bar { padding: 14px 12px; gap: 10px; }
  .filter-group { gap: 8px; }
  .filter-bar .chip { font-size: 11px; padding: 4px 9px; }
}
/* B14：合作推广页 */
.partner-hero { background: linear-gradient(135deg, var(--ink) 0%, #1a3a2a 100%); padding: 80px 0 64px; text-align: center; color: #fff; }
.partner-hero h1 { font-size: clamp(28px, 4vw, 42px); font-weight: 800; margin: 16px 0 12px; }
.partner-hero p { font-size: 17px; color: rgba(255,255,255,.85); max-width: 560px; margin: 0 auto 24px; line-height: 1.7; }
.partner-actions { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
.partner-modes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-bottom: 48px; }
.partner-mode { padding: 28px 22px; text-align: center; }
.partner-mode h3 { font-size: 18px; font-weight: 800; margin: 14px 0 8px; }
.partner-mode p { font-size: 14px; color: var(--ink-2); line-height: 1.7; margin-bottom: 14px; }
.partner-mode ul { list-style: none; padding: 0; text-align: left; }
.partner-mode li { padding: 5px 0 5px 18px; position: relative; font-size: 13px; color: var(--ink-2); }
.partner-mode li::before { content: '✓'; position: absolute; left: 0; color: var(--jade); font-weight: 700; }
.pm-icon { width: 52px; height: 52px; border-radius: 14px; background: var(--jade-soft); display: grid; place-items: center; margin: 0 auto; }
.pm-icon svg { width: 26px; height: 26px; color: var(--jade); }
.pm-highlight { border-color: var(--jade); box-shadow: 0 4px 20px rgba(14,122,87,.12); }
.partner-cta { text-align: center; padding: 40px 0; }
.partner-cta h2 { font-size: 24px; font-weight: 800; margin-bottom: 8px; }
.partner-cta p { color: var(--ink-2); margin-bottom: 20px; }
@media (max-width: 900px) { .partner-modes { grid-template-columns: 1fr; } .partner-hero { padding: 56px 0 44px; } }
@keyframes skl { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
.cem-badge { position: absolute; top: 12px; left: 12px; display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px; border-radius: var(--r-pill); background: color-mix(in srgb, var(--card) 90%, transparent); color: var(--jade-ink); font-size: var(--fs-cap); font-weight: 700; box-shadow: var(--sh-sm); }
.cem-badge .i { width: 15px; height: 15px; }

/* 真实 logo + 天地图 Leaflet */
.brand-logo { width: 36px; height: 36px; border-radius: 9px; object-fit: contain; background: var(--card); box-shadow: var(--sh-sm); }
.footer-brand .brand-logo { background: transparent; box-shadow: none; }
.leaflet-mount { position: absolute; inset: 0; z-index: 0; }
.map-preview .map-legend, .mapx-canvas-card .map-legend { z-index: 2; }
.leaflet-container { font: inherit; background: var(--paper-2); }
.leaflet-container a { color: var(--jade-ink); }
.muyi-pin .mk { display: block; width: 16px; height: 16px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); background: var(--jade); border: 2px solid #fff; box-shadow: var(--sh-sm); cursor: pointer; }
/* 移动端地图标记加大触摸区 */
.muyi-pin::before { content: ''; position: absolute; inset: -12px; z-index: -1; }
.muyi-pin.is-active .mk { background: var(--amber); width: 20px; height: 20px; box-shadow: 0 0 0 4px rgba(192,134,58,.25), var(--sh-sm); }

/* 城市选择器 + 列表固定高度滚动 + 图层切换 */
.city-picker { display: grid; gap: 8px; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.city-select-wrap { position: relative; display: flex; align-items: center; }
.city-select-wrap > .i:first-child { position: absolute; left: 14px; color: var(--jade); pointer-events: none; }
.city-select-wrap .city-caret { position: absolute; right: 12px; color: var(--ink-3); pointer-events: none; }
.city-select { width: 100%; min-height: var(--touch); padding: 0 38px 0 42px; border-radius: var(--r-pill); border: 1px solid var(--line-2); background: var(--paper); font: inherit; font-size: var(--fs-sm); font-weight: 700; color: var(--ink); appearance: none; -webkit-appearance: none; cursor: pointer; }
.city-select:focus-visible { outline: none; border-color: var(--jade); box-shadow: 0 0 0 3px var(--jade-soft); }
.scroll-list { max-height: 300px; overflow-y: auto; padding-right: 4px; }
.scroll-list::-webkit-scrollbar { width: 8px; }
.scroll-list::-webkit-scrollbar-thumb { background: var(--line-2); border-radius: 999px; }
.map-layer-toggle { position: absolute; top: 14px; right: 14px; z-index: 3; display: inline-flex; padding: 4px; gap: 4px; background: color-mix(in srgb, var(--card) 92%, transparent); backdrop-filter: blur(6px); border-radius: var(--r-pill); box-shadow: var(--sh-md); border: 1px solid var(--line); }
.map-layer-toggle button { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border-radius: var(--r-pill); font-size: var(--fs-cap); font-weight: 700; color: var(--ink-2); }
.map-layer-toggle button .i { width: 15px; height: 15px; }
.map-layer-toggle button.is-active { background: var(--jade); color: #fff; box-shadow: var(--sh-sm); }

/* ============================================================
   墓园卡真实封面 + 墓园详情页（采集内容）
   ============================================================ */
.cem-cover.has-img { background-size: cover; background-position: center; transition: transform .3s cubic-bezier(.4,0,.2,1); }
/* B21：封面 img 标签填充容器 */
.cem-cover.has-img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cem-cover.has-img::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.02), rgba(0,0,0,.18)); }
.cem-cover .cem-badge { z-index: 1; }
.cem-cover:not(.has-img)::after { content: ""; position: absolute; left: 50%; top: 50%; width: 52px; height: 52px; transform: translate(-50%, -50%); border-radius: 50%; background: radial-gradient(circle, rgba(47,107,84,.20) 0 32%, transparent 44%); box-shadow: 0 0 0 9px rgba(47,107,84,.06); }

.cd-page { padding: var(--sp-5) 0 var(--sp-8); }
.cd-crumb { margin-bottom: var(--sp-4); }
.cd-crumb a { display: inline-flex; align-items: center; gap: 4px; color: var(--jade-ink); font-weight: 700; font-size: var(--fs-sm); }
.cd-crumb a svg { width: 16px; height: 16px; transform: rotate(180deg); }
.cd-hero { padding: var(--sp-6); display: grid; gap: 12px; }
.cd-badges { display: flex; flex-wrap: wrap; gap: 8px; }
.cd-hero h1 { font-size: var(--fs-h1); font-weight: 800; letter-spacing: -.01em; }
.cd-addr, .cd-coord { display: flex; align-items: center; gap: 8px; color: var(--ink-2); font-size: var(--fs-sm); }
.cd-addr svg, .cd-coord svg { width: 18px; height: 18px; color: var(--jade); flex: none; }
.cd-coord { color: var(--ink-3); font-variant-numeric: tabular-nums; }
.cd-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 6px; }
/* B12：决策事实条 + 上一个/下一个 */
.cd-facts { display: flex; flex-wrap: wrap; gap: 10px 18px; margin: 12px 0 4px; padding: 12px 16px; background: var(--paper-2); border-radius: var(--r-md); }
.cd-fact { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--ink-2); }
.cd-fact svg { width: 15px; height: 15px; color: var(--jade); flex: none; }
.cd-fact b { font-weight: 700; color: var(--ink); }
.cd-prevnext { display: flex; justify-content: space-between; gap: 12px; margin-top: var(--sp-7); padding-top: var(--sp-5); border-top: 1px solid var(--line); }
.cd-prevnext .btn { font-size: 13px; max-width: 48%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 同城其他墓园推荐卡片 */
.cd-nearby { margin-top: var(--sp-6); }
/* C89 GEO 新增：同城墓园轮播口导语 */
.cd-nearby-intro { margin: 0 0 12px; color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.6; }
.cd-nearby-intro b { color: var(--ink); font-weight: 700; }
.cd-nearby-arrow { color: var(--jade); font-weight: 700; margin-left: 4px; }
/* C89 GEO 新增：城市页公众号短文链接（开后内链） */
.cd-city-guide-link { display: inline-flex; align-items: center; gap: 6px; margin-top: 18px; padding: 10px 16px; border-radius: var(--r-pill); background: var(--paper-2); color: var(--jade-ink); font-size: var(--fs-sm); font-weight: 600; text-decoration: none; border: 1px solid var(--line-2); transition: all .12s; }
.cd-city-guide-link:hover { background: var(--jade); color: #fff; border-color: var(--jade); }
.cd-city-guide-link:hover .cd-nearby-arrow { color: #fff; }
.cd-nearby h3 { font-size: var(--fs-h3); font-weight: 800; display: flex; align-items: center; gap: 8px; margin-bottom: 16px; }
.cd-nearby h3 svg { width: 20px; height: 20px; color: var(--jade); }
.cd-nearby-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-4); }
.cd-nearby-card { display: grid; gap: 10px; padding: 0; overflow: hidden; text-decoration: none; color: inherit; transition: transform .15s, box-shadow .15s; }
.cd-nearby-card:hover { transform: translateY(-3px); box-shadow: var(--sh-md); }
.cd-nearby-img { height: 140px; background: var(--paper-2) center/cover no-repeat; }
.cd-nearby-card strong { padding: 0 14px; font-size: 15px; font-weight: 800; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cd-nearby-card span { padding: 0 14px 14px; font-size: var(--fs-cap); color: var(--ink-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* 同城其他墓园 —— 横向轮播（自动 slide + 手动 ‹ ›） */
.cd-nearby-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.cd-nearby-head h3 { margin-bottom: 0; }
.cd-nearby-ctrl { display: inline-flex; gap: 8px; }
.cd-nearby-btn { width: 34px; height: 34px; border-radius: 50%; background: var(--paper-2); border: 1px solid var(--line); color: var(--jade-ink); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; transition: all .15s; }
.cd-nearby-btn:hover { background: var(--jade-soft); border-color: var(--jade); color: var(--jade-strong); }
.cd-nearby-btn svg { width: 16px; height: 16px; }
.cd-nearby-btn[data-nearby-prev] svg { transform: rotate(180deg); }
.cd-nearby-viewport { overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scroll-behavior: smooth; -webkit-overflow-scrolling: touch; padding-bottom: 4px; scrollbar-width: none; }
.cd-nearby-viewport::-webkit-scrollbar { display: none; }
.cd-nearby-track { display: flex; gap: var(--sp-4); }
.cd-nearby-track > .cd-nearby-card { flex: 0 0 calc((100% - var(--sp-4) * 2) / 3); scroll-snap-align: start; }
@media (max-width: 960px) {
  .cd-nearby-track > .cd-nearby-card { flex: 0 0 calc((100% - var(--sp-4)) / 2); }
}
@media (max-width: 560px) {
  .cd-nearby-track > .cd-nearby-card { flex: 0 0 88%; }
}
@media (max-width: 768px) {
  .cd-facts { gap: 8px 12px; padding: 10px 12px; overflow-x: auto; flex-wrap: nowrap; }
  .cd-prevnext { flex-direction: column; }
  .cd-prevnext .btn { max-width: 100%; }
  .cd-nearby-grid { grid-template-columns: 1fr; }
}

.cd-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-3); margin: var(--sp-5) 0; }
.cd-shot { position: relative; height: 200px; border-radius: var(--r-md); background: var(--paper-2) center/cover no-repeat; box-shadow: var(--sh-sm); border: 1px solid var(--line); overflow: hidden; margin: 0; }
.cd-shot figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 8px 12px; font-size: var(--fs-cap); color: #fff; background: linear-gradient(180deg, transparent, rgba(0,0,0,.62)); }
.cd-gallery-empty { display: flex; align-items: center; gap: 10px; margin: var(--sp-5) 0; padding: var(--sp-5); border: 1px dashed var(--line-2); border-radius: var(--r-md); background: var(--paper-2); color: var(--ink-3); font-size: var(--fs-sm); }
.cd-gallery-empty svg { color: var(--ink-3); flex: none; }

.cd-body { display: grid; gap: var(--sp-5); align-items: start; }
.cd-col { display: grid; gap: var(--sp-5); align-content: start; }
/* 墓园详情两层栅格：上一行 4 张“快看卡片”（简介/环境/适用人群/参考价），下一行 2 个“长详情卡片”（葬式产品/交通指引）。
   两层内部同行卡片高度自动对齐，不再交叉拉长。 */
.cd-quickfacts { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--sp-4); align-items: stretch; }
.cd-quickfacts > .cd-block { padding: 16px 18px 18px; height: 100%; }
.cd-quickfacts > .cd-block h3 { font-size: 15px; margin-bottom: 8px; }
.cd-quickfacts > .cd-block p, .cd-quickfacts > .cd-block .cd-md-list { font-size: 13px; line-height: 1.75; }
.cd-quickfacts > .cd-block .cd-price-val { font-size: 18px; }
.cd-longbody { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-5); align-items: stretch; }
.cd-longbody > .cd-block { height: 100%; }
@media (max-width: 960px) {
  .cd-quickfacts { grid-template-columns: repeat(2, 1fr); }
  .cd-longbody { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .cd-quickfacts { grid-template-columns: 1fr; }
}
.cd-block { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); padding: var(--sp-5) var(--sp-5) calc(var(--sp-5) + 4px); box-shadow: var(--sh-sm); }
.cd-block h3 { font-size: var(--fs-h3); font-weight: 800; display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.cd-block h3 svg { width: 20px; height: 20px; color: var(--jade); }
.cd-block p { color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.85; }
.cd-empty { color: var(--ink-3); }
.cd-price-val { display: block; font-size: 22px; font-weight: 800; color: var(--jade-ink); margin-bottom: 6px; }
.cd-note { color: var(--ink-3); font-size: var(--fs-cap); line-height: 1.7; }
.cd-body + .cd-block, .cd-block + .cd-block { margin-top: var(--sp-5); }
/* 栅格内部的卡片由 grid gap 控制间距，必须清零上面那条“适相邻卡片”的 margin-top——
   否则 quickfacts / longbody 里的第 2/3/4 张卡片会多听 24px 上外边距，导致卡内高度被压缩 24px，四张卡参差不齐。*/
.cd-quickfacts > .cd-block + .cd-block, .cd-longbody > .cd-block + .cd-block { margin-top: 0; }
.cd-mini { height: 320px; position: relative; overflow: hidden; padding: 0; margin-top: 12px; }
.cd-source { margin-top: var(--sp-5); color: var(--ink-3); font-size: var(--fs-cap); }

/* 墓园详情 renderMd 输出的默认元素样式（cdField 里的表格/列表/引用）——避免把 markdown 源码直接吐给用户 */
.cd-block p, .cd-block ul, .cd-block ol, .cd-block blockquote, .cd-block table { margin: 0 0 10px; }
.cd-block p:last-child, .cd-block ul:last-child, .cd-block ol:last-child, .cd-block blockquote:last-child, .cd-block table:last-child { margin-bottom: 0; }
.cd-md-list { list-style: none; padding: 0; display: grid; gap: 8px; }
.cd-md-list > li { position: relative; padding-left: 20px; line-height: 1.85; color: var(--ink-2); font-size: var(--fs-sm); }
.cd-md-list > li::before { content: ''; position: absolute; left: 4px; top: 12px; width: 6px; height: 6px; border-radius: 50%; background: var(--jade); }
.cd-md-list > li strong { color: var(--ink); font-weight: 800; margin-right: 4px; }
.cd-md-num { list-style: none; padding: 0; counter-reset: cdmd; display: grid; gap: 8px; }
.cd-md-num > li { counter-increment: cdmd; position: relative; padding-left: 32px; line-height: 1.85; color: var(--ink-2); font-size: var(--fs-sm); }
.cd-md-num > li::before { content: counter(cdmd); position: absolute; left: 0; top: 2px; width: 22px; height: 22px; display: inline-flex; align-items: center; justify-content: center; background: var(--jade-soft); color: var(--jade-ink); font-size: 12px; font-weight: 800; border-radius: 50%; font-variant-numeric: tabular-nums; }
.cd-md-substeps { list-style: none; padding: 0; margin-top: 6px; display: grid; gap: 6px; counter-reset: cdsub; }
.cd-md-substeps > li { counter-increment: cdsub; position: relative; padding: 8px 12px 8px 34px; background: var(--paper-2); border-radius: 8px; font-size: 13px; line-height: 1.7; color: var(--ink-2); }
.cd-md-substeps > li::before { content: counter(cdsub); position: absolute; left: 8px; top: 8px; width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center; background: var(--jade); color: #fff; font-size: 11px; font-weight: 800; border-radius: 50%; }
.cd-md-substeps > li strong { color: var(--ink); font-weight: 800; margin-right: 4px; }
.cd-md-tablewrap { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--r-md); }
.cd-md-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.cd-md-table th { text-align: left; padding: 10px 12px; background: var(--paper-2); color: var(--ink); font-weight: 800; border-bottom: 1px solid var(--line); font-size: 12px; white-space: nowrap; }
.cd-md-table td { padding: 10px 12px; border-bottom: 1px solid var(--line); color: var(--ink-2); vertical-align: top; line-height: 1.7; }
.cd-md-table tr:last-child td { border-bottom: 0; }
.cd-md-table tr:hover td { background: var(--jade-soft); }
.cd-md-table td:nth-child(1) { font-weight: 700; color: var(--ink); white-space: nowrap; }
.cd-md-table td:nth-child(3) { color: var(--amber-ink); font-weight: 700; white-space: nowrap; font-variant-numeric: tabular-nums; }
.cd-md-quote { margin: 8px 0; padding: 8px 12px 8px 14px; background: var(--paper-2); border-left: 3px solid var(--jade); border-radius: 4px; color: var(--ink-3); font-size: 12px; line-height: 1.75; font-style: normal; }
@media (max-width: 640px) {
  /* 手机上表格改为卡片式（适窄屏） */
  .cd-md-tablewrap { border: 0; }
  .cd-md-table thead { display: none; }
  .cd-md-table tr { display: block; margin-bottom: 10px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); padding: 8px 12px; }
  .cd-md-table tr:hover td { background: transparent; }
  .cd-md-table td { display: block; border: 0; padding: 4px 0; }
  .cd-md-table td::before { content: attr(data-th) ' ：'; display: inline; margin-right: 6px; color: var(--ink-3); font-size: 12px; font-weight: 600; }
  .cd-md-table td:nth-child(1)::before { display: none; }
  .cd-md-table td:nth-child(1) { font-size: 15px; padding-bottom: 6px; margin-bottom: 4px; border-bottom: 1px dashed var(--line); }
}

/* 城市落地页 /city/<slug> 专用：4 维决策与墓园卡片，重点满足 GEO 引用需求（结构化实体属性） */
.cd-city-hint { color: var(--ink-3); font-size: var(--fs-cap); line-height: 1.75; margin-bottom: 12px; }
.cd-decide-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; margin-top: 12px; }
.cd-decide-item { background: var(--paper-2); border: 1px solid var(--line); border-radius: var(--r-md); padding: 14px 16px; }
.cd-decide-item b { display: block; font-size: 15px; font-weight: 800; color: var(--jade-ink); margin-bottom: 6px; }
.cd-decide-item p { color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.75; margin: 0; }
.cd-city-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
.cd-city-card { display: grid; gap: 6px; padding: 14px 16px 16px; border-radius: var(--r-md); border: 1px solid var(--line); background: var(--card); transition: all .14s ease; text-align: left; }
.cd-city-card:hover { border-color: var(--jade); transform: translateY(-2px); box-shadow: var(--sh-sm); }
.cd-city-card-h { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.cd-city-card-h b { font-size: 16px; font-weight: 800; color: var(--ink); }
.cd-city-region { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 700; color: var(--jade-ink); background: var(--jade-soft); padding: 3px 9px; border-radius: var(--r-pill); }
.cd-city-region svg { width: 13px; height: 13px; }
.cd-city-price { font-size: 13px; color: var(--ink-2); }
.cd-city-price b { font-weight: 800; color: var(--amber-ink); }
.cd-city-tag { font-size: 13px; color: var(--ink-2); line-height: 1.7; margin: 4px 0 6px; }
.cd-city-location { font-size: 12px; color: var(--ink-3); display: flex; align-items: center; gap: 4px; }
.cd-city-location svg { width: 12px; height: 12px; }
.cd-city-more { margin-top: 8px; font-size: 13px; font-weight: 700; color: var(--jade); display: inline-flex; align-items: center; gap: 2px; }
.cd-city-more svg { width: 14px; height: 14px; }
.cd-city-faq { display: grid; gap: 10px; }
.cd-city-cta { text-align: center; padding: var(--sp-6) var(--sp-5); background: linear-gradient(180deg, var(--jade-soft), var(--card)); }
.cd-city-cta h2 { font-size: var(--fs-h3); font-weight: 800; margin-bottom: 8px; }
.cd-city-cta p { color: var(--ink-2); max-width: 720px; margin: 0 auto 16px; }
.cd-city-rules { margin-top: var(--sp-5); color: var(--ink-3); font-size: 12px; line-height: 1.9; }
@media (max-width: 960px) {
  .cd-decide-grid, .cd-city-grid { grid-template-columns: 1fr; }
}

@media (max-width: 960px) {
  .cd-gallery { grid-template-columns: repeat(2, 1fr); }
  .cd-body { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .cd-gallery { grid-template-columns: 1fr; }
}

/* ============================================================
   图片放大查看器 lightbox + 报告页增强
   ============================================================ */
.cd-shot { cursor: zoom-in; }
.cd-zoom { position: absolute; top: 10px; right: 10px; width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center; background: color-mix(in srgb, var(--card) 82%, transparent); color: var(--jade-ink); opacity: 0; transform: scale(.9); transition: all .16s ease; box-shadow: var(--sh-sm); z-index: 1; }
.cd-zoom .i { width: 16px; height: 16px; }
.cd-shot:hover .cd-zoom, .cd-shot:focus-visible .cd-zoom { opacity: 1; transform: scale(1); }

.lightbox { position: fixed; inset: 0; z-index: var(--z-modal); display: none; align-items: center; justify-content: center; padding: 32px; background: rgba(20,15,8,.88); backdrop-filter: blur(4px); }
.lightbox.is-open { display: flex; }
.lb-figure { margin: 0; max-width: min(1100px, 92vw); max-height: 86vh; display: grid; gap: 10px; justify-items: center; }
.lb-img { max-width: 100%; max-height: 78vh; border-radius: var(--r-md); box-shadow: var(--sh-lg); object-fit: contain; background: #111; }
.lb-cap { color: #F0E9DB; font-size: var(--fs-sm); text-align: center; max-width: 80ch; }
.lb-count { position: absolute; top: 20px; left: 24px; color: #E7DFD1; font-size: var(--fs-cap); font-weight: 700; letter-spacing: .05em; }
.lb-close { position: absolute; top: 14px; right: 18px; width: 44px; height: 44px; border-radius: 50%; color: #fff; font-size: 26px; line-height: 1; background: rgba(255,255,255,.12); }
.lb-close:hover { background: rgba(255,255,255,.24); }
.lb-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 52px; height: 52px; border-radius: 50%; color: #fff; font-size: 30px; line-height: 1; background: rgba(255,255,255,.12); display: grid; place-items: center; }
.lb-nav:hover { background: rgba(255,255,255,.24); }
.lb-prev { left: 20px; }
.lb-next { right: 20px; }
@media (max-width: 560px) { .lightbox { padding: 14px; } .lb-nav { width: 44px; height: 44px; } .lb-prev { left: 8px; } .lb-next { right: 8px; } .lb-count { top: 14px; left: 14px; } }

.score-side .grade { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.score-comp { display: grid; gap: 12px; margin-top: 4px; }
.sp-item { display: grid; grid-template-columns: 84px auto; gap: 4px 12px; align-items: center; }
.sp-item .sp-k { font-size: var(--fs-sm); font-weight: 700; color: var(--ink-2); }
.sp-item .sp-v { font-size: 17px; font-weight: 800; color: var(--jade-ink); font-variant-numeric: tabular-nums; text-align: right; }
.sp-item .sp-v em { font-size: 12px; color: var(--ink-3); font-style: normal; font-weight: 600; margin-left: 1px; }
.sp-item .sp-bar { grid-column: 1 / -1; height: 8px; border-radius: 999px; background: var(--jade-soft); overflow: hidden; }
.sp-item .sp-bar i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--jade-strong), var(--jade)); }
.sp-item.sp-na { grid-template-columns: 84px 1fr; }
.sp-item.sp-na .sp-note { font-size: var(--fs-cap); color: var(--ink-3); text-align: right; }
.report-note { padding: var(--sp-6); }
.report-note h3, .report-loc h3, .report-method h3 { font-size: var(--fs-h3); font-weight: 800; display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.report-note h3 svg, .report-loc h3 svg, .report-method h3 svg { width: 20px; height: 20px; color: var(--jade); }
.report-note p { color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.85; }
.report-loc { padding: var(--sp-6); display: grid; gap: 12px; }
.report-map { position: relative; height: 300px; border-radius: var(--r-md); overflow: hidden; border: 1px solid var(--line); }
.report-coord { color: var(--ink-3); font-size: var(--fs-cap); display: flex; align-items: center; gap: 6px; }
.report-coord svg { width: 16px; height: 16px; color: var(--jade); }
.report-method { padding: var(--sp-6); display: grid; gap: 14px; }
.report-method-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.report-method-note { color: var(--ink-3); font-size: var(--fs-cap); line-height: 1.7; }
.chip-soon { opacity: .72; }

@media (max-width: 960px) {
  .rp-panel { order: -1; }
  /* 报告列表：单列完整卡片（横滑露半卡在手机上像截断，已废弃），报告多靠“加载更多”分页 */
  .rp-panel .report-rows { grid-template-columns: 1fr; gap: 8px; }
  .rp-cem-grid { grid-template-columns: 1fr; max-height: 248px; }
  .report-map { height: 240px; }
  .rp-ptmap { height: clamp(300px, 44vh, 420px); }
}

/* ============================================================
   报告页手机套壳（活报告）+ 扫码 + 按墓园选
   ============================================================ */
.reports-stage-layout { display: grid; grid-template-columns: 360px minmax(0,1fr); gap: var(--sp-6); align-items: start; }
.report-stage { display: grid; grid-template-columns: 1fr; gap: 16px; justify-items: center; position: sticky; top: 88px; }
/* 右侧全宽搜索面板 */
.rp-panel { display: grid; gap: 20px; }
.rp-searchbar { position: relative; }
.rp-searchbar svg { position: absolute; left: 18px; top: 50%; transform: translateY(-50%); width: 20px; height: 20px; color: var(--ink-3); }
.rp-searchbar input { width: 100%; min-height: 52px; padding: 0 18px 0 50px; border-radius: var(--r-lg); border: 1.5px solid var(--line-2); background: var(--card); font: inherit; font-size: 16px; color: var(--ink); box-shadow: var(--sh-sm); }
.rp-searchbar input:focus-visible { outline: none; border-color: var(--jade); box-shadow: 0 0 0 3px var(--jade-soft); }
/* 报告页 rp-filters 同行三个控件统一规格：36px 高、pill 形、font-size 13px。
   之前评分 chip 34px / 排序 button 38px / 搜索 36px，各自一套 padding 高矮不一——强制拉齐。*/
.rp-searchbar.rp-searchbar-inline { margin-left: auto; flex: 0 1 240px; min-width: 180px; }
.rp-searchbar.rp-searchbar-inline svg { left: 12px; width: 16px; height: 16px; }
.rp-searchbar.rp-searchbar-inline input { height: 36px; min-height: 36px; padding: 0 12px 0 34px; font-size: 13px; border-radius: var(--r-pill); border: 1px solid var(--line); box-shadow: none; }
@media (max-width: 640px) {
  .rp-searchbar.rp-searchbar-inline { flex-basis: 100%; margin-left: 0; }
}
.rp-filters { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
.rp-filter-group { display: flex; align-items: center; gap: 10px; }
.rp-flabel { font-size: 13px; font-weight: 800; color: var(--ink-2); white-space: nowrap; }
/* 评分 chip 固定 36px 高 */
.rp-chip { height: 36px; min-height: 36px; padding: 0 14px; font-size: 13px; box-sizing: border-box; }
/* 排序 segment 外壳 padding 3px + 内部 button 30px = 总 36px，与 chip 对齐 */
.rp-seg { padding: 3px; }
.rp-seg button { height: 30px; min-height: 30px; padding: 0 14px; font-size: 13px; box-sizing: border-box; }
.rp-section { display: grid; gap: 12px; }
.rp-sec-h { display: flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 800; color: var(--ink); padding-bottom: 10px; border-bottom: 1px solid var(--line); }
.rp-sec-h .rp-sec-title { flex: 1; min-width: 0; }
.rp-sec-h .rep-side-cnt { flex: none; white-space: nowrap; }
.rp-sec-h svg { width: 18px; height: 18px; color: var(--jade); }
/* 墓园选择器：3列紧凑 + 固定高度滚动（50个园也不撑页），带序号徽章 */
.rp-cem-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; max-height: 296px; overflow-y: auto; padding-right: 4px; }
.rep-cem .rc-no { flex: none; min-width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center; background: var(--paper-2); color: var(--jade-ink); font-size: 12px; font-weight: 800; border-radius: 8px; font-variant-numeric: tabular-nums; }
.rep-cem.is-active .rc-no { background: var(--jade); color: #fff; }
.rep-cem .rc-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.phone-frame { width: 320px; max-width: 100%; margin: 0 auto; background: #17120d; border-radius: 42px; padding: 12px; box-shadow: var(--sh-lg); position: relative; border: 1px solid #0b0806; }
.phone-notch { position: absolute; top: 14px; left: 50%; transform: translateX(-50%); width: 118px; height: 22px; background: #0b0806; border-radius: 0 0 14px 14px; z-index: 3; }
.phone-screen { position: relative; background: var(--paper); border-radius: 32px; overflow: hidden; height: 616px; display: flex; flex-direction: column; }
.phone-empty { align-items: center; justify-content: center; text-align: center; padding: 30px; }
.phone-empty > div { display: grid; gap: 8px; justify-items: center; color: var(--ink-3); }
.phone-empty svg { width: 34px; height: 34px; color: var(--line-2); }
.phone-empty p { font-weight: 700; color: var(--ink-2); }
.phone-empty span { font-size: var(--fs-cap); }
.pr-top { display: flex; align-items: center; gap: 8px; padding: 26px 16px 12px; border-bottom: 1px solid var(--line); background: var(--card); }
.pr-logo { width: 24px; height: 24px; border-radius: 6px; }
.pr-brand { font-weight: 800; font-size: 14px; }
.pr-demo { margin-left: auto; font-size: 11px; font-weight: 700; color: var(--amber-ink); background: var(--amber-soft); padding: 2px 8px; border-radius: 999px; }
.pr-scroll { flex: 1; overflow-y: auto; padding: 16px; display: grid; gap: 14px; align-content: start; }
.pr-title { font-size: 18px; font-weight: 800; line-height: 1.3; }
.pr-sub { font-size: 12px; color: var(--ink-3); margin-top: -8px; }
.pr-score { display: flex; align-items: center; gap: 16px; }
.pr-grade { display: grid; gap: 8px; }
.pr-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.pchip { font-size: 12px; font-weight: 700; color: var(--ink-2); background: var(--paper-2); border-radius: 999px; padding: 4px 10px; }
.pchip b { color: var(--jade-ink); margin-left: 4px; }
.pr-dims { display: grid; gap: 10px; }
.pdim { display: grid; grid-template-columns: 58px 1fr auto; gap: 8px; align-items: center; font-size: 12px; }
.pdim .pn { color: var(--ink-2); font-weight: 700; }
.pdim .pb { height: 7px; border-radius: 999px; background: var(--jade-soft); overflow: hidden; }
.pdim .pb i { display: block; height: 100%; background: linear-gradient(90deg, var(--jade-strong), var(--jade)); }
.pdim .pv { font-weight: 800; color: var(--jade-ink); font-variant-numeric: tabular-nums; }
.pdim .pv em { font-size: 10px; color: var(--ink-3); font-style: normal; font-weight: 600; }
.pr-note { font-size: 12px; line-height: 1.7; color: var(--ink-2); background: var(--paper-2); border-radius: 12px; padding: 10px 12px; }
.pr-appnote { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--jade-ink); font-weight: 700; }
.pr-appnote svg { width: 15px; height: 15px; }

.score-ring-sm { width: 104px; height: 104px; flex: none; }
.pr-iframe { flex: 1 1 auto; width: 100%; border: 0; background: transparent; display: block; position: relative; z-index: 1; }
/* 报告套壳滑动提示徽章 */
.pr-scroll-hint { position: absolute; left: 50%; bottom: 18px; transform: translateX(-50%); z-index: 3; display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; border-radius: 999px; background: rgba(23,18,13,.82); color: #fff; font-size: 12px; font-weight: 600; white-space: nowrap; box-shadow: 0 4px 14px rgba(0,0,0,.28); pointer-events: none; animation: prHintFade 6s ease-in-out forwards; }
.pr-scroll-arrow { display: inline-flex; animation: prHintBounce 1.4s ease-in-out infinite; }
.pr-scroll-arrow svg { width: 14px; height: 14px; }
.pr-scroll-hint.is-gone { opacity: 0 !important; transition: opacity .4s ease; }
@keyframes prHintBounce { 0%,100% { transform: translateY(2px); } 50% { transform: translateY(-3px); } }
@keyframes prHintFade { 0%,70% { opacity: 1; } 100% { opacity: 0; } }
/* 手机报告预览 · 加载骨架(置于iframe下层;报告加载完自带背景盖住,无需JS) */
.pr-skeleton { position: absolute; inset: 0; z-index: 0; display: flex; flex-direction: column; gap: 12px; padding: 26px 22px; background: var(--paper); }
.pr-skeleton .prs-l { height: 12px; border-radius: 6px; background: var(--line); }
.pr-skeleton .prs-l1 { width: 55%; }
.pr-skeleton .prs-l2 { width: 82%; }
.pr-skeleton .prs-l3 { width: 66%; }
.pr-skeleton .prs-ring { width: 84px; height: 84px; border-radius: 50%; border: 9px solid var(--line); border-top-color: var(--jade); margin: 10px auto; animation: prsSpin .9s linear infinite; }
.pr-skeleton .prs-bars { display: grid; gap: 10px; margin-top: 4px; }
.pr-skeleton .prs-bars i { height: 24px; border-radius: 8px; background: var(--line); display: block; }
.pr-skeleton .prs-hint { margin-top: auto; display: inline-flex; align-items: center; justify-content: center; gap: 7px; color: var(--ink-3); font-size: var(--fs-cap); font-weight: 700; }
.pr-skeleton .prs-hint svg { width: 16px; height: 16px; color: var(--jade); }
@keyframes prsSpin { to { transform: rotate(360deg); } }
/* 看报告 · 空状态增强 */
.phone-empty h4 { font-size: 16px; font-weight: 800; color: var(--ink-1); }
.pe-dims { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin-top: 12px; }
.pe-dims b { flex-basis: 100%; font-size: var(--fs-cap); color: var(--ink-3); font-weight: 700; margin-bottom: 2px; }
.pe-dims span { padding: 4px 11px; border-radius: var(--r-pill); background: var(--jade-soft); color: var(--jade-ink); font-size: 12px; font-weight: 700; }
.report-qr-empty { grid-template-columns: 1fr; }
.rq-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 14px; }
.core-qr { display: flex; align-items: center; gap: 14px; margin-top: var(--sp-5); padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--card); max-width: 400px; box-shadow: var(--sh-sm); }
.core-qr-img { width: 90px; height: 90px; border-radius: 8px; flex: none; background: #fff; }
.core-qr-tx b { display: flex; align-items: center; gap: 6px; font-size: var(--fs-sm); font-weight: 700; color: var(--ink); }
.core-qr-tx b svg { width: 16px; height: 16px; color: var(--jade); }
.core-qr-tx span { display: block; margin-top: 5px; font-size: var(--fs-cap); color: var(--ink-3); line-height: 1.5; }
.core-media-report { display: flex; align-items: center; justify-content: center; gap: var(--sp-5); }
.cm-qr { width: 190px; flex: none; text-align: center; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); padding: 16px 14px; box-shadow: var(--sh-sm); }
.cm-qr-img { width: 150px; height: 150px; border-radius: 8px; background: #fff; }
.cm-qr b { display: flex; align-items: center; justify-content: center; gap: 6px; margin-top: 10px; font-size: var(--fs-sm); font-weight: 700; color: var(--ink); }
.cm-qr b svg { width: 16px; height: 16px; color: var(--jade); }
.cm-qr span { display: block; margin-top: 4px; font-size: var(--fs-cap); color: var(--ink-3); line-height: 1.5; }
@media (max-width: 960px) { .core-media-report { flex-direction: column; } .cm-qr { display: none; } }
.score-ring-sm .ring-bg, .score-ring-sm .ring-fg { stroke-width: 8; }
.score-ring-sm .val b { font-size: 24px; }
.score-ring-sm .val span { font-size: 10px; }

.report-qr { padding: var(--sp-5); display: grid; grid-template-columns: 1fr auto; gap: 16px; align-items: center; }
/* 紧凑二维码条：小二维码+简短说明 */
.report-qr-compact { grid-template-columns: auto 1fr; gap: 14px; align-items: center; width: 100%; max-width: 420px; padding: 14px 16px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); box-shadow: var(--sh-sm); }
.report-qr-compact .rq-img { width: 88px; height: 88px; padding: 5px; border-radius: 10px; }
.report-qr-compact .rq-copy h3 { font-size: 15px; margin: 0; }
.report-qr-compact .rq-copy h3 svg { width: 17px; height: 17px; }
.report-qr-compact .rq-copy p { font-size: 12px; line-height: 1.6; margin-top: 4px; }
.report-qr .rq-copy h3 { font-size: var(--fs-h3); font-weight: 800; display: flex; align-items: center; gap: 8px; }
.report-qr .rq-copy h3 svg { width: 20px; height: 20px; color: var(--jade); }
.report-qr .rq-copy p { color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.7; margin-top: 8px; }
.report-qr .rq-copy small { display: block; margin-top: 8px; color: var(--ink-3); font-size: 11px; word-break: break-all; }
.rq-img { width: 150px; height: 150px; border-radius: 12px; border: 1px solid var(--line); background: #fff; padding: 6px; flex: none; }

.rep-side-h { display: flex; align-items: center; gap: 8px; font-size: var(--fs-sm); font-weight: 800; color: var(--ink); }
.rep-side-h2 { margin-top: 10px; padding-top: 14px; border-top: 1px solid var(--line); }
.rep-side-h svg { width: 18px; height: 18px; color: var(--jade); }
.rep-side-cnt { margin-left: auto; font-size: 11px; font-weight: 700; color: var(--ink-3); background: var(--paper-2); padding: 3px 10px; border-radius: var(--r-pill); }
/* 报告按墓园分组（可折叠 + 限高滚动，不再无限长） */
.reports-side .report-groups { display: grid; gap: 8px; max-height: 480px; overflow-y: auto; padding-right: 4px; }
.report-group { border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; }
.report-group-h { display: flex; align-items: center; gap: 8px; padding: 10px 12px; background: var(--paper-2); cursor: pointer; list-style: none; font-size: var(--fs-sm); font-weight: 700; color: var(--ink); user-select: none; }
.report-group-h::-webkit-details-marker { display: none; }
.report-group-h > svg:first-child { width: 15px; height: 15px; color: var(--jade); flex: none; }
.report-group-h .rg-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.report-group-h .rg-count { font-size: var(--fs-cap); color: var(--ink-3); font-weight: 600; flex: none; }
.report-group-h > svg:last-child { width: 14px; height: 14px; color: var(--ink-3); flex: none; transition: transform .2s; transform: rotate(90deg); }
.report-group[open] .report-group-h > svg:last-child { transform: rotate(-90deg); }
.report-group .report-rows { padding: 8px; }
/* 我的报告筛选工具栏（顶部横排） */
.mine-toolbar { margin: var(--sp-5) 0 var(--sp-4); }
.mine-filter { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 12px 16px; box-shadow: var(--sh-sm); }
.mine-search { display: flex; align-items: center; gap: 8px; background: var(--paper-2); border: 1px solid var(--line-2); border-radius: 10px; padding: 0 12px; height: 38px; flex: 1; min-width: 200px; max-width: 320px; }
.mine-search svg { width: 16px; height: 16px; color: var(--ink-3); flex: none; }
.mine-search input { flex: 1; border: none; outline: none; background: none; font-size: var(--fs-sm); color: var(--ink); font-family: inherit; min-width: 0; }
.mine-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.mine-chips .chip { font-size: 12px; padding: 5px 12px; }
.mine-sort { display: flex; align-items: center; gap: 8px; font-size: var(--fs-cap); color: var(--ink-3); margin-left: auto; }
.mine-sort button { border: 1px solid var(--line-2); background: var(--card); color: var(--ink-2); border-radius: 999px; padding: 5px 14px; font-size: 12px; font-weight: 600; cursor: pointer; transition: all .15s ease; }
.mine-sort button.is-on { background: var(--jade); border-color: var(--jade); color: #fff; }
.mine-load-more { width: 100%; margin-top: 12px; }
/* 我的报告新布局：左侧列表（随页面滚动） + 右侧预览（sticky） */
.mine-layout { display: grid; grid-template-columns: minmax(0,1fr) 340px; gap: var(--sp-5); align-items: start; }
.mine-main { min-width: 0; }
.mine-main .rep-side-h { margin-bottom: 12px; }
.mine-list-wrap .report-groups { display: grid; gap: 10px; max-height: none; overflow: visible; padding-right: 0; }
.mine-preview { position: sticky; top: 88px; display: grid; gap: var(--sp-4); }
.mine-preview .report-stage { grid-template-columns: 1fr; }
.rep-cem-list { display: grid; gap: 8px; max-height: 300px; overflow-y: auto; padding-right: 4px; }
.rep-cem { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 14px 16px; border-radius: var(--r-md); border: 1px solid var(--line); background: var(--card); text-align: left; transition: all .14s ease; flex: none; }
.rep-cem:hover { border-color: var(--jade); }
.rep-cem.is-active { border-color: var(--jade); background: var(--jade-soft); }
.rep-cem .rc-name { font-weight: 700; font-size: 14px; }
.rep-cem .rc-cnt { font-size: 12px; font-weight: 700; color: var(--jade-ink); white-space: nowrap; }
.rep-cem.is-soon { opacity: .82; }
.rep-cem.is-soon .rc-cnt { color: var(--ink-3); font-weight: 600; }
/* 报告页评分筛选标签 */
.rscore-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.rscore-chips .chip { font-size: 12px; padding: 5px 12px; }
.plot-list { display: grid; gap: var(--sp-4); }

@media (max-width: 960px) {
  .reports-stage-layout { grid-template-columns: 1fr; }
  .report-stage { grid-template-columns: 1fr; position: static; }
  .report-qr { grid-template-columns: 1fr; justify-items: center; text-align: center; }
  .mine-layout { grid-template-columns: 1fr; }
  .mine-preview { position: static; order: -1; }
  .mine-sort { margin-left: 0; }
}

/* 真实报告额外字段（坐向 / 专家建议 / 真实标） */
.pr-orient { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--jade-ink); font-weight: 700; }
.pr-orient svg { width: 14px; height: 14px; }
.pr-advice { display: grid; gap: 4px; background: var(--jade-soft); border-radius: 12px; padding: 10px 12px; font-size: 12px; }
.pr-advice b { display: flex; align-items: center; gap: 5px; color: var(--jade-ink); font-weight: 800; }
.pr-advice b svg { width: 14px; height: 14px; }
.pr-advice span { color: var(--ink-2); line-height: 1.7; }
.pr-demo.pr-real { color: var(--jade-ink); background: var(--jade-soft); }

/* 详情图廊真实视频 + lightbox 视频 */
.cd-video { background-color: #17120d; }
.cd-play { position: absolute; inset: 0; margin: auto; width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; background: rgba(255,255,255,.92); color: var(--jade-ink); box-shadow: var(--sh-md); z-index: 1; }
.cd-play svg { width: 22px; height: 22px; margin-left: 2px; }
.lb-media { max-width: 100%; max-height: 78vh; border-radius: var(--r-md); box-shadow: var(--sh-lg); }
.lb-video { width: min(900px, 92vw); background: #000; }

/* Lightbox 图片缩放/平移看细节 */
.lb-img { transform-origin: center center; transition: transform .06s linear; will-change: transform; touch-action: none; cursor: zoom-in; }
.lb-figure { overflow: visible; }
.lb-close, .lb-nav, .lb-count, .lb-tools, .lb-hint { z-index: 6; }
.lb-tools { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); display: flex; gap: 8px; }
.lb-tools button { min-width: 46px; height: 40px; padding: 0 12px; border-radius: 999px; border: 1px solid rgba(255,255,255,.28); background: rgba(20,20,20,.55); color: #fff; font-size: 15px; font-weight: 700; cursor: pointer; line-height: 1; }
.lb-tools button:hover { background: rgba(255,255,255,.26); }
.lb-hint { position: absolute; bottom: 72px; left: 50%; transform: translateX(-50%); color: rgba(255,255,255,.75); font-size: var(--fs-cap); pointer-events: none; background: rgba(20,20,20,.42); padding: 4px 12px; border-radius: 999px; }
.lb-is-video .lb-tools, .lb-is-video .lb-hint { display: none; }
@media (max-width: 640px) { .lb-hint { display: none; } .lb-tools { bottom: 14px; } }

/* 首页 Hero 真实封面 + 报告卡专家建议 + 下载页真实版本 */
.hero-photo { position: absolute; inset: 0; border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--sh-lg); border: 1px solid var(--line); background: var(--paper-2) center/cover no-repeat; }
.hero-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.02), rgba(0,0,0,.22)); }
.hero-photo-tag { position: absolute; left: 16px; top: 16px; z-index: 1; display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: var(--r-pill); background: color-mix(in srgb, var(--card) 90%, transparent); color: var(--jade-ink); font-size: var(--fs-cap); font-weight: 700; box-shadow: var(--sh-sm); }
.hero-photo-tag svg { width: 15px; height: 15px; }
.rp-advice { display: flex; align-items: flex-start; gap: 6px; margin-top: 2px; padding: 10px 12px; background: var(--jade-soft); border-radius: var(--r-md); color: var(--ink-2); font-size: var(--fs-cap); line-height: 1.6; }
.rp-advice svg { width: 15px; height: 15px; color: var(--jade); flex: none; margin-top: 2px; }
/* 下载页（v91 重构：清爽布局 + 5 张真实截图） */
.dl-page { padding: var(--sp-8) 0 var(--sp-9); }
.dl-hero { text-align: center; max-width: 720px; margin: 0 auto var(--sp-7); }
.dl-hero h1 { font-size: clamp(28px, 4vw, 40px); font-weight: 800; color: var(--ink); margin: 14px 0 12px; letter-spacing: -.01em; }
.dl-hero p { color: var(--ink-2); font-size: 16px; line-height: 1.7; }
.dl-action { display: grid; grid-template-columns: 1fr auto; gap: var(--sp-6); align-items: center; max-width: 880px; margin: 0 auto; padding: var(--sp-6); }
.dl-action-main { display: grid; gap: var(--sp-4); justify-items: start; }
.dl-meta { display: flex; flex-wrap: wrap; gap: 8px; }
.dl-download { min-width: 220px; justify-content: center; }
.dl-note { color: var(--ink-3); font-size: var(--fs-cap); line-height: 1.6; }
.dl-qr { display: grid; gap: 10px; justify-items: center; text-align: center; padding: var(--sp-4); background: var(--paper-2); border-radius: var(--r-md); }
.dl-qr img { width: 160px; height: 160px; border-radius: 12px; border: 1px solid var(--line); background: #fff; padding: 6px; }
.dl-qr span { font-size: var(--fs-cap); color: var(--ink-3); }
/* 更新说明（折叠） */
.dl-log { max-width: 880px; margin: var(--sp-5) auto 0; padding: 0; overflow: hidden; }
.dl-log summary { display: flex; align-items: center; gap: 8px; padding: var(--sp-4) var(--sp-5); cursor: pointer; font-weight: 800; font-size: var(--fs-sm); color: var(--ink); list-style: none; }
.dl-log summary::-webkit-details-marker { display: none; }
.dl-log summary > svg:first-child { width: 18px; height: 18px; color: var(--jade); }
.dl-log summary > svg:last-child { width: 16px; height: 16px; color: var(--ink-3); margin-left: auto; transition: transform .2s; }
.dl-log[open] summary > svg:last-child { transform: rotate(90deg); }
.dl-log p { padding: 0 var(--sp-5) var(--sp-5); color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.8; }
/* 5 张真实截图展示 */
.dl-showcase { margin-top: var(--sp-9); }
.dl-showcase-head { text-align: center; margin-bottom: 32px; }
.dl-showcase-head h2 { font-size: 26px; font-weight: 800; color: var(--ink); margin: 10px 0 8px; }
.dl-showcase-head p { color: var(--ink-2); font-size: var(--fs-sm); }
.dl-shots { display: grid; grid-template-columns: repeat(5, 1fr); gap: 22px; }
.dl-shot { display: grid; justify-items: center; gap: 14px; margin: 0; }
.dl-phone { width: 100%; max-width: 210px; padding: 8px; border-radius: 28px; background: linear-gradient(158deg, #26364f 0%, #0f172a 72%); box-shadow: 0 16px 36px rgba(15, 23, 42, .24); border: 1px solid rgba(255, 255, 255, .08); }
.dl-phone img { width: 100%; height: auto; display: block; border-radius: 20px; background: var(--paper-2); }
.dl-shot figcaption { display: grid; grid-template-columns: auto auto; gap: 3px 6px; justify-content: center; align-items: center; }
.dl-shot figcaption > svg { width: 16px; height: 16px; color: var(--jade); }
.dl-shot figcaption b { font-size: var(--fs-sm); font-weight: 800; color: var(--ink); }
.dl-shot figcaption span { grid-column: 1 / -1; font-size: var(--fs-cap); color: var(--ink-3); line-height: 1.5; text-align: center; }
@media (max-width: 1100px) { .dl-shots { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 760px) {
  .dl-action { grid-template-columns: 1fr; justify-items: center; text-align: center; }
  .dl-action-main { justify-items: center; }
  .dl-shots { grid-template-columns: repeat(2, 1fr); gap: 18px; }
  .dl-phone { max-width: 180px; }
}

/* 找墓园 / 地图页 城市选择器（全国下拉 + 热门chips 分区，两页统一）*/
.city-picker-row, .cem-city-bar { display: grid; grid-template-columns: minmax(240px, 320px) 1fr; gap: var(--sp-3) var(--sp-5); align-items: start; margin-bottom: var(--sp-4); }
.city-pick-field, .city-pick-hot { display: grid; gap: 8px; min-width: 0; }
.city-pick-field .fg-label, .city-pick-hot .fg-label { display: block; font-size: var(--fs-cap); color: var(--ink-3); font-weight: 700; }
.city-pick-field .city-select-wrap { min-width: 0; }
.cem-city-title { font-size: var(--fs-sm); color: var(--ink-2); margin-bottom: var(--sp-4); }
.cem-city-title b { color: var(--ink); font-weight: 800; }
@media (max-width: 760px) { .city-picker-row, .cem-city-bar { grid-template-columns: 1fr; gap: var(--sp-3); } }

/* 真实合作状态标识 */
.cem-coop { margin-top: 2px; }
.coop-chip { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 700; padding: 3px 10px; border-radius: 999px; }
.coop-chip svg { width: 13px; height: 13px; }
.coop-key { background: var(--jade); color: #fff; }
.coop-appt { background: var(--amber-soft); color: var(--amber-ink); }
.coop-cons { background: var(--jade-soft); color: var(--jade-ink); }

/* 页脚备案链接 + 家族纪念堂完整页 */
.footer-bottom a { color: inherit; }
.footer-bottom a:hover { color: #fff; }
.memx-body { padding: var(--sp-8) 0; display: grid; gap: var(--sp-6); }
.memx-body .section-head { margin-bottom: 0; }
.memx-sample { max-width: 520px; margin: 0 auto; position: relative; display: grid; gap: 14px; }
.memx-sample-tag { display: inline-flex; align-items: center; gap: 6px; width: fit-content; font-size: var(--fs-cap); font-weight: 700; color: var(--jade-ink); background: var(--jade-soft); padding: 4px 10px; border-radius: 999px; }
.memx-sample-tag svg { width: 14px; height: 14px; }
/* 纪念页示例展示：两列强制等高，图片弹性填充，底部对齐不留白 */
.memx-showcase { display: grid; grid-template-columns: 1.15fr 1fr; gap: var(--sp-5); align-items: stretch; }
.msc-main { padding: var(--sp-5); display: flex; flex-direction: column; gap: 12px; }
.msc-main > img { width: 100%; flex: 1 1 auto; min-height: 280px; object-fit: cover; border-radius: var(--r-md); }
.msc-main-body { display: grid; gap: 10px; }
.msc-main-body h3 { font-size: var(--fs-h3); font-weight: 800; }
.msc-visits { display: grid; gap: 8px; }
.msc-visits h4 { display: flex; align-items: center; gap: 6px; font-size: var(--fs-sm); font-weight: 800; color: var(--jade-ink); }
.msc-visits h4 svg { width: 16px; height: 16px; color: var(--jade); }
.msc-visit { display: grid; gap: 2px; padding: 8px 12px; border-left: 3px solid var(--jade-soft); background: var(--paper-2); border-radius: 0 var(--r-sm) var(--r-sm) 0; }
.msc-visit b { font-size: var(--fs-cap); color: var(--ink); }
.msc-visit span { font-size: var(--fs-cap); color: var(--ink-2); }
.msc-side { display: grid; gap: var(--sp-5); grid-template-rows: 1fr 1fr; }
.msc-item { margin: 0; padding: 10px; display: flex; flex-direction: column; gap: 8px; }
.msc-item img { width: 100%; flex: 1 1 auto; min-height: 190px; object-fit: cover; border-radius: var(--r-sm); }
.msc-item figcaption { display: flex; align-items: center; gap: 6px; font-size: var(--fs-cap); font-weight: 700; color: var(--ink-2); }
.msc-item figcaption svg { width: 15px; height: 15px; color: var(--jade); }
.msc-wall { margin-top: var(--sp-5); padding: var(--sp-5); display: grid; gap: 12px; }
.msc-wall-h { display: flex; align-items: center; gap: 8px; font-size: var(--fs-h3); font-weight: 800; }
.msc-wall-h svg { width: 18px; height: 18px; color: var(--jade); }
.msc-wall-h span { font-size: var(--fs-cap); font-weight: 600; color: var(--ink-3); margin-left: auto; }
.msc-wall-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.msc-wall-grid img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--r-sm); }
.msc-wall-note { font-size: var(--fs-cap); color: var(--ink-3); line-height: 1.7; }
@media (max-width: 960px) {
  .memx-showcase { grid-template-columns: 1fr; }
  .msc-side { grid-template-rows: none; grid-template-columns: 1fr 1fr; }
  .msc-main > img { min-height: 0; aspect-ratio: 16 / 11; flex: none; }
  .msc-item img { min-height: 0; aspect-ratio: 16 / 10; flex: none; }
  .msc-wall-grid { grid-template-columns: repeat(2, 1fr); }
}
.memo-photo { aspect-ratio: 16 / 10; background: var(--paper-2) center/cover no-repeat; border-radius: var(--r-md); border: 1px solid var(--line); }

/* 官方产品手册按钮 + 首页 FAQ 两栏 */
.cd-manual-btn { display: flex; align-items: center; gap: 10px; padding: 14px 16px; border-radius: var(--radius); background: var(--jade); color: #fff; font-weight: 700; text-decoration: none; }
.cd-manual-btn svg { width: 20px; height: 20px; flex: none; }
.cd-manual-btn span { flex: 1; }
.cd-manual-btn em { font-style: normal; font-size: var(--fs-cap); opacity: .85; font-weight: 600; }
.cd-manual-btn:hover { background: var(--jade-ink); }
/* 详情页本园风水报告引导卡 */
.cd-reports { border: 1px solid rgba(14, 122, 87, .22); background: linear-gradient(135deg, rgba(14, 122, 87, .06), rgba(14, 122, 87, .02)); }
.cd-rep-row { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.cd-rep-info { flex: 1; min-width: 240px; display: flex; flex-direction: column; gap: 6px; }
.cd-rep-info b { font-size: var(--fs-body); }
.cd-rep-info span { color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.6; }
.cd-rep-btn { flex: none; white-space: nowrap; }
@media (max-width: 640px) { .cd-rep-btn { width: 100%; justify-content: center; } }
.faq-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 24px; }
@media (max-width: 760px) { .faq-2col { grid-template-columns: 1fr; } }

/* ============ 账号 / 登录·预约弹窗 / 我的报告 / 差异化区 ============ */
.btn-sm { padding: 8px 14px; font-size: var(--fs-sm); border-radius: 10px; }
.header-cta { display: flex; align-items: center; gap: 12px; }
.acct { position: relative; }
.acct-avatar { display: inline-grid; place-items: center; width: 40px; height: 40px; padding: 0; border-radius: 50%; background: var(--paper-2); color: var(--ink); box-shadow: inset 0 0 0 1px var(--line-2); cursor: pointer; flex: none; transition: background .16s ease, box-shadow .16s ease, color .16s ease; }
.acct-avatar:hover { background: var(--jade-soft); color: var(--jade-ink); box-shadow: inset 0 0 0 1px var(--jade); }
.acct-avatar svg { width: 20px; height: 20px; }
.acct-btn { display: inline-flex; align-items: center; gap: 8px; padding: 5px 12px 5px 5px; border-radius: 999px; background: var(--paper-2); box-shadow: inset 0 0 0 1px var(--line-2); cursor: pointer; flex: none; transition: background .16s ease, box-shadow .16s ease; }
.acct-btn:hover { background: var(--jade-soft); box-shadow: inset 0 0 0 1px var(--jade); }
.acct-ic { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: var(--jade-soft); color: var(--jade-ink); flex: none; }
.acct-ic svg { width: 18px; height: 18px; }
.acct-name { max-width: 110px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--fs-sm); font-weight: 700; color: var(--ink); }
.acct-btn > svg:last-child { width: 14px; height: 14px; color: var(--ink-3); transition: transform .2s; flex: none; }
.acct.is-open .acct-btn > svg:last-child { transform: rotate(90deg); }
.acct-menu { position: absolute; right: 0; top: calc(100% + 8px); min-width: 200px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); box-shadow: var(--sh-lg); padding: 6px; display: none; z-index: 60; }
.acct.is-open .acct-menu { display: block; }
.acct-menu a, .acct-menu button { display: flex; align-items: center; gap: 8px; width: 100%; padding: 10px 12px; border-radius: 8px; background: none; border: 0; color: var(--ink); font-size: var(--fs-sm); text-decoration: none; cursor: pointer; text-align: left; }
.acct-menu-label { flex: 1; white-space: nowrap; }
.acct-menu a > svg:last-child, .acct-menu button > svg:last-child { width: 14px; height: 14px; color: var(--ink-3); flex: none; }
.acct-menu a:hover, .acct-menu button:hover { background: var(--jade-soft); color: var(--jade-ink); }
.acct-menu svg { width: 16px; height: 16px; }

.modal-mask { position: fixed; inset: 0; z-index: 200; background: rgba(20,16,10,.5); backdrop-filter: blur(2px); display: flex; align-items: center; justify-content: center; padding: 20px; }
.site-notice { position: fixed; z-index: 220; left: 50%; bottom: 28px; transform: translateX(-50%); max-width: min(440px, calc(100vw - 32px)); padding: 12px 16px; border-radius: var(--r-md); background: var(--jade-strong); color: #fff; box-shadow: var(--sh-lg); font-size: var(--fs-sm); font-weight: 700; }
.site-notice.err { background: #A33227; }
.modal { position: relative; width: 100%; max-width: 440px; background: var(--card); border-radius: var(--r-lg); box-shadow: var(--sh-lg); padding: 28px; max-height: 92vh; overflow: auto; }
.modal-x { position: absolute; right: 14px; top: 14px; width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--line); background: var(--paper); display: grid; place-items: center; cursor: pointer; color: var(--ink-2); }
.modal-x svg { width: 18px; height: 18px; }
.modal-x:hover { background: var(--paper-2); }
.modal-head { margin-bottom: 18px; }
.modal-head h3 { font-size: 22px; font-weight: 800; margin: 6px 0; }
.modal-head p { color: var(--ink-3); font-size: var(--fs-cap); line-height: 1.6; }
.fld { display: block; margin-bottom: 14px; }
.fld > span { display: block; font-size: var(--fs-cap); color: var(--ink-2); margin-bottom: 6px; }
.fld > span.code-row { display: flex; }
.fld > span em { color: #C0392B; font-style: normal; }
.fld input, .fld select { width: 100%; height: 46px; padding: 0 14px; border: 1px solid var(--line-2); border-radius: 10px; font-size: 15px; background: var(--card); color: var(--ink); box-sizing: border-box; }
.fld input:focus, .fld select:focus { outline: none; border-color: var(--jade); box-shadow: 0 0 0 3px var(--jade-soft); }
.code-row { display: flex; gap: 10px; }
.code-row input { flex: 1; }
.code-btn { flex: none; white-space: nowrap; }
.auth-submit { width: 100%; margin-top: 4px; }
.auth-msg { margin-top: 12px; font-size: var(--fs-cap); color: var(--ink-3); line-height: 1.6; }
.auth-msg.ok { color: var(--jade-ink); }
.auth-msg.err { color: #C0392B; }
/* 卡4：微信登录 */
.btn-wechat { width: 100%; background: #07C160; color: #fff; border: none; gap: 8px; }
.btn-wechat:hover { background: #06ad56; }
.btn-wechat svg { width: 20px; height: 20px; }
.auth-divider { display: flex; align-items: center; gap: 12px; margin: 16px 0; color: var(--ink-3); font-size: var(--fs-cap); }
.auth-divider::before, .auth-divider::after { content: ''; flex: 1; height: 1px; background: var(--line); }
.wx-qr-wrap { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 8px 0; }
.wx-qr-icon { width: 44px; height: 44px; overflow: visible; flex: none; }
.wx-qr-icon svg { width: 44px; height: 44px; color: #07C160; overflow: visible; }
.wx-qr-box { display: grid; place-items: center; min-height: 200px; }
.wx-qr-box iframe { width: 260px; height: 260px; border: none; }
.wx-qr-loading { color: var(--ink-3); font-size: var(--fs-sm); padding: 80px 0; }
.auth-switch { text-align: center; margin-top: 4px; }
.link-btn { background: none; border: none; color: var(--jade); font-size: var(--fs-sm); font-weight: 700; cursor: pointer; font-family: inherit; padding: 6px 12px; text-decoration: underline; text-underline-offset: 3px; }
.link-btn:hover { color: var(--jade-strong); }
.bk-cem { display: flex; align-items: center; gap: 6px; font-size: var(--fs-cap); color: var(--ink-2); background: var(--jade-soft); border-radius: 8px; padding: 8px 12px; margin-bottom: 14px; }
.bk-cem svg { width: 15px; height: 15px; color: var(--jade); }
.bk-cem b { color: var(--jade-ink); }
/* 预约表单：微信同号勾选行 + 提交区居中内卡 */
.bk-wx-same { display: flex; align-items: center; gap: 8px; font-size: var(--fs-sm); color: var(--ink-2); margin: -2px 0 10px; cursor: pointer; user-select: none; }
.bk-wx-same input { width: 16px; height: 16px; accent-color: var(--jade); cursor: pointer; }
.bk-wx-same:hover span { color: var(--jade-ink); }
.bk-submit { display: flex; flex-direction: column; align-items: center; gap: 6px; background: var(--paper-2); border: 1px solid var(--line); border-radius: var(--r-md); padding: 12px 12px 8px; margin-top: 4px; text-align: center; }
.bk-submit .btn { min-width: 220px; justify-content: center; }
/* 紧凑化：两列排布+压缩间距，保证 768 高小屏弹窗一屏放下不滚动 */
.booking-modal { max-width: 480px; }
.bk-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 12px; }
.booking-modal .modal-head { margin-bottom: 12px; }
.booking-form .fld { margin-bottom: 10px; }
.booking-form .fld > span { margin-bottom: 4px; }
.booking-form .fld input, .booking-form .fld select { height: 42px; }
.booking-form .bk-submit .auth-msg { margin: 0; }
@media (max-width: 560px) {
  .bk-row2 { grid-template-columns: 1fr; }
  /* 移动端进一步压缩，避免弹窗内滚 */
  .booking-modal { padding: 18px 16px; }
  .booking-modal .modal-head h3 { font-size: 19px; margin: 4px 0; }
  .booking-form .fld { margin-bottom: 8px; }
  .booking-form .fld input, .booking-form .fld select { height: 40px; font-size: 14px; }
  .bk-submit { padding: 10px 10px 6px; }
}

.mine-gate { max-width: 560px; margin: 40px auto; text-align: center; padding: 40px 28px; }
.mine-gate > svg { width: 46px; height: 46px; color: var(--jade); }
.mine-gate h2 { font-size: 22px; font-weight: 800; margin: 14px 0 8px; }
.mine-gate p { color: var(--ink-2); line-height: 1.7; margin-bottom: 20px; }
.r-ing { font-size: var(--fs-cap); color: var(--amber-ink); font-weight: 700; }
.r-lock { display: inline-flex; align-items: center; gap: 3px; font-size: var(--fs-cap); color: var(--ink-3); font-weight: 700; }
.r-lock svg { width: 13px; height: 13px; }

/* 卡5：分享区（已解锁报告） */
.mine-share { padding: 18px 18px 16px; border: 1px solid var(--line); border-radius: var(--r-md); }
.mine-share-h { display: flex; align-items: center; gap: 7px; font-size: var(--fs-sm); font-weight: 800; color: var(--ink); margin-bottom: 8px; }
.mine-share-h svg { width: 17px; height: 17px; color: var(--jade); }
.mine-share-tip { font-size: var(--fs-cap); color: var(--ink-2); line-height: 1.6; margin-bottom: 12px; }
.mine-share .btn { width: 100%; justify-content: center; }
.share-result { display: flex; gap: 6px; align-items: center; margin-top: 10px; }
.share-url { flex: 1; min-width: 0; font-size: var(--fs-cap); padding: 7px 9px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg); color: var(--ink-2); }

/* 卡5：未解锁引导 */
.mine-unlock { padding: 18px; border: 1px solid var(--line); border-radius: var(--r-md); background: linear-gradient(180deg, var(--amber-soft, rgba(245,158,11,.06)), var(--card)); }
.mine-unlock-h { display: flex; align-items: center; gap: 7px; font-size: var(--fs-sm); font-weight: 800; color: var(--ink); margin-bottom: 8px; }
.mine-unlock-h svg { width: 17px; height: 17px; color: var(--amber-ink, #b45309); }
.mine-unlock p { font-size: var(--fs-cap); color: var(--ink-2); line-height: 1.7; margin-bottom: 12px; }
.mine-unlock-actions { display: flex; flex-wrap: wrap; gap: 8px; }

.why-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 28px; }
.why-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); padding: 22px 18px; }
.why-ic { display: inline-grid; place-items: center; width: 46px; height: 46px; border-radius: 12px; background: var(--jade-soft); color: var(--jade); margin-bottom: 12px; }
.why-ic svg { width: 24px; height: 24px; }
.why-card h3 { font-size: 17px; font-weight: 800; margin-bottom: 8px; }
.why-card p { color: var(--ink-2); font-size: var(--fs-cap); line-height: 1.7; }
.why-compare { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 26px; }
.wc-col { border-radius: var(--r-md); padding: 22px; border: 1px solid var(--line); }
.wc-col h4 { display: flex; align-items: center; gap: 6px; font-size: 16px; font-weight: 800; margin-bottom: 14px; }
.wc-col ul { list-style: none; display: grid; gap: 10px; }
.wc-col li { display: flex; align-items: flex-start; gap: 8px; font-size: var(--fs-sm); line-height: 1.5; }
.wc-col li svg { width: 17px; height: 17px; flex: none; margin-top: 1px; }
.wc-plain { background: var(--paper-2); color: var(--ink-2); }
.wc-plain h4 { color: var(--ink-2); }
.wc-plain li svg { color: var(--ink-3); }
.wc-muyi { background: linear-gradient(160deg, var(--jade-soft), var(--card)); border-color: color-mix(in srgb, var(--jade) 30%, var(--line)); }
.wc-muyi h4 { color: var(--jade-ink); }
.wc-muyi h4 svg { color: var(--jade); }
.wc-muyi li { color: var(--ink); }
.wc-muyi li svg { color: var(--jade); }
.why-cta { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }

@media (max-width: 960px) { .why-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 760px) {
  .why-grid { grid-template-columns: 1fr; }
  .why-compare { grid-template-columns: 1fr; }
  .header-phone { display: none; }
  .acct-name { display: none; }
  .modal { padding: 22px 18px; }
}
.reports-actions, .mine-gate-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
/* “我的”页账号条：收藏/退出入口（移动端顶栏不再放账号菜单） */
.mine-acct { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 12px 16px; margin-bottom: var(--sp-4); }
.mine-acct .ma-id { display: inline-flex; align-items: center; gap: 8px; font-weight: 800; color: var(--ink); }
.mine-acct .ma-id svg { width: 18px; height: 18px; color: var(--jade); }
.mine-acct .ma-actions { display: flex; align-items: center; gap: 6px; }
.mine-acct .ma-logout { color: #B3452F; }

/* ============ 返回顶部 + 在线顾问（移植自老站，沿用玉绿体系）============ */
.back-to-top {
  position: fixed; right: 24px; bottom: 24px; z-index: var(--z-float);
  display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px;
  width: 52px; height: 52px; border-radius: var(--r-md);
  background: color-mix(in srgb, var(--card) 96%, transparent); color: var(--jade-ink);
  box-shadow: var(--sh-md); border: 1px solid var(--line);
  opacity: 0; visibility: hidden; transform: translateY(8px);
  transition: opacity .2s ease, transform .2s ease, visibility .2s; backdrop-filter: blur(6px);
}
.back-to-top.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
.back-to-top:hover { color: #fff; background: var(--jade); border-color: var(--jade); box-shadow: var(--sh-lg); }
.back-to-top svg { width: 19px; height: 19px; }
.back-to-top span { font-size: 10px; font-weight: 700; line-height: 1; }

/* 在线顾问：关闭态大立牌 + 左侧标签 */
.consult-fab { position: fixed; right: 22px; bottom: 88px; z-index: var(--z-float); display: flex; flex-direction: column; align-items: flex-end; gap: 12px; }
.consult-launcher { position: relative; display: inline-flex; align-items: flex-end; justify-content: flex-end; background: none; border: 0; box-shadow: none; padding: 0; cursor: pointer; filter: drop-shadow(0 12px 22px rgba(26,40,34,.30)); transition: transform .16s ease; }
.consult-launcher:hover { transform: translateY(-3px); }
.consult-launcher .consult-standee { width: 76px; height: auto; display: block; }
.consult-launcher-label { position: absolute; left: -6px; top: 30%; transform: translateX(-100%); background: var(--jade-strong); color: #fff; font-size: 12px; font-weight: 800; letter-spacing: .02em; padding: 6px 11px; border-radius: 10px 10px 2px 10px; white-space: nowrap; box-shadow: var(--sh-md); }
.consult-launcher-label::after { content: ""; position: absolute; right: -5px; bottom: 8px; border: 5px solid transparent; border-left-color: var(--jade-strong); }
.consult-fab.is-open .consult-launcher { width: 46px; height: 46px; border-radius: 50%; justify-content: center; align-items: center; background: var(--jade-strong); color: #fff; filter: none; box-shadow: var(--sh-md); }
.consult-fab.is-open .consult-launcher svg { width: 22px; height: 22px; }

/* 对话面板 */
.consult-panel { width: min(360px, calc(100vw - 40px)); height: min(560px, calc(100vh - 120px)); background: var(--card); border-radius: var(--r-lg); box-shadow: var(--sh-lg); border: 1px solid var(--line); overflow: hidden; display: flex; flex-direction: column; animation: consultIn .2s ease; }
@keyframes consultIn { from { opacity: 0; transform: translateY(12px) scale(.98); } to { opacity: 1; transform: none; } }
.consult-head { display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: linear-gradient(160deg, var(--jade) 0%, var(--jade-strong) 100%); color: #fff; flex: none; }
.consult-head-avatar { width: 38px; height: 38px; border-radius: 10px; object-fit: cover; object-position: top; background: rgba(255,255,255,.2); flex: none; }
.consult-head-tx { display: grid; gap: 1px; flex: 1; min-width: 0; }
.consult-head-tx span { font-size: 12px; color: rgba(255,255,255,.8); }
.consult-head-tx strong { font-size: 15px; font-weight: 800; }
.consult-head-phone { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; color: #fff; background: rgba(255,255,255,.16); flex: none; }
.consult-head-phone:hover { background: rgba(255,255,255,.28); }
.consult-head-phone svg { width: 16px; height: 16px; }
.consult-x { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; color: #fff; background: rgba(255,255,255,.16); flex: none; border: 0; cursor: pointer; }
.consult-x:hover { background: rgba(255,255,255,.28); }
.consult-x svg { width: 16px; height: 16px; }

.consult-msgs { flex: 1; min-height: 0; overflow-y: auto; padding: 16px 14px; display: flex; flex-direction: column; gap: 12px; background: var(--paper); }
.cmsg { display: flex; gap: 8px; max-width: 100%; }
.cmsg-user { justify-content: flex-end; }
.cmsg-bot { justify-content: flex-start; }
.cavatar { width: 28px; height: 28px; border-radius: 8px; overflow: hidden; flex: none; background: var(--jade-soft); }
.cavatar img { width: 100%; height: 100%; object-fit: cover; object-position: top; }
.cbubble-wrap { display: grid; gap: 6px; max-width: 80%; }
.cbubble { font-size: var(--fs-sm); line-height: 1.65; padding: 10px 13px; border-radius: 14px; word-break: break-word; }
.cmsg-bot .cbubble { background: var(--card); color: var(--ink); border: 1px solid var(--line); border-top-left-radius: 4px; }
.cmsg-user .cbubble { background: var(--jade); color: #fff; border-top-right-radius: 4px; max-width: 82%; }
.csrc { display: block; margin-top: 6px; font-size: 11px; color: var(--ink-3); }
.cmsg-bot .cbubble .csrc { color: var(--ink-3); }
.chandoff { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; font-size: 12px; color: var(--ink-2); background: var(--jade-soft); border-radius: 10px; padding: 8px 10px; }
.chandoff svg { width: 15px; height: 15px; color: var(--jade); flex: none; }
.chandoff span { font-weight: 700; }
.chandoff a { font-weight: 800; color: var(--jade-ink); text-decoration: underline; }
.ctyping { display: inline-flex; gap: 4px; align-items: center; }
.ctyping i { width: 6px; height: 6px; border-radius: 50%; background: var(--ink-3); animation: ctype 1s infinite; }
.ctyping i:nth-child(2) { animation-delay: .15s; }
.ctyping i:nth-child(3) { animation-delay: .3s; }
@keyframes ctype { 0%, 60%, 100% { opacity: .3; transform: translateY(0); } 30% { opacity: 1; transform: translateY(-3px); } }

.consult-quicks { flex: none; display: flex; flex-wrap: wrap; gap: 8px; padding: 14px 14px 10px; border-top: 1px solid var(--line); }
.consult-quicks button { font-size: 12px; font-weight: 600; color: var(--jade-ink); background: var(--jade-soft); border: 0; border-radius: 999px; padding: 6px 12px; cursor: pointer; transition: background .14s; }
.consult-quicks button:hover { background: color-mix(in srgb, var(--jade) 20%, var(--card)); }
.consult-input { flex: none; display: flex; align-items: center; gap: 8px; padding: 6px 14px 18px; background: var(--card); }
/* 企微客服入口条（固定在客服面板底部） */
.consult-wecom-bar { display: flex; align-items: stretch; gap: 0; padding: 0; background: var(--card); border-top: 1px solid var(--line); }
.consult-wecom-bar a { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 6px; font-size: 12px; font-weight: 700; text-decoration: none; padding: 10px 8px; transition: background .12s; }
.consult-wecom-bar a:first-child { color: #07C160; background: #f0faf4; border-right: 1px solid var(--line); }
.consult-wecom-bar a:first-child:hover { background: #e0f5ea; }
.consult-wecom-bar a:last-child { color: var(--jade-ink); background: var(--paper); }
.consult-wecom-bar a:last-child:hover { background: var(--jade-soft); }
.consult-wecom-bar svg { width: 15px; height: 15px; }
.consult-input input { flex: 1; min-width: 0; height: 40px; padding: 0 14px; border: 1px solid var(--line-2); border-radius: 999px; font: inherit; font-size: var(--fs-sm); color: var(--ink); background: var(--paper); }
.consult-input input:focus { outline: none; border-color: var(--jade); box-shadow: 0 0 0 3px var(--jade-soft); }
.consult-input button { width: 40px; height: 40px; border-radius: 50%; flex: none; display: grid; place-items: center; background: var(--jade); color: #fff; border: 0; cursor: pointer; }
.consult-input button:hover { background: var(--jade-strong); }
.consult-input button:disabled { opacity: .5; cursor: not-allowed; }
.consult-input button svg { width: 18px; height: 18px; }

@media (max-width: 768px) {
  /* Tab栏存在时，浮层上移避免遮挡 */
  .back-to-top { bottom: 78px; }
  .consult-fab { bottom: 140px; }
}
@media (max-width: 560px) {
  .consult-fab { right: 14px; bottom: 130px; }
  .back-to-top { right: 14px; bottom: 74px; width: 46px; height: 46px; }
  .consult-launcher .consult-standee { width: 64px; }
  .consult-panel { width: calc(100vw - 28px); height: min(76vh, calc(100vh - 96px)); }
}

/* 地图 marker：常显墓园名（照老站）。
   ⚠️ 千万不要给 .muyi-pin 设 position！Leaflet 依赖 .leaflet-marker-icon 的 position:absolute
   用 transform 把 marker 钉在经纬度上，覆盖成 relative 会让 marker 脱离绝对定位，缩放/拖动时标签漂移（飘到海里）。
   .mk-label 用 absolute，会自动锚定到 Leaflet 设为 absolute 的 marker 根节点。*/
.muyi-pin .mk-label { position: absolute; left: 50%; bottom: 30px; transform: translateX(-50%); max-width: 116px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; background: rgba(13,51,42,.82); color: #fff; font-size: 12px; font-weight: 700; line-height: 1.3; padding: 3px 9px; border: 1px solid rgba(255,255,255,.42); border-radius: 999px; box-shadow: 0 6px 14px rgba(16,35,30,.2); pointer-events: none; z-index: 5; }
.muyi-pin .mk-label::after { content: ""; position: absolute; left: 50%; bottom: -4px; transform: translateX(-50%); border: 4px solid transparent; border-top-color: rgba(13,51,42,.82); }
.muyi-pin.is-active .mk-label { max-width: 150px; background: var(--jade-strong); border-color: rgba(255,255,255,.66); font-weight: 800; z-index: 8; }
.muyi-pin.is-active .mk-label::after { border-top-color: var(--jade-strong); }
.leaflet-tooltip.muyi-tip { background: var(--jade-strong); color: #fff; border: 0; box-shadow: var(--sh-md); font-size: 12px; font-weight: 700; padding: 4px 9px; border-radius: 8px; }
.leaflet-tooltip.muyi-tip.leaflet-tooltip-top::before { border-top-color: var(--jade-strong); }

/* 报告页点位分布地图：山水易图同款空心大头针 —— 空心圈里是序号，针尖下挂白底评分牌 */
/* 注意：全局 .leaflet-mount 是 absolute+inset:0（适配首页/详情卡片），这里必须覆盖回流布局，否则铺满整页 */
.rp-ptmap { position: relative; inset: auto; height: clamp(420px, 52vh, 600px); border-radius: var(--r-md); overflow: hidden; border: 1px solid var(--line); background: var(--paper-2); }
.rp-map-note { margin: 8px 2px 0; font-size: 12px; line-height: 1.6; color: var(--ink-3); }
/* Leaflet supplies position:absolute for the marker itself; never override it or markers join normal flow and drift. */
.rp-pin { text-align: center; }
/* 针头：粗描边空心圆，圈内放序号 */
.rp-pin .pp-head { position: absolute; left: 50%; top: 0; transform: translateX(-50%); display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; background: #fff; border: 6px solid var(--jade); border-radius: 50%; box-shadow: 0 2px 6px rgba(16,35,30,.4); cursor: pointer; transition: transform .12s ease; }
.rp-pin .pp-head i { font-style: normal; font-size: 10px; font-weight: 800; color: var(--jade-strong); line-height: 1; }
/* 针尖 */
.rp-pin .pp-tail { position: absolute; left: 50%; top: 22px; transform: translateX(-50%); border: 6px solid transparent; border-top: 8px solid var(--jade); filter: drop-shadow(0 1px 1px rgba(16,35,30,.3)); }
/* 评分牌：针尖下白底小牌 */
.rp-pin .pp-score { position: absolute; left: 50%; top: 31px; transform: translateX(-50%); background: rgba(255,255,255,.95); color: var(--ink); font-size: 10px; font-weight: 800; line-height: 1; padding: 3px 6px; border-radius: 6px; border: 1px solid var(--line); box-shadow: 0 1px 4px rgba(16,35,30,.25); white-space: nowrap; cursor: pointer; }
.rp-pin:hover .pp-head { transform: translateX(-50%) scale(1.12); }
.rp-pin::before { content: ''; position: absolute; left: 50%; top: 0; transform: translateX(-50%); width: 44px; height: 100%; }
/* 选中态：琥珀色放大 */
.rp-pin.is-active .pp-head { top: -3px; width: 30px; height: 30px; border-width: 7px; border-color: var(--amber); box-shadow: 0 0 0 3px rgba(192,134,58,.28), 0 2px 8px rgba(16,35,30,.4); }
.rp-pin.is-active .pp-head i { font-size: 12px; color: var(--amber); }
.rp-pin.is-active .pp-tail { top: 28px; border-width: 7px; border-top: 9px solid var(--amber); }
.rp-pin.is-active .pp-score { top: 38px; font-size: 11px; color: #7A5310; border-color: rgba(192,134,58,.5); box-shadow: 0 0 0 2px rgba(192,134,58,.18), 0 1px 4px rgba(16,35,30,.25); }
/* 点位聚合泡（紧凑圆形：只显数量，最高分悬停提示） */
.rp-cluster-pin .rcp-b { display: inline-flex; align-items: center; justify-content: center; min-width: 32px; height: 32px; background: var(--jade-strong); color: #fff; font-size: 13px; font-weight: 800; line-height: 1; padding: 0 6px; border: 2px solid #fff; border-radius: 999px; box-shadow: 0 3px 10px rgba(16,35,30,.4); cursor: pointer; white-space: nowrap; }
.rp-cluster-pin { position: relative; }
.rp-cluster-pin::before { content: ''; position: absolute; inset: -8px; }
/* 报告列表加载更多 */
.rp-more { width: 100%; margin-top: 10px; justify-content: center; }
/* 非上海城市暂无公开报告的诚实空态 */
.rp-city-empty { display: grid; gap: 10px; justify-items: start; padding: 6px 0; }

/* 首页 hero：真实大图铺满 + 文字压图（照老站，玉绿气质）*/
.hero.hero-cover { min-height: 600px; display: flex; align-items: center; }
.hero-cover-bg { position: absolute; inset: 0; z-index: 0; background-size: cover; background-position: center; }
.hero-cover-inner { position: relative; z-index: 1; display: grid; gap: 22px; justify-items: center; text-align: center; padding: var(--sp-9) 0; margin-inline: auto; max-width: 880px; }
/* B9：hero左右分栏 + 玻璃态预览卡 */
.hero-split { display: grid; grid-template-columns: 1fr 340px; gap: 48px; align-items: center; text-align: left; max-width: var(--wrap); }
.hero-copy { display: grid; gap: 20px; justify-items: start; }
.hero-cards { display: grid; gap: 14px; }
.hero-glass-card {
  display: grid; grid-template-columns: 40px 1fr; grid-template-rows: auto auto; gap: 4px 14px; align-items: center;
  padding: 16px 18px; border-radius: var(--r-lg); text-decoration: none;
  background: rgba(255,255,255,.12); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,.22); box-shadow: 0 4px 20px rgba(0,0,0,.12);
  transition: transform .2s ease, background .2s ease, box-shadow .2s ease;
}
.hero-glass-card:hover { transform: translateY(-3px); background: rgba(255,255,255,.2); box-shadow: 0 8px 28px rgba(0,0,0,.18); }
.hgc-icon { grid-row: 1 / span 2; width: 40px; height: 40px; border-radius: 12px; background: rgba(255,255,255,.18); display: grid; place-items: center; }
.hgc-icon svg { width: 22px; height: 22px; color: #fff; }
.hgc-body b { display: block; font-size: 15px; font-weight: 700; color: #fff; }
.hgc-body span { font-size: 12px; color: rgba(255,255,255,.78); }
.hgc-bar { grid-column: 1 / -1; height: 3px; border-radius: 3px; background: rgba(255,255,255,.18); overflow: hidden; }
.hgc-bar i { display: block; height: 100%; border-radius: 3px; background: linear-gradient(90deg, rgba(255,255,255,.7), rgba(255,255,255,.4)); }
@media (max-width: 1024px) {
  .hero-split { grid-template-columns: 1fr; text-align: center; justify-items: center; }
  .hero-copy { justify-items: center; }
  .hero-cards { display: none; }
}
.hero-eyebrow { display: inline-flex; align-items: center; gap: 8px; font-size: var(--fs-cap); font-weight: 700; letter-spacing: .04em; color: #EAF3EE; background: rgba(255,255,255,.14); backdrop-filter: blur(4px); padding: 7px 16px; border-radius: 999px; box-shadow: inset 0 0 0 1px rgba(255,255,255,.30); }
.hero-cover h1 { font-size: clamp(38px, 5.2vw, 62px); line-height: 1.12; font-weight: 800; color: #fff; letter-spacing: -.01em; text-shadow: 0 2px 24px rgba(0,0,0,.34); }
.hero-cover .hero-sub { max-width: 620px; font-size: 18px; line-height: 1.8; color: rgba(255,255,255,.92); text-shadow: 0 1px 12px rgba(0,0,0,.3); }
.hero-cover .hero-actions { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; margin-top: 4px; }
.btn-glass { background: rgba(255,255,255,.16); color: #fff; box-shadow: inset 0 0 0 1.5px rgba(255,255,255,.55); backdrop-filter: blur(8px); }
.btn-glass:hover { background: rgba(255,255,255,.26); color: #fff; transform: translateY(-1px); }
.hero-stats { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 18px 28px; margin-top: 12px; }
.hero-stats > div { display: grid; gap: 2px; justify-items: center; }
.hero-stats strong { font-size: 30px; font-weight: 800; color: #fff; font-variant-numeric: tabular-nums; text-shadow: 0 2px 14px rgba(0,0,0,.3); }
.hero-stats strong em { font-size: 16px; font-style: normal; margin-left: 2px; }
.hero-stats span { font-size: var(--fs-cap); color: rgba(255,255,255,.84); }
.hero-stat-sep { width: 1px; height: 34px; background: rgba(255,255,255,.30); }
@media (max-width: 640px) {
  .hero.hero-cover { min-height: 500px; }
  .hero-cover-inner { padding: var(--sp-8) 0; gap: 18px; }
  .hero-cover h1 { font-size: clamp(30px, 8vw, 40px); }
  .hero-cover .hero-sub { font-size: 16px; }
  .hero-stat-sep { display: none; }
  .hero-stats { gap: 14px 22px; }
  .hero-cover .hero-actions .btn { width: 100%; max-width: 320px; }
}

/* 纪念堂/流程"三步"之间的连接虚线（桌面），不再是孤立三块 */
@media (min-width: 761px) {
  .steps .step { position: relative; }
  .steps .step .num { position: relative; z-index: 1; }
  .steps .step:not(:last-child)::after {
    content: ""; position: absolute; top: calc(var(--sp-5) + 21px);
    left: calc(var(--sp-5) + 54px); right: calc(-1 * var(--sp-5));
    border-top: 2px dashed var(--line-2); z-index: 0;
  }
}

/* 顶部城市切换（移植自老站，全站联动 setCity）*/
.city-switch { position: relative; flex: none; }
.city-switch-btn { display: inline-flex; align-items: center; gap: 5px; padding: 8px 12px; border-radius: var(--r-pill); background: var(--card); box-shadow: inset 0 0 0 1px var(--line-2); color: var(--ink); font-size: var(--fs-sm); white-space: nowrap; cursor: pointer; }
.city-switch-btn:hover { box-shadow: inset 0 0 0 1px var(--jade); color: var(--jade-ink); }
.city-switch-btn > svg:first-child { width: 15px; height: 15px; color: var(--jade); flex: none; }
.city-switch-btn b { font-weight: 800; }
.city-switch-tip { color: var(--ink-3); font-weight: 600; }
.city-switch-btn > svg:last-child { width: 14px; height: 14px; color: var(--ink-3); transition: transform .2s; }
.city-switch.is-open .city-switch-btn > svg:last-child { transform: rotate(90deg); }
/* 页面内联城市切换按钮（找墓园/地图页，比头部版更大更醒目） */
.city-switch-page { display: inline-block; }
.city-switch-btn-page { display: inline-flex; align-items: center; gap: 10px; padding: 12px 20px; background: var(--card); border: 1px solid var(--line-2); border-radius: 12px; box-shadow: var(--sh-sm); cursor: pointer; font-family: inherit; transition: all .16s ease; }
.city-switch-btn-page:hover { border-color: var(--jade); box-shadow: var(--sh-md); }
.city-switch-btn-page > svg:first-child { width: 18px; height: 18px; color: var(--jade); }
.city-switch-btn-page b { font-size: 16px; font-weight: 800; color: var(--ink); }
.city-switch-btn-page .city-switch-tip { display: inline; font-size: var(--fs-cap); }
.city-switch-btn-page > svg:last-child { width: 16px; height: 16px; }
.city-switch-panel { position: fixed; left: 50%; top: 80px; transform: translateX(-50%); z-index: 61; width: min(1120px, calc(100vw - 48px)); max-height: calc(100vh - 100px); background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--sh-lg); padding: 20px 24px; display: grid; gap: 14px; overflow: hidden; }
.city-switch-panel .csp-head, .city-switch-panel .csp-all-label { font-size: var(--fs-sm); color: var(--ink-3); font-weight: 700; }
.city-switch-panel .csp-all-label { margin-top: 2px; }
.city-switch-panel .csp-hot { display: flex; flex-wrap: wrap; gap: 8px; }
.city-switch-panel .csp-hot .chip { font-size: 13px; padding: 6px 14px; }
.city-switch-panel .city-select-wrap { display: flex; align-items: center; position: relative; }
/* 城市选择器搜索框 + 可滚动省份分组列表（桌面宽铺） */
.csp-search { display: flex; align-items: center; gap: 8px; background: var(--paper-2); border: 1px solid var(--line-2); border-radius: 10px; padding: 0 14px; height: 42px; }
.csp-search svg { width: 17px; height: 17px; color: var(--ink-3); flex: none; }
.csp-search input { flex: 1; border: none; outline: none; background: none; font-size: 15px; color: var(--ink); font-family: inherit; min-width: 0; }
.csp-list { max-height: calc(100vh - 320px); overflow-y: auto; display: grid; gap: 8px; padding-right: 8px; }
.csp-prov-h { font-size: 13px; font-weight: 700; color: var(--ink-3); padding: 8px 8px 4px; position: sticky; top: 0; background: var(--card); z-index: 1; }
.csp-prov-items { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; }
/* 左省右市两栏联动（浏览模式） */
.csp-cols { display: grid; grid-template-columns: 190px minmax(0,1fr); gap: 16px; max-height: calc(100vh - 320px); }
.csp-prov-col { display: flex; flex-direction: column; min-height: 0; border-right: 1px solid var(--line); padding-right: 12px; }
.csp-prov-scroll { overflow-y: auto; display: grid; gap: 2px; align-content: start; min-height: 0; }
.csp-prov-item { display: flex; align-items: center; justify-content: space-between; gap: 6px; padding: 9px 12px; border: none; border-radius: 8px; background: none; cursor: pointer; font-size: var(--fs-sm); font-weight: 600; color: var(--ink-2); text-align: left; transition: all .14s ease; white-space: nowrap; }
.csp-prov-item em { font-style: normal; font-size: 11px; color: var(--ink-3); font-weight: 600; }
.csp-prov-item:hover { background: var(--paper-2); color: var(--ink); }
.csp-prov-item.is-active { background: var(--jade-soft); color: var(--jade-ink); }
.csp-prov-item.is-active em { color: var(--jade); }
.csp-city-col { display: flex; flex-direction: column; min-height: 0; }
.csp-city-col .csp-prov-items { overflow-y: auto; align-content: start; min-height: 0; grid-template-columns: repeat(4, 1fr); }
.csp-search-result { display: grid; gap: 8px; }
.csp-city { display: flex; align-items: center; justify-content: space-between; gap: 6px; padding: 8px 12px; border: 1px solid transparent; border-radius: 8px; background: none; cursor: pointer; font-size: var(--fs-sm); color: var(--ink); text-align: left; transition: all .14s ease; }
.csp-city span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.csp-city em { font-style: normal; font-size: 11px; color: var(--ink-3); flex: none; }
.csp-city:hover { background: var(--jade-soft); border-color: var(--jade); color: var(--jade-ink); }
.csp-city.is-active { background: var(--jade); border-color: var(--jade); color: #fff; }
.csp-city.is-active em { color: rgba(255,255,255,.8); }
.csp-empty { padding: 24px; text-align: center; color: var(--ink-3); font-size: var(--fs-sm); }
.site-header-inner .city-switch-tip { display: none; }
@media (max-width: 1100px) { .city-switch { order: 3; } }
/* 手机端城市选择器：全宽 + 两栏收窄 + 3列 */
@media (max-width: 640px) {
  .city-switch-btn .city-switch-tip { display: none; }
  .city-switch-panel { left: 12px; right: 12px; top: 70px; transform: none; width: auto; max-height: calc(100vh - 90px); overflow-y: auto; padding: 16px; }
  .csp-prov-items { grid-template-columns: repeat(3, 1fr); }
  .csp-list { max-height: none; overflow: visible; }
  .csp-cols { grid-template-columns: 108px minmax(0,1fr); gap: 10px; max-height: none; }
  .csp-prov-item { padding: 8px 8px; font-size: 13px; }
  .csp-city-col .csp-prov-items { grid-template-columns: repeat(2, 1fr); overflow: visible; }
}
/* 平板：4列 */
@media (min-width: 641px) and (max-width: 1024px) {
  .csp-prov-items { grid-template-columns: repeat(4, 1fr); }
}

/* why 区改为真实图片卡（图文并茂，替代纯图标+文字堆砌）*/
.why-grid .why-card { display: block; padding: 0; overflow: hidden; border-radius: var(--r-lg); background: var(--card); border: 1px solid var(--line); box-shadow: var(--sh-sm); transition: transform .16s ease, box-shadow .16s ease; }
.why-grid .why-card:hover { transform: translateY(-4px); box-shadow: var(--sh-md); }
.why-img { position: relative; height: 152px; background-size: cover; background-position: center; background-color: var(--paper-2); }
.why-img::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.04) 40%, rgba(0,0,0,.34)); }
/* 风水报告卡：真实评分环叠在实景上（永福园陵真实分），不再用P图假报告UI */
.why-score { position: absolute; right: 10px; bottom: 10px; z-index: 2; display: flex; flex-direction: column; align-items: center; gap: 3px; background: rgba(255,255,255,.92); border-radius: 14px; padding: 8px 12px 6px; box-shadow: var(--sh-md); }
.why-score em { font-style: normal; font-size: 10px; font-weight: 700; color: var(--ink-2); white-space: nowrap; }
.score-ring.why-ring { width: 64px; height: 64px; }
.score-ring.why-ring .ring-bg, .score-ring.why-ring .ring-fg { stroke-width: 8; }
.score-ring.why-ring .val b { font-size: 17px; }
.score-ring.why-ring .val span { display: none; }
.why-tag { position: absolute; left: 12px; top: 12px; z-index: 1; display: inline-flex; align-items: center; gap: 5px; padding: 5px 11px; border-radius: var(--r-pill); background: color-mix(in srgb, var(--card) 92%, transparent); color: var(--jade-ink); font-size: var(--fs-cap); font-weight: 700; box-shadow: var(--sh-sm); }
.why-tag svg { width: 14px; height: 14px; }
.why-body { padding: 15px 18px 20px; }
.why-body h3 { font-size: 17px; font-weight: 800; margin-bottom: 6px; color: var(--ink); }
.why-body p { color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.65; }

/* 移动端：城市切换从顶栏收进汉堡抽屉，顶栏不再拥挤 */
.nav-drawer-city { display: none; }
@media (max-width: 1100px) {
  .site-header-inner > .city-switch { display: none; }
  .nav-drawer-city { display: block; margin-bottom: var(--sp-3); }
  .nav-drawer-city .city-switch { width: 100%; }
  .nav-drawer-city .city-switch-btn { width: 100%; justify-content: flex-start; }
  .nav-drawer-city .city-switch-panel { position: static; width: 100%; max-width: none; box-shadow: none; border: 0; padding: 12px 0 0; }
}

/* 墓园卡无真实实拍时的环境示意封面（诚实标注，不冒充实拍）*/
.cem-cover-soft { position: relative; }
.cem-cover-soft::before { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(14,122,87,.10), rgba(16,28,22,.28)); z-index: 0; }
.cem-badge-soft { background: color-mix(in srgb, var(--card) 82%, transparent); color: var(--ink-2); }
.cem-badge-soft svg { color: var(--ink-3); }

/* 首页真实园区大图卡（眼见为实）*/
.park-section { padding-top: 0; }
.park-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-4); }
.park-card { display: block; border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--sh-sm); border: 1px solid var(--line); transition: transform .16s ease, box-shadow .16s ease; }
.park-card:hover { transform: translateY(-4px); box-shadow: var(--sh-md); }
.park-img { position: relative; height: 260px; background-size: cover; background-position: center; background-color: var(--paper-2); }
.park-img::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 42%, rgba(0,0,0,.64)); }
.park-badge { position: absolute; left: 12px; top: 12px; z-index: 1; display: inline-flex; align-items: center; gap: 4px; padding: 5px 11px; border-radius: var(--r-pill); background: color-mix(in srgb, var(--card) 90%, transparent); color: var(--jade-ink); font-size: var(--fs-cap); font-weight: 700; box-shadow: var(--sh-sm); }
.park-badge svg { width: 13px; height: 13px; }
.park-cap { position: absolute; left: 16px; right: 16px; bottom: 14px; z-index: 1; color: #fff; }
.park-cap b { display: block; font-size: 19px; font-weight: 800; text-shadow: 0 1px 8px rgba(0,0,0,.45); }
.park-cap span { display: block; font-size: var(--fs-cap); color: rgba(255,255,255,.9); margin-top: 3px; text-shadow: 0 1px 6px rgba(0,0,0,.45); }
@media (max-width: 960px) { .park-grid { grid-template-columns: 1fr; } .park-img { height: 220px; } }

/* ===== 移动端分区上下留白收敛（桌面 96px 在手机过空，收敛到合理节奏；置于文件末尾保证覆盖） ===== */
@media (max-width: 900px) {
  .section, .core { padding: 64px 0; }
  .section-tight { padding: 48px 0; }
  .section-head { margin-bottom: 32px; }
}
.consult-launcher-ic { display: none; }
@media (max-width: 560px) {
  .section, .core { padding: 44px 0; }
  .section-tight { padding: 34px 0; }
  .section-head { margin-bottom: 24px; }
  .section-head p { font-size: 15px; line-height: 1.7; }
  /* 移动端浮层减负：立牌人像换成紧凑圆形客服按钮，不再压盖卡片内容 */
  .consult-launcher-label { display: none; }
  .consult-launcher .consult-standee { display: none; }
  .consult-launcher { filter: none; }
  .consult-launcher-ic { display: grid; place-items: center; width: 52px; height: 52px; border-radius: 50%; background: linear-gradient(135deg, var(--jade), var(--jade-strong)); color: #fff; box-shadow: var(--sh-md); }
  .consult-launcher-ic svg { width: 24px; height: 24px; }
}

/* ===== B10：移动端底部Tab导航 ===== */
.mobile-tab-bar { display: none; }
@media (max-width: 768px) {
  .mobile-tab-bar {
    display: grid; grid-template-columns: repeat(5, 1fr);
    position: fixed; bottom: 0; left: 0; right: 0; z-index: 900;
    background: rgba(255,255,255,.96); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
    border-top: 1px solid var(--line);
    padding: 6px 0 calc(6px + env(safe-area-inset-bottom, 0px));
    box-shadow: 0 -2px 12px rgba(0,0,0,.06);
  }
  .mtab-item {
    display: flex; flex-direction: column; align-items: center; gap: 2px;
    padding: 6px 0 4px; font-size: 10px; font-weight: 600; color: var(--ink-3);
    text-decoration: none; transition: color .15s ease; -webkit-tap-highlight-color: transparent;
  }
  .mtab-item svg { width: 22px; height: 22px; transition: transform .15s ease; }
  .mtab-item.is-active { color: var(--jade); }
  .mtab-item.is-active svg { transform: scale(1.1); }
  .mtab-center svg { width: 26px; height: 26px; background: var(--jade-soft); border-radius: 50%; padding: 4px; }
  .mtab-center.is-active svg { background: var(--jade); color: #fff; }
  /* 底部Tab栏存在时，body加底部留白防遮挡 */
  main { padding-bottom: 64px; }
  /* 顾问打开时Tab栏下移避免叠压 */
  .consult-fab.is-open ~ .mobile-tab-bar { transform: translateY(100%); }
}

/* ===== B15：卡片hover动效与微交互（@media hover:hover 防移动端误触） ===== */
@media (hover: hover) {
  .cem-card:hover { transform: translateY(-4px); box-shadow: var(--sh-lg, 0 12px 32px rgba(0,0,0,.12)); }
  .cem-card:hover .cem-cover.has-img { transform: scale(1.04); }
  .cem-card:hover h3 { color: var(--jade-ink); }
  .why-card:hover h3 { color: var(--jade-ink); }
  .park-card:hover .park-img { transform: scale(1.03); }
  .park-card:hover .park-cap { background: linear-gradient(180deg, transparent, rgba(0,0,0,.72)); }
  .nav a:hover::after { transform: scaleX(1); }
  .report-row:hover { background: var(--jade-soft); }
  .btn-ghost:hover { transform: translateY(-1px); box-shadow: var(--sh-sm); }
  .btn-ghost:active { transform: scale(.97); }
}
.park-img { transition: transform .3s cubic-bezier(.4,0,.2,1); }
.park-cap { transition: background .25s ease; }
.cem-card h3 { transition: color .2s ease; }
.why-card h3 { transition: color .2s ease; }

/* ===== B5/B6：隐私政策 + 服务条款法律页面 ===== */
.legal-page { padding: 64px 0 80px; }
.legal-page .wrap { max-width: 820px; }
.legal-page h1 { font-size: 2rem; font-weight: 700; color: var(--ink); margin-bottom: 8px; }
.legal-page .legal-update { font-size: 0.85rem; color: var(--ink-3); margin-bottom: 32px; }
.legal-page h2 { font-size: 1.15rem; font-weight: 600; color: var(--jade-ink); margin: 36px 0 12px; padding-bottom: 8px; border-bottom: 1px solid var(--line); }
.legal-page p { font-size: 0.95rem; line-height: 1.8; color: var(--ink-2); margin-bottom: 12px; }
.legal-page ul { list-style: none; padding: 0; margin: 0 0 16px; }
.legal-page li { position: relative; padding: 6px 0 6px 20px; font-size: 0.93rem; line-height: 1.7; color: var(--ink-2); }
.legal-page li::before { content: ''; position: absolute; left: 0; top: 14px; width: 6px; height: 6px; border-radius: 50%; background: var(--jade); opacity: 0.6; }
.legal-page li strong { color: var(--ink); font-weight: 600; }
@media (max-width: 768px) {
  .legal-page { padding: 40px 0 56px; }
  .legal-page h1 { font-size: 1.5rem; }
  .legal-page h2 { font-size: 1.05rem; margin-top: 28px; }
}

/* ===== B24：全站响应式断点统一优化 ===== */
/* 1024px（iPad横）：导航完整显示、三列卡片 */
@media (max-width: 1024px) {
  .cem-grid { grid-template-columns: repeat(2, 1fr); }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: var(--sp-5); }
  .footer-trust { gap: 10px 16px; }
}
/* 768px（iPad竖）：双列卡片、侧栏收起 */
@media (max-width: 768px) {
  .cem-grid { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr; }
  .footer-trust { justify-content: center; }
  .reports-stage-layout { grid-template-columns: 1fr; }
  .report-stage { position: static; justify-items: center; }
  .radar-wrap { grid-template-columns: 1fr; justify-items: center; }
  .radar-svg { max-width: 240px; }
  .dl-layout { grid-template-columns: 1fr; }
  .cd-body { grid-template-columns: 1fr; }
  .why-compare { grid-template-columns: 1fr; }
  .hero-stats { gap: 12px 18px; }
  .hero-stats strong { font-size: 24px; }
  /* 报告页搜索面板在移动端的优化 */
  .rp-cem-grid { grid-template-columns: 1fr; }
  .rp-filters { gap: 10px 16px; }
  .rp-filter-group { flex-wrap: wrap; gap: 8px; }
}
/* 390px（iPhone）：单列、卡片全宽、字号收敛 */
@media (max-width: 390px) {
  .wrap { padding-inline: 14px; }
  .hero-cover h1 { font-size: 28px; }
  .hero-cover .hero-sub { font-size: 14px; }
  .hero-actions .btn { width: 100%; justify-content: center; }
  .section-head h2 { font-size: 22px; }
  .cem-card { grid-template-rows: 140px auto; }
  .cd-gallery { grid-template-columns: repeat(2, 1fr); }
  .cd-shot { height: 140px; }
  .steps { grid-template-columns: 1fr; }
  .partner-hero h1 { font-size: 24px; }
  /* 报告页手机框在极窯屏下缩小 */
  .phone-frame { width: min(340px, 100%); border-radius: 36px; padding: 10px; }
  .phone-screen { height: 620px; border-radius: 28px; }
  .phone-notch { width: 100px; height: 18px; }
  /* 信任条在小屏改为网格 */
  .trust-strip .wrap { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; justify-content: start; }
  .trust-sep { display: none; }
  /* 搜索框触摸友好 */
  .rp-searchbar input { min-height: 48px; font-size: 16px; }
  .rp-filters { gap: 12px; }
  .rp-chip { padding: 8px 14px; }
}
/* 移动端按钮最小触摸区域保证（44px） */
@media (max-width: 768px) {
  .chip { min-height: 40px; padding: 10px 14px; }
  .filter-bar .chip { min-height: 38px; padding: 8px 12px; }
  .segmented button { min-height: 40px; padding: 10px 14px; }
  .rp-chip { min-height: 40px; }
  .eyebrow { font-size: 14px; }
  .footer-city-btn { min-height: 44px; padding: 10px 0; }
}
/* 1920px（宽屏）：版心封顶1400、两侧留白均匀 */
@media (min-width: 1920px) {
  .wrap { max-width: var(--wrap); }
}

/* ============================================================
   纪念堂管理工作台 + 公开页
   ============================================================ */
.mem-manage-page, .mem-hall-page { padding: var(--sp-7) 0 var(--sp-9); }
.mem-manage-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: var(--sp-5); }
.mem-manage-head > div:first-child { display: flex; align-items: flex-start; gap: 14px; }
.mem-manage-head > div:first-child > svg { width: 36px; height: 36px; color: var(--jade); flex: none; margin-top: 2px; }
.mem-manage-head h1 { font-size: var(--fs-h1); font-weight: 800; }
.mem-manage-head p { color: var(--ink-2); font-size: var(--fs-sm); max-width: 600px; line-height: 1.7; margin-top: 4px; }
.mem-manage-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-5); align-items: start; margin-top: var(--sp-5); }
.mem-col { display: grid; gap: var(--sp-5); }
.mem-section { padding: var(--sp-5); }
.mem-sec-h { display: flex; align-items: center; gap: 8px; margin-bottom: 14px; }
.mem-sec-h svg { width: 20px; height: 20px; color: var(--jade); flex: none; }
.mem-sec-h h2, .mem-sec-h h3 { font-size: var(--fs-h3); font-weight: 800; flex: 1; }
.mem-login-gate { text-align: center; padding: var(--sp-9) var(--sp-5); display: grid; gap: 16px; justify-items: center; max-width: 480px; margin: 0 auto; }
.mem-login-gate > svg { width: 48px; height: 48px; color: var(--jade); }
.mem-login-gate h1 { font-size: var(--fs-h2); font-weight: 800; }
.mem-login-gate p { color: var(--ink-2); line-height: 1.7; }
.mem-empty { text-align: center; padding: var(--sp-3) var(--sp-4); color: var(--ink-3); }
.mem-empty svg { width: 28px; height: 28px; color: var(--line-2); margin: 0 auto 4px; }
.mem-empty p { font-weight: 700; color: var(--ink-2); margin-bottom: 2px; font-size: var(--fs-sm); }
.mem-empty span { font-size: var(--fs-cap); }
/* 表单带图标 */
.mem-form { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.mem-form label { display: flex; align-items: center; gap: 8px; font-size: var(--fs-cap); font-weight: 700; color: var(--ink-2); flex-wrap: wrap; }
.mem-form label > svg { width: 16px; height: 16px; color: var(--jade); flex: none; }
.mem-form input, .mem-form select, .mem-form textarea { width: 100%; flex-basis: 100%; min-height: var(--touch); padding: 10px 14px; border: 1px solid var(--line-2); border-radius: var(--r-sm); font: inherit; font-size: var(--fs-sm); color: var(--ink); background: var(--paper); margin-top: 4px; }
.mem-form input:focus, .mem-form select:focus, .mem-form textarea:focus { outline: none; border-color: var(--jade); box-shadow: 0 0 0 3px var(--jade-soft); }
.mem-form textarea { min-height: 100px; resize: vertical; }
.mem-form button[type="submit"] { grid-column: 1 / -1; }
.mem-wide { grid-column: 1 / -1; }
.mem-form-msg { grid-column: 1 / -1; font-size: var(--fs-cap); color: var(--ink-3); margin-top: 4px; }
.mem-form-msg.mem-ok { color: var(--jade-ink); font-weight: 700; }
.mem-form-msg.mem-err { color: var(--danger); font-weight: 700; }
/* 纪念堂卡片列表 */
.mem-hall-list { display: grid; gap: 12px; }
.mem-hall-card { padding: 16px 18px; }
.mhc-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.mhc-head strong { display: flex; align-items: center; gap: 6px; font-size: 15px; flex: 1; }
.mhc-head strong svg { width: 16px; height: 16px; color: var(--jade); }
.mhc-meta { display: flex; align-items: center; gap: 6px; margin-top: 6px; font-size: var(--fs-cap); color: var(--ink-3); }
.mhc-meta svg { width: 14px; height: 14px; color: var(--ink-3); }
.mhc-acts { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.chip-jade { background: var(--jade-soft); color: var(--jade-ink); }
.chip-red { background: #fde8e4; color: var(--danger); }
/* 主题选择卡片 */
.mem-theme-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.mem-theme-card { display: grid; gap: 4px; justify-items: center; padding: 8px; border: 2px solid var(--line); border-radius: var(--r-md); cursor: pointer; transition: border-color .15s, box-shadow .15s; text-align: center; }
.mem-theme-card input { display: none; }
.mem-theme-card img { width: 100%; height: 64px; object-fit: cover; border-radius: var(--r-sm); cursor: zoom-in; transition: opacity .15s; }
.mem-theme-card img:hover { opacity: .85; }
.mem-theme-card span { font-size: var(--fs-cap); font-weight: 700; color: var(--ink-2); }
.mem-theme-card.is-active, .mem-theme-card:has(input:checked) { border-color: var(--jade); box-shadow: 0 0 0 3px var(--jade-soft); }
.mem-theme-placeholder { width: 100%; height: 80px; display: grid; place-items: center; background: var(--paper-2); border-radius: var(--r-sm); }
.mem-theme-placeholder svg { width: 28px; height: 28px; color: var(--ink-3); }
/* 音乐选择 */
.mem-music-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.mem-music-item { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border: 1.5px solid var(--line); border-radius: var(--r-sm); cursor: pointer; transition: border-color .15s; }
.mem-music-item input { display: none; }
.mem-music-item svg { width: 18px; height: 18px; color: var(--jade); flex: none; }
.mem-music-item span { flex: 1; font-size: var(--fs-sm); font-weight: 700; }
.mem-music-item.is-active, .mem-music-item:has(input:checked) { border-color: var(--jade); background: var(--jade-soft); }
.mem-play-btn { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; background: var(--jade-soft); color: var(--jade); border: 0; cursor: pointer; flex: none; transition: background .15s, color .15s; }
.mem-play-btn:hover { background: var(--jade); color: #fff; }
.mem-play-btn.is-playing { background: var(--amber); color: #fff; }
.mem-play-btn.is-playing:hover { background: #b87c1e; }
.mem-play-btn svg { width: 16px; height: 16px; }
/* 素材列表 */
.mem-asset-list { display: grid; gap: 6px; }
.mem-asset-row { display: flex; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.mem-asset-icon svg { width: 18px; height: 18px; color: var(--jade); }
.mem-asset-name { flex: 1; font-size: var(--fs-sm); font-weight: 600; }
.btn-icon { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; color: var(--ink-3); flex: none; }
.btn-icon:hover { background: #fde8e4; color: var(--danger); }
.btn-icon svg { width: 14px; height: 14px; }
/* 认领区折叠 */
.mem-claim-section summary { cursor: pointer; list-style: none; }
.mem-claim-section summary::-webkit-details-marker { display: none; }
.mem-expand { margin-left: auto; transition: transform .2s; }
.mem-expand svg { width: 16px; height: 16px; color: var(--ink-3); }
.mem-claim-section[open] .mem-expand { transform: rotate(90deg); }
.mem-claim-section .mem-form { margin-top: 14px; }
/* 自定义确认弹窗 */
.confirm-overlay { position: fixed; inset: 0; z-index: var(--z-modal); display: none; align-items: center; justify-content: center; background: rgba(20,15,8,.5); backdrop-filter: blur(3px); }
.confirm-overlay.is-open { display: flex; }
.confirm-box { max-width: 380px; width: calc(100% - 40px); padding: var(--sp-6); text-align: center; border-radius: var(--r-lg); box-shadow: var(--sh-lg); animation: confirmIn .18s ease; }
.confirm-box .cm-msg { font-size: 16px; font-weight: 600; color: var(--ink); line-height: 1.7; margin-bottom: var(--sp-5); }
.confirm-box .cm-acts { display: flex; gap: 12px; justify-content: center; }
.confirm-box .cm-acts .btn { min-width: 100px; }
@keyframes confirmIn { from { opacity: 0; transform: scale(.92); } to { opacity: 1; transform: scale(1); } }
/* 全局输入框 X 清空按钮 */
.input-x-wrap { position: relative; display: block; width: 100%; flex-basis: 100%; }
.input-x-wrap input { width: 100%; padding-right: 38px; }
.input-x { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; background: var(--line); color: var(--ink-3); border: 0; cursor: pointer; opacity: 0; pointer-events: none; transition: opacity .12s, background .12s; z-index: 2; }
.input-x.is-visible { opacity: 1; pointer-events: auto; }
.input-x:hover { background: var(--line-2); color: var(--ink); }
.input-x svg { width: 12px; height: 12px; }
/* 公开页 */
.mem-hall-hero { display: grid; grid-template-columns: 1fr auto; gap: var(--sp-6); align-items: start; margin-bottom: var(--sp-6); }
.mem-hall-info { display: grid; gap: 14px; }
.mem-hall-info h1 { font-size: var(--fs-h1); font-weight: 800; }
.mem-hall-epitaph { color: var(--ink-2); font-size: 16px; line-height: 1.8; max-width: 600px; }
.mem-hall-meta { display: flex; flex-wrap: wrap; gap: 8px 18px; color: var(--ink-3); font-size: var(--fs-cap); }
.mem-hall-meta span { display: inline-flex; align-items: center; gap: 5px; }
.mem-hall-meta svg { width: 15px; height: 15px; color: var(--jade); }
.mem-hall-acts { display: flex; gap: 12px; flex-wrap: wrap; }
.mem-hall-cover { width: 200px; height: 260px; border-radius: var(--r-lg); overflow: hidden; border: 1px solid var(--line); box-shadow: var(--sh-md); }
.mem-hall-cover img { width: 100%; height: 100%; object-fit: cover; }
.mem-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: var(--sp-4); margin-bottom: var(--sp-6); }
.mem-asset { margin: 0; border-radius: var(--r-md); overflow: hidden; border: 1px solid var(--line); box-shadow: var(--sh-sm); }
.mem-asset img, .mem-asset video { width: 100%; height: 180px; object-fit: cover; display: block; }
.mem-asset figcaption { padding: 10px 12px; font-size: var(--fs-cap); font-weight: 700; color: var(--ink-2); }
.mem-story { padding: var(--sp-5); }
.mem-story h2 { font-size: var(--fs-h3); font-weight: 800; display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.mem-story h2 svg { width: 20px; height: 20px; color: var(--jade); }
.mem-story p { color: var(--ink-2); line-height: 1.85; white-space: pre-line; }

/* ---- C89 GEO 二期：公开纪念堂重构（主题背景 + 背景音乐 pill + 祭品柜 + 匿名献花留言墙）---- */
.mem-hall-page { position: relative; padding: var(--sp-7) 0 var(--sp-9); min-height: 100vh; }
.mem-hall-page.has-theme-bg { padding-top: var(--sp-8); }
.mem-hall-bg { position: absolute; inset: 0; background-size: cover; background-position: center top; background-repeat: no-repeat; z-index: 0; }
.mem-hall-shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20,26,32,.55) 0%, rgba(240,236,228,.90) 40%, var(--paper) 60%); z-index: 1; }
.mem-hall-page:not(.has-theme-bg) .mem-hall-shade { background: linear-gradient(180deg, rgba(20,26,32,.85) 0%, rgba(20,26,32,.60) 30%, var(--paper) 60%); }
.mem-hall-body { position: relative; z-index: 2; display: flex; flex-direction: column; gap: var(--sp-5); }

/* 背景音乐开关 pill（顶部右上角 sticky） */
.mem-music-pill { align-self: flex-end; display: inline-flex; align-items: center; gap: 8px; padding: 10px 18px; border-radius: var(--r-pill); background: rgba(255,255,255,.92); color: var(--ink); font-size: var(--fs-sm); font-weight: 700; border: 1px solid rgba(255,255,255,.6); box-shadow: 0 4px 18px rgba(0,0,0,.25); cursor: pointer; backdrop-filter: blur(8px); transition: all .15s; }
.mem-music-pill:hover { background: #fff; transform: translateY(-1px); }
.mem-music-pill svg { width: 18px; height: 18px; color: var(--jade); }
.mem-music-pill.is-on { background: var(--jade); color: #fff; }
.mem-music-pill.is-on svg { color: #fff; }
.mem-music-pill b { color: var(--jade-ink); font-weight: 800; margin: 0 2px; }
.mem-music-pill.is-on b { color: #fff; }

/* 中央神龛卡 */
.mem-shrine { text-align: center; padding: var(--sp-6) var(--sp-5); background: #fff; border-radius: var(--r-lg); box-shadow: 0 8px 30px rgba(20,26,32,.15); }
.mem-shrine-cover { width: 168px; height: 168px; border-radius: 50%; object-fit: cover; margin: 0 auto 18px; border: 4px solid #fff; box-shadow: 0 4px 14px rgba(0,0,0,.15); display: block; }
.mem-shrine h1 { font-size: var(--fs-h1); font-weight: 900; letter-spacing: .04em; margin: 12px 0 8px; color: var(--ink); }
.mem-shrine-epitaph { color: var(--ink-2); font-size: 17px; line-height: 1.9; max-width: 620px; margin: 0 auto 14px; }
.mem-shrine-meta { display: inline-flex; flex-wrap: wrap; gap: 10px 20px; justify-content: center; align-items: center; color: var(--ink-3); font-size: var(--fs-cap); }
.mem-shrine-meta > span { display: inline-flex; align-items: center; gap: 6px; }
.mem-shrine-meta svg { width: 15px; height: 15px; color: var(--jade); }
.mem-shrine-dates { font-family: 'PingFang SC', serif; font-weight: 600; }

/* 祭品柜 */
.mem-offering-panel { padding: var(--sp-5); }
.mem-offering-hint { color: var(--ink-3); font-size: var(--fs-cap); margin: 0 0 var(--sp-4); line-height: 1.7; }
.mo-tabs { display: flex; gap: 6px; margin-bottom: var(--sp-4); }
.mo-tab { display: inline-flex; align-items: center; gap: 6px; padding: 8px 16px; border-radius: var(--r-pill); background: var(--paper-2); color: var(--ink-2); font-size: var(--fs-sm); font-weight: 700; border: 1px solid var(--line-2); cursor: pointer; }
.mo-tab.is-active { background: var(--jade); color: #fff; border-color: var(--jade); }
.mo-tab span { display: inline-block; padding: 1px 6px; border-radius: 10px; background: rgba(255,255,255,.25); font-size: 11px; font-weight: 800; }
.mo-tab:not(.is-active) span { background: var(--paper); color: var(--ink-3); }
.mo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: var(--sp-3); }
.mo-card { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 14px 10px; border-radius: var(--r-md); background: var(--paper); border: 2px solid transparent; cursor: pointer; transition: all .15s; text-align: center; font-family: inherit; }
.mo-card:hover { border-color: var(--jade); background: var(--paper-2); transform: translateY(-2px); }
.mo-card.is-selected { border-color: var(--jade); background: linear-gradient(180deg, rgba(14,122,87,.08), rgba(14,122,87,.02)); box-shadow: 0 4px 14px rgba(14,122,87,.18); }
.mo-svg { width: 72px; height: 72px; display: grid; place-items: center; }
.mo-svg svg { width: 100%; height: 100%; }
.mo-name { font-size: var(--fs-sm); font-weight: 700; color: var(--ink); }
.mo-tag { font-size: 11px; padding: 1px 6px; border-radius: 6px; background: var(--amber); color: #fff; font-weight: 700; }
.mo-price { font-size: 11px; color: var(--ink-3); font-weight: 600; }
.mo-actions { display: flex; align-items: center; gap: 12px; margin-top: var(--sp-4); flex-wrap: wrap; }
.mo-flash { font-size: var(--fs-sm); color: var(--jade-ink); font-weight: 700; animation: memFadeIn .3s ease; }
.mo-flash.is-err { color: var(--danger); }
@keyframes memFadeIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } }

/* 匿名留言墙 */
.mem-visits-panel { padding: var(--sp-5); }
.mem-visit-form { display: grid; grid-template-columns: 1fr; gap: 10px; margin-bottom: var(--sp-4); }
.mem-visit-form label { display: grid; grid-template-columns: 22px 1fr; gap: 10px; align-items: start; }
.mem-visit-form label svg { width: 18px; height: 18px; color: var(--ink-3); margin-top: 10px; }
.mem-visit-form input, .mem-visit-form textarea { width: 100%; padding: 10px 12px; border-radius: var(--r-md); border: 1px solid var(--line); font-size: var(--fs-sm); font-family: inherit; background: var(--paper); }
.mem-visit-form textarea { resize: vertical; min-height: 76px; }
.mem-visit-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.mem-visit-hint { font-size: var(--fs-cap); color: var(--ink-3); }
.mem-visit-hint b { color: var(--jade-ink); }
.mv-list { display: flex; flex-direction: column; gap: 12px; margin-top: var(--sp-4); }
.mv-row { display: grid; grid-template-columns: 36px 1fr; gap: 12px; align-items: start; padding: 12px 14px; background: var(--paper); border-radius: var(--r-md); border: 1px solid var(--line-2); }
.mv-avatar { width: 36px; height: 36px; border-radius: 50%; background: var(--jade-soft); color: var(--jade-ink); display: grid; place-items: center; }
.mv-avatar svg { width: 20px; height: 20px; }
.mv-line { margin: 0; color: var(--ink-2); font-size: var(--fs-sm); line-height: 1.6; }
.mv-line b { color: var(--ink); font-weight: 700; }
.mv-line time { color: var(--ink-3); margin-left: 6px; font-weight: 500; }
.mv-msg { margin: 4px 0 0; color: var(--ink); font-size: var(--fs-sm); line-height: 1.7; white-space: pre-line; }
@media (max-width: 640px) {
  .mo-grid { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); }
  .mo-svg { width: 60px; height: 60px; }
  .mem-shrine-cover { width: 140px; height: 140px; }
  .mem-visit-form label { grid-template-columns: 1fr; }
  .mem-visit-form label svg { display: none; }
}
@media (max-width: 768px) {
  .mem-manage-grid { grid-template-columns: 1fr; }
  .mem-form { grid-template-columns: 1fr; }
  .mem-hall-hero { grid-template-columns: 1fr; }
  .mem-hall-cover { width: 100%; height: 200px; }
  .mem-gallery { grid-template-columns: repeat(2, 1fr); }
  .mem-theme-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ===== v145 移动端首屏内容密度优化（≤768px）：压头部、收次要按钮，让核心内容进首屏 ===== */
@media (max-width: 768px) {
  /* 全局区块间距减半 */
  .section { padding: 36px 0; }
  .section-tight { padding: 28px 0; }
  .section-head { gap: 8px; margin-bottom: 20px; }
  .section-head h2 { font-size: 22px; }
  .section-head p { font-size: 13px; }
  /* 报告/地图/我的 页头：标题缩、简介限两行、预约按钮收起（悬浮顾问/页内/底部入口已够） */
  .reports-page, .mapx-page { padding-top: 14px; }
  .reports-intro { gap: 6px; margin-bottom: 14px; }
  .reports-intro h1 { font-size: 22px; }
  .reports-intro p { font-size: 13px; line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .reports-intro .reports-actions { display: none; }
  .reports-value-cta, .cd-value-cta { align-items: flex-start; flex-direction: column; gap: 10px; padding: 12px; }
  .reports-value-actions, .cd-value-actions { width: 100%; }
  .reports-value-actions .btn, .cd-value-actions .btn { flex: 1; justify-content: center; }
  /* 报告页搜索+筛选紧凑 */
  .rp-panel { gap: 10px; }
  .rp-searchbar input { min-height: 44px; }
  .rp-filters { gap: 8px 12px; }
  /* 点位地图栏：触屏没滚轮，“滚轮缩放”角标隐藏，标题单行不挤 */
  .rp-sec-h .rep-side-cnt { display: none; }
  /* 墓园选择列表：高度对齐整行（行高56+间距8，4整行），不再切半行 */
  .rp-cem-grid { max-height: 248px; }
  /* 详情页头卡紧凑 */
  .cd-page { padding-top: 10px; }
  .cd-hero { padding: 16px 14px; gap: 8px; }
  .cd-hero h1 { font-size: 24px; }
  .cd-actions { gap: 8px; }
  .cd-actions .btn { padding: 9px 12px; font-size: 13px; }
  /* 纪念堂 hero 压缩 */
  .memx-hero .wrap { padding: 26px 0 22px; gap: 10px; }
  .memx-hero h1 { font-size: 23px; }
  .memx-hero p { font-size: 13px; line-height: 1.7; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
  /* 下载页 hero 压缩 */
  .dl-hero { margin-bottom: 22px; }
  .dl-hero h1 { font-size: 24px; margin: 10px 0 8px; }
  .dl-hero p { font-size: 13px; }
  /* 合作页 hero 压缩 */
  .partner-hero { padding: 32px 0 26px; }
}

